From 87604e61ffffb1964312f45a0aa8626d509ae73f Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 17:17:08 +0100 Subject: [PATCH 01/21] chore: capture the ownerless drain and chat-only peer holds met by the 2026-10-10 drain Assisted-by: Claude:claude-opus-5-5 --- ...olds-on-open-issues-reached-this-drain-only.md | 15 +++++++++++++++ ...-progress-by-a-session-that-has-ended-stays.md | 15 +++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md create mode 100644 .abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md diff --git a/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md b/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md new file mode 100644 index 000000000..e7c075f89 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610101617040184" +slug: "peer-sessions-holds-on-open-issues-reached-this-drain-only" +severity: "minor" +category: "process" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/drain.md" +remedy: "When the drain's skip-for-now (iss-2610090642385898) lands, let a session add a hold from outside the drain (a held_by entry naming the session, the reason and an expiry) that every drain and build reads, and make build --session take a claim from its start, as build --session already does." +--- + +Peer sessions' holds on open issues reached this drain only as chat: on 2026-10-10 three sessions (abcd-0b, abcd-a5, abcd-49) named eleven issues to keep out of an abcd drain, none of them through implement claim, because their lanes were build runs or plans that take no claim until a lane opens. The drain cannot see any of them, so the only guard was the driving session hand-skipping each one when a lane opened on it. Evidence for iss-2610090642385898, which a peer is building as the drain's skip-for-now; filed apart because that record is being edited on the peer's lane. diff --git a/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md b/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md new file mode 100644 index 000000000..8a4536de9 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610101617043118" +slug: "a-drain-left-in-progress-by-a-session-that-has-ended-stays" +severity: "minor" +category: "ux" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/drain.md" +remedy: "Record the starting session and the time of each move in drain.json; when a drain move comes from another session or after the working window has lapsed, say so in the payload (owner, last move, pace, ceiling) and refuse until --resume adopts it or --restart archives it and begins a new drain with the flags given." +--- + +A drain left in progress by a session that has ended stays in force with no owner. On 2026-10-10 a new session's bare abcd drain silently resumed a drain begun on 2026-10-07 (last move 2026-10-08 05:20, since when no session drove it), inheriting its --pace 10080/0 and --sub-agents 6. Nothing in the payload named who began it, when it last moved, or that its ceiling was set for another session's share of the machine's agents. Three live peer sessions were asked and none owned it. A second drain cannot start while it stands, and --pace or --sub-agents naming anything else is refused, so the only ways forward were to inherit it or move drain.json aside by hand, as an earlier session already had (drain-2026-10-07-paced.json). From fa09eae9d77f08e030d45e74a07960a14639c90c Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 17:59:34 +0100 Subject: [PATCH 02/21] chore: capture implement receipt refusing a path that already names its run Assisted-by: Claude:claude-opus-5-5 --- ...-receipt-path-is-refused-at-the-state-stage.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md diff --git a/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md b/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md new file mode 100644 index 000000000..8e04ec6ba --- /dev/null +++ b/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610101659347329" +slug: "abcd-implement-receipt-path-is-refused-at-the-state-stage" +severity: "minor" +category: "ux" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/implement.md" +remedy: "Derive the run from the receipt path when it lies under .abcd/.work.local/run//, refusing only a path outside any run or a --run that disagrees with it; and have every next line the drain and implement step print name --run whenever more than one run is in progress." +--- + +abcd implement receipt is refused at the state stage when more than one run is in progress, asking for --run, although the receipt path it was given (.abcd/.work.local/run//lane-N/...) already names the run. On 2026-10-10 a drain lane's receipt was refused this way because 24 stale runs from an earlier drain were still in progress; the next the drain itself printed (run `abcd implement receipt `) omitted --run too, so following it verbatim fails. From bf39e71c2d5ba45d2d4b34227b36043e91a975f2 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 19:03:32 +0100 Subject: [PATCH 03/21] chore: capture the launch chapter's stale unfixed-finding table row Assisted-by: Claude:claude-opus-5-5 --- ...nch-chapter-s-refusal-kinds-table-describes.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md diff --git a/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md b/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md new file mode 100644 index 000000000..1469340ec --- /dev/null +++ b/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610101803326081" +slug: "the-brief-s-launch-chapter-s-refusal-kinds-table-describes" +severity: "nitpick" +category: "drift" +source: "review-followup" +found_during: "abcd-60 drain run 2026-10-10, lane for iss-2610072347238476" +origin: researcher-authored +production_mode: hand-written +found_at: ".abcd/development/brief/04-surfaces/04-launch.md" +remedy: "Reword the unfixed-finding row of the refusal-kinds table in .abcd/development/brief/04-surfaces/04-launch.md to name both cases (a consequential finding open since the anchor, and an open issue record that differs from HEAD), once the verb split's launch step has landed or with its owner's word." +--- + +The brief's launch chapter's refusal-kinds table describes unfixed-finding as the consequential (major/critical) finding case only, while the guardrail list forty lines below now says it also fires for an open issue record that differs from HEAD (added by the drain lane for iss-2610072347238476, which left the table row alone because a peer's verb split edits nearby). The table and the list now disagree within one chapter. From 2d14e7025c579cc33cc5399ee9363548303ed98f Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 20:00:38 +0100 Subject: [PATCH 04/21] chore: capture the drain opening a lane on an issue already fixed under another id Assisted-by: Claude:claude-opus-5-5 --- ...full-lane-on-an-issue-whose-fix-has-already.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md diff --git a/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md b/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md new file mode 100644 index 000000000..056ea8722 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610101900387053" +slug: "a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already" +severity: "minor" +category: "ux" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10, lane for iss-2610080546210831" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/drain.md" +remedy: "Before a drain opens a lane, list the commits on the default branch since the issue's capture that touch its found_at path; when any exists, open the lane with a first stage that checks whether the remedy already holds and, if so, resolves the issue against that commit instead of implementing." +--- + +A drain opens a full lane on an issue whose fix has already landed under another issue's id. On 2026-10-10 the drain took iss-2610080546210831 (prepare-this-repo's unconditional core.hooksPath step); commit afa6e7b16 had already made that step conditional while citing iss-2610081312364884, so the record stayed open. The lane spent about 35 minutes and 92k tokens to find nothing to fix, then added a guard test so the landing could resolve it. Neither the dry run nor abcd capture mentions sees this, because the fixing commit names a different issue. From 8ec03f95e5b965b7e28141c8129e409af90c27e1 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 20:03:39 +0100 Subject: [PATCH 05/21] chore: capture the unconditional hooksPath advice left in CONTRIBUTING and commit-msg Assisted-by: Claude:claude-opus-5-5 --- ...-siblings-of-the-core-hookspath-advice-that.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md diff --git a/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md b/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md new file mode 100644 index 000000000..41dc3e287 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610101903385281" +slug: "two-siblings-of-the-core-hookspath-advice-that" +severity: "minor" +category: "inconsistency" +source: "review-followup" +found_during: "abcd-60 drain run 2026-10-10, lane for iss-2610080546210831" +origin: researcher-authored +production_mode: hand-written +found_at: ".github/CONTRIBUTING.md" +remedy: "Give CONTRIBUTING.md and the commit-msg hook's refusal the same three-way advice as commands/prepare-this-repo.md step 5 (unarmed: set core.hooksPath; foreign: have the global dispatcher call .githooks/; armed: nothing), and extend prepare_hookspath_test.go's check to both files." +--- + +Two siblings of the core.hooksPath advice that prepare-this-repo now makes conditional still give it unconditionally. .github/CONTRIBUTING.md (around line 64) tells every clone to run git config core.hooksPath .githooks, and the commit-msg hook's 'no abcd source' refusal (.githooks/commit-msg around line 162) prints the same command. On a machine whose global hooks dispatcher is in force (ahoy's banlist.hooks_path reports foreign), either one overrides that dispatcher instead of having it call .githooks/. The 2026-10-10 drain lane's reviewer found them; that lane's remedy did not cover them. From 020fe6c990505c40912fa58b7c862c868edff863 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 20:06:22 +0100 Subject: [PATCH 06/21] chore: widen the hooksPath sibling remedy to the detector's exact-string gap Assisted-by: Claude:claude-opus-5-5 --- ...1903385281-two-siblings-of-the-core-hookspath-advice-that.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md b/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md index 41dc3e287..5780544ec 100644 --- a/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md +++ b/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md @@ -9,7 +9,7 @@ found_during: "abcd-60 drain run 2026-10-10, lane for iss-2610080546210831" origin: researcher-authored production_mode: hand-written found_at: ".github/CONTRIBUTING.md" -remedy: "Give CONTRIBUTING.md and the commit-msg hook's refusal the same three-way advice as commands/prepare-this-repo.md step 5 (unarmed: set core.hooksPath; foreign: have the global dispatcher call .githooks/; armed: nothing), and extend prepare_hookspath_test.go's check to both files." +remedy: "Give CONTRIBUTING.md and the commit-msg hook's refusal the same three-way advice as commands/prepare-this-repo.md step 5 (unarmed: set core.hooksPath; foreign: have the global dispatcher call .githooks/; armed: nothing), and extend prepare_hookspath_test.go's check to both files, matching any core\\.hooksPath setting by pattern (a --local flag or an absolute .githooks path passes today's exact-string check)." --- Two siblings of the core.hooksPath advice that prepare-this-repo now makes conditional still give it unconditionally. .github/CONTRIBUTING.md (around line 64) tells every clone to run git config core.hooksPath .githooks, and the commit-msg hook's 'no abcd source' refusal (.githooks/commit-msg around line 162) prints the same command. On a machine whose global hooks dispatcher is in force (ahoy's banlist.hooks_path reports foreign), either one overrides that dispatcher instead of having it call .githooks/. The 2026-10-10 drain lane's reviewer found them; that lane's remedy did not cover them. From be1e710cd1b5d33af95a7b9e1fd058a618fc266c Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 21:20:45 +0100 Subject: [PATCH 07/21] chore: capture overlapping preflights and the interview load flake Assisted-by: Claude:claude-opus-5-5 --- ...-make-preflight-runs-overlap-on-one-machine.md | 15 +++++++++++++++ ...ore-interview-tests-fail-under-machine-load.md | 15 +++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md create mode 100644 .abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md diff --git a/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md b/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md new file mode 100644 index 000000000..1bd5f2bb1 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610102020442624" +slug: "several-sessions-make-preflight-runs-overlap-on-one-machine" +severity: "minor" +category: "process" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/implement.md" +remedy: "Give make preflight a machine-wide slot (a lock under ~/.abcd.noindex keyed on the root commit, or a ceiling of N concurrent preflights) that a run waits on and reports, so concurrent sessions' preflights queue instead of overlapping; keep the warn-only extreme-load check for loads the slot cannot see." +--- + +Several sessions' make preflight runs overlap on one machine with nothing to space them out, and the overlap fails gates on tests no lane touched. On 2026-10-10 evening, two other sessions' full test suites were running at once (two go-build trees, a dozen .test binaries at 40-80% CPU each) and the one-minute load reached 124 on 16 cores. Four drain lanes in a row then lost a preflight run to load-only timeouts: TestAnIssueLaneLandsOnePullRequestThatResolvesItsIssue and TestAClosedPullRequestIsRefusedAndNothingIsCleanedUp (internal/core/implement/loop), and two internal/core/interview tests ('WaitDelay expired'). Each passed alone. The preflight load check (implement load --site preflight) warns above four times the core count but never waits, so every lane pays a re-run of about 20 minutes, and a lane whose re-run also lands in a peak has its receipt refused. diff --git a/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md b/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md new file mode 100644 index 000000000..2b5fb1146 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610102020447522" +slug: "two-internal-core-interview-tests-fail-under-machine-load" +severity: "minor" +category: "bug" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10, lane for iss-2610090642392144" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/interview" +remedy: "Find the interview tests' fixed exec WaitDelay / timeout budgets and derive them from the test's deadline (t.Deadline) or a scaled bound, as the openaiapi stream test now does with capWait, so a loaded runner slows them without failing them; reproduce under a CPU-bound sibling before and after." +--- + +Two internal/core/interview tests fail under machine load with 'WaitDelay expired' (a different test on each run), on 2026-10-10 in two consecutive make preflight runs of a drain lane at load averages of 31 to 57 on 16 cores; the package passes when run alone and under the race lane. The tests' subprocess wait is a fixed wall-clock budget that a loaded runner overruns, the same shape as the openaiapi stream test fixed for iss-2610080243367274. From 688261597189a97627ee778689e348ecd46ab700 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 21:21:08 +0100 Subject: [PATCH 08/21] chore: capture the bundled verifier-copy rule left behind the repo's own Assisted-by: Claude:claude-opus-5-5 --- ...in-lane-for-iss-2610090642392144-lands-this.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md diff --git a/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md b/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md new file mode 100644 index 000000000..cad62f966 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610102021042657" +slug: "once-the-drain-lane-for-iss-2610090642392144-lands-this" +severity: "minor" +category: "inconsistency" +source: "review-followup" +found_during: "abcd-60 drain run 2026-10-10, lane for iss-2610090642392144" +origin: researcher-authored +production_mode: hand-written +found_at: "the bundled default rules (internal/core/rules/defaults)" +remedy: "Waits on a person's ruling: should managed repositories be taught the outside-every-working-tree rule too? If yes, update the bundled CONCURRENCY rule and the-users-directory-is-theirs.md to match AGENTS.md, and have the itd-193 and adr-2609091014087993 archive examples name the scratchpad or the abcd home's store as the target." +--- + +Once the drain lane for iss-2610090642392144 lands, this repository's AGENTS.md and .abcd/rules.json say a verifier's copy goes outside every working tree, never under .abcd/.work.local/scratch/. The bundled default CONCURRENCY rule every managed repository receives and the principle the-users-directory-is-theirs.md still allow it in the checkout's .abcd/.work.local/ tier, and itd-193 and adr-2609091014087993 quote the archive command without saying where the copy goes. Changing the bundled rule changes what every managed repository is taught, so that lane left it alone. From 5c2030e686a45b109b0fbd46a12dab933dc822ac Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 21:21:18 +0100 Subject: [PATCH 09/21] chore: capture the guard reading an option value as a script Assisted-by: Claude:claude-opus-5-5 --- ...d-s-hook-refused-an-abcd-capture-command-as.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md diff --git a/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md b/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md new file mode 100644 index 000000000..edcead77e --- /dev/null +++ b/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610102021189565" +slug: "the-shell-guard-s-hook-refused-an-abcd-capture-command-as" +severity: "minor" +category: "bug" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/guard" +remedy: "Treat an operand as a script only in a position that executes it (bash f, source f, ./f, an interpreter's file argument, a startup-file variable), never an option value or a positional argument to a non-shell program; add a regression test with abcd capture --found-at naming a .json path after cd ... &&." +--- + +The shell guard's hook refused an abcd capture command as script-unread because one of its option values, the --found-at value, named a JSON file under internal/core/rules/defaults. The guard treated that file as a script the command runs and reported that it 'runs .abcd/docs-lint.json inside a chain of scripts deeper than the guard reads'. Nothing was executed: the path was a plain string argument to abcd capture, preceded by a cd and joined with &&. The same capture went through with the path reworded as prose (2026-10-10, abcd-60 drain run). From 6b02bcea99c3b3a253740c8a691950881d569fa3 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sat, 10 Oct 2026 22:42:43 +0100 Subject: [PATCH 10/21] chore: capture armed pull requests landing through a record freeze Assisted-by: Claude:claude-opus-5-5 --- ...ced-record-freeze-cannot-hold-pull-requests.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md diff --git a/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md b/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md new file mode 100644 index 000000000..a17724e01 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610102142432879" +slug: "a-peer-s-announced-record-freeze-cannot-hold-pull-requests" +severity: "minor" +category: "process" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-10" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/implement.md" +remedy: "Give a record freeze a form the merge path reads: a session announcing one runs a verb that lists every open PR armed for auto-merge that touches .abcd/ records, disarms them with a note naming the freeze, and re-arms them when the freeze lifts; the implement loop's landing checks for a live freeze before arming." +--- + +A peer's announced record freeze cannot hold pull requests that were armed for auto-merge before it began. On 2026-10-10 a session opened a freeze so it could rename every record with a long slug (#904), and the drain session parked its new lanes. But a drain lane PR (#901), armed by the implement loop's landing an hour earlier, merged through the queue during the freeze. Its record move under the old long name broke #904's queued tree, which dropped #904 from the queue and cost about an hour of re-merging and re-queueing. Nothing listed the PRs each session had armed, and nothing let the freeze disarm them. From f2cbfa068a2ea1c5a1fb2bf9a85b1b1f08e4fb68 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 00:43:10 +0100 Subject: [PATCH 11/21] chore: capture the lifeboat mapping's stale personas prediction Assisted-by: Claude:claude-opus-5-5 --- ...ain-lane-for-iss-2610072347247487-lands-the.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md diff --git a/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md b/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md new file mode 100644 index 000000000..522a412f5 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610102343100369" +slug: "once-the-drain-lane-for-iss-2610072347247487-lands-the" +severity: "nitpick" +category: "drift" +source: "review-followup" +found_during: "abcd-60 drain run 2026-10-11, lane for iss-2610072347247487" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/lifeboat" +remedy: "Update the personas row's expected status in the lifeboat mapping Table and regenerate the brief's 00-meta.md mapping table, so the M0 prediction matches the probe (grounded from an authored brief file, partial from a stub, blank with none); or record why the prediction is kept as written." +--- + +Once the drain lane for iss-2610072347247487 lands, the lifeboat probe grounds the personas section from an authored brief file, as it does every other human-owned section. The design record still predicts the old ceiling: the personas row of the lifeboat mapping Table (internal/core/lifeboat mapping.go, around line 151) and the generated mapping table in the brief's 00-meta.md say 'only partial there'. The probe now exceeds that on abcd's own tree, which has about 859 bytes of personas prose. Both of that lane's reviewers noted it as outside its remedy. From c32d6d2e3068657820cd9fc2a0dd354159e0472b Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 01:11:46 +0100 Subject: [PATCH 12/21] fix: cut the slugs of this branch's twelve captures to the 40-character cap Refs: iss-2610101617043118, iss-2610101617040184, iss-2610101659347329, iss-2610101803326081, iss-2610101900387053, iss-2610101903385281, iss-2610102020442624, iss-2610102020447522, iss-2610102021042657, iss-2610102021189565, iss-2610102142432879, iss-2610102343100369 Assisted-by: Claude:claude-opus-5-5 --- ... iss-2610101617040184-peer-sessions-holds-on-open-issues.md} | 2 +- ...s-2610101617043118-a-drain-left-in-progress-by-a-session.md} | 2 +- ...-2610101659347329-abcd-implement-receipt-path-is-refused.md} | 2 +- ...ss-2610101803326081-the-brief-s-launch-chapter-s-refusal.md} | 2 +- ...s-2610101900387053-a-drain-opens-a-full-lane-on-an-issue.md} | 2 +- ... iss-2610101903385281-two-siblings-of-the-core-hookspath.md} | 2 +- ...ss-2610102020442624-several-sessions-make-preflight-runs.md} | 2 +- ...-2610102020447522-two-internal-core-interview-tests-fail.md} | 2 +- ...s.md => iss-2610102021042657-once-the-drain-lane-for-iss.md} | 2 +- ...-2610102021189565-the-shell-guard-s-hook-refused-an-abcd.md} | 2 +- ...2610102142432879-a-peer-s-announced-record-freeze-cannot.md} | 2 +- ...e.md => iss-2610102343100369-once-the-drain-lane-for-iss.md} | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) rename .abcd/work/issues/open/{iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md => iss-2610101617040184-peer-sessions-holds-on-open-issues.md} (94%) rename .abcd/work/issues/open/{iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md => iss-2610101617043118-a-drain-left-in-progress-by-a-session.md} (95%) rename .abcd/work/issues/open/{iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md => iss-2610101659347329-abcd-implement-receipt-path-is-refused.md} (93%) rename .abcd/work/issues/open/{iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md => iss-2610101803326081-the-brief-s-launch-chapter-s-refusal.md} (93%) rename .abcd/work/issues/open/{iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md => iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue.md} (94%) rename .abcd/work/issues/open/{iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md => iss-2610101903385281-two-siblings-of-the-core-hookspath.md} (95%) rename .abcd/work/issues/open/{iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md => iss-2610102020442624-several-sessions-make-preflight-runs.md} (95%) rename .abcd/work/issues/open/{iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md => iss-2610102020447522-two-internal-core-interview-tests-fail.md} (94%) rename .abcd/work/issues/open/{iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md => iss-2610102021042657-once-the-drain-lane-for-iss.md} (95%) rename .abcd/work/issues/open/{iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md => iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd.md} (94%) rename .abcd/work/issues/open/{iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md => iss-2610102142432879-a-peer-s-announced-record-freeze-cannot.md} (94%) rename .abcd/work/issues/open/{iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md => iss-2610102343100369-once-the-drain-lane-for-iss.md} (94%) diff --git a/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md b/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues.md similarity index 94% rename from .abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md rename to .abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues.md index e7c075f89..3a7bec015 100644 --- a/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues-reached-this-drain-only.md +++ b/.abcd/work/issues/open/iss-2610101617040184-peer-sessions-holds-on-open-issues.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610101617040184" -slug: "peer-sessions-holds-on-open-issues-reached-this-drain-only" +slug: "peer-sessions-holds-on-open-issues" severity: "minor" category: "process" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md b/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session.md similarity index 95% rename from .abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md rename to .abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session.md index 8a4536de9..19f431187 100644 --- a/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session-that-has-ended-stays.md +++ b/.abcd/work/issues/open/iss-2610101617043118-a-drain-left-in-progress-by-a-session.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610101617043118" -slug: "a-drain-left-in-progress-by-a-session-that-has-ended-stays" +slug: "a-drain-left-in-progress-by-a-session" severity: "minor" category: "ux" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md b/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused.md similarity index 93% rename from .abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md rename to .abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused.md index 8e04ec6ba..996fab654 100644 --- a/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused-at-the-state-stage.md +++ b/.abcd/work/issues/open/iss-2610101659347329-abcd-implement-receipt-path-is-refused.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610101659347329" -slug: "abcd-implement-receipt-path-is-refused-at-the-state-stage" +slug: "abcd-implement-receipt-path-is-refused" severity: "minor" category: "ux" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md b/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal.md similarity index 93% rename from .abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md rename to .abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal.md index 1469340ec..e5caf6964 100644 --- a/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal-kinds-table-describes.md +++ b/.abcd/work/issues/open/iss-2610101803326081-the-brief-s-launch-chapter-s-refusal.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610101803326081" -slug: "the-brief-s-launch-chapter-s-refusal-kinds-table-describes" +slug: "the-brief-s-launch-chapter-s-refusal" severity: "nitpick" category: "drift" source: "review-followup" diff --git a/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md b/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue.md similarity index 94% rename from .abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md rename to .abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue.md index 056ea8722..f4d9d9756 100644 --- a/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already.md +++ b/.abcd/work/issues/open/iss-2610101900387053-a-drain-opens-a-full-lane-on-an-issue.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610101900387053" -slug: "a-drain-opens-a-full-lane-on-an-issue-whose-fix-has-already" +slug: "a-drain-opens-a-full-lane-on-an-issue" severity: "minor" category: "ux" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md b/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath.md similarity index 95% rename from .abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md rename to .abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath.md index 5780544ec..159536134 100644 --- a/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath-advice-that.md +++ b/.abcd/work/issues/open/iss-2610101903385281-two-siblings-of-the-core-hookspath.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610101903385281" -slug: "two-siblings-of-the-core-hookspath-advice-that" +slug: "two-siblings-of-the-core-hookspath" severity: "minor" category: "inconsistency" source: "review-followup" diff --git a/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md b/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md similarity index 95% rename from .abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md rename to .abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md index 1bd5f2bb1..0e0b49c53 100644 --- a/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs-overlap-on-one-machine.md +++ b/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610102020442624" -slug: "several-sessions-make-preflight-runs-overlap-on-one-machine" +slug: "several-sessions-make-preflight-runs" severity: "minor" category: "process" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md b/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail.md similarity index 94% rename from .abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md rename to .abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail.md index 2b5fb1146..843c680e0 100644 --- a/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail-under-machine-load.md +++ b/.abcd/work/issues/open/iss-2610102020447522-two-internal-core-interview-tests-fail.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610102020447522" -slug: "two-internal-core-interview-tests-fail-under-machine-load" +slug: "two-internal-core-interview-tests-fail" severity: "minor" category: "bug" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md b/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss.md similarity index 95% rename from .abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md rename to .abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss.md index cad62f966..c5977220d 100644 --- a/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss-2610090642392144-lands-this.md +++ b/.abcd/work/issues/open/iss-2610102021042657-once-the-drain-lane-for-iss.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610102021042657" -slug: "once-the-drain-lane-for-iss-2610090642392144-lands-this" +slug: "once-the-drain-lane-for-iss" severity: "minor" category: "inconsistency" source: "review-followup" diff --git a/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md b/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd.md similarity index 94% rename from .abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md rename to .abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd.md index edcead77e..d1e1c1e23 100644 --- a/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd-capture-command-as.md +++ b/.abcd/work/issues/open/iss-2610102021189565-the-shell-guard-s-hook-refused-an-abcd.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610102021189565" -slug: "the-shell-guard-s-hook-refused-an-abcd-capture-command-as" +slug: "the-shell-guard-s-hook-refused-an-abcd" severity: "minor" category: "bug" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md b/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot.md similarity index 94% rename from .abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md rename to .abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot.md index a17724e01..fee598209 100644 --- a/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot-hold-pull-requests.md +++ b/.abcd/work/issues/open/iss-2610102142432879-a-peer-s-announced-record-freeze-cannot.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610102142432879" -slug: "a-peer-s-announced-record-freeze-cannot-hold-pull-requests" +slug: "a-peer-s-announced-record-freeze-cannot" severity: "minor" category: "process" source: "agent-observation" diff --git a/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md b/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss.md similarity index 94% rename from .abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md rename to .abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss.md index 522a412f5..7f6b87786 100644 --- a/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss-2610072347247487-lands-the.md +++ b/.abcd/work/issues/open/iss-2610102343100369-once-the-drain-lane-for-iss.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610102343100369" -slug: "once-the-drain-lane-for-iss-2610072347247487-lands-the" +slug: "once-the-drain-lane-for-iss" severity: "nitpick" category: "drift" source: "review-followup" From 5a281e349f1bf8c1c3c1b8e868f1cd6e09e8b20a Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 01:12:04 +0100 Subject: [PATCH 13/21] chore: capture a validated lane refusing a merge of main before landing Assisted-by: Claude:claude-opus-5-5 --- ...045504-a-validated-lane-cannot-take-main-in.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610110012045504-a-validated-lane-cannot-take-main-in.md diff --git a/.abcd/work/issues/open/iss-2610110012045504-a-validated-lane-cannot-take-main-in.md b/.abcd/work/issues/open/iss-2610110012045504-a-validated-lane-cannot-take-main-in.md new file mode 100644 index 000000000..c219562ff --- /dev/null +++ b/.abcd/work/issues/open/iss-2610110012045504-a-validated-lane-cannot-take-main-in.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610110012045504" +slug: "a-validated-lane-cannot-take-main-in" +severity: "minor" +category: "ux" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-11" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/implement/loop" +remedy: "Let the land stage accept a head whose only commits past the judged head are merges of the default branch that change no file the validators judged (or re-run only the definition of done over them), so a lane held across a default-branch change can sync before its resolve commit instead of after its PR opens." +--- + +A validated lane cannot take the default branch in before it lands. On 2026-10-11 three drain lanes held through a peer's record-rename freeze were validated against a base that the rename then moved. Merging origin/main into one lane branch before its landing made implement step refuse at land ('is at , not at the head its validators judged'). So the only order that works is to land on the stale base (the resolve commit moves the record under its old long name), push, open the PR, and only then merge main and run the rename tool on top. Each lane then pays a third full preflight, and its PR is conflicting until that second push. From 749b15770c0d2e87c942c995b0c97f353bf50d2d Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 01:46:54 +0100 Subject: [PATCH 14/21] chore: widen the overlapping-preflight remedy with a load-derived -p Assisted-by: Claude:claude-opus-5-5 --- ...iss-2610102020442624-several-sessions-make-preflight-runs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md b/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md index 0e0b49c53..cb95d0234 100644 --- a/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md +++ b/.abcd/work/issues/open/iss-2610102020442624-several-sessions-make-preflight-runs.md @@ -9,7 +9,7 @@ found_during: "abcd-60 drain run 2026-10-10" origin: researcher-authored production_mode: hand-written found_at: "commands/implement.md" -remedy: "Give make preflight a machine-wide slot (a lock under ~/.abcd.noindex keyed on the root commit, or a ceiling of N concurrent preflights) that a run waits on and reports, so concurrent sessions' preflights queue instead of overlapping; keep the warn-only extreme-load check for loads the slot cannot see." +remedy: "Give make preflight a machine-wide slot (a lock under the abcd home keyed on the root commit, or a ceiling of N concurrent preflights) that a run waits on and reports, so sessions' preflights queue instead of overlapping; give its test and race stages a go test -p derived from the online cores and the current load, since one -race run already starts about one test binary per core and two saturate the machine (load 199 on 16 cores at 01:46 on 2026-10-11 with three race runs of internal/surface/cli live); keep the warn-only extreme-load check for load the slot cannot see." --- Several sessions' make preflight runs overlap on one machine with nothing to space them out, and the overlap fails gates on tests no lane touched. On 2026-10-10 evening, two other sessions' full test suites were running at once (two go-build trees, a dozen .test binaries at 40-80% CPU each) and the one-minute load reached 124 on 16 cores. Four drain lanes in a row then lost a preflight run to load-only timeouts: TestAnIssueLaneLandsOnePullRequestThatResolvesItsIssue and TestAClosedPullRequestIsRefusedAndNothingIsCleanedUp (internal/core/implement/loop), and two internal/core/interview tests ('WaitDelay expired'). Each passed alone. The preflight load check (implement load --site preflight) warns above four times the core count but never waits, so every lane pays a re-run of about 20 minutes, and a lane whose re-run also lands in a peak has its receipt refused. From 612ff1d0fb59df2077db678c8710b78322e78dfc Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 03:53:06 +0100 Subject: [PATCH 15/21] chore: capture gitutil's version probe running with no deadline Assisted-by: Claude:claude-opus-5-5 --- ...59544-gitutil-version-probe-has-no-deadline.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610110253059544-gitutil-version-probe-has-no-deadline.md diff --git a/.abcd/work/issues/open/iss-2610110253059544-gitutil-version-probe-has-no-deadline.md b/.abcd/work/issues/open/iss-2610110253059544-gitutil-version-probe-has-no-deadline.md new file mode 100644 index 000000000..7dd567128 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610110253059544-gitutil-version-probe-has-no-deadline.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610110253059544" +slug: "gitutil-version-probe-has-no-deadline" +severity: "minor" +category: "bug" +source: "agent-finding" +found_during: "abcd-60 drain run 2026-10-11, lane for iss-2610090642407850" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/gitutil" +remedy: "Run the git version probe under the caller's context (or a short fixed deadline) with the same kill-on-cancel handling every other gitutil call gets, release the lock on timeout without caching a result, and add a test with a fake git that hangs on 'version', proving the first call returns by its deadline and leaves no child behind." +--- + +gitutil's one-time git version probe (internal/gitutil lazyfetch.go) runs with no deadline and under a process-wide lock. So the first git call of a process whose git hangs blocks in that probe, and every other git call waits on the lock behind it. For the status line this means a hung git ends the verb at its 500ms overall limit with the wrong message, and the hanging git version child is never killed, so one is left behind on every refresh. Found by the 2026-10-11 drain lane for iss-2610090642407850: a test's hanging fake git, answering the probe, blocked every git in its test process for 30s. From ef5b6bba0fa18dc80306e8861be7c7be75d25b54 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 04:59:28 +0100 Subject: [PATCH 16/21] chore: capture the record-id redraw differing by family Assisted-by: Claude:claude-opus-5-5 --- ...59273529-record-id-redraw-differs-by-family.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610110359273529-record-id-redraw-differs-by-family.md diff --git a/.abcd/work/issues/open/iss-2610110359273529-record-id-redraw-differs-by-family.md b/.abcd/work/issues/open/iss-2610110359273529-record-id-redraw-differs-by-family.md new file mode 100644 index 000000000..9d4479bea --- /dev/null +++ b/.abcd/work/issues/open/iss-2610110359273529-record-id-redraw-differs-by-family.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610110359273529" +slug: "record-id-redraw-differs-by-family" +severity: "minor" +category: "inconsistency" +source: "review-followup" +found_during: "abcd-60 drain run 2026-10-11, lane for iss-2610092011131598" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/capture" +remedy: "Make mintRecordID redraw on any existing path (bounded, as the iss and reading-item allocators do under spc-33 ruling 2) and drop the in-process minted-path set, keeping refuseExistingRecord as the write-time guard; test a forced clash with a planted foreign record, watched fail first." +--- + +After the drain lane for iss-2610092011131598 lands, the surprise, admission, disposition and reframe records redraw a minted id only when it clashes with a record this same process wrote, and still refuse a clash with any other existing record. The issue and reading-item allocators redraw on any clash (spc-33 ruling 2). Both of that lane's reviewers noted the split. The retained refusal guards against overwriting, which a redraw never does, so it protects nothing a redraw would endanger, and it can still fail a same-second mint against a peer's committed record. From 7580bbe416b8adfa401fb4fd2cef5082e04aef41 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 05:01:22 +0100 Subject: [PATCH 17/21] chore: capture lane pull requests leaving the merge queue silently Assisted-by: Claude:claude-opus-5-5 --- ...2-a-lane-pr-leaves-the-merge-queue-silently.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md diff --git a/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md b/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md new file mode 100644 index 000000000..7619d4158 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610110401224302" +slug: "a-lane-pr-leaves-the-merge-queue-silently" +severity: "minor" +category: "ux" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-11" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/implement/loop" +remedy: "While a lane waits at land for its merge, have implement step read the pull request's auto-merge and merge-queue state through gh; when it was armed and is no longer armed or queued, say so in the refusal (removed from the queue, with the queue run's conclusion) and re-arm once, recording the re-arm in the run record, rather than reporting only 'not merged yet'." +--- + +A lane's pull request can leave the merge queue without anyone being told, and its auto-merge falls off with it. On 2026-10-11 the queue removed two drain PRs. #906's queue CI was cancelled when a peer's PR was re-queued ahead of it. #903 was removed about 45 minutes after entry while its macOS check was still running. Both then sat open and unarmed. Meanwhile implement step went on reporting only 'pull request #N is not merged yet', because it reads merge state, never queue membership or the armed flag. They were found by hand an hour or more later. From 0c21acea0b28067ce1bc358132bf67f3a8f82c30 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 05:32:16 +0100 Subject: [PATCH 18/21] chore: capture the question check failing open silently Assisted-by: Claude:claude-opus-5-5 --- ...32159652-question-check-fails-open-silently.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610110432159652-question-check-fails-open-silently.md diff --git a/.abcd/work/issues/open/iss-2610110432159652-question-check-fails-open-silently.md b/.abcd/work/issues/open/iss-2610110432159652-question-check-fails-open-silently.md new file mode 100644 index 000000000..b951d3219 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610110432159652-question-check-fails-open-silently.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610110432159652" +slug: "question-check-fails-open-silently" +severity: "minor" +category: "ux" +source: "agent-finding" +found_during: "abcd-60 drain run 2026-10-11, lane for iss-2610090642394550" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/surface/cli" +remedy: "When the question check cannot find the repository root, still let the question through (fail open) but write one stderr line naming why (the root lookup failed, and its error) so the person and the transcript can see the check did not run; test it with a git that refuses rev-parse." +--- + +The guard's question check lets a question without abcd's label through without a word when git cannot name the repository root for a directory that looks like a repository. The hook writes nothing at all: an empty stdout, exit 0 and an empty stderr. The guard's own rule is to fail open, but loudly. On a loaded machine this silence was what TestModeMadeQuestionAbcdsSaysSo met on PR #858, before f1703a29f removed the 50ms root-lookup deadline. The silent branch is still there for any other reason the lookup fails. From 963f280c03fe75b2bc2180236f9c3a93e5389416 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 07:13:37 +0100 Subject: [PATCH 19/21] chore: capture superseded merge-group runs holding CI runners Assisted-by: Claude:claude-opus-5-5 --- ...3372021-stale-merge-group-runs-hold-runners.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md diff --git a/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md b/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md new file mode 100644 index 000000000..007201ab0 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610110613372021" +slug: "stale-merge-group-runs-hold-runners" +severity: "minor" +category: "tech-debt" +source: "agent-observation" +found_during: "abcd-60 drain run 2026-10-11" +origin: researcher-authored +production_mode: hand-written +found_at: ".github/workflows/ci.yml" +remedy: "Give the CI workflow's merge_group runs a concurrency group keyed on the queue entry's pull request (github.event.merge_group head ref, minus its sha) with cancel-in-progress: true, so a rebuilt group cancels its superseded run; check the zizmor audit accepts it." +--- + +When the merge queue rebuilds its groups (an entry dropped, re-queued or re-armed), the CI runs of the superseded groups keep running and holding runners, though their gh-readonly-queue refs are deleted and nothing reads their results. On 2026-10-11 nothing merged from 03:36 to past 07:00 BST. Seven stale merge-group ci runs (PRs 903, 906, 908, 911 and 915 at older shas) held the runners while every live group's run sat queued, until a session cancelled them by hand. From c4021d25b1d6f055756450b234b9a261aebceaba Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 07:14:02 +0100 Subject: [PATCH 20/21] chore: sharpen the stale merge-group run remedy with the ref-derived key Assisted-by: Claude:claude-opus-5-5 --- .../iss-2610110613372021-stale-merge-group-runs-hold-runners.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md b/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md index 007201ab0..92b3f9303 100644 --- a/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md +++ b/.abcd/work/issues/open/iss-2610110613372021-stale-merge-group-runs-hold-runners.md @@ -9,7 +9,7 @@ found_during: "abcd-60 drain run 2026-10-11" origin: researcher-authored production_mode: hand-written found_at: ".github/workflows/ci.yml" -remedy: "Give the CI workflow's merge_group runs a concurrency group keyed on the queue entry's pull request (github.event.merge_group head ref, minus its sha) with cancel-in-progress: true, so a rebuilt group cancels its superseded run; check the zizmor audit accepts it." +remedy: "ci.yml keys merge_group runs on github.run_id with cancel-in-progress off, and each group's ref (gh-readonly-queue/main/pr-N-) is unique, so neither the run id nor github.ref can cancel a superseded run. Key merge_group runs on the pull request number parsed from the queue ref (pr-N), with cancel-in-progress on for merge_group, so a rebuilt group cancels the older run for the same PR; do the same for the attribution and external-review workflows; check the zizmor audit accepts it." --- When the merge queue rebuilds its groups (an entry dropped, re-queued or re-armed), the CI runs of the superseded groups keep running and holding runners, though their gh-readonly-queue refs are deleted and nothing reads their results. On 2026-10-11 nothing merged from 03:36 to past 07:00 BST. Seven stale merge-group ci runs (PRs 903, 906, 908, 911 and 915 at older shas) held the runners while every live group's run sat queued, until a session cancelled them by hand. From efcd021a70b92ff9a3e9bf96be5a361cbcdf13c9 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 11 Oct 2026 08:26:44 +0100 Subject: [PATCH 21/21] fix: cut the silent queue-drop capture's slug to the 40-character cap Refs: iss-2610110401224302 Assisted-by: Claude:claude-opus-5-5 --- ...=> iss-2610110401224302-a-lane-pr-leaves-the-merge-queue.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .abcd/work/issues/open/{iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md => iss-2610110401224302-a-lane-pr-leaves-the-merge-queue.md} (95%) diff --git a/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md b/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue.md similarity index 95% rename from .abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md rename to .abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue.md index 7619d4158..1f8020995 100644 --- a/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue-silently.md +++ b/.abcd/work/issues/open/iss-2610110401224302-a-lane-pr-leaves-the-merge-queue.md @@ -1,7 +1,7 @@ --- schema_version: 1 id: "iss-2610110401224302" -slug: "a-lane-pr-leaves-the-merge-queue-silently" +slug: "a-lane-pr-leaves-the-merge-queue" severity: "minor" category: "ux" source: "agent-observation"