Skip to content

docs(adr): repair 0004 paths, record the RUNNER_BUSY asymmetry, settle 0026 status - #2909

Merged
thymikee merged 2 commits into
mainfrom
docs/adr-reference-drift
Sep 24, 2026
Merged

thymikee merged 2 commits into
mainfrom
docs/adr-reference-drift

Conversation

@thymikee

@thymikee thymikee commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

Summary

ADR prose only, 4 files.

Left to a maintainer:

  1. Accepted is my reading of "status matches reality". To keep 0026 Proposed until Make snapshot membership loss attributable: scroll clip authority + ejection dispositions #2754 closes: Proposed (2026-09-22). Ownership shipped in #2758/#2759; the ejection-disposition contract remains open in #2754.
  2. "No ADR cites a nonexistent path" is not met here: ADR 0023 still cites src/snapshot/ios-snapshot-runtime.ts, and 0003/0008/0012/0018–0020 carry more. Auditing those is separate work.

Closes #2892.

Validation

Tested SHA 79157ed94e. pnpm check:affected --run: no local checks selected, 4 docs files ignored, all runnable checks passed. pnpm check:command-docs: 12 passed. Docs-only — no code, tests, fixtures, registries or gates touched, so device/runtime validation does not apply; no checker added. A hostile review pass fixed the gate-scope and unshipped-rule overclaims it found, and proposed editing ADR 0023, declined above. docs/adr/0014 (#2899's file) is untouched.

…atus

ADR 0004 cited `src/snapshot/**`, retired by the capture-kit move (#2385).
The ownership and boundary sentences now point at the `snapshot-policy`
declaration in scripts/layering/architecture-ownership.ts, and the three
policy bullets name the paths that exist.

ADR 0005 documented runner occupancy and drain but never recorded the
shipped asymmetry: a read-only request waits out `RUNNER_BUSY` and is
resent, while a mutating one is attempted once with nothing replayed. Both
decisions are keyed on the daemon-side `RUNNER_COMMAND_TRAITS` read-only
trait, not on a runner-side classification. The close-and-pooling sentence
keeps its scope so it no longer reads as contradicting that policy.

ADR 0026 was still `Proposed` after #2758 and #2759 shipped its ownership
decision. It is `Accepted`, with the two open #2754 steps named as open
work rather than as the decision.

Closes #2892
Recording ADR 0026 as Accepted made two unshipped rules read as current: the
"every removed source" row and the ejection ledger in Contracts. Both now name
#2754 step 5 as the open contract, and the `ScrollArea` passages record the
decision #2759 shipped instead of asking for one.

ADR 0004's boundary sentence said the gate covers the facet; it covers only the
roots `snapshot-policy` declares, so the overlay modules beside that tree are
now named as outside it. ADR 0005's keying sentence claimed the runner reports
nothing; it is the runner-side classification of the command that plays no part,
while the refusal code selects the budget.
@thymikee

Copy link
Copy Markdown
Member Author

Reviewed at 79157ed and it looks clean. CI is green, and the docs-only change touches nothing in the failing jobs' path.

Not blocking: ADR 0026 (lines 57-60 and 132-135) cites eligibility-parity.test.ts as pinning both the ScrollArea outcome and the label-less under-clip row, but that test only asserts the ScrollArea node is absent and its own comment at eligibility-parity.test.ts:135 says it pins survival only, not the under-clip; you can leave this as is or tighten the citation to "pins survival of each shape and the TS/Swift pair," and maybe follow up with a labels assertion on the label-less case plus a fix to that stale comment.

I did not check #2759's merge status or trace the ScrollArea/content-bearing claims through eligibility-parity.test.ts myself, so I'm taking the ADR's description of that test at face value from the PR body and issue context.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Sep 24, 2026
@thymikee
thymikee merged commit 8c61aea into main Sep 24, 2026
7 checks passed
@thymikee
thymikee deleted the docs/adr-reference-drift branch September 24, 2026 15:17
@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-24 15:18 UTC

@thymikee thymikee left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 79157ed. Docs-only pass. The capture-kit ownership and gate-scope checks are accurate against the current tree. One added sentence says the opposite of the code, and there are two adjacent docs fixes worth folding into the same ADR cleanup.

facet: nothing under `src/snapshot/` may import `src/daemon/`. It carries a positive control,
because a filter that stopped matching would look identical to a boundary being obeyed.
overlay for one of them covers, live in `packages/capture-kit/src/screenshot-overlay*.ts`. The
daemon keeps approved artifact and ref assembly only: ranking, projection to screenshot pixels,

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As written, the colon list reads as an appositive to what the daemon keeps, i.e. the daemon keeps ranking/projection/drawing/PNG IO. That is the inverse of the code and of the preceding sentence. Split the clauses: The daemon keeps approved artifact and ref assembly only. Ranking, projection to screenshot pixels, drawing, and PNG IO do not live here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(adr): ADR 0004 cites retired paths, ADR 0005 omits the RUNNER_BUSY asymmetry, ADR 0026 status undecided

1 participant