Repository navigation
CI: faster push and PR runs (CI-only draft) - #18
Merged
Merged
Conversation
Add hashed manifest state_epoch, migration 29, per-flow recorded epochs and durable reset history. Clear only kv in the admitting transaction; wait for all older nonterminal runs because execution concurrency alone does not serialize admissions. Expose recorded epochs in list/health, declared and instance epochs in package.get, and consistent boolean reset previews in dry runs. Update the exact package.get reply test to include the required additive state_epoch field while retaining its immutable-byte and hash assertions. Add defaults, preservation, rollback, independent template, worker ordering, transaction rollback and abrupt-exit recovery tests. Prove admission atomicity, token/rate preservation and epoch equality with four Linux mutation rows; retain the existing macOS schedule-drain proof after its anchor changes.
Flow and package ids can have the same name. Compare only the named flow for ordinary/instance previews, and only package membership for template-wide previews. Add direct store and management-operation regressions for a same-named package whose instance records a different epoch.
Keep a per-admission-pass set of StateBusy flow ids. Select and quarantine only fires outside that set, leaving waiting flows untouched while later flows continue. Draining remains global; every new pass rechecks previously waiting flows. Test two waiting fires ahead of another flow's corrupt and healthy fires, then admit the waiting flow after its old run ends. Add and prove a Linux mutation restoring the early return; update and replay the existing FIFO mutation anchor for the exclusion-aware query.
…lues in the run-admitting transaction
Add independent FULL/OFF synchronous durability while keeping production defaults. Route fixtures and crash harnesses through feature-gated throwaway settings; keep production pragma probes and the journal durability benchmark on FULL. Production dry-run scratch also uses the production default as required for non-test paths. Share the serving config and store opener with the binary pragma test. Parse all workspace Rust source to fence throwaway from production, including nested modules, macro tokens and unknown platform cfgs, with planted-use tests and Linux mutation rows. Adapt and re-prove the existing FULL-to-NORMAL control without changing its guarding test's contract. Linux full affected suites passed in both kill-hook modes (1068/1069 tests), with both clippy gates and catalogue checks. Mac privacy/confinement tests passed. One Mac core timing sample before/after passed 279 tests each: libtest 25.33s/29.10s; total 112.25s/39.63s includes cold/incremental compilation, so no test-runtime speedup is claimed. See evidence/throwaway-durability.md.
…ronous=FULL with fullfsync, guarded
Use eight regular Linux mutation shards without changing nightly counts or full-catalogue push replay. Split Windows package groups, keep the workspace host pass, and remove its three duplicate host tests. Move build-free gates to lint and retain hook clippy on every checks platform while skipping arm64 hook tests. Cache builds under a main-only prefix plus immutable run id; mutation jobs use that run id or the newest main prefix, with a Windows baseline fallback. Runner install keys ignore basal's lockfile. Add build-folder measurements and line-tables-only debug for CI evaluation. Rename the regular-shard count test because Linux scheduling deliberately changes from two to eight. Derive Linux coverage from the catalogue rather than pinning the review's stale 608 total (current total is 615), per reviewer's direction.
Temporarily allow ci/faster-ci-bench in the push trigger and full-catalogue push matrix filter. This exercises normal own-target replay rather than workflow_dispatch breadth. All cache-save guards remain push/main only. Revert this harness after measurement; it is not part of the production CI change.
The line-tables-only trial failed stack_limit_holds and stack_exhaustion_retires_the_worker_before_the_next_handout in both Windows images. Worker budgets expected BudgetExhausted(Stack) but got a lockdown-prelude engine error; module pool expected budget_exhausted but got activation. Do not retain an unsafe build-profile optimization or weaken those tests. Revert the profile setting everywhere and return push filters to main only. The prior benchmark continues remotely for timing evidence.
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.
CI-only draft to measure the CI restructuring; it lands on main through the normal gated push.
Summary by cubic
This draft restructures push and PR CI to cut wall-clock time. A temporary push-only branch filter measured the reshuffle and has been reverted; the baseline benchmark continues remotely before the change lands through the normal gated push. It also carries two features the restructured pipeline depends on: stored-value state epochs and throwaway durability for disposable test stores.
CI
lintjob that does not compile.rig-kill-hooktests now run on x86_64 Linux and macOS only; hook-enabled clippy stays on all three platforms.State epochs and durability
state_epoch(default 1); the first admitted run of a version with a different epoch clears that instance'skvin the same admitting transaction.StateBusy) blocks only its flow's oldest fire, so other schedules keep going.state_resetshistory; epochs surface in flow health,package.get(instance_state_epochs), and dry-run replies (state_reset).synchronous=OFFviaDurability::throwaway(); production keepssynchronous=FULLwith fullfsync, guarded by a new Rust-parsing boundary test and mutation rows.Written for commit 8082ddc. Summary will update on new commits.