From 00578921c1453dffb7f7aec785166df0c1adc3c5 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:49:09 +0100 Subject: [PATCH 1/7] chore: capture follow-ups from the 2026-10-09 idea reviews Seven records: an adopted idea's public sources reach the acknowledgements, and only an accepted idea's sources are named publicly; ADR 0007's credit link answers 404; the CONCURRENCY rule calls the planned worktree-store intent a draft; the live-capture lesson lives only in one agent's local memory; and the handover note has no writer or freshness check. Refs: iss-2610090742488191, iss-2610090748299348, iss-2610090744063842 Refs: iss-2610090744073409, iss-2610090744325698, iss-2610090747102654 Refs: iss-2610090740139804 Assisted-by: Claude:claude-opus-5-5 --- ...-adopted-nothing-carries-the-public-primary.md | 15 +++++++++++++++ ...acknowledgements-md-link-the-prd-template-s.md | 15 +++++++++++++++ ...y-rule-in-abcd-rules-json-and-its-agents-md.md | 15 +++++++++++++++ ...ker-s-2026-10-07-lesson-that-a-user-visible.md | 15 +++++++++++++++ ...e-for-a-short-note-of-where-the-work-stands.md | 15 +++++++++++++++ ...e-behind-an-idea-is-named-in-the-repository.md | 15 +++++++++++++++ 6 files changed, 90 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610090742488191-when-an-idea-is-adopted-nothing-carries-the-public-primary.md create mode 100644 .abcd/work/issues/open/iss-2610090744063842-adr-0007-and-acknowledgements-md-link-the-prd-template-s.md create mode 100644 .abcd/work/issues/open/iss-2610090744073409-the-concurrency-rule-in-abcd-rules-json-and-its-agents-md.md create mode 100644 .abcd/work/issues/open/iss-2610090744325698-the-product-thinker-s-2026-10-07-lesson-that-a-user-visible.md create mode 100644 .abcd/work/issues/open/iss-2610090747102654-abcd-has-a-place-for-a-short-note-of-where-the-work-stands.md create mode 100644 .abcd/work/issues/open/iss-2610090748299348-a-public-source-behind-an-idea-is-named-in-the-repository.md diff --git a/.abcd/work/issues/open/iss-2610090742488191-when-an-idea-is-adopted-nothing-carries-the-public-primary.md b/.abcd/work/issues/open/iss-2610090742488191-when-an-idea-is-adopted-nothing-carries-the-public-primary.md new file mode 100644 index 000000000..8781b3cbd --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090742488191-when-an-idea-is-adopted-nothing-carries-the-public-primary.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090742488191" +slug: "when-an-idea-is-adopted-nothing-carries-the-public-primary" +severity: "minor" +category: "process" +source: "user-observation" +found_during: "2026-10-09 product thinker capture" +origin: researcher-authored +production_mode: hand-written +found_at: "ACKNOWLEDGEMENTS.md" +remedy: "When an idea graduates from a verdict into an intent, carry the verdict's public primary sources and their licence findings into the intent, and have the change that ships the intent add the ACKNOWLEDGEMENTS.md entry naming only public sources; adopt the idea, never text or code whose licence is absent or does not allow it, and make record-lint or the intent close name a shipped intent whose recorded sources have no acknowledgement." +--- + +When an idea is adopted, nothing carries the public primary sources it rests on into ACKNOWLEDGEMENTS.md. AGENTS.md asks for an entry in the same change that lands an adopted pattern, but ideas now arrive through ideate verdicts kept private in the home store (iss-2610090740139804), so the sources and the licence findings the research leg checked stay in a file the adopting change never reads, and a private source must never be named at all. diff --git a/.abcd/work/issues/open/iss-2610090744063842-adr-0007-and-acknowledgements-md-link-the-prd-template-s.md b/.abcd/work/issues/open/iss-2610090744063842-adr-0007-and-acknowledgements-md-link-the-prd-template-s.md new file mode 100644 index 000000000..fb9692417 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090744063842-adr-0007-and-acknowledgements-md-link-the-prd-template-s.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090744063842" +slug: "adr-0007-and-acknowledgements-md-link-the-prd-template-s" +severity: "nitpick" +category: "drift" +source: "agent-finding" +found_during: "2026-10-09 ideate research leg" +origin: researcher-authored +production_mode: hand-written +found_at: ".abcd/development/decisions/adrs/0007-grill-skill-and-glossary.md" +remedy: "Repoint the credit to the commit that last held to-prd (a permalink to that SKILL.md at its last commit) so the attribution still resolves, in the ADR and in itd-27 alike." +--- + +ADR 0007 and the superseded itd-27 link the PRD template's source at mattpocock/skills skills/engineering/to-prd/SKILL.md, but that skill was merged into to-spec and to-tickets upstream on 2026-07-08, so the link now answers 404 and no longer shows the source it credits. diff --git a/.abcd/work/issues/open/iss-2610090744073409-the-concurrency-rule-in-abcd-rules-json-and-its-agents-md.md b/.abcd/work/issues/open/iss-2610090744073409-the-concurrency-rule-in-abcd-rules-json-and-its-agents-md.md new file mode 100644 index 000000000..a6c617dbb --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090744073409-the-concurrency-rule-in-abcd-rules-json-and-its-agents-md.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090744073409" +slug: "the-concurrency-rule-in-abcd-rules-json-and-its-agents-md" +severity: "nitpick" +category: "drift" +source: "agent-finding" +found_during: "2026-10-09 ideate research leg" +origin: researcher-authored +production_mode: hand-written +found_at: ".abcd/rules.json" +remedy: "Change 'in drafts/' to 'planned' in the CONCURRENCY rule text and anywhere else that repeats it, and let the rule say the store has no verbs yet because the planned intent has not shipped." +--- + +The CONCURRENCY rule in .abcd/rules.json (and its AGENTS.md short form, if it repeats it) says the worktree store's own verbs are itd-2609091014076309, in drafts/, but that intent is in planned/; its link already points at planned/, so the prose contradicts the link beside it. diff --git a/.abcd/work/issues/open/iss-2610090744325698-the-product-thinker-s-2026-10-07-lesson-that-a-user-visible.md b/.abcd/work/issues/open/iss-2610090744325698-the-product-thinker-s-2026-10-07-lesson-that-a-user-visible.md new file mode 100644 index 000000000..144ca8ed5 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090744325698-the-product-thinker-s-2026-10-07-lesson-that-a-user-visible.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090744325698" +slug: "the-product-thinker-s-2026-10-07-lesson-that-a-user-visible" +severity: "minor" +category: "process" +source: "agent-finding" +found_during: "2026-10-09 ideate research leg" +origin: researcher-authored +production_mode: hand-written +found_at: "AGENTS.md" +remedy: "Graduate the lesson into the record, per the memory-graduates-to-record principle: a line in AGENTS.md's definition of done and a rule in a rules.json domain that recalls on fix and release prompts, saying a user-visible host fix lands only with a live before-and-after capture of the person's surface, cited in the pull request." +--- + +The product thinker's 2026-10-07 lesson, that a user-visible host fix is proven by a capture of a live session before and after the change and never by script output alone (v0.13.2's hook fix passed its tests while every live session still showed the error), is held only in one agent's local memory. No committed rule, principle or definition of done carries it; its only committed trace is the measurement inside iss-2610070637562567, so another session or contributor never receives it. diff --git a/.abcd/work/issues/open/iss-2610090747102654-abcd-has-a-place-for-a-short-note-of-where-the-work-stands.md b/.abcd/work/issues/open/iss-2610090747102654-abcd-has-a-place-for-a-short-note-of-where-the-work-stands.md new file mode 100644 index 000000000..047c335b7 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090747102654-abcd-has-a-place-for-a-short-note-of-where-the-work-stands.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090747102654" +slug: "abcd-has-a-place-for-a-short-note-of-where-the-work-stands" +severity: "minor" +category: "ux" +source: "agent-finding" +found_during: "2026-10-09 ideate research leg" +origin: researcher-authored +production_mode: hand-written +found_at: "AGENTS.md" +remedy: "Give the handover note a writer and a freshness check: a verb that writes a dated where-we-are entry (appending, never replacing unread), offered at Stop and PreCompact as draft itd-2610050548126044 plans, with the session-start greeting naming the note's age; keep it in the local tier or a home store keyed on the root commit so removing a worktree does not lose it, never committed." +--- + +abcd has a place for a short note of where the work stands now, the local-tier handover file .abcd/.work.local/NEXT.md, but nothing keeps it: no command writes it, nothing says when it is stale, the PreCompact and Stop hooks write nothing durable to it, a session can overwrite it unread, and it is lost when the worktree holding it is removed. A short note of where the work stands, rewritten every session, is the one thing an outside agent-memory pattern adds over abcd's brief; abcd keeps it out of the repository on purpose, but leaves it unmaintained. diff --git a/.abcd/work/issues/open/iss-2610090748299348-a-public-source-behind-an-idea-is-named-in-the-repository.md b/.abcd/work/issues/open/iss-2610090748299348-a-public-source-behind-an-idea-is-named-in-the-repository.md new file mode 100644 index 000000000..8375142ed --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090748299348-a-public-source-behind-an-idea-is-named-in-the-repository.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090748299348" +slug: "a-public-source-behind-an-idea-is-named-in-the-repository" +severity: "minor" +category: "process" +source: "user-observation" +found_during: "2026-10-09 product thinker capture" +origin: researcher-authored +production_mode: hand-written +found_at: "commands/ideate.md" +remedy: "Tie source naming to adoption: a killed or abandoned verdict stays in the home store with its sources and never moves to the repository; publishing a verdict and the ACKNOWLEDGEMENTS.md entry happen only for an accepted idea (iss-2610090742488191), and the publish step refuses a verdict whose outcome is killed." +--- + +A public source behind an idea is named in the repository only once the idea is accepted. An idea that is rejected, killed or abandoned names none of its sources anywhere public (no record, research note, decision line, commit or pull request), only in its private verdict; nothing enforces this today, and ideate record currently writes every verdict's sources into the committed research notes. From e6398ef0f28f82f02551ab451a9fb6e060db9873 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:24:04 +0100 Subject: [PATCH 2/7] chore: capture the status board's blank building rows for issue-keyed lanes Refs: iss-2610090824041378 Assisted-by: Claude:claude-opus-5-5 --- ...oard-s-now-list-shows-a-run-s-lanes-with-an.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610090824041378-the-status-board-s-now-list-shows-a-run-s-lanes-with-an.md diff --git a/.abcd/work/issues/open/iss-2610090824041378-the-status-board-s-now-list-shows-a-run-s-lanes-with-an.md b/.abcd/work/issues/open/iss-2610090824041378-the-status-board-s-now-list-shows-a-run-s-lanes-with-an.md new file mode 100644 index 000000000..b8928e801 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090824041378-the-status-board-s-now-list-shows-a-run-s-lanes-with-an.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090824041378" +slug: "the-status-board-s-now-list-shows-a-run-s-lanes-with-an" +severity: "minor" +category: "bug" +source: "user-observation" +found_during: "2026-10-09 /abcd status board" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/statusblock/statusblock.go" +remedy: "Look an issue-keyed run up in the issue ledger and render its title (marking it as an issue), and leave a lane out of Now once its pull request has merged or its branch is gone (or have the landing record the run as done when the merge is seen); test both with an issue-keyed run fixture, one in flight and one merged, watched fail first." +--- + +The status board's Now list shows a run's lanes with an empty title when the run was started for an issue rather than an intent: statusblock.go builds each started run's row by looking the id up in the intent corpus only, so an issue-keyed lane (every drain lane, every 'abcd build ' run) renders as a bare 'building:' line. It also counts a lane as building after its pull request merged: on 2026-10-09 the product thinker's view showed 24 blank 'building:' rows, the overnight drain's lanes, most merged days earlier but still recorded at the land stage because nothing moves a run on once its pull request lands. From b4463f7d5a312d3d0ecb6309878ca2c62bb2d32c Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:46:13 +0100 Subject: [PATCH 3/7] chore: file the people's-and-agents' verbs draft and its verb audit The product thinker's proposal, routed as confirmed: a draft intent for a person's /abcd: list showing only the commands people use, an audit of the whole verb set feeding its spec, and a decision record held unless the audit finds a verb whose class decides who may run it. The routing is graded in the decomposition calibration note. Refs: iss-2610090831317531 Refs: itd-2610090831227812, itd-146 Assisted-by: Claude:claude-opus-5-5 --- ...-abcd-sees-only-the-commands-people-use.md | 44 +++++++++++++++++++ .../2026-08-15-decomposition-calibration.md | 11 +++++ ...er-been-reviewed-as-a-set-nothing-lists.md | 15 +++++++ 3 files changed, 70 insertions(+) create mode 100644 .abcd/development/intents/drafts/itd-2610090831227812-a-person-who-types-abcd-sees-only-the-commands-people-use.md create mode 100644 .abcd/work/issues/open/iss-2610090831317531-abcd-s-verbs-have-never-been-reviewed-as-a-set-nothing-lists.md diff --git a/.abcd/development/intents/drafts/itd-2610090831227812-a-person-who-types-abcd-sees-only-the-commands-people-use.md b/.abcd/development/intents/drafts/itd-2610090831227812-a-person-who-types-abcd-sees-only-the-commands-people-use.md new file mode 100644 index 000000000..22a832bf6 --- /dev/null +++ b/.abcd/development/intents/drafts/itd-2610090831227812-a-person-who-types-abcd-sees-only-the-commands-people-use.md @@ -0,0 +1,44 @@ +--- +id: itd-2610090831227812 +slug: a-person-who-types-abcd-sees-only-the-commands-people-use +spec_id: null +kind: null +suggested_kind: null +reclassification_history: [] +builds_on: [] +severity: minor +origin: researcher-authored +production_mode: hand-written +--- + +# A person's /abcd: list shows only the commands people use + +## Press Release + +> A person who types /abcd: sees only the commands people use. The commands agents run, such as the ones that apply a host's verdict or step a build loop, sit under one agent namespace or off the person's list, so the list a person scans reads as their own toolbox and an agent still finds every verb it needs. The command-line help already splits the two into For people and For agents and hosts; the plugin's command list now follows the same split. + +## Why This Matters + +> _Why this matters to the user — replace before planning._ + +## Mechanism + +> _Prompted (the claim-recording gradient): why the authors expect this to work, as a falsifiable "we expect X because Y" — not the outcome restated. Replace this line with the claim, or with the exact token `None stated.` alone on its line to record the claim as considered and declined._ + +## Scope Conditions + +> _Required (the claim-recording gradient): the population, platform, scale, or assumptions this claim holds under, one per top-level bullet — `abcd intent plan` stamps each with a persistent identity. Replace this line with those bullets, or with the exact token `None stated.` alone on its line._ + +## Acceptance Criteria + +> _Required (the itd-1 discipline): add at least one Given-When-Then bullet describing the verifiable bar for "shipped" before this draft can be planned._ + +## Open Questions + +- Does an agent verb leave the /abcd: list altogether, or move under one agent command page? The boundary that every verb is reachable from both the CLI and the plugin surface (AGENTS.md, Boundaries) is flagged as a possible reversal here, for the product thinker to confirm or keep. +- Which verbs are a person's and which an agent's is settled by the verb audit, iss-2610090831317531, before planning. +- Would a later recommendation of which verb fits a situation belong to this intent, or to a separate one? + +## Audit Notes + +_Empty. Populated by intent-auditor when intent moves to shipped/._ diff --git a/.abcd/development/research/notes/2026-08-15-decomposition-calibration.md b/.abcd/development/research/notes/2026-08-15-decomposition-calibration.md index 8e01ee7c0..fbc1f8843 100644 --- a/.abcd/development/research/notes/2026-08-15-decomposition-calibration.md +++ b/.abcd/development/research/notes/2026-08-15-decomposition-calibration.md @@ -2332,3 +2332,14 @@ Verdict: FILE-AS-IS, decided by the facilitator on the product thinker's "Clear? Verdict: FILE-AS-IS. The facilitator proposed one goal or two (review/prioritise, and the picture); the product thinker chose one. The links and the stance's routing were not put to a question, so those rows are graded as unconfirmed. Follow-up the same day on the revisit mark (itd-2610070549060530): the product thinker answered its six open questions, and ruled that the mark also raises an idea in the build pick, so the row flagged as a possible change to itd-2609211116005482 is now confirmed as an intended change, to be specified at planning. + +## 2026-10-09: people's and agents' verbs kept apart (technical facilitator, routing confirmed) + +| part | type | home | +|---|---|---| +| a person's /abcd: list shows only the commands people use; agent commands move under one agent namespace or off the list | capability | intent itd-2610090831227812 (draft); refines itd-146, which split the CLI help | +| a review of the whole verb set: keep, merge, rename or retire each, and class it as a person's or an agent's | audit | issue iss-2610090831317531, feeding the intent's spec | +| a rule for which class a verb belongs to | trust rule | held: a decision record only if the audit finds a verb whose class decides who may run it | +| "every verb is reachable from both the CLI and the plugin surface" | standing boundary, flagged as a possible reversal for confirmation | the intent's Open Questions, not decided here | + +Verdict: SPLIT. The facilitator proposed the three-way routing and confirmed it as proposed ("Split as proposed"). The reversal flag was carried in the question, not put to a separate one, so that row is graded unconfirmed. diff --git a/.abcd/work/issues/open/iss-2610090831317531-abcd-s-verbs-have-never-been-reviewed-as-a-set-nothing-lists.md b/.abcd/work/issues/open/iss-2610090831317531-abcd-s-verbs-have-never-been-reviewed-as-a-set-nothing-lists.md new file mode 100644 index 000000000..1505ed797 --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090831317531-abcd-s-verbs-have-never-been-reviewed-as-a-set-nothing-lists.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090831317531" +slug: "abcd-s-verbs-have-never-been-reviewed-as-a-set-nothing-lists" +severity: "minor" +category: "ux" +source: "user-observation" +found_during: "2026-10-09 product thinker intent on human and agent verbs" +origin: researcher-authored +production_mode: hand-written +found_at: "commands" +remedy: "Audit every verb and command page into one table (verb, page, person or agent, keep/merge/rename/retire, and why), written as the first section of itd-2610090831227812's spec at planning, and capture a decision record only where a verb's class decides who may run it." +--- + +abcd's verbs have never been reviewed as a set: nothing lists every CLI verb and /abcd: command page with whether people or agents mainly use it, and whether it should be kept, merged, renamed or retired. Draft intent itd-2610090831227812 (a person's /abcd: list shows only the commands people use) needs that classification before its spec can say which pages move. From 35ba49e9e6913bf24d4760851d4b46b8388d4596 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:41:35 +0100 Subject: [PATCH 4/7] chore: capture that the dashboard never starts when its own IPv6 is unreachable Refs: iss-2610090841317423 Assisted-by: Claude:claude-opus-5-5 --- ...start-never-starts-on-a-mac-whose-tailscale.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610090841317423-abcd-dashboard-start-never-starts-on-a-mac-whose-tailscale.md diff --git a/.abcd/work/issues/open/iss-2610090841317423-abcd-dashboard-start-never-starts-on-a-mac-whose-tailscale.md b/.abcd/work/issues/open/iss-2610090841317423-abcd-dashboard-start-never-starts-on-a-mac-whose-tailscale.md new file mode 100644 index 000000000..538a1d24a --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090841317423-abcd-dashboard-start-never-starts-on-a-mac-whose-tailscale.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090841317423" +slug: "abcd-dashboard-start-never-starts-on-a-mac-whose-tailscale" +severity: "major" +category: "bug" +source: "user-observation" +found_during: "2026-10-09 product thinker could not open the dashboard" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/surface/dashboard/gate.go" +remedy: "Treat a listening address whose self-check cannot connect as one to drop, not a reason to stop: keep the addresses that answered (refusing to start only when none does), name the dropped one and why in the start line, and test it with a listener whose IPv6 self-connect fails while IPv4 answers, watched fail first." +--- + +abcd dashboard start never starts on a Mac whose Tailscale cannot reach its own IPv6 address. Start listens on both of the computer's Tailscale addresses and requires a self-check fetch to answer on every one; on 2026-10-09, with Tailscale 1.102.4 on macOS, a TCP connection to the computer's own Tailscale IPv4 address succeeded while one to its own Tailscale IPv6 address timed out, so the IPv6 self-check failed and start stopped the dashboard with 'could not be reached from this computer ... check that nothing on this computer blocks the port' (exit 1). Nothing blocks the port; the dashboard is unusable from every device. From 8e9fc8d33c4bb8e404f03d7ac0d19ff8bf2ef434 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:42:11 +0100 Subject: [PATCH 5/7] chore: capture WireGuard as an opt-in alternative to Tailscale for the dashboard Refs: iss-2610090841586205 Assisted-by: Claude:claude-opus-5-5 --- ...ashboard-reaches-other-devices-only-through.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610090841586205-abcd-s-dashboard-reaches-other-devices-only-through.md diff --git a/.abcd/work/issues/open/iss-2610090841586205-abcd-s-dashboard-reaches-other-devices-only-through.md b/.abcd/work/issues/open/iss-2610090841586205-abcd-s-dashboard-reaches-other-devices-only-through.md new file mode 100644 index 000000000..8f5a5b18e --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090841586205-abcd-s-dashboard-reaches-other-devices-only-through.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090841586205" +slug: "abcd-s-dashboard-reaches-other-devices-only-through" +severity: "minor" +category: "future-work-seed" +source: "user-observation" +found_during: "2026-10-09 product thinker capture after the dashboard test" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/surface/dashboard/gate.go" +remedy: "Run a primary-source check first (WireGuard's protocol and wireguard-go's licence and embedding, how a peer's public key can stand for a named device, and key distribution), then offer WireGuard as an opt-in transport the person picks at dashboard setup, admitting a connection only from a peer key the person paired, with Tailscale staying the default; record the identity rule as an amendment to the dashboard's network decision." +--- + +abcd's dashboard reaches other devices only through Tailscale: it listens on the computer's Tailscale addresses and admits a device only when Tailscale's own lookup names it. The product thinker wants WireGuard as a built-in alternative the person may choose instead, so the dashboard does not depend on one vendor's account and coordination service. A plain WireGuard tunnel has no lookup that names a person's device, so the alternative needs its own device identity, such as each peer's public key mapped to a named device. From 78bf014f27749236e0bda970bfb9570394206075 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:49:11 +0100 Subject: [PATCH 6/7] chore: list the verb-split draft in the brief's later-intents index Refs: itd-2610090831227812 Assisted-by: Claude:claude-opus-5-5 --- .abcd/development/brief/06-delivery/03-out-of-scope.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.abcd/development/brief/06-delivery/03-out-of-scope.md b/.abcd/development/brief/06-delivery/03-out-of-scope.md index 1c1e4a996..668f3fd8e 100644 --- a/.abcd/development/brief/06-delivery/03-out-of-scope.md +++ b/.abcd/development/brief/06-delivery/03-out-of-scope.md @@ -142,6 +142,7 @@ gate. That is what keeps "not hand-counted" true after the day it was written. - `itd-2610070550516046` — On the dashboard, a product thinker sees the brief and their ideas together, and puts the ideas in order (draft) - `itd-2610071545369520` — A person confirms the assistant's verdict on each warned banned-name line instead of judging it alone (draft) - `itd-2610071545380041` — Work about abcd itself goes to abcd as a report, never into a managed repository's own plans (draft) +- `itd-2610090831227812` — A person's /abcd: list shows only the commands people use (draft) **Later-phase items with no intent id.** These four were written into the brief From 1e2b0a1302948d3be7ca6a7120b9cb635e22b2e5 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:49:37 +0100 Subject: [PATCH 7/7] chore: capture that a mixed Refs: line silently fails the resolution gate Refs: iss-2610090849280432 Assisted-by: Claude:claude-opus-5-5 --- ...ution-gate-rs004-does-not-count-a-refs-line.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .abcd/work/issues/open/iss-2610090849280432-the-issue-resolution-gate-rs004-does-not-count-a-refs-line.md diff --git a/.abcd/work/issues/open/iss-2610090849280432-the-issue-resolution-gate-rs004-does-not-count-a-refs-line.md b/.abcd/work/issues/open/iss-2610090849280432-the-issue-resolution-gate-rs004-does-not-count-a-refs-line.md new file mode 100644 index 000000000..474825fdd --- /dev/null +++ b/.abcd/work/issues/open/iss-2610090849280432-the-issue-resolution-gate-rs004-does-not-count-a-refs-line.md @@ -0,0 +1,15 @@ +--- +schema_version: 1 +id: "iss-2610090849280432" +slug: "the-issue-resolution-gate-rs004-does-not-count-a-refs-line" +severity: "minor" +category: "ux" +source: "agent-finding" +found_during: "2026-10-09 preflight of the records branch" +origin: researcher-authored +production_mode: hand-written +found_at: "scripts/check-issue-resolution.sh" +remedy: "Either read every iss- id on a Refs: or Resolves: line that lists record ids of any family (itd-, adr-, spc-, iss-) as declared, or keep the rule and have RS004 name the near-miss: 'a Refs: line naming iss-N beside an id of another family is not a declaration; put the issue ids on a Refs: line of their own'; add a case for the mixed line, watched fail first." +--- + +The issue-resolution gate (RS004) does not count a Refs: line that names an issue alongside an intent, such as 'Refs: itd-2610090831227812, iss-2610090831317531, itd-146': DECLARE_RE in scripts/check-issue-resolution.sh accepts a line listing iss- ids and nothing else, so the issue on a mixed line reads as an undeclared mention. The refusal then asks for exactly one declaration line, which the commit already appears to carry, and never says the line was passed over because it also names an intent, so the author cannot tell what is wrong. Found on 2026-10-09 when make preflight refused a records commit.