Repository navigation
Description
Part of #2934 (Phase A, task 3). All questions were ruled on 2026-10-25 (see the decision comment); what remains is recording the ruling and filing its implementation tasks. It amends the 2026-10-14 ruling in #1849/#1854.
Context
Changes in the current release are mostly low-level: of 177 squashes since 2026-10-18, 88 touched packages/ui-server and 57 packages/ui-sdk, and changes there need system-wide runtime, native and browser proof. Today an agent has two ways to run that proof:
- Locally. Several agents on one host run long suites concurrently. The host chokes, suites hit their timeouts, and agents skip the checks to proceed. Individual native fixtures take 130–150 s per file on hosted runners (for example
scripts/native-proof/hosted-app.test.ts). Overlapping runs in one workspace also serialize on exclusive workspace output access. - Hosted, through ready-candidate confirmation. Drafts run cheap gates only, and complete affected proof runs only when a PR is marked ready (
docs/decisions/ci-utility.md:472-479). Under policy, that requires holding the repository-wide reservation (docs/decisions/ci-utility.md:1237-1246), so it is a final confirmation, not an iteration tool.
Neither scales with agent count. Standard runner minutes are free (docs/decisions/ci-utility.md:3-10), but account runner concurrency is not unlimited (docs/decisions/ci-utility.md:1192).
Questions for the ruling
- May an agent request the PR's affected heavy categories on a draft head, without the reservation, as feedback that never counts as
proof? - How is it requested: a
workflow_dispatchwith the PR number and head SHA, a label event, or a comment? It must bind to one exact head, like the existing request (docs/decisions/ci-utility.md:480). - Does local preflight then formally stop running long suites, keeping only
check:prand focused failing-first or mutation receipts? - What protects account runner concurrency: a per-PR cap on draft heavy runs, cancellation of a PR's earlier draft heavy run on a new push, or both?
- Is runner-slot wait recorded as a first-class metric in
scripts/ci-timings.ts, so the next ceiling is visible?
A documented "no" closes this issue, with the reason recorded and an alternative for local contention (Phase A task 5) chosen instead.
Out of scope
- Changing what counts as merge evidence: exact-head ready confirmation remains the only
proof. - Implementing the request path; it becomes its own task once ruled.
Acceptance criteria
docs/decisions/ci-utility.mdis amended with the 2026-10-25 decision, naming the Epic: tests give faster feedback with less redundant work #1849/ci: separate fast feedback, final confirmation and parallel endurance suites #1854 text it changes and keeping exact-head ready confirmation as the onlyproof.- Implementation tasks are filed and attached to Epic: independent changes land on main concurrently, with only overlapping work serialized #2934 for: the dispatch workflow and request script with the live-head check and the one-per-PR cap, cancellation and red-main refusal; the
check:pr,work-issueand testing-guidance changes that limit local long suites to debugging; and runner-slot wait, which is already filed as ci: keep job creation time and report runner-slot wait #2952 under Epic: CI and integration evidence is collected, archived beyond GitHub retention and reported automatically #2948. Each carries complete acceptance criteria.
Verification
The amendment states the runner-concurrency protection and how it is measured.
Contract impact
None.
2026-10-25: all questions ruled by the maintainer; acceptance criteria now cover recording the ruling and filing its implementation tasks.
Activity
schlessera commentedon Oct 25, 2026
Decision (maintainer, 2026-10-25): hosted heavy proof on draft heads.
proof; exact-head ready confirmation remains the only merge evidence. This amends the Epic: tests give faster feedback with less redundant work #1849/ci: separate fast feedback, final confirmation and parallel endurance suites #1854 rule that drafts run cheap gates only (docs/decisions/ci-utility.md:472-479).workflow_dispatchwith the PR number and head SHA, through a repository script. The workflow refuses when the live PR head differs from the requested SHA.check:prplus focused failing-first and mutation receipts. Long suites run locally only to debug a specific failure, through host admission (ci: admit heavy local test commands through a host-wide ledger with priority and preemption #2943).scripts/ci-timings.tsand the Epic: CI and integration evidence is collected, archived beyond GitHub retention and reported automatically #2948 reports.schlessera commentedon Nov 2, 2026
Claimed as part of working epic #2934 end to end (claim token
wi-20261102-fd2d2f21). Order chosen for earliest queue-velocity benefit: #2938+#2939 rulings first (they unlock hosted draft feedback), then the red-main/merge-path chain (#2942, #2940, #2944); #2943, #2941 and #2937 run in parallel since they touch disjoint code. Intended branch:docs/2938-2939-record-integration-rulings(shared with #2938).schlessera commentedon Nov 2, 2026
Delivered by #3274, squash
6dfdafe9ecdc3cd36388a0c445d928c3fdb4339f. Its parent is the tested based6426a76and its tree is99a6248e, the same tree as candidate run 41420146145. The ruling is recorded indocs/decisions/ci-utility.mdunder "Integration lanes, red-main fixes and hosted draft feedback". Implementation tasks are filed and attached to #2934: #3268, #3269, #3270, #3271 (lane, from #2938) and #3272, #3273 (draft feedback, from #2939; runner-slot wait remains #2952). The main-push run 41420740208 was still running when this was posted.