Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .abcd/work/DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2676,3 +2676,4 @@ together (the script's header says why there is no escape hatch).
- 2026-10-05 — Release v0.13.0 is cut by the coordinating session abcd-d7 while the product thinker is away, and the run's agenda line is: approve the publish step. Under the product thinker's rulings of 2026-10-04 (~10:05Z, verbatim: "Yes, that order", to cut v0.13.0 now with the home rename #815 inside it and rename the folder on their return; "Yes, approve it", for the coordinating session to approve the GitHub publish deployment itself once every check has passed, then verify the downloads and the site; ~13:35, leaving overnight: "keep going autonomously so we can have a new release tomorrow morning"), the session approves the `release` environment's deployment of v0.13.0 only after the merge queue, the verify job and every other gate on the tagged commit report green, and stops with a handover instead if any does not. The cut: v0.13.0, impact breaking (decided by itd-2610030720038073, the home folder renamed to `~/.abcd.noindex` with every abcd entry point stopping until the person renames it; itd-2610030814013772, AGENTS.md the one conventions file; and iss-2610020723185314, only a personal route hands a role to a command-line runner), 55 records since v0.12.0: five shipped intents (two breaking, three additive: itd-201, itd-2610030810350727, itd-2610030821294016) and 50 resolved issues (41 fixes, one additive, one breaking, seven internal and outside the changelog); the release guard and the findings guard passed. The noindex intent's scan receipt (D6) was taken on a `.noindex` probe folder before the rename, with consent, and adr-2610030720195401 accepted with brief invariant 21 (6538ab4a). Brief fidelity: three tier-full reviews and their holds brought 25 brief sentences current before the close (9d57917c, 9e6e0aa0), and the guide's own review found one false sentence, corrected to say the rename is done in a plain Terminal (cde071b9, 405cf34d). Content commit c6441dc0, on top of 3a092b89, which the cross-check's one fix-before-tag finding required; both semantic gates ran at tier full over the first roll 317cd0cc, which differs from the content commit only by that commit and the re-cut CHANGELOG. The docs-currency-reviewer (Fable 5.1) found 2: dc-1 accepted as written (while only `~/.abcd` stands the plugin root holds no binary, so the hook refuses the rename too and the pages describe what the person meets), dc-2 a nitpick deferred to the next release notes. The brief-surface cross-check (45 pinned checkers, Opus 5.5, at most eight alive) found 144 (31 major, 94 minor, 19 nitpick), 143 valid and one invalid (x-036) on an independent classification (Fable 5.1); of the three user-facing findings x-065 (`abcd build --help` said the sub-agent ceiling is not counted, where it binds through `implement step` since ruling DR6) is fixed in 3a092b89, and x-010 and x-042 are minor and deferred; the 140 design-record findings go to the systematic brief pass iss-2609091956001547. Deferred out loud, to be captured after the tag as two records: `launch ship` reads the records at HEAD, so a spec close left uncommitted was silently missing from the cut rather than refused (the close was committed as 44a73e6f before the ingest), and `docs fidelity --apply` flags the drafted replacement while the landed sentence was hand-tidied, so .abcd/work/brief-review-flags.json carries the drafted wording for 10-docs, 15-prepare-this-repo, 22-site, 23-reading and 27-implement. Reason for deferring: neither changes what v0.13.0 ships, and the person's ruling was a release by morning.
- 2026-10-05 — Decided without asking (facilitator default, recorded by abcd-e8 at abcd-d7's direction while the person is away): the dashboard refuses a node shared into the tailnet from another account, and a request relayed by another node's Serve or Funnel, until the person decides; decision 4's 'anyone on your Tailscale' did not settle either, a shared-in node belongs to someone else and a Funnel relay is the open internet, so refusing is the safe default. A raw TCP relay cannot be told apart and stays a residual.
- 2026-10-07 — Ruling DR3 of the person (2026-09-29, in the human-step interview run for autonomous run A and relayed by its interviewer abcd-23 [b1e81b]), restated for iss-2610020728128805 (recorded by lane-1 of run-2610071733272557, records only). The answers of that interview are kept in the local-tier file `.abcd/.work.local/scratch/reports/rulings-answered-2609-29-b.md`, line 31, and are restated here because that file is not committed. DR3, verbatim: "itd-60 docs-fidelity verdict: FOUND AUTOMATICALLY by spec close and launch ship (a saved verdict labelled with the reviewed code's fingerprint; match -> proceed; none/stale -> refuse 'run the docs review first'), like the preflight receipt." It is the ruling the doc-fidelity gate's shape rests on (itd-60, ac-2: the semantic layer is a saved review for HEAD that `spec close` and `launch ship` find automatically, rather than a review run at the close), cited by `internal/core/docfidelity/store.go`, `internal/core/docfidelity/docfidelity.go` and `internal/core/lint/gatereceipt.go`. The issue was captured on 2026-10-02 against the 2026-09-30 entry above, which restates DR1, DR2, DR4, DR5 and DR6 and skips DR3; that entry is left as written (DA002). The 2026-10-02 entry of lane rd2 above already restated DR3 later the same day, after the capture, together with CB1, CC1, CD1 and CD2, and DQ2b and CJ1b have their own 2026-09-30 entries, so none of the rulings the issue names as owed is still missing; this entry adds the issue's own pointer to the ruling and changes no earlier line.
- 2026-10-09 — Rulings of the product thinker on the three hand-backs of the 2026-10-07/08 autonomous drain (asked by abcd-0b, one question at a time, answers verbatim): (1) iss-2609251618079479, whether the build-sequence chapter's build-milestone sense retires with the phase: "Rewrite in today's terms" — 06-delivery/01-build-sequence.md stays a current chapter, its build order restated as dependencies with no milestones (neither retired as history nor kept as a second sense of the word). (2) iss-2610040758569116, whether an agent may run 'abcd decide accept', which stamps the person's git name as accepted_by: "Agents too, disclosed" — no guard block as for 'source ledger --flip'; the commit's Assisted-by trailer is the disclosure. (3) iss-2610030956156354's open design point, whether a step still falls back to the agent harness when the size count already sent the brief to the person's own model server and the chat call then fails: "Move to the harness" — no answer received is the trigger, not nothing sent; recorded as iss-2610090701491123, since the resolved fix stops instead.
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ Deferred past v0.11.1: The product thinker's ruling M19 of 2026-09-23: planned n
## Evidence 2026-10-07

The macOS leg hit its 45-minute job cap in the merge queue again. On #839's merge-group run (37590582904), `check (macos-latest)` ran 07:57:44 to 08:43:14 and was cancelled in `Test (race, internal)`, which had started at 08:14:47. The ubuntu leg was green. The queue dropped the pull request and it had to be re-queued by hand, adding a full cycle. This is the second time in two release cycles (the v0.13.1 release PR, 2026-10-05, was cancelled the same way). The queue retries nothing on a runner timeout, so an unattended run has to watch for it.

## Evidence 2026-10-08

The macOS leg's 45-minute cap recurred three more times in the overnight drain, though iss-2609281514435020 was resolved for the same class. PR #852's own macOS check failed at 45m31s (2026-10-07 23:11Z). PR #854 was dropped from the merge queue at 2026-10-08 00:36Z on a failed merge-group check, its own checks green. PR #867 was dropped at 07:43Z: its merge-group ci run 37740516314 had check (macos-latest) cancelled at the cap (07:07 to 07:52). Each needed a hand re-run or re-enqueue (iss-2610090642376032 covers the silent drop).
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,7 @@ x-083 to x-100 in `02-constraints/04-naming.md` and
`05-internals/03-configuration.md`, which other branches were editing at the
time. The two stable armings the acceptance asks for are not run: they fan out
the pinned checkers and are the orchestrator's to arm, with the person's opt-in.

## Evidence 2026-10-08

The v0.13.3 full-tier crosscheck (46 checkers over 41 brief documents and 5 surfaces) recorded 74 minor brief discrepancies, all deferred here: 50 false claims, 11 fictional layouts, 10 stale counts, 2 undocumented surfaces and 1 criterion violation. Each is listed with its location in the committed receipt .abcd/work/reviews/ecef2bf2a46f5f95fbc55ba88b09eff1907a16c6/iss35-brief-surface-crosscheck.json (failing[]). Two examples from the verb-tree checker: 05-internals/08-skills.md says five verbs have no command page where statusline makes six, and 02-constraints/04-naming.md says two verbs refuse when run bare where launch, decide and build make three.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ found_during: "autonomous run A resumed 2026-09-25"
origin: researcher-authored
production_mode: hand-written
found_at: ".abcd/development/brief/01-product/04-scope.md"
remedy: "Finish the sweep in the files it left, each once the branch editing it has landed: where the brief uses the phase or the milestone as the sequencing unit, state sequencing as dependencies (blocked_by, builds_on) plus the lifecycle shelves, the Now / Next / Later block and target_release, as adr-2609212115255771 decides; restate 04-surfaces/09-reflect.md at the release grain in the change that plans or builds itd-24; and ask the product thinker whether the build-sequence chapter's build-milestone sense retires with the phase. Grounds: the ADR fixes the replacement vocabulary, so each remaining site is a reading, not a decision, except the build-milestone sense, which the ADR does not name; a grep for phase and milestone over the brief that finds only history, the retired entries and the other senses listed in the record would show the sweep done."
remedy: "Finish the sweep in the files it left: where the brief uses the phase or the milestone as the sequencing unit, state sequencing as dependencies (blocked_by, builds_on) plus the lifecycle shelves, the Now / Next / Later block and target_release, as adr-2609212115255771 decides; restate 04-surfaces/09-reflect.md at the release grain in the change that plans or builds itd-24; and rewrite 06-delivery/01-build-sequence.md in today's terms, its build order stated as dependencies with no milestones, fixing the ten statements the v0.13.3 crosscheck found stale (product thinker ruling 2026-10-09: 'Rewrite in today's terms')."
deferred_after: "v0.11.1"
deferral_reason: "no ruling owed; carried past v0.11.1 by lane drainDrift3 (run A 2026-09-29) on its size: adr-2609212115255771 settles the model (sequencing is builds_on and blocked_by plus the drafts, planned and shipped shelves; the checkpoint is the derived release), but at 8322cdf65 the brief still names the phase at about 250 sites in 60 files, and each needs a reading to tell the retired sequencing unit from a legitimate use (the retired-term glossary entry, the phase-audit receipt, a process phase). It wants a docs lane of its own, taking 01-product/04-scope.md and the release, version, loop, plan and spec glossary entries first."
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ found_during: "downstream brief-authoring lab report, 2026-10-04"
origin: researcher-authored
production_mode: hand-written
found_at: "internal/core/decide/decide.go"
remedy: "Add an accept sub-verb to decide that sets status: accepted on a proposed ADR and stamps who accepted it and when, refusing a record that is not proposed; test: accept on a proposed fixture ADR writes the status and the stamp, and a second accept is refused."
remedy: "Add an accept sub-verb to decide that sets status: accepted on a proposed ADR and stamps who accepted it and when, refusing a record that is not proposed; an agent may run it, disclosed by the commit's Assisted-by trailer, with no guard block (product thinker ruling 2026-10-09: 'Agents too, disclosed'). The reviewed code is parked on local branch parked/decide-accept-iss-2610040758569116 (bf7930a27) for reuse; test: accept on a proposed fixture ADR writes the status and the stamp, and a second accept is refused."
---

abcd decide writes an ADR as proposed, and its help says the status stays proposed until the author sets accepted, but no verb sets it: accepting a decision means hand-editing status:, and nothing records who accepted it or when. A downstream project accepting its first decisions did exactly that.
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ Deferred past v0.13.0: Found during the v0.13.1 cut in code that release does no
## Deferral 2026-10-07

Deferred past v0.13.1: Second deferral, made by the 2026-10-07 autonomous run cutting v0.13.2: that patch ships the hook-message fix and the change-guard hardening and touches no staging code. The loss has appeared only on a slow, race-instrumented macOS runner, so its cause is not yet established, and the remedy needs the staging lock reworked and proved under a deliberately slowed lock. That is an investigation of its own, owed before the next minor release; a third deferral should go to the product thinker.

## Evidence 2026-10-08

Recurred in the merge queue: PR #869 (records only) was dropped at 06:59Z when its merge group's macOS check failed TestHookSubagentStopConcurrentCompletionsAllStage, staging 11 of 12 transcripts from 12 simultaneous completions (run 37736585477). Re-enqueued; it merged. The deferral past v0.13.1 lapsed at v0.13.2, and the v0.13.3 cut's findings gate did not trip on it because it predates that anchor.
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ remedy: "Give the drain a verb to change its pace mid-run (abcd drain pace <work
---

A running drain's pace cannot be changed: abcd drain refuses --pace, --sub-agents and --fix-rounds while a drain is in progress ('a pace is set when a run starts'), and there is no verb to end a drain early, so the only way to move a drain started on the bundled 120/300 pace (two hours of work, five of pause) to continuous work is to wait for it to end or to discard its local state by hand. Met 2026-10-07 when the product thinker asked a drain started minutes earlier to work throughout.

## Evidence 2026-10-07

The handover sequence 'record lane 1, then retire the drain and start a re-paced one' cannot be followed cleanly: the drain move that recorded lane 1's outcome also opened lane 2 (iss-2610042333573913, run-2610071648273024) under the old 120/300 pace before the drain could be retired, and that lane was then driven by hand as a standalone run.
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ remedy: "When a fix round's receipt names new commits, re-derive each resolves e
---

A fix round that rebases the lane branch leaves the lane receipt's resolves[].commit at the pre-rebase sha, which is no longer reachable from the lane head, so the landing would stamp an unreachable resolved_by.commit that RS003 refuses at preflight. Met overnight on run-2610072316033117 (fab3f1704 rebased to 90f48d5f9); corrected by hand in the run state.

## Evidence 2026-10-08

Second occurrence the same night: the doc-fidelity lane's fix round rebased its branch at 03:31Z, leaving the receipt's resolves commit at the pre-rebase bec781f96; it was repointed by hand to c3a7d23fd before landing, as the personas lane's had been (fab3f1704 to 90f48d5f9).
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
schema_version: 1
id: "iss-2610090642371836"
slug: "when-a-release-cut-is-refused-for-an-unfixed-or-deleted"
severity: "minor"
category: "bug"
source: "review-followup"
found_during: "2026-10-07/08 autonomous drain and v0.13.3 cut"
origin: researcher-authored
production_mode: hand-written
found_at: "internal/core/release/emit.go"
remedy: "Raise the open-records refusal as its own entry whenever FindingGuard.Uncommitted is non-empty, carrying UncommittedReason and naming the paths, and test the three-way case (unfixed, deleted and uncommitted together) watched fail first."
---

When a release cut is refused for an unfixed or deleted finding and also for an issue record under open/ that differs from HEAD, the open-records refusal gets no refusal entry of its own: emit.go raises the unfixed and deleted refusals and adds the guard's verdict as a backstop only when both lists are empty, so the uncommitted-records reason survives only in the findings verdict. A front door that acts on the refusal list fixes the findings, retries, and only then meets the second refusal.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
schema_version: 1
id: "iss-2610090642376032"
slug: "a-pull-request-the-implement-loop-lands-can-leave-the-merge"
severity: "minor"
category: "process"
source: "agent-observation"
found_during: "2026-10-07/08 autonomous drain and v0.13.3 cut"
origin: researcher-authored
production_mode: hand-written
found_at: "internal/core/implement/loop/land.go"
remedy: "After arming auto-merge, the landing confirms the pull request is in the queue (enqueue it when CLEAN and unqueued, toggle auto-merge as the fallback) and the run's watch treats not-queued-and-not-merged as a terminal state it reports, naming the failed merge-group check."
---

A pull request the implement loop lands can leave the merge queue silently. Twice it sat CLEAN with auto-merge armed and never entered the queue (#837, #844; the enqueue mutation then failed with a forge error and only toggling auto-merge queued it), and four times across this run and the v0.13.2 cut a failed merge-group check (the macOS job cap, or a flaky test) dropped it from the queue (#839, #854, #867, #869) with nothing re-queuing it. The loop arms auto-merge and walks away, so a run that trusts it stalls unseen; one drop cost about 45 minutes in this run.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
schema_version: 1
id: "iss-2610090642381632"
slug: "a-hand-run-review-or-checker-agent-has-no-deadline-of-its"
severity: "minor"
category: "process"
source: "agent-observation"
found_during: "2026-10-07/08 autonomous drain and v0.13.3 cut"
origin: researcher-authored
production_mode: hand-written
found_at: "agents"
remedy: "Give the review and checker agent definitions, and the brief the release crosscheck hands each checker, a stated time budget and a one-pass method that ends with whatever findings exist, and say in the release runbook to stop and relaunch an agent that overruns it."
---

A hand-run review or checker agent has no deadline of its own. In the v0.13.2 cut a crosscheck checker ran over an hour, and in this run a ruthless reviewer ran about 95 minutes; neither answered a wrap-up message, and both were stopped and relaunched with a time budget and a one-pass method by hand. The agent definitions and the release crosscheck brief carry no budget or stopping rule, so the orchestrator has to invent one each time.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
schema_version: 1
id: "iss-2610090642385898"
slug: "a-drain-has-no-way-to-hold-back-one-issue-or-one-package-for"
severity: "minor"
category: "ux"
source: "agent-observation"
found_during: "2026-10-07/08 autonomous drain and v0.13.3 cut"
origin: researcher-authored
production_mode: hand-written
found_at: "commands/drain.md"
remedy: "Add a skip-for-now to the drain: a list of issue ids or paths the current drain passes over, each with a reason, shown in the plan's passed entries and cleared when the drain ends."
---

A drain has no way to hold back one issue or one package for now. A peer's verbal hold is invisible to it (only implement claim or a branch carrying the record keeps a lane off an issue), and while a fix is in flight in one package the only way to keep the drain out of that package is to stop the whole drain, so this run drove a colliding lane anyway and let whichever landed second rebase.
Loading
Loading