Skip to content

docs: decide the park path stays prose in ADR 0069 - #410

Merged
randomparity merged 8 commits into
mainfrom
feat/park-composer-decision-381
Sep 16, 2026
Merged

randomparity merged 8 commits into
mainfrom
feat/park-composer-decision-381

Conversation

@randomparity

@randomparity randomparity commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Adds ADR 0069, which decides whether $quest's park path gains a WORK:TRAJECTORY composer.

Verdict: the park path stays prose. No composer ships — not a sibling executable, not a shared
composition unit inside publish-handoff. Issue #381 names that outcome as a legitimate result, and
this is it.

What the record decides

It answers #381's four questions and, notably, concedes anatomy rule 2 rather than arguing it.
Issue #390's audit — all five hand-written blocks on one issue missing the closing sentinel, while
the one block a program emitted carried it — establishes that a model cannot reliably emit the
sentinel. A park composer would clear rule 2's performed inconsistently limb.

The decision rests on anatomy rule 1 instead: supporting files are the exception and must be
argued for, and that argument fails on its merits. Every hand-composed block already goes through
quest-log's annotation recipe, so a check placed there reaches the park path and every other
hand-written type at once. Issue #390 owns that recipe. A park composer would add an executable to
close on one call site a defect a shared-instruction change closes on all of them.

On the four questions: 0066's --kind rejection rests on reachability and does not foreclose
separate entry points (Q1); the absent-handshake requirement does not discriminate between composer
shapes, and prose is the one shape that does not satisfy it (Q2); the branch-state refusal would
have to be relaxed, which is a change to make if a composer is built, not a reason to build one
(Q3); the caller keeps the status: swap (Q4).

What it records against itself

  • Q2's by-construction requirement is declined, not met — recorded as the strongest argument
    against this verdict.
  • The park residual's ordinary case is worse than ADR 0066 described: quest-log's latest-complete
    recipe filters a sentinel-less note out and returns an earlier complete block as current — a
    wrong answer, not an absent one. The interrupted park is unbounded.
  • Extending rather than superseding 0066 leaves no forward pointer on it.

Scope

One new record, one light spec, and the mandatory version bump to 5.11.2. No index row —
docs/adr/README.md deliberately carries no table. ADR 0066 is byte-unchanged.

#383 and #385 close as not planned by their own terms on this verdict, and #380 stays open as
the residual's record until #390 lands. Both are the campaign orchestrator's actions, not this
PR's.

Closes #381

Review exit payloads

Deferrals: none. No deferred-tracked disposition was taken in any review run on this branch,
and no docs/debt/ record was written.

Rejected with evidence: none.

Follow-up candidates

Title File evidence Trigger Recommendation Source pass
Reserved version could conflict with a sibling campaign row .claude-plugin/plugin.json reproduced Owned by campaign merge ordering, not by this branch. Resolved before delivery: the sibling landed first at the lower version, so this row's reserved value is correct and nothing needs filing. branch review, single pass

Remaining-findings summary from the budget stop

The $trial-loop run recorded in exit: blocked-at-budget stopped with one unresolved blocking
finding: the rule-2 re-argument conceded that the defect tracks hand composition rather than any one
annotation type — which clears rule 2 for a park composer — and then denied the bar with a
retrospective-coverage test rule 2 does not state. It was neither rejectable nor deferrable, being
the record's central argument. The operator authorized a scoped continuation; the retrospective
test was deleted and the decision re-grounded on anatomy rule 1. A later confirming pass found the
replacement ground cited a CLAUDE.md section absent from this repository, which was corrected to
anatomy rule 1 quoted from CLAUDE.md.

Outstanding notes at the exit

  • The record declines Decide whether the park path gets a composer, in a record superseding or extending ADR 0066 #381's by-construction requirement for question 2 rather than meeting it.
    Recorded in the record's Consequences as the strongest argument against its own verdict.
  • The final citation swap is not covered by a review pass. It is a change of cited authority
    with the substantive reasoning unchanged, quoted verbatim from the repository's CLAUDE.md and
    checked against source on both sides, with the record, public-safety and version gates re-run
    over it and a sweep for sibling sentences leaning on the withdrawn ground.
  • The design set measures 201 lines against a fixed denominator of 100, a 2.01x proportionality
    note. Cutting stopped there deliberately: further reduction would have removed load-bearing text
    to satisfy a number.

Review arms that ran: two design-artifact passes (operator-cold-resume, anatomy-rules); one
routed single-pass branch review (downstream-reader) that escalated on three in-surface blocking
findings; a $trial-loop run of two iterations (anatomy-rules) that stopped at its budget; and one
confirming pass after the authorized continuation. Cumulative: 6 rounds under one charter. A
$detect-evil pass did not run — the diff trips no security trigger.

Issue #381 asks whether $quest's park path gains a WORK:TRAJECTORY composer.
ADR 0069 extends ADR 0066 and answers no, re-arguing anatomy rule 2 against
issue #390's observed-failure evidence rather than the four holds 0066 stood
on: the defect #390 measures is hand composition as a class, and a park
composer closes it on one annotation surface while leaving the four others,
including the one #390 records a consequence for.

Closes #381
Two independent design passes (operator-cold-resume, anatomy-rules) found four
blocking factual defects across the set.

The rule-2 re-argument claimed a park composer covers one of five surfaces
#390 counted. #390 counts five hand-written blocks on one issue, not five
annotation types, and its WORK:TRAJECTORY was a hand-off — a park composer
would have corrected none of them. It also records those hand-off blocks as
hand-written after publish-handoff shipped, which the record now weighs: a
composer that exists does not stop hand composition.

Question 2 rested on 'the handshake bytes are not in the executable', a test
that does not discriminate between the shapes; the elimination moves onto
question 1's verified thin-remainder ground. Question 4 claimed a partial
state prose does not have — skills/quest/SKILL.md shows prose has exactly it.
Consequences now separate the ordinary park, which the status: label bounds,
from the interrupted park, which it does not.

Adds the park-side validator to Considered & rejected, states the missing
forward pointer on 0066, and ties the residual's closure to which of #390's
two fix directions lands.
The scope audit found the record described a conditional reopening trigger
with no confirmed owner, the shape its own rejected-alternatives section
condemns. Names #380 as the residual's record until #390 lands, and resolves
which reading of #390 governs: its Fix directions offer either or both, its
Acceptance requires both including write-time detection, so the trigger fires
only if #390 ships short of its own acceptance.
The escalated review loop refuted two load-bearing grounds.

The paragraph calling itself 'the second fact that decides it' attributed to
issue #390 a statement #390 does not contain: it never mentions
publish-handoff and never dates the audited blocks relative to it. Two
independent passes and a direct read of the issue body agree. Deleted rather
than re-grounded; the rule-2 argument stands without it.

Question 1 claimed a shared unit would share 'two constants and a readback'.
publish-handoff's own line count refutes that - resolve_destination and
resolve_head are 132 of 646 lines, and the notes validation, ADR 0068's
bounded network calls, the public-safety scan and the stored-body assertions
are all park-applicable. Question 1 now says the shared unit is the right
composer shape, which concentrates the decision on rule 2 where it belongs.

Question 2 assessed only the shapes the record rejects. It now states plainly
that prose is the one shape not satisfying #381's by-construction
requirement, and Consequences records that gap as the strongest argument
against the verdict. Question 3 loses the 'markers and a readback' framing
that the question 1 correction contradicted, and the Status-restriction
consequence is attributed to the ADR convention rather than to a gate rule
check-records.sh does not impose.
…cision-381

# Conflicts:
#	.claude-plugin/plugin.json
Operator-authorized round 6, scoped to four content items.

The rule-2 re-argument conceded: a park composer would clear the performed
inconsistently limb, and the retrospective-coverage test that denied it is
deleted rather than reworded - a proposed script is not measured by how many
past instances it would have caught. The decision now rests on CLAUDE.md's
Cut before adding ladder plus issue #390's ownership of quest-log's shared
annotation recipe, which reaches every hand-written type at once. The verdict
is unchanged: the park path stays prose.

The sibling-executable bullet is labelled verified:, so its park-applicable
line count now shows the subtraction - 646 minus 132 is 514, replacing an
unsourced approximation.

The ordinary-park residual was understated in both the record and the spec's
failure model. quest-log's latest-complete recipe selects on both markers and
takes last, so a sentinel-less park note is filtered out and an earlier
complete block is returned as current. That is a wrong answer, not an absent
one.

Question 1 restates ADR 0066's --kind rejection on its actual reachability
ground rather than as call-site confusion, and explains why separate entry
points meet that ground instead of dodging it; the 0066's-judgments paragraph
is corrected to match.

Also drops a Context sentence claiming the decision turns on the class
distinction, which the reframe makes false.
The confirming pass found the shared-composition-unit bullet still said the
shape was rejected because rule 2 does not warrant a composer, which the
Decision now contradicts by conceding rule 2 is met. It was left as unchanged
context when the Decision was rewritten. The bullet now points at the ground
the Decision actually states.

The sibling-executable bullet's 514 is arithmetically right but was glossed as
park-applicable surface; the compose step and its handshake assertions sit
inside it and question 1 excludes them. Says so.
The confirming pass found the decisive ground cited CLAUDE.md's 'Cut before
adding', a section this repository's CLAUDE.md does not contain - rg over the
tree matched only the record's own line. The phrase came from a private global
instruction file, so a public append-only record was about to carry an
unresolvable citation pointing at private configuration.

Cites anatomy rule 1 instead, quoted from CLAUDE.md:13: supporting files are
the exception and must be argued for. A park composer is such a file and the
argument fails because a change to the shared hand-write path reaches every
annotation type while a park-only composer reaches one. Substantive reasoning
unchanged; only the cited authority moves.

Also reconciles the consequence that called rules 1 through 3 untouched, which
no longer holds now that rule 1 is the deciding ground.
@randomparity

Copy link
Copy Markdown
Owner Author

verdict: needs-attention
exit: blocked-at-budget
findings: 4
iterations: 2
security: not triggered
delivered-head-sha: 28cca78

Forge whole-branch review

forge review: not required (cast mode implements one light-spec unit directly and runs no whole-branch reviewer)

Review exit payloads

Deferrals: none. No deferred-tracked disposition was taken in any review run on this branch,
and no docs/debt/ record was written.

Rejected with evidence: none.

Follow-up candidates

Title File evidence Trigger Recommendation Source pass
Reserved version could conflict with a sibling campaign row .claude-plugin/plugin.json reproduced Owned by campaign merge ordering, not by this branch. Resolved before delivery: the sibling landed first at the lower version, so this row's reserved value is correct and nothing needs filing. branch review, single pass

Remaining-findings summary from the budget stop

The $trial-loop run recorded in exit: blocked-at-budget stopped with one unresolved blocking
finding: the rule-2 re-argument conceded that the defect tracks hand composition rather than any one
annotation type — which clears rule 2 for a park composer — and then denied the bar with a
retrospective-coverage test rule 2 does not state. It was neither rejectable nor deferrable, being
the record's central argument. The operator authorized a scoped continuation; the retrospective
test was deleted and the decision re-grounded on anatomy rule 1. A later confirming pass found the
replacement ground cited a CLAUDE.md section absent from this repository, which was corrected to
anatomy rule 1 quoted from CLAUDE.md.

Outstanding notes at the exit

  • The record declines Decide whether the park path gets a composer, in a record superseding or extending ADR 0066 #381's by-construction requirement for question 2 rather than meeting it.
    Recorded in the record's Consequences as the strongest argument against its own verdict.
  • The final citation swap is not covered by a review pass. It is a change of cited authority
    with the substantive reasoning unchanged, quoted verbatim from the repository's CLAUDE.md and
    checked against source on both sides, with the record, public-safety and version gates re-run
    over it and a sweep for sibling sentences leaning on the withdrawn ground.
  • The design set measures 201 lines against a fixed denominator of 100, a 2.01x proportionality
    note. Cutting stopped there deliberately: further reduction would have removed load-bearing text
    to satisfy a number.

Review arms that ran: two design-artifact passes (operator-cold-resume, anatomy-rules); one
routed single-pass branch review (downstream-reader) that escalated on three in-surface blocking
findings; a $trial-loop run of two iterations (anatomy-rules) that stopped at its budget; and one
confirming pass after the authorized continuation. Cumulative: 6 rounds under one charter. A
$detect-evil pass did not run — the diff trips no security trigger.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Decide whether the park path gets a composer, in a record superseding or extending ADR 0066

1 participant