Development record
A resolved issue's resolved_by.commit goes stale when the commit it names is rewritten before it reaches the default branch, and nothing follows it. On 2026-10-22/23 lane C re-stamped records by hand three times: twice after rebasing a stacked branch onto a moved parent, and once after re-wording an unpushed commit to drop a scoped prefix. Each time RS003 found the stamp unreachable and the ledger gate failed until the sha was edited by hand. Two designs are open and not chosen here. A lookup by patch-id follows a reworded or rebased unpushed commit to its new sha, but does not survive a squash merge, which already rewrites the cited commit out of existence and which RS003 reports. Stamping at land time instead (resolve names the change, the land step writes the merged sha) survives a squash but needs the land step to own the stamp.
A resolved issue's resolved_by.commit goes stale when the commit it names is rewritten before it reaches the default branch, and nothing follows it. On 2026-10-22/23 lane C re-stamped records by hand three times: twice after rebasing a stacked branch onto a moved parent, and once after re-wording an unpushed commit to drop a scoped prefix. Each time RS003 found the stamp unreachable and the ledger gate failed until the sha was edited by hand. Two designs are open and not chosen here. A lookup by patch-id follows a reworded or rebased unpushed commit to its new sha, but does not survive a squash merge, which already rewrites the cited commit out of existence and which RS003 reports. Stamping at land time instead (resolve names the change, the land step writes the merged sha) survives a squash but needs the land step to own the stamp.
Evidence 2026-10-27 (lane D, crash salvage)
Rebasing four of the crashed machine's unpushed fix branches onto a default branch that had moved four days left every one of their resolved_by stamps unreachable: those for iss-2610230814127624, iss-2610230016561927, iss-2610230016544142 (on its pull request, not yet on the default branch) and iss-2610230016523625. Each was re-stamped by hand to its commit's new sha before the ledger gate passed, through a fixup commit and an autosquash rebase. In every case the rewritten commit was the same patch, so a patch-id lookup would have found each one.
Frontmatter
| id | iss-2610230826159867 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2610230826159867-a-resolved-by-stamp-goes-stale-when-its.md
open on GitHub ↗ · commit history ↗
mentions4
- iss-2610230016523625Lanes lose whole preflight slots to repo-wide audit tests that fail late. A preflight queues behind every other preflight on the machine (an hour or more on 2026-10-22), then spends its first long stretch on the unit stage before a test that reads the whole tree fails on a sentence: TestSurfaceChapterProseStatesNoShape failed two lanes' preflights on 2026-10-22, each for a command name in the build brief's prose, and the lane then had to queue again from the back. The same lesson came up on 2026-10-18, when lanes were tested package by package and missed the repository-wide audit tests until preflight. Nothing lets a lane run the fast, repository-wide gates and audit tests on their own, in seconds or a few minutes, before it takes a preflight slot.
- iss-2610230016544142Directory-level reservation footprints over-reserve and serialise unrelated lanes. On 2026-10-22 four lanes were held up by footprints naming whole directories or packages when their work changed a few files: the worktree store against the merge gate, the sweep-reservations branch holding all of internal/surface/cli against a store build adding two new files there, a release hold against internal/core/landing, and a planning branch holding whole record directories. Each was cleared only by hand-narrowing the footprint to the files the branch changed. Specs' footprint lines and abcd reserve both take a directory as readily as a file, and nothing warns when a directory is named.
- iss-2610230016561927A build run serialises every lane on the previous lane merging into main. The ready rule for a lane's predecessors (the DR6b default needs, read with landedInRun as being an ancestor of the default branch) holds each step until the step before it has passed the merge queue, so a six-step spec spends roughly 20 to 25 hours in serial queue time at the preflight and merge-queue times seen on 2026-10-22, most of it waiting rather than building; the merge-gate build was the case that night.
- iss-2610230814127624Two status-line deadline tests fail under machine load and pass in isolation: TestStatuslineSlowBranchStillRendersThePartialRow (stdout empty, the call returned in 2.003s against a 2s git budget) and TestStatuslineKillsTheRootCommitGit (the root-commit git timed out at 2s, so the 'git did not say whether abcd manages the checkout' note was replaced by 'git did not name the checkout within 2s'). Both failed in a make preflight of feat/local-model-pin-r2 on 2026-10-23 at a load of roughly 27 to 40 on 16 cores, and both pass on origin/main and on that branch when run alone. The first is the test iss-2610090642407850 resolved on 2026-10-09; its timing margin is gone again under load, and the second shows the same root cause: a real 2-second budget raced against git on a loaded machine.