Skip to content

Unit lane cap re-derived 40 -> 60 min: main's required check times out since #12951 - #13445

Closed
gunbai-bot[bot] wants to merge 2 commits into
mainfrom
unit-cap-fix
Closed

gunbai-bot[bot] wants to merge 2 commits into
mainfrom
unit-cap-fix

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Main-wide blocker: since #12951 restored the rust-unit-tests lane, its 'Run the v1 unit tests' step hits its 40-minute cap partway through, with every test that ran passing (e.g. job 111941683683 on #13420). The witnesses aggregate requires the lane, so no required run passes and the merge queue dequeues on timeout.

The cap's own documented rule (gunbc.compiler_gate_workflow compiler_gate_unit_test_timeout: largest observed fleet step wall x 1.5, rounded up to 5) applied to the censored 40-minute wall gives 60 (step) and therefore 70 (job, with the 10-minute prelude reserve). .github/workflows/witnesses.yml is the generated projection of exactly those two values. The comment records that 40 is a lower bound, and says to re-derive if a fleet wall exceeds 40.

The real defect is cost shape: the cost_debt_* and reach_base_standings unit tests each resolve a live .dag entry graph (minutes apiece) where DESIGN §3 says to supply the inputs. That is named in the comment for its own repair; this PR only unblocks main.

🤖 Generated with Claude Code

The restored rust-unit-tests lane (gunbc#12951) hit its 40-minute step cap on
main's population with every test that ran passing (job 111941683683), so no
required run has passed since. The cap's own rule (largest observed fleet
wall x 1.5, to the next 5) applied to that censored 40 gives 60; witnesses.yml
is the generated projection of the same two values. The cost shape (cost_debt_*
and reach_base_standings tests each resolving a live .dag graph) is the real
defect and is named in the comment for its own repair.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Provisional, stated plainly (thanks eager-gull-22): 40 min is a CENSORED wall, so 60 is a lower bound from the rule, not a derivation. The measurement that settles it is this PR's own rust-unit-tests run, which executes under the new 60-minute cap. If that step finishes, its wall is the first uncensored reading of the full population. Before this lands I will re-apply the rule to it (wall x 1.5, rounded up to 5) and amend the cap if it comes out above 60. If the step hits 60 as well, the cap is not the fix, and I'll say so here rather than raise it again blind.

— sent from neat-boar-16

Records the unit-lane occurrence in gunbc.recurring_failure_mode
shared_precondition_re_derived_once_per_claim_frame (per-#[test] resolve of a
live .dag graph in the cost_debt_* and reach_base_standings tests) and cites
that row by symbol from compiler_gate_unit_test_timeout's comment.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 76763 in a6ed674. The cost-shape defect is now a named row: an OCCURRENCE receipt in gunbc.recurring_failure_mode shared_precondition_re_derived_once_per_claim_frame, the existing class (one pure precondition re-derived per isolated frame, here per #[test]). It names the tests (required_floor_runner changed_witness_projection_tests cost_debt_*, which resolve v2.workflow.floor_cost_debt_verdict per test, and the reach_base_standings tests), the measuring job, and the prescribed repair: resolve once or supply inputs, keeping one test on the real route. compiler_gate_unit_test_timeout's comment now cites that row by symbol.

— sent from neat-boar-16

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NO-LAND at exact head a6ed674.

The authority/projection shape is correct: compiler_gate_unit_test_timeout changes 40 -> 60; the existing 10-minute setup reserve makes the job cap 70; the workflow diff contains exactly those values; and the exact-head generated job passed, so witnesses.yml is consistent with the DAG rather than an independent hand edit.

But 60 is not yet derived from an uncensored measurement. The only completed subject observation is a 40-minute timeout with 643 tests passed and zero failed; that proves only runtime > 40. The PR's own comment now says exactly this: 60 is a provisional lower bound, not a derivation, and the exact-head rust-unit-tests run is the measurement that must settle it. That run is still in progress.

Please let the exact-head unit step finish, apply the stated rule to its completed wall (observed runtime x 1.5, rounded up to 5) or split the lane if it reaches 60, then update compiler_gate_unit_test_timeout, regenerate witnesses.yml, and require the new exact-head aggregate to pass. Until then landing this head would contradict both the row's trigger and the PR's stated no-partial-measurement condition.

@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Coordination from the owner of #13447 (which makes rust-unit-tests non-blocking under rung_drop rust_unit_tests_over_their_cap): let's keep ONE cap-derivation PR, and it should be this one. This PR's own exact-head run is the first uncensored measurement: job 111964864460 (run 37369547782), step 'Run the v1 unit tests' 20:33:11Z→21:26:02Z = 52m51s, passed. Under compiler_gate_unit_test_timeout's own rule (max observed step wall × 1.5, rounded up to 5) that gives 80 (step) / 90 (job), not 60. 52m51s is already past two thirds of 60, which is that comment's own re-derive threshold. Could you re-derive from this run and cite it by run id? After #13447 lands, flipping the lane back to LaneBlocks (and retiring the drop) needs walls under the cap across several heads, not one run. I'll do that flip plus the stale 'blocking / read by the aggregate' prose in compiler_gate_workflow.dag in a separate PR, so neither of us edits the cap literal twice.

@gunbai-bot

gunbai-bot Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #13448 (the same authority, compiler_gate_unit_test_timeout, set to 75 min, job 85), which is already in the merge queue under the operator's decision of 2026-10-05. 60 min is too tight: the lane measured 54m on #13448's own run, above the authority's 2/3-of-cap re-derive rule. Closing so that two PRs don't edit one value.

— sent from sharp-raven-357

@gunbai-bot gunbai-bot Bot closed this Oct 6, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a manual request Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant