Skip to content

feat(canon): Gate A assertion 3 reads the spine deed (canon …) clause - #1128

Merged
hyperpolymath merged 2 commits into
mainfrom
feat/canon-pin-in-deed
Oct 1, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
feat/canon-pin-in-deed

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Gate A assertion 3 now reads the spine's canon pin from its repo deed instead of from rsr-profile.a2ml [canon]. This is the standards half of hyperpolymath/rsr-template-repo#215; the spine half is hyperpolymath/rsr-template-repo#222.

Why: D43 freezes .a2ml writes, so the a2ml [canon] block could not follow canon 2.1.2, and the spine's lockstep job went red with nothing allowed to fix it. The owner ruled that the pin moves into the deed.

  • 1-formats/deed/vocabulary/canon.adoc: defines the (canon :version … :criteria-sha256 … :gates-sha256 … [:lockstep-since …]) clause and the reader obligations. Readers require exactly one clause, check the shape of every value, ignore comment lines, and keep three byte-identical readers.
  • Fixture tools/fixtures/valid/canon-clause_chora.deed: deed_lint.py passes it (rc=0).
  • scripts/check-canon-lockstep.sh assertion 3:
    • Reads the single *_chora.deed and compares version, criteria and gates (previously criteria only).
    • A value of the wrong shape fails; it is never compared as equal.
    • A spine without the clause falls back to the a2ml criteria hash, labelled LEGACY, so Gate A stays correct whichever of the two PRs lands first.
  • canon.lock: the current-reader comments name the deed. Historical narrative is left untouched.
  • scripts/tests/check-canon-lockstep-deed-test.sh: 9 cases.
    • A matching deed passes.
    • These fail: a wrong gates hash, a stale version (the docs(audits): reusables-convergence campaign closeout 2026-05-26 #215 shape), a malformed hash, duplicated clauses, two deeds, and no pin at all.
    • The legacy fallback passes.
    • The vocabulary fixture is checked against the live canon.
    • The pin values are read from canon.lock, so the test does not go stale on release.

Evidence

  • Test suite: 9/9 pass.
  • Mutant: forcing every comparison to pass reddens 2 cases (killed).
  • Against real spines:
    • rsr#222 head 7353f4e: all three pins PASS via the deed.
    • rsr main: LEGACY criteria PASS.
  • Full check-canon-lockstep.sh --spine <rsr#222>: passed 11, failed 0, GATE A PASSED.
  • docstring-scan --worktree: 5/5 new functions documented.

Not in this PR

  • Auto re-pin workflow (a canon release opens the spine deed bump PR): follow-up. It needs a cross-repo token, which is an owner step.
  • Removing the LEGACY fallback: once no spine checkout lacks the clause.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Hw7qg3u9PAP6b2oKyVTSVC

The spine's canon pin moves from rsr-profile.a2ml [canon] (frozen by
D43, so it could not follow canon 2.1.2) into a `(canon …)` clause of
its repo deed (hyperpolymath/rsr-template-repo#215, #222).

- 1-formats/deed/vocabulary/canon.adoc: the clause's terms and reader
  obligations, plus fixture canon-clause_chora.deed (deed_lint OK).
- check-canon-lockstep.sh assertion 3 reads the single *_chora.deed and
  compares version, criteria and gates, shape-checking each value. The
  shared `deed_canon` reader is byte-identical with rsr's dogfood-gate
  and repo-init. A spine without the clause falls back to the legacy
  a2ml criteria hash, so Gate A works whichever PR lands first.
- canon.lock: the current-reader comments name the deed.
- scripts/tests/check-canon-lockstep-deed-test.sh: 9 cases. They
  include a wrong gates hash, a stale version, a malformed hash, a
  duplicated clause, two deeds, the legacy fallback, no pin at all, and
  the vocabulary fixture against the live canon. A mutant that makes
  every comparison pass is killed (2 reds).

Against real spines: the rsr#222 head passes all three pins through the
deed, and the rsr main pass is legacy criteria only. Full Gate A:
passed 11, failed 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hw7qg3u9PAP6b2oKyVTSVC
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 42 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: ecfb1263-65c6-454b-8e24-5c54d9a0cce0

📥 Commits

Reviewing files that changed from the base of the PR and between 215df8e and 3074bab.

⛔ Files ignored due to path filters (1)
  • canon.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • 1-formats/deed/tools/fixtures/valid/canon-clause_chora.deed
  • 1-formats/deed/vocabulary/canon.adoc
  • scripts/check-canon-lockstep.sh
  • scripts/tests/check-canon-lockstep-deed-test.sh
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 1, 2026 23:45
@coderabbitai

coderabbitai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Autopilot could not be updated. Open Coding to check access and billing.

@hyperpolymath
hyperpolymath merged commit c780e55 into main Oct 1, 2026
52 of 53 checks passed
@hyperpolymath
hyperpolymath deleted the feat/canon-pin-in-deed branch October 1, 2026 23:46
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.

1 participant