diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index e59ea3929..9f686822c 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -23,7 +23,7 @@ ### Hard rules for agents - **NEVER generate licence-change PRs without prior owner approval.** Manual, - per-file, owner-only. Triggered by neurophone#99 (auto-PR reverting PMPL → + per-file, restricted to registered codeowner-admins. Triggered by neurophone#99 (auto-PR reverting PMPL → MPL-2.0 across ~140 files; closed by owner 2026-06-02). - **NEVER sweep SPDX headers in bulk.** Every prior LLM sweep has scrambled identifiers, mis-licensed third-party code, or reverted owner decisions. diff --git a/.machine_readable/contractiles/must/Mustfile.a2ml b/.machine_readable/contractiles/must/Mustfile.a2ml index 342002f0f..37351062a 100644 --- a/.machine_readable/contractiles/must/Mustfile.a2ml +++ b/.machine_readable/contractiles/must/Mustfile.a2ml @@ -35,8 +35,8 @@ requirements — CI and pre-commit hooks fail if any check fails. - severity: critical ### ai-manifest -- description: 0-AI-MANIFEST.a2ml must exist -- run: test -f 0-AI-MANIFEST.a2ml +- description: 0-AI-MANIFEST.deed must exist +- run: test -f 0-AI-MANIFEST.deed - severity: critical ### machine-readable-dir diff --git a/.machine_readable/licensing-policy.toml b/.machine_readable/licensing-policy.toml index 7e82ba5d5..514280eae 100644 --- a/.machine_readable/licensing-policy.toml +++ b/.machine_readable/licensing-policy.toml @@ -62,7 +62,7 @@ kept_mit = "(a) third-party — lol/* © Asgari, palimpsest-license tooling © S [automation] # Addendum A2 allowed = false -rule = "no bulk/sed/script/agent licence-SPDX changes ever; remediation is manual, per-file, owner-only" +rule = "no bulk/sed/script/agent licence-SPDX changes ever; remediation is manual, per-file, restricted to registered codeowner-admins" exception = "an agent may author NEW files with correct SPDX; a brand-new repo's own top-level LICENSE may be set" [debt] # Addendum A3 — the ONLY licence debt diff --git a/0-AI-MANIFEST.a2ml b/0-AI-MANIFEST.a2ml deleted file mode 100644 index 26654a3ca..000000000 --- a/0-AI-MANIFEST.a2ml +++ /dev/null @@ -1,58 +0,0 @@ -# STOP — CANONICAL MACHINE ENTRY POINT (read this first) - -**This is the canonical machine front door for `hyperpolymath/standards`.** -The canonical *human* front door is `README.adoc`. Every other "what is this -repo" doc (EXPLAINME.adoc, TOPOLOGY.adoc, QUICKSTART-*.adoc, llm-warmup-*.md) is a -thin pointer back to one of these two. - -## WHAT IS THIS REPO? - -The organization-wide standards monorepo: ~30 specs that govern every -Hyperpolymath project — K9 self-validating -components, the protocols, the readiness-grading frameworks (ARG/FRG/CRG/TRG), -RSR compliance, and the enforcement/CI that makes them stick. - -## ROUTING — where to go for X (machine index) - -| If you want… | Go to | -|---|---| -| K9 foundation (Stream 1) | `1-formats/k9/`, `1-formats/contractiles/` | -| Language policy (Stream 2) | `.claude/CLAUDE.md` | -| Protocols | `*-protocol/` | -| Readiness grades | `adoption-readiness-grades/`, `foundations-readiness-grades/`, `component-readiness-grades/`, `toolchain-readiness-grades/` | -| Multi-repository task scope | `docs/MULTI-REPOSITORY-SCOPE-STANDARD.adoc`; illustrative declaration: `docs/repo-scope.example.toml` | -| Enforcement / CI | `.github/workflows/`, `hooks/` | -| Drift / staleness automation | `hypatia-rules/`; reusable-pin freshness: `docs/decisions/ADR-003-workflow-pin-staleness-window.adoc`, `scripts/check-workflow-staleness.sh`, `scripts/propagate-workflow-pins.sh` | -| Derived architecture map | `TOPOLOGY.adoc` (do not edit) | -| Current project state | `.machine_readable/descriptiles/STATE.a2ml` | -| Education layer (deep docs, by audience) | `docs/wikis/` (Users / Developers / Maintainers); machine mirror `docs/wikis/0.2-AI-MANIFEST.a2ml` | - -## CORE INVARIANTS - -1. **No A2ML duplication** — root must NOT contain STATE.a2ml, META.a2ml, etc. -2. **Single source of truth** — `.machine_readable/descriptiles/` is authoritative for state. -3. **Licence is Manual-Only for agents** — every file's licence/SPDX is set by - the owner. Agents NEVER edit, sweep, or relicense `LICENSE` files or SPDX - headers; licence drift is FLAG-ONLY (`:review`). See `LICENSE`, - `.machine_readable/licensing-policy.toml`, and `.claude/CLAUDE.md`. -4. **Author attribution** — "Jonathan D.A. Jewell ". - -## SESSION STARTUP CHECKLIST - -- Read THIS file, then `README.adoc`. -- Read `.machine_readable/descriptiles/STATE.a2ml` for current status + blockers. -- Read `.machine_readable/descriptiles/AGENTIC.a2ml` for interaction patterns. -- Read `.claude/CLAUDE.md` for the language + licence policy (binding). - -## ATTESTATION - -After reading, state: **"I have read the standards manifest. The human front -door is README.adoc. -Licence/SPDX is Manual-Only — I will flag, never edit."** - -## META - -- **Format Version:** 2.0.0 -- **Maintained By:** Jonathan D.A. Jewell (hyperpolymath) -- **Licence:** see `LICENSE` -- **Protocol:** https://github.com/hyperpolymath/0-ai-gatekeeper-protocol diff --git a/0-AI-MANIFEST.deed b/0-AI-MANIFEST.deed new file mode 100644 index 000000000..3b1c3fd2e --- /dev/null +++ b/0-AI-MANIFEST.deed @@ -0,0 +1,46 @@ +;; SPDX-FileCopyrightText: © 2026 Jonathan D.A. Jewell (hyperpolymath) +;; SPDX-License-Identifier: CC-BY-SA-4.0 +(repo-deed + :schema-version "1.0.0" + :canonical-name "standards" + :repo-uuid #u8"gv-clade-index:github.com/hyperpolymath/standards" + :beholding-chora #u5"estate/chora" + + (purpose + :text "The organization-wide standards monorepo: ~30 specs that govern every Hyperpolymath project — K9 self-validating components, the protocols, the readiness-grading frameworks (ARG/FRG/CRG/TRG), RSR compliance, and the enforcement/CI that makes them stick.") + + (front-doors + :machine "standards_chora.deed" + :human "README.adoc") + + (routing + (k9-foundation :paths ("1-formats/k9/" "1-formats/contractiles/")) + (language-policy :paths (".claude/CLAUDE.md")) + (protocols :paths ("2-protocols/" "*-protocol/")) + (readiness-grades :paths ("adoption-readiness-grades/" "foundations-readiness-grades/" "component-readiness-grades/" "toolchain-readiness-grades/")) + (multi-repository-scope :paths ("docs/MULTI-REPOSITORY-SCOPE-STANDARD.adoc" "docs/repo-scope.example.toml")) + (enforcement-ci :paths (".github/workflows/" "hooks/")) + (drift-automation :paths ("hypatia-rules/" "docs/decisions/ADR-003-workflow-pin-staleness-window.adoc" "scripts/check-workflow-staleness.sh" "scripts/propagate-workflow-pins.sh")) + (derived-architecture-map :paths ("TOPOLOGY.adoc")) + (current-project-state :paths ("standards_chora.deed")) + (education-layer :paths ("docs/wikis/" "docs/wikis/0.2-AI-MANIFEST.deed"))) + + (invariants + (rule :priority 10 :text "No A2ML/DEED duplication — root must NOT contain STATE.deed, META.deed, etc.") + (rule :priority 20 :text "The repo deed routes to state evidence; generated metadata does not confer normative authority.") + (rule :priority 30 :text "Initial licence assignment is permitted: agents may add the correct SPDX header to new files under the repository policy and set a brand-new repository's initial LICENSE. Changes to existing licences, LICENSE files or SPDX declarations are Manual-Only and restricted to registered codeowner-admins. Agents must flag licence drift for review; never sweep or relicense existing content. See LICENSE, .machine_readable/licensing-policy.toml, and .claude/CLAUDE.md.") + (rule :priority 40 :text "Author attribution — Jonathan D.A. Jewell ")) + + (startup-checklist + :steps ("Read THIS file, then README.adoc." + "Read standards_chora.deed for repository metadata and state-source routing." + "Read the legacy .machine_readable/descriptiles/AGENTIC.a2ml for interaction patterns; do not extend it." + "Read .claude/CLAUDE.md for the language + licence policy (binding).")) + + (attestation + :text "I have read the standards manifest. The human front door is README.adoc. Licence/SPDX changes to existing files are Manual-Only and restricted to registered codeowner-admins — I will flag, never edit. I may add the correct SPDX header when creating a new file, following the repo's licence classification.") + + (meta + :maintained-by "Jonathan D.A. Jewell (hyperpolymath) " + :protocol "https://github.com/hyperpolymath/0-ai-gatekeeper-protocol") +) diff --git a/1-formats/deed/README.adoc b/1-formats/deed/README.adoc index b84792de3..23c8b0cf0 100644 --- a/1-formats/deed/README.adoc +++ b/1-formats/deed/README.adoc @@ -1,5 +1,5 @@ = DEED Grammar Specification -:version: 0.2.2 +:version: 0.2.3 :status: DRAFT :toc: :toclevels: 3 @@ -24,7 +24,7 @@ throughout and is *not* part of the v0.1 conformance surface. parsing. The EBNF in <> is informative. + NOTE (standards#837): owner ruling 2026-09-19 brought the grammar files -together — `deed.abnf` (now v1.1.0) is the sole normative grammar. The v0.1.0 +together — `deed.abnf` (now v1.2.0) is the sole normative grammar. The v0.1.0 DRAFT archive lives at `archive/deed.abnf_v0.1.0-draft` under its true version (it was previously misnamed `deed.abnf_v1.0`). @@ -40,6 +40,12 @@ Compatible with: |=== | Version | Date | Changes +| 0.2.3 +| 2026-10-16 +| Aligned to `deed.abnf` v1.2.0: the exact canonical machine front door + `0-AI-MANIFEST.deed` dispatches to `repo-deed`. Other filename rules + and clause syntax are unchanged. + | 0.2.2 | 2026-10-07 | Aligned to `deed.abnf` v1.1.0 (owner rulings D305/D320): added the @@ -316,6 +322,10 @@ case-sensitive. | `repo-deed` | Noun. What a repo IS. A record. +| `0-AI-MANIFEST.deed` (exact) +| `repo-deed` +| The canonical machine front door, recording repository routing and invariants. + | `ATLAS.deed` (exact) | `estate-atlas-deed` | Noun. The registry of all deeds. @@ -337,6 +347,8 @@ implementation MUST test the exact name `estate_chora.deed` BEFORE the `*_chora.deed` pattern, and MUST NOT parse `estate_chora.deed` as a `repo-deed`. Equivalently, the repo form is `_chora.deed` where `` is any non-empty stem other than the exact string `estate`. +The exact `0-AI-MANIFEST.deed` name also selects `repo-deed`; other plain +`.deed` names remain invalid. [NOTE] ==== @@ -898,7 +910,7 @@ locally. Either the estate chora gains it, or `extends-vocabulary` lands. == References -* link:spec/abnf/deed.abnf[DEED ABNF (v1.1.0, normative)] · +* link:spec/abnf/deed.abnf[DEED ABNF (v1.2.0, normative)] · link:spec/abnf/archive/deed.abnf_v0.1.0-draft[v0.1.0 DRAFT archive] * link:https://www.rfc-editor.org/rfc/rfc7405[RFC 7405] (case-sensitive ABNF strings) * link:https://www.rfc-editor.org/rfc/rfc4122[RFC 4122] §4.3 (UUID v5) diff --git a/1-formats/deed/spec/DEED-GRAMMAR-SPEC.adoc b/1-formats/deed/spec/DEED-GRAMMAR-SPEC.adoc index 7f6c132c4..1f7fef4d6 100644 --- a/1-formats/deed/spec/DEED-GRAMMAR-SPEC.adoc +++ b/1-formats/deed/spec/DEED-GRAMMAR-SPEC.adoc @@ -1,5 +1,5 @@ = DEED Grammar Specification -:version: 0.2.2 +:version: 0.2.3 :status: DRAFT :media-type: application/vnd.deed :toc: @@ -25,7 +25,7 @@ throughout and is *not* part of the v0.1 conformance surface. parsing. The EBNF in <> is informative. + NOTE (standards#837): owner ruling 2026-09-19 brought the grammar files -together — `deed.abnf` (now v1.1.0) is the sole normative grammar. The v0.1.0 +together — `deed.abnf` (now v1.2.0) is the sole normative grammar. The v0.1.0 DRAFT archive lives at `archive/deed.abnf_v0.1.0-draft` under its true version (it was previously misnamed `deed.abnf_v1.0`). @@ -41,6 +41,12 @@ Compatible with: |=== | Version | Date | Changes +| 0.2.3 +| 2026-10-16 +| Aligned to `deed.abnf` v1.2.0: the exact canonical machine front door + `0-AI-MANIFEST.deed` dispatches to `repo-deed`. Other filename rules + and clause syntax are unchanged. + | 0.2.2 | 2026-10-07 | Aligned to `deed.abnf` v1.1.0 (owner rulings D305/D320): added the @@ -317,6 +323,10 @@ case-sensitive. | `repo-deed` | Noun. What a repo IS. A record. +| `0-AI-MANIFEST.deed` (exact) +| `repo-deed` +| The canonical machine front door, recording repository routing and invariants. + | `ATLAS.deed` (exact) | `estate-atlas-deed` | Noun. The registry of all deeds. @@ -338,6 +348,8 @@ implementation MUST test the exact name `estate_chora.deed` BEFORE the `*_chora.deed` pattern, and MUST NOT parse `estate_chora.deed` as a `repo-deed`. Equivalently, the repo form is `_chora.deed` where `` is any non-empty stem other than the exact string `estate`. +The exact `0-AI-MANIFEST.deed` name also selects `repo-deed`; other plain +`.deed` names remain invalid. [NOTE] ==== @@ -899,7 +911,7 @@ locally. Either the estate chora gains it, or `extends-vocabulary` lands. == References -* link:./abnf/deed.abnf[DEED ABNF (v1.1.0, normative)] · +* link:./abnf/deed.abnf[DEED ABNF (v1.2.0, normative)] · link:./abnf/archive/deed.abnf_v0.1.0-draft[v0.1.0 DRAFT archive] * link:https://www.rfc-editor.org/rfc/rfc7405[RFC 7405] (case-sensitive ABNF strings) * link:https://www.rfc-editor.org/rfc/rfc4122[RFC 4122] §4.3 (UUID v5) diff --git a/1-formats/deed/spec/abnf/deed.abnf b/1-formats/deed/spec/abnf/deed.abnf index 7b70af580..34f3747b7 100644 --- a/1-formats/deed/spec/abnf/deed.abnf +++ b/1-formats/deed/spec/abnf/deed.abnf @@ -2,7 +2,7 @@ ; SPDX-License-Identifier: MPL-2.0 ; SPDX-License-Identifier: CC-BY-SA-4.0 ; -; DEED grammar, v1.1.0 +; DEED grammar, v1.2.0 ; Normative for parsing. Prose and rationale: ../DEED-GRAMMAR-SPEC.adoc ; ; NOTICE (standards#837): OWNER RULING 2026-09-19 — the grammar files have @@ -17,6 +17,10 @@ ; The only bracket is "(". A file using "=" as a field separator is not a deed. ; ("=" MAY appear INSIDE a symbol, e.g., a comparison operator.) ; +; CHANGELOG (v1.1.0 → v1.2.0, 2026-10-16): +; - Added exact filename 0-AI-MANIFEST.deed -> repo-deed for the canonical +; machine front door. Existing filename dispatch and clause syntax remain. +; ; CHANGELOG (v1.0.0 → v1.1.0, owner rulings D305/D320, 2026-10-07): ; - Added uuid8 (#u8"domain:name"), the ADR-008 profile C literal. Additive: ; uuid5 stays legal until its own cutover, so every v1.0.0 deed is a v1.1.0 deed. @@ -54,6 +58,7 @@ doc-head = %s"estate-deed" ; filename dispatch (see deed-filename below). ; estate_chora.deed → estate-deed ; ATLAS.deed → estate-atlas-deed + ; 0-AI-MANIFEST.deed → repo-deed ; *_praxis.deed → praxis-deed ; *_chora.deed → repo-deed ; A mismatch is a validation error. @@ -66,9 +71,10 @@ doc-head = %s"estate-deed" ; ("_chora.deed", "_praxis.deed", etc.). Do NOT split on "." — the ; stem may contain dots (e.g., "my.project_chora.deed" → stem "my.project"). -deed-filename = estate-file / atlas-file / praxis-file / repo-file +deed-filename = estate-file / atlas-file / manifest-file / praxis-file / repo-file estate-file = %s"estate_chora.deed" ; -> estate-deed atlas-file = %s"ATLAS.deed" ; -> estate-atlas-deed +manifest-file = %s"0-AI-MANIFEST.deed" ; -> repo-deed praxis-file = stem %s"_praxis.deed" ; -> praxis-deed repo-file = stem %s"_chora.deed" ; -> repo-deed stem = 1*( ALPHA / DIGIT / "-" / "." / "_" ) diff --git a/1-formats/deed/tools/README.adoc b/1-formats/deed/tools/README.adoc index 4abf45501..62d041dde 100644 --- a/1-formats/deed/tools/README.adoc +++ b/1-formats/deed/tools/README.adoc @@ -1,6 +1,6 @@ // SPDX-License-Identifier: CC-BY-SA-4.0 = DEED conformance lane — tools -Campaign: standards#837 · Grammar: link:../spec/abnf/deed.abnf[spec/abnf/deed.abnf (v1.1.0, normative)] +Campaign: standards#837 · Grammar: link:../spec/abnf/deed.abnf[spec/abnf/deed.abnf (v1.2.0, normative)] == The lane's one property diff --git a/1-formats/deed/tools/deed_lint.js b/1-formats/deed/tools/deed_lint.js index 1f3cb1392..2a11adfd7 100755 --- a/1-formats/deed/tools/deed_lint.js +++ b/1-formats/deed/tools/deed_lint.js @@ -1,7 +1,7 @@ #!/usr/bin/env bun // SPDX-License-Identifier: MPL-2.0 // Port of deed_lint.py to plain JavaScript (bun, zero dependencies). -const DOC = String.raw`deed-lint — conformance validator for the DEED grammar (deed.abnf v1.1.0). +const DOC = String.raw`deed-lint — conformance validator for the DEED grammar (deed.abnf v1.2.0). Stdlib-only. Implements the normative grammar faithfully: * header = 1* spdx-line (";;" SP "SPDX-" …) @@ -410,7 +410,17 @@ export function validate(text, filename = null) { return [head, items]; } -/** estate-file exact-first; stems may contain dots (split on the final suffix). */ +/** + * Check a parsed doc-head against the case-sensitive basename of `filename`. + * Exact names take precedence: estate_chora.deed requires estate-deed, + * ATLAS.deed requires estate-atlas-deed, and 0-AI-MANIFEST.deed requires + * repo-deed. Otherwise, _praxis.deed selects praxis-deed and _chora.deed + * selects repo-deed; stems may contain dots (split on the final suffix). + * Returns undefined on success. + * @throws {LintError} At line 1 for an unrecognised filename, an empty or + * illegal _chora.deed stem (only ASCII letters, digits, hyphens, dots and + * underscores are allowed), or a doc-head mismatch. + */ export function checkFilenameDispatch(filename, head) { const base = basename(filename); let want; @@ -418,6 +428,8 @@ export function checkFilenameDispatch(filename, head) { want = "estate-deed"; } else if (base === "ATLAS.deed") { want = "estate-atlas-deed"; + } else if (base === "0-AI-MANIFEST.deed") { + want = "repo-deed"; } else if (base.endsWith("_praxis.deed")) { want = "praxis-deed"; } else if (base.endsWith("_chora.deed")) { @@ -428,7 +440,7 @@ export function checkFilenameDispatch(filename, head) { } else { throw new LintError( `filename ${pyRepr(base)} matches no deed dispatch pattern ` + - "(estate_chora.deed | ATLAS.deed | _chora.deed | _praxis.deed)", + "(estate_chora.deed | ATLAS.deed | 0-AI-MANIFEST.deed | _chora.deed | _praxis.deed)", 1, ); } diff --git a/1-formats/deed/tools/deed_lint.test.js b/1-formats/deed/tools/deed_lint.test.js index 91b31e8a0..18a8fea96 100644 --- a/1-formats/deed/tools/deed_lint.test.js +++ b/1-formats/deed/tools/deed_lint.test.js @@ -102,6 +102,20 @@ describe("extra rules", () => { test("filename matching no pattern", () => { expect(verdict(HDR + '(repo-deed :schema-version "1")\n', "x.deed")).toMatch(/no deed dispatch pattern/); }); + test("canonical machine manifest selects repo-deed", () => { + expect(verdict(HDR + '(repo-deed :schema-version "1")\n', "0-AI-MANIFEST.deed")).toBeNull(); + for (const head of ["estate-deed", "estate-atlas-deed", "praxis-deed"]) { + expect(verdict(HDR + `(${head} :schema-version "1")\n`, "0-AI-MANIFEST.deed")).toMatch(/mismatch/); + } + }); + test("machine manifest filename is exact and case-sensitive", () => { + for (const name of ["0-ai-manifest.deed", "0-AI-MANIFEST-copy.deed", "1-AI-MANIFEST.deed"]) { + expect(verdict(HDR + '(repo-deed :schema-version "1")\n', name)).toMatch(/no deed dispatch pattern/); + } + }); + test("machine manifest clauses still require named fields", () => { + expect(verdict(HDR + '(repo-deed :schema-version "1" (purpose "text"))\n', "0-AI-MANIFEST.deed")).toMatch(/expected field/); + }); test("estate_chora.deed needs estate-deed", () => { expect(verdict(HDR + '(estate-deed :schema-version "1")\n', "estate_chora.deed")).toBeNull(); expect(verdict(HDR + '(repo-deed :schema-version "1")\n', "estate_chora.deed")).toMatch(/mismatch/); @@ -157,6 +171,12 @@ function cli(...args) { } describe("CLI", () => { + test("canonical machine manifest passes with its real filename", () => { + const manifest = join(HERE, "../../../0-AI-MANIFEST.deed"); + const r = cli(manifest); + expect(r.code).toBe(0); + expect(r.out).toContain(`OK ${manifest}`); + }); test("valid fixture exits 0", () => { const p = join(FIX, "valid", "minimal_chora.deed"); const r = cli(p); diff --git a/3-practice/LICENCE-POLICY.adoc b/3-practice/LICENCE-POLICY.adoc index d492bf154..bae89227c 100644 --- a/3-practice/LICENCE-POLICY.adoc +++ b/3-practice/LICENCE-POLICY.adoc @@ -236,7 +236,8 @@ Confirmed by the owner 2026-08-26, verified against each repo's root ==== Execution constraint -Per A2, the four flips above are **manual, per-file, owner-only**. No +Per A2, the four flips above are **manual, per-file, and restricted to +registered codeowner-admins**. No agent or script may perform them. This section records *what* is to change and *why it is correct*; it does not authorise an automated sweep, and the presence of a name in the table above must never be read as one. @@ -310,12 +311,12 @@ act. Never touch, normalise, label, add SPDX to, scan, or include 007 in any report or sweep. Surface to the owner only. This overrides Rules 1–3 for 007. -=== A2 — Licence edits are manual, owner-only, never automated +=== A2 — Licence edits are manual, restricted to registered codeowner-admins No automated or bulk SPDX/licence change (sed sweep, script, agent pass) on any estate repo, ever. Prior automated attempts falsified third-party licence authorship — a legal-integrity hazard. Remediation -is manual, per-file, by the owner. An agent may author *new* files with +is manual, per-file, and restricted to registered codeowner-admins. An agent may author *new* files with the correct SPDX from birth, and may set a brand-new repo's own top-level LICENSE — that is authoring, not relicensing. diff --git a/README.adoc b/README.adoc index 18db07c54..70bb5a765 100644 --- a/README.adoc +++ b/README.adoc @@ -23,7 +23,7 @@ routes off them: | You are… | Start at | Then | A **human** | this file (link:README.adoc[README.adoc]) | follow the routing table below -| An **AI agent** | link:0-AI-MANIFEST.a2ml[0-AI-MANIFEST.a2ml] | then follow its routing table +| An **AI agent** | link:0-AI-MANIFEST.deed[0-AI-MANIFEST.deed] | then follow its routing table |=== Every other "what is this repo" doc is now a thin pointer back to these two diff --git a/standards-map.toml b/standards-map.toml index 79dc98058..900178ff5 100644 --- a/standards-map.toml +++ b/standards-map.toml @@ -33,7 +33,7 @@ [map] repo = "hyperpolymath/standards" version = "1.0.0" -entry_count = 127 +entry_count = 128 generated = false # hand-curated; the district index.adoc files ARE generated checked_by = "scripts/check-standards-map.sh" @@ -1401,17 +1401,30 @@ gate = "" note = "superseded 2026-06-02; retained for provenance, must not read as current" [[entry]] -from = "0-AI-MANIFEST.a2ml" -target = "0-AI-MANIFEST.a2ml" +from = "0-AI-MANIFEST.deed" +target = "0-AI-MANIFEST.deed" district = "onramp" kind = "onramp" files = 1 lifecycle = "versioned" canonical = true canon_slot = "" -canonical_doc = "0-AI-MANIFEST.a2ml" +canonical_doc = "0-AI-MANIFEST.deed" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" + +[[entry]] +from = "standards_chora.deed" +target = "standards_chora.deed" +district = "5-machine" +kind = "index" +files = 1 +lifecycle = "versioned" +canonical = false +canon_slot = "" +canonical_doc = "standards_chora.deed" +gate = "deed-conformance" +note = "repository identity and state-source routing; evidence pointers do not confer normative authority" [[entry]] from = "AGENTS.adoc" @@ -1424,7 +1437,7 @@ canonical = true canon_slot = "" canonical_doc = "AGENTS.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "CHANGELOG.adoc" @@ -1437,7 +1450,7 @@ canonical = true canon_slot = "" canonical_doc = "CHANGELOG.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "EXPLAINME.adoc" @@ -1450,7 +1463,7 @@ canonical = true canon_slot = "" canonical_doc = "EXPLAINME.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "QUICKSTART-DEV.adoc" @@ -1463,7 +1476,7 @@ canonical = true canon_slot = "" canonical_doc = "QUICKSTART-DEV.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "QUICKSTART-MAINTAINER.adoc" @@ -1476,7 +1489,7 @@ canonical = true canon_slot = "" canonical_doc = "QUICKSTART-MAINTAINER.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "QUICKSTART-USER.adoc" @@ -1489,7 +1502,7 @@ canonical = true canon_slot = "" canonical_doc = "QUICKSTART-USER.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "README.adoc" @@ -1502,7 +1515,7 @@ canonical = true canon_slot = "" canonical_doc = "README.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "ROADMAP.adoc" @@ -1515,7 +1528,7 @@ canonical = true canon_slot = "" canonical_doc = "ROADMAP.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "TOPOLOGY.adoc" @@ -1528,7 +1541,7 @@ canonical = true canon_slot = "" canonical_doc = "TOPOLOGY.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "llm-warmup-dev.adoc" @@ -1541,7 +1554,7 @@ canonical = true canon_slot = "" canonical_doc = "llm-warmup-dev.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "llm-warmup-user.adoc" @@ -1554,7 +1567,7 @@ canonical = true canon_slot = "" canonical_doc = "llm-warmup-user.adoc" gate = "canon-self-conformance" -note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.a2ml machine); every other doc is a thin pointer" +note = "two canonical front doors (README.adoc human, 0-AI-MANIFEST.deed machine); every other doc is a thin pointer" [[entry]] from = "www" diff --git a/standards_chora.deed b/standards_chora.deed new file mode 100644 index 000000000..b116359fa --- /dev/null +++ b/standards_chora.deed @@ -0,0 +1,26 @@ +;; SPDX-License-Identifier: MPL-2.0 +;; SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) +(repo-deed + :schema-version "1.0.0" + :canonical-name "standards" + :repo-uuid #u8"gv-clade-index:github.com/hyperpolymath/standards" + :beholding-chora #u5"estate/chora" + (identity :owner "hyperpolymath" :primary-forge github) + (front-doors :human "README.adoc" :agent "0-AI-MANIFEST.deed") + (authority + :constitution "0-canon/constitution/" + :licensing "3-practice/LICENCE-POLICY.adoc" + :agent-policy ".claude/CLAUDE.md") + (routing + :deed "1-formats/deed/" + :contracts "1-formats/k9/" + :coordination "2-protocols/k9-coordination/" + :enforcement ".github/workflows/") + (status + :evidence-source ".machine_readable/descriptiles/STATE.a2ml" + :interaction-source ".machine_readable/descriptiles/AGENTIC.a2ml" + :evidence-status "Legacy source pointers, not revalidated readiness claims; A2ML is retired and must not be extended.") + (policies + (licensing + :initial-assignment "Agents may author new files with the correct SPDX under repository policy, and initialise a brand-new repository's LICENSE." + :existing-declarations "Manual-Only; changes restricted to registered codeowner-admins. Agents flag drift and never sweep or relicense existing content.")))