Repository navigation
CI: restore rust-gate step timeout to documented 45m (fix #6246 drift, fleet-wide rust_tests unblock) - #6339
Merged
Conversation
…, fleet-wide rust_tests unblock) rust_tests times out at exactly 10m on every PR and on main — the 'v1 rust gate (fmt + clippy + nextest)' step is killed mid-run. Not a real test failure: a step-timeout regression. Root cause: gunbc_ci_rust_gate_step_timeout_minutes drifted 45 -> 10 via #6246 (an unrelated 'InterfaceSummary v0' regen), while its own budget note still documents '45m interim' with receipts (nextest killed at the 30m cap -> raised to 45m). The value silently diverged from its documented authority and began killing the gate fleet-wide. Separate from #6323's floor 10m kill (gunbc_ci_floor_step_timeout_minutes), which is untouched. Fix: restore the constant to 45. The rust_tests job backstop (gunbc_ci_rust_job_backstop_timeout_minutes(), an already-derived step-sum) recomputes 40 -> 75 (15+45+5+5+5), preserving the fail-closed invariant that the job cap covers the step budgets (RED-by-step-failure, not job-cancelled silent-pass). Value (operator 2026-07-06): 45 = ~1.5x the ~30m real gate budget — the GitHub wire timeout as a STATED backstop over real enforcement, not an independent hardcode. ci.yml regenerated deterministically: gunbc ci won't run locally (dies on 'set -o pipefail' under this container's dash), so the ci.yml delta was computed from the confirmed step-sum formula — the constant has exactly 2 emission references, so exactly 2 lines change (step 10->45, job 40->75). The drift gate verifies on CI. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
Author
|
cursor's REQUEST_CHANGES was valid — restoring the gate budget to 45 inverted |
briansrls
added a commit
that referenced
this pull request
Jul 6, 2026
…ved, keep 6339 gate-note drift history Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
Jul 6, 2026
…or RC) (#6342) #6339 merged the gate-timeout restore (10->45) before cursor's REQUEST_CHANGES was addressed, leaving main with a red witness: witness_warm_step_budgeted_separately_from_gate asserted gunbc_ci_rust_sccache_warm_step_timeout_minutes > gunbc_ci_rust_gate_step_timeout_minutes (15 > 45 = false after the restore). 'Budgeted separately' means distinct authorities, not magnitude ordering: lines 210-213 already assert each step uses its own script and each timeout projects from its OWN authority constant (212-213 are tautological projections, invariant to the values). The > check was incidental to #6296's warm=45/gate=15 carriers. Dropped; separateness stands on 210-213. Swept the corpus: no other magnitude assertion on these constants. Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jul 6, 2026
briansrls
added a commit
that referenced
this pull request
Jul 6, 2026
…rator, 2026-07-06) (#6343) Adds section_0 to roadmap_authority.dag (regenerated ROADMAP.md) capturing the operator's current execution ordering, rearranged 2026-07-06 to frontload the compile wall and complexity enforcement: ① compile wall (refreshed to #6239's 100+min; the rust-gate timeout thrash #6339/#6342 recorded as a downstream symptom) ② complexity enforcement whole-codebase — un-shelved from §4 (complexity budget + enforcement-intent gate + intent-linearity + expressibility-frontier gap analysis) ③ affected set live in CI ④ Realization (carrier inhabited; dag↔v2 de-fork) ⑤ dev-UX minimality — un-shelved from §4 (fold-ergonomics + namespace-only resolution) Overlay approach (operator-approved): the two pillars (§1 get-off-v1, §2 compute-fabric) stand as the strategic frame; §0 is the priority ordering over them, each item pointing into the detailed lane (no dual dispatch). §4 preamble notes the un-shelve. Surfaces the two post-reset directions absent from the roadmap: namespace-only resolution and intent-linearity. ROADMAP.md regenerated byte-exact from the edited authority. Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
Jul 7, 2026
…15m->45m, derived backstops) (#6338) * CI budgets: repair #6246 rebase regression - restore receipt-backed rust gate/warm values, re-derive backstops The #6246 rebase restored OLD budget values while keeping the NEW notes that document larger receipt-backed values: - gunbc_ci_rust_gate_step_timeout_minutes: 10 -> 45. Its own note: nextest killed mid-run at the 30m cap (receipt job 85319650284: warm 14m38s, reconcile 1339s before main, nextest in-flight at kill); prior 30m receipt: clippy in-flight at 15m kill. - gunbc_ci_rust_sccache_warm_step_timeout_minutes: 15 -> 45. Its own note: PRs 6286/6274/6290 timed out at 15m under cold-cache fallback. Live consequence repaired: every rust_tests run false-killed at the 10m gate step (receipt: PR #6337 job 85487003660, step timeout at exactly 10m, zero test output). Values were one config edit below their own receipts. ci.yml + falsifier.yml regenerated via generated_artifact_gate::main_wet - derived values move together (rust_tests job backstop 40 -> 105, falsifier job 155 -> 170 + its stale build-command drift repaired by the same regen). Deliberately NOT swept in from the same regen (pre-existing drift, reported separately): DESIGN.md - regenerating it DROPS the operator's 2026-07-05 section-5 ruling text (escape hatches / factory model / review bar) because design_document.dag is stale behind the hand-authored authority doc; and a .gitignore exception line. Both left at their committed state. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * review: warm=46 (serializer witness pins warm>gate + emitted 46), re-derive disposition prose to 106m sum Both cursor findings verified real and fixed: - warm 45->46: witness_warm_step_budgeted_separately_from_gate asserts warm strictly > gate; witness_rust_tests_yaml_has_observable_warm_step_before_gate pins the emitted 'timeout-minutes: 46' before the gate step. Both now green by execution. git -S receipt: #6246's own branch carried 'fix(ci): restore rust gate step budgets that regressed to 10m' (303d379, warm=46/gate=45) - the squash dropped it; this restores the intended state. - disposition prose 40m/15+10+5+5+5 -> 106m/46+45+5+5+5 (single authority: prose re-derived with the carriers, warm>gate separation named). ci.yml regenerated via main_wet (warm 46, derived rust_tests backstop 106). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * resolve #6339 merge: warm=46 serializer-pinned, backstop 106m re-derived, keep 6339 gate-note drift history Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.
Problem
rust_teststimes out at exactly 10 min on every PR and onmain— the "v1 rust gate (fmt + clippy + nextest)" step is killed mid-run. This is not a real test failure; it's a step-timeout regression, and it means no PR can currently be CI-green onrust_tests.Root cause
gunbc_ci_rust_gate_step_timeout_minutes(dag/gunbc/ci_workflow.dag:318) drifted 45 → 10 via #6246 (an unrelated "InterfaceSummary v0" regen), while its own budget note still documents "45m interim" with receipts (nextest was killed at the 30m cap → they'd raised it to 45m). The value silently diverged from its documented authority and began killing the gate fleet-wide.Cleanly separate from #6323's floor 10-min kill (
gunbc_ci_floor_step_timeout_minutes, line 314) — that operator-ruled floor cap is untouched.Fix
Restore the constant to 45, reconciling it to its own note. The rust_tests job backstop (
gunbc_ci_rust_job_backstop_timeout_minutes(), an already-derived step-sum) recomputes 40 → 75 (15+45+5+5+5), preserving the fail-closed invariant that the job cap covers the step budgets — RED-by-step-failure, not job-cancelled silent-pass (line 351).Value rationale (operator, 2026-07-06)
45 = ~1.5× the ~30m real gate budget — the GitHub wire timeout as a stated backstop over real enforcement, not an independent magic number. Corroborated by the note's receipts (30m killed nextest mid-run).
On regenerating ci.yml
gunbc ciwon't run in this container (dies onset -o pipefailunder dash), so I computed theci.ymldelta from the confirmed step-sum formula rather than a local regen. The constant has exactly 2 emission references (step timeout:274, job-sum:347) → exactly 2ci.ymllines change (rust gate step 10→45, rust_tests job 40→75). The notes edited are inert (not emitted). The ci.yml drift gate verifies this on CI.Scope / follow-ups (not folded in)
warm(line 324) shows the same note-vs-value drift (note references 45m, value is 15) — left for the CI-budget lane (cool-hawk-899 / valiant-bee-192) to confirm with its receipts.🤖 Generated with Claude Code