Repository navigation
DEED conversion campaign — tracking & acceptance criteria (.a2ml → .deed) #837
Description
Activity
Redirect layer landed: PR #838 (open) fixes every broken pointer this issue's hazard table named — #64 → here in both spec copies, all
abnf/deed.abnflinks resolved per-doc-depth to the file holding the cited content, K9-spec links repointed, three extra dead links ina2ml/anchor/README.adocrepaired, and both grammar files now carry comment-only banners stating the two-file situation. No normativity verdict was stamped (no renames): the surviving decision is the canonical-file ruling (likelygit mv deed.anbf deed.abnf+ archive rename todeed.abnf_v0.1), which the PR body proposes for your ruling.Also today: echidna a2ml-job eviction = PR #836 (open). Both PRs await merge; nothing in this campaign issue's order §6 starts before them.
- added a commit that references this issue
on Sep 17, 2026 Merge trail: PR #838 (pointer redirects) MERGED 2026-09-17 (
f5ba975e). Hazards §4 items 2-3 are resolved by it; item 1 (canonical grammar file + rename) remains the open ruling. PR #836 (idris2-a2ml eviction) also MERGED (5574d3c4) — the deferred-corpus list in echidna-verify is now: lol + AVOW guarded-dormant, A2ML gone for good.Progress: first campaign deliverable is up as PR #840 — the mapping-spec frame (
1-formats/deed/mappings/README.adoc) plus family 1:CLADE.a2ml → repo-deed.- Full field table; enums + closed taxonomies carried verbatim as symbols (incl. the harden(ci): estate-wide concurrency-cancel guard + scope affinescript-verify push #122
hub/satellitelineage values, else they lose their other home). - P-1..P-5 provenance rules: uuid re-derive fail-closed (never copy); source must parse as a2ml first; every emitted deed parses against the normative grammar;
estatestem dispatch fail-closed; CLADE-003/004/005/006 gate semantics re-expressed before the checker retires. :beholding-chorais resolved from the registry with refuse-to-emit absent — no invented identifiers.- Worked translation of the real rsr-template instance, machine-checked structurally before commit.
- Three open questions recorded (§8), NOT decided in the PR.
Still gated on owner alone: the canonical-grammar-file ruling (rename/archival from #838's body). Everything else in §6 unblocked once #840 lands.
- Full field table; enums + closed taxonomies carried verbatim as symbols (incl. the harden(ci): estate-wide concurrency-cancel guard + scope affinescript-verify push #122
- added 6 commits that reference this issue
on Sep 17, 2026 Documentary grounding for family 3: the v2 thin-journal doctrine that #843 cites now has its exact citation pinned —
1-formats/templates/STATE.a2ml.v2.spec.adoc(v2.0.0-draft, 2026-04-05), with live siblingsSTATE.a2ml.v2.template,state-migrate-v1-to-v2.sh,state-scm-to-v2.jl.Two facts worth the record:
-
The v2 spec's "Removed v1 field → where it lives now" table independently corroborates docs(deed): mapping spec family 3 — STATE v1 decision spec (options + recommendation) #843's option B: session history → git log, completion % → VeriSimDB, milestones → ROADMAP, metadata → META, related projects → ECOSYSTEM. The doctrine predates the campaign; the campaign is its faithful continuation.
-
The v2 model (phase / blockers / last_action / next_action / session_marker / updated) survives the a2ml deprecation — its consumers (VeriSimDB STATE-journal octad, PanLL session-resume, coordination.k9 reflex guards) want the fields, not the container. The container's grammar (a
@state … @enddirective dialect) is deed-era dead, and its k9-init path was never finished. New open residual for the owner, alongside docs(deed): mapping spec family 3 — STATE v1 decision spec (options + recommendation) #843's maturity question: where does the live v2 journal live in the deed era — a(state-journal …)clause or consumer-side ingest elsewhere? Placement ruling, not mapping fact.
-
- added 3 commits that reference this issue
on Sep 17, 2026 Conformance lane up: PR #849. The campaign now has its tooling half alongside the spec half (#840–#848 all merged). Highlights:
deed_lint.py: full validator fordeed.anbfv1.0.0 (14-case self-test + fixture dir green, incl. a REAL translated deed)a2ml_to_deed.py: implements exactly the mapping specs, nothing more. Full six-instance translation of rsr-template-repo passes end-to-end (uuid oracle verified:uuid5(URL, github.com/hyperpolymath/rsr-template-repo) == a5ea1382-…)- Fail-closed caught three live un-tabled surfaces → PRs docs(deed): family-2 table extension — axis-3-audit-rules populated, ADR array format #846/docs(deed): family-4 extension — [methodology] tabled; D4-1 comment-canon doctrine #847/docs(deed): family-4 completion — PLAYBOOK [rsr-repo-skeleton] tabled #848 extended the tables exactly as the frame prescribes
- CI:
deed-conformance.ymlgates self-test → fixtures → every committed *.deed
Findings delivered, NOT silently fixed:
- standards' own
.machine_readable/CLADE.a2mlis missingprimary-name(CLADE-006 territory) — the translator correctly refuses to translate it. Needs an instance fix by the owner (or a rule that template-era instances get repaired at mint-time). - Scorecard census (this repo's corpus): 28 files, 48 absolute-path leak lines (
/home/user/standards/…). Full TSV rides with the residue artefacts for the owner-side clean per docs(deed): mapping spec family 5 — scorecard corpus decision + path-leak remediation #845's remediation.
Everything now executable without owner input is executed. Remaining gated on you: the rulings bundled earlier (canonical grammar filename; #843's STATE option +
:maturityextension; #845's scorecard option B + journal placement; #840's three open questions), the actual conversion wave (needs those rulings + a repo where deeds may land), and #645's re-propagation run.9 remaining items
Mapping spec DRAFT #1 — ply manifests (the 49% family) — for ruling
Per the 2026-09-19 rulings: a2mliser is retired (owner deleting it), so mapping specs + a spec-driven emitter carry the translation. This is the first spec, covering the largest family (3,678 of 7,494 sampled files; 77 in rsr alone).
The one open question is §2 — target form. Ply manifests are per-directory, but DEED's four forms have no per-directory shape:
- A (recommended) — one repo-deed per repo: the ply tree folds into a single
<reponame>_chora.deed; depth survives as:ply Ndata; no grammar change - B — one
<dirname>_chora.deedper directory (mechanical 1:1, but stretches_chorasemantics and multiplies dispatch hazards) - C — new fifth form (violates the four-form classification; last resort)
Grammar-hygiene hazards 1–2 of this issue are cleared by the merged reconciliation (#856: one normative
deed.abnf).
MAPPING SPEC — ply manifests (
0.x-AI-MANIFEST.a2ml) → DEED · DRAFT FOR RULINGFamily: ply manifests — 49% of the estate's 20,881
.a2mlfiles (3,678 of 7,494 sampled;
77 in rsr-template-repo alone). Campaign: standards #837. Status: DRAFT — owner ruling 2026-09-19
assigned this spec as the translation authority after a2mliser's retirement.1. Source form (what exists today)
YAML-ish manifests with
---separators, one per repository directory, ply number = depth:# SPDX-License-Identifier: MPL-2.0 --- ### [META] id: "wikis-track" level: 2 parent: "../0.1-AI-MANIFEST.a2ml" --- ### [AI_MANIFEST] description: | Long-form collaborative documentation… invariants: - "Primary wiki format MUST be Markdown (.md)…"Observed fields: META{id, level, parent}, AI_MANIFEST{description, invariants, (occasional
extras per family)}. Root form0-AI-MANIFEST.a2ml(level 0) sits at repo root.2. Target-form decision — THE open question (needs ruling)
DEED dispatches on filename stem into exactly four forms; none is per-directory by design.
Three options:Option A — one repo-deed per repo (RECOMMENDED). Collapse each repo's ply tree into a
single<reponame>_chora.deed(repo-file form), carrying one clause per former ply node.
Depth survives as data (:ply Ninside each clause), not as filename arithmetic.
Pro: matches the four-form dispatch with zero grammar extension; one deed per repo is what
validators/consumers expect; parent-links become clause nesting. Con: large deeds for deep
trees (developer-ecosystem: 3,857 source files — its ply tree needs chunking rules).Option B — one deed per directory.
<dirname>_chora.deedper former ply file.
Pro: mechanical 1:1. Con: stretches_chora(repo-deed) semantics to subdirectories;
hundreds of tiny deeds; dispatch collisions where dir names end in_praxis/_choraor
equalATLAS/estate_chora(the §chora-dispatch-exclusion hazard multiplies).Option C — new form. Grammar extension (e.g.
*_topos.deedfor subtree-deeds).
Con: changes the normative grammar mid-campaign; violates "classify into one of the four
forms"; only if A and B are both rejected.3. Field mapping (Option A; symmetric for B)
ply manifest deed (repo-file) notes file 0.x-AI-MANIFEST.a2mlat depth xclause (dir <path> …)inside<repo>_chora.deedpath relative to repo root :schema-version:schema-version "1.0.0"required on every deed form — NEW field, header position ;; SPDX…header;; SPDX-License-Identifier: MPL-2.0licence per-file as today META id :id "…"META level :ply Ndepth preserved as data META parent clause nesting / :parent "…"prefer nesting under Option A AI_MANIFEST description :description "…"stringAI_MANIFEST invariants :invariants (…)list of stringssemantics-critical: acceptance greps run against these Semantics that MUST survive (campaign acceptance, §837): per-directory licence defaults,
invariant strings verbatim (they carry rulings — e.g. the wiki-md invariant), parent
lineage, ply depth.4. Filename rule
- Root
0-AI-MANIFEST.a2ml→ the repo-deed itself:<reponame>_chora.deedat repo root. - Stem constraint check: reponame ∉ {
estate, …} per dispatch rules — repos named
estate*need the §chora-dispatch-exclusion side condition tested (estate-file first).
5. Consumer updates carried by each translation PR
- rsr:
dogfood-gate.ymlreadsrsr-profile.a2ml(different family, separate spec); ply
consumers =scripts/gen-repo-map.sh,build/just/repo-init.just, e2e assertions,
.machine_readable/README.adoc— update in-repo with the translation. - standards:
scripts/check-manifest-ply.sh(advisory ply checker) retargeted to the deed
form or retired with the campaign. - cicd-suite: manifest-check gate dual-accept already; ply-aware checks audited per repo.
6. Sequencing within the family
- Ruling on §2 (A/B/C).
- One pilot repo with a shallow tree (rsr-template-repo, 77 files) — translate by hand/script
per this spec, witness through the full gate suite. - Script the mechanical parts (META/AI_MANIFEST → clause emission) — the script is
campaign tooling owned by deed-ecosystem (a2mliser retired by owner ruling; a small
spec-driven emitter replaces it, or the conversion stays scripted-per-repo). - Propagate estate-wide via the update mechanism (262-repo automation precedent),
deepest trees last (developer-ecosystem needs the chunking rule from §2-A first).
7. Explicitly out of scope here
Other families get their own specs in census order:
.machine_readable/other (26%),
contractiles (11%), STATE (4%), then the long tail..a2mldata files of non-manifest
families (scorecards, descriptiles, policies…) are NOT ply manifests.- A (recommended) — one repo-deed per repo: the ply tree folds into a single
RULING LANDED 2026-09-19 — §2 target form: Option A (owner ruled)
One repo-deed per repo. Each repository's ply tree collapses into a single
<reponame>_chora.deed(repo-file form); every former ply node becomes a clause, depth survives as data (:ply N), parent-links become clause nesting. No grammar extension; dispatch stays within the four forms. Deep-tree repos (developer-ecosystem, 3,857 files) need the chunking rule before wave 4 reaches them — pilot on rsr-template-repo (77 ply manifests) first.Spec (
mapping-spec-ply-manifests-DRAFT.md, posted above) is now RATIFIED on §2; remaining spec sections (field mapping, sequencing) stand as drafted unless amended in pilot.Also merged today: grammar reconciliation (#856 — one normative
deed.abnf) and the wiki-doctrine fix (rsr#168 — wikis.md, rest.adoc). Estate audit on the template: all 26 gates GREEN as of run 35462811612 on7c804f5.- added a commit that references this issue
on Sep 19, 2026 PILOT EXECUTED — Ruling A landed on rsr-template-repo (PR hyperpolymath/rsr-template-repo#176).
The fold. All 83
0.N-AI-MANIFEST.a2ml→ onersr-template-repo_chora.deedat root:- family 7 (root INI allocation manifest) →
(manifest …)permappings/ai-manifest-decision.adoc: 4 agents as verbatim SYMBOLs, 2 policy rules, 4 work items, metadata/project fields — all verbatim. - ply tree (77 META-shape + 2 prose + 3 stub manifests; 82 directories) →
(ply (directory …))clauses: parent-links become nesting,level:becomes:plytier data carried verbatim (it is not filesystem depth —docs/governanceis tier 1 at depth 2), descriptions / ordered invariants / canonical-locations preserved.
Grammar finding for the campaign record: the decision spec's
(policy (rules (…)))sketch is not grammar-conformant — clauses cannot hold bare list values (deed.abnfclauseproduction; deed_lint rejects). Minimal conforming form::rulesas a field with a list value (order preserved; semantics identical). Flagging so the family-7 translator encodes the field form.Lane discipline held: nothing was written unless
tools/deed_lint.pyvalidated grammar + filename dispatch first; the emitter failed closed four times during development (unknown fields, level≠depth assumption, ungrammatical list children, block-scalar boundaries) — every failure surfaced, nothing guessed. Acceptance audit re-parsed the deed AST against every source file: ids/tiers/descriptions/invariants/canonical-locations 1:1; #858 §5 acceptance greps pass.Drop-doctrine disclosures:
build/container's[USAGE]how-to prose dropped (data sections carried, including FILE_RELATIONSHIPS); prose manifests' instructional sections dropped; stale[DATE]token row removed; the Mustfiletemplate-readonlycheck retired (it grepped a marker that existed nowhere — fake-gate class).Next proposed: graduate the family-7 + ply modes into
tools/a2ml_to_deed.pyso the wave inherits a tested translator, then apply the pilot's consumer checklist (root-allow glob-entry pattern, repo-init rename-not-token rule, validator recogniser sync) as the estate-wide playbook.- family 7 (root INI allocation manifest) →
Ruling register R1–R11 — the campaign's whole open-question stack, answerable directly here
Reply terse if you like (
R2: yes,R6: canonical-name…). Each answer becomes a recorded ruling, tabled into the specs/tools with the date — same pattern asminted-from/registry. Replying "defaults" accepts the recommended option on every question.
R1 — Grammar canonical filename. Rename
1-formats/deed/spec/abnf/deed.anbf→deed.abnf(the content is v1.0.0, the extension is a typo) AND rename the archivedeed.abnf_v1.0→deed.abnf_v0.1(its content is the v0.1.0 draft; the current name lies). Yes / no / different spelling?R2 — STATE option (family 3, #843). Confirm option B: extract genuinely-statal fields (
[position] phase/maturity) into the CLADE status clause; v1 files tombstoned to an archive surface; milestone/blocker/action journal rows do NOT translate. Yes / no?R3 —
:maturityextension. Approve the one-field vocabulary extension(status … :maturity X)with closed setexperimental alpha beta production lts(SYMBOL)? yes / no / revise-set?R4 — v2-journal placement. In the deed era, where does the live v2 thin-journal (phase / blockers / last_action / next_action, per
STATE.a2ml.v2.spec.adoc) live?
(a) a(state-journal …)clause on the repo deed;
(b) stays a repo-local file ingested by consumers (VeriSimDB STATE-journal octad, PanLL resume panel, k9 reflex guards) with the deed pointing at it;
(c) other — tell me.R5 — Scorecards (family 5, #845). Confirm option B: freeze the 70+ corpus to a tombstoned archive; exactly one aggregate
(assessment …)clause per previously-covered spec_id on the assessed repo's deed; future assessments emitted in the deeds era by estate-audit. Yes / no? And subsidiary: clean the 48 absolute-path leak lines (/home/user/standards/…) in place before archiving — yes / no?R6 — Deed filename stem.
<stem>_chora.deedstem = repo canonical-name (stable identity — my recommendation, and what marid already ships) or repo prefixed-name (reads nicer inls; changes when a clade is chosen → rename churn)?R7 — gv-clade-index wave. Does the clade registry migrate to the estate chora in this wave, or does it stay the external authority point that
:beholding-choraresolves from until a later campaign?R8 — Chora convention. marid ships
:beholding-chora #u5"estate/chora". Ratify that NAME form as the wave convention? And for repos minted before any chora is registered: keep translator refuse-to-emit (my recommendation) or a ruled placeholder?R9 — standards' own CLADE.a2ml. Its instance lacks
primary-name(CLADE-006 territory; the translator correctly refuses it).
(a) I repair the instance to the template field set and post the exact one-line diff here first;
(b) you repair it;
(c) leave fail-closed until the wave reaches it.R10 — Family 7, AI-MANIFEST (PR #858, bundled asks).
(a) Confirm option A:(manifest …)clauses on the repo deed (praxis-deed rejected in the spec, with reasons);
(b) agent seen-set closed-and-ruled (CLAUDE CHATGPT GEMINI VIBE) or open-with-review-flag (translator emits, flags unknowns)?
(c) Where is the AI-MANIFEST generator's home (the ~900-file emit source)? Wave rule is generator-first per the #645 lesson; I need the location.R11 — marid's
0-AI-MANIFEST.deedcleanup. The renamed-not-translated file flagged today:
(a) you handle marid-side (delete + regenerate once family 7 lands);
(b) I open a cleanup PR to marid after family 7 is ruled;
(c) leave as a live demonstration of the hazard class until the wave reaches marid.
Current interaction state (for completeness): PR #858 (family-7 decision spec) is open; R10(a)'s confirmation is its only gate. Everything else in the campaign that could execute without a ruling has executed — this register IS the boundary.
- addedmigrationPorting between languages or toolchains (e.g. -> AffineScript)Porting between languages or toolchains (e.g. -> AffineScript)priority:p1High - schedule nextHigh - schedule nextscope:estateAffects many or all repos across the estateAffects many or all repos across the estatestatus:needs-rulingAwaiting an owner decisionAwaiting an owner decision
on Sep 30, 2026 R5 — RULED 2026-10-09: option B, with the leak clean first (owner)
This answers R5 from the ruling register, main question and subsidiary together:
- Main: freeze the scorecard corpus to a tombstoned archive. Put exactly one aggregate
(assessment …)clause per previously coveredspec_idon the assessed repo's deed. Future assessments come from estate-audit in the deed era. - Subsidiary: clean the absolute-path leak lines in place before archiving.
Increment 1 is #1216 (draft, stacked on #1213). It contains:
- the leak clean, then the move to
.machine_readable/archive/scorecards-v1/with a README tombstone; - the four consumers repointed;
- the ruling recorded in
1-formats/deed/mappings/scorecard-corpus-decision.adoc§5.
Measured, not estimated:
- The corpus is 29 records plus the schema, not 70+.
- The leak count is 47 lines (50 occurrences), not 48. fix(main-red): repair the post-#899 red main (code + baseline triage + regen) #947 (
7b05a323, 2026-09-22) had already rewritten one of the 48. All 47 are cleaned, and 0 remain.
Still open on this ruling:
- Increment 2: one
(assessment …)clause perspec_id, with counts computed from the archived records. This needs a<repo>_chora.deedfor standards itself, which does not exist yet. Acceptance item 3 (the forward link) is met by the directory tombstone, not by editing frozen.a2mlrecords. - Increment 3: the estate-audit emitter.
- Main: freeze the scorecard corpus to a tombstoned archive. Put exactly one aggregate
Status: tracking issue, opened 2026-09-17 after the owner ruling that the a2ml project is officially retired and that
.a2mlartifacts are to be translated using the DEED grammar. No conversion PRs are attached yet — this issue is the campaign's acceptance surface. (The DEED README's(#64)reference for "the conversion campaign" resolves to an unrelated closed Hypatia issue; this issue replaces that dangling pointer.)What DEED requires (implications for every translation)
key = value, no[section]productions — "a file using=is not a deed." Translation is a rewrite into target forms, not a surface transform.estate_chora.deed→ estate-deed;ATLAS.deed→ estate-atlas-deed;<stem>_praxis.deed→ praxis-deed;<stem>_chora.deed→ repo-deed. Normative side condition (not ABNF-expressible): in repo-file, stem ≠estate, andestate_chora.deedalso matches repo-file — implementations MUST test estate-file first (spec §chora-dispatch-exclusion; ruled on standards#752).:schema-version. Header =;; SPDX-…lines..a2mlartifact must therefore first be classified into one of the four forms; per-family mapping specs are the prerequisite of any mass translation.Grammar/surface hazards to fix BEFORE any translator is written
1-formats/deed/spec/abnf/deed.anbfanddeed.abnf_v1.0diverge — one must be ruled normative and the other deleted/aliased.../abnf/deed.abnf— that file does not exist.Semantics that MUST survive translation (acceptance criteria)
These live only in about-to-be-translated surfaces and have no deed-era home yet — the campaign is not done until each is greppable in the deed era:
1-formats/templates/STATE.a2ml.template:46comment (fixed by #645)[lineage] typeincl.hub/satellite(satelliteparentstays"")build/templates/CLADE.a2ml.in(fixed by rsr#122)statusincl.planned(≡ CLADE phasereserved) + AUTHORITY rule (CLADE phase wins on disagreement; STATE is re-derived).machine_readable/descriptiles/STATE.a2ml:141-formats/templates/STATE.a2ml.v2.spec.adocExisting tooling honesty
state-migrate-v1-to-v2.sh/state-scm-to-v2.jl(1-formats/templates/) are STATE-only and target the pre-DEED@statethin journal — they are not.a2ml → .deedtranslators. No general translator exists. Recommend a single canonical campaign translator (avoid the pin-generator trap of N writers).Recommended campaign order
abnf/deed.abnflinks; point the README at THIS issue. (Prepared but held for owner review.)CLADE/META/ECOSYSTEM/AGENTIC/NEUROSYM/PLAYBOOK → repo-deedclause mapping; STATE → journal/praxis-deeddecision; scorecards → repo-deed-clause vs separate form..machine_readable/(dogfood) → rsr-template mint sources → estate wave; flipassess.justRSR gates from.a2mlpresence to.deedpresence alongside.hub|satellite|planned|reserved, PMPL carve-out wording).Related
idris2-a2mlCI job evicted with anti-deadlock ruleset verification.*.scorecard.a2mlin standards.machine_readable/, 6 template families, 435 estate repos with descriptiles (assess.just gates).