Skip to content

docs(r-a): settle the machine-tree spelling as .machine_readable/ — and cancel the canon's own migration - #817

Merged
hyperpolymath merged 2 commits into
mainfrom
chore/r-a-dotted-canon-side
Sep 17, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
chore/r-a-dotted-canon-side

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Owner ruling R-A: .machine_readable/ everywhere. This applies it to the canon side and closes F2.

F2 is resolved — and so is a migration nobody had noticed

F2 recorded that the machine root sat under two contradictory rulings that each cited the other: Ruling 10 said correct the spine to .machine_readable/, while root-allow.txt and this repo's own check-rsr-profile.sh called machine-readable/ canonical. It could not be resolved from inside the repo.

It resolves from evidence outside it: rsr-template-repo's docs/governance/TEMPLATE-LINEAGE-AUDIT.adoc records 48 repositories on the dotted form against 9 hyphenated at the 2026-08 divergence. The spine was the minority.

standards-map.toml was carrying the exact opposite. Its .machine_readable entry had target = "machine-readable/" — the post-reorg path — so the canon was queued to adopt the spine's spelling. target is now the identity path: the canon does not move.

Ruling 10 already said this. STANDARDS-CRITICAL-PATH.adoc: "rsr-template-repo uses machine-readable/ … Correct it to .machine_readable/?" — now marked RESOLVED, and Lane B's fix marked DONE.

Four checkers had the direction backwards

  • check-rsr-profile.sh called hyphenated "canonical since 2026-08", dotted "LEGACY", and promised to delete the dotted branch "once the estate migration completes" — i.e. keep the branch 9 repos need and delete the one ~300 need.
  • check-canon-lockstep.sh — same inversion; it tried the spine's hyphenated profile first.
  • .githooks/validate-a2ml.sh — same, in a file whose own comment already records that matching one name produced "16 spurious missing identity field errors".
  • check-standards-map.sh — comment citing the dead spine path.

The resolver order changes (dotted first, hyphenated fallback); the branches do not. The tooling already said dotted was the dominant reality — "the canon, scaffoldia, the julia variant and ~300 minted repos all still carry it". It just called it legacy.

HASH-NEUTRAL — no canon release is owed for this

canon.lock [canon.artifacts] pins the law by hash, so this commit deliberately does not touch either law file, and proves it:

artefact expected at this commit
0-canon/rsr/rsr-criteria-v2.a2ml efd024ad… unchanged
.machine_readable/template-capability-gates.toml 8b1a77669c9a… unchanged
TEMPLATE-APPLICABILITY-POLICY.adoc 7a31dc7e… unchanged

The law files still name the hyphenated path in 15 + 3 places; that belongs to a release that can carry a version bump, and it is prepared separately.

Witnesses

Each gate run before and after, output diffed: check-standards-map.sh rc=0 identical (Gate D, 119), check-rsr-profile.sh rc=0 identical, check-allowed-actions.sh rc=0 identical, validate-a2ml.sh rc=1 identical (33 pre-existing errors). check-canon-lockstep.sh rc=0, Gate A PASSED, identical but for the lock's own display digest — which moved only because this commit edits canon.lock's comments.

…nd cancel the canon's own migration

Owner ruling: `.machine_readable` everywhere. This applies the ruling to the
canon side. The spine side is 678c369 on rsr-template-repo.

WHAT THIS CLOSES: F2, the contradiction this repo could not resolve by reading
itself

F2 recorded that the machine root was under two contradictory rulings:
`STANDARDS-CRITICAL-PATH.adoc` Ruling 10 said correct the spine to
`.machine_readable/`, while `root-allow.txt` and `scripts/check-rsr-profile.sh`
both called `machine-readable/` canonical. Each side cited the other, so the
contradiction was unresolvable from inside the repo.

It resolves from evidence outside it. rsr-template-repo's
docs/governance/TEMPLATE-LINEAGE-AUDIT.adoc records the estate census at the
2026-08 divergence:

    48 repositories on .machine_readable/
     9 repositories on machine-readable/

The spine was the 9-repo minority. Its 2026-08 un-hiding — "a quarter of the
repo should not be invisible" — did not move the estate, and the only thing
ever offered as evidence for the hyphenated spelling being canonical was this
repo's own tolerance branch. Ruling 10 stands; F2 is closed.

THE HARDER HALF IS NOT A FIND-AND-REPLACE, AND THIS COMMIT IS THE HALF THAT
TOUCHES NO LAW

The canon's law files are hash-pinned in canon.lock [canon.artifacts]. Editing
either of them changes a released identity and obliges a version bump plus a
spine re-adoption, in that order. So this commit deliberately does NOT touch
them. It proves that instead:

    criteria       0-canon/rsr/rsr-criteria-v2.a2ml   efd024ad…  UNCHANGED
    gates          .machine_readable/template-…toml   8b1a77669c9a…  UNCHANGED
    applicability  TEMPLATE-APPLICABILITY-POLICY.adoc 7a31dc7e…  UNCHANGED

HASH-NEUTRAL: no canon release is owed for anything here. The two law files
still name the hyphenated path in five normative places (criteria 3.1.1
descriptiles-dir, 3.2.2 rsr-profile, the freeze and report prose; the gates'
role=canon comment) and those are left to a release that can carry a version
bump properly.

WHAT ACTUALLY CHANGED, AND THE MISTAKE IT CORRECTS

Nine files, and none of them is a spelling sweep. Four are resolvers or
checkers that must keep resolving BOTH spellings, and every one of them stated
the canonical/legacy relationship the wrong way round:

  scripts/check-rsr-profile.sh       called hyphenated "canonical since
                                     2026-08", dotted "LEGACY", and promised to
                                     delete the dotted branch "once the estate
                                     migration completes" — i.e. it planned to
                                     delete the branch that ~300 repos need and
                                     keep the one 9 need
  scripts/check-canon-lockstep.sh    same inversion, and it tried the spine's
                                     hyphenated profile first
  .githooks/validate-a2ml.sh         same inversion. Its own comment says
                                     matching one name produced "16 spurious
                                     missing identity field errors" — the file
                                     already knew why both branches must exist
  scripts/check-standards-map.sh     comment citing the spine's root-allow path

The resolver ORDER changes (dotted first, hyphenated fallback); the branches do
not. Hyphenated is not rejected, because a repo pinned to the minority spelling
is not a repo with a broken gate.

  standards-map.toml   THE ENTRY THAT HAD THIS REPO MOVING ITSELF. Its
                       `.machine_readable` entry carried
                       `target = "machine-readable/"`: the canon was slated to
                       adopt the spine's spelling. That migration is cancelled
                       and target is now the identity path. Also: the self-entry
                       note said "all 118" against an entry_count of 119.

  canon.lock           three comments naming the spine's profile/PROVENANCE path
  docs/AFFIRMATION.adoc  withdraws R-A from "We intend / Not yet true" and adds
                       it to "We affirm", where it is now checkable
  docs/AUDIT.adoc        F2 *Blocking* -> *Closed 2026-09-17*
  docs/STANDARDS-CRITICAL-PATH.adoc  ruling 10 marked RESOLVED, and Lane B's
                       "Fix rsr-template-repo's root" step marked DONE

WITNESSES — before and after, to prove no behaviour moved

Each gate was run on the unmodified tree first and its output diffed against
the tree with these edits:

  check-standards-map.sh    rc=0, output IDENTICAL      GATE D PASSED
  check-canon-lockstep.sh   rc=0, output identical but for the lock's own
                            display digest, which moved because this commit
                            edits canon.lock's comments. GATE A PASSED
  check-rsr-profile.sh      rc=0, output IDENTICAL
  check-allowed-actions.sh  rc=0, output IDENTICAL
  .githooks/validate-a2ml.sh rc=1, output IDENTICAL (33 pre-existing errors,
                            unaffected by this commit)

A match count is not evidence of correctness: the six-corruption incident on
the spine side of this rename came from exactly that assumption. Every edit
here is an exact full-string match asserted to occur exactly once, applied
all-or-nothing, and the complete diff was read before committing.
@coderabbitai

coderabbitai Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 5 minutes.

Check out review usage here.

View limit details

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

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 237defce-e09d-403a-ad44-909e520a3142

📥 Commits

Reviewing files that changed from the base of the PR and between c2191a3 and f051084.

⛔ Files ignored due to path filters (1)
  • canon.lock is excluded by !**/*.lock
📒 Files selected for processing (8)
  • .githooks/validate-a2ml.sh
  • docs/AFFIRMATION.adoc
  • docs/AUDIT.adoc
  • docs/STANDARDS-CRITICAL-PATH.adoc
  • scripts/check-canon-lockstep.sh
  • scripts/check-rsr-profile.sh
  • scripts/check-standards-map.sh
  • standards-map.toml

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 merged commit 56e217b into main Sep 17, 2026
12 of 14 checks passed
@hyperpolymath
hyperpolymath deleted the chore/r-a-dotted-canon-side branch September 17, 2026 19:13
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