Repository navigation
docs(protocol): consolidate accepted change proposals into v0.2.1 and resolve KF-2 - #5
claude[bot] wants to merge 12 commits into
Conversation
…(CP-22) Section B of protocol/07 was a register of deferred technical decisions (repository topology, state serialisation, skill architecture, release workflow). Those are project decisions, not protocol semantics, and T-03 was the only reason the normative layer named a harness. This is known finding KF-2. The protocol is only edited through accepted change proposals, so the move goes through a new one, CP-22, recorded in docs/review/disposition.md as accepted on 2026-09-22 (owner decision to resolve KF-2 through a change proposal) and done for v0.2.1. Approach: - T-01..T-10 move verbatim into the new docs/technical-decisions.md, with a short note on what the register is and where it came from. - T-01 (project name) is marked decided on 2026-09-14 and points at examples/naming-decision.md. No other deferred decision is decided. - protocol/07 keeps a one-line pointer where section B was. Sections A, C, D and E keep their letters so existing anchors stay valid. - KF-2 is removed from docs/known-findings.md, and its entry is removed from tools/known-findings.txt, since the lint finding no longer exists. - Inbound references are updated: the CHANGELOG Unreleased entry, the identifier table in docs/provenance.md (T-nn gets its own row, CP-22 is added), research/hypothesis-register.md, the CAP-05 "derives from" line in capabilities/catalogue.md, and the README count of open findings reported by the lint (two to one). Alternatives considered: - Re-lettering C/D/E to B/C/D: rejected, it breaks inbound anchors and goes beyond the proposal's scope. - Deleting section B without a pointer: rejected, readers following older references to section B would find nothing. - Deciding other T-items in the same change: out of scope. Tested: - tools/boundary_lint.py exits 0 with one known finding (06:114, KF-1) and no new findings. The 07 finding is gone. - A scripted comparison shows the moved text is byte-identical to the old section B, except for the T-01 decided line. - protocol/07 has no "## B." heading and no T- entries. - A relative-link and anchor check over all tracked Markdown reports no broken links. Risks: the owner still has to confirm the CP-22 acceptance at merge. The heading of protocol/07 still reads v0.2 until the v0.2.1 consolidation updates it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
…one commitment ladder (CP-14, CP-02, CP-04) First commit of the v0.2.1 consolidation. It brings the protocol text in line with three change proposals that docs/review/disposition.md had accepted and deferred to v0.2.1. Each edit traces to the proposal text in docs/review/2026-09-adversarial-review-v0.2.md §5. CP-14, the configuration assumption. protocol/01 §1 gains a "Declared scope" subsection: one human, one AI, single-threaded discovery ending in a handoff to a separate implementation context. It lists the known untested extensions (teams, multiple stakeholders, discovery inside an existing system, continuous discovery->delivery) and says that evidence from multi-party settings is a transfer into this configuration, not direct support for it. CP-02, the mode names. This applies option (b) from the proposal: the names PROBLEM_EXPLORATION, SOLUTION_EXPLORATION and CONVERGENCE stay. 01 §5 and 02 §1 now say that a mode names the dominant learning objective of the moment, never a phase, and that switches are expected many times per session. Option (a) would have renamed the modes to EXPAND/CONVERGE with a focus attribute. It was rejected because 02, the capability catalogue and the evidence cases already use the current names, and the proposal itself names (b) as the low-cost option. CP-04, the tentativeness devices. 01 §3 now calls Progressive Commitment the protocol's one tentativeness ladder, with a typed instantiation for each kind of object. It also adds the ladder's one presentation rule: render status honestly, so exploratory structure must not carry convergence rhetoric. §6 is marked as guidance under that rule rather than a separate device, and it keeps its exploration/convergence distinction, as the proposal requires. 02 §7 says its decision and shared-language dimensions are the state encoding of the same ladder. The catalogue's "Mode tracking" absence note no longer points to an open CP-02. The three disposition rows now read "done in v0.2.1" and name the section each change landed in. The headings still read v0.2; a later commit in this consolidation changes the version. Tested: the boundary lint exits 0 (1 known, 0 new). Risk: the owner still has to confirm the option (b) reading of CP-02 at merge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
…and return leg (CP-01, CP-16, CP-20) CP-01 was accepted after review, but the protocol text was left for v0.2.1: convergence could still be declared on a model nobody had tried to break. protocol/01 §13 now lists that as a convergence condition: the current model has survived at least one deliberate attempt to break it, by a party or context independent of the pair that built it. Three related gaps in the same mechanism are closed alongside it: - Review typology (CP-01): exploration, adversarial and verification review, and spike, each answering a different question, so a review can say which kind it is. §15 now states that it is the release instance of the §13 mechanism, not a separate one. - When to review (CP-20): review when the model is coherent, concrete enough to attack and still cheap to change. The open question on review timing, dropped when v0.2 moved the trigger to release, is reinstated as protocol/07 P-15. - Closing the review loop (CP-16): fix only the named blockers, keep a resolution log, run a narrow verification review of those blockers only, and end with a ready or not-ready verdict. A verification pass must not reopen the product. The README drops its "protocol text follows in v0.2.1" note on challenge before convergence. CAP-10 now derives from CP-01, CP-16, CP-20 and protocol §13. docs/review/disposition.md records CP-01 as done in v0.2.1, and the CP-16..CP-21 table gains Disposition and Where columns: the owner's acceptance of 2026-09-22 for all six, and done in v0.2.1 for CP-16 and CP-20. The item's seed named "CP-10 (challenge before convergence)"; CP-10 is the already-done Case 01 disposition table, so the seed is read as CP-01's content. Alternative considered: a new top-level section for the typology. Rejected because it would renumber §14 and §15 and break inbound references; subsections of §13 keep the numbering stable. Tested: tools/boundary_lint.py exits 0 (1 known, 0 new). Risks: the owner confirms the recorded acceptances of CP-16..CP-21 at merge. The "None applied" sentence under the CP-16..CP-21 table is now stale and is updated in a later commit once all six are in. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
…lassification (CP-17, CP-19, CP-21) Applies three change proposals the owner accepted on 2026-09-22, as recorded in docs/review/disposition.md. CP-19, §11 "Reuse check before architecture": the Analogy Boundary Check covers borrowed ideas, but nothing covered borrowed components. The new gate asks, at the point of decision, whether the critical part already exists externally and actually works, and says to spike before designing around it when the answer is uncertain. §14's external-contract readiness check follows it but does not replace it. CP-21, §12 "Counterexamples": each counterexample is classified as local (the model survives with a bounded fix) or structural (frame, boundaries or core concepts change). Counterexample work is saturated when new counterexamples cause mostly local changes; a structural one after apparent saturation reopens convergence. CP-17, §13 "Stop signal": five in-session symptoms of a discovery that keeps running without producing anything (hypothetical future features, options only decidable in code, settled decisions restated, artifacts re-sorted, no new evidence or decisions), and the decision to take when they dominate: converge, hand off with the open points deferred, or name the uncertainty that justifies continuing. 05's No-New-Evidence Reopenings measures the same failure after the fact, too late to act on. All three are subsections, so section numbers and inbound references stay stable. The disposition rows for CP-17, CP-19 and CP-21 now record them as done in v0.2.1, with the section. Tested: boundary lint exits 0 (1 known, 0 new); wording traced to the proposal texts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
…-16 (CP-18) Change proposal CP-18 (accepted by the owner on 2026-09-22) generalizes the information-loss gate beyond terminology. Until now the protocol only protected source expressions from being overwritten (04 §4). Case 01 showed the same loss happens whenever source-grounded information is normalized in any other way, and that the general form carries over to any system that ingests and transforms external information. Protocol text: - protocol/01 §9 gains "Information-loss check before normalization". Before source-grounded information is irreversibly normalized (merged, summarised, mapped onto a schema, renamed or discarded), record what is discarded and what reconstructing it would cost. When the cost is high and the information may still matter, keep a source reference instead. - protocol/04 §4 now says it is the terminology instance of that rule. The proposal takes the form of a capability, so CAP-16 moves from Reserved to Extended in capabilities/catalogue.md, with required, must emit, eval L1, eval L2 and falsified-by. The Reserved section now says that no identifier is reserved. capabilities/CONFORMANCE.md gains a CAP-16 row (ext, every cell "?"). The observation model gains the extended event kind normalization.recorded with the proposal's payload (discarded, reconstruction_cost). The CP-18 row in docs/review/disposition.md records it as done in v0.2.1 and names the sections. CAP-16 is Extended rather than Core because the Core/Extended split (CP-11) is still a proposal and nothing in Core depends on this capability. Lint rule R3 only requires Core capabilities in the matrix, so the lint passes with either classification. Tested: boundary lint exits 0 (1 known, 0 new). That includes R2 (every CAP-nn reference resolves) and R3 (every Core capability appears in the conformance matrix). Risk: a new extended event kind changes the observation model. It is part of the v0.2.1 version bump in the same consolidation and is named in the changelog. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
…n instrument and add one evidence scale (CP-13, CP-08) Evaluation in protocol/05 was built around run-level signals and a cross-run Pareto comparison. Evidence arrives one case at a time, so at n=1 there is no population to compare against, and a dashboard of signals invites conclusions nobody committed to in advance. CP-13 (accepted, deferred to v0.2.1) asked for an evaluation design that works at n=1. CP-13: - §2 becomes "Primary instrument: pre-registered predictions": per case at most five hypotheses with IDs from the hypothesis register, each with a predicted observable and a falsification criterion. Conclusions are drawn only against these predictions. The two quality gates stay; cross-run Pareto comparison becomes a diagnostic until several comparable cases exist. - §3 becomes "Always-on measures and optional diagnostics": cold-start handoff blockers, decision explainability on three sampled decisions, and trace-derived state-integrity defects are taken on every run. The other signals keep their headings as an explicitly optional diagnostic catalogue. - §8's learning loop starts with pre-registration; §9 restates Keep/Investigate/Revert as rules over the pre-registered predictions; §11's Case 03 instrumentation lists the pre-registered predictions. - Section numbers are unchanged, so inbound references (01 §13 stop signal, CAP-09's "05 §3", CAP-02's "05 §11") still resolve. CP-08 (previously recorded as deferred; accepted by the owner on 2026-09-22): - New §12 "Evidence strength: one scale, two columns" separates observation clarity (clear / partial / inferred) from evidential weight (strong / moderate / weak / contested). Clarity never raises weight, so a clearly observed pattern in one self-authored, dependent case is still weak evidence. - Existing ledgers get an added column and a dated note; recorded judgements are never rewritten. This is the proposal's own risk mitigation. - research/01 §1 gains one sentence: its labels predate the rule, are kept as written and read as evidential weight, with KF-3 as the list of known over-statements. - The evidence ledgers are not published here, so relabelling Case 02's ledger is recorded in the disposition as still outstanding in the evidence layer. The disposition rows for CP-13 and CP-08 are updated to match. Alternatives considered: - Renumbering 05 to put the new instrument first and move the old gates later. Rejected: it breaks inbound section references. - Relabelling research/01 in place. Rejected: it overlaps KF-3's separate narrowing pass. Tested: boundary lint exits 0 (1 known, 0 new). Risks: the scale values are a first definition and may need adjusting once applied to a ledger. The owner confirms CP-08's acceptance at merge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
This is the last commit of the v0.2.1 consolidation. The earlier commits
applied the accepted change proposals to the protocol text. This one gives
that text a version number and brings the records into line with it.
Version marking: the headings of protocol/01-07 and the status line of all
11 protocol files, including protocol/observation-model/, now read v0.2.1.
The file names stay as they are. 01_PROTOCOL_V0.2.md keeps its name so
that inbound links keep working. README, docs/overview.md and CITATION.cff
(version "0.2.1") match.
CHANGELOG: a new "v0.2.1 - consolidation of accepted change proposals (not
yet tagged)" section has one row per applied proposal (CP-01, 02, 04, 08,
13, 14, 16-22). Each row gives the changed rule, the observation behind it
(a review finding or a Case 01 code) and what is still hypothesis. The
earlier CP-22 bullet under Unreleased moves into this section. A migration
note for the observation model records one extended kind,
normalization.recorded. No run has been recorded under the old vocabulary,
so no comparability is lost. A "What did not happen" paragraph says what
this version does not do:
- The review planned a smaller v0.2.1. This one is larger because CP-16-21
bring back Case 01 mechanisms, none of which has been tested.
- CP-15 is still deferred.
- KF-1 and KF-3 are still open.
- The Core/Extended split is still only a proposal.
Records brought into line:
- docs/review/disposition.md: two summary sentences no longer matched the
table rows ("None were applied", "Five remain deferred"). Each gets a
dated update note, and the original wording stays. The CP-16-21 table
now says "All six applied in v0.2.1". The priority-findings table is
updated for F-02 and F-09.
- docs/provenance.md: the timeline gains a 22 Sep 2026 v0.2.1 row.
- docs/known-findings.md: KF-3's proposed fix no longer calls itself "a
v0.2.1 pass". That work is not part of this consolidation.
- protocol/05: a stray trailing blank line left by the previous commit is
removed.
No tag is created. Tagging is the owner's decision.
Tested: python3 tools/boundary_lint.py . exits 0 (1 known, 0 new). The
line number of the known entry in 06 has not changed, because the banner
edits keep line counts the same. Every observation in the changelog was
checked against the review's finding titles and the proposal texts.
Risks: at merge, the owner still has to confirm the recorded acceptances
and decide whether to tag protocol/v0.2.1.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
…in v0.2.1 An independent pre-review of the v0.2.1 consolidation returned BLOCK. The blocking finding: v0.2.1 claims every change traces to one listed proposal, but several sentences went beyond what their proposal asked for. This commit removes them and fixes the should-fix findings. Rules removed because no proposal asked for them: - 01 §9: "keep a reference to the source instead of discarding it". CP-18 asks only that the loss be recorded. - 01 §12: "saturation is evidence for convergence; a structural counterexample reopens it". CP-21 defines only the local/structural classification and the saturation exit. - 05 §2: "each with a stable ID from the hypothesis register" and the sentence restricting conclusions to the predictions. - 01 §13: the stop signal now says "stop" plus the proposal's own note, without the added converge/hand-off/justify decision. - 01 §5: "returning to an earlier mode is normal" removed. Consistency fixes: - CHANGELOG: the older "Research references checked..." bullet goes back under Unreleased; the intro says v0.2.1 applies the listed accepted change proposals; "What did not happen" states that CP-03, CP-05 and CP-06 are accepted and drafted as CAP-14, CAP-06 and CAP-04 but their protocol-text edits are not in v0.2.1; the observation-model note says the model is not versioned separately, so v0.2.1 is the bump. - 01 §15 no longer claims the §13 timing rule applies to the release review; the typology and return leg apply, and it does not replace the earlier review. - 05 §9: Keep and Investigate no longer depend on a cross-run comparison. Keep requires that the always-on measures show no material defect (no cold-start blocker, sampled decisions explainable, no systematic state-integrity defect). "Defective-AI resistance" is no longer cited, since the protocol does not collect that signal (the defect finding F-13 named). - 05 §2: the two gates sit under a "Quality gates" heading so they do not read as predictions. - 05 §12: `strong` is now "replicated, or several independent studies", removing the overlap with `moderate`; the intro no longer claims every record already uses the scale. - research/01: the note no longer maps "strongly supported" onto evidential weight; it points to KF-3 instead. - docs/review/disposition.md: CP-02, CP-04, CP-13 and CP-14 rows record the owner's acceptance in the v0.2.1 consolidation; the CP-02 row names option (b) as the proposal's low-cost option; the header says rows were updated in place for v0.2.1 and git history holds the earlier wording; the CP-22 note says sections A, C, D and E are "unchanged by it". - research/hypothesis-register.md: P-01..P-15 in the questions range; CAP-16 no longer "proposed"; HYP-019..024 note they are back in the protocol text in v0.2.1, untested. - 07 P-15 says it is carried over from the unpublished Case 01 method and is the same claim as HYP-019; 01 §13 cites both. - 01 §3 says only the decision/commitment and shared-language dimensions of 02 §7 encode the ladder. Tested: boundary lint exit 0 (1 known, 0 new); relative-link and anchor check over all tracked Markdown: 0 broken. Risks: none new. A formal review round follows on the PR. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
Round 2 of the independent pre-review of the v0.2.1 consolidation passed with one should-fix and four nits, all wording: - research/01 no longer says KF-3 lists every over-stated item; KF-3 names the clearest ones and research/REFERENCES.md lists them all. - protocol/05 §12's "second column added" rule now says it covers older evidence ledgers, so it does not read as contradicting research/01's unmapped labels. - protocol/05 §9's Investigate example names diagnostics that exist (Useful Breadth, the shared-language diagnostics) instead of "understanding" and "semantic consistency", which are not signals. - docs/review/disposition.md's CP-04 row says two dimensions of 02 §7 encode the ladder, matching 01 §3 and 02 §7. - research/hypothesis-register.md's opening ID inventory is dated "as of v0.2", with a note on P-15 and the move of T-01..T-10. Tested: boundary lint exits 0 (1 known, 0 new). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
PR Review VerdictResult: PASS Deterministic: CI check-run Acceptance Criteria
Findings
Not Checked
Routednone |
…ength test plainly Addresses the four advisories from review round 1 of PR #5 (verdict PASS). protocol/05 §9: the outcome rules left a case unassigned. When the predicted observable did not appear but the falsification criterion was not met either, neither Keep nor Revert applied. Investigate now covers it. Investigate also overlapped Revert: a material always-on defect such as a major cold-start blocker fails a gate of §2 and is therefore Revert. Investigate now takes such a defect only when it does not fail a gate of §2, so each outcome has exactly one verdict. CHANGELOG "What did not happen": the previous wording said the review "expected a smaller document", which softened what the review actually set. Its §7 W1 is a test: if v0.2.1 is longer than v0.2, the phase has failed. The entry now quotes that test and says the consolidation fails it. docs/review/disposition.md CP-08: the row read as fully done, but the strength labels already in research/ were deliberately kept as written rather than mapped onto the new scale (research/01 §1). The row now says so, and that the harmonization the proposal asked for is only partly done. Approach: minimal wording edits; no new rules are introduced. Alternative considered: mapping the research/ labels onto the new scale now. Rejected, because research/01 deliberately keeps them as written. Tested: boundary_lint reports 0 new findings; public_guard over tracked files reports 0 findings. Risk: the CHANGELOG now states plainly that v0.2.1 fails the review's own length test. Accepting that is the owner's decision. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
|
Advisories from review round 1, addressed in a45dfad:
Generated by Claude Code |
PR Review VerdictResult: PASS Deterministic: CI check-run Acceptance Criteria
Findings
Not Checked
Routednone |
… several fit
Section 9 of protocol/05 still let a single outcome fit two verdicts.
An absent observable with an unmet falsification criterion and a failed
gate matched both Investigate and Revert; a held prediction with a
contrary diagnostic but no defect matched both Keep and Investigate.
One sentence in the section 9 introduction now sets precedence: Revert
over Investigate, Investigate over Keep. This also makes the previous
commit's claim of one verdict per outcome true.
A single precedence sentence was chosen over adding conditions to each
rule ("and both gates hold" on Investigate, "no diagnostic points the
other way" on Keep), which would add more wording for the same effect.
Tested: boundary_lint reports no new findings; public_guard over tracked
files reports no findings. No risk beyond wording.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
|
Round 2 advisory addressed in d17afce: Generated by Claude Code |
PR Review VerdictResult: PASS Deterministic: CI check-run Acceptance Criteria
Findingsnone Not Checked
Routednone |
Why
The owner accepted change proposals CP-01, CP-02, CP-04, CP-08, CP-13, CP-14 and CP-16 to CP-21, but the published protocol text still read as v0.2 had it. Separately, known finding KF-2 showed that
protocol/07section B, a register of deferred technical decisions, sat inside the vendor-free protocol layer and was the only reason the normative text named a harness. This PR folds the accepted proposals into the protocol as v0.2.1, so the published protocol matches what was decided, and resolves KF-2 through a new proposal, CP-22.Approach
One commit per proposal group. CP-01, CP-02, CP-04, CP-08, CP-13 and CP-14 trace their wording to the proposal text in
docs/review/2026-09-adversarial-review-v0.2.md§5. CP-16 to CP-21 came out of executing CP-10; their full proposal text is not published, so a public reader can check them only against their one-line summaries in the second table ofdocs/review/disposition.mdand the CHANGELOG.docs/technical-decisions.md; only T-01 gains a "Decided" line.protocol/07keeps a one-line pointer where section B was, and sections C, D and E keep their letters so inbound anchors stay valid. KF-2 leaves the known-findings list and the lint baseline.protocol/04§4 becomes its terminology instance. CAP-16 is specified as Extended, with the new event kindnormalization.recorded.protocol/05, with always-on measures and optional diagnostics; one evidence scale separates observation clarity from evidential weight. Existing ledgers get a column, not a rewrite. The strength labels already inresearch/stay as written (research/01§1), so CP-08 is only partly done, and its disposition row says so.New protocol material is added as subsections, so section numbers and inbound references stay stable. Two independent pre-review rounds ran on the branch: round 1 returned BLOCK because some sentences went beyond what their proposal asked for, fixed in 9d26ae4; round 2 returned PASS with wording nits, fixed in 04945ba.
mainis merged in, including the public guard from #4. Review round 1 on this PR returned PASS with four advisories; a45dfad closes a gap in the Keep/Investigate rules ofprotocol/05§9, records CP-08 as partly done, and states the review's length test plainly in the CHANGELOG.Acceptance List
Derived from the acceptance criteria of KF2, V021.
docs/review/disposition.md— proof: eval:disposition-cp-row — Verify:grep -n '^| CP-22' docs/review/disposition.mdshows the row as accepted 2026-09-22 and done for v0.2.1, pointing atdocs/technical-decisions.mdprotocol/07no longer contains section B, and its content is present in project documentation underdocs/— proof: eval:section-b-moved (diff comparison of the moved text) — Verify:grep -n '^## B' protocol/07_DECISIONS_AND_OPEN_QUESTIONS.mdprints nothing; a blank-line-insensitive diff of section B fromgit show origin/main:protocol/07_DECISIONS_AND_OPEN_QUESTIONS.mdagainstdocs/technical-decisions.mdfrom### T-01on differs only by the T-01 Decided line and one trailing---grep -n -A1 '^### T-01' docs/technical-decisions.mdshows**Decided** 2026-09-14linkingexamples/naming-decision.mddocs/known-findings.mdandtools/known-findings.txt, and the change appears in the changelog — proof: eval:kf2-closed-grep — Verify:grep -c KF-2 docs/known-findings.md tools/known-findings.txtprints 0 for both; the CHANGELOG v0.2.1 table has a CP-22 rowpython3 tools/boundary_lint.py .) — Verify:python3 tools/boundary_lint.py .exits 0 and reports 1 finding, 0 new; the only known entry isprotocol/06line 114 (KF-1), with noprotocol/07linegit grep -n technical-decisions.mdlists seven references in six files, each link resolving from its own file;git grep -n '07_DECISIONS_AND_OPEN_QUESTIONS.md#b'prints nothingdocs/review/disposition.mdrecords it as done in v0.2.1 with the section it landed in — proof: eval:disposition-v021-rows — Verify:grep -nE '^\| CP-(01|02|04|08|13|14|1[6-9]|2[0-2]) ' docs/review/disposition.mdreturns 13 rows, each reading done in v0.2.1 and naming a section; open each named section and compare it with the proposal text indocs/review/2026-09-adversarial-review-v0.2.md§5 (for CP-16 to CP-21, with their row in the disposition table)sed -n '/^## v0.2.1/,/^## v0.2 /p' CHANGELOG.mdshows the not-yet-tagged section with one row each for CP-01, 02, 04, 08, 13, 14, 16 to 22grep -L v0.2.1 protocol/*.md protocol/observation-model/*.mdprints nothing;head -1 protocol/0*.mdshows v0.2.1 in all seven headingspython3 tools/boundary_lint.py .) — Verify:python3 tools/boundary_lint.py .exits 0 (1 known, 0 new)/pr-reviewon this PR returns PASS; the branch pre-review returned BLOCK in round 1 (fixed in 9d26ae4) and PASS in round 2 (nits fixed in 04945ba)normalization.recordedcarryingdiscardedandreconstruction_cost— Verify:grep -n 'CAP-16' capabilities/catalogue.md capabilities/CONFORMANCE.mdandgrep -n normalization.recorded protocol/observation-model/02-event-vocabulary.md; the CHANGELOG carries the migration noteprotocol/07— Verify:grep -n 'P-15' protocol/07_DECISIONS_AND_OPEN_QUESTIONS.md protocol/01_PROTOCOL_V0.2.mdCITATION.cffreads version 0.2.1 — Verify:git tag --list 'protocol/v0.2.1'prints nothing;git diff --name-status origin/main...HEADshows only M and one A (docs/technical-decisions.md);grep -n '^version' CITATION.cffWhat Was Tested
python3 tools/boundary_lint.py .exits 0 with 1 known finding (KF-1) and 0 new. The KF-2 entry is gone from the baseline and the lint no longer reports anything inprotocol/07.python3 tools/public_guard.py --self-testpasses, and the guard overorigin/main..HEADwith the private deny file reports 0 findings.Not tested: none of the mechanisms CP-16 to CP-21 bring back has been run in a case yet; they are recorded as hypotheses.
Risks
For owner confirmation at merge:
docs/review/disposition.mdnow records the owner's acceptance for CP-02, CP-04, CP-08, CP-13, CP-14, CP-16 to CP-21 and CP-22. Please confirm these rows match your decisions.protocol/01§13 now implements.protocol/07D-21 still names whole-package adversarial review for a stable or public baseline, whileprotocol/01§13 now asks for challenge before convergence and review while change is cheap (§15 is stated as the release instance). D-21 was left unchanged because no accepted proposal rewords it.protocol/v0.2.1is the owner's decision: no tag was created, and the CHANGELOG section says "not yet tagged".🤖 Generated with Claude Code
https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
Generated by Claude Code