From 5537a04735ae165c928d4ed0b6244bc3a6133b56 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 20 Sep 2026 12:04:49 +0000 Subject: [PATCH 1/2] test: align suite with RSR merge categories and specify Core Aspect tests ignore Zig cache and prohibition-comment false positives. Add lifecycle, honest P2P skip, and Core spec guards. CRG recipes read docs/status/READINESS.adoc. Core syntax and checking judgements are specified; the checker is not claimed implemented. Refs: hyperpolymath/panoply#5 --- Justfile | 53 +++++++----- docs/status/TEST-NEEDS.adoc | 5 +- src/core/CORE-JUDGEMENTS.adoc | 149 ++++++++++++++++++++++++++++++++++ src/core/CORE-SYNTAX.adoc | 137 +++++++++++++++++++++++++++++++ src/core/README.adoc | 20 +++-- tests/aspect_tests.sh | 20 ++++- tests/core_spec.sh | 24 ++++++ tests/lifecycle.sh | 60 ++++++++++++++ tests/p2p.sh | 27 ++++++ 9 files changed, 462 insertions(+), 33 deletions(-) create mode 100644 src/core/CORE-JUDGEMENTS.adoc create mode 100644 src/core/CORE-SYNTAX.adoc create mode 100755 tests/core_spec.sh create mode 100755 tests/lifecycle.sh create mode 100755 tests/p2p.sh diff --git a/Justfile b/Justfile index 4e82242..d609399 100644 --- a/Justfile +++ b/Justfile @@ -151,33 +151,44 @@ bench: @echo "Running benchmarks..." bash benches/template_bench.sh -# Print the current CRG grade (reads from READINESS.md '**Current Grade:** X' line) +# Print the current CRG grade (docs/status/READINESS.adoc) crg-grade: - @grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \ - [ -z "$$grade" ] && grade="X"; \ - echo "$$grade" + #!/usr/bin/env bash + set -euo pipefail + grade=$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' docs/status/READINESS.adoc 2>/dev/null | head -1 || true) + [ -z "$grade" ] && grade="X" + echo "$grade" # Print a shields.io CRG badge for embedding in README files -# Looks for '**Current Grade:** X' in READINESS.md; falls back to X crg-badge: - @grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \ - [ -z "$$grade" ] && grade="X"; \ - case "$$grade" in \ - A) color="brightgreen" ;; \ - B) color="green" ;; \ - C) color="yellow" ;; \ - D) color="orange" ;; \ - E) color="red" ;; \ - F) color="critical" ;; \ - *) color="lightgrey" ;; \ - esac; \ - echo "[![CRG $$grade](https://img.shields.io/badge/CRG-$$grade-$$color?style=flat-square)](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)" - -# Run the full merge-requirement test suite (ALL categories) -# Per STANDING rule: P2P + E2E + aspect + execution + lifecycle + bench -test-all: test e2e aspect bench + #!/usr/bin/env bash + set -euo pipefail + grade=$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' docs/status/READINESS.adoc 2>/dev/null | head -1 || true) + [ -z "$grade" ] && grade="X" + case "$grade" in + A) color="brightgreen" ;; + B) color="green" ;; + C) color="yellow" ;; + D) color="orange" ;; + E) color="red" ;; + F) color="critical" ;; + *) color="lightgrey" ;; + esac + echo "[![CRG ${grade}](https://img.shields.io/badge/CRG-${grade}-${color}?style=flat-square)](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)" + +# Run the full merge-requirement test suite +# Categories: execution (`test`) + E2E + aspect + bench + lifecycle + P2P +test-all: test e2e aspect bench lifecycle p2p @echo "All test categories passed — safe to merge!" +# Lifecycle: build → test → clean (FFI); skips Idris2 if absent +lifecycle: + bash tests/lifecycle.sh + +# P2P: honest skip until a peer protocol exists; fails if P2P source appears untested +p2p: + bash tests/p2p.sh + # Run all quality checks quality: fmt-check lint test @echo "All quality checks passed!" diff --git a/docs/status/TEST-NEEDS.adoc b/docs/status/TEST-NEEDS.adoc index 11e0b8a..0a1550d 100644 --- a/docs/status/TEST-NEEDS.adoc +++ b/docs/status/TEST-NEEDS.adoc @@ -18,7 +18,10 @@ Idris2 ABI / Zig FFI scaffold, not language semantics. | *Unit tests* | 3 | Inline `test` blocks in `main.zig` (lifecycle, error handling, version) | *Integration tests* | 15 | `src/interface/ffi/test/integration_test.zig` — exercises every exported FFI function (lifecycle, process, process_array incl. null-buffer, strings, version/build_info, error handling, callbacks) | *E2E tests* | 1 | `tests/e2e.sh` — preflight (idris2/zig on PATH) + `idris2 --build src/interface/abi.ipkg` + `zig build test` -| *Aspect tests* | 1 | `tests/aspect_tests.sh` — SPDX header coverage + dangerous-pattern scan (real gate; currently reports one known false positive on doc prose mentioning "Admitted"/"sorry") +| *Aspect tests* | 1 | `tests/aspect_tests.sh` — SPDX headers (ignores `.zig-cache`) + dangerous-pattern scan on *code* (prohibition comments / `.adoc` are not hits) +| *Lifecycle tests* | 1 | `tests/lifecycle.sh` — zig build/test/clean; skips Idris2 if absent +| *P2P tests* | 1 | `tests/p2p.sh` — honest SKIP until a peer protocol exists; FAIL if P2P-shaped source appears untested +| *Core spec tests* | 1 | `tests/core_spec.sh` — guards issue #5 specification artefacts | *Workflow tests* | 1 | `tests/workflows/validate_workflows_test.sh` | *Benchmarks* | 3 | `benches/template_bench.sh` (Zig build, Zig tests, workflow validation) | *Fuzz tests* | 0 | `verification/fuzzing/` scaffold present; no harness wired yet diff --git a/src/core/CORE-JUDGEMENTS.adoc b/src/core/CORE-JUDGEMENTS.adoc new file mode 100644 index 0000000..f2a532d --- /dev/null +++ b/src/core/CORE-JUDGEMENTS.adoc @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 +// Copyright (c) Jonathan D.A. Jewell += Panoply Core — Checking Judgements +:toc: +:toc-placement: preamble + +Normative checking judgements for Core. Syntax is +xref:CORE-SYNTAX.adoc[CORE-SYNTAX.adoc]. + +A *successful check is not a boolean*. It yields **evidence**: a +structured witness of the facts established. Pass/fail without evidence +is not a Panoply check (charter: no envelope without evidence). + +The *format* of evidence (proof / check / runtime-discipline) is owned +by `src/evidence/` (issue #6). This document names **which facts** a +successful check establishes so evidence can point at them. + +== Judgement forms + +[cols="2,3,3",options="header"] +|=== +| Form | Read as | Establishes + +| `⊢ Γ ctx` | `Γ` is a well-formed context | name uniqueness; sorts of binders +| `Γ ⊢ A : s` | `A` is a type of sort `s` | well-sortedness of `A` +| `Γ ⊢ t : q A` | `t` has type `A` at usage `q` under `Γ` | typing *and* usage +| `Γ ⊢ t ↝ E : q A` | checking `t` produces evidence `E` | the Panoply result +| `Γ ⊢ A ≡ B` | definitional equality | conversion +|=== + +The operational judgement used by projections is **`Γ ⊢ t ↝ E : q A`**. +The boolean “it typechecks” is the special case “`E` is well-formed”. +Implementations MUST NOT expose a public API that returns only a boolean. + +== Facts a successful check establishes + +When `Γ ⊢ t ↝ E : q A` holds, the following facts are *named* (and must +appear inside `E` or be pointed to by `E`): + +. **Well-typedness** — `t` inhabits `A` under `Γ`. +. **Usage** — every affine (`1`) binding in `Γ` is used at most once + along every path of `t`; unrestricted (`ω`) bindings may be copied; + erased (`0`) bindings do not occur in computationally relevant + positions. +. **Sort** — `A` itself is well-sorted (`Γ ⊢ A : s` for some `s`). +. **No implicit promotion** — no `Linear` value was treated as + `Type` without an explicit `Lift`/`wrap`. +. **Feature wrappers** — every `wrap k` in `t` is recorded; wrappers + do not inherit neighbour envelopes. +. **Absence of global safety** — `E` does **not** contain a fact + “this program is safe”. It contains the finite list above. + +What a check does *not* establish (must not be smuggled into `E`): + +* backend preservation (that is a backend-contract fact, issue #9); +* projection equivalence (issue #8); +* soundness of Core itself (metatheory, issue #10). + +== Evidence yield (interface to issue #6) + +`E` is an evidence *bundle*: + +---- +E ::= { kind, obligation-id, subject, facts, status } +---- + +* `kind` ∈ { `proof`, `check`, `runtime-discipline` }. + A Core *implementation* of these judgements is a **check** unless a + mechanised metatheory (issue #10) elevates a fact to `proof`. +* `obligation-id` names which judgement was run (e.g. `core.typing`). +* `subject` identifies `t` (hash of Core AST). +* `facts` is the finite list in the previous section. +* `status` ∈ { `established`, `refused` }. + +A refused check still yields `E` with `status = refused` and empty +`facts`. Silence is not a result. + +Until `src/evidence/` defines on-disk syntax, `E` is an abstract +record. The checker MUST still construct it in memory. The manifest +emitter (issue #7) MUST refuse an envelope whose `E` is missing or +whose `kind` is mislabelled. + +== Selected rules (sketch, affine fragment) + +=== Contexts + +---- +───────────── (ctx-empty) +⊢ · ctx + +⊢ Γ ctx Γ ⊢ A : s x ∉ Γ +──────────────────────────────── (ctx-ext) +⊢ Γ, x : q A ctx +---- + +=== Variables (usage split) + +---- +⊢ Γ, x : q A, Γ′ ctx q ≠ 0 or computationally-irrelevant +──────────────────────────────────────────────────────────── (var) +Γ, x : q A, Γ′ ⊢ x ↝ E_var : q A +---- + +The remainder of `Γ, Γ′` must be weakenable (all `ω` or `0`) when they +are unused. Affine leftovers are an error — not implicit `drop`. + +=== Abstraction and application + +---- +Γ, x : q A ⊢ t ↝ E_body : r B +────────────────────────────────────────────── (λ) +Γ ⊢ λ (x : q A) → t ↝ E_λ(E_body) : ω (Π (x : q A) → B) + +Γ ⊢ t ↝ E_fn : ω (Π (x : q A) → B) +Γ ⊢ u ↝ E_arg : q A +────────────────────────────────────────────── (app) +Γ ⊢ t u ↝ E_app(E_fn, E_arg) : ω B[u/x] +---- + +Usage of `u` is exactly `q` from the Π. Applying a `1`-function twice +is not derivable. + +=== Tensor + +---- +Γ₁ ⊢ t ↝ E_t : q A Γ₂ ⊢ u ↝ E_u : r B Γ = Γ₁ ⋈ Γ₂ +──────────────────────────────────────────────────────── (⊗-i) +Γ ⊢ (t, u) ↝ E_pair : (q A ⊗ r B) + +Γ ⊢ t ↝ E_t : (q A ⊗ r B) +Γ, x : q A, y : r B ⊢ u ↝ E_u : s C +──────────────────────────────────────────────────────── (⊗-e) +Γ ⊢ let (x, y) = t in u ↝ E_split : s C +---- + +`⋈` is context split: affine bindings go to exactly one side. + +== Implementation status + +| Piece | Status | +| --- | --- | +| Syntax | specified (`CORE-SYNTAX.adoc`) | +| Judgements | specified (this file) | +| Checker | **not implemented** | +| Evidence on disk | **not implemented** (issue #6) | +| Mechanised preservation | **not implemented** (issue #10) | + +Per the charter, this document asserts no guarantee it cannot witness. +The specification is the artefact issue #5 asked for. diff --git a/src/core/CORE-SYNTAX.adoc b/src/core/CORE-SYNTAX.adoc new file mode 100644 index 0000000..3fdd61f --- /dev/null +++ b/src/core/CORE-SYNTAX.adoc @@ -0,0 +1,137 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 +// Copyright (c) Jonathan D.A. Jewell += Panoply Core — Abstract Syntax +:toc: +:toc-placement: preamble + +Normative specification of the *checked Core* abstract syntax. +Surface syntaxes are projections; they elaborate *into* this grammar. +Backends lower *from* it. Guarantees are reasoned about here only. + +This document specifies syntax. Checking judgements live in +xref:CORE-JUDGEMENTS.adoc[CORE-JUDGEMENTS.adoc]. Evidence kinds are +specified under `src/evidence/` (issue #6). This file does **not** +assert that a checker is implemented: naming a grammar is not running it. + +== Design constraints (from the charter) + +* Core is the *only* place guarantees are established. +* A surface feature that cannot be expressed or constrained in Core + cannot be guaranteed. +* Core makes **no global safety claim**. It produces *facts*; envelopes + name which facts are claimed. + +== Metavariables + +[cols="1,3",options="header"] +|=== +| Meta | Ranges over + +| `x, y, z` | term variables +| `α, β` | type variables +| `ℓ` | labels (record/variant fields; affine resources) +| `n` | natural numbers (universe / usage levels) +| `q` | usage annotations (`0`, `1`, `ω`) +| `t, u, v` | terms +| `A, B, C` | types +| `Γ` | typing contexts +| `Δ` | usage / affine contexts (same domain as `Γ`, different role) +|=== + +== Usage quantities + +Core is substructural. Every binding carries a quantity `q`: + +---- +q ::= 0 | 1 | ω +---- + +* `0` — inspectable in types only; not consumed as a value (erased). +* `1` — affine: used *at most once*. +* `ω` — unrestricted (intuitionistic). + +Composition of quantities is commutative monoid `(Q, +, 0)` with +`1 + 1` **undefined** in the affine fragment (a term that would require +two uses of an affine binding is ill-usage, not a Core term). +`ω + q = ω`. Scaling `q · r` is the usual product with `0 · q = 0`. + +== Universes and sorts + +---- +s ::= Type n | Linear n +---- + +`Type n` is the unrestricted universe at level `n`. +`Linear n` classifies types whose values are affine by default. +A coercion `Lift : Linear n → Type n` exists only as an *explicit* +term; silent promotion is forbidden (charter: no borrowed claims). + +== Types + +---- +A, B ::= + α (type variable) + | Π (x : q A) → B (dependent product; q is the domain usage) + | ⊗ (x : q A) → B (dependent tensor / affine pair former) + | A ⊸ B (linear function; sugar for Π (x : 1 A) → B) + | A → B (unrestricted function; sugar for Π (x : ω A) → B) + | Unit | ⊤ + | Void | ⊥ + | A ⊕ B (sum) + | A ⊗ B (non-dependent tensor; sugar) + | Ref ℓ A (named resource at label ℓ) + | Wrap k A (feature wrapper; k is a feature-id) + | El t (decode a universe-coded type) +---- + +`Wrap k A` is how experimental features enter Core: as an explicit +wrapper, never as a silent extension of `A`. A wrapper does not inherit +envelopes of `A`. + +== Terms + +---- +t, u ::= + x + | λ (x : q A) → t + | t u (application; usage of u is dictated by Π) + | (t, u) (tensor intro) + | let (x, y) = t in u (tensor elim; splits usage) + | inl t | inr t + | case t of { inl x → u; inr y → v } + | unit + | abort t (from Void) + | pack ℓ t (allocate named resource) + | drop ℓ (consume / discard a 1-resource) + | wrap k t | unwrap k t + | anno t A (ascription) +---- + +There is **no** implicit weakening for `q = 1`. Weakening of `ω` and `0` +is structural. Contraction is allowed only for `ω`. + +== Contexts + +---- +Γ ::= · | Γ, x : q A +---- + +A context is well-formed when names are unique and each `A` is well-sorted +under the prefix (see judgements). + +== What is *not* in Core + +* Surface syntax (indentation, mixfix, do-notation). +* Backend-specific calling conventions. +* Proof objects (those are *evidence*, not Core terms). +* Envelope names (those are *manifest* entries). + +A checker that accepted a program as Core but emitted neither evidence +nor a path to a manifest has not produced a Panoply result. + +== Grammar status + +This grammar is **specified, not implemented**. No parser or elaborator +in this repository yet accepts Core text. Issue #5 tracks the spec; +a checker is subsequent work and must emit evidence per +xref:CORE-JUDGEMENTS.adoc[CORE-JUDGEMENTS]. diff --git a/src/core/README.adoc b/src/core/README.adoc index 437abb0..a9d0e4d 100644 --- a/src/core/README.adoc +++ b/src/core/README.adoc @@ -9,18 +9,24 @@ projects. All guarantees are reasoned about here — never in a surface syntax. [IMPORTANT] ==== -*Not yet implemented.* This is a sketch area describing intended contents and -obligations per the xref:../../docs/architecture/DESIGN-DISCIPLINE.adoc[charter]. -No Core checker exists today (design phase). +*Checker not yet implemented.* The *specification* of syntax and judgements +is in this directory (issue #5). No executable Core checker exists; per the +charter this README asserts no guarantee it cannot witness. ==== -== What will live here +== Specified here + +* xref:CORE-SYNTAX.adoc[CORE-SYNTAX.adoc] — abstract syntax (terms, types, + usage quantities, affine fragment). +* xref:CORE-JUDGEMENTS.adoc[CORE-JUDGEMENTS.adoc] — checking judgements and + the facts a successful check establishes. A check *yields evidence* `E`, + not a boolean. + +== What will live here (implementation) -* The Core abstract syntax (terms, types, the substructural/affine fragment). -* The checking judgements — what it means for a Core term to be well-formed and - what facts a successful check establishes. * The interface every projection elaborates *into* and every backend lowers *from*. +* An executable checker that constructs `E` (blocked on issue #6 formats). == Obligations diff --git a/tests/aspect_tests.sh b/tests/aspect_tests.sh index 69defdd..f0ecba2 100755 --- a/tests/aspect_tests.sh +++ b/tests/aspect_tests.sh @@ -54,7 +54,8 @@ while IFS= read -r -d '' f; do warn "Missing SPDX header: $f" MISSING_SPDX=$((MISSING_SPDX + 1)) fi -done < <(find src/ -type f \( -name "*.rs" -o -name "*.zig" -o -name "*.res" -o -name "*.ex" -o -name "*.exs" -o -name "*.gleam" -o -name "*.idr" -o -name "*.sh" \) -print0 2>/dev/null) +done < <(find src/ -type f \( -name "*.rs" -o -name "*.zig" -o -name "*.res" -o -name "*.ex" -o -name "*.exs" -o -name "*.gleam" -o -name "*.idr" -o -name "*.sh" \) \ + -not -path '*/.zig-cache/*' -not -path '*/zig-out/*' -print0 2>/dev/null) if [ "$MISSING_SPDX" -eq 0 ]; then pass "All source files have SPDX headers" @@ -76,13 +77,24 @@ else pass "No dangerous Idris2 patterns (believe_me, assert_total)" fi -# Coq/Lean dangerous patterns -DANGEROUS_PROOF=$(grep -rn '\bAdmitted\b\|\bsorry\b\|\bunsafeCoerce\b\|\bObj\.magic\b' src/ verification/ 2>/dev/null | grep -v "test" | grep -v "comment" || true) +# Coq/Lean/Haskell dangerous patterns — code tokens only. +# Prohibition comments and AsciiDoc that *name* the banned tokens are not uses. +# Strip line comments (//, --, #, *) and ignore documentation files. +DANGEROUS_PROOF=$( + grep -rnE '\bAdmitted\b|\bsorry\b|\bunsafeCoerce\b|\bObj\.magic\b' src/ verification/ \ + --include='*.v' --include='*.lean' --include='*.agda' --include='*.idr' \ + --include='*.hs' --include='*.zig' --include='*.rs' \ + 2>/dev/null \ + | grep -vE '/(\.zig-cache|zig-out)/' \ + | grep -vE '^\S+:[[:digit:]]+:[[:space:]]*(//|--|#|\*)' \ + | grep -viE 'NO Admitted|no Admitted|must not|MUST NOT|forbid|banned|without (Admitted|sorry)' \ + || true +) if [ -n "$DANGEROUS_PROOF" ]; then fail "Dangerous proof patterns found:" echo "$DANGEROUS_PROOF" | head -5 else - pass "No dangerous proof patterns (Admitted, sorry, unsafeCoerce)" + pass "No dangerous proof patterns (Admitted, sorry, unsafeCoerce) in proof/source code" fi # ═══════════════════════════════════════════════════════════════════════ diff --git a/tests/core_spec.sh b/tests/core_spec.sh new file mode 100755 index 0000000..e61989a --- /dev/null +++ b/tests/core_spec.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# Guards the Core specification artefacts (issue #5). Does not pretend a +# checker exists. + +set -euo pipefail +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$ROOT" +FAIL=0 +fail() { echo "FAIL: $*"; FAIL=$((FAIL + 1)); } +pass() { echo "PASS: $*"; } + +for f in src/core/CORE-SYNTAX.adoc src/core/CORE-JUDGEMENTS.adoc src/core/README.adoc; do + if [[ -f "$f" ]]; then pass "exists $f"; else fail "missing $f"; fi +done + +grep -q 'Π (x : q A)' src/core/CORE-SYNTAX.adoc && pass "syntax names dependent product" || fail "Π missing" +grep -q 'Γ ⊢ t ↝ E : q A' src/core/CORE-JUDGEMENTS.adoc && pass "judgements yield evidence" || fail "evidence judgement missing" +grep -q 'not implemented' src/core/CORE-JUDGEMENTS.adoc && pass "honest unimplemented checker" || fail "must not claim a checker" + +echo "FAIL=$FAIL" +exit "$FAIL" diff --git a/tests/lifecycle.sh b/tests/lifecycle.sh new file mode 100755 index 0000000..6b53ca4 --- /dev/null +++ b/tests/lifecycle.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# Lifecycle tests — install/build/clean round-trip for the FFI scaffold. +# Honest: Core language artefacts are not implemented; this covers the +# Idris2 ABI / Zig FFI that *does* exist. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$PROJECT_DIR" + +PASS=0 +FAIL=0 +SKIP=0 +green() { printf '\033[32m%s\033[0m\n' "$*"; } +red() { printf '\033[31m%s\033[0m\n' "$*"; } +yellow(){ printf '\033[33m%s\033[0m\n' "$*"; } + +pass() { green " PASS: $1"; PASS=$((PASS + 1)); } +fail() { red " FAIL: $1"; FAIL=$((FAIL + 1)); } +skip() { yellow " SKIP: $1"; SKIP=$((SKIP + 1)); } + +echo "PANOPLY — Lifecycle tests" + +if ! command -v zig >/dev/null 2>&1; then + skip "zig not on PATH — cannot exercise FFI lifecycle" + echo "PASS=$PASS FAIL=$FAIL SKIP=$SKIP" + exit 0 +fi + +if (cd src/interface/ffi && zig build); then + pass "zig build (debug library)" +else + fail "zig build" +fi + +if (cd src/interface/ffi && zig build test --summary all >/dev/null); then + pass "zig build test after build" +else + fail "zig build test" +fi + +rm -rf src/interface/ffi/.zig-cache src/interface/ffi/zig-out +pass "clean FFI caches" + +if command -v idris2 >/dev/null 2>&1; then + if idris2 --typecheck src/interface/abi.ipkg; then + pass "idris2 --typecheck abi.ipkg" + else + fail "idris2 --typecheck abi.ipkg" + fi +else + skip "idris2 not on PATH — ABI typecheck not run" +fi + +echo "PASS=$PASS FAIL=$FAIL SKIP=$SKIP" +exit "$FAIL" diff --git a/tests/p2p.sh b/tests/p2p.sh new file mode 100755 index 0000000..717db46 --- /dev/null +++ b/tests/p2p.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# P2P tests — peer/process composition of envelopes. +# Design phase: there is no runtime peer protocol. This gate documents +# the obligation and fails closed only if a claimed P2P surface appears +# without tests. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$PROJECT_DIR" + +echo "PANOPLY — P2P tests" + +# If a peer protocol lands under src/bridges or src/backends, this file +# must grow real cases. Until then, skip is the honest result. +if grep -RIl --include='*.zig' --include='*.idr' -E 'p2p|peer.?to.?peer' src/ 2>/dev/null | grep -q .; then + echo "FAIL: P2P-shaped source exists without a real P2P test harness" + exit 1 +fi + +echo "SKIP: no peer protocol in this repository yet (charter design phase)" +echo "PASS=0 FAIL=0 SKIP=1" +exit 0 From e24ddefc5b0be8cb9def7be16ca31a377edc4b09 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 20 Sep 2026 12:06:57 +0000 Subject: [PATCH 2/2] chore: migrate A2ML to DEED and drop Nix for Guix channels Rename every .a2ml artefact to .deed (canonical machine-readable format). Dogfood validates .deed only and fails on leftover .a2ml. Replace Nix flake fallbacks with Guix + build/.guix-channel. Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> --- .envrc | 8 +--- .gitattributes | 2 +- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 0 .github/CODEOWNERS | 2 +- .github/CONTRIBUTING.md | 4 +- .github/GOVERNANCE.md | 2 +- .github/copilot-instructions.md | 6 +-- .../{validate-a2ml.sh => validate-deed.sh} | 40 ++++++++-------- .github/pull_request_template.md | 6 +-- .github/workflows/dogfood-gate.yml | 36 +++++++------- .github/workflows/guix-nix-policy.yml | 21 ++++---- .github/workflows/openssf-compliance.yml | 12 ++--- .github/workflows/rhodibot.yml | 6 +-- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 16 +++---- ...{0-AI-MANIFEST.a2ml => 0-AI-MANIFEST.deed} | 14 +++--- .../6a2/{AGENTIC.a2ml => AGENTIC.deed} | 14 +++--- .../6a2/{CLADE.a2ml => CLADE.deed} | 0 .../6a2/{ECOSYSTEM.a2ml => ECOSYSTEM.deed} | 2 +- .../6a2/{LANGUAGES.a2ml => LANGUAGES.deed} | 4 +- .../6a2/{META.a2ml => META.deed} | 2 +- .../6a2/{NEUROSYM.a2ml => NEUROSYM.deed} | 2 +- .../6a2/{PLAYBOOK.a2ml => PLAYBOOK.deed} | 14 +++--- .machine_readable/6a2/README.adoc | 12 ++--- .../6a2/{STATE.a2ml => STATE.deed} | 2 +- ...{0-AI-MANIFEST.a2ml => 0-AI-MANIFEST.deed} | 4 +- .../6a2/anchors/{ANCHOR.a2ml => ANCHOR.deed} | 2 +- .machine_readable/6a2/anchors/README.adoc | 8 ++-- ...{ENSAID_CONFIG.a2ml => ENSAID_CONFIG.deed} | 6 +-- .machine_readable/ai/.clinerules | 6 +-- .machine_readable/ai/.cursorrules | 8 ++-- .machine_readable/ai/.windsurfrules | 6 +-- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- .machine_readable/ai/{AI.a2ml => AI.deed} | 8 ++-- .machine_readable/ai/README.adoc | 14 +++--- .machine_readable/bot_directives/README.adoc | 16 +++---- .../{coverage.a2ml => coverage.deed} | 2 +- .../bot_directives/{debt.a2ml => debt.deed} | 2 +- .../{methodology.a2ml => methodology.deed} | 4 +- .machine_readable/compliance/reuse/dep5 | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- .../{Adjustfile.a2ml => Adjustfile.deed} | 4 +- .../{Intentfile.a2ml => Intentfile.deed} | 8 ++-- .machine_readable/contractiles/Justfile | 27 +++++------ .../{Mustfile.a2ml => Mustfile.deed} | 10 ++-- .../{Trustfile.a2ml => Trustfile.deed} | 2 +- .../bust/{Bustfile.a2ml => Bustfile.deed} | 10 ++-- .../dust/{Dustfile.a2ml => Dustfile.deed} | 2 +- ...dback-o-tron.a2ml => feedback-o-tron.deed} | 0 .../integrations/{groove.a2ml => groove.deed} | 0 .../integrations/{proven.a2ml => proven.deed} | 0 .../{verisimdb.a2ml => verisimdb.deed} | 0 .../{vexometer.a2ml => vexometer.deed} | 0 ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...ENANCE-AXES.a2ml => MAINTENANCE-AXES.deed} | 8 ++-- ...CKLIST.a2ml => MAINTENANCE-CHECKLIST.deed} | 4 +- ...2ml => SOFTWARE-DEVELOPMENT-APPROACH.deed} | 0 .machine_readable/root-allow.txt | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- .../scripts/lifecycle/install-tools.sh | 15 ++++-- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- .machine_readable/self-validating/README.adoc | 6 +-- .../examples/setup-repo.k9.ncl | 12 ++--- .../self-validating/methodology-guard.k9.ncl | 10 ++-- 0-AI-MANIFEST.a2ml => 0-AI-MANIFEST.deed | 2 +- GOVERNANCE.adoc | 2 +- Justfile | 28 +++++------ README.adoc | 2 +- build/contractile.just | 8 ++-- build/just/assess.just | 24 +++++----- build/just/groove.just | 10 ++-- build/just/init.just | 6 +-- build/just/validate.just | 42 ++++++++-------- build/setup.sh | 2 - ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 0 container/README.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 2 +- docs/RSR_OUTLINE.adoc | 36 +++++++------- docs/STATE-VISUALIZER.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- docs/architecture/THREAT-MODEL.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- docs/decisions/0001-adopt-rsr-standard.adoc | 10 ++-- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 2 +- docs/governance/CRG-AUDIT-TEMPLATE.adoc | 24 +++++----- .../{CRG-CRITERIA.a2ml => CRG-CRITERIA.deed} | 0 docs/governance/MAINTENANCE-CHECKLIST.adoc | 8 ++-- docs/governance/TEMPLATE-STANDARDS-AUDIT.adoc | 6 +-- docs/governance/TSDM.adoc | 2 +- docs/governance/{TSDM.a2ml => TSDM.deed} | 0 ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- docs/guide/for-maintainers.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- docs/onboarding/QUICKSTART-DEV.adoc | 4 +- docs/onboarding/QUICKSTART-MAINTAINER.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- docs/practice/AI-CONVENTIONS.adoc | 36 +++++++------- docs/practice/STATE-VISUALIZER-GUIDE.adoc | 8 ++-- docs/proposals/root-cleanup.adoc | 10 ++-- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- .../audit/pillar-audit-2026-04-15.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- docs/status/READINESS.adoc | 18 +++---- docs/status/TEST-NEEDS.adoc | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 0 ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- .../{Adjustfile.a2ml => Adjustfile.deed} | 0 .../{Intentfile.a2ml => Intentfile.deed} | 0 .../{Mustfile.a2ml => Mustfile.deed} | 0 .../canonical-directory-structure/README.adoc | 48 +++++++++---------- .../{Trustfile.a2ml => Trustfile.deed} | 0 .../bust/{Bustfile.a2ml => Bustfile.deed} | 2 +- .../dust/{Dustfile.a2ml => Dustfile.deed} | 0 session/dispatch.sh | 2 +- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.4-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.4-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.4-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 0 ...-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} | 2 +- www/.well-known/ai.txt | 4 +- 180 files changed, 475 insertions(+), 478 deletions(-) rename .github/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (100%) rename .github/hooks/{validate-a2ml.sh => validate-deed.sh} (93%) rename .machine_readable/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (66%) rename .machine_readable/6a2/{0-AI-MANIFEST.a2ml => 0-AI-MANIFEST.deed} (86%) rename .machine_readable/6a2/{AGENTIC.a2ml => AGENTIC.deed} (77%) rename .machine_readable/6a2/{CLADE.a2ml => CLADE.deed} (100%) rename .machine_readable/6a2/{ECOSYSTEM.a2ml => ECOSYSTEM.deed} (97%) rename .machine_readable/6a2/{LANGUAGES.a2ml => LANGUAGES.deed} (85%) rename .machine_readable/6a2/{META.a2ml => META.deed} (97%) rename .machine_readable/6a2/{NEUROSYM.a2ml => NEUROSYM.deed} (91%) rename .machine_readable/6a2/{PLAYBOOK.a2ml => PLAYBOOK.deed} (93%) rename .machine_readable/6a2/{STATE.a2ml => STATE.deed} (98%) rename .machine_readable/6a2/anchors/{0-AI-MANIFEST.a2ml => 0-AI-MANIFEST.deed} (79%) rename .machine_readable/6a2/anchors/{ANCHOR.a2ml => ANCHOR.deed} (96%) rename .machine_readable/{ENSAID_CONFIG.a2ml => ENSAID_CONFIG.deed} (96%) rename .machine_readable/ai/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (81%) rename .machine_readable/ai/{AI.a2ml => AI.deed} (89%) rename .machine_readable/bot_directives/{coverage.a2ml => coverage.deed} (97%) rename .machine_readable/bot_directives/{debt.a2ml => debt.deed} (98%) rename .machine_readable/bot_directives/{methodology.a2ml => methodology.deed} (97%) rename .machine_readable/configs/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename .machine_readable/contractiles/{Adjustfile.a2ml => Adjustfile.deed} (95%) rename .machine_readable/contractiles/{Intentfile.a2ml => Intentfile.deed} (94%) rename .machine_readable/contractiles/{Mustfile.a2ml => Mustfile.deed} (80%) rename .machine_readable/contractiles/{Trustfile.a2ml => Trustfile.deed} (97%) rename .machine_readable/contractiles/bust/{Bustfile.a2ml => Bustfile.deed} (89%) rename .machine_readable/contractiles/dust/{Dustfile.a2ml => Dustfile.deed} (98%) rename .machine_readable/integrations/{feedback-o-tron.a2ml => feedback-o-tron.deed} (100%) rename .machine_readable/integrations/{groove.a2ml => groove.deed} (100%) rename .machine_readable/integrations/{proven.a2ml => proven.deed} (100%) rename .machine_readable/integrations/{verisimdb.a2ml => verisimdb.deed} (100%) rename .machine_readable/integrations/{vexometer.a2ml => vexometer.deed} (100%) rename .machine_readable/policies/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename .machine_readable/policies/{MAINTENANCE-AXES.a2ml => MAINTENANCE-AXES.deed} (88%) rename .machine_readable/policies/{MAINTENANCE-CHECKLIST.a2ml => MAINTENANCE-CHECKLIST.deed} (98%) rename .machine_readable/policies/{SOFTWARE-DEVELOPMENT-APPROACH.a2ml => SOFTWARE-DEVELOPMENT-APPROACH.deed} (100%) rename .machine_readable/scripts/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (91%) rename .machine_readable/scripts/forge/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename .machine_readable/scripts/lifecycle/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename .machine_readable/scripts/verification/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename 0-AI-MANIFEST.a2ml => 0-AI-MANIFEST.deed (96%) rename container/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (100%) rename docs/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (96%) rename docs/architecture/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (93%) rename docs/attribution/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename docs/decisions/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename docs/developer/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename docs/governance/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (94%) rename docs/governance/{CRG-CRITERIA.a2ml => CRG-CRITERIA.deed} (100%) rename docs/governance/{TSDM.a2ml => TSDM.deed} (100%) rename docs/governance/audit/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (81%) rename docs/governance/audit/compliance/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/governance/audit/effects/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/governance/audit/systems/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/governance/maintenance/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename docs/governance/maintenance/adaptive/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/governance/maintenance/corrective/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename docs/governance/maintenance/perfective/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename docs/governance/planning/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (81%) rename docs/governance/planning/could/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/governance/planning/must/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/governance/planning/should/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/guide/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (94%) rename docs/legal/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (89%) rename docs/practice/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename docs/reports/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (91%) rename docs/reports/compliance/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename docs/reports/maintenance/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (81%) rename docs/reports/performance/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename docs/reports/quality/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename docs/reports/security/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename docs/standards/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename docs/theory/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (93%) rename docs/theory/computing/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (82%) rename docs/theory/formalisms/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/theory/mathematics/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/theory/ontologies/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/theory/other/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (82%) rename docs/theory/socio-technical/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename docs/whitepapers/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (92%) rename docs/whitepapers/academic/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (81%) rename docs/whitepapers/industry/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (81%) rename docs/whitepapers/outreach/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (92%) rename docs/wikis/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (90%) rename examples/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (100%) rename features/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (91%) rename features/boj-server/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (85%) rename features/panic-attacker/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (86%) rename features/ssg/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (84%) rename machine-readable-design/canonical-directory-structure/{Adjustfile.a2ml => Adjustfile.deed} (100%) rename machine-readable-design/canonical-directory-structure/{Intentfile.a2ml => Intentfile.deed} (100%) rename machine-readable-design/canonical-directory-structure/{Mustfile.a2ml => Mustfile.deed} (100%) rename machine-readable-design/canonical-directory-structure/{Trustfile.a2ml => Trustfile.deed} (100%) rename machine-readable-design/canonical-directory-structure/bust/{Bustfile.a2ml => Bustfile.deed} (89%) rename machine-readable-design/canonical-directory-structure/dust/{Dustfile.a2ml => Dustfile.deed} (100%) rename src/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (94%) rename src/aspects/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (90%) rename src/aspects/integrity/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename src/aspects/observability/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (84%) rename src/aspects/security/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (83%) rename src/backends/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (90%) rename src/bridges/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (84%) rename src/contracts/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename src/core/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename src/definitions/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename src/errors/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename src/evidence/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (90%) rename src/interface/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (94%) rename src/interface/Abi/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (81%) rename src/interface/ffi/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (81%) rename src/interface/ffi/src/{0.4-AI-MANIFEST.a2ml => 0.4-AI-MANIFEST.deed} (80%) rename src/interface/ffi/test/{0.4-AI-MANIFEST.a2ml => 0.4-AI-MANIFEST.deed} (80%) rename src/interface/generated/{0.3-AI-MANIFEST.a2ml => 0.3-AI-MANIFEST.deed} (82%) rename src/interface/generated/abi/{0.4-AI-MANIFEST.a2ml => 0.4-AI-MANIFEST.deed} (80%) rename src/manifest/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (90%) rename src/projections/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (90%) rename verification/{0.1-AI-MANIFEST.a2ml => 0.1-AI-MANIFEST.deed} (95%) rename verification/benchmarks/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (80%) rename verification/coverage/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (88%) rename verification/fuzzing/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename verification/proofs/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (82%) rename verification/safety_case/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (88%) rename verification/simulations/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (83%) rename verification/tests/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (100%) rename verification/traceability/{0.2-AI-MANIFEST.a2ml => 0.2-AI-MANIFEST.deed} (88%) diff --git a/.envrc b/.envrc index a27b51f..734a667 100644 --- a/.envrc +++ b/.envrc @@ -7,15 +7,11 @@ if has asdf; then use asdf fi -# Load Guix shell if guix.scm exists -if has guix && [ -f guix.scm ]; then +# Load Guix shell if a Guix manifest exists (Nix is deprecated) +if has guix && { [ -f build/guix.scm ] || [ -f guix.scm ]; }; then use guix fi -# Load Nix flake if flake.nix exists -if has nix && [ -f flake.nix ]; then -fi - # Project environment variables export PROJECT_NAME="Panoply" export RSR_TIER="infrastructure" diff --git a/.gitattributes b/.gitattributes index c95d5eb..a2c73ca 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16,7 +16,7 @@ *.hs text eol=lf *.chpl text eol=lf *.scm text eol=lf -*.a2ml text eol=lf linguist-language=TOML +*.deed text eol=lf linguist-language=TOML *.ncl text eol=lf *.nix text eol=lf diff --git a/.github/0.1-AI-MANIFEST.a2ml b/.github/0.1-AI-MANIFEST.deed similarity index 100% rename from .github/0.1-AI-MANIFEST.a2ml rename to .github/0.1-AI-MANIFEST.deed diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8d339b7..83bd434 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -10,5 +10,5 @@ # Security-sensitive files require explicit review SECURITY.md @hyperpolymath .github/workflows/ @hyperpolymath -Trustfile.a2ml @hyperpolymath +Trustfile.deed @hyperpolymath .machine_readable/ @hyperpolymath diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 65ec819..48aced9 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -34,7 +34,7 @@ panoply/ ├── spec/ # Spec tests (Perimeter 3) ├── tests/ # Test suite (Perimeter 2-3) ├── .machine_readable/ # ALL machine-readable content (Perimeter 1) -│ ├── *.a2ml # State files (STATE, META, ECOSYSTEM, etc.) +│ ├── *.deed # State files (STATE, META, ECOSYSTEM, etc.) │ ├── bot_directives/ # Bot configs │ └── contractiles/ # Policy contracts (k9, dust, lust, must, trust) ├── .well-known/ # Protocol files (Perimeter 1-3) @@ -49,7 +49,7 @@ panoply/ ├── MAINTAINERS.md ├── README.adoc ├── SECURITY.md -├── flake.nix # Nix flake — fallback (Perimeter 1) +├── build/guix.scm # Guix manifest + channels (Perimeter 1) ├── guix.scm # Guix package — primary (Perimeter 1) └── Justfile # Task runner (Perimeter 1) ``` diff --git a/.github/GOVERNANCE.md b/.github/GOVERNANCE.md index 228ba6b..8a8daf7 100644 --- a/.github/GOVERNANCE.md +++ b/.github/GOVERNANCE.md @@ -46,7 +46,7 @@ release schedules, contributor access, and community standards. - ADR statuses: `proposed`, `accepted`, `deprecated`, `superseded`, `rejected`. - ADRs provide a historical record of why decisions were made and what alternatives were considered. -- See `.machine_readable/6a2/META.a2ml` for the machine-readable ADR index. +- See `.machine_readable/6a2/META.deed` for the machine-readable ADR index. --- diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 1cf2861..4ac3867 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -9,8 +9,8 @@ Copyright (c) Jonathan D.A. Jewell ## Before Writing Code -- Read `0-AI-MANIFEST.a2ml` in the repo root for canonical file locations. -- State files (.a2ml) live in `.machine_readable/` ONLY, never the root. +- Read `0-AI-MANIFEST.deed` in the repo root for canonical file locations. +- State files (.deed) live in `.machine_readable/` ONLY, never the root. ## License @@ -56,5 +56,5 @@ Copyright (c) Jonathan D.A. Jewell ## State Files Never create these in the repo root: -STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml. +STATE.deed, META.deed, ECOSYSTEM.deed, AGENTIC.deed, NEUROSYM.deed, PLAYBOOK.deed. They belong in `.machine_readable/` only. diff --git a/.github/hooks/validate-a2ml.sh b/.github/hooks/validate-deed.sh similarity index 93% rename from .github/hooks/validate-a2ml.sh rename to .github/hooks/validate-deed.sh index b16fa85..e5c53f5 100755 --- a/.github/hooks/validate-a2ml.sh +++ b/.github/hooks/validate-deed.sh @@ -4,7 +4,7 @@ # # validate-a2ml.sh — A2ML manifest validation script # -# Scans for .a2ml and .deed files and validates: +# Scans for .deed and .deed files and validates: # 1. Required fields: agent-id or pedigree name, version # 2. SPDX-License-Identifier header presence # 3. Attestation block structure (if present) @@ -89,7 +89,7 @@ report_issue() { } # --------------------------------------------------------------------------- -# Validator: check a single .a2ml or .deed file +# Validator: check a single .deed or .deed file # --------------------------------------------------------------------------- validate_a2ml() { local file="$1" @@ -120,7 +120,7 @@ validate_a2ml() { # - agent-id = "..." or agent_id = "..." # - pedigree block with name field # - name = "..." at top level (for AI manifests) - # - project = "..." (for STATE.a2ml) + # - project = "..." (for STATE.deed) local has_identity=false local has_version=false local first_form_seen=false @@ -201,39 +201,39 @@ validate_a2ml() { fi done < "$file" - # AI manifest files (0-AI-MANIFEST.a2ml, 0.1-AI-MANIFEST.a2ml, etc.) + # AI manifest files (0-AI-MANIFEST.deed, 0.1-AI-MANIFEST.deed, etc.) # use markdown-style headers and free text, so identity check is relaxed local basename basename="$(basename "$file")" local is_manifest=false - # `.a2ml` ONLY. The exemption exists because AI manifests are markdown-ish + # `.deed` ONLY. The exemption exists because AI manifests are markdown-ish # prose with no in-file identity; it is not a property of the name. Matching # the bare basename meant `example-AI-MANIFEST.deed` was exempted from BOTH # the identity and version checks — a deed that skipped the whole gate. - if [[ "$basename" == *"AI-MANIFEST"*.a2ml ]]; then + if [[ "$basename" == *"AI-MANIFEST"*.deed ]]; then is_manifest=true fi # Canonical typed manifests under /descriptiles/ — identity comes # from the enclosing directory + filename, not an in-file field. Sibling - # files in the same directory (ECOSYSTEM.a2ml, STATE.a2ml) DO carry their + # files in the same directory (ECOSYSTEM.deed, STATE.deed) DO carry their # own $name/project and continue to be validated normally. case "$basename" in - AGENTIC.a2ml|META.a2ml|NEUROSYM.a2ml|PLAYBOOK.a2ml|AI.a2ml) - # AI.a2ml = free-text "AI Assistant Instructions" manifest, the same - # doc type as 0-AI-MANIFEST.a2ml but with the bare name; identity is + AGENTIC.deed|META.deed|NEUROSYM.deed|PLAYBOOK.deed|AI.deed) + # AI.deed = free-text "AI Assistant Instructions" manifest, the same + # doc type as 0-AI-MANIFEST.deed but with the bare name; identity is # carried by the enclosing repo/plugin dir, not an in-file field. is_manifest=true ;; # Dockerfile-style top-level typed manifests (Intentfile, Trustfile, …) # use markdown-flavoured A2ML; identity is carried by the parent repo. - *file.a2ml) + *file.deed) is_manifest=true ;; esac # Contractile-shape A2ML files use `@directive:` syntax instead of - # TOML `key = value`. Trustfile.a2ml, Intentfile.a2ml, Mustfile.a2ml, - # Adjustfile.a2ml etc. are policy / trust / intent / abstract files + # TOML `key = value`. Trustfile.deed, Intentfile.deed, Mustfile.deed, + # Adjustfile.deed etc. are policy / trust / intent / abstract files # whose identity is implicit in their @-prefixed directives # (`@trust-level`, `@intent`, ...) rather than a TOML name/version # pair. Treating them as manifest-shape produces 100% false positives — @@ -283,7 +283,7 @@ validate_a2ml() { # DEED is the live, grammar-bearing format: its schema version is required even # under a machine-readable tree. The structural-identity exemption below stays - # scoped to legacy *.a2ml, which is no longer authored. (CodeRabbit, PR review.) + # scoped to legacy *.deed, which is no longer authored. (CodeRabbit, PR review.) local version_exempt_structural="$is_structural_identity" case "$file" in *.deed) version_exempt_structural=false ;; esac if [[ "$has_version" == "false" && "$is_manifest" == "false" && "$is_contractile_shape" == "false" && "$version_exempt_structural" == "false" ]]; then @@ -344,15 +344,15 @@ validate_a2ml() { } # --------------------------------------------------------------------------- -# Main: discover and validate .a2ml and .deed files +# Main: discover and validate .deed and .deed files # --------------------------------------------------------------------------- echo "::group::A2ML Manifest Validation" -echo "Scanning ${SCAN_PATH} for .a2ml and .deed files..." +echo "Scanning ${SCAN_PATH} for .deed and .deed files..." echo "" -# Find all .a2ml and .deed files, excluding .git directory -mapfile -t a2ml_candidates < <(find "$SCAN_PATH" \( -name '*.a2ml' -o -name '*.deed' \) -not -path '*/.git/*' -type f | sort) +# Find all .deed and .deed files, excluding .git directory +mapfile -t a2ml_candidates < <(find "$SCAN_PATH" \( -name '*.deed' -o -name '*.deed' \) -not -path '*/.git/*' -type f | sort) # Apply paths-ignore filter a2ml_files=() @@ -370,7 +370,7 @@ if [[ $SKIPPED -gt 0 ]]; then fi if [[ ${#a2ml_files[@]} -eq 0 ]]; then - echo "::notice::No .a2ml or .deed files found in ${SCAN_PATH}" + echo "::notice::No .deed or .deed files found in ${SCAN_PATH}" echo "files_scanned=0" >> "$GITHUB_OUTPUT_FILE" 2>/dev/null || true echo "errors=0" >> "$GITHUB_OUTPUT_FILE" 2>/dev/null || true echo "warnings=0" >> "$GITHUB_OUTPUT_FILE" 2>/dev/null || true @@ -378,7 +378,7 @@ if [[ ${#a2ml_files[@]} -eq 0 ]]; then exit 0 fi -echo "Found ${#a2ml_files[@]} .a2ml/.deed file(s)" +echo "Found ${#a2ml_files[@]} .deed/.deed file(s)" echo "" for file in "${a2ml_files[@]}"; do diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c46a4e0..03bffa5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -29,9 +29,9 @@ Copyright (c) Jonathan D.A. Jewell ### As Applicable -- [ ] `.machine_readable/6a2/STATE.a2ml` updated (if project state changed) -- [ ] `.machine_readable/6a2/ECOSYSTEM.a2ml` updated (if integrations changed) -- [ ] `.machine_readable/6a2/META.a2ml` updated (if architectural decisions changed) +- [ ] `.machine_readable/6a2/STATE.deed` updated (if project state changed) +- [ ] `.machine_readable/6a2/ECOSYSTEM.deed` updated (if integrations changed) +- [ ] `.machine_readable/6a2/META.deed` updated (if architectural decisions changed) - [ ] Documentation updated for user-facing changes - [ ] `TOPOLOGY.md` updated (if architecture changed) - [ ] `CHANGELOG` or release notes updated diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 890b31c..f55c357 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -20,10 +20,10 @@ permissions: jobs: # --------------------------------------------------------------------------- - # Job 1: A2ML manifest validation + # Job 1: DEED manifest validation # --------------------------------------------------------------------------- - a2ml-validate: - name: Validate A2ML manifests + deed-validate: + name: Validate DEED manifests runs-on: ubuntu-latest timeout-minutes: 15 @@ -34,30 +34,34 @@ jobs: - name: Check for A2ML files id: detect run: | - COUNT=$(find . -type f \( -name '*.a2ml' -o -name '*.deed' \) -not -path './.git/*' | wc -l) + COUNT=$(find . -type f -name '*.deed' -not -path './.git/*' | wc -l) echo "count=$COUNT" >> "$GITHUB_OUTPUT" if [ "$COUNT" -eq 0 ]; then - echo "::warning::No .deed manifest files found. Every RSR repo should have 0-AI-MANIFEST.deed (.a2ml is legacy and no longer authored)" + echo "::warning::No .deed manifest files found. Every RSR repo should have 0-AI-MANIFEST.deed" + fi + if find . -name '*.a2ml' -not -path './.git/*' | grep -q .; then + echo "::error::Deprecated .a2ml files present; migrate to .deed" + exit 1 fi - - name: Validate A2ML manifests + - name: Validate DEED manifests if: steps.detect.outputs.count > 0 - run: bash .github/hooks/validate-a2ml.sh + run: bash .github/hooks/validate-deed.sh - name: Write summary run: | - A2ML_COUNT="${{ steps.detect.outputs.count }}" - if [ "$A2ML_COUNT" -eq 0 ]; then + DEED_COUNT="${{ steps.detect.outputs.count }}" + if [ "$DEED_COUNT" -eq 0 ]; then cat <<'EOF' >> "$GITHUB_STEP_SUMMARY" - ## A2ML Validation + ## DEED Validation - :warning: **No manifest found.** Every RSR-compliant repo should have at least `0-AI-MANIFEST.deed`. (`.a2ml` still validates as legacy but is no longer authored.) + :warning: **No manifest found.** Every RSR-compliant repo should have at least `0-AI-MANIFEST.deed`. Copy one from [rsr-template-repo](https://github.com/hyperpolymath/rsr-template-repo). EOF else - echo "## A2ML Validation" >> "$GITHUB_STEP_SUMMARY" + echo "## DEED Validation" >> "$GITHUB_STEP_SUMMARY" echo "" >> "$GITHUB_STEP_SUMMARY" - echo "Scanned **${A2ML_COUNT}** manifest file(s) (.deed, or legacy .a2ml). See step output for details." >> "$GITHUB_STEP_SUMMARY" + echo "Scanned **${DEED_COUNT}** .deed file(s)." >> "$GITHUB_STEP_SUMMARY" fi # --------------------------------------------------------------------------- @@ -369,7 +373,7 @@ jobs: name: Dogfooding compliance summary runs-on: ubuntu-latest timeout-minutes: 15 - needs: [a2ml-validate, k9-validate, empty-lint, groove-check, eclexiaiser-validate] + needs: [deed-validate, k9-validate, empty-lint, groove-check, eclexiaiser-validate] if: always() steps: @@ -382,7 +386,7 @@ jobs: MAX=6 # A2ML manifest present? - if find . -type f \( -name '*.a2ml' -o -name '*.deed' \) -not -path './.git/*' | head -1 | grep -q .; then + if find . -type f -name '*.deed' -not -path './.git/*' | head -1 | grep -q .; then SCORE=$((SCORE + 1)) A2ML_STATUS=":white_check_mark:" else @@ -436,7 +440,7 @@ jobs: | Tool/Format | Status | Notes | |-------------|--------|-------| - | AI manifest (0-AI-MANIFEST.deed, or legacy .a2ml) | ${A2ML_STATUS} | Required for all RSR repos | + | AI manifest (0-AI-MANIFEST.deed) | ${A2ML_STATUS} | Required for all RSR repos | | K9 contracts | ${K9_STATUS} | Required for repos with config files | | .editorconfig | ${EC_STATUS} | Required for all repos | | Groove endpoint | ${GROOVE_STATUS} | Required for service repos | diff --git a/.github/workflows/guix-nix-policy.yml b/.github/workflows/guix-nix-policy.yml index 6da8c9a..b9d65a5 100644 --- a/.github/workflows/guix-nix-policy.yml +++ b/.github/workflows/guix-nix-policy.yml @@ -24,25 +24,26 @@ jobs: contents: read steps: - uses: actions/checkout@v7.0.1 - - name: Enforce Guix primary / Nix fallback + - name: Enforce Guix / channels (Nix deprecated) run: | - # Check for package manager files - HAS_GUIX=$(find . -name "*.scm" -o -name ".guix-channel" -o -name "guix.scm" 2>/dev/null | head -1) - HAS_NIX=$(find . -name "*.nix" 2>/dev/null | head -1) + HAS_GUIX=$(find . \( -name "*.scm" -o -name ".guix-channel" -o -name "guix.scm" \) 2>/dev/null | head -1) + HAS_NIX=$(find . -name "*.nix" -not -path './.git/*' 2>/dev/null | head -1) - # Block new package-lock.json, yarn.lock, Gemfile.lock, etc. NEW_LOCKS=$(git diff --name-only --diff-filter=A HEAD~1 2>/dev/null | grep -E 'package-lock\.json|yarn\.lock|Gemfile\.lock|Pipfile\.lock|poetry\.lock|cargo\.lock' || true) if [ -n "$NEW_LOCKS" ]; then echo "⚠️ Lock files detected. Prefer Guix manifests for reproducibility." fi - # Prefer Guix, fallback to Nix + if [ -n "$HAS_NIX" ]; then + echo "::error::Nix is deprecated in this estate. Use Guix + channels (build/guix.scm, build/.guix-channel). Found: $HAS_NIX" + exit 1 + fi + if [ -n "$HAS_GUIX" ]; then - echo "✅ Guix package management detected (primary)" - elif [ -n "$HAS_NIX" ]; then - echo "✅ Nix package management detected (fallback)" + echo "✅ Guix package management detected" else - echo "ℹ️ Consider adding guix.scm or flake.nix for reproducible builds" + echo "::error::Missing Guix channel/manifest (build/guix.scm or .guix-channel)" + exit 1 fi echo "✅ Package policy check passed" diff --git a/.github/workflows/openssf-compliance.yml b/.github/workflows/openssf-compliance.yml index e61eeba..5c06084 100644 --- a/.github/workflows/openssf-compliance.yml +++ b/.github/workflows/openssf-compliance.yml @@ -62,18 +62,18 @@ jobs: exit 1 fi echo "README: OK" - - name: Check .machine_readable directory and STATE.a2ml + - name: Check .machine_readable directory and STATE.deed run: | if [ ! -d ".machine_readable" ]; then echo "::error::.machine_readable/ directory is required" exit 1 fi - if [ ! -f ".machine_readable/6a2/STATE.a2ml" ]; then - echo "::error::.machine_readable/6a2/STATE.a2ml is required" + if [ ! -f ".machine_readable/6a2/STATE.deed" ]; then + echo "::error::.machine_readable/6a2/STATE.deed is required" exit 1 fi - echo ".machine_readable/6a2/STATE.a2ml: OK" + echo ".machine_readable/6a2/STATE.deed: OK" - name: Check CHANGELOG exists run: | if [ ! -f "CHANGELOG.md" ] && [ ! -f "CHANGELOG.adoc" ] && [ ! -f "CHANGES.md" ]; then @@ -89,8 +89,8 @@ jobs: # Collect all required files that exist for f in SECURITY.md SECURITY.adoc .github/SECURITY.md LICENSE LICENSE.txt \ CONTRIBUTING.md CONTRIBUTING.adoc README.md README.adoc \ - .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml \ - .machine_readable/6a2/ECOSYSTEM.a2ml CHANGELOG.md CHANGELOG.adoc; do + .machine_readable/6a2/STATE.deed .machine_readable/6a2/META.deed \ + .machine_readable/6a2/ECOSYSTEM.deed CHANGELOG.md CHANGELOG.adoc; do [ -f "$f" ] && REQUIRED_FILES="$REQUIRED_FILES $f" done diff --git a/.github/workflows/rhodibot.yml b/.github/workflows/rhodibot.yml index 29dc13e..06ec70f 100644 --- a/.github/workflows/rhodibot.yml +++ b/.github/workflows/rhodibot.yml @@ -55,8 +55,8 @@ jobs: [ -f "$f" ] && warn "stale snapshot present: $f (would be deleted)" done # would-RENAME: legacy manifest name - if [ -f "AI.a2ml" ] && [ ! -f "0-AI-MANIFEST.a2ml" ]; then - warn "AI.a2ml present without 0-AI-MANIFEST.a2ml (would be renamed)" + if [ -f "AI.deed" ] && [ ! -f "0-AI-MANIFEST.deed" ]; then + warn "AI.deed present without 0-AI-MANIFEST.deed (would be renamed)" fi # would-DELETE: duplicate community files [ -f "CONTRIBUTING.md" ] && [ -f "CONTRIBUTING.adoc" ] && warn "duplicate CONTRIBUTING.md + CONTRIBUTING.adoc (one would be removed)" @@ -74,7 +74,7 @@ jobs: [ -f "CONTRIBUTING.md" ] || [ -f ".github/CONTRIBUTING.md" ] || warn "no CONTRIBUTING.md (would be created)" # --- unfixable compliance gaps (also drift) --- - [ -f "0-AI-MANIFEST.a2ml" ] || [ -f "AI.a2ml" ] || warn "missing AI manifest (0-AI-MANIFEST.a2ml)" + [ -f "0-AI-MANIFEST.deed" ] || [ -f "AI.deed" ] || warn "missing AI manifest (0-AI-MANIFEST.deed)" [ -f "LICENSE" ] || [ -f "LICENSE.md" ] || [ -f "LICENSE.txt" ] || warn "missing LICENSE file" [ -f "README.adoc" ] || [ -f "README.md" ] || warn "missing README" diff --git a/.machine_readable/0.1-AI-MANIFEST.a2ml b/.machine_readable/0.1-AI-MANIFEST.deed similarity index 66% rename from .machine_readable/0.1-AI-MANIFEST.a2ml rename to .machine_readable/0.1-AI-MANIFEST.deed index 7d8ce9e..2ab8be5 100644 --- a/.machine_readable/0.1-AI-MANIFEST.a2ml +++ b/.machine_readable/0.1-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "machine-readable-pillar" level: 1 -parent: "../0-AI-MANIFEST.a2ml" +parent: "../0-AI-MANIFEST.deed" --- ### [AI_MANIFEST] @@ -12,13 +12,13 @@ description: | automation scripts. canonical_locations: - state: "6a2/STATE.a2ml" - meta: "6a2/META.a2ml" - ecosystem: "6a2/ECOSYSTEM.a2ml" - agentic: "6a2/AGENTIC.a2ml" - neurosym: "6a2/NEUROSYM.a2ml" - playbook: "6a2/PLAYBOOK.a2ml" - clade: "6a2/CLADE.a2ml" + state: "6a2/STATE.deed" + meta: "6a2/META.deed" + ecosystem: "6a2/ECOSYSTEM.deed" + agentic: "6a2/AGENTIC.deed" + neurosym: "6a2/NEUROSYM.deed" + playbook: "6a2/PLAYBOOK.deed" + clade: "6a2/CLADE.deed" anchors: "6a2/anchors/" policies: "policies/" ai_configs: "ai/" diff --git a/.machine_readable/6a2/0-AI-MANIFEST.a2ml b/.machine_readable/6a2/0-AI-MANIFEST.deed similarity index 86% rename from .machine_readable/6a2/0-AI-MANIFEST.a2ml rename to .machine_readable/6a2/0-AI-MANIFEST.deed index a542ab6..75a0fb6 100644 --- a/.machine_readable/6a2/0-AI-MANIFEST.a2ml +++ b/.machine_readable/6a2/0-AI-MANIFEST.deed @@ -7,13 +7,13 @@ This manifest declares the AI-assistant context for the 6a2 machine-readable met ## Canonical Locations The 7 core A2ML files MUST exist in this directory: -1. AGENTIC.a2ml -2. CLADE.a2ml -3. ECOSYSTEM.a2ml -4. META.a2ml -5. NEUROSYM.a2ml -6. PLAYBOOK.a2ml -7. STATE.a2ml +1. AGENTIC.deed +2. CLADE.deed +3. ECOSYSTEM.deed +4. META.deed +5. NEUROSYM.deed +6. PLAYBOOK.deed +7. STATE.deed ## Invariants diff --git a/.machine_readable/6a2/AGENTIC.a2ml b/.machine_readable/6a2/AGENTIC.deed similarity index 77% rename from .machine_readable/6a2/AGENTIC.a2ml rename to .machine_readable/6a2/AGENTIC.deed index b21d81b..6abf434 100644 --- a/.machine_readable/6a2/AGENTIC.a2ml +++ b/.machine_readable/6a2/AGENTIC.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# AGENTIC.a2ml — AI agent constraints and capabilities +# AGENTIC.deed — AI agent constraints and capabilities # Defines what AI agents can and cannot do in this repository. [metadata] @@ -34,11 +34,11 @@ release-claim-requires-hard-pass = true # METHODOLOGY (ADR-002) # ============================================================================ # Detailed methodology configuration lives in: -# .machine_readable/bot_directives/methodology.a2ml -# .machine_readable/bot_directives/coverage.a2ml -# .machine_readable/bot_directives/debt.a2ml +# .machine_readable/bot_directives/methodology.deed +# .machine_readable/bot_directives/coverage.deed +# .machine_readable/bot_directives/debt.deed # -# AGENTIC.a2ml declares WHAT agents can do (permissions, gating). +# AGENTIC.deed declares WHAT agents can do (permissions, gating). # bot_directives/ declares HOW agents should work (methodology). [methodology] @@ -46,6 +46,6 @@ instructions-dir = ".machine_readable/bot_directives/" default-mode = "hybrid" [automation-hooks] -# on-enter: Read 0-AI-MANIFEST.a2ml, then STATE.a2ml, then bot_directives/ -# on-exit: Update STATE.a2ml, coverage.a2ml, and debt.a2ml with session outcomes +# on-enter: Read 0-AI-MANIFEST.deed, then STATE.deed, then bot_directives/ +# on-exit: Update STATE.deed, coverage.deed, and debt.deed with session outcomes # on-commit: Run just validate-rsr diff --git a/.machine_readable/6a2/CLADE.a2ml b/.machine_readable/6a2/CLADE.deed similarity index 100% rename from .machine_readable/6a2/CLADE.a2ml rename to .machine_readable/6a2/CLADE.deed diff --git a/.machine_readable/6a2/ECOSYSTEM.a2ml b/.machine_readable/6a2/ECOSYSTEM.deed similarity index 97% rename from .machine_readable/6a2/ECOSYSTEM.a2ml rename to .machine_readable/6a2/ECOSYSTEM.deed index 4cc9b72..fcb1132 100644 --- a/.machine_readable/6a2/ECOSYSTEM.a2ml +++ b/.machine_readable/6a2/ECOSYSTEM.deed @@ -1,5 +1,5 @@ # SPDX-License-Identifier: MPL-2.0 -# ECOSYSTEM.a2ml — Ecosystem position +# ECOSYSTEM.deed — Ecosystem position # [metadata] diff --git a/.machine_readable/6a2/LANGUAGES.a2ml b/.machine_readable/6a2/LANGUAGES.deed similarity index 85% rename from .machine_readable/6a2/LANGUAGES.a2ml rename to .machine_readable/6a2/LANGUAGES.deed index 067a18e..3a0ef67 100644 --- a/.machine_readable/6a2/LANGUAGES.a2ml +++ b/.machine_readable/6a2/LANGUAGES.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# LANGUAGES.a2ml — Languages present in this repository +# LANGUAGES.deed — Languages present in this repository # [metadata] version = "0.1.0" @@ -17,6 +17,6 @@ build = ["just", "bash"] [planned] # The Panoply Core checker, evidence formats, and manifest tooling are not yet -# implemented (see STATE.a2ml). Their implementation language is TBD per the +# implemented (see STATE.deed). Their implementation language is TBD per the # design discipline (docs/architecture/DESIGN-DISCIPLINE.adoc). core = "TBD" diff --git a/.machine_readable/6a2/META.a2ml b/.machine_readable/6a2/META.deed similarity index 97% rename from .machine_readable/6a2/META.a2ml rename to .machine_readable/6a2/META.deed index e199675..7463c71 100644 --- a/.machine_readable/6a2/META.a2ml +++ b/.machine_readable/6a2/META.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# META.a2ml — Project meta-level information +# META.deed — Project meta-level information # Architecture decisions, design rationale, governance. [metadata] diff --git a/.machine_readable/6a2/NEUROSYM.a2ml b/.machine_readable/6a2/NEUROSYM.deed similarity index 91% rename from .machine_readable/6a2/NEUROSYM.a2ml rename to .machine_readable/6a2/NEUROSYM.deed index 1acf7a3..569f862 100644 --- a/.machine_readable/6a2/NEUROSYM.a2ml +++ b/.machine_readable/6a2/NEUROSYM.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# NEUROSYM.a2ml — Neurosymbolic integration metadata +# NEUROSYM.deed — Neurosymbolic integration metadata # Configuration for Hypatia scanning and symbolic reasoning. [metadata] diff --git a/.machine_readable/6a2/PLAYBOOK.a2ml b/.machine_readable/6a2/PLAYBOOK.deed similarity index 93% rename from .machine_readable/6a2/PLAYBOOK.a2ml rename to .machine_readable/6a2/PLAYBOOK.deed index 7a55b56..33c82df 100644 --- a/.machine_readable/6a2/PLAYBOOK.a2ml +++ b/.machine_readable/6a2/PLAYBOOK.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# PLAYBOOK.a2ml — Operational playbook +# PLAYBOOK.deed — Operational playbook # Runbooks, incident response, deployment procedures. [metadata] @@ -13,13 +13,13 @@ last-updated = "2026-04-11" # target = "container" # container | binary | library | wasm [incident-response] -# 1. Check .machine_readable/6a2/STATE.a2ml for current status +# 1. Check .machine_readable/6a2/STATE.deed for current status # 2. Review recent commits and CI results # 3. Run `just validate` to check compliance # 4. Run `just security` to audit for vulnerabilities [release-process] -# 1. Update version in STATE.a2ml, META.a2ml, Justfile +# 1. Update version in STATE.deed, META.deed, Justfile # 2. Run `just release-preflight` (validate + quality + security + maint-hard-pass) # 3. Optional local permission hardening: `just perms-snapshot && just perms-lock` # 4. Tag and push @@ -53,7 +53,7 @@ enforcement-workflow = ".github/workflows/estate-rules.yml" # README.adoc High-level pitch (project entry point) # AUDIT.adoc Local gate summary (release-readiness) # EXPLAINME.adoc Developer deep-dive (architecture & invariants) -# 0-AI-MANIFEST.a2ml AI agent work-allocation policy +# 0-AI-MANIFEST.deed AI agent work-allocation policy # LICENSE Repo license (root-bound by convention) # CHANGELOG.md One of the recognised .md exceptions (see below) # Justfile Task runner — thin, imports per-section files from build/just/ @@ -61,9 +61,9 @@ enforcement-workflow = ".github/workflows/estate-rules.yml" # === Required directories === # .github/ CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, workflows/ -# .machine_readable/ AI manifests (0.1-AI-MANIFEST.a2ml), 6a2/ checkpoints, +# .machine_readable/ AI manifests (0.1-AI-MANIFEST.deed), 6a2/ checkpoints, # contractiles/, configs/, anchors/, policies/, scripts/, svc/ -# build/ contractile.just, flake.nix, guix.scm, Containerfile, +# build/ contractile.just, guix.scm, .guix-channel, Containerfile, # just/*.just (Justfile section imports) # docs/ onboarding/, status/, architecture/, governance/ (all .adoc) # session/ dispatch.sh, custom-checks.k9, local-hooks.sh @@ -115,7 +115,7 @@ enforcement-workflow = ".github/workflows/estate-rules.yml" # health files shadowed by .github/ versions. # 2. chore/remove-zig Purge zig remnants (gen-v-connector recipe, # "V-TRIPLE" section header, "V-triple -# connectors" comment in groove.a2ml). +# connectors" comment in groove.deed). # 3. chore/md-to-adoc Port general docs in docs/ from .md to .adoc; # update validate-template.sh to accept .adoc # fallbacks. diff --git a/.machine_readable/6a2/README.adoc b/.machine_readable/6a2/README.adoc index 916a702..0272449 100644 --- a/.machine_readable/6a2/README.adoc +++ b/.machine_readable/6a2/README.adoc @@ -6,12 +6,12 @@ This directory contains the 6 core A2ML machine-readable metadata files for this ## Files -- `AGENTIC.a2ml` - AI agent operational gating, safety controls -- `ECOSYSTEM.a2ml` - Project ecosystem position, relationships, explicit boundaries -- `META.a2ml` - Architecture decisions (ADRs), development practices, design rationale -- `NEUROSYM.a2ml` - Symbolic semantics, composition algebra -- `PLAYBOOK.a2ml` - Executable plans, operational runbooks -- `STATE.a2ml` - Project state, phase, milestones, session history +- `AGENTIC.deed` - AI agent operational gating, safety controls +- `ECOSYSTEM.deed` - Project ecosystem position, relationships, explicit boundaries +- `META.deed` - Architecture decisions (ADRs), development practices, design rationale +- `NEUROSYM.deed` - Symbolic semantics, composition algebra +- `PLAYBOOK.deed` - Executable plans, operational runbooks +- `STATE.deed` - Project state, phase, milestones, session history ## Standards Compliance diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.deed similarity index 98% rename from .machine_readable/6a2/STATE.a2ml rename to .machine_readable/6a2/STATE.deed index bc1e1d4..f42df45 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# STATE.a2ml — Project state checkpoint +# STATE.deed — Project state checkpoint # [metadata] diff --git a/.machine_readable/6a2/anchors/0-AI-MANIFEST.a2ml b/.machine_readable/6a2/anchors/0-AI-MANIFEST.deed similarity index 79% rename from .machine_readable/6a2/anchors/0-AI-MANIFEST.a2ml rename to .machine_readable/6a2/anchors/0-AI-MANIFEST.deed index 0dd6825..4527f42 100644 --- a/.machine_readable/6a2/anchors/0-AI-MANIFEST.a2ml +++ b/.machine_readable/6a2/anchors/0-AI-MANIFEST.deed @@ -6,11 +6,11 @@ This manifest declares the AI-assistant context for the anchor machine-readable ## Canonical Locations -ANCHOR.a2ml files MUST exist in this directory. +ANCHOR.deed files MUST exist in this directory. ## Multiple Versions -Unlike other A2ML files, multiple versions of ANCHOR.a2ml with different dates MAY exist. +Unlike other A2ML files, multiple versions of ANCHOR.deed with different dates MAY exist. Each version represents a specific recalibration point. ## Invariants diff --git a/.machine_readable/6a2/anchors/ANCHOR.a2ml b/.machine_readable/6a2/anchors/ANCHOR.deed similarity index 96% rename from .machine_readable/6a2/anchors/ANCHOR.a2ml rename to .machine_readable/6a2/anchors/ANCHOR.deed index e621150..77561f7 100644 --- a/.machine_readable/6a2/anchors/ANCHOR.a2ml +++ b/.machine_readable/6a2/anchors/ANCHOR.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# ANCHOR.a2ml - authoritative anchor for this repository +# ANCHOR.deed - authoritative anchor for this repository [metadata] version = "1.0.0" diff --git a/.machine_readable/6a2/anchors/README.adoc b/.machine_readable/6a2/anchors/README.adoc index 13cae63..9225891 100644 --- a/.machine_readable/6a2/anchors/README.adoc +++ b/.machine_readable/6a2/anchors/README.adoc @@ -2,20 +2,20 @@ // Copyright (c) Jonathan D.A. Jewell # A2ML Anchor Directory -This directory contains ANCHOR.a2ml files for project recalibration and scope intervention. +This directory contains ANCHOR.deed files for project recalibration and scope intervention. ## Files -- `ANCHOR.a2ml` - Project recalibration, scope intervention, canonical authority +- `ANCHOR.deed` - Project recalibration, scope intervention, canonical authority ## Multiple Versions -Unlike other A2ML files, multiple versions of ANCHOR.a2ml with different dates may exist. +Unlike other A2ML files, multiple versions of ANCHOR.deed with different dates may exist. Each version represents a specific recalibration point in the project history. ## Standards Compliance -These files follow the ANCHOR.a2ml specification from: +These files follow the ANCHOR.deed specification from: https://github.com/hyperpolymath/standards/tree/main/anchor-a2ml ## See Also diff --git a/.machine_readable/ENSAID_CONFIG.a2ml b/.machine_readable/ENSAID_CONFIG.deed similarity index 96% rename from .machine_readable/ENSAID_CONFIG.a2ml rename to .machine_readable/ENSAID_CONFIG.deed index 390998d..6103846 100644 --- a/.machine_readable/ENSAID_CONFIG.a2ml +++ b/.machine_readable/ENSAID_CONFIG.deed @@ -1,15 +1,15 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# ENSAID_CONFIG.a2ml — eNSAID Environment Configuration +# ENSAID_CONFIG.deed — eNSAID Environment Configuration # Per-repo configuration for PanLL and eNSAID-compatible tools. # -# Canonical location: .machine_readable/ENSAID_CONFIG.a2ml +# Canonical location: .machine_readable/ENSAID_CONFIG.deed # Spec: https://github.com/hyperpolymath/standards/tree/main/ensaid-config # # Naming convention: # - UPPERCASE + underscore = non-executable machine-readable file -# - Lives in .machine_readable/ alongside STATE.a2ml, META.a2ml, etc. +# - Lives in .machine_readable/ alongside STATE.deed, META.deed, etc. # ───────────────────────────────────────────────────────────────── # [ensaid] — Core eNSAID identity and version diff --git a/.machine_readable/ai/.clinerules b/.machine_readable/ai/.clinerules index 4818351..fe11e22 100644 --- a/.machine_readable/ai/.clinerules +++ b/.machine_readable/ai/.clinerules @@ -2,7 +2,7 @@ # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # Authoritative source: docs/AI-CONVENTIONS.md -# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/6a2/STATE.a2ml. +# STARTUP: Read 0-AI-MANIFEST.deed first, then .machine_readable/6a2/STATE.deed. # LICENSE # All original code: MPL-2.0. @@ -11,8 +11,8 @@ # Copyright: Jonathan D.A. Jewell (hyperpolymath) # STATE FILES (.machine_readable/ ONLY) -# Never create in repo root: STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, -# AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml. +# Never create in repo root: STATE.deed, META.deed, ECOSYSTEM.deed, +# AGENTIC.deed, NEUROSYM.deed, PLAYBOOK.deed. # The .machine_readable/ directory is the single source of truth. # BANNED PATTERNS diff --git a/.machine_readable/ai/.cursorrules b/.machine_readable/ai/.cursorrules index 5255a80..e7b19ba 100644 --- a/.machine_readable/ai/.cursorrules +++ b/.machine_readable/ai/.cursorrules @@ -2,7 +2,7 @@ # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # Authoritative source: docs/AI-CONVENTIONS.md -# Read 0-AI-MANIFEST.a2ml in the repo root FIRST for canonical file locations. +# Read 0-AI-MANIFEST.deed in the repo root FIRST for canonical file locations. # LICENSE # All original code: MPL-2.0 (SPDX header required on every file). @@ -10,9 +10,9 @@ # Copyright: Jonathan D.A. Jewell (hyperpolymath) # STATE FILES -# .a2ml metadata files go in .machine_readable/ ONLY. -# Never create STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, -# NEUROSYM.a2ml, or PLAYBOOK.a2ml in the repository root. +# .deed metadata files go in .machine_readable/ ONLY. +# Never create STATE.deed, META.deed, ECOSYSTEM.deed, AGENTIC.deed, +# NEUROSYM.deed, or PLAYBOOK.deed in the repository root. # BANNED PATTERNS # Idris2: believe_me, assert_total, assert_smaller, unsafePerformIO diff --git a/.machine_readable/ai/.windsurfrules b/.machine_readable/ai/.windsurfrules index 4818351..fe11e22 100644 --- a/.machine_readable/ai/.windsurfrules +++ b/.machine_readable/ai/.windsurfrules @@ -2,7 +2,7 @@ # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # Authoritative source: docs/AI-CONVENTIONS.md -# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/6a2/STATE.a2ml. +# STARTUP: Read 0-AI-MANIFEST.deed first, then .machine_readable/6a2/STATE.deed. # LICENSE # All original code: MPL-2.0. @@ -11,8 +11,8 @@ # Copyright: Jonathan D.A. Jewell (hyperpolymath) # STATE FILES (.machine_readable/ ONLY) -# Never create in repo root: STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, -# AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml. +# Never create in repo root: STATE.deed, META.deed, ECOSYSTEM.deed, +# AGENTIC.deed, NEUROSYM.deed, PLAYBOOK.deed. # The .machine_readable/ directory is the single source of truth. # BANNED PATTERNS diff --git a/.machine_readable/ai/0.2-AI-MANIFEST.a2ml b/.machine_readable/ai/0.2-AI-MANIFEST.deed similarity index 81% rename from .machine_readable/ai/0.2-AI-MANIFEST.a2ml rename to .machine_readable/ai/0.2-AI-MANIFEST.deed index 869cbee..cd803a8 100644 --- a/.machine_readable/ai/0.2-AI-MANIFEST.a2ml +++ b/.machine_readable/ai/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "ai-registry" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/ai/AI.a2ml b/.machine_readable/ai/AI.deed similarity index 89% rename from .machine_readable/ai/AI.a2ml rename to .machine_readable/ai/AI.deed index b678021..f9411dd 100644 --- a/.machine_readable/ai/AI.a2ml +++ b/.machine_readable/ai/AI.deed @@ -7,8 +7,8 @@ - Prefer to keep generated files out of source control, and regenerate them with the documented commands before committing. ## Workflow -1. Inspect `.machine_readable/6a2/STATE.a2ml` for blockers and next actions. -2. Respect any constraints listed inside `.machine_readable/6a2/AGENTIC.a2ml` when tooling changes are requested. +1. Inspect `.machine_readable/6a2/STATE.deed` for blockers and next actions. +2. Respect any constraints listed inside `.machine_readable/6a2/AGENTIC.deed` when tooling changes are requested. 3. After finishing edits, update STATE with your outcomes and commit with a concise, imperative message. ## Delivery Promises @@ -28,8 +28,8 @@ hypatia = "Neurosymbolic CI/CD — safety-triangle routing for automated fixes" boj-server = "MCP gateway — all external service integrations route through BoJ" [floor-raise-checklist] -step-1 = "Ensure 0-AI-MANIFEST.a2ml exists at repo root" -step-2 = "Ensure Mustfile.a2ml + Trustfile.a2ml + Dustfile.a2ml in .machine_readable/contractiles/" +step-1 = "Ensure 0-AI-MANIFEST.deed exists at repo root" +step-2 = "Ensure Mustfile.deed + Trustfile.deed + Dustfile.deed in .machine_readable/contractiles/" step-3 = "Add `assail` recipe to Justfile and wire into pre-commit hook" step-4 = "Add proven integration reference in .machine_readable/integrations/" step-5 = "Add verisimdb feed configuration" diff --git a/.machine_readable/ai/README.adoc b/.machine_readable/ai/README.adoc index 29d3c06..bd5afd7 100644 --- a/.machine_readable/ai/README.adoc +++ b/.machine_readable/ai/README.adoc @@ -9,16 +9,16 @@ Examples: * `CLAUDE.md` * `COPILOT.md` * `GEMINI.md` -* `AI.a2ml` +* `AI.deed` * `AI.djot` Avoid scattering agent instruction files around the repo root. Recommended machine read order: -* `.machine_readable/6a2/anchors/ANCHOR.a2ml` -* `.machine_readable/policies/MAINTENANCE-AXES.a2ml` -* `.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml` -* `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml` -* `.machine_readable/6a2/STATE.a2ml` -* `.machine_readable/6a2/META.a2ml` +* `.machine_readable/6a2/anchors/ANCHOR.deed` +* `.machine_readable/policies/MAINTENANCE-AXES.deed` +* `.machine_readable/policies/MAINTENANCE-CHECKLIST.deed` +* `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed` +* `.machine_readable/6a2/STATE.deed` +* `.machine_readable/6a2/META.deed` diff --git a/.machine_readable/bot_directives/README.adoc b/.machine_readable/bot_directives/README.adoc index 1dcb625..8725677 100644 --- a/.machine_readable/bot_directives/README.adoc +++ b/.machine_readable/bot_directives/README.adoc @@ -12,26 +12,26 @@ Methodology-aware configuration for AI agents. Read by any AI agent |=== | File | Purpose -| `methodology.a2ml` +| `methodology.deed` | Default mode, invariants, ring ceiling, priority weights, convergent budget -| `coverage.a2ml` +| `coverage.deed` | Session coverage tracking — what was visited, what was skipped, what has MUSTs -| `debt.a2ml` +| `debt.deed` | Meander debt — things found but not fixed, carried between sessions |=== == How Agents Use These -1. Read `methodology.a2ml` at session start — know mode, invariants, ceiling -2. Read `coverage.a2ml` — know what was visited last time, what was skipped -3. Read `debt.a2ml` — know what's outstanding from previous sessions -4. At session end, update `coverage.a2ml` and `debt.a2ml` +1. Read `methodology.deed` at session start — know mode, invariants, ceiling +2. Read `coverage.deed` — know what was visited last time, what was skipped +3. Read `debt.deed` — know what's outstanding from previous sessions +4. At session end, update `coverage.deed` and `debt.deed` == Relationship to Other Files -* `AGENTIC.a2ml` says WHAT agents can do (permissions, gating) +* `AGENTIC.deed` says WHAT agents can do (permissions, gating) * `bot_directives/` says HOW agents should work (methodology) * `bot_directives/` says what the gitbot-fleet does (fleet-specific) * `CLAUDE.md` says how Claude specifically should work (Claude-specific) diff --git a/.machine_readable/bot_directives/coverage.a2ml b/.machine_readable/bot_directives/coverage.deed similarity index 97% rename from .machine_readable/bot_directives/coverage.a2ml rename to .machine_readable/bot_directives/coverage.deed index bffcd55..31632e0 100644 --- a/.machine_readable/bot_directives/coverage.a2ml +++ b/.machine_readable/bot_directives/coverage.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# coverage.a2ml — Session coverage tracking +# coverage.deed — Session coverage tracking # Updated at the end of each AI agent session. # Persists what was visited, what was skipped, and what has MUSTs. # diff --git a/.machine_readable/bot_directives/debt.a2ml b/.machine_readable/bot_directives/debt.deed similarity index 98% rename from .machine_readable/bot_directives/debt.a2ml rename to .machine_readable/bot_directives/debt.deed index d18b409..230726b 100644 --- a/.machine_readable/bot_directives/debt.a2ml +++ b/.machine_readable/bot_directives/debt.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# debt.a2ml — Meander debt list +# debt.deed — Meander debt list # Things found but not fixed. Carried between sessions. # Becomes the next session's Phase 0 input. # diff --git a/.machine_readable/bot_directives/methodology.a2ml b/.machine_readable/bot_directives/methodology.deed similarity index 97% rename from .machine_readable/bot_directives/methodology.a2ml rename to .machine_readable/bot_directives/methodology.deed index 929996d..0e7e8cd 100644 --- a/.machine_readable/bot_directives/methodology.a2ml +++ b/.machine_readable/bot_directives/methodology.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# methodology.a2ml — AI agent methodology configuration +# methodology.deed — AI agent methodology configuration # Declares how agents should approach work in this repository. # Read at session start by any AI agent (Claude, Gemini, Copilot, etc.) # @@ -97,7 +97,7 @@ constraints = [ # ============================================================================ # STATE FILE VALIDATION # ============================================================================ -# Phase 0 reads STATE.a2ml first but it may be broken. +# Phase 0 reads STATE.deed first but it may be broken. # These rules detect corrupt/template/stale state files. [methodology.state-validation] diff --git a/.machine_readable/compliance/reuse/dep5 b/.machine_readable/compliance/reuse/dep5 index 50622eb..a0230a6 100644 --- a/.machine_readable/compliance/reuse/dep5 +++ b/.machine_readable/compliance/reuse/dep5 @@ -14,7 +14,7 @@ Copyright: 2026 Jonathan D.A. Jewell (hyperpolymath) License: MPL-2.0 # Machine-readable state files -Files: .machine_readable/*.a2ml +Files: .machine_readable/*.deed Copyright: 2026 Jonathan D.A. Jewell (hyperpolymath) License: MPL-2.0 diff --git a/.machine_readable/configs/0.2-AI-MANIFEST.a2ml b/.machine_readable/configs/0.2-AI-MANIFEST.deed similarity index 82% rename from .machine_readable/configs/0.2-AI-MANIFEST.a2ml rename to .machine_readable/configs/0.2-AI-MANIFEST.deed index 6e41e6c..0491852 100644 --- a/.machine_readable/configs/0.2-AI-MANIFEST.a2ml +++ b/.machine_readable/configs/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "configs-registry" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/contractiles/Adjustfile.a2ml b/.machine_readable/contractiles/Adjustfile.deed similarity index 95% rename from .machine_readable/contractiles/Adjustfile.a2ml rename to .machine_readable/contractiles/Adjustfile.deed index d0f9f1b..3d267b8 100644 --- a/.machine_readable/contractiles/Adjustfile.a2ml +++ b/.machine_readable/contractiles/Adjustfile.deed @@ -47,8 +47,8 @@ not block. ### contractile-sync - description: All contractiles should have matching a2ml and ncl implementations -- tolerance: Every .a2ml has a corresponding .ncl -- corrective: Generate missing .ncl files from .a2ml +- tolerance: Every .deed has a corresponding .ncl +- corrective: Generate missing .ncl files from .deed - severity: advisory ### no-broken-symlinks diff --git a/.machine_readable/contractiles/Intentfile.a2ml b/.machine_readable/contractiles/Intentfile.deed similarity index 94% rename from .machine_readable/contractiles/Intentfile.a2ml rename to .machine_readable/contractiles/Intentfile.deed index a7acfd7..d0778fd 100644 --- a/.machine_readable/contractiles/Intentfile.a2ml +++ b/.machine_readable/contractiles/Intentfile.deed @@ -31,7 +31,7 @@ Panoply is an envelope-first language discipline: every safety claim explicit, scoped, inspectable, and mechanically accountable. It is defined by three artefacts — a checked Core, explicit evidence, and a safety-envelope manifest (see docs/architecture/DESIGN-DISCIPLINE.adoc and -.machine_readable/6a2/STATE.a2ml for current status). +.machine_readable/6a2/STATE.deed for current status). This repository follows the Rhodium Standard Repository governance model (contractile files, machine-readable specifications, session bindings) @@ -44,7 +44,7 @@ This repository is NOT: FROM rsr-template-repo; see hyperpolymath/rsr-template-repo for the master scaffold - Feature-complete — Core, Evidence, and Manifest are design-phase only - (see .machine_readable/6a2/STATE.a2ml) + (see .machine_readable/6a2/STATE.deed) - A runtime library or framework by itself — it is a language-discipline specification with an Idris2 ABI (abi.ipkg) and a Zig FFI surface (src/interface/ffi/) @@ -62,7 +62,7 @@ If you are unsure whether a change is in scope, ask. Sensitive areas: ### core-language-spec - description: Specify the Core — abstract syntax, typing/checking judgements, projection target - status: declared -- notes: See .machine_readable/6a2/STATE.a2ml [route-to-mvp] +- notes: See .machine_readable/6a2/STATE.deed [route-to-mvp] ### evidence-model-spec - description: Specify the evidence model — what counts as a witness for each guarantee class @@ -78,7 +78,7 @@ If you are unsure whether a change is in scope, ask. Sensitive areas: ### contractile-completeness - description: Every RSR contractile has an a2ml and ncl implementation -- probe: ls .machine_readable/contractiles/*.a2ml | wc -l | grep -q "^6$" +- probe: ls .machine_readable/contractiles/*.deed | wc -l | grep -q "^6$" - status: in_progress - notes: Currently 6 contractile verbs: intend, must, trust, adjust, bust, dust diff --git a/.machine_readable/contractiles/Justfile b/.machine_readable/contractiles/Justfile index 6193bd4..c6cf3cb 100644 --- a/.machine_readable/contractiles/Justfile +++ b/.machine_readable/contractiles/Justfile @@ -52,7 +52,7 @@ info: @echo "Version: {{version}}" @echo "RSR Tier: {{tier}}" @echo "Recipes: $(just --summary | wc -w)" - @[ -f ".machine_readable/6a2/STATE.a2ml" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.a2ml | head -1 | xargs -I{} echo "Phase: {}" || true + @[ -f ".machine_readable/6a2/STATE.deed" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.deed | head -1 | xargs -I{} echo "Phase: {}" || true # Run Invariant Path overlay tools for this repository invariant-path *ARGS: @@ -547,32 +547,29 @@ import? "build/just/validate.just" # STATE MANAGEMENT # ═══════════════════════════════════════════════════════════════════════════════ -# Update STATE.a2ml timestamp +# Update STATE.deed timestamp state-touch: - @if [ -f ".machine_readable/6a2/STATE.a2ml" ]; then \ - sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/6a2/STATE.a2ml && \ - echo "STATE.a2ml timestamp updated"; \ + @if [ -f ".machine_readable/6a2/STATE.deed" ]; then \ + sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/6a2/STATE.deed && \ + echo "STATE.deed timestamp updated"; \ fi -# Show current phase from STATE.a2ml +# Show current phase from STATE.deed state-phase: - @grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.a2ml 2>/dev/null | head -1 || echo "unknown" + @grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.deed 2>/dev/null | head -1 || echo "unknown" # ═══════════════════════════════════════════════════════════════════════════════ -# GUIX & NIX +# GUIX (channels — Nix is deprecated) # ═══════════════════════════════════════════════════════════════════════════════ -# Enter Guix development shell (primary) guix-shell: - guix shell -D -f guix.scm + guix shell -D -f build/guix.scm -# Build with Guix guix-build: - guix build -f guix.scm + guix build -f build/guix.scm -# Enter Nix development shell (fallback) -nix-shell: - @if [ -f "flake.nix" ]; then nix develop; else echo "No flake.nix"; fi +guix-channel: + @test -f build/.guix-channel && cat build/.guix-channel || echo "No build/.guix-channel" # ═══════════════════════════════════════════════════════════════════════════════ # HYBRID AUTOMATION diff --git a/.machine_readable/contractiles/Mustfile.a2ml b/.machine_readable/contractiles/Mustfile.deed similarity index 80% rename from .machine_readable/contractiles/Mustfile.a2ml rename to .machine_readable/contractiles/Mustfile.deed index a237b23..1ca5ee5 100644 --- a/.machine_readable/contractiles/Mustfile.a2ml +++ b/.machine_readable/contractiles/Mustfile.deed @@ -30,8 +30,8 @@ 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 ### governance-docs @@ -53,17 +53,17 @@ fails. ### contractiles-files-present - description: All four primary contractile files exist -- run: test -f .machine_readable/contractiles/Intentfile.a2ml && test -f .machine_readable/contractiles/Mustfile.a2ml && test -f .machine_readable/contractiles/Trustfile.a2ml && test -f .machine_readable/contractiles/Adjustfile.a2ml +- run: test -f .machine_readable/contractiles/Intentfile.deed && test -f .machine_readable/contractiles/Mustfile.deed && test -f .machine_readable/contractiles/Trustfile.deed && test -f .machine_readable/contractiles/Adjustfile.deed - severity: critical ### bust-dust-files-present - description: Bustfile and Dustfile exist in their directories -- run: test -f .machine_readable/contractiles/bust/Bustfile.a2ml && test -f .machine_readable/contractiles/dust/Dustfile.a2ml +- run: test -f .machine_readable/contractiles/bust/Bustfile.deed && test -f .machine_readable/contractiles/dust/Dustfile.deed - severity: critical ### six-directory-present - description: 6a2 directory exists with required files -- run: test -d .machine_readable/6a2 && test -f .machine_readable/6a2/META.a2ml && test -f .machine_readable/6a2/ECOSYSTEM.a2ml && test -f .machine_readable/6a2/STATE.a2ml && test -f .machine_readable/6a2/PLAYBOOK.a2ml && test -f .machine_readable/6a2/AGENTIC.a2ml && test -f .machine_readable/6a2/NEUROSYM.a2ml +- run: test -d .machine_readable/6a2 && test -f .machine_readable/6a2/META.deed && test -f .machine_readable/6a2/ECOSYSTEM.deed && test -f .machine_readable/6a2/STATE.deed && test -f .machine_readable/6a2/PLAYBOOK.deed && test -f .machine_readable/6a2/AGENTIC.deed && test -f .machine_readable/6a2/NEUROSYM.deed - severity: critical ### anchors-directory diff --git a/.machine_readable/contractiles/Trustfile.a2ml b/.machine_readable/contractiles/Trustfile.deed similarity index 97% rename from .machine_readable/contractiles/Trustfile.a2ml rename to .machine_readable/contractiles/Trustfile.deed index b960ff9..e7c25af 100644 --- a/.machine_readable/contractiles/Trustfile.a2ml +++ b/.machine_readable/contractiles/Trustfile.deed @@ -8,7 +8,7 @@ @abstract: Trust boundaries and integrity checks for panoply. This file combines the trust-level definitions from the original TRUST.contractile -with the integrity invariants from the old Trustfile.a2ml. It defines +with the integrity invariants from the old Trustfile.deed. It defines what AI agents may do autonomously and what requires human approval, plus checks that verify repository integrity. @end diff --git a/.machine_readable/contractiles/bust/Bustfile.a2ml b/.machine_readable/contractiles/bust/Bustfile.deed similarity index 89% rename from .machine_readable/contractiles/bust/Bustfile.a2ml rename to .machine_readable/contractiles/bust/Bustfile.deed index 3c5f121..56d346c 100644 --- a/.machine_readable/contractiles/bust/Bustfile.a2ml +++ b/.machine_readable/contractiles/bust/Bustfile.deed @@ -28,8 +28,8 @@ around substitution completeness and synchronisation with upstream. ### template-substitution-failure - class: template_processing - description: Template substitution fails when initializing a new repo from this template -- injection_probe: "cp -r rsr-template-repo test-repo && cd test-repo && sed -i 's/rsr-template-repo/TEST/g' .machine_readable/contractiles/Intentfile.a2ml && grep -q 'TEST' .machine_readable/contractiles/Intentfile.a2ml" -- recovery_probe: "git -C test-repo diff --quiet .machine_readable/contractiles/Intentfile.a2ml" +- injection_probe: "cp -r rsr-template-repo test-repo && cd test-repo && sed -i 's/rsr-template-repo/TEST/g' .machine_readable/contractiles/Intentfile.deed && grep -q 'TEST' .machine_readable/contractiles/Intentfile.deed" +- recovery_probe: "git -C test-repo diff --quiet .machine_readable/contractiles/Intentfile.deed" - expected_recovery_time_seconds: 10 - status: declared - notes: Verify that substitution scripts handle all placeholder replacements correctly @@ -46,8 +46,8 @@ around substitution completeness and synchronisation with upstream. ### contractile-parse-error - class: contractile_format - description: A contractile file fails to parse due to syntax errors -- injection_probe: "echo 'invalid syntax' >> rsr-template-repo/.machine_readable/contractiles/Intentfile.a2ml" -- recovery_probe: "git checkout rsr-template-repo/.machine_readable/contractiles/Intentfile.a2ml" +- injection_probe: "echo 'invalid syntax' >> rsr-template-repo/.machine_readable/contractiles/Intentfile.deed" +- recovery_probe: "git checkout rsr-template-repo/.machine_readable/contractiles/Intentfile.deed" - expected_recovery_time_seconds: 5 - status: declared -- notes: All .a2ml files should be valid A2ML; use a2ml-validate runner +- notes: All .deed files should be valid A2ML; use a2ml-validate runner diff --git a/.machine_readable/contractiles/dust/Dustfile.a2ml b/.machine_readable/contractiles/dust/Dustfile.deed similarity index 98% rename from .machine_readable/contractiles/dust/Dustfile.a2ml rename to .machine_readable/contractiles/dust/Dustfile.deed index d9107a8..0124b8e 100644 --- a/.machine_readable/contractiles/dust/Dustfile.a2ml +++ b/.machine_readable/contractiles/dust/Dustfile.deed @@ -34,7 +34,7 @@ stale template artefacts inherited from instantiation. - description: No old .contractile or .hs files remaining - run: test -z "$(find .machine_readable/contractiles/ \( -name '*.contractile' -o -name '*.hs' \) 2>/dev/null)" - severity: warning -- notes: All contractiles should be .a2ml format +- notes: All contractiles should be .deed format ## Format Duplicates diff --git a/.machine_readable/integrations/feedback-o-tron.a2ml b/.machine_readable/integrations/feedback-o-tron.deed similarity index 100% rename from .machine_readable/integrations/feedback-o-tron.a2ml rename to .machine_readable/integrations/feedback-o-tron.deed diff --git a/.machine_readable/integrations/groove.a2ml b/.machine_readable/integrations/groove.deed similarity index 100% rename from .machine_readable/integrations/groove.a2ml rename to .machine_readable/integrations/groove.deed diff --git a/.machine_readable/integrations/proven.a2ml b/.machine_readable/integrations/proven.deed similarity index 100% rename from .machine_readable/integrations/proven.a2ml rename to .machine_readable/integrations/proven.deed diff --git a/.machine_readable/integrations/verisimdb.a2ml b/.machine_readable/integrations/verisimdb.deed similarity index 100% rename from .machine_readable/integrations/verisimdb.a2ml rename to .machine_readable/integrations/verisimdb.deed diff --git a/.machine_readable/integrations/vexometer.a2ml b/.machine_readable/integrations/vexometer.deed similarity index 100% rename from .machine_readable/integrations/vexometer.a2ml rename to .machine_readable/integrations/vexometer.deed diff --git a/.machine_readable/policies/0.2-AI-MANIFEST.a2ml b/.machine_readable/policies/0.2-AI-MANIFEST.deed similarity index 82% rename from .machine_readable/policies/0.2-AI-MANIFEST.a2ml rename to .machine_readable/policies/0.2-AI-MANIFEST.deed index 01a1914..3744056 100644 --- a/.machine_readable/policies/0.2-AI-MANIFEST.a2ml +++ b/.machine_readable/policies/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "policies-registry" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/policies/MAINTENANCE-AXES.a2ml b/.machine_readable/policies/MAINTENANCE-AXES.deed similarity index 88% rename from .machine_readable/policies/MAINTENANCE-AXES.a2ml rename to .machine_readable/policies/MAINTENANCE-AXES.deed index 144647a..eb38e38 100644 --- a/.machine_readable/policies/MAINTENANCE-AXES.a2ml +++ b/.machine_readable/policies/MAINTENANCE-AXES.deed @@ -15,10 +15,10 @@ human-entrypoints = [ "docs/practice/SOFTWARE-DEVELOPMENT-APPROACH.adoc", ] machine-entrypoints = [ - ".machine_readable/policies/MAINTENANCE-AXES.a2ml", - ".machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml", - ".machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml", - ".machine_readable/6a2/META.a2ml", + ".machine_readable/policies/MAINTENANCE-AXES.deed", + ".machine_readable/policies/MAINTENANCE-CHECKLIST.deed", + ".machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed", + ".machine_readable/6a2/META.deed", ".machine_readable/ai/README.adoc", ".machine_readable/bot_directives/README.scm", ] diff --git a/.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml b/.machine_readable/policies/MAINTENANCE-CHECKLIST.deed similarity index 98% rename from .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml rename to .machine_readable/policies/MAINTENANCE-CHECKLIST.deed index 05bd4f6..6a3771e 100644 --- a/.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml +++ b/.machine_readable/policies/MAINTENANCE-CHECKLIST.deed @@ -7,7 +7,7 @@ last-updated = "2026-02-24" scope = "cross-repo" source-human = "docs/governance/MAINTENANCE-CHECKLIST.adoc" companion-human = "docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc" -companion-machine = ".machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml" +companion-machine = ".machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed" [policy] single-source = true @@ -102,7 +102,7 @@ ownership_files = [ ] machine_readable_required = [ - ".machine_readable/6a2/anchors/ANCHOR.a2ml", + ".machine_readable/6a2/anchors/ANCHOR.deed", ".machine_readable/contractiles/", ".machine_readable/ai/", ".machine_readable/bot_directives/", diff --git a/.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml b/.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed similarity index 100% rename from .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml rename to .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed diff --git a/.machine_readable/root-allow.txt b/.machine_readable/root-allow.txt index 8463428..90383e1 100644 --- a/.machine_readable/root-allow.txt +++ b/.machine_readable/root-allow.txt @@ -16,7 +16,7 @@ README.adoc AUDIT.adoc EXPLAINME.adoc AFFIRMATION.adoc # dated/signed honesty snapshot (README/EXPLAINME/AFFIRMATION trio) -0-AI-MANIFEST.a2ml # thin pointer to .machine_readable/0.1-AI-MANIFEST.a2ml +0-AI-MANIFEST.deed # thin pointer to .machine_readable/0.1-AI-MANIFEST.deed GOVERNANCE.adoc # governance model (validator accepts root or docs/governance/) MAINTAINERS.adoc # maintainer roster CONTRIBUTING.md # REQUIRED AT ROOT by scorecard-enforcer/openssf-compliance/quality CI (test -f, no .github fallback). The fuller copy in .github/ is GitHub's auto-discovery convention; dedupe is an owner decision (would need those CI checks updated to accept .github/). diff --git a/.machine_readable/scripts/0.2-AI-MANIFEST.a2ml b/.machine_readable/scripts/0.2-AI-MANIFEST.deed similarity index 91% rename from .machine_readable/scripts/0.2-AI-MANIFEST.a2ml rename to .machine_readable/scripts/0.2-AI-MANIFEST.deed index 615df84..4816b3d 100644 --- a/.machine_readable/scripts/0.2-AI-MANIFEST.a2ml +++ b/.machine_readable/scripts/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "automation-scripts-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/scripts/forge/0.3-AI-MANIFEST.a2ml b/.machine_readable/scripts/forge/0.3-AI-MANIFEST.deed similarity index 83% rename from .machine_readable/scripts/forge/0.3-AI-MANIFEST.a2ml rename to .machine_readable/scripts/forge/0.3-AI-MANIFEST.deed index 4bbd6cf..3b1c80b 100644 --- a/.machine_readable/scripts/forge/0.3-AI-MANIFEST.a2ml +++ b/.machine_readable/scripts/forge/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "automation-unit-forge" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/scripts/lifecycle/0.3-AI-MANIFEST.a2ml b/.machine_readable/scripts/lifecycle/0.3-AI-MANIFEST.deed similarity index 84% rename from .machine_readable/scripts/lifecycle/0.3-AI-MANIFEST.a2ml rename to .machine_readable/scripts/lifecycle/0.3-AI-MANIFEST.deed index 3182d17..cfa4c90 100644 --- a/.machine_readable/scripts/lifecycle/0.3-AI-MANIFEST.a2ml +++ b/.machine_readable/scripts/lifecycle/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "automation-unit-lifecycle" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/scripts/lifecycle/install-tools.sh b/.machine_readable/scripts/lifecycle/install-tools.sh index 408df64..ef75b88 100755 --- a/.machine_readable/scripts/lifecycle/install-tools.sh +++ b/.machine_readable/scripts/lifecycle/install-tools.sh @@ -3,15 +3,20 @@ # # install-tools.sh — Developer toolchain installer # -# Detects and installs the required project toolchain (asdf, nix, or guix). +# Detects Guix (canonical) or asdf. Nix is deprecated. set -euo pipefail echo "=== RSR Toolchain Installer ===" -if [ -f "flake.nix" ] && command -v nix &>/dev/null; then - echo "Nix detected. Setting up development shell..." - nix develop --command echo "Nix shell verified." +if [ -f "build/guix.scm" ] || [ -f "guix.scm" ] || [ -f "build/.guix-channel" ]; then + if command -v guix &>/dev/null; then + echo "Guix detected. Enter: just guix-shell" + guix --version | head -1 || true + else + echo "Guix manifest present but guix is not on PATH." + echo "Install Guix: https://guix.gnu.org/manual/en/html_node/Binary-Installation.html" + fi elif [ -f ".tool-versions" ] && command -v asdf &>/dev/null; then echo "asdf detected. Installing plugins and tools..." while read -r line; do @@ -20,7 +25,7 @@ elif [ -f ".tool-versions" ] && command -v asdf &>/dev/null; then done < .tool-versions asdf install else - echo "No standard toolchain (Nix/asdf) detected or installed." + echo "No Guix channel/manifest detected." echo "Please refer to README.adoc for manual setup instructions." fi diff --git a/.machine_readable/scripts/verification/0.3-AI-MANIFEST.a2ml b/.machine_readable/scripts/verification/0.3-AI-MANIFEST.deed similarity index 84% rename from .machine_readable/scripts/verification/0.3-AI-MANIFEST.a2ml rename to .machine_readable/scripts/verification/0.3-AI-MANIFEST.deed index 460e069..1832785 100644 --- a/.machine_readable/scripts/verification/0.3-AI-MANIFEST.a2ml +++ b/.machine_readable/scripts/verification/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "automation-unit-verification" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/.machine_readable/self-validating/README.adoc b/.machine_readable/self-validating/README.adoc index 4aca2fd..acf8b8a 100644 --- a/.machine_readable/self-validating/README.adoc +++ b/.machine_readable/self-validating/README.adoc @@ -111,9 +111,9 @@ nickel eval .github/ci.k9.ncl K9 contractiles integrate with other RSR standards: -**STATE.a2ml**:: K9 components can generate or validate STATE.a2ml -**ECOSYSTEM.a2ml**:: K9 can automate cross-repo operations -**META.a2ml**:: K9 can enforce architectural decisions +**STATE.deed**:: K9 components can generate or validate STATE.deed +**ECOSYSTEM.deed**:: K9 can automate cross-repo operations +**META.deed**:: K9 can enforce architectural decisions == Security Best Practices diff --git a/.machine_readable/self-validating/examples/setup-repo.k9.ncl b/.machine_readable/self-validating/examples/setup-repo.k9.ncl index d1fc8bb..1314397 100644 --- a/.machine_readable/self-validating/examples/setup-repo.k9.ncl +++ b/.machine_readable/self-validating/examples/setup-repo.k9.ncl @@ -48,7 +48,7 @@ K9! # RSR compliance features to enable features = { - checkpoint_files | Bool = true, # STATE.a2ml, ECOSYSTEM.a2ml, META.a2ml + checkpoint_files | Bool = true, # STATE.deed, ECOSYSTEM.deed, META.deed security_workflows | Bool = true, # CodeQL, Scorecard, etc. quality_checks | Bool = true, # Linting, formatting mirroring | Bool = false, # GitLab/Bitbucket mirrors @@ -120,11 +120,11 @@ K9! }, "create-checkpoint-files" = { - description = "Create STATE.a2ml, ECOSYSTEM.a2ml, META.a2ml", + description = "Create STATE.deed, ECOSYSTEM.deed, META.deed", commands = [ - "echo '(state (version \"1.0.0\") (project \"%{config.repo_name}\"))' > STATE.a2ml", - "echo '(ecosystem (version \"1.0.0\") (name \"%{config.repo_name}\"))' > ECOSYSTEM.a2ml", - "echo '(meta (version \"1.0.0\") (project \"%{config.repo_name}\"))' > META.a2ml", + "echo '(state (version \"1.0.0\") (project \"%{config.repo_name}\"))' > STATE.deed", + "echo '(ecosystem (version \"1.0.0\") (name \"%{config.repo_name}\"))' > ECOSYSTEM.deed", + "echo '(meta (version \"1.0.0\") (project \"%{config.repo_name}\"))' > META.deed", "echo '✓ Checkpoint files created'", ], }, @@ -153,7 +153,7 @@ K9! "echo '⚠️ This will delete all generated files'", "echo 'Press Ctrl+C to cancel, or wait 5 seconds...'", "sleep 5", - "rm -f STATE.a2ml ECOSYSTEM.a2ml META.a2ml", + "rm -f STATE.deed ECOSYSTEM.deed META.deed", "echo '✓ Cleaned'", ], }, diff --git a/.machine_readable/self-validating/methodology-guard.k9.ncl b/.machine_readable/self-validating/methodology-guard.k9.ncl index 17f1409..d8cb90d 100644 --- a/.machine_readable/self-validating/methodology-guard.k9.ncl +++ b/.machine_readable/self-validating/methodology-guard.k9.ncl @@ -3,7 +3,7 @@ # # K9 Validator: Methodology Guard # Checks that agent work respects methodology constraints declared in -# bot_directives/methodology.a2ml. +# bot_directives/methodology.deed. # # Usage: k9 validate methodology-guard @@ -41,9 +41,9 @@ let methodology_guard = { }, state_not_template = { - description = "STATE.a2ml must not contain template placeholders", + description = "STATE.deed must not contain template placeholders", severity = "warning", - file = ".machine_readable/6a2/STATE.a2ml", + file = ".machine_readable/6a2/STATE.deed", # NOTE: the PROJECT token below is written as a Nickel concat # ("{{" ++ "PROJECT}}") ON PURPOSE. `just init` runs a sed substitution for # the brace-PROJECT-brace token over EVERY text file, which would otherwise @@ -57,9 +57,9 @@ let methodology_guard = { }, coverage_updated = { - description = "coverage.a2ml should be updated within 30 days", + description = "coverage.deed should be updated within 30 days", severity = "info", - file = ".machine_readable/bot_directives/coverage.a2ml", + file = ".machine_readable/bot_directives/coverage.deed", staleness_days = 30, }, }, diff --git a/0-AI-MANIFEST.a2ml b/0-AI-MANIFEST.deed similarity index 96% rename from 0-AI-MANIFEST.a2ml rename to 0-AI-MANIFEST.deed index 9d791b9..7904f98 100644 --- a/0-AI-MANIFEST.a2ml +++ b/0-AI-MANIFEST.deed @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) # -# AI-MANIFEST.a2ml — AI agent work allocation and policy +# AI-MANIFEST.deed — AI agent work allocation and policy # [metadata] version = "0.1.0" diff --git a/GOVERNANCE.adoc b/GOVERNANCE.adoc index e41020d..ea215c8 100644 --- a/GOVERNANCE.adoc +++ b/GOVERNANCE.adoc @@ -128,7 +128,7 @@ This repository adheres to hyperpolymath estate-wide policies: | **Contractiles** | Mustfile, Trustfile, Intendfile, Adjustfile in root -| **Machine Readable** | META.a2ml in .machine_readable/6a2/ +| **Machine Readable** | META.deed in .machine_readable/6a2/ | **CI/CD** | GitHub Actions workflows in .github/workflows/ diff --git a/Justfile b/Justfile index d609399..6db2d9d 100644 --- a/Justfile +++ b/Justfile @@ -52,7 +52,7 @@ info: @echo "Version: {{version}}" @echo "RSR Tier: {{tier}}" @echo "Recipes: $(just --summary | wc -w)" - @[ -f ".machine_readable/6a2/STATE.a2ml" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.a2ml | head -1 | xargs -I{} echo "Phase: {}" || true + @[ -f ".machine_readable/6a2/STATE.deed" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.deed | head -1 | xargs -I{} echo "Phase: {}" || true # Run Invariant Path overlay tools for this repository invariant-path *ARGS: @@ -502,32 +502,32 @@ import? "build/just/validate.just" # STATE MANAGEMENT # ═══════════════════════════════════════════════════════════════════════════════ -# Update STATE.a2ml timestamp +# Update STATE.deed timestamp state-touch: - @if [ -f ".machine_readable/6a2/STATE.a2ml" ]; then \ - sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/6a2/STATE.a2ml && \ - echo "STATE.a2ml timestamp updated"; \ + @if [ -f ".machine_readable/6a2/STATE.deed" ]; then \ + sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/6a2/STATE.deed && \ + echo "STATE.deed timestamp updated"; \ fi -# Show current phase from STATE.a2ml +# Show current phase from STATE.deed state-phase: - @grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.a2ml 2>/dev/null | head -1 || echo "unknown" + @grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.deed 2>/dev/null | head -1 || echo "unknown" # ═══════════════════════════════════════════════════════════════════════════════ -# GUIX & NIX +# GUIX (channels — Nix is deprecated in this estate) # ═══════════════════════════════════════════════════════════════════════════════ -# Enter Guix development shell (primary) +# Enter Guix development shell guix-shell: - guix shell -D -f guix.scm + guix shell -D -f build/guix.scm # Build with Guix guix-build: - guix build -f guix.scm + guix build -f build/guix.scm -# Enter Nix development shell (fallback) -nix-shell: - @if [ -f "flake.nix" ]; then nix develop; else echo "No flake.nix"; fi +# Show Guix channel pin for this repo +guix-channel: + @test -f build/.guix-channel && cat build/.guix-channel || echo "No build/.guix-channel" # ═══════════════════════════════════════════════════════════════════════════════ # HYBRID AUTOMATION diff --git a/README.adoc b/README.adoc index 74f18cd..d017fe0 100644 --- a/README.adoc +++ b/README.adoc @@ -64,7 +64,7 @@ infrastructure) on which those mechanisms will be built. | `docs/architecture/` | The design discipline charter, topology, threat model. | `docs/decisions/` | Architecture Decision Records. -| `0-AI-MANIFEST.a2ml` | Universal entry point for AI agents (read first). +| `0-AI-MANIFEST.deed` | Universal entry point for AI agents (read first). | `.machine_readable/` | Project metadata, policies, contractiles, AI configs. | `src/` | Source pillars (core, aspects, interface ABI/FFI, …). | `verification/` | Proof scripts (Coq, Agda, Idris2) and verification harness. diff --git a/build/contractile.just b/build/contractile.just index 9a5827b..1d812f4 100644 --- a/build/contractile.just +++ b/build/contractile.just @@ -5,7 +5,7 @@ # SPDX-License-Identifier: MPL-2.0 # === DUST (Recovery & Rollback) === -# Source: Dustfile.a2ml +# Source: Dustfile.deed # List available dust recovery actions dust-status: @@ -18,7 +18,7 @@ dust-source-rollback: # === INTEND (Declared Future Intent) === -# Source: Intentfile.a2ml +# Source: Intentfile.deed # Display declared future intents intend-list: @@ -30,7 +30,7 @@ intend-list: # === MUST (Physical State Checks) === -# Source: Mustfile.a2ml +# Source: Mustfile.deed # Run all must checks must-check: must-license-present must-readme-present must-spdx-headers must-no-banned-files @@ -54,7 +54,7 @@ must-no-banned-files: # === TRUST (Integrity & Provenance Verification) === -# Source: Trustfile.a2ml +# Source: Trustfile.deed # Run all trust verifications trust-verify: trust-license-content trust-no-secrets-committed trust-container-images-pinned diff --git a/build/just/assess.just b/build/just/assess.just index 2417778..37a9001 100644 --- a/build/just/assess.just +++ b/build/just/assess.just @@ -85,15 +85,15 @@ self-assess: echo " ⚠ Consequence: no C-compatible FFI bridge." fi - if $HAS_API && [ -f ".machine_readable/integrations/groove.a2ml" ]; then - PORT=$(grep '(port ' .machine_readable/integrations/groove.a2ml 2>/dev/null | sed 's/.*(port \([0-9]*\)).*/\1/') + if $HAS_API && [ -f ".machine_readable/integrations/groove.deed" ]; then + PORT=$(grep '(port ' .machine_readable/integrations/groove.deed 2>/dev/null | sed 's/.*(port \([0-9]*\)).*/\1/') if [ "$PORT" = "0" ]; then - echo " ⚠ groove.a2ml — Port not assigned. Run 'just groove-setup'." + echo " ⚠ groove.deed — Port not assigned. Run 'just groove-setup'." else - echo " ✓ groove.a2ml — KEEP (Groove discovery on port $PORT)" + echo " ✓ groove.deed — KEEP (Groove discovery on port $PORT)" fi elif $HAS_API; then - echo " ✗ groove.a2ml — MISSING. Your project has an API but no Groove manifest." + echo " ✗ groove.deed — MISSING. Your project has an API but no Groove manifest." echo " → Run 'just groove-setup' to enable snap-on/snap-off discovery." fi @@ -119,14 +119,12 @@ self-assess: echo " ○ .machine_readable/ai/PLACEHOLDERS.adoc — Template doc. Remove after init." fi - if { [ -f "build/flake.nix" ] || [ -f "flake.nix" ]; } && ! command -v nix >/dev/null 2>&1; then - echo " ○ flake.nix — Nix flake. Safe to remove if you don't use Nix." - echo " → KEEP if others might build with Nix." + if [ -f "flake.nix" ] || [ -f "build/flake.nix" ]; then + echo " ✗ flake.nix — Nix is deprecated. Remove; use Guix channels." fi if { [ -f "build/guix.scm" ] || [ -f "guix.scm" ]; } && ! command -v guix >/dev/null 2>&1; then - echo " ○ guix.scm — Guix package. Safe to remove if you don't use Guix." - echo " → KEEP if others might build with Guix." + echo " ○ guix.scm — Guix package present (install guix to use just guix-shell)." fi echo "" @@ -203,9 +201,9 @@ verify: check_file "LICENSE" check_either "CONTRIBUTING.md" "CONTRIBUTING.adoc" check_either "README.adoc" "README.md" - check_file ".machine_readable/6a2/STATE.a2ml" - check_file ".machine_readable/6a2/META.a2ml" - check_file ".machine_readable/6a2/ECOSYSTEM.a2ml" + check_file ".machine_readable/6a2/STATE.deed" + check_file ".machine_readable/6a2/META.deed" + check_file ".machine_readable/6a2/ECOSYSTEM.deed" check_either "CHANGELOG.md" "CHANGELOG.adoc" # Check at least 1 workflow exists diff --git a/build/just/groove.just b/build/just/groove.just index 029a9bd..70cc571 100644 --- a/build/just/groove.just +++ b/build/just/groove.just @@ -5,7 +5,7 @@ # # Imported by ../../Justfile via `import? "build/just/groove.just"`. # Recipes here configure and validate the Groove protocol manifest at -# .machine_readable/integrations/groove.a2ml — port assignment, API surface +# .machine_readable/integrations/groove.deed — port assignment, API surface # flags (REST/gRPC/GraphQL/WebSocket/SSE), and template-placeholder hygiene. # The manifest itself is consumed by the Groove bridge / zig-unified-api-adapter. @@ -13,7 +13,7 @@ groove-setup: #!/usr/bin/env bash set -euo pipefail - MANIFEST=".machine_readable/integrations/groove.a2ml" + MANIFEST=".machine_readable/integrations/groove.deed" if [ ! -f "$MANIFEST" ]; then echo "Error: $MANIFEST not found. Run 'just init' first." exit 1 @@ -59,7 +59,7 @@ verify-template: FOUND=0 # Check for double-brace placeholder patterns - HITS=$(grep -rn '{{'{{'}}[A-Z_]*{{'}}'}}' --include="*.adoc" --include="*.md" --include="*.a2ml" \ + HITS=$(grep -rn '{{'{{'}}[A-Z_]*{{'}}'}}' --include="*.adoc" --include="*.md" --include="*.deed" \ --include="*.scm" --include="*.toml" --include="*.yml" --include="*.yaml" \ . 2>/dev/null | grep -v 'node_modules\|\.git/' | grep -v 'PLACEHOLDERS.adoc' || true) if [ -n "$HITS" ]; then @@ -76,13 +76,13 @@ verify-template: fi # Check for port 0 in Groove manifest - if grep -q '(port 0)' .machine_readable/integrations/groove.a2ml 2>/dev/null; then + if grep -q '(port 0)' .machine_readable/integrations/groove.deed 2>/dev/null; then echo "⚠ Groove manifest has port 0 — run 'just groove-setup' to assign a port" FOUND=1 fi # Check for empty SCM files - for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml; do + for f in .machine_readable/6a2/STATE.deed .machine_readable/6a2/META.deed .machine_readable/6a2/ECOSYSTEM.deed; do if [ -f "$f" ] && grep -q '{{'{{'}}' "$f" 2>/dev/null; then echo "⚠ $f still has template placeholders" FOUND=1 diff --git a/build/just/init.just b/build/just/init.just index 746b4f6..e4ca9cc 100644 --- a/build/just/init.just +++ b/build/just/init.just @@ -176,15 +176,15 @@ init: done # Also replace [YOUR-REPO-NAME] and [YOUR-NAME/ORG] in AI manifest - sed -i "s|\[YOUR-REPO-NAME\]|${PROJECT_NAME}|g" 0-AI-MANIFEST.a2ml 2>/dev/null || true - sed -i "s|\[YOUR-NAME/ORG\]|${OWNER}|g" 0-AI-MANIFEST.a2ml 2>/dev/null || true + sed -i "s|\[YOUR-REPO-NAME\]|${PROJECT_NAME}|g" 0-AI-MANIFEST.deed 2>/dev/null || true + sed -i "s|\[YOUR-NAME/ORG\]|${OWNER}|g" 0-AI-MANIFEST.deed 2>/dev/null || true echo "" echo "── Validation ───────────────────────────────────" # Check for remaining placeholders PATTERN="${LB}[A-Z_]*${RB}" - REMAINING=$(grep -rl "$PATTERN" . --include='*.md' --include='*.adoc' --include='*.yml' --include='*.yaml' --include='*.a2ml' --include='*.toml' --include='*.scm' --include='*.ncl' --include='*.nix' --include='*.json' --include='*.sh' 2>/dev/null | grep -v '.git/' | grep -v '.machine_readable/ai/PLACEHOLDERS.adoc' || true) + REMAINING=$(grep -rl "$PATTERN" . --include='*.md' --include='*.adoc' --include='*.yml' --include='*.yaml' --include='*.deed' --include='*.toml' --include='*.scm' --include='*.ncl' --include='*.nix' --include='*.json' --include='*.sh' 2>/dev/null | grep -v '.git/' | grep -v '.machine_readable/ai/PLACEHOLDERS.adoc' || true) if [ -n "$REMAINING" ]; then echo "WARNING: Remaining placeholders in:" echo "$REMAINING" | sed 's/^/ /' diff --git a/build/just/validate.just b/build/just/validate.just index 5ef9208..ea1647a 100644 --- a/build/just/validate.just +++ b/build/just/validate.just @@ -13,10 +13,10 @@ validate-rsr: #!/usr/bin/env bash echo "=== RSR Compliance Check ===" MISSING="" - for f in .editorconfig .gitignore Justfile README.adoc LICENSE 0-AI-MANIFEST.a2ml; do + for f in .editorconfig .gitignore Justfile README.adoc LICENSE 0-AI-MANIFEST.deed; do [ -f "$f" ] || MISSING="$MISSING $f" done - for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml .machine_readable/6a2/anchors/ANCHOR.a2ml .machine_readable/policies/MAINTENANCE-AXES.a2ml .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml; do + for f in .machine_readable/6a2/STATE.deed .machine_readable/6a2/META.deed .machine_readable/6a2/ECOSYSTEM.deed .machine_readable/6a2/anchors/ANCHOR.deed .machine_readable/policies/MAINTENANCE-AXES.deed .machine_readable/policies/MAINTENANCE-CHECKLIST.deed .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed; do [ -f "$f" ] || MISSING="$MISSING $f" done for f in licensing/exhibits/EXHIBIT-A-ETHICAL-USE.txt licensing/exhibits/EXHIBIT-B-QUANTUM-SAFE.txt licensing/texts/MPL-2.0.txt; do @@ -31,19 +31,19 @@ validate-rsr: for f in docs/governance/MAINTENANCE-CHECKLIST.adoc docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc; do [ -f "$f" ] || MISSING="$MISSING $f" done - if [ -f ".machine_readable/6a2/META.a2ml" ]; then - grep -q 'axis-1 = "must > intend > like"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-1" - grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-2" - grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-3" - grep -q 'scoping-first = true' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:scoping-first" - grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:idris-unsound-scan" - grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:audit-focus" - grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:compliance-focus" - grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:effects-evidence" - grep -q 'compliance-tooling = "panic-attack"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:compliance-tooling" - grep -q 'effects-tooling = "ecological checking with sustainabot guidance"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:effects-tooling" - grep -q 'source-human = "docs/governance/MAINTENANCE-CHECKLIST.adoc"' .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml || MISSING="$MISSING MAINTENANCE-CHECKLIST.a2ml:source-human" - grep -q 'source-human = "docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc"' .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml || MISSING="$MISSING SOFTWARE-DEVELOPMENT-APPROACH.a2ml:source-human" + if [ -f ".machine_readable/6a2/META.deed" ]; then + grep -q 'axis-1 = "must > intend > like"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:axis-1" + grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:axis-2" + grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:axis-3" + grep -q 'scoping-first = true' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:scoping-first" + grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:idris-unsound-scan" + grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:audit-focus" + grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:compliance-focus" + grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/6a2/META.deed || MISSING="$MISSING META.deed:effects-evidence" + grep -q 'compliance-tooling = "panic-attack"' .machine_readable/policies/MAINTENANCE-AXES.deed || MISSING="$MISSING MAINTENANCE-AXES.deed:compliance-tooling" + grep -q 'effects-tooling = "ecological checking with sustainabot guidance"' .machine_readable/policies/MAINTENANCE-AXES.deed || MISSING="$MISSING MAINTENANCE-AXES.deed:effects-tooling" + grep -q 'source-human = "docs/governance/MAINTENANCE-CHECKLIST.adoc"' .machine_readable/policies/MAINTENANCE-CHECKLIST.deed || MISSING="$MISSING MAINTENANCE-CHECKLIST.deed:source-human" + grep -q 'source-human = "docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc"' .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed || MISSING="$MISSING SOFTWARE-DEVELOPMENT-APPROACH.deed:source-human" fi if [ -n "$MISSING" ]; then echo "MISSING:$MISSING" @@ -51,14 +51,14 @@ validate-rsr: fi echo "RSR compliance: PASS" -# Validate STATE.a2ml syntax +# Validate STATE.deed syntax validate-state: - @if [ -f ".machine_readable/6a2/STATE.a2ml" ]; then \ - grep -q '^\[metadata\]' .machine_readable/6a2/STATE.a2ml && \ - grep -q 'project\s*=' .machine_readable/6a2/STATE.a2ml && \ - echo "STATE.a2ml: valid" || echo "STATE.a2ml: INVALID (missing required sections)"; \ + @if [ -f ".machine_readable/6a2/STATE.deed" ]; then \ + grep -q '^\[metadata\]' .machine_readable/6a2/STATE.deed && \ + grep -q 'project\s*=' .machine_readable/6a2/STATE.deed && \ + echo "STATE.deed: valid" || echo "STATE.deed: INVALID (missing required sections)"; \ else \ - echo "No .machine_readable/6a2/STATE.a2ml found"; \ + echo "No .machine_readable/6a2/STATE.deed found"; \ fi # Validate AI installation guide completeness (finishbot pre-release check) diff --git a/build/setup.sh b/build/setup.sh index c03793d..c04d6ea 100755 --- a/build/setup.sh +++ b/build/setup.sh @@ -102,7 +102,6 @@ detect_platform() { elif command -v zypper >/dev/null 2>&1; then PKG_MGR="zypper" elif command -v rpm-ostree >/dev/null 2>&1; then PKG_MGR="rpm-ostree" elif command -v guix >/dev/null 2>&1; then PKG_MGR="guix" - elif command -v nix >/dev/null 2>&1; then PKG_MGR="nix" fi ;; Darwin*) @@ -150,7 +149,6 @@ install_just() { winget) winget install Casey.Just ;; rpm-ostree) sudo rpm-ostree install just ;; guix) guix install just ;; - nix) nix-env -iA nixpkgs.just ;; *) info "Using just installer script..." curl -fsSL https://just.systems/install.sh | bash -s -- --to /usr/local/bin diff --git a/container/0.1-AI-MANIFEST.a2ml b/container/0.1-AI-MANIFEST.deed similarity index 100% rename from container/0.1-AI-MANIFEST.a2ml rename to container/0.1-AI-MANIFEST.deed diff --git a/container/README.adoc b/container/README.adoc index e7c0379..11cac3a 100644 --- a/container/README.adoc +++ b/container/README.adoc @@ -64,7 +64,7 @@ All files use `{{PLACEHOLDER}}` tokens that are replaced by `just container-init (L1--L5), environment configs (dev/staging/prod), container configuration, and rolling deployment strategy. -| `0-AI-MANIFEST.a2ml` +| `0-AI-MANIFEST.deed` | AI-readable manifest describing the container directory, file interconnections, and the stapeln ecosystem. |=== diff --git a/docs/0.1-AI-MANIFEST.a2ml b/docs/0.1-AI-MANIFEST.deed similarity index 96% rename from docs/0.1-AI-MANIFEST.a2ml rename to docs/0.1-AI-MANIFEST.deed index 88d6ff0..3badb7d 100644 --- a/docs/0.1-AI-MANIFEST.a2ml +++ b/docs/0.1-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "docs-pillar" level: 1 -parent: "../0-AI-MANIFEST.a2ml" +parent: "../0-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/RSR_OUTLINE.adoc b/docs/RSR_OUTLINE.adoc index 471e3ce..40800bd 100644 --- a/docs/RSR_OUTLINE.adoc +++ b/docs/RSR_OUTLINE.adoc @@ -19,7 +19,7 @@ This repository provides the standardized structure, configuration, and tooling * Bootstrap new projects with RSR compliance * Reference the standard directory structure -* Copy configuration templates (Justfile, STATE.a2ml, etc.) +* Copy configuration templates (Justfile, STATE.deed, etc.) == Quick Start @@ -97,10 +97,10 @@ just validate-rsr |`PLACEHOLDERS.md` |Template variable reference and replacement guide -|`0-AI-MANIFEST.a2ml` +|`0-AI-MANIFEST.deed` |Universal AI agent entry point -|`AI.a2ml` +|`AI.deed` |Claude-specific instructions |`src/abi/` @@ -121,7 +121,7 @@ The template Justfile provides: * **Cookbook generation**: `just cookbook` -> `docs/just-cookbook.adoc` * **Man page generation**: `just man` -> `docs/man/project.1` * **RSR validation**: `just validate-rsr` -* **STATE.a2ml management**: `just state-touch`, `just state-phase` +* **STATE.deed management**: `just state-touch`, `just state-phase` * **Container support**: `just container-build`, `just container-push` * **CI matrix**: `just ci-matrix [stage] [depth]` @@ -161,12 +161,12 @@ project/ │ ├── humans.txt │ └── security.txt ├── .machine_readable/ # ALL machine-readable content -│ ├── STATE.a2ml # Project state, progress, blockers -│ ├── META.a2ml # Architecture decisions, governance -│ ├── ECOSYSTEM.a2ml # Ecosystem position, relationships -│ ├── AGENTIC.a2ml # AI agent interaction patterns -│ ├── NEUROSYM.a2ml # Neurosymbolic integration config -│ ├── PLAYBOOK.a2ml # Operational runbook +│ ├── STATE.deed # Project state, progress, blockers +│ ├── META.deed # Architecture decisions, governance +│ ├── ECOSYSTEM.deed # Ecosystem position, relationships +│ ├── AGENTIC.deed # AI agent interaction patterns +│ ├── NEUROSYM.deed # Neurosymbolic integration config +│ ├── PLAYBOOK.deed # Operational runbook │ ├── bot_directives/ # Per-bot rules and constraints │ └── contractiles/ # Policy enforcement contracts │ ├── k9/ # Security levels (Kennel/Yard/Hunt) @@ -198,8 +198,8 @@ project/ ├── README.adoc # Overview ├── TOPOLOGY.md # Architecture + completion ├── PLACEHOLDERS.md # Template variable guide -├── 0-AI-MANIFEST.a2ml # Universal AI entry point -└── AI.a2ml # Claude-specific instructions +├── 0-AI-MANIFEST.deed # Universal AI entry point +└── AI.deed # Claude-specific instructions ---- == RSR Compliance @@ -217,11 +217,11 @@ project/ * `Justfile` * `README.adoc` * `LICENSE` (MPL-2.0) -* `.machine_readable/6a2/STATE.a2ml` +* `.machine_readable/6a2/STATE.deed` * `.well-known/security.txt` * `.well-known/ai.txt` * `.well-known/humans.txt` -* `guix.scm` OR `flake.nix` +* `build/guix.scm` and `build/.guix-channel` === Prohibited @@ -232,9 +232,9 @@ project/ * npm, Bun, pnpm, yarn (use Deno) * Go (use Rust) -== STATE.a2ml +== STATE.deed -The STATE.a2ml file tracks project state: +The STATE.deed file tracks project state: [source] ---- @@ -262,7 +262,7 @@ milestones: == Badge Schema -Generate badges from STATE.a2ml: +Generate badges from STATE.deed: [source,bash] ---- @@ -275,7 +275,7 @@ See `docs/BADGE_SCHEMA.adoc` for the full badge taxonomy. This template is part of: -* **STATE.a2ml Ecosystem**: Conversation checkpoints +* **STATE.deed Ecosystem**: Conversation checkpoints * **RSR Framework**: Repository standards * **Consent-Aware-HTTP**: .well-known compliance * **Hypatia**: Neurosymbolic security scanning diff --git a/docs/STATE-VISUALIZER.adoc b/docs/STATE-VISUALIZER.adoc index d15b799..ac1df40 100644 --- a/docs/STATE-VISUALIZER.adoc +++ b/docs/STATE-VISUALIZER.adoc @@ -56,7 +56,7 @@ ┌─────────────────────────────────────────┐ │ REPO INFRASTRUCTURE │ │ Justfile / Mustfile .machine_readable/ │ - │ Codeowners / Reuse 0-AI-MANIFEST.a2ml │ + │ Codeowners / Reuse 0-AI-MANIFEST.deed │ └─────────────────────────────────────────┘ ``` diff --git a/docs/architecture/0.2-AI-MANIFEST.a2ml b/docs/architecture/0.2-AI-MANIFEST.deed similarity index 93% rename from docs/architecture/0.2-AI-MANIFEST.a2ml rename to docs/architecture/0.2-AI-MANIFEST.deed index 97b890e..508cb21 100644 --- a/docs/architecture/0.2-AI-MANIFEST.a2ml +++ b/docs/architecture/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "architecture-track" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/architecture/THREAT-MODEL.adoc b/docs/architecture/THREAT-MODEL.adoc index 043db12..2f213e8 100644 --- a/docs/architecture/THREAT-MODEL.adoc +++ b/docs/architecture/THREAT-MODEL.adoc @@ -101,7 +101,7 @@ Brief description of Panoply and its architecture. |---------------------------------|-------------------|------------|--------|--------|------------------------------------------------| | Unlogged deployment | Build artifacts | Medium | Medium | Medium | SLSA provenance; deployment audit trail | | Denied merge of vulnerable code | Source code | Low | Medium | Low | Git history is immutable; signed commits | -| Secret rotation without record | CI/CD secrets | Low | Low | Low | Secret rotation logged in STATE.a2ml | +| Secret rotation without record | CI/CD secrets | Low | Low | Low | Secret rotation logged in STATE.deed | ### Information Disclosure diff --git a/docs/attribution/0.2-AI-MANIFEST.a2ml b/docs/attribution/0.2-AI-MANIFEST.deed similarity index 83% rename from docs/attribution/0.2-AI-MANIFEST.a2ml rename to docs/attribution/0.2-AI-MANIFEST.deed index 52beaea..b555e6a 100644 --- a/docs/attribution/0.2-AI-MANIFEST.a2ml +++ b/docs/attribution/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "attribution-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/decisions/0.2-AI-MANIFEST.a2ml b/docs/decisions/0.2-AI-MANIFEST.deed similarity index 83% rename from docs/decisions/0.2-AI-MANIFEST.a2ml rename to docs/decisions/0.2-AI-MANIFEST.deed index ac26298..42ab311 100644 --- a/docs/decisions/0.2-AI-MANIFEST.a2ml +++ b/docs/decisions/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "decisions-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/decisions/0001-adopt-rsr-standard.adoc b/docs/decisions/0001-adopt-rsr-standard.adoc index ab983a8..33a146f 100644 --- a/docs/decisions/0001-adopt-rsr-standard.adoc +++ b/docs/decisions/0001-adopt-rsr-standard.adoc @@ -19,7 +19,7 @@ inconsistencies across the ecosystem. Common problems included: - Missing or incomplete configuration files (SECURITY.md, CONTRIBUTING.md, .editorconfig, etc.) -- State files (STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml) placed in the repository +- State files (STATE.deed, META.deed, ECOSYSTEM.deed) placed in the repository root instead of the canonical `.machine_readable/` directory - Duplicate or conflicting workflow definitions across repos - No standardized entry point for AI agents interacting with repositories @@ -37,9 +37,9 @@ will migrate incrementally as they receive active development. The RSR template provides: -- **Machine-readable state files** in `.machine_readable/` (STATE.a2ml, - ECOSYSTEM.a2ml, META.a2ml, AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml) -- **AI manifest** (`0-AI-MANIFEST.a2ml`) as a universal entry point for all +- **Machine-readable state files** in `.machine_readable/` (STATE.deed, + ECOSYSTEM.deed, META.deed, AGENTIC.deed, NEUROSYM.deed, PLAYBOOK.deed) +- **AI manifest** (`0-AI-MANIFEST.deed`) as a universal entry point for all AI agents - **Bot directives** in `.machine_readable/bot_directives/` for bot orchestration integration - **Contractiles** in `.machine_readable/contractiles/` (k9, dust, intend, must, trust) for @@ -66,7 +66,7 @@ rm -rf .git && git init - Automated compliance checking via `rsr-antipattern.yml` workflow - Bot fleet can operate reliably across all repos with predictable structure - AI agents (Claude, Gemini, etc.) have a standardized entry point via - `0-AI-MANIFEST.a2ml` + `0-AI-MANIFEST.deed` - New contributors can onboard faster with familiar, documented structure - Reduced maintenance burden: fix once in template, propagate to all repos - Machine-readable state enables tooling and automation pipelines diff --git a/docs/developer/0.2-AI-MANIFEST.a2ml b/docs/developer/0.2-AI-MANIFEST.deed similarity index 83% rename from docs/developer/0.2-AI-MANIFEST.a2ml rename to docs/developer/0.2-AI-MANIFEST.deed index c16fcc7..9e2b1a0 100644 --- a/docs/developer/0.2-AI-MANIFEST.a2ml +++ b/docs/developer/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "developer-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/0.1-AI-MANIFEST.a2ml b/docs/governance/0.1-AI-MANIFEST.deed similarity index 94% rename from docs/governance/0.1-AI-MANIFEST.a2ml rename to docs/governance/0.1-AI-MANIFEST.deed index 6e373bd..fa0ee52 100644 --- a/docs/governance/0.1-AI-MANIFEST.a2ml +++ b/docs/governance/0.1-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-pillar" level: 1 -parent: "../0-AI-MANIFEST.a2ml" +parent: "../0-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/CRG-AUDIT-TEMPLATE.adoc b/docs/governance/CRG-AUDIT-TEMPLATE.adoc index abf2bf8..419c88a 100644 --- a/docs/governance/CRG-AUDIT-TEMPLATE.adoc +++ b/docs/governance/CRG-AUDIT-TEMPLATE.adoc @@ -24,7 +24,7 @@ Evaluates the `panoply` repository against - Standard: `standards/component-readiness-grades/COMPONENT-READINESS-GRADES.md` - Template (criteria boilerplate): `rsr-template-repo/docs/governance/CRG-CRITERIA.adoc` - Self-declared grade (prior art): - * `.machine_readable/6a2/STATE.a2ml` → `grade = ""` + * `.machine_readable/6a2/STATE.deed` → `grade = ""` * `docs/READINESS.md` (if present) → per-component grades * Third-party badges (Glama, OpenSSF, etc.) if any — note date and scope - Audit date: 2026-06-21 @@ -68,7 +68,7 @@ Do *not* mark PRESENT without citing the path. | PRESENT (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK) / ABSENT | Layout matches CLAUDE.md invariant -| `0-AI-MANIFEST.a2ml` +| `0-AI-MANIFEST.deed` | PRESENT / ABSENT | Root @@ -76,7 +76,7 @@ Do *not* mark PRESENT without citing the path. | PRESENT / PARTIAL / ABSENT | `docs/` -| `guix.scm` + `flake.nix` +| `build/guix.scm` + `build/.guix-channel` | PRESENT (primary + fallback) / PARTIAL / ABSENT | Root @@ -140,10 +140,10 @@ RSR compliance verdict: *met* / *partial* / *not met* — Grade D floor satisfie === Test matrix -Cite *from authoritative source* (STATE.a2ml or CI log). Do not re-count by +Cite *from authoritative source* (STATE.deed or CI log). Do not re-count by filesystem grep — grade the evidence that already exists. -- `total-tests = N` (from `.machine_readable/6a2/STATE.a2ml` or CI). +- `total-tests = N` (from `.machine_readable/6a2/STATE.deed` or CI). - Breakdown by suite: list each named suite and its count. - CI: `.github/workflows/.yml` runs on push / tag / schedule. - Last green run: date + commit SHA. @@ -166,7 +166,7 @@ v2.0 C requires **per-file and per-directory orientation**. Evidence checklist: === Dogfooding / home-stable evidence -Cite STATE.a2ml `[dogfooding-status]`. For each line item: +Cite STATE.deed `[dogfooding-status]`. For each line item: - WHAT was dogfooded (capability), - HOW (concrete use-path), - WHEN (date completed), @@ -180,15 +180,15 @@ Cite STATE.a2ml `[dogfooding-status]`. For each line item: === External validation (Grade B / A) Distinguish carefully — v2.0 B requires **real external users with feedback**, -not catalogue listings. Populate the canonical STATE.a2ml sections named +not catalogue listings. Populate the canonical STATE.deed sections named below; internal-capability items belong under `[grade-b-status]` (legacy) or a roadmap section, *not* under `[external-targets]`. -- STATE.a2ml `[external-targets]` — at least 6 diverse entries for B. +- STATE.deed `[external-targets]` — at least 6 diverse entries for B. Target identity + date + outcome for each. If absent, grade is capped at C. -- STATE.a2ml `[issues-fed-back]` — closed-issue trail with external-reporter +- STATE.deed `[issues-fed-back]` — closed-issue trail with external-reporter label for B. -- STATE.a2ml `[field-signal]` — multi-source external confirmation for A. +- STATE.deed `[field-signal]` — multi-source external confirmation for A. - Awesome-list PRs merged (N). *Catalogue listings, not dogfooders.* - Directory/registry listings (MCP directory, Glama, etc.) with automated assessment badges — *third-party automated assessment, not external usage*. @@ -222,7 +222,7 @@ audit for a worked example (six items all re-classified as internal). | D | ✓/✗ -| All RSR structural requirements met; N tests; scope documented in STATE.a2ml, ROADMAP.adoc +| All RSR structural requirements met; N tests; scope documented in STATE.deed, ROADMAP.adoc | ... | C @@ -280,7 +280,7 @@ them. Examples: == Related Files - `docs/READINESS.md` — per-component table. Note v1.0-vs-v2.0 schema alignment. -- `.machine_readable/6a2/STATE.a2ml` — authoritative self-declared state. +- `.machine_readable/6a2/STATE.deed` — authoritative self-declared state. - `docs/governance/CRG-LIFT-PLAN-2026-06-21.adoc` — companion plan for D→C (and medium-term C→B) lifts. - `docs/governance/CRG-CRITERIA.adoc` — boilerplate criteria doc. diff --git a/docs/governance/CRG-CRITERIA.a2ml b/docs/governance/CRG-CRITERIA.deed similarity index 100% rename from docs/governance/CRG-CRITERIA.a2ml rename to docs/governance/CRG-CRITERIA.deed diff --git a/docs/governance/MAINTENANCE-CHECKLIST.adoc b/docs/governance/MAINTENANCE-CHECKLIST.adoc index e9a2cda..1ee9f20 100644 --- a/docs/governance/MAINTENANCE-CHECKLIST.adoc +++ b/docs/governance/MAINTENANCE-CHECKLIST.adoc @@ -8,7 +8,7 @@ Use this as a repeatable maintenance runbook for any repo. Companion policy: - `docs/practice/SOFTWARE-DEVELOPMENT-APPROACH.adoc` (human-readable) -- `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml` (machine-readable) +- `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed` (machine-readable) ## Canonical Repo Baseline (Final) @@ -91,8 +91,8 @@ Run this pass at the end of a corrective/adaptive/perfective cycle: - `MAINTAINER` in root - `.github/CODEOWNERS` - [ ] Keep machine-readable canonical structure under `.machine_readable/`: - - state/meta/ecosystem files (`*.a2ml` or repo standard) - - `anchors/ANCHOR.a2ml` + - state/meta/ecosystem files (`*.deed` or repo standard) + - `anchors/ANCHOR.deed` - `contractiles/` (`must`, `trust`, `intend`, and related) - `ai/` for AI guidance files - `bot_directives/` for bot control files @@ -412,7 +412,7 @@ Add these checks for language/compiler repositories with formal ABI/FFI constrai - [x] README structure restored (index/TOC, audience paths, quickstart sanity). - [x] Wiki split by audience (laypeople/users/developers) and linked from docs index. - [x] Root-level clutter reduced (archive, analysis, reports relegated to `docs/` subtrees). -- [x] Machine-readable docs synchronized (`STATE.a2ml`, `META.a2ml`, `ECOSYSTEM.a2ml`, contractiles). +- [x] Machine-readable docs synchronized (`STATE.deed`, `META.deed`, `ECOSYSTEM.deed`, contractiles). - [x] Human-readable docs synchronized (`README`, `QUICK_STATUS`, roadmap, wiki home). - [x] `Mustfile` invariants present and enforceable in CI. - [x] `Trustfile` and `Intentfile` present and complete. diff --git a/docs/governance/TEMPLATE-STANDARDS-AUDIT.adoc b/docs/governance/TEMPLATE-STANDARDS-AUDIT.adoc index 4ee2898..9a6b530 100644 --- a/docs/governance/TEMPLATE-STANDARDS-AUDIT.adoc +++ b/docs/governance/TEMPLATE-STANDARDS-AUDIT.adoc @@ -48,7 +48,7 @@ Inventory snapshot at audit time: | Renamed to canonical lowercase `src/interface/abi/*.idr` (matches `validate-template.sh` + gossamer). Checks remain tolerant of either case. | Root manifest structure with non-existent files -| legacy `0-AI-MANIFEST.a2ml` (pre-migration) +| legacy `0-AI-MANIFEST.deed` (pre-migration) | `GOVERNANCE.adoc`, several strict root assumptions | outdated | Manifest claims did not match actual template contents. @@ -76,7 +76,7 @@ Inventory snapshot at audit time: | Keep. | Central protocols are authoritative -| `README.adoc`, `0-AI-MANIFEST.a2ml`, `AUDIT.adoc` +| `README.adoc`, `0-AI-MANIFEST.deed`, `AUDIT.adoc` | `standards/session-management-standards/` | exists | Local docs now explicitly defer protocol authority to standards repo. @@ -155,7 +155,7 @@ Current status: rsr-template-repo/ README.adoc AUDIT.adoc - 0-AI-MANIFEST.a2ml + 0-AI-MANIFEST.deed EXPLAINME.adoc Justfile coordination.k9 diff --git a/docs/governance/TSDM.adoc b/docs/governance/TSDM.adoc index 42899ec..f4a961d 100644 --- a/docs/governance/TSDM.adoc +++ b/docs/governance/TSDM.adoc @@ -25,4 +25,4 @@ TSDM is a three-dimensional governance framework designed for high-assurance, lo == Integration -TSDM is the operational core of the Rhodium Standard. Every task in the `Justfile` and every state change in `STATE.a2ml` should be justifiable within this framework. +TSDM is the operational core of the Rhodium Standard. Every task in the `Justfile` and every state change in `STATE.deed` should be justifiable within this framework. diff --git a/docs/governance/TSDM.a2ml b/docs/governance/TSDM.deed similarity index 100% rename from docs/governance/TSDM.a2ml rename to docs/governance/TSDM.deed diff --git a/docs/governance/audit/0.2-AI-MANIFEST.a2ml b/docs/governance/audit/0.2-AI-MANIFEST.deed similarity index 81% rename from docs/governance/audit/0.2-AI-MANIFEST.a2ml rename to docs/governance/audit/0.2-AI-MANIFEST.deed index 4722486..9256de2 100644 --- a/docs/governance/audit/0.2-AI-MANIFEST.a2ml +++ b/docs/governance/audit/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-axis-audit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/audit/compliance/0.3-AI-MANIFEST.a2ml b/docs/governance/audit/compliance/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/audit/compliance/0.3-AI-MANIFEST.a2ml rename to docs/governance/audit/compliance/0.3-AI-MANIFEST.deed index b13ec69..dd52951 100644 --- a/docs/governance/audit/compliance/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/audit/compliance/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-compliance" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/audit/effects/0.3-AI-MANIFEST.a2ml b/docs/governance/audit/effects/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/audit/effects/0.3-AI-MANIFEST.a2ml rename to docs/governance/audit/effects/0.3-AI-MANIFEST.deed index 0bccae0..c2f8eba 100644 --- a/docs/governance/audit/effects/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/audit/effects/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-effects" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/audit/systems/0.3-AI-MANIFEST.a2ml b/docs/governance/audit/systems/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/audit/systems/0.3-AI-MANIFEST.a2ml rename to docs/governance/audit/systems/0.3-AI-MANIFEST.deed index f97bc9c..de2b91d 100644 --- a/docs/governance/audit/systems/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/audit/systems/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-systems" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/maintenance/0.2-AI-MANIFEST.a2ml b/docs/governance/maintenance/0.2-AI-MANIFEST.deed similarity index 82% rename from docs/governance/maintenance/0.2-AI-MANIFEST.a2ml rename to docs/governance/maintenance/0.2-AI-MANIFEST.deed index 8e0dff5..fd1b7c7 100644 --- a/docs/governance/maintenance/0.2-AI-MANIFEST.a2ml +++ b/docs/governance/maintenance/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-axis-maintenance" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/maintenance/adaptive/0.3-AI-MANIFEST.a2ml b/docs/governance/maintenance/adaptive/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/maintenance/adaptive/0.3-AI-MANIFEST.a2ml rename to docs/governance/maintenance/adaptive/0.3-AI-MANIFEST.deed index 63d1a99..2b91ab7 100644 --- a/docs/governance/maintenance/adaptive/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/maintenance/adaptive/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-adaptive" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/maintenance/corrective/0.3-AI-MANIFEST.a2ml b/docs/governance/maintenance/corrective/0.3-AI-MANIFEST.deed similarity index 84% rename from docs/governance/maintenance/corrective/0.3-AI-MANIFEST.a2ml rename to docs/governance/maintenance/corrective/0.3-AI-MANIFEST.deed index 05cb89d..ae4ae8b 100644 --- a/docs/governance/maintenance/corrective/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/maintenance/corrective/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-corrective" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/maintenance/perfective/0.3-AI-MANIFEST.a2ml b/docs/governance/maintenance/perfective/0.3-AI-MANIFEST.deed similarity index 84% rename from docs/governance/maintenance/perfective/0.3-AI-MANIFEST.a2ml rename to docs/governance/maintenance/perfective/0.3-AI-MANIFEST.deed index 832762f..e3fc85e 100644 --- a/docs/governance/maintenance/perfective/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/maintenance/perfective/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-perfective" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/planning/0.2-AI-MANIFEST.a2ml b/docs/governance/planning/0.2-AI-MANIFEST.deed similarity index 81% rename from docs/governance/planning/0.2-AI-MANIFEST.a2ml rename to docs/governance/planning/0.2-AI-MANIFEST.deed index 80339e7..819bda8 100644 --- a/docs/governance/planning/0.2-AI-MANIFEST.a2ml +++ b/docs/governance/planning/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-axis-planning" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/planning/could/0.3-AI-MANIFEST.a2ml b/docs/governance/planning/could/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/planning/could/0.3-AI-MANIFEST.a2ml rename to docs/governance/planning/could/0.3-AI-MANIFEST.deed index fc17a27..d4b705d 100644 --- a/docs/governance/planning/could/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/planning/could/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-could" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/planning/must/0.3-AI-MANIFEST.a2ml b/docs/governance/planning/must/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/planning/must/0.3-AI-MANIFEST.a2ml rename to docs/governance/planning/must/0.3-AI-MANIFEST.deed index 0987dae..9e689d8 100644 --- a/docs/governance/planning/must/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/planning/must/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-must" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/governance/planning/should/0.3-AI-MANIFEST.a2ml b/docs/governance/planning/should/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/governance/planning/should/0.3-AI-MANIFEST.a2ml rename to docs/governance/planning/should/0.3-AI-MANIFEST.deed index f492289..dd817c0 100644 --- a/docs/governance/planning/should/0.3-AI-MANIFEST.a2ml +++ b/docs/governance/planning/should/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "governance-unit-should" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/guide/0.2-AI-MANIFEST.a2ml b/docs/guide/0.2-AI-MANIFEST.deed similarity index 94% rename from docs/guide/0.2-AI-MANIFEST.a2ml rename to docs/guide/0.2-AI-MANIFEST.deed index cd3a039..ecea207 100644 --- a/docs/guide/0.2-AI-MANIFEST.a2ml +++ b/docs/guide/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "guide-track" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/guide/for-maintainers.adoc b/docs/guide/for-maintainers.adoc index 35fcea0..b42c459 100644 --- a/docs/guide/for-maintainers.adoc +++ b/docs/guide/for-maintainers.adoc @@ -78,7 +78,7 @@ rule. Code and charter must not drift apart. Closing an implementation hole is not the same as proving soundness. Keep two ledgers distinct: -* *implementation* state — what runs, tracked in `.machine_readable/6a2/STATE.a2ml` +* *implementation* state — what runs, tracked in `.machine_readable/6a2/STATE.deed` and xref:../status/READINESS.adoc[READINESS]; * *metatheory* state — what is mechanically proved, tracked in xref:../status/PROOF-NEEDS.adoc[PROOF-NEEDS] / xref:../status/PROOF-STATUS.adoc[PROOF-STATUS]. diff --git a/docs/legal/0.2-AI-MANIFEST.a2ml b/docs/legal/0.2-AI-MANIFEST.deed similarity index 89% rename from docs/legal/0.2-AI-MANIFEST.a2ml rename to docs/legal/0.2-AI-MANIFEST.deed index e547798..fcd1f63 100644 --- a/docs/legal/0.2-AI-MANIFEST.a2ml +++ b/docs/legal/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "legal-track" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/onboarding/QUICKSTART-DEV.adoc b/docs/onboarding/QUICKSTART-DEV.adoc index 0ebb0fc..7981436 100644 --- a/docs/onboarding/QUICKSTART-DEV.adoc +++ b/docs/onboarding/QUICKSTART-DEV.adoc @@ -24,9 +24,7 @@ proofs*, not feature code against a running compiler. [source,bash] ---- -guix shell # preferred -# or -nix develop # fallback +guix shell -D -f build/guix.scm git clone https://github.com/hyperpolymath/panoply.git cd panoply just # list available recipes diff --git a/docs/onboarding/QUICKSTART-MAINTAINER.adoc b/docs/onboarding/QUICKSTART-MAINTAINER.adoc index c9726c8..1fd3182 100644 --- a/docs/onboarding/QUICKSTART-MAINTAINER.adoc +++ b/docs/onboarding/QUICKSTART-MAINTAINER.adoc @@ -38,7 +38,7 @@ machine-readable state honest and consistent — not packaging a binary. == Honesty ledgers (keep distinct) -* Implementation state — `.machine_readable/6a2/STATE.a2ml`, +* Implementation state — `.machine_readable/6a2/STATE.deed`, xref:../status/READINESS.adoc[READINESS]. * Metatheory state — xref:../status/PROOF-NEEDS.adoc[PROOF-NEEDS], xref:../status/PROOF-STATUS.adoc[PROOF-STATUS]. Closing an implementation hole diff --git a/docs/practice/0.2-AI-MANIFEST.a2ml b/docs/practice/0.2-AI-MANIFEST.deed similarity index 83% rename from docs/practice/0.2-AI-MANIFEST.a2ml rename to docs/practice/0.2-AI-MANIFEST.deed index 257f3a4..2b02764 100644 --- a/docs/practice/0.2-AI-MANIFEST.a2ml +++ b/docs/practice/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "practice-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/practice/AI-CONVENTIONS.adoc b/docs/practice/AI-CONVENTIONS.adoc index 275a1a6..51aa0ab 100644 --- a/docs/practice/AI-CONVENTIONS.adoc +++ b/docs/practice/AI-CONVENTIONS.adoc @@ -11,13 +11,13 @@ Per-tool config files (.cursorrules, .clinerules, etc.) reference this document. ## Session Startup -1. Read `0-AI-MANIFEST.a2ml` FIRST (mandatory gatekeeper). -2. Read `.machine_readable/6a2/STATE.a2ml` for current status and blockers. -3. Read `.machine_readable/6a2/anchors/ANCHOR.a2ml` for canonical authority boundaries. -4. Read `.machine_readable/policies/MAINTENANCE-AXES.a2ml` for maintenance/audit sequencing. -5. Read `.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml` for baseline controls. -6. Read `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml` for execution order. -7. Read `.machine_readable/6a2/AGENTIC.a2ml` for agent constraints. +1. Read `0-AI-MANIFEST.deed` FIRST (mandatory gatekeeper). +2. Read `.machine_readable/6a2/STATE.deed` for current status and blockers. +3. Read `.machine_readable/6a2/anchors/ANCHOR.deed` for canonical authority boundaries. +4. Read `.machine_readable/policies/MAINTENANCE-AXES.deed` for maintenance/audit sequencing. +5. Read `.machine_readable/policies/MAINTENANCE-CHECKLIST.deed` for baseline controls. +6. Read `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed` for execution order. +7. Read `.machine_readable/6a2/AGENTIC.deed` for agent constraints. ## License @@ -35,10 +35,10 @@ Per-tool config files (.cursorrules, .clinerules, etc.) reference this document. ## State Files -State/metadata files, anchors, and policies (.a2ml) belong in `.machine_readable/` ONLY. -NEVER create STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, -NEUROSYM.a2ml, PLAYBOOK.a2ml, ANCHOR.a2ml, MAINTENANCE-AXES.a2ml, -MAINTENANCE-CHECKLIST.a2ml, or SOFTWARE-DEVELOPMENT-APPROACH.a2ml in the repository root. +State/metadata files, anchors, and policies (.deed) belong in `.machine_readable/` ONLY. +NEVER create STATE.deed, META.deed, ECOSYSTEM.deed, AGENTIC.deed, +NEUROSYM.deed, PLAYBOOK.deed, ANCHOR.deed, MAINTENANCE-AXES.deed, +MAINTENANCE-CHECKLIST.deed, or SOFTWARE-DEVELOPMENT-APPROACH.deed in the repository root. ## Banned Patterns @@ -78,10 +78,10 @@ Use `just` (Justfile) for all build, test, lint, and format tasks. ## References -- `0-AI-MANIFEST.a2ml` -- universal AI entry point -- `.machine_readable/6a2/AGENTIC.a2ml` -- agent permissions and constraints -- `.machine_readable/6a2/STATE.a2ml` -- current project state -- `.machine_readable/6a2/anchors/ANCHOR.a2ml` -- canonical authority and policy boundary -- `.machine_readable/policies/MAINTENANCE-AXES.a2ml` -- canonical axis sequencing and audit requirements -- `.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml` -- baseline maintenance checklist policy -- `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml` -- axis execution approach policy +- `0-AI-MANIFEST.deed` -- universal AI entry point +- `.machine_readable/6a2/AGENTIC.deed` -- agent permissions and constraints +- `.machine_readable/6a2/STATE.deed` -- current project state +- `.machine_readable/6a2/anchors/ANCHOR.deed` -- canonical authority and policy boundary +- `.machine_readable/policies/MAINTENANCE-AXES.deed` -- canonical axis sequencing and audit requirements +- `.machine_readable/policies/MAINTENANCE-CHECKLIST.deed` -- baseline maintenance checklist policy +- `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.deed` -- axis execution approach policy diff --git a/docs/practice/STATE-VISUALIZER-GUIDE.adoc b/docs/practice/STATE-VISUALIZER-GUIDE.adoc index 6252911..17c127a 100644 --- a/docs/practice/STATE-VISUALIZER-GUIDE.adoc +++ b/docs/practice/STATE-VISUALIZER-GUIDE.adoc @@ -143,10 +143,10 @@ Always 10 characters wide. Use full blocks only (no half-blocks). TOPOLOGY.md complements but does not replace: -- **STATE.a2ml** — machine-readable state (tasks, blockers, next actions) -- **ECOSYSTEM.a2ml** — position in the wider project ecosystem -- **META.a2ml** — architecture decisions and design rationale -- **0-AI-MANIFEST.a2ml** — AI agent entry point and invariants +- **STATE.deed** — machine-readable state (tasks, blockers, next actions) +- **ECOSYSTEM.deed** — position in the wider project ecosystem +- **META.deed** — architecture decisions and design rationale +- **0-AI-MANIFEST.deed** — AI agent entry point and invariants TOPOLOGY.md is the _visual summary_ for humans; the a2ml files are the _structured data_ for tooling. Both should agree. diff --git a/docs/proposals/root-cleanup.adoc b/docs/proposals/root-cleanup.adoc index b5a6b7b..cd7fc72 100644 --- a/docs/proposals/root-cleanup.adoc +++ b/docs/proposals/root-cleanup.adoc @@ -37,7 +37,7 @@ one-shot relocation PR per project once the template lands. The full enumeration lives in `.machine_readable/root-allow.txt`. Summary: * *Authority files (root):* `README.adoc`, `AUDIT.adoc`, `EXPLAINME.adoc`, - `0-AI-MANIFEST.a2ml` (thin pointer), `LICENSE`, `CHANGELOG.md`. + `0-AI-MANIFEST.deed` (thin pointer), `LICENSE`, `CHANGELOG.md`. * *Build entry points (root):* `Justfile`, `coordination.k9`. * *Tool-required dotfiles (root):* `.editorconfig`, `.envrc`, `.gitattributes`, `.gitignore`, `.tool-versions`. @@ -163,14 +163,14 @@ across `Justfile`, `scripts/`, `.machine_readable/`). === AI manifest deduplication -`.machine_readable/0.1-AI-MANIFEST.a2ml` is the canonical AI manifest in both +`.machine_readable/0.1-AI-MANIFEST.deed` is the canonical AI manifest in both the template and downstream repos (e.g. `the-nash-equilibrium` README line -244). The root `0-AI-MANIFEST.a2ml` becomes a thin pointer: +244). The root `0-AI-MANIFEST.deed` becomes a thin pointer: [source,a2ml] ---- -# 0-AI-MANIFEST.a2ml — pointer file -authority = ".machine_readable/0.1-AI-MANIFEST.a2ml" +# 0-AI-MANIFEST.deed — pointer file +authority = ".machine_readable/0.1-AI-MANIFEST.deed" note = "AI agents MUST read the canonical manifest at the path above." ---- diff --git a/docs/reports/0.2-AI-MANIFEST.a2ml b/docs/reports/0.2-AI-MANIFEST.deed similarity index 91% rename from docs/reports/0.2-AI-MANIFEST.a2ml rename to docs/reports/0.2-AI-MANIFEST.deed index 5eb265d..7ee540d 100644 --- a/docs/reports/0.2-AI-MANIFEST.a2ml +++ b/docs/reports/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "reports-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/reports/audit/pillar-audit-2026-04-15.adoc b/docs/reports/audit/pillar-audit-2026-04-15.adoc index a99e61f..3d213c4 100644 --- a/docs/reports/audit/pillar-audit-2026-04-15.adoc +++ b/docs/reports/audit/pillar-audit-2026-04-15.adoc @@ -10,7 +10,7 @@ Repository: `/var/mnt/eclipse/repos/rsr-template-repo` * *Dangerous Patterns*: *CLEAN*. * *Standards Check*: -** `.machine_readable/*.a2ml`: `0-AI-MANIFEST.a2ml` present. +** `.machine_readable/*.deed`: `0-AI-MANIFEST.deed` present. ** `Justfile`: *PRESENT*. ** `K9.k9` / `coordination.k9`: *PRESENT* (`coordination.k9`). * *CI/CD Status*: `.github/workflows` and `.gitlab-ci.yml` *PRESENT*. diff --git a/docs/reports/compliance/0.3-AI-MANIFEST.a2ml b/docs/reports/compliance/0.3-AI-MANIFEST.deed similarity index 84% rename from docs/reports/compliance/0.3-AI-MANIFEST.a2ml rename to docs/reports/compliance/0.3-AI-MANIFEST.deed index 6b39752..30e6b7f 100644 --- a/docs/reports/compliance/0.3-AI-MANIFEST.a2ml +++ b/docs/reports/compliance/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "report-unit-compliance" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/reports/maintenance/0.3-AI-MANIFEST.a2ml b/docs/reports/maintenance/0.3-AI-MANIFEST.deed similarity index 81% rename from docs/reports/maintenance/0.3-AI-MANIFEST.a2ml rename to docs/reports/maintenance/0.3-AI-MANIFEST.deed index 43eefe2..be6b2e7 100644 --- a/docs/reports/maintenance/0.3-AI-MANIFEST.a2ml +++ b/docs/reports/maintenance/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "report-unit-maintenance" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/reports/performance/0.3-AI-MANIFEST.a2ml b/docs/reports/performance/0.3-AI-MANIFEST.deed similarity index 84% rename from docs/reports/performance/0.3-AI-MANIFEST.a2ml rename to docs/reports/performance/0.3-AI-MANIFEST.deed index 40c0954..297e9d1 100644 --- a/docs/reports/performance/0.3-AI-MANIFEST.a2ml +++ b/docs/reports/performance/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "report-unit-performance" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/reports/quality/0.3-AI-MANIFEST.a2ml b/docs/reports/quality/0.3-AI-MANIFEST.deed similarity index 84% rename from docs/reports/quality/0.3-AI-MANIFEST.a2ml rename to docs/reports/quality/0.3-AI-MANIFEST.deed index d460edc..d9ec8f7 100644 --- a/docs/reports/quality/0.3-AI-MANIFEST.a2ml +++ b/docs/reports/quality/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "report-unit-quality" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/reports/security/0.3-AI-MANIFEST.a2ml b/docs/reports/security/0.3-AI-MANIFEST.deed similarity index 84% rename from docs/reports/security/0.3-AI-MANIFEST.a2ml rename to docs/reports/security/0.3-AI-MANIFEST.deed index 696ab59..8e4cdad 100644 --- a/docs/reports/security/0.3-AI-MANIFEST.a2ml +++ b/docs/reports/security/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "report-unit-security" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/standards/0.2-AI-MANIFEST.a2ml b/docs/standards/0.2-AI-MANIFEST.deed similarity index 82% rename from docs/standards/0.2-AI-MANIFEST.a2ml rename to docs/standards/0.2-AI-MANIFEST.deed index c147c6f..4cde0cc 100644 --- a/docs/standards/0.2-AI-MANIFEST.a2ml +++ b/docs/standards/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "standards-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/status/READINESS.adoc b/docs/status/READINESS.adoc index d2c205f..38716a1 100644 --- a/docs/status/READINESS.adoc +++ b/docs/status/READINESS.adoc @@ -40,19 +40,19 @@ evidence doesn't support the claim. *Evidence gates (v2.0 is stricter than v1.0):* * *D*: RSR-compliant + per-capability tests + documented scope. Test matrix - must cite counts and live in `.machine_readable/6a2/STATE.a2ml` or CI. + must cite counts and live in `.machine_readable/6a2/STATE.deed` or CI. * *C*: All of D, plus active dogfooding in home context with *no known home-context failures over an evidence window*, plus *deep per-file and per-directory annotation* (purpose, boundaries, invariants, execution/test/proof surfaces, per-directory orientation READMEs). - STATE.a2ml `[dogfooding-status]` populated with concrete "done — " + STATE.deed `[dogfooding-status]` populated with concrete "done — " entries. * *B*: All of C, plus *six genuinely diverse external targets* with - feedback fed back. STATE.a2ml `[external-targets]` holds target identities + feedback fed back. STATE.deed `[external-targets]` holds target identities + dates + outcomes; `[issues-fed-back]` holds the closed-issue trail. Internal-capability items do *not* count. * *A*: All of B, plus multi-source real-world external feedback confirming - value, no harm in the wild. STATE.a2ml `[field-signal]` populated. + value, no harm in the wild. STATE.deed `[field-signal]` populated. *Publication gate:* non-abstract implementation claims require *B+*. Below B, any publication must be explicitly abstract or provisional. @@ -65,7 +65,7 @@ Below B, any publication must be explicitly abstract or provisional. |=== | Metric | Value | Source -| Test count | __ | `.machine_readable/6a2/STATE.a2ml` or CI +| Test count | __ | `.machine_readable/6a2/STATE.deed` or CI | Formal-verification posture | __ | grep of proof dirs | Dangerous patterns (`assert_total`, `unsafeCoerce`, `Obj.magic`) | __ | grep 2026-06-21 | Per-unit README coverage | __ | filesystem scan of unit dirs @@ -113,7 +113,7 @@ CRG v2.0 requires two new pieces of evidence on top of D: ** Home context: __. ** "No known failures" is a moving claim — must hold continuously across the evidence window (recommended: 4 weeks, daily use). -** Populate `STATE.a2ml [dogfooding-status]` with one entry per capability: +** Populate `STATE.deed [dogfooding-status]` with one entry per capability: `capability = "done — "`. . *Deep code and folder annotation.* @@ -142,7 +142,7 @@ component. Candidate diversity axes: * Different topology (star, mesh, peer-to-peer). * Different trust model (same-org, federated, adversarial). -Populate `STATE.a2ml`: +Populate `STATE.deed`: * `[external-targets]` — target-id → `" — — "`. * `[issues-fed-back]` — issue-id → `" — — "`. @@ -156,7 +156,7 @@ into `[external-targets]`. == 6. What's Needed for B → A Real-world external feedback confirming value. Populate -`STATE.a2ml [field-signal]` with multi-source entries: +`STATE.deed [field-signal]` with multi-source entries: * External users beyond the six B-targets. * Third-party writeups, talks, papers, or testimonials. @@ -179,7 +179,7 @@ Real-world external feedback confirming value. Populate * `docs/governance/CRG-AUDIT-.adoc` — formal audit (populate from `docs/governance/CRG-AUDIT-TEMPLATE.adoc`). * `docs/practice/DOGFOOD-LOG.adoc` — dated dogfood evidence (required for C). -* `.machine_readable/6a2/STATE.a2ml` — authoritative state (canonical keys +* `.machine_readable/6a2/STATE.deed` — authoritative state (canonical keys `[dogfooding-status]`, `[external-targets]`, `[issues-fed-back]`, `[field-signal]`). diff --git a/docs/status/TEST-NEEDS.adoc b/docs/status/TEST-NEEDS.adoc index 0a1550d..7174fc7 100644 --- a/docs/status/TEST-NEEDS.adoc +++ b/docs/status/TEST-NEEDS.adoc @@ -4,7 +4,7 @@ == Current State -Panoply is at the design phase (see `.machine_readable/6a2/STATE.a2ml`): +Panoply is at the design phase (see `.machine_readable/6a2/STATE.deed`): the Core, Evidence, and Manifest artefacts described by the charter are not yet implemented. Test infrastructure at this stage necessarily covers the Idris2 ABI / Zig FFI scaffold, not language semantics. diff --git a/docs/theory/0.2-AI-MANIFEST.a2ml b/docs/theory/0.2-AI-MANIFEST.deed similarity index 93% rename from docs/theory/0.2-AI-MANIFEST.a2ml rename to docs/theory/0.2-AI-MANIFEST.deed index 93df187..b57d35c 100644 --- a/docs/theory/0.2-AI-MANIFEST.a2ml +++ b/docs/theory/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-track" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/theory/computing/0.3-AI-MANIFEST.a2ml b/docs/theory/computing/0.3-AI-MANIFEST.deed similarity index 82% rename from docs/theory/computing/0.3-AI-MANIFEST.a2ml rename to docs/theory/computing/0.3-AI-MANIFEST.deed index f387d08..6cb68aa 100644 --- a/docs/theory/computing/0.3-AI-MANIFEST.a2ml +++ b/docs/theory/computing/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-unit-computing" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/theory/formalisms/0.3-AI-MANIFEST.a2ml b/docs/theory/formalisms/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/theory/formalisms/0.3-AI-MANIFEST.a2ml rename to docs/theory/formalisms/0.3-AI-MANIFEST.deed index cdc2baa..e4099dc 100644 --- a/docs/theory/formalisms/0.3-AI-MANIFEST.a2ml +++ b/docs/theory/formalisms/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-unit-formalisms" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/theory/mathematics/0.3-AI-MANIFEST.a2ml b/docs/theory/mathematics/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/theory/mathematics/0.3-AI-MANIFEST.a2ml rename to docs/theory/mathematics/0.3-AI-MANIFEST.deed index 677a4da..b03803d 100644 --- a/docs/theory/mathematics/0.3-AI-MANIFEST.a2ml +++ b/docs/theory/mathematics/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-unit-mathematics" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/theory/ontologies/0.3-AI-MANIFEST.a2ml b/docs/theory/ontologies/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/theory/ontologies/0.3-AI-MANIFEST.a2ml rename to docs/theory/ontologies/0.3-AI-MANIFEST.deed index d888cee..305462b 100644 --- a/docs/theory/ontologies/0.3-AI-MANIFEST.a2ml +++ b/docs/theory/ontologies/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-unit-ontologies" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/theory/other/0.3-AI-MANIFEST.a2ml b/docs/theory/other/0.3-AI-MANIFEST.deed similarity index 82% rename from docs/theory/other/0.3-AI-MANIFEST.a2ml rename to docs/theory/other/0.3-AI-MANIFEST.deed index 166ed9e..8888003 100644 --- a/docs/theory/other/0.3-AI-MANIFEST.a2ml +++ b/docs/theory/other/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-unit-other" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/theory/socio-technical/0.3-AI-MANIFEST.a2ml b/docs/theory/socio-technical/0.3-AI-MANIFEST.deed similarity index 83% rename from docs/theory/socio-technical/0.3-AI-MANIFEST.a2ml rename to docs/theory/socio-technical/0.3-AI-MANIFEST.deed index 8919522..45a4431 100644 --- a/docs/theory/socio-technical/0.3-AI-MANIFEST.a2ml +++ b/docs/theory/socio-technical/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "theory-unit-socio-technical" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/whitepapers/0.2-AI-MANIFEST.a2ml b/docs/whitepapers/0.2-AI-MANIFEST.deed similarity index 92% rename from docs/whitepapers/0.2-AI-MANIFEST.a2ml rename to docs/whitepapers/0.2-AI-MANIFEST.deed index c936101..bbcffe8 100644 --- a/docs/whitepapers/0.2-AI-MANIFEST.a2ml +++ b/docs/whitepapers/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "whitepapers-track" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/whitepapers/academic/0.3-AI-MANIFEST.a2ml b/docs/whitepapers/academic/0.3-AI-MANIFEST.deed similarity index 81% rename from docs/whitepapers/academic/0.3-AI-MANIFEST.a2ml rename to docs/whitepapers/academic/0.3-AI-MANIFEST.deed index ceb8a1e..2beba7f 100644 --- a/docs/whitepapers/academic/0.3-AI-MANIFEST.a2ml +++ b/docs/whitepapers/academic/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "academic-unit" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/whitepapers/industry/0.3-AI-MANIFEST.a2ml b/docs/whitepapers/industry/0.3-AI-MANIFEST.deed similarity index 81% rename from docs/whitepapers/industry/0.3-AI-MANIFEST.a2ml rename to docs/whitepapers/industry/0.3-AI-MANIFEST.deed index 20156dd..5eea96a 100644 --- a/docs/whitepapers/industry/0.3-AI-MANIFEST.a2ml +++ b/docs/whitepapers/industry/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "industry-unit" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/whitepapers/outreach/0.3-AI-MANIFEST.a2ml b/docs/whitepapers/outreach/0.3-AI-MANIFEST.deed similarity index 92% rename from docs/whitepapers/outreach/0.3-AI-MANIFEST.a2ml rename to docs/whitepapers/outreach/0.3-AI-MANIFEST.deed index ed7e152..e01505c 100644 --- a/docs/whitepapers/outreach/0.3-AI-MANIFEST.a2ml +++ b/docs/whitepapers/outreach/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "whitepapers-track-outreach" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/docs/wikis/0.2-AI-MANIFEST.a2ml b/docs/wikis/0.2-AI-MANIFEST.deed similarity index 90% rename from docs/wikis/0.2-AI-MANIFEST.a2ml rename to docs/wikis/0.2-AI-MANIFEST.deed index f071ca8..ebc896d 100644 --- a/docs/wikis/0.2-AI-MANIFEST.a2ml +++ b/docs/wikis/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "wikis-track" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/examples/0.1-AI-MANIFEST.a2ml b/examples/0.1-AI-MANIFEST.deed similarity index 100% rename from examples/0.1-AI-MANIFEST.a2ml rename to examples/0.1-AI-MANIFEST.deed diff --git a/features/0.1-AI-MANIFEST.a2ml b/features/0.1-AI-MANIFEST.deed similarity index 91% rename from features/0.1-AI-MANIFEST.a2ml rename to features/0.1-AI-MANIFEST.deed index dc3e4ee..d727b95 100644 --- a/features/0.1-AI-MANIFEST.a2ml +++ b/features/0.1-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "features-pillar" level: 1 -parent: "../0-AI-MANIFEST.a2ml" +parent: "../0-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/features/boj-server/0.2-AI-MANIFEST.a2ml b/features/boj-server/0.2-AI-MANIFEST.deed similarity index 85% rename from features/boj-server/0.2-AI-MANIFEST.a2ml rename to features/boj-server/0.2-AI-MANIFEST.deed index c77798c..aae51ae 100644 --- a/features/boj-server/0.2-AI-MANIFEST.a2ml +++ b/features/boj-server/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "feature-unit-boj-server" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/features/panic-attacker/0.2-AI-MANIFEST.a2ml b/features/panic-attacker/0.2-AI-MANIFEST.deed similarity index 86% rename from features/panic-attacker/0.2-AI-MANIFEST.a2ml rename to features/panic-attacker/0.2-AI-MANIFEST.deed index e61ad24..b7fa689 100644 --- a/features/panic-attacker/0.2-AI-MANIFEST.a2ml +++ b/features/panic-attacker/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "feature-unit-panic-attacker" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/features/ssg/0.2-AI-MANIFEST.a2ml b/features/ssg/0.2-AI-MANIFEST.deed similarity index 84% rename from features/ssg/0.2-AI-MANIFEST.a2ml rename to features/ssg/0.2-AI-MANIFEST.deed index 121c5ae..1503261 100644 --- a/features/ssg/0.2-AI-MANIFEST.a2ml +++ b/features/ssg/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "feature-unit-ssg" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/machine-readable-design/canonical-directory-structure/Adjustfile.a2ml b/machine-readable-design/canonical-directory-structure/Adjustfile.deed similarity index 100% rename from machine-readable-design/canonical-directory-structure/Adjustfile.a2ml rename to machine-readable-design/canonical-directory-structure/Adjustfile.deed diff --git a/machine-readable-design/canonical-directory-structure/Intentfile.a2ml b/machine-readable-design/canonical-directory-structure/Intentfile.deed similarity index 100% rename from machine-readable-design/canonical-directory-structure/Intentfile.a2ml rename to machine-readable-design/canonical-directory-structure/Intentfile.deed diff --git a/machine-readable-design/canonical-directory-structure/Mustfile.a2ml b/machine-readable-design/canonical-directory-structure/Mustfile.deed similarity index 100% rename from machine-readable-design/canonical-directory-structure/Mustfile.a2ml rename to machine-readable-design/canonical-directory-structure/Mustfile.deed diff --git a/machine-readable-design/canonical-directory-structure/README.adoc b/machine-readable-design/canonical-directory-structure/README.adoc index ad157e3..0daf677 100644 --- a/machine-readable-design/canonical-directory-structure/README.adoc +++ b/machine-readable-design/canonical-directory-structure/README.adoc @@ -13,21 +13,21 @@ and customize them with your project-specific content. .machine_readable/ ├── 6a2/ │ ├── anchors/ -│ ├── META.a2ml -│ ├── ECOSYSTEM.a2ml -│ ├── STATE.a2ml -│ ├── PLAYBOOK.a2ml -│ ├── AGENTIC.a2ml -│ └── NEUROSYM.a2ml +│ ├── META.deed +│ ├── ECOSYSTEM.deed +│ ├── STATE.deed +│ ├── PLAYBOOK.deed +│ ├── AGENTIC.deed +│ └── NEUROSYM.deed ├── contractiles/ -│ ├── Intentfile.a2ml <- Copy from here -│ ├── Mustfile.a2ml <- Copy from here -│ ├── Trustfile.a2ml <- Copy from here -│ ├── Adjustfile.a2ml <- Copy from here +│ ├── Intentfile.deed <- Copy from here +│ ├── Mustfile.deed <- Copy from here +│ ├── Trustfile.deed <- Copy from here +│ ├── Adjustfile.deed <- Copy from here │ ├── bust/ -│ │ └── Bustfile.a2ml <- Copy from here +│ │ └── Bustfile.deed <- Copy from here │ └── dust/ -│ └── Dustfile.a2ml <- Copy from here +│ └── Dustfile.deed <- Copy from here ├── self-validating/ │ ├── examples/ │ └── k9-svc/ @@ -42,51 +42,51 @@ The following command-line runners process these files: |=== | Runner | Processes | Purpose -| `intend` | Intentfile.a2ml | North-star tracking (intents + wishes) -| `must` | Mustfile.a2ml | Hard requirements (CI gates) -| `trust` | Trustfile.a2ml | Trust boundaries + integrity checks -| `adjust` | Adjustfile.a2ml | Drift tolerance + corrective actions -| `bust` | Bustfile.a2ml | Rollback procedures -| `dust` | Dustfile.a2ml | Cleanup/hygiene checks +| `intend` | Intentfile.deed | North-star tracking (intents + wishes) +| `must` | Mustfile.deed | Hard requirements (CI gates) +| `trust` | Trustfile.deed | Trust boundaries + integrity checks +| `adjust` | Adjustfile.deed | Drift tolerance + corrective actions +| `bust` | Bustfile.deed | Rollback procedures +| `dust` | Dustfile.deed | Cleanup/hygiene checks | `anchor` | anchors/ | Anchoring system (6a2) | `just` | Justfile | Task automation |=== == File Descriptions -=== Intentfile.a2ml +=== Intentfile.deed North-star contractile. Declares: - **Purpose**: What the project IS - **Anti-Purpose**: What the project is NOT (prevents scope creep) - **Committed Next-Actions**: Concrete deliverables being worked on - **Wishes**: Aspirational goals grouped by horizon (near/mid/far) -=== Mustfile.a2ml +=== Mustfile.deed Physical state contractile. Defines hard requirements: - File presence checks - Directory structure requirements - Repository standards compliance - Code quality gates -=== Trustfile.a2ml +=== Trustfile.deed Trust boundaries and integrity: - Trust level (maximal/standard/restricted/minimal) - Integrity invariants (secrets, provenance, container security) - Sensitive areas requiring explicit approval -=== Adjustfile.a2ml +=== Adjustfile.deed Drift tolerance contractile. Tracks: - Cumulative drift against tolerance bands - Corrective actions for when drift is detected - Advisory warnings (does not block, unlike MUST) -=== Bustfile.a2ml +=== Bustfile.deed Rollback and breakage contractile. Defines: - Breakage scenarios and rollback procedures - Escalation ladder - Backup points -=== Dustfile.a2ml +=== Dustfile.deed Cleanup and hygiene contractile. Defines: - Stale file patterns to remove - Build artifacts that should not be tracked diff --git a/machine-readable-design/canonical-directory-structure/Trustfile.a2ml b/machine-readable-design/canonical-directory-structure/Trustfile.deed similarity index 100% rename from machine-readable-design/canonical-directory-structure/Trustfile.a2ml rename to machine-readable-design/canonical-directory-structure/Trustfile.deed diff --git a/machine-readable-design/canonical-directory-structure/bust/Bustfile.a2ml b/machine-readable-design/canonical-directory-structure/bust/Bustfile.deed similarity index 89% rename from machine-readable-design/canonical-directory-structure/bust/Bustfile.a2ml rename to machine-readable-design/canonical-directory-structure/bust/Bustfile.deed index 0c4d965..9f9f9cb 100644 --- a/machine-readable-design/canonical-directory-structure/bust/Bustfile.a2ml +++ b/machine-readable-design/canonical-directory-structure/bust/Bustfile.deed @@ -1,4 +1,4 @@ -// Bustfile.a2ml — Rollback and breakage contractile (GENERIC TEMPLATE) +// Bustfile.deed — Rollback and breakage contractile (GENERIC TEMPLATE) // SPDX-License-Identifier: MPL-2.0 Bust { diff --git a/machine-readable-design/canonical-directory-structure/dust/Dustfile.a2ml b/machine-readable-design/canonical-directory-structure/dust/Dustfile.deed similarity index 100% rename from machine-readable-design/canonical-directory-structure/dust/Dustfile.a2ml rename to machine-readable-design/canonical-directory-structure/dust/Dustfile.deed diff --git a/session/dispatch.sh b/session/dispatch.sh index 61dc720..1bd1cfe 100755 --- a/session/dispatch.sh +++ b/session/dispatch.sh @@ -121,7 +121,7 @@ if [ -n "$standards_dir" ] && [ -d "$standards_dir/$protocol_rel" ]; then echo "standard: $standards_dir/$protocol_rel" echo "checklist: $standards_dir/$protocol_rel/CHECKLIST.adoc" echo "protocol: $standards_dir/$protocol_rel/PROTOCOL.k9" - echo "state template: $standards_dir/$protocol_rel/STATE-template.a2ml" + echo "state template: $standards_dir/$protocol_rel/STATE-template.deed" else echo "warning: could not resolve central standards directory." echo "Set SESSION_STANDARDS_DIR to standards/session-management-standards." >&2 diff --git a/src/0.1-AI-MANIFEST.a2ml b/src/0.1-AI-MANIFEST.deed similarity index 94% rename from src/0.1-AI-MANIFEST.a2ml rename to src/0.1-AI-MANIFEST.deed index c92e124..eba9da1 100644 --- a/src/0.1-AI-MANIFEST.a2ml +++ b/src/0.1-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-pillar" level: 1 -parent: "../0-AI-MANIFEST.a2ml" +parent: "../0-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/aspects/0.2-AI-MANIFEST.a2ml b/src/aspects/0.2-AI-MANIFEST.deed similarity index 90% rename from src/aspects/0.2-AI-MANIFEST.a2ml rename to src/aspects/0.2-AI-MANIFEST.deed index 3d5b209..d19f749 100644 --- a/src/aspects/0.2-AI-MANIFEST.a2ml +++ b/src/aspects/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-aspects" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/aspects/integrity/0.3-AI-MANIFEST.a2ml b/src/aspects/integrity/0.3-AI-MANIFEST.deed similarity index 83% rename from src/aspects/integrity/0.3-AI-MANIFEST.a2ml rename to src/aspects/integrity/0.3-AI-MANIFEST.deed index f114cbd..f1f8a9f 100644 --- a/src/aspects/integrity/0.3-AI-MANIFEST.a2ml +++ b/src/aspects/integrity/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "aspect-unit-integrity" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/aspects/observability/0.3-AI-MANIFEST.a2ml b/src/aspects/observability/0.3-AI-MANIFEST.deed similarity index 84% rename from src/aspects/observability/0.3-AI-MANIFEST.a2ml rename to src/aspects/observability/0.3-AI-MANIFEST.deed index e16cbdf..1dc16f6 100644 --- a/src/aspects/observability/0.3-AI-MANIFEST.a2ml +++ b/src/aspects/observability/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "aspect-unit-observability" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/aspects/security/0.3-AI-MANIFEST.a2ml b/src/aspects/security/0.3-AI-MANIFEST.deed similarity index 83% rename from src/aspects/security/0.3-AI-MANIFEST.a2ml rename to src/aspects/security/0.3-AI-MANIFEST.deed index 0996536..295c941 100644 --- a/src/aspects/security/0.3-AI-MANIFEST.a2ml +++ b/src/aspects/security/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "aspect-unit-security" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/backends/0.2-AI-MANIFEST.a2ml b/src/backends/0.2-AI-MANIFEST.deed similarity index 90% rename from src/backends/0.2-AI-MANIFEST.a2ml rename to src/backends/0.2-AI-MANIFEST.deed index 075758d..e4b409f 100644 --- a/src/backends/0.2-AI-MANIFEST.a2ml +++ b/src/backends/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-backends" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/bridges/0.2-AI-MANIFEST.a2ml b/src/bridges/0.2-AI-MANIFEST.deed similarity index 84% rename from src/bridges/0.2-AI-MANIFEST.a2ml rename to src/bridges/0.2-AI-MANIFEST.deed index 3d3e27a..9060a0d 100644 --- a/src/bridges/0.2-AI-MANIFEST.a2ml +++ b/src/bridges/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-bridges" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/contracts/0.2-AI-MANIFEST.a2ml b/src/contracts/0.2-AI-MANIFEST.deed similarity index 83% rename from src/contracts/0.2-AI-MANIFEST.a2ml rename to src/contracts/0.2-AI-MANIFEST.deed index 0bd9198..7e62973 100644 --- a/src/contracts/0.2-AI-MANIFEST.a2ml +++ b/src/contracts/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-contracts" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/core/0.2-AI-MANIFEST.a2ml b/src/core/0.2-AI-MANIFEST.deed similarity index 83% rename from src/core/0.2-AI-MANIFEST.a2ml rename to src/core/0.2-AI-MANIFEST.deed index 22846c7..a6e79a8 100644 --- a/src/core/0.2-AI-MANIFEST.a2ml +++ b/src/core/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-core" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/definitions/0.2-AI-MANIFEST.a2ml b/src/definitions/0.2-AI-MANIFEST.deed similarity index 83% rename from src/definitions/0.2-AI-MANIFEST.a2ml rename to src/definitions/0.2-AI-MANIFEST.deed index e54f4da..e535aaf 100644 --- a/src/definitions/0.2-AI-MANIFEST.a2ml +++ b/src/definitions/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-definitions" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/errors/0.2-AI-MANIFEST.a2ml b/src/errors/0.2-AI-MANIFEST.deed similarity index 82% rename from src/errors/0.2-AI-MANIFEST.a2ml rename to src/errors/0.2-AI-MANIFEST.deed index dddcc6c..22041ee 100644 --- a/src/errors/0.2-AI-MANIFEST.a2ml +++ b/src/errors/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-errors" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/evidence/0.2-AI-MANIFEST.a2ml b/src/evidence/0.2-AI-MANIFEST.deed similarity index 90% rename from src/evidence/0.2-AI-MANIFEST.a2ml rename to src/evidence/0.2-AI-MANIFEST.deed index fe41124..3b2bfab 100644 --- a/src/evidence/0.2-AI-MANIFEST.a2ml +++ b/src/evidence/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-evidence" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/0.2-AI-MANIFEST.a2ml b/src/interface/0.2-AI-MANIFEST.deed similarity index 94% rename from src/interface/0.2-AI-MANIFEST.a2ml rename to src/interface/0.2-AI-MANIFEST.deed index 7f0f471..d1f7644 100644 --- a/src/interface/0.2-AI-MANIFEST.a2ml +++ b/src/interface/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "interface-seams-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/Abi/0.3-AI-MANIFEST.a2ml b/src/interface/Abi/0.3-AI-MANIFEST.deed similarity index 81% rename from src/interface/Abi/0.3-AI-MANIFEST.a2ml rename to src/interface/Abi/0.3-AI-MANIFEST.deed index 91cafa0..0ab9779 100644 --- a/src/interface/Abi/0.3-AI-MANIFEST.a2ml +++ b/src/interface/Abi/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "abi-logic" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/ffi/0.3-AI-MANIFEST.a2ml b/src/interface/ffi/0.3-AI-MANIFEST.deed similarity index 81% rename from src/interface/ffi/0.3-AI-MANIFEST.a2ml rename to src/interface/ffi/0.3-AI-MANIFEST.deed index bf456ae..5647a6d 100644 --- a/src/interface/ffi/0.3-AI-MANIFEST.a2ml +++ b/src/interface/ffi/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "ffi-logic" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/ffi/src/0.4-AI-MANIFEST.a2ml b/src/interface/ffi/src/0.4-AI-MANIFEST.deed similarity index 80% rename from src/interface/ffi/src/0.4-AI-MANIFEST.a2ml rename to src/interface/ffi/src/0.4-AI-MANIFEST.deed index 5b5f1b1..3c6e37f 100644 --- a/src/interface/ffi/src/0.4-AI-MANIFEST.a2ml +++ b/src/interface/ffi/src/0.4-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "src-unit" level: 4 -parent: "../0.3-AI-MANIFEST.a2ml" +parent: "../0.3-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/ffi/test/0.4-AI-MANIFEST.a2ml b/src/interface/ffi/test/0.4-AI-MANIFEST.deed similarity index 80% rename from src/interface/ffi/test/0.4-AI-MANIFEST.a2ml rename to src/interface/ffi/test/0.4-AI-MANIFEST.deed index e02427f..bf1600f 100644 --- a/src/interface/ffi/test/0.4-AI-MANIFEST.a2ml +++ b/src/interface/ffi/test/0.4-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "test-unit" level: 4 -parent: "../0.3-AI-MANIFEST.a2ml" +parent: "../0.3-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/generated/0.3-AI-MANIFEST.a2ml b/src/interface/generated/0.3-AI-MANIFEST.deed similarity index 82% rename from src/interface/generated/0.3-AI-MANIFEST.a2ml rename to src/interface/generated/0.3-AI-MANIFEST.deed index 0088b80..d79cd9c 100644 --- a/src/interface/generated/0.3-AI-MANIFEST.a2ml +++ b/src/interface/generated/0.3-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "generated-logic" level: 3 -parent: "../0.2-AI-MANIFEST.a2ml" +parent: "../0.2-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/interface/generated/abi/0.4-AI-MANIFEST.a2ml b/src/interface/generated/abi/0.4-AI-MANIFEST.deed similarity index 80% rename from src/interface/generated/abi/0.4-AI-MANIFEST.a2ml rename to src/interface/generated/abi/0.4-AI-MANIFEST.deed index 4eeb580..86afdc4 100644 --- a/src/interface/generated/abi/0.4-AI-MANIFEST.a2ml +++ b/src/interface/generated/abi/0.4-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "abi-unit" level: 4 -parent: "../0.3-AI-MANIFEST.a2ml" +parent: "../0.3-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/manifest/0.2-AI-MANIFEST.a2ml b/src/manifest/0.2-AI-MANIFEST.deed similarity index 90% rename from src/manifest/0.2-AI-MANIFEST.a2ml rename to src/manifest/0.2-AI-MANIFEST.deed index a7a7fc2..7639045 100644 --- a/src/manifest/0.2-AI-MANIFEST.a2ml +++ b/src/manifest/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-manifest" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/src/projections/0.2-AI-MANIFEST.a2ml b/src/projections/0.2-AI-MANIFEST.deed similarity index 90% rename from src/projections/0.2-AI-MANIFEST.a2ml rename to src/projections/0.2-AI-MANIFEST.deed index b1cad8c..262bc45 100644 --- a/src/projections/0.2-AI-MANIFEST.a2ml +++ b/src/projections/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "source-unit-projections" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/0.1-AI-MANIFEST.a2ml b/verification/0.1-AI-MANIFEST.deed similarity index 95% rename from verification/0.1-AI-MANIFEST.a2ml rename to verification/0.1-AI-MANIFEST.deed index 3435bdb..6143084 100644 --- a/verification/0.1-AI-MANIFEST.a2ml +++ b/verification/0.1-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "verification-pillar" level: 1 -parent: "../0-AI-MANIFEST.a2ml" +parent: "../0-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/benchmarks/0.2-AI-MANIFEST.a2ml b/verification/benchmarks/0.2-AI-MANIFEST.deed similarity index 80% rename from verification/benchmarks/0.2-AI-MANIFEST.a2ml rename to verification/benchmarks/0.2-AI-MANIFEST.deed index d922a4c..0b75d0c 100644 --- a/verification/benchmarks/0.2-AI-MANIFEST.a2ml +++ b/verification/benchmarks/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "benches-pillar" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/coverage/0.2-AI-MANIFEST.a2ml b/verification/coverage/0.2-AI-MANIFEST.deed similarity index 88% rename from verification/coverage/0.2-AI-MANIFEST.a2ml rename to verification/coverage/0.2-AI-MANIFEST.deed index 32b819e..f3a68a9 100644 --- a/verification/coverage/0.2-AI-MANIFEST.a2ml +++ b/verification/coverage/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "verification-unit-coverage" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/fuzzing/0.2-AI-MANIFEST.a2ml b/verification/fuzzing/0.2-AI-MANIFEST.deed similarity index 82% rename from verification/fuzzing/0.2-AI-MANIFEST.a2ml rename to verification/fuzzing/0.2-AI-MANIFEST.deed index 5178d40..79c35fe 100644 --- a/verification/fuzzing/0.2-AI-MANIFEST.a2ml +++ b/verification/fuzzing/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "fuzzing-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/proofs/0.2-AI-MANIFEST.a2ml b/verification/proofs/0.2-AI-MANIFEST.deed similarity index 82% rename from verification/proofs/0.2-AI-MANIFEST.a2ml rename to verification/proofs/0.2-AI-MANIFEST.deed index 135e181..6beaa6c 100644 --- a/verification/proofs/0.2-AI-MANIFEST.a2ml +++ b/verification/proofs/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "verification-unit-proofs" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/safety_case/0.2-AI-MANIFEST.a2ml b/verification/safety_case/0.2-AI-MANIFEST.deed similarity index 88% rename from verification/safety_case/0.2-AI-MANIFEST.a2ml rename to verification/safety_case/0.2-AI-MANIFEST.deed index d461915..01fa84b 100644 --- a/verification/safety_case/0.2-AI-MANIFEST.a2ml +++ b/verification/safety_case/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "verification-unit-safety_case" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/simulations/0.2-AI-MANIFEST.a2ml b/verification/simulations/0.2-AI-MANIFEST.deed similarity index 83% rename from verification/simulations/0.2-AI-MANIFEST.a2ml rename to verification/simulations/0.2-AI-MANIFEST.deed index f890eca..9b07791 100644 --- a/verification/simulations/0.2-AI-MANIFEST.a2ml +++ b/verification/simulations/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "simulations-unit" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/verification/tests/0.2-AI-MANIFEST.a2ml b/verification/tests/0.2-AI-MANIFEST.deed similarity index 100% rename from verification/tests/0.2-AI-MANIFEST.a2ml rename to verification/tests/0.2-AI-MANIFEST.deed diff --git a/verification/traceability/0.2-AI-MANIFEST.a2ml b/verification/traceability/0.2-AI-MANIFEST.deed similarity index 88% rename from verification/traceability/0.2-AI-MANIFEST.a2ml rename to verification/traceability/0.2-AI-MANIFEST.deed index 9667766..18fe1a7 100644 --- a/verification/traceability/0.2-AI-MANIFEST.a2ml +++ b/verification/traceability/0.2-AI-MANIFEST.deed @@ -3,7 +3,7 @@ ### [META] id: "verification-unit-traceability" level: 2 -parent: "../0.1-AI-MANIFEST.a2ml" +parent: "../0.1-AI-MANIFEST.deed" --- ### [AI_MANIFEST] diff --git a/www/.well-known/ai.txt b/www/.well-known/ai.txt index 334b406..448db22 100644 --- a/www/.well-known/ai.txt +++ b/www/.well-known/ai.txt @@ -13,6 +13,6 @@ Disallow-Generation: yes # AI agents must preserve Emotional Lineage per PMPL Section 3. # # For AI agent integration instructions, see: -# 0-AI-MANIFEST.a2ml (universal AI entry point) -# AI.a2ml (Claude-specific instructions) +# 0-AI-MANIFEST.deed (universal AI entry point) +# AI.deed (Claude-specific instructions) # .machine_readable/ (structured project state)