Repository navigation
Conversation
GATE-DIFF-01 asked for a closeout gate that inherits the verdicts of unchanged steps from a passing parent tree. Measured on this repository's recent commits and gates, its rules save a mean of at most 0.2 % of a hosted gate, and the trace check they need on every gate would cost more than that: any overhead above 0.2 % does, and Linux micro-benchmarks of its cheapest suitable mode showed factors of 1.5 and 11. The row is deferred with its measurement, the premises found false and a reopen condition. - GATE-DIFF-01 moves from NEXT to DEFERRED. Its scope keeps the unsoundness statement and adds the measurement: over the 40 first-parent commits from 6d19004 to 834f6ae, the last seven of them not yet on main when measured, the rules would have saved a mean of at most 2.1 s per commit, 0.2 % of a 22.7-minute hosted gate, because 34 of the 40 commits hit a full-gate trigger and the costliest steps cannot be inherited. It lists the premises found false: whole-worktree reads by browser:check, by the ./... steps and by the CLI builds of three node contract steps; same-tree verdict flips of browser:check and boundary-contract:check; Firefox under sandbox-exec on macOS; release:closeout without selectors; an incomplete toolchain list; and go:test verdicts replayed from Go's test cache, which the parent commit fixes. - The scope records that the known causes of the boundary-contract:check flips are fixed: the early-refusal EPIPE race by the shared CLI transport assertion, and the lost macOS Unix-socket wake-up by giving spawned CLI children their input as a file. It also records the browser:check flips: two WebKit navigations that did not reach their target document and six Firefox and Chromium page operations that did not complete, all at the 30-second test timeout, in local full gates whose browser tests took 2.6 to 4.6 times as long as on the passing reruns, with no load sampled during them. - The completion condition starts with the reopen condition. Its first clause asks for 20 consecutive full gates of one unchanged tree that pass browser:check and boundary-contract:check with zero retries inside a load envelope: the 1-minute load average per CPU, sampled at least once a minute during those steps, has a median of at most 6 and a maximum of at most 12, and at least five of the gates have a median of at least 3. A gate outside the envelope is recorded but neither counts nor restarts the count, and no timeout is raised, no retry added and no CSP, console or security-policy check weakened. The other clauses stay: fewer than half of the last 40 first-parent commits on a full-gate trigger, and a trace overhead measured on the real hosted gate below the mean saving then measured. A reopened row first traces every step's reads on its own tree, recomputes the saving and resolves each false premise. - The requirement text stays, except that its toolchain list also names Python, git, shellcheck and pyflakes, and its release:closeout trigger names the witness command that release:closeout must first get. No row is added for browser:check. With fixed 30-second timeouts any test fails under enough contention, so its verdict can be a function of the tree only inside a stated load envelope. None of the recorded failures is known to lie inside one, and the reopen condition above is the only consumer of that claim. AGENTS.md and every product surface are unchanged. Proof on this tree: A local npm run check sequence on darwin/arm64 passed (exit 0) on tree 99c57d7 with Node 26.11.1, npm 12.2.0, CPython 3.15.0 and Go 1.27.3, with no Go test verdict replayed from the test cache: 561/561 runtime browser cases in Chromium, Firefox and WebKit with zero retries. One recorded deviation: the host firewall blocks Go-built binaries from the network, so go:vulncheck ran against a vulnerability-database snapshot fetched with curl (modified 2026-10-21T00:27:29Z): no vulnerabilities.
This branch has not been deployed
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.
docs(backlog): park differential closeout on its measured cost
Part of the UI-DESIGN-01 chain, stacked on it; the change itself is a backlog decision, not UI work. Base branch:
chain/r1-go-test-count(#234, "fix(gate): run Go tests without replaying cached verdicts"). This PR is one commit on that branch's head; merge it after #234. OnlyBACKLOG.mdchanges.Why
GATE-DIFF-01 asked for a closeout gate that inherits the verdicts of unchanged steps from a passing parent tree. Its premises were measured against this repository's recent commits and local full gates, and its rules save almost nothing:
6d19004to834f6ae, inclusive. The last seven, fromae283b5on, were chain commits not yet onmainwhen measured.self:receiptorrelease:closeout, so they run the full gate. Without therelease:closeoutinputs, which no selector declares yet, the count is 32 and the mean saving 2.2 s.strace --seccomp-bpf -f. In micro-benchmarks it multiplied median wall time by 1.5 for file reads and by 11 for process spawns. Any overhead above 0.2 % exceeds the saving. The overhead on a real gate was not measured.browser:check, the./...steps and the CLI builds of three node contract steps read the whole worktree.browser:checkandboundary-contract:checkgave both verdicts on one unchanged tree.sandbox-exechangs Firefox unless Firefox's own sandboxes are disabled.release:closeouthas no selectors for the full-gate trigger to match.go:testverdicts, which the base PR stops.The cost that did show was same-tree verdict flips: full gates that failed on trees that later passed unchanged. Inheritance cannot recover that cost, because a step that flips is never inherited.
What changes
GATE-DIFF-01, NEXT to DEFERRED.
Scope: the unsoundness statement stays. Added: the measurement, the premises found false, the fixed causes of the
boundary-contract:checkflips, and what thebrowser:checkflips were.Completion condition: it starts with the reopen condition. All of these must hold:
browser:checkandboundary-contract:checkwith zero retries.A reopened row first traces every step's file reads, directory enumerations and failed lookups on its own tree. It then recomputes the saving over its own recent first-parent commits and resolves each false premise in its scope.
Requirement text: kept, with two corrections:
release:closeouttrigger names the witness command, with selectors, thatrelease:closeoutmust first get.No new row for
browser:check.Premises re-checked against the gate receipts
As of 2026-10-24 04:25Z, all 54 receipts of the local full gates were read again and every failing log was classified. The gates ran on macOS arm64 with 8 CPUs and zero retries.
browser:checkgave both verdicts on three trees. Every failure ended at the 30-second test timeout.3f0f398fworkspace.spec.mjs:524(download response cannot certify a later failed document):navigateWorkspacenever saw its target document0c8d17ebworkspace-evidence-layout.spec.mjs:73), a page evaluation and two clicks (workspace-evidence.spec.mjs:141,:179,:206). Chromium: one click (lookup.spec.mjs:111), its page closed by the timeoutac69eea2workspace-graph.spec.mjs:88). WebKit: the sameworkspace.spec.mjs:524navigationbrowser:checkpassed it (561/561), at recorded start loads up to 27.3;boundary-contract:checkgave both verdicts on five trees. All have known causes, and both causes are fixed:3f0f398fand0c8d17eb(2026-10-14 09:17Z; the two gates ran concurrently):spawnSync … EPIPEin an early-refusal oracle. Fixed by the shared CLI transport assertion, which accepts EPIPE only from a child that exited non-zero.48e3c2f1,ac69eea2andbe64b1ef:spawnSync … ETIMEDOUTof one CLI call. That is the lost wake-up of a reader on the macOS Unix socket thatspawnSync'sinputoption creates. Fixed by the test-transport change, which gives spawned CLI children their input as a file.On trees with the test-transport change, five gates have passed
boundary-contract:checkso far. Three of them finished with passing receipts; the other two logs reached later steps.Compatibility
Documentation only.
BACKLOG.mdis not in the npm package. No rule inAGENTS.mdand no product surface changes.Proof
Proof: A local
npm run checksequence on darwin/arm64 passed (exit 0) on tree99c57d7635e5with Node 26.11.1, npm 12.2.0, CPython 3.15.0 and Go 1.27.3, with no Go test verdict replayed from the test cache: 561/561 runtime browser cases in Chromium, Firefox and WebKit with zero retries. One recorded deviation: the host firewall blocks Go-built binaries from the network, sogo:vulncheckran against a vulnerability-database snapshot fetched with curl (modified 2026-10-21T00:27:29Z): no vulnerabilities.Narrow evidence:
git diff --check,npm run text-policy(passed, 1421 text files) andnpm run source-hygienepass.BACKLOG.mdis not shipped, but the added lines still match none of the shipped-markdown rules ofpackageverify(version tokens, package coordinates, run and tarball URLs, raw hashes, source refs).Non-claims
browser:checkflips are not identified beyond host contention. Whether any browser test also has a logic race is not shown.boundary-contract:checkflips stop is shown only by the test-transport change's own falsifiers and by the gates above, not by 20 gates in the envelope.go testpackage timeouts after 600 s at start load 69, and one timing test ofreleasepreflightat start load 9.