Repository navigation
Split native CI profiles and make cold verification reproducible - #354
Merged
Merged
Conversation
docs/ci.md replaces two superseded descriptions of the old shared native-live job: - dbd17b3 (#320): the sentence "native-live.yml runs both profiles alongside native, reusing the same checksum-pinned WebSocket-enabled curl" is replaced by the three independent matrix cells description. - INT26 (d093560): the old `native-live` timeout-table row (the larger runner's full set "about 25 min", "The verification hosts' release profile, the nearest they run, took 11.2-18.4 min" and "A fork's pull request runs the set without that row: 3.4 min on the standard runner") is replaced by the per-cell native, live-sanitizers and live-tsan rows measured on main runs 37398893123, 37461653250 and 37478400505. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…unts A cold full-row native profile of d5ffd30 on a c5.4xlarge Spot host ran 941/941 rows: 940 passed and test_ci_verify was cut off by the 2100 s default deadline (Timeout 2100.07 s). The same script then completed in 2177.7 s (162 tests OK) in that host's preflight. GitHub measured 984-1695 s. Raise the native default per-test deadline to 2700 s (24% over the slowest measured host) inside a 2820 s CTest stage. The measured cold pre-CTest time was 12.3 min, so a worst-case stage still fits the unchanged 65-min verification step and 75-min job. Live profiles keep 900/1200 s. That failed run's ci-summary recorded no executed/skipped counts. CTest prints a listed row's labels after its status ("2 - test_ci_verify (Timeout) slow"), and CTEST_LISTED_ROW required the line to end at the status, so the row list was unreadable. Accept trailing labels. A new real-CTest test pins labelled failed, skipped and not-run rows. docs/ci.md rewords the `native-live (native)` timeout-table row written by the docs commit "Document independent native proofs and preserve source anchors". Its sentence "The longest measured test_ci_verify row was 1695 s; its new 2100-s default deadline gives 24% margin within a 2400-s CTest stage" now carries the Spot measurement and the new bounds. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Use the existing CTest capability detector and condition only XML presence; retain the real timeout, witness, row-count, elapsed and log checks. Rewrite the driver-default and blanket two-times timeout sentences introduced by d093560 (INT26, #290). Document the workflow's 47-minute native and 20-minute live overrides and the table's measured-margin policy without changing historical timings.
Allow the real labelled fixture to render an undecorated failed-list row. Verify slow/live labels for every fixture row through genuine CTest JSON inventory, retain the synthetic label-suffixed parser witness and all row accounting, and require the real failure exit code. Leave JUnit capability handling and production code unchanged.
luisleo526
marked this pull request as ready for review
October 7, 2026 17:01
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Main pushes can exhaust the shared 60-minute native-live job before ThreadSanitizer finishes. Run native, ASan/UBSan and TSan in independent matrix cells, with failures propagated through the native gate and aggregate build.
The profiles use separate compiler caches, save curl after successful setup, and retain compiler-cache and diagnostic evidence after ordinary test failures. The cold-cache input bypasses restoration and saving for both caches. Optional CTest deadlines preserve explicit per-test TIMEOUT properties and default CLI behavior. Failed-row accounting handles labelled output, with real CTest coverage for optional JUnit and older undecorated failure listings.
Validation on
0ac5401444c18aa93ee603e0431f268cf332c2c0:pineforge/verifyandpineforge/parityare successful, recorded from exact-tree evidence. The no-behaviour diff rule accepts the eight CI/tooling/documentation files.Earlier-host preflight and ASan timeout receipts remain retained at their original heads. The existing 2,400-second preflight verifier limit and explicit 300-second native_live_e2e limit are unchanged; both stages passed in current-head GitHub verification. This draft awaits the scheduled integration window.