Nothing holds main to the gates a branch must pass, and the red lands on the next unrelated branch
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 423
- Forks
- 53
- Avg merge
- 20h 26m
- Merged PRs (30d)
- 310
Description
Row: GATE-CI-CONCURRENCY
What
scripts/agent-preflight.sh runs a set of cheap record gates BEFORE a push, from
a branch. Nothing holds main to those same gates. So a change that breaks one
lands green, and the red is then charged to whichever unrelated branch runs
preflight next.
ci.yml's own header already states the structural half (lines 17-33): every
expensive job carries a job-level group keyed on github.ref, which is the
constant refs/heads/main for every push, so consecutive pushes cancel each
other. Measured there over 40 consecutive main runs at 0eb049f7: 26 cancelled,
12 failure, 1 success.
The instances
- #2312 —
VT_DFLASH_BOUNDS_DEVICElanded undocumented;check-env-docred on
an unrelated branch. - #2356 —
VT_QWEN35_STAGE_RESERVE_BYTES, same gate, same shape, one commit
later. This one landed with no pull request at all. - #2404 —
glm5_next_weights.cppshadowedv;windows-msvcis PR-only with
no main baseline, so it landed green and reddened every subsequent PR. - #2429 —
ENG-PREFLIGHT-COMPILESbecame runnable without re-pinning
RUNNABLE_BASELINE;test_check_gate_commandsred on an unrelated branch. - The
api_serverSTATUS_STACK_BUFFER_OVERRUNcrash, hidden behind #2404's
compile break until it was fixed. - Live, 2026-09-05:
tests/tools/test_oracle_pin.py's
test_metadata_and_runtime_strings_differ_on_the_pinis red onmainat
471dbeefd, proven by running it on an unmodified base. Tracked separately as
#2931. It was charged first to an unrelated placement-gate branch.
What is written down
.agents/specs/gate-on-main.md — an analysis, not a row. It answers what gates
main today job by job, what the baseline lane's three mechanisms actually
protect, which preflight gates are cheap and deterministic enough to qualify, what
a per-push record job would cost (≈ 4 min/run, ≈ 3.1 job-hours/day), and the case
AGAINST the change.
It deliberately opens no new row. The diagnosis is already carried by
main-verifiability.md and ci.yml's header; what is new is one design option.
The recommendation, staged cheapest first
- Use
workflow_dispatchfor two weeks. It costs nothing and has been used once
ever. - If that does not close the gap, add
record-gates-main:if: push, group
keyed ongithub.sha,cancel-in-progress: false, sharing one script with
agent-record. - Revisit required status checks once there is completion data.
Measured to catch 3 of the 5 historical instances at 1.6% of the cost #274
rejected. The other two are the Windows lane and need a different answer.
Caveat carried from the verification pass
Four numbers are marked unverified in the document (a suite total and three local
checker timings) because the box was at load ~120 and a re-timing would not have
been comparable. 26 of the 31 issue numbers the analysis cites, including #274
and #584, return 404 to an unauthenticated reader, so several of its citations
cannot be followed by anyone outside the repo.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with .agents/specs/gate-on-main.md and the ci.yml header at lines 17-33, then compare its proposed options with scripts/agent-preflight.sh and the existing agent-record flow. Determine which staged approach is selected and verify it against the documented cost, cancellation behavior, and historical failure cases; done means the chosen main-gate strategy is implemented and its results can be evaluated without blaming unrelated branches.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, github-actions, shell
- Domain
- ci-cd, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100