Skip to content

docs: point the front doors at deed, k9 and coordination, not A2ML (stacked on #1213) - #1214

Merged
hyperpolymath merged 1 commit into
mainfrom
docs/a2ml-front-door-to-deed-k9
Oct 9, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
docs/a2ml-front-door-to-deed-k9

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Summary

Rebased onto main after #1213 merged (squash commit 9d629d11, 2026-10-09T09:21Z). git range-diff shows the commit unchanged (=). main differs from #1213's head ed4f98a3 only in docs/AFFIRMATION.adoc and docs/affirmations/AFFIRMATION-2026-10-07.adoc (#1212's follow-up 76773445), so the measurements below that name the base ed4f98a3 still hold for main.

A2ML is retired (owner rulings D99, D269c, D312, D313). The files an agent reads first in this repo still told it to create the seven A2ML files:

  • 0-AI-MANIFEST.a2ml: "The 7 A2ML files MUST exist", under a "UNIVERSAL RULE".
  • .meta/REQUIRED-FILES.adoc: "Mandatory A2ML Files".
  • .claude/CLAUDE.md: "Every Hyperpolymath repo must have .machine_readable/ with these 6 A2ML files", plus an ALLOWED-languages row for A2ML.
  • README.adoc: the 7-format family table, the templates and the execution pipeline.

So agents kept writing new A2ML, or rewriting old A2ML into "new" A2ML in a different shape, instead of producing the forms that replace it. This PR repoints every one of those front doors at the three live forms. Each form is named with its normative grammar in this repo and the checker that enforces it:

Form Grammar Check
<repo>_chora.deed at the repo root (D312) 1-formats/deed/spec/abnf/deed.abnf (normative, D308) bun 1-formats/deed/tools/deed_lint.js FILE.deed
*.k9.ncl contracts 1-formats/k9/spec/K9-CONTRACT-SPEC.adoc 1-formats/k9/tools/k9-validate.sh --strict FILE
coordination.k9 at the repo root 2-protocols/k9-coordination/spec/abnf/coordination-k9-grammar_v1.1.abnf + COORDINATION-K9-SPEC.adoc no validator script yet (stated as such)

The front doors also point at the deed mapping specs (1-formats/deed/mappings/) for where former A2ML content goes ("anything a mapping spec does not list does not translate"), name rsr-template-repo_chora.deed as the worked model, and forbid bulk hand-conversion (D313).

Per file:

  • .claude/CLAUDE.md:
    • "Machine-Readable Artefacts" is rewritten: the A2ML-retired paragraph, the three-form table, and notes on translation, the worked model, no bulk conversion, "a deed is not TOML", and existing .a2ml files.
    • The ALLOWED table's A2ML row is replaced by deed and k9 rows.
    • The License Policy section is untouched.
  • .meta/REQUIRED-FILES.adoc: "Mandatory A2ML Files" becomes "Machine-Readable Metadata", with the same three forms and relative links. See Also now points at the deed README and COORDINATION-K9-SPEC.
  • AGENTS.adoc: adds the A2ML-retired paragraph. The validation line now names both checkers.
  • README.adoc:
    • New section "Machine-Readable Metadata", which the front-door table and the Overview link to.
    • The "A2ML Format Family (7 Formats)" table, the templates line and the "Execution Pipeline" are replaced by one short retired-history note. No deed-era execution ordering has been ruled, and deed lists carry no ordering, so the pipeline is not restated.
    • "Monorepo Architecture" gets a history NOTE.
    • The tree listing and Related Projects label the 1-formats/a2ml/* specs and 1-formats/templates/ as retired history.
    • Usage step 2 now says to create <repo>_chora.deed (plus coordination.k9 / *.k9.ncl where they apply) and not .a2ml.
    • The dead Document Formats link tree/main/a2ml (that directory does not exist) is replaced by a link to 1-formats/deed/.
  • 0-AI-MANIFEST.a2ml: deletion only.
    • Removed: the "CANONICAL LOCATIONS (UNIVERSAL RULE)" section ("The 7 A2ML files MUST exist…"), "A2ML" and the dead paths a2ml/ and *-a2ml/ from the Stream 1 routing row, "the A2ML metadata family" from the description, and the A2ML sentence of the attestation.
    • Every + line is a shortened copy of a removed line, and no word is added (checked mechanically, below). Deed routing is not added into the .a2ml: its startup checklist sends the agent to README.adoc next, and that file now carries it.

No issue is closed. This is the follow-up to #1213 that removes the instructions that keep regenerating A2ML.

Type of change

  • 🐛 Bug fix. No code or gate behaviour changes; only instructions do.
  • ✨ New feature. Nothing is added beyond documentation.
  • 💥 Breaking change. No tool, recipe, path or check is removed or renamed. The A2ML files in this repo stay where they are.
  • 🕳️ Soundness fix. No checker changes.
  • 📖 Documentation. Five front-door files now route to deed, k9 and coordination with their ABNFs.
  • 🧹 Refactor / tech debt. Docs only.
  • ⚡ Performance. Not applicable.
  • 🔧 Build / CI / tooling. No workflow, hook, script or lockfile is touched.

📌 New pins

  • Head SHA: 11d458334a0ae9c0954dc7f4a712cd9862376543
  • No pins added or changed. No uses: SHA, no actions.lock entry, no lockfile record, no container digest.

How has this been verified?

All commands were run locally in the worktree (Debian 13, WSL2) with MISE_DISABLE=1.

  • After the rebase onto 9d629d11: bash scripts/check-canonical-names.sh origin/main → no deprecated names reintroduced, rc 0. git range-diff ed4f98a3..ec64f1f6 origin/main..HEAD → 1: ec64f1f6 = 1: 11d45833.

  • bash scripts/run-shell-test-suite.sh → All 80 test file(s) passed., rc 0.

  • The two checkers the docs now name run as written. Each was run on a valid fixture and on an invalid control:

    • bun 1-formats/deed/tools/deed_lint.js 1-formats/deed/tools/fixtures/valid/booleans-uuid_chora.deed → OK, rc 0. On fixtures/invalid/inequals_chora.deed → FAIL … '=' as a field separator is not a deed, rc 1.
    • bash 1-formats/k9/tools/k9-validate.sh --strict 1-formats/k9/tools/fixtures/valid/extension-capability.k9.ncl → 1 file(s) conforming, rc 0. On fixtures/invalid/L0-K9-E001-bad-magic.k9.ncl → K9-E001, rc 1.
  • Every new link resolves. Each added link: target and each added backticked repo path was tested with -e, relative to the file that holds it (.meta/ links use ../). Result: 18 links and 15 paths, 0 missing.

  • The cross-reference resolves. asciidoctor -v README.adoc renders the anchor _machine_readable_metadata, and all 5 <<Machine-Readable Metadata>> references link to it.

  • asciidoctor warnings: none new. Each edited .adoc was rendered both new and on the base. The single error, README.adoc: line 71: dropping cells from incomplete row, is identical on the base ed4f98a3 and is not introduced here.

  • 0-AI-MANIFEST.a2ml is deletion-only. The set of words on its + lines, minus the set of words in the original file, is empty.

  • No remaining instruction to create A2ML. In the five files, grep -i -E '(must|should|create|include|add|use|write|generate|mandatory|required).{0,60}a2ml' finds only prohibitions ("do not create…") and history.

  • Pre-commit passed in full, including gitleaks, the canonical-names guard and bot directives. The first attempt was refused by check-canonical-names.sh, because the draft repeated a deprecated directory name. That clause was dropped and the guard now reports no deprecated names reintroduced.

  • .githooks/docstring-scan.sh --worktree --check → rc 0. No function is touched.

  • git diff --check → clean.

Checklist

  • My commits are signed (git commit -S). git log --show-signature reports a good ED25519 signature on 11d45833.
  • I ran the project's own checks/tests locally and they pass. See above.
  • New files carry the correct SPDX-License-Identifier. No new files are added, and no existing header is changed.
  • Docs are updated, and no public claim now overstates what the code does. coordination.k9 is described as having no validator script yet, and the retired pipeline is not restated as live.
  • I have not introduced a soundness hole, or I have flagged where I might have. No checker changes.

Notes for reviewers

  • Left as they are, on purpose:
    • README L26 and AGENTS.adoc L4 still send an AI agent to 0-AI-MANIFEST.a2ml first. That is an instruction to read an existing file, not to create one, and the manifest no longer tells anyone to create A2ML.
    • The manifest's other reading pointers (descriptiles/STATE.a2ml, AGENTIC.a2ml) and its "no A2ML in the repo root" invariant stay. They describe this repo's existing files, which are not hand-converted (D313).
  • Not in this PR: 2-protocols/0-ai-gatekeeper/docs/AI-MANIFEST-SPEC.adoc L258 still says normatively "These 6 A2ML files MUST exist in .machine_readable/descriptiles/". That is a versioned protocol spec, not a front door, so changing it needs its own ruling. It is logged in the owner's findings ledger.
  • Where STATE content goes in the deed era is still marked "DECISION REQUIRED (owner)" in the mapping specs. These docs point at the mappings and do not pre-empt that decision.

🤖 Generated with Claude Code

https://claude.ai/code/session_015bTuGfwCcvjrmNFejydTML

@coderabbitai

coderabbitai Bot commented Oct 9, 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 3 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: ff9cbded-b762-4c05-8d99-e2c3d43e2115

📥 Commits

Reviewing files that changed from the base of the PR and between 9d629d1 and 11d4583.


📒 Files selected for processing (5)
  • .claude/CLAUDE.md
  • .meta/REQUIRED-FILES.adoc
  • 0-AI-MANIFEST.a2ml
  • AGENTS.adoc
  • README.adoc


  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

K9 contract conformance

run https://github.com/hyperpolymath/standards/actions/runs/37906978076

K9 normative contract typecheck

k9_contract.ncl typechecks

K9 contract self-test

== the bash mirrors cannot drift from the normative contract ==
ok   leash_levels mirrors k9_contract.ncl
ok   core_capabilities mirrors k9_contract.ncl
ok   contract_version mirrors k9_contract.ncl
ok   schema_major mirrors k9_contract.ncl
== capability arithmetic (§8) ==
ok   capability_ok fs.read accepted
ok   capability_ok rollback.apply accepted
ok   capability_ok x-acme.gpu.alloc accepted
ok   capability_ok x-acme rejected
ok   capability_ok x-.gpu rejected
ok   capability_ok fs.delete rejected
ok   capability_ok  rejected
== the extractor ==
ok   extracts pedigree.security.leash
ok   extracts pedigree.component_type
ok   extracts pedigree.metadata.name
ok   pedigree leash is not reported as top-level leash
ok   required_capabilities for a quiet component
ok   required_capabilities follows allow_network
== the envelope strip keeps line numbers (§3.6) ==
ok   line 1 becomes a comment
ok   line count is preserved
ok   schema_version stays on line 5
== L3: signature presence is not verification (§10) ==
ok   no verifier -> K9-C001 is SKIPPED, never a pass
ok   the skip states presence does not authorise 'Hunt
ok   verifier accepts -> verdict 'Verified, no K9-C001 finding
ok   verifier refuses -> K9-C001 error, verdict 'Rejected
== the fixture runner's attribution cannot be fooled by a filename ==
ok   every extracted finding is well-formed rule+layer
ok   the rule that really fired is attributed
ok   a rule named only in the filename is NOT attributed
ok   K9-C001 is present as a skipped finding
ok   and that same finding is NOT extractable as a rejection
== no Nickel reserved word is used as an identifier ==
ok   the contract and all 27 fixtures avoid Nickel's reserved words

self-test: all assertions passed

K9 conformance fixtures

== positive controls (must pass) ==
ok   extension-capability.k9.ncl
ok   extension-fields.k9.ncl
ok   hunt-fully-granted.k9.ncl
ok   kennel-data.k9.ncl
ok   library-base.ncl
ok   yard-typed-config.k9.ncl

== negative controls (must fail, by the named rule) ==
ok   L0-K9-E001-bad-magic.k9.ncl (rejected by K9-E001 at L0)
ok   L0-K9-E002-nul-byte.k9.ncl (rejected by K9-E002 at L0)
ok   L0-K9-E003-crlf.k9.ncl (rejected by K9-E003 at L0)
ok   L0-K9-E004-no-spdx.k9.ncl (rejected by K9-E004 at L0)
ok   L0-K9-E005-unclaimed-body.k9.ncl (rejected by K9-E005 at L0)
ok   L0-K9-S012-library-with-pedigree.ncl (rejected by K9-S012 at L0)
ok   L0-K9-S014-stray-leash.ncl (rejected by K9-S014 at L0)
ok   L1-K9-S001-no-pedigree.k9.ncl (rejected by K9-S001 at L1)
ok   L1-K9-S002-wrong-major.k9.ncl (rejected by K9-S002 at L1)
ok   L1-K9-S003-todo-component-type.k9.ncl (rejected by K9-S003 at L1)
ok   L1-K9-S004-unknown-leash.k9.ncl (rejected by K9-S004 at L1)
ok   L1-K9-S005-missing-name.k9.ncl (rejected by K9-S005 at L1)
ok   L1-K9-S006-unknown-capability.k9.ncl (rejected by K9-S006 at L1)
ok   L1-K9-S007-ungranted-flag.k9.ncl (rejected by K9-S007 at L1)
ok   L1-K9-S008-hunt-signature-not-required.k9.ncl (rejected by K9-S008 at L1)
ok   L1-K9-S009-hunt-no-signature-block.k9.ncl (rejected by K9-S009 at L1)
ok   L1-K9-S010-hunt-empty-side-effects.k9.ncl (rejected by K9-S010 at L1)
ok   L1-K9-S011-recipes-at-yard.k9.ncl (rejected by K9-S011 at L1)
ok   L1-K9-S013-dangling-import.k9.ncl (rejected by K9-S013 at L1)
ok   L2-K9-N001-two-segment-version.k9.ncl (rejected by K9-N001 at L2)
ok   L2-K9-N001-wrong-field-type.k9.ncl (rejected by K9-N001 at L2)

fixtures: 6 positive, 21 negative (0 needing nickel), 0 failure(s)

K9 corpus conformance (L2)

[validate-k9] debt rhodium-standard-repositories/rsr-compliance-checklist.k9.ncl (fail) — K9-N001 K9-S004 K9-S005 K9-S014 (grandfathered; touching it makes it blocking)
[validate-k9] 14 conforming, 1 grandfathered (layer all, contract v1.0.0)

@hyperpolymath
hyperpolymath marked this pull request as draft October 9, 2026 08:46
Base automatically changed from chore/retire-a2ml-registry-gates to main October 9, 2026 09:21
A2ML is retired (D99, D269c, D312, D313), but the files agents read first
still told them to create the seven A2ML files. Agents kept producing new
A2ML, or "new" A2ML in a different shape, instead of the forms that
replace it.

Each front door now names the three live forms, each with its normative
grammar and its checker:

- <repo>_chora.deed: 1-formats/deed/spec/abnf/deed.abnf, deed_lint.js
- *.k9.ncl: K9-CONTRACT-SPEC, k9-validate.sh --strict
- coordination.k9: coordination-k9-grammar_v1.1.abnf, COORDINATION-K9-SPEC

They also point at the deed mapping specs for former content and forbid
bulk hand-conversion (D313).

- .claude/CLAUDE.md: Machine-Readable Artefacts rewritten; the ALLOWED
  table's A2ML row replaced by deed and k9 rows.
- .meta/REQUIRED-FILES.adoc: "Mandatory A2ML Files" replaced by
  "Machine-Readable Metadata".
- AGENTS.adoc: A2ML-retired paragraph; validation line names both checkers.
- README.adoc: new "Machine-Readable Metadata" section; the A2ML family
  table, templates and execution pipeline marked retired history; tree
  listing, Usage step 2, Document Formats and Related Projects updated.
- 0-AI-MANIFEST.a2ml: deletion only. The "7 A2ML files MUST exist"
  section, the dead a2ml/ routing and the A2ML clause of the attestation
  are removed. No line is added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015bTuGfwCcvjrmNFejydTML
@hyperpolymath
hyperpolymath force-pushed the docs/a2ml-front-door-to-deed-k9 branch from ec64f1f to 11d4583 Compare October 9, 2026 09:22
@sonarqubecloud

sonarqubecloud Bot commented Oct 9, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

K9 contract conformance

run https://github.com/hyperpolymath/standards/actions/runs/37910881405

K9 normative contract typecheck

k9_contract.ncl typechecks

K9 contract self-test

== the bash mirrors cannot drift from the normative contract ==
ok   leash_levels mirrors k9_contract.ncl
ok   core_capabilities mirrors k9_contract.ncl
ok   contract_version mirrors k9_contract.ncl
ok   schema_major mirrors k9_contract.ncl
== capability arithmetic (§8) ==
ok   capability_ok fs.read accepted
ok   capability_ok rollback.apply accepted
ok   capability_ok x-acme.gpu.alloc accepted
ok   capability_ok x-acme rejected
ok   capability_ok x-.gpu rejected
ok   capability_ok fs.delete rejected
ok   capability_ok  rejected
== the extractor ==
ok   extracts pedigree.security.leash
ok   extracts pedigree.component_type
ok   extracts pedigree.metadata.name
ok   pedigree leash is not reported as top-level leash
ok   required_capabilities for a quiet component
ok   required_capabilities follows allow_network
== the envelope strip keeps line numbers (§3.6) ==
ok   line 1 becomes a comment
ok   line count is preserved
ok   schema_version stays on line 5
== L3: signature presence is not verification (§10) ==
ok   no verifier -> K9-C001 is SKIPPED, never a pass
ok   the skip states presence does not authorise 'Hunt
ok   verifier accepts -> verdict 'Verified, no K9-C001 finding
ok   verifier refuses -> K9-C001 error, verdict 'Rejected
== the fixture runner's attribution cannot be fooled by a filename ==
ok   every extracted finding is well-formed rule+layer
ok   the rule that really fired is attributed
ok   a rule named only in the filename is NOT attributed
ok   K9-C001 is present as a skipped finding
ok   and that same finding is NOT extractable as a rejection
== no Nickel reserved word is used as an identifier ==
ok   the contract and all 27 fixtures avoid Nickel's reserved words

self-test: all assertions passed

K9 conformance fixtures

== positive controls (must pass) ==
ok   extension-capability.k9.ncl
ok   extension-fields.k9.ncl
ok   hunt-fully-granted.k9.ncl
ok   kennel-data.k9.ncl
ok   library-base.ncl
ok   yard-typed-config.k9.ncl

== negative controls (must fail, by the named rule) ==
ok   L0-K9-E001-bad-magic.k9.ncl (rejected by K9-E001 at L0)
ok   L0-K9-E002-nul-byte.k9.ncl (rejected by K9-E002 at L0)
ok   L0-K9-E003-crlf.k9.ncl (rejected by K9-E003 at L0)
ok   L0-K9-E004-no-spdx.k9.ncl (rejected by K9-E004 at L0)
ok   L0-K9-E005-unclaimed-body.k9.ncl (rejected by K9-E005 at L0)
ok   L0-K9-S012-library-with-pedigree.ncl (rejected by K9-S012 at L0)
ok   L0-K9-S014-stray-leash.ncl (rejected by K9-S014 at L0)
ok   L1-K9-S001-no-pedigree.k9.ncl (rejected by K9-S001 at L1)
ok   L1-K9-S002-wrong-major.k9.ncl (rejected by K9-S002 at L1)
ok   L1-K9-S003-todo-component-type.k9.ncl (rejected by K9-S003 at L1)
ok   L1-K9-S004-unknown-leash.k9.ncl (rejected by K9-S004 at L1)
ok   L1-K9-S005-missing-name.k9.ncl (rejected by K9-S005 at L1)
ok   L1-K9-S006-unknown-capability.k9.ncl (rejected by K9-S006 at L1)
ok   L1-K9-S007-ungranted-flag.k9.ncl (rejected by K9-S007 at L1)
ok   L1-K9-S008-hunt-signature-not-required.k9.ncl (rejected by K9-S008 at L1)
ok   L1-K9-S009-hunt-no-signature-block.k9.ncl (rejected by K9-S009 at L1)
ok   L1-K9-S010-hunt-empty-side-effects.k9.ncl (rejected by K9-S010 at L1)
ok   L1-K9-S011-recipes-at-yard.k9.ncl (rejected by K9-S011 at L1)
ok   L1-K9-S013-dangling-import.k9.ncl (rejected by K9-S013 at L1)
ok   L2-K9-N001-two-segment-version.k9.ncl (rejected by K9-N001 at L2)
ok   L2-K9-N001-wrong-field-type.k9.ncl (rejected by K9-N001 at L2)

fixtures: 6 positive, 21 negative (0 needing nickel), 0 failure(s)

K9 corpus conformance (L2)

[validate-k9] debt rhodium-standard-repositories/rsr-compliance-checklist.k9.ncl (fail) — K9-N001 K9-S004 K9-S005 K9-S014 (grandfathered; touching it makes it blocking)
[validate-k9] 14 conforming, 1 grandfathered (layer all, contract v1.0.0)

@hyperpolymath
hyperpolymath marked this pull request as ready for review October 9, 2026 09:24
@hyperpolymath
hyperpolymath merged commit dd58dd9 into main Oct 9, 2026
66 checks passed
@hyperpolymath
hyperpolymath deleted the docs/a2ml-front-door-to-deed-k9 branch October 9, 2026 09:51
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