diff --git a/0-ai-gatekeeper-protocol/ABI-FFI-README.adoc b/0-ai-gatekeeper-protocol/ABI-FFI-README.adoc
new file mode 100644
index 00000000..f883150d
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/ABI-FFI-README.adoc
@@ -0,0 +1,409 @@
+\{\{~ Aditionally delete this line and fill out the template below ~}}
+
+== \{\{PROJECT}} ABI/FFI Documentation
+
+=== Overview
+
+This library follows the *Hyperpolymath RSR Standard* for ABI and FFI
+design:
+
+* *ABI (Application Binary Interface)* defined in *Idris2* with formal
+proofs
+* *FFI (Foreign Function Interface)* implemented in *Zig* for C
+compatibility
+* *Generated C headers* bridge Idris2 ABI to Zig FFI
+* *Any language* can call through standard C ABI
+
+=== Architecture
+
+....
+┌─────────────────────────────────────────────┐
+│ ABI Definitions (Idris2) │
+│ src/abi/ │
+│ - Types.idr (Type definitions) │
+│ - Layout.idr (Memory layout proofs) │
+│ - Foreign.idr (FFI declarations) │
+└─────────────────┬───────────────────────────┘
+ │
+ │ generates (at compile time)
+ ▼
+┌─────────────────────────────────────────────┐
+│ C Headers (auto-generated) │
+│ generated/abi/{{project}}.h │
+└─────────────────┬───────────────────────────┘
+ │
+ │ imported by
+ ▼
+┌─────────────────────────────────────────────┐
+│ FFI Implementation (Zig) │
+│ ffi/zig/src/main.zig │
+│ - Implements C-compatible functions │
+│ - Zero-cost abstractions │
+│ - Memory-safe by default │
+└─────────────────┬───────────────────────────┘
+ │
+ │ compiled to lib{{project}}.so/.a
+ ▼
+┌─────────────────────────────────────────────┐
+│ Any Language via C ABI │
+│ - Rust, ReScript, Julia, Python, etc. │
+└─────────────────────────────────────────────┘
+....
+
+=== Directory Structure
+
+....
+{{project}}/
+├── src/
+│ ├── abi/ # ABI definitions (Idris2)
+│ │ ├── Types.idr # Core type definitions with proofs
+│ │ ├── Layout.idr # Memory layout verification
+│ │ └── Foreign.idr # FFI function declarations
+│ └── lib/ # Core library (any language)
+│
+├── ffi/
+│ └── zig/ # FFI implementation (Zig)
+│ ├── build.zig # Build configuration
+│ ├── build.zig.zon # Dependencies
+│ ├── src/
+│ │ └── main.zig # C-compatible FFI implementation
+│ ├── test/
+│ │ └── integration_test.zig
+│ └── include/
+│ └── {{project}}.h # C header (optional, can be generated)
+│
+├── generated/ # Auto-generated files
+│ └── abi/
+│ └── {{project}}.h # Generated from Idris2 ABI
+│
+└── bindings/ # Language-specific wrappers (optional)
+ ├── rust/
+ ├── rescript/
+ └── julia/
+....
+
+=== Why Idris2 for ABI?
+
+==== 1. *Formal Verification*
+
+Idris2’s dependent types allow proving properties about the ABI at
+compile-time:
+
+[source,idris]
+----
+-- Prove struct size is correct
+public export
+exampleStructSize : HasSize ExampleStruct 16
+
+-- Prove field alignment is correct
+public export
+fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
+
+-- Prove ABI is platform-compatible
+public export
+abiCompatible : Compatible (ABI 1) (ABI 2)
+----
+
+==== 2. *Type Safety*
+
+Encode invariants that C/Zig cannot express:
+
+[source,idris]
+----
+-- Non-null pointer guaranteed at type level
+data Handle : Type where
+ MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
+
+-- Array with length proof
+data Buffer : (n : Nat) -> Type where
+ MkBuffer : Vect n Byte -> Buffer n
+----
+
+==== 3. *Platform Abstraction*
+
+Platform-specific types with compile-time selection:
+
+[source,idris]
+----
+CInt : Platform -> Type
+CInt Linux = Bits32
+CInt Windows = Bits32
+
+CSize : Platform -> Type
+CSize Linux = Bits64
+CSize Windows = Bits64
+----
+
+==== 4. *Safe Evolution*
+
+Prove that new ABI versions are backward-compatible:
+
+[source,idris]
+----
+-- Compiler enforces compatibility
+abiUpgrade : ABI 1 -> ABI 2
+abiUpgrade old = MkABI2 {
+ -- Must preserve all v1 fields
+ v1_compat = old,
+ -- Can add new fields
+ new_features = defaults
+}
+----
+
+=== Why Zig for FFI?
+
+==== 1. *C ABI Compatibility*
+
+Zig exports C-compatible functions naturally:
+
+[source,zig]
+----
+export fn library_function(param: i32) i32 {
+ return param * 2;
+}
+----
+
+==== 2. *Memory Safety*
+
+Compile-time safety without runtime overhead:
+
+[source,zig]
+----
+// Null check enforced at compile time
+const handle = init() orelse return error.InitFailed;
+defer free(handle);
+----
+
+==== 3. *Cross-Compilation*
+
+Built-in cross-compilation to any platform:
+
+[source,bash]
+----
+zig build -Dtarget=x86_64-linux
+zig build -Dtarget=aarch64-macos
+zig build -Dtarget=x86_64-windows
+----
+
+==== 4. *Zero Dependencies*
+
+No runtime, no libc required (unless explicitly needed):
+
+[source,zig]
+----
+// Minimal binary size
+pub const lib = @import("std");
+// Only includes what you use
+----
+
+=== Building
+
+==== Build FFI Library
+
+[source,bash]
+----
+cd ffi/zig
+zig build # Build debug
+zig build -Doptimize=ReleaseFast # Build optimized
+zig build test # Run tests
+----
+
+==== Generate C Header from Idris2 ABI
+
+[source,bash]
+----
+cd src/abi
+idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
+----
+
+==== Cross-Compile
+
+[source,bash]
+----
+cd ffi/zig
+
+# Linux x86_64
+zig build -Dtarget=x86_64-linux
+
+# macOS ARM64
+zig build -Dtarget=aarch64-macos
+
+# Windows x86_64
+zig build -Dtarget=x86_64-windows
+----
+
+=== Usage
+
+==== From C
+
+[source,c]
+----
+#include "{{project}}.h"
+
+int main() {
+ void* handle = {{project}}_init();
+ if (!handle) return 1;
+
+ int result = {{project}}_process(handle, 42);
+ if (result != 0) {
+ const char* err = {{project}}_last_error();
+ fprintf(stderr, "Error: %s\n", err);
+ }
+
+ {{project}}_free(handle);
+ return 0;
+}
+----
+
+Compile with:
+
+[source,bash]
+----
+gcc -o example example.c -l{{project}} -L./zig-out/lib
+----
+
+==== From Idris2
+
+[source,idris]
+----
+import {{PROJECT}}.ABI.Foreign
+
+main : IO ()
+main = do
+ Just handle <- init
+ | Nothing => putStrLn "Failed to initialize"
+
+ Right result <- process handle 42
+ | Left err => putStrLn $ "Error: " ++ errorDescription err
+
+ free handle
+ putStrLn "Success"
+----
+
+==== From Rust
+
+[source,rust]
+----
+#[link(name = "{{project}}")]
+extern "C" {
+ fn {{project}}_init() -> *mut std::ffi::c_void;
+ fn {{project}}_free(handle: *mut std::ffi::c_void);
+ fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
+}
+
+fn main() {
+ unsafe {
+ let handle = {{project}}_init();
+ assert!(!handle.is_null());
+
+ let result = {{project}}_process(handle, 42);
+ assert_eq!(result, 0);
+
+ {{project}}_free(handle);
+ }
+}
+----
+
+==== From Julia
+
+[source,julia]
+----
+const lib{{project}} = "lib{{project}}"
+
+function init()
+ handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
+ handle == C_NULL && error("Failed to initialize")
+ handle
+end
+
+function process(handle, input)
+ result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
+ result
+end
+
+function cleanup(handle)
+ ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
+end
+
+# Usage
+handle = init()
+try
+ result = process(handle, 42)
+ println("Result: $result")
+finally
+ cleanup(handle)
+end
+----
+
+=== Testing
+
+==== Unit Tests (Zig)
+
+[source,bash]
+----
+cd ffi/zig
+zig build test
+----
+
+==== Integration Tests
+
+[source,bash]
+----
+cd ffi/zig
+zig build test-integration
+----
+
+==== ABI Verification (Idris2)
+
+[source,idris]
+----
+-- Compile-time verification
+%runElab verifyABI
+
+-- Runtime checks
+main : IO ()
+main = do
+ verifyLayoutsCorrect
+ verifyAlignmentsCorrect
+ putStrLn "ABI verification passed"
+----
+
+=== Contributing
+
+When modifying the ABI/FFI:
+
+[arabic]
+. *Update ABI first* (`+src/abi/*.idr+`)
+* Modify type definitions
+* Update proofs
+* Ensure backward compatibility
+. *Generate C header*
++
+[source,bash]
+----
+idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
+----
+. *Update FFI implementation* (`+ffi/zig/src/main.zig+`)
+* Implement new functions
+* Match ABI types exactly
+. *Add tests*
+* Unit tests in Zig
+* Integration tests
+* ABI verification tests
+. *Update documentation*
+* Function signatures
+* Usage examples
+* Migration guide (if breaking changes)
+
+=== License
+
+PMPL-1.0-or-later
+
+=== See Also
+
+* https://idris2.readthedocs.io[Idris2 Documentation]
+* https://ziglang.org/documentation/master/[Zig Documentation]
+* https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium
+Standard Repositories]
+* link:../ffi-migration-guide.md[FFI Migration Guide]
+* link:../abi-migration-guide.md[ABI Migration Guide]
diff --git a/0-ai-gatekeeper-protocol/ABI-FFI-README.md b/0-ai-gatekeeper-protocol/ABI-FFI-README.md
deleted file mode 100644
index e6a32bbf..00000000
--- a/0-ai-gatekeeper-protocol/ABI-FFI-README.md
+++ /dev/null
@@ -1,385 +0,0 @@
-{{~ Aditionally delete this line and fill out the template below ~}}
-
-# {{PROJECT}} ABI/FFI Documentation
-
-## Overview
-
-This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design:
-
-- **ABI (Application Binary Interface)** defined in **Idris2** with formal proofs
-- **FFI (Foreign Function Interface)** implemented in **Zig** for C compatibility
-- **Generated C headers** bridge Idris2 ABI to Zig FFI
-- **Any language** can call through standard C ABI
-
-## Architecture
-
-```
-┌─────────────────────────────────────────────┐
-│ ABI Definitions (Idris2) │
-│ src/abi/ │
-│ - Types.idr (Type definitions) │
-│ - Layout.idr (Memory layout proofs) │
-│ - Foreign.idr (FFI declarations) │
-└─────────────────┬───────────────────────────┘
- │
- │ generates (at compile time)
- ▼
-┌─────────────────────────────────────────────┐
-│ C Headers (auto-generated) │
-│ generated/abi/{{project}}.h │
-└─────────────────┬───────────────────────────┘
- │
- │ imported by
- ▼
-┌─────────────────────────────────────────────┐
-│ FFI Implementation (Zig) │
-│ ffi/zig/src/main.zig │
-│ - Implements C-compatible functions │
-│ - Zero-cost abstractions │
-│ - Memory-safe by default │
-└─────────────────┬───────────────────────────┘
- │
- │ compiled to lib{{project}}.so/.a
- ▼
-┌─────────────────────────────────────────────┐
-│ Any Language via C ABI │
-│ - Rust, ReScript, Julia, Python, etc. │
-└─────────────────────────────────────────────┘
-```
-
-## Directory Structure
-
-```
-{{project}}/
-├── src/
-│ ├── abi/ # ABI definitions (Idris2)
-│ │ ├── Types.idr # Core type definitions with proofs
-│ │ ├── Layout.idr # Memory layout verification
-│ │ └── Foreign.idr # FFI function declarations
-│ └── lib/ # Core library (any language)
-│
-├── ffi/
-│ └── zig/ # FFI implementation (Zig)
-│ ├── build.zig # Build configuration
-│ ├── build.zig.zon # Dependencies
-│ ├── src/
-│ │ └── main.zig # C-compatible FFI implementation
-│ ├── test/
-│ │ └── integration_test.zig
-│ └── include/
-│ └── {{project}}.h # C header (optional, can be generated)
-│
-├── generated/ # Auto-generated files
-│ └── abi/
-│ └── {{project}}.h # Generated from Idris2 ABI
-│
-└── bindings/ # Language-specific wrappers (optional)
- ├── rust/
- ├── rescript/
- └── julia/
-```
-
-## Why Idris2 for ABI?
-
-### 1. **Formal Verification**
-
-Idris2's dependent types allow proving properties about the ABI at compile-time:
-
-```idris
--- Prove struct size is correct
-public export
-exampleStructSize : HasSize ExampleStruct 16
-
--- Prove field alignment is correct
-public export
-fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
-
--- Prove ABI is platform-compatible
-public export
-abiCompatible : Compatible (ABI 1) (ABI 2)
-```
-
-### 2. **Type Safety**
-
-Encode invariants that C/Zig cannot express:
-
-```idris
--- Non-null pointer guaranteed at type level
-data Handle : Type where
- MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
-
--- Array with length proof
-data Buffer : (n : Nat) -> Type where
- MkBuffer : Vect n Byte -> Buffer n
-```
-
-### 3. **Platform Abstraction**
-
-Platform-specific types with compile-time selection:
-
-```idris
-CInt : Platform -> Type
-CInt Linux = Bits32
-CInt Windows = Bits32
-
-CSize : Platform -> Type
-CSize Linux = Bits64
-CSize Windows = Bits64
-```
-
-### 4. **Safe Evolution**
-
-Prove that new ABI versions are backward-compatible:
-
-```idris
--- Compiler enforces compatibility
-abiUpgrade : ABI 1 -> ABI 2
-abiUpgrade old = MkABI2 {
- -- Must preserve all v1 fields
- v1_compat = old,
- -- Can add new fields
- new_features = defaults
-}
-```
-
-## Why Zig for FFI?
-
-### 1. **C ABI Compatibility**
-
-Zig exports C-compatible functions naturally:
-
-```zig
-export fn library_function(param: i32) i32 {
- return param * 2;
-}
-```
-
-### 2. **Memory Safety**
-
-Compile-time safety without runtime overhead:
-
-```zig
-// Null check enforced at compile time
-const handle = init() orelse return error.InitFailed;
-defer free(handle);
-```
-
-### 3. **Cross-Compilation**
-
-Built-in cross-compilation to any platform:
-
-```bash
-zig build -Dtarget=x86_64-linux
-zig build -Dtarget=aarch64-macos
-zig build -Dtarget=x86_64-windows
-```
-
-### 4. **Zero Dependencies**
-
-No runtime, no libc required (unless explicitly needed):
-
-```zig
-// Minimal binary size
-pub const lib = @import("std");
-// Only includes what you use
-```
-
-## Building
-
-### Build FFI Library
-
-```bash
-cd ffi/zig
-zig build # Build debug
-zig build -Doptimize=ReleaseFast # Build optimized
-zig build test # Run tests
-```
-
-### Generate C Header from Idris2 ABI
-
-```bash
-cd src/abi
-idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
-```
-
-### Cross-Compile
-
-```bash
-cd ffi/zig
-
-# Linux x86_64
-zig build -Dtarget=x86_64-linux
-
-# macOS ARM64
-zig build -Dtarget=aarch64-macos
-
-# Windows x86_64
-zig build -Dtarget=x86_64-windows
-```
-
-## Usage
-
-### From C
-
-```c
-#include "{{project}}.h"
-
-int main() {
- void* handle = {{project}}_init();
- if (!handle) return 1;
-
- int result = {{project}}_process(handle, 42);
- if (result != 0) {
- const char* err = {{project}}_last_error();
- fprintf(stderr, "Error: %s\n", err);
- }
-
- {{project}}_free(handle);
- return 0;
-}
-```
-
-Compile with:
-```bash
-gcc -o example example.c -l{{project}} -L./zig-out/lib
-```
-
-### From Idris2
-
-```idris
-import {{PROJECT}}.ABI.Foreign
-
-main : IO ()
-main = do
- Just handle <- init
- | Nothing => putStrLn "Failed to initialize"
-
- Right result <- process handle 42
- | Left err => putStrLn $ "Error: " ++ errorDescription err
-
- free handle
- putStrLn "Success"
-```
-
-### From Rust
-
-```rust
-#[link(name = "{{project}}")]
-extern "C" {
- fn {{project}}_init() -> *mut std::ffi::c_void;
- fn {{project}}_free(handle: *mut std::ffi::c_void);
- fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
-}
-
-fn main() {
- unsafe {
- let handle = {{project}}_init();
- assert!(!handle.is_null());
-
- let result = {{project}}_process(handle, 42);
- assert_eq!(result, 0);
-
- {{project}}_free(handle);
- }
-}
-```
-
-### From Julia
-
-```julia
-const lib{{project}} = "lib{{project}}"
-
-function init()
- handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
- handle == C_NULL && error("Failed to initialize")
- handle
-end
-
-function process(handle, input)
- result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
- result
-end
-
-function cleanup(handle)
- ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
-end
-
-# Usage
-handle = init()
-try
- result = process(handle, 42)
- println("Result: $result")
-finally
- cleanup(handle)
-end
-```
-
-## Testing
-
-### Unit Tests (Zig)
-
-```bash
-cd ffi/zig
-zig build test
-```
-
-### Integration Tests
-
-```bash
-cd ffi/zig
-zig build test-integration
-```
-
-### ABI Verification (Idris2)
-
-```idris
--- Compile-time verification
-%runElab verifyABI
-
--- Runtime checks
-main : IO ()
-main = do
- verifyLayoutsCorrect
- verifyAlignmentsCorrect
- putStrLn "ABI verification passed"
-```
-
-## Contributing
-
-When modifying the ABI/FFI:
-
-1. **Update ABI first** (`src/abi/*.idr`)
- - Modify type definitions
- - Update proofs
- - Ensure backward compatibility
-
-2. **Generate C header**
- ```bash
- idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
- ```
-
-3. **Update FFI implementation** (`ffi/zig/src/main.zig`)
- - Implement new functions
- - Match ABI types exactly
-
-4. **Add tests**
- - Unit tests in Zig
- - Integration tests
- - ABI verification tests
-
-5. **Update documentation**
- - Function signatures
- - Usage examples
- - Migration guide (if breaking changes)
-
-## License
-
-PMPL-1.0-or-later
-
-## See Also
-
-- [Idris2 Documentation](https://idris2.readthedocs.io)
-- [Zig Documentation](https://ziglang.org/documentation/master/)
-- [Rhodium Standard Repositories](https://github.com/hyperpolymath/rhodium-standard-repositories)
-- [FFI Migration Guide](../ffi-migration-guide.md)
-- [ABI Migration Guide](../abi-migration-guide.md)
diff --git a/0-ai-gatekeeper-protocol/AI-GATEKEEPER-PROTOCOL-COMPLETE-2026-02-07.adoc b/0-ai-gatekeeper-protocol/AI-GATEKEEPER-PROTOCOL-COMPLETE-2026-02-07.adoc
new file mode 100644
index 00000000..af130171
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/AI-GATEKEEPER-PROTOCOL-COMPLETE-2026-02-07.adoc
@@ -0,0 +1,226 @@
+== AI Gatekeeper Protocol - Implementation Complete
+
+*Date:* 2026-02-07 *Status:* ✅ ALL 6 TASKS COMPLETE
+
+'''''
+
+=== Summary
+
+Universal system ensuring AI agents read repository manifests before any
+operations. Solves chronic problems with context loss, duplicate files,
+and cross-platform consistency.
+
+=== Three Repositories Created
+
+==== 1. *0-ai-gatekeeper-protocol* (Documentation Hub)
+
+* *URL:* https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
+* *Purpose:* Nucleation point for all AI agents - comprehensive
+documentation and specifications
+* *Contents:*
+** 0-AI-MANIFEST.a2ml with lifecycle hooks (on-enter/on-exit)
+** README.adoc - Overview and quick start
+** ROADMAP.adoc - Development roadmap through v2.0.0
+** docs/RATIONALE.md - 3000+ word explanation of why this exists
+** docs/FEEDBACK-TO-ANTHROPIC.md - Proposal for native Claude
+integration
+** docs/AI-MANIFEST-SPEC.adoc - Formal RFC-style specification (516
+lines)
+** All 6 SCM files (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK)
+** examples/0-AI-MANIFEST.a2ml template
+
+==== 2. *mcp-repo-guardian* (MCP Server)
+
+* *URL:* https://github.com/hyperpolymath/mcp-repo-guardian
+* *Purpose:* Hard enforcement for Claude via Model Context Protocol
+* *Implementation:* TypeScript with @modelcontextprotocol/sdk
+* *Features:*
+** 4 tools: get_manifest, acknowledge_manifest, read_file,
+list_directory
+** Session management with SHA-256 attestation
+** Blocks ALL file operations until manifest acknowledged
+** Cannot be bypassed - mechanical enforcement
+* *Files:*
+** src/index.ts - Main MCP server
+** src/manifest.ts - Manifest parsing and hash computation
+** src/session-manager.ts - Session tracking
+
+==== 3. *repo-guardian-fs* (FUSE Wrapper)
+
+* *URL:* https://github.com/hyperpolymath/repo-guardian-fs
+* *Purpose:* OS-level enforcement for ANY AI agent (universal)
+* *Implementation:* Rust with fuse3, tokio, sha2
+* *Features:*
+** FUSE filesystem wrapper - intercepts all file operations
+** Works with Gemini, OpenAI, GitHub Copilot, Cursor, any tool
+** Cannot be bypassed - OS enforces access control
+** Session-based acknowledgment with timeout
+* *Files:*
+** src/main.rs - CLI entry point with clap
+** src/filesystem.rs - FUSE PathFilesystem implementation
+** src/manifest.rs - Manifest parsing and validation
+** src/session_manager.rs - Session tracking with HashMap
+
+=== Ecosystem Integration Complete
+
+==== rsr-template-repo Updated
+
+* ✅ 0-AI-MANIFEST.a2ml template added (all new repos will have it)
+* ✅ README.adoc updated with "`AI Gatekeeper Protocol (MANDATORY)`"
+section
+
+==== ~/.claude/CLAUDE.md Updated
+
+* ✅ "`AI Manifest (MANDATORY - Read FIRST)`" section added
+* ✅ Session startup sequence documented: manifest → SCM files
+* ✅ Applies globally to all future Claude sessions
+
+=== Complete Task List
+
+* ✅ *Task #1:* Build mcp-repo-guardian MCP server
+* ✅ *Task #2:* Create repo-guardian-fs FUSE wrapper
+* ✅ *Task #3:* Create AI.a2ml format specification
+(AI-MANIFEST-SPEC.adoc)
+* ✅ *Task #4:* Add AI.a2ml template to rsr-template-repo
+* ✅ *Task #5:* Update CLAUDE.md with AI.a2ml mandate
+* ✅ *Task #6:* Create 0-ai-gatekeeper-protocol documentation repo
+
+*Bonus:* ✅ Starred all 567 hyperpolymath repos
+
+=== Problems Solved
+
+[width="100%",cols="48%,52%",options="header",]
+|===
+|Problem |Solution
+|*Context loss across sessions* |Manifest read every session ensures
+agents know structure
+
+|*Duplicate SCM files* |Canonical locations declared unambiguously in
+manifest
+
+|*Platform fragmentation* |Universal format works with Claude, Gemini,
+OpenAI, etc.
+
+|*Repeated explanations* |Architectural decisions preserved mechanically
+
+|*No enforcement* |Two-layer defense: MCP (Claude) + FUSE (universal)
+
+|*Invariant violations* |Critical rules declared in manifest, enforced
+by guardians
+|===
+
+=== How It Works
+
+==== The Manifest (0-AI-MANIFEST.a2ml or AI.a2ml)
+
+Every hyperpolymath repo now has/will have a manifest file declaring: 1.
+*Canonical locations* - Where files MUST be located (e.g., "`SCM files
+ONLY in `+.machine_readable/+``") 2. *Core invariants* - Rules that must
+NEVER be violated (e.g., "`No SCM duplication`") 3. *Repository
+structure* - Directory tree overview 4. *Attestation proof* - Statement
+agents must make to prove they read it 5. *Lifecycle hooks* - on-enter
+(session start logging), on-exit (session end logging)
+
+==== The Enforcement
+
+*For Claude (MCP):* 1. Claude tries to read a file 2. MCP server
+intercepts request 3. Server checks: has this session acknowledged the
+manifest? 4. If no → Return error "`Must read manifest first`" 5. If yes
+→ Allow operation
+
+*For Any AI Agent (FUSE):* 1. Mount repos through guardian filesystem:
+`+repo-guardian-fs --source ~/Documents/hyperpolymath-repos --mount /mnt/guarded-repos+`
+2. Agent tries to read file from /mnt/guarded-repos 3. FUSE intercepts
+at OS level 4. Check: has this process acknowledged manifest? 5. If no →
+Return EACCES (Permission denied) 6. If yes → Allow operation
+
+==== The Attestation (SHA-256 Hash)
+
+Agents prove they read the manifest by computing its SHA-256 hash:
+
+[source,typescript]
+----
+const hash = createHash('sha256').update(manifestContent).digest('hex');
+// Submit hash to guardian - if it matches, session is acknowledged
+----
+
+This ensures agents actually READ the file, not just claim they did.
+
+=== Architecture Decisions (from META.scm)
+
+[arabic]
+. *Plain text format* - Human/machine readable, no parsing complexity
+. *SHA-256 attestation* - Cryptographic proof of reading
+. *MCP primary enforcement* - Best Claude integration path
+. *0-prefix naming* - Alphabetically first for visibility
+. *Canonical location enforcement* - Single source of truth
+. *Session-based access* - Per-process tracking
+. *FUSE for universality* - OS-level works with any agent
+
+=== Media Type
+
+*Registered:* `+application/vnd.hyperpolymath.ai-manifest+a2ml+`
+
+=== Usage
+
+==== For Claude Users
+
+Add to `+~/.claude/settings.json+`:
+
+[source,json]
+----
+{
+ "mcpServers": {
+ "repo-guardian": {
+ "command": "node",
+ "args": ["/path/to/mcp-repo-guardian/dist/index.js"],
+ "env": {
+ "REPO_PATH": "/home/user/Documents/hyperpolymath-repos"
+ }
+ }
+ }
+}
+----
+
+==== For Other AI Agents
+
+[source,bash]
+----
+# Mount repos with enforcement
+repo-guardian-fs \
+ --source ~/Documents/hyperpolymath-repos \
+ --mount /mnt/guarded-repos
+
+# Point agent to /mnt/guarded-repos instead of real location
+----
+
+=== Future Work (Queued for Tomorrow)
+
+[arabic]
+. Add notes to interrupted work repos:
+* *nextgen-languages* - Note about gatekeeper protocol availability
+* *git-seo* - Note about revival (work interrupted by crash)
+* *ochrance* - Note about next steps (foundations laid)
+. Package mcp-repo-guardian for npm distribution so the world can
+benefit
+
+=== References
+
+* Main documentation:
+https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
+* MCP server: https://github.com/hyperpolymath/mcp-repo-guardian
+* FUSE wrapper: https://github.com/hyperpolymath/repo-guardian-fs
+* Template repo (with manifest):
+https://github.com/hyperpolymath/rsr-template-repo
+
+'''''
+
+*Status:* Production-ready. All code tested, committed, and pushed.
+Ready for deployment across all hyperpolymath repositories.
+
+*Impact:* Every future AI session will start with unambiguous knowledge
+of repository structure and invariants. No more repeated explanations.
+No more duplicate files. Mechanical enforcement of architectural
+decisions.
+
+🎉 *AI Gatekeeper Protocol: COMPLETE*
diff --git a/0-ai-gatekeeper-protocol/AI-GATEKEEPER-PROTOCOL-COMPLETE-2026-02-07.md b/0-ai-gatekeeper-protocol/AI-GATEKEEPER-PROTOCOL-COMPLETE-2026-02-07.md
deleted file mode 100644
index 16daf1d5..00000000
--- a/0-ai-gatekeeper-protocol/AI-GATEKEEPER-PROTOCOL-COMPLETE-2026-02-07.md
+++ /dev/null
@@ -1,191 +0,0 @@
-# AI Gatekeeper Protocol - Implementation Complete
-
-**Date:** 2026-02-07
-**Status:** ✅ ALL 6 TASKS COMPLETE
-
----
-
-## Summary
-
-Universal system ensuring AI agents read repository manifests before any operations. Solves chronic problems with context loss, duplicate files, and cross-platform consistency.
-
-## Three Repositories Created
-
-### 1. **0-ai-gatekeeper-protocol** (Documentation Hub)
-- **URL:** https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
-- **Purpose:** Nucleation point for all AI agents - comprehensive documentation and specifications
-- **Contents:**
- - 0-AI-MANIFEST.a2ml with lifecycle hooks (on-enter/on-exit)
- - README.adoc - Overview and quick start
- - ROADMAP.adoc - Development roadmap through v2.0.0
- - docs/RATIONALE.md - 3000+ word explanation of why this exists
- - docs/FEEDBACK-TO-ANTHROPIC.md - Proposal for native Claude integration
- - docs/AI-MANIFEST-SPEC.adoc - Formal RFC-style specification (516 lines)
- - All 6 SCM files (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK)
- - examples/0-AI-MANIFEST.a2ml template
-
-### 2. **mcp-repo-guardian** (MCP Server)
-- **URL:** https://github.com/hyperpolymath/mcp-repo-guardian
-- **Purpose:** Hard enforcement for Claude via Model Context Protocol
-- **Implementation:** TypeScript with @modelcontextprotocol/sdk
-- **Features:**
- - 4 tools: get_manifest, acknowledge_manifest, read_file, list_directory
- - Session management with SHA-256 attestation
- - Blocks ALL file operations until manifest acknowledged
- - Cannot be bypassed - mechanical enforcement
-- **Files:**
- - src/index.ts - Main MCP server
- - src/manifest.ts - Manifest parsing and hash computation
- - src/session-manager.ts - Session tracking
-
-### 3. **repo-guardian-fs** (FUSE Wrapper)
-- **URL:** https://github.com/hyperpolymath/repo-guardian-fs
-- **Purpose:** OS-level enforcement for ANY AI agent (universal)
-- **Implementation:** Rust with fuse3, tokio, sha2
-- **Features:**
- - FUSE filesystem wrapper - intercepts all file operations
- - Works with Gemini, OpenAI, GitHub Copilot, Cursor, any tool
- - Cannot be bypassed - OS enforces access control
- - Session-based acknowledgment with timeout
-- **Files:**
- - src/main.rs - CLI entry point with clap
- - src/filesystem.rs - FUSE PathFilesystem implementation
- - src/manifest.rs - Manifest parsing and validation
- - src/session_manager.rs - Session tracking with HashMap
-
-## Ecosystem Integration Complete
-
-### rsr-template-repo Updated
-- ✅ 0-AI-MANIFEST.a2ml template added (all new repos will have it)
-- ✅ README.adoc updated with "AI Gatekeeper Protocol (MANDATORY)" section
-
-### ~/.claude/CLAUDE.md Updated
-- ✅ "AI Manifest (MANDATORY - Read FIRST)" section added
-- ✅ Session startup sequence documented: manifest → SCM files
-- ✅ Applies globally to all future Claude sessions
-
-## Complete Task List
-
-- ✅ **Task #1:** Build mcp-repo-guardian MCP server
-- ✅ **Task #2:** Create repo-guardian-fs FUSE wrapper
-- ✅ **Task #3:** Create AI.a2ml format specification (AI-MANIFEST-SPEC.adoc)
-- ✅ **Task #4:** Add AI.a2ml template to rsr-template-repo
-- ✅ **Task #5:** Update CLAUDE.md with AI.a2ml mandate
-- ✅ **Task #6:** Create 0-ai-gatekeeper-protocol documentation repo
-
-**Bonus:** ✅ Starred all 567 hyperpolymath repos
-
-## Problems Solved
-
-| Problem | Solution |
-|---------|----------|
-| **Context loss across sessions** | Manifest read every session ensures agents know structure |
-| **Duplicate SCM files** | Canonical locations declared unambiguously in manifest |
-| **Platform fragmentation** | Universal format works with Claude, Gemini, OpenAI, etc. |
-| **Repeated explanations** | Architectural decisions preserved mechanically |
-| **No enforcement** | Two-layer defense: MCP (Claude) + FUSE (universal) |
-| **Invariant violations** | Critical rules declared in manifest, enforced by guardians |
-
-## How It Works
-
-### The Manifest (0-AI-MANIFEST.a2ml or AI.a2ml)
-
-Every hyperpolymath repo now has/will have a manifest file declaring:
-1. **Canonical locations** - Where files MUST be located (e.g., "SCM files ONLY in `.machine_readable/`")
-2. **Core invariants** - Rules that must NEVER be violated (e.g., "No SCM duplication")
-3. **Repository structure** - Directory tree overview
-4. **Attestation proof** - Statement agents must make to prove they read it
-5. **Lifecycle hooks** - on-enter (session start logging), on-exit (session end logging)
-
-### The Enforcement
-
-**For Claude (MCP):**
-1. Claude tries to read a file
-2. MCP server intercepts request
-3. Server checks: has this session acknowledged the manifest?
-4. If no → Return error "Must read manifest first"
-5. If yes → Allow operation
-
-**For Any AI Agent (FUSE):**
-1. Mount repos through guardian filesystem: `repo-guardian-fs --source ~/Documents/hyperpolymath-repos --mount /mnt/guarded-repos`
-2. Agent tries to read file from /mnt/guarded-repos
-3. FUSE intercepts at OS level
-4. Check: has this process acknowledged manifest?
-5. If no → Return EACCES (Permission denied)
-6. If yes → Allow operation
-
-### The Attestation (SHA-256 Hash)
-
-Agents prove they read the manifest by computing its SHA-256 hash:
-```typescript
-const hash = createHash('sha256').update(manifestContent).digest('hex');
-// Submit hash to guardian - if it matches, session is acknowledged
-```
-
-This ensures agents actually READ the file, not just claim they did.
-
-## Architecture Decisions (from META.scm)
-
-1. **Plain text format** - Human/machine readable, no parsing complexity
-2. **SHA-256 attestation** - Cryptographic proof of reading
-3. **MCP primary enforcement** - Best Claude integration path
-4. **0-prefix naming** - Alphabetically first for visibility
-5. **Canonical location enforcement** - Single source of truth
-6. **Session-based access** - Per-process tracking
-7. **FUSE for universality** - OS-level works with any agent
-
-## Media Type
-
-**Registered:** `application/vnd.hyperpolymath.ai-manifest+a2ml`
-
-## Usage
-
-### For Claude Users
-Add to `~/.claude/settings.json`:
-```json
-{
- "mcpServers": {
- "repo-guardian": {
- "command": "node",
- "args": ["/path/to/mcp-repo-guardian/dist/index.js"],
- "env": {
- "REPO_PATH": "/home/user/Documents/hyperpolymath-repos"
- }
- }
- }
-}
-```
-
-### For Other AI Agents
-```bash
-# Mount repos with enforcement
-repo-guardian-fs \
- --source ~/Documents/hyperpolymath-repos \
- --mount /mnt/guarded-repos
-
-# Point agent to /mnt/guarded-repos instead of real location
-```
-
-## Future Work (Queued for Tomorrow)
-
-1. Add notes to interrupted work repos:
- - **nextgen-languages** - Note about gatekeeper protocol availability
- - **git-seo** - Note about revival (work interrupted by crash)
- - **ochrance** - Note about next steps (foundations laid)
-
-2. Package mcp-repo-guardian for npm distribution so the world can benefit
-
-## References
-
-- Main documentation: https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
-- MCP server: https://github.com/hyperpolymath/mcp-repo-guardian
-- FUSE wrapper: https://github.com/hyperpolymath/repo-guardian-fs
-- Template repo (with manifest): https://github.com/hyperpolymath/rsr-template-repo
-
----
-
-**Status:** Production-ready. All code tested, committed, and pushed. Ready for deployment across all hyperpolymath repositories.
-
-**Impact:** Every future AI session will start with unambiguous knowledge of repository structure and invariants. No more repeated explanations. No more duplicate files. Mechanical enforcement of architectural decisions.
-
-🎉 **AI Gatekeeper Protocol: COMPLETE**
diff --git a/0-ai-gatekeeper-protocol/CODE_OF_CONDUCT.adoc b/0-ai-gatekeeper-protocol/CODE_OF_CONDUCT.adoc
new file mode 100644
index 00000000..5961e219
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/CODE_OF_CONDUCT.adoc
@@ -0,0 +1,339 @@
+== Code of Conduct
+
+=== Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in
+Standards a harassment-free experience for everyone, regardless of age,
+body size, visible or invisible disability, ethnicity, sex
+characteristics, gender identity and expression, level of experience,
+education, socio-economic status, nationality, personal appearance,
+race, caste, colour, religion, or sexual identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open,
+welcoming, diverse, inclusive, and healthy community.
+
+We recognise that a thriving open source community requires
+*psychological safety* — an environment where people can contribute, ask
+questions, make mistakes, and learn without fear of ridicule or
+retaliation.
+
+'''''
+
+=== Our Standards
+
+==== Expected Behaviour
+
+The following behaviours contribute to a positive environment:
+
+*Communication* - Using welcoming and inclusive language - Being
+respectful of differing viewpoints and experiences - Giving and
+gracefully accepting constructive feedback - Assuming good intent while
+addressing impact - Communicating clearly and patiently, especially with
+newcomers
+
+*Collaboration* - Focusing on what is best for the community - Showing
+empathy and kindness toward other community members - Being
+collaborative rather than competitive - Mentoring and supporting less
+experienced contributors - Celebrating others’ contributions and
+successes
+
+*Professionalism* - Accepting responsibility and apologising to those
+affected by our mistakes - Learning from the experience and avoiding
+repetition - Respecting others’ time and attention - Staying on topic in
+project spaces - Following project guidelines and conventions
+
+*Accessibility* - Using plain language and avoiding unnecessary jargon -
+Providing alt text for images and transcripts for audio/video - Being
+patient with those using assistive technologies - Accommodating
+different communication styles and needs - Recognising that not everyone
+communicates the same way
+
+==== Unacceptable Behaviour
+
+The following behaviours are considered harassment and are unacceptable:
+
+*Harassment* - The use of sexualised language or imagery, and sexual
+attention or advances of any kind - Trolling, insulting or derogatory
+comments, and personal or political attacks - Public or private
+harassment - Deliberate intimidation, stalking, or following (online or
+in-person) - Unwelcome physical contact or simulated physical contact
+(e.g., emoji) - Sustained disruption of talks, events, or online
+discussions
+
+*Discrimination* - Discriminatory jokes and language - Posting or
+threatening to post others’ personally identifying information
+("`doxing`") - Advocating for, or encouraging, any of the above
+behaviour - Microaggressions — subtle, often unintentional,
+discriminatory comments or actions
+
+*Professional Misconduct* - Publishing others’ private information
+without explicit permission - Misrepresenting affiliation or
+contributions - Plagiarism or claiming credit for others’ work -
+Retaliating against anyone who reports a Code of Conduct violation -
+Other conduct which could reasonably be considered inappropriate in a
+professional setting
+
+==== Grey Areas
+
+Some situations require judgement. When uncertain:
+
+* *Intent vs Impact*: Good intentions do not excuse harmful impact.
+Focus on making things right.
+* *Power Dynamics*: Those with more power (maintainers, employers,
+experienced contributors) must be especially mindful of their impact.
+* *Cultural Differences*: What’s acceptable varies by culture. When in
+doubt, err on the side of caution and ask.
+* *Humour*: Jokes at others’ expense are rarely funny to everyone. Punch
+up, not down.
+
+'''''
+
+=== Scope
+
+This Code of Conduct applies within all community spaces, including:
+
+*Online Spaces* - Repository discussions, issues, and pull/merge
+requests - Project chat channels (Matrix, Discord, Slack, IRC) - Mailing
+lists and forums - Social media when representing the project - Video
+calls and virtual meetings
+
+*In-Person Spaces* - Conferences, meetups, and events - Workshops and
+training sessions - Any gathering where you represent the project
+
+*Representation* This Code of Conduct also applies when an individual is
+officially representing the community in public spaces. Examples
+include:
+
+* Using an official project email address
+* Posting via an official social media account
+* Acting as an appointed representative at an event
+* Speaking on behalf of the project
+
+'''''
+
+=== Enforcement
+
+==== Reporting
+
+If you experience or witness unacceptable behaviour, or have any other
+concerns, please report it as soon as possible.
+
+*How to Report*
+
+[width="99%",cols="30%,33%,37%",options="header",]
+|===
+|Method |Details |Best For
+|*Email* |\{\{CONDUCT_EMAIL}} |Detailed reports, sensitive matters
+
+|*Private Message* |Contact any maintainer directly |Quick questions,
+minor issues
+
+|*Anonymous Form* |[Link to form if available] |When you need anonymity
+|===
+
+*What to Include*
+
+* Your contact information (unless anonymous)
+* Names/usernames of those involved
+* Description of what happened
+* When and where it occurred
+* Any witnesses
+* Any supporting evidence (screenshots, links)
+* How you would like us to respond (if you have a preference)
+
+*What Happens Next*
+
+[arabic]
+. You will receive acknowledgment within *\{\{RESPONSE_TIME}}*
+. The \{\{CONDUCT_TEAM}} will review the report
+. We may ask for additional information
+. We will determine appropriate action
+. We will inform you of the outcome (respecting others’ privacy)
+
+==== Confidentiality
+
+All reports will be handled with discretion:
+
+* Reporter identity is protected by default
+* Details are shared only with those who need to know
+* We will ask before naming you in any communication
+* Anonymous reports are accepted and investigated
+
+==== Conflicts of Interest
+
+If a \{\{CONDUCT_TEAM}} member is involved in an incident:
+
+* They will recuse themselves from the process
+* Another maintainer or external party will handle the report
+* We will disclose any potential conflicts
+
+'''''
+
+=== Enforcement Guidelines
+
+The \{\{CONDUCT_TEAM}} will follow these guidelines in determining
+consequences:
+
+==== 1. Correction
+
+*Community Impact*: Use of inappropriate language or other behaviour
+deemed unprofessional or unwelcome.
+
+*Consequence*: A private, written warning providing clarity around the
+nature of the violation and an explanation of why the behaviour was
+inappropriate. A public apology may be requested.
+
+*Duration*: Immediate
+
+==== 2. Warning
+
+*Community Impact*: A violation through a single incident or series of
+actions.
+
+*Consequence*: A warning with consequences for continued behaviour. No
+interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, for a specified period. This
+includes avoiding interactions in community spaces as well as external
+channels like social media. Violating these terms may lead to a
+temporary or permanent ban.
+
+*Duration*: 1-4 weeks
+
+==== 3. Temporary Ban
+
+*Community Impact*: A serious violation of community standards,
+including sustained inappropriate behaviour.
+
+*Consequence*: A temporary ban from any sort of interaction or public
+communication with the community for a specified period. No public or
+private interaction with the people involved, including unsolicited
+interaction with those enforcing the Code of Conduct, is allowed during
+this period. Violating these terms may lead to a permanent ban.
+
+*Duration*: 1-6 months
+
+==== 4. Permanent Ban
+
+*Community Impact*: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behaviour, harassment of an
+individual, or aggression toward or disparagement of classes of
+individuals.
+
+*Consequence*: A permanent ban from any sort of public interaction
+within the community.
+
+*Duration*: Permanent (with appeal rights after 12 months)
+
+==== Enforcement Across Perimeters
+
+For contributors with elevated access (Perimeter 2 or 1):
+
+[cols=",",options="header",]
+|===
+|Level |Additional Consequence
+|Correction |Noted in contributor record
+|Warning |Access privileges may be temporarily reduced
+|Temporary Ban |Access reduced to Perimeter 3 for ban duration
+|Permanent Ban |All access revoked
+|===
+
+'''''
+
+=== Appeals
+
+If you believe an enforcement decision was made in error:
+
+[arabic]
+. *Wait 7 days* after the decision (cooling-off period)
+. *Email* \{\{CONDUCT_EMAIL}} with subject line "`Appeal: [Original
+Report ID]`"
+. *Explain* why you believe the decision should be reconsidered
+. *Provide* any new information not previously available
+
+*Appeals Process*
+
+* Appeals are reviewed by a different \{\{CONDUCT_TEAM}} member than the
+original
+* You will receive a response within 14 days
+* The appeals decision is final
+* You may only appeal once per incident
+
+*Grounds for Appeal*
+
+* Procedural errors in the original investigation
+* New evidence not previously available
+* Disproportionate response to the violation
+* Misunderstanding of facts
+
+'''''
+
+=== Supporting Those Who Report
+
+We are committed to supporting those who report violations:
+
+*We Will* - Believe and take all reports seriously - Respect your
+privacy and confidentiality preferences - Keep you informed of progress
+(if you wish) - Take steps to protect you from retaliation - Provide
+resources if you need support
+
+*We Will Not* - Require you to confront the person directly - Dismiss
+reports without investigation - Reveal your identity without consent -
+Tolerate retaliation against reporters - Rush you to make decisions
+
+'''''
+
+=== Prevention
+
+Beyond enforcement, we actively work to prevent issues:
+
+*Onboarding* - All contributors are expected to read this Code of
+Conduct - Perimeter 2 applicants must confirm they’ve read and
+understood it - Maintainers receive additional training on enforcement
+
+*Culture* - We model the behaviour we expect - We intervene early when
+we see potential issues - We thank people for positive contributions -
+We create opportunities for diverse voices
+
+*Review* - This Code of Conduct is reviewed annually - Community
+feedback is welcomed - Changes are communicated clearly
+
+'''''
+
+=== Acknowledgments
+
+This Code of Conduct is adapted from:
+
+* https://www.contributor-covenant.org/[Contributor Covenant], version
+2.1
+* https://www.djangoproject.com/conduct/[Django Code of Conduct]
+* https://www.rust-lang.org/policies/code-of-conduct[Rust Code of
+Conduct]
+* https://www.python.org/psf/conduct/[Python Community Code of Conduct]
+
+We thank these communities for their leadership in creating welcoming
+spaces.
+
+'''''
+
+=== Questions?
+
+If you have questions about this Code of Conduct:
+
+* Open a
+https://github.com/hyperpolymath/standards/discussions[Discussion] (for
+general questions)
+* Email \{\{CONDUCT_EMAIL}} (for private questions)
+* Contact any maintainer directly
+
+'''''
+
+=== Summary
+
+*Be kind. Be respectful. Be collaborative.*
+
+We’re all here because we care about this project. Let’s make it a place
+where everyone can do their best work.
+
+'''''
+
+Last updated: 2026 · Based on Contributor Covenant 2.1
diff --git a/0-ai-gatekeeper-protocol/CODE_OF_CONDUCT.md b/0-ai-gatekeeper-protocol/CODE_OF_CONDUCT.md
deleted file mode 100644
index f9af5d2e..00000000
--- a/0-ai-gatekeeper-protocol/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,327 +0,0 @@
-# Code of Conduct
-
-
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in Standards a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
-
-We recognise that a thriving open source community requires **psychological safety** — an environment where people can contribute, ask questions, make mistakes, and learn without fear of ridicule or retaliation.
-
----
-
-## Our Standards
-
-### Expected Behaviour
-
-The following behaviours contribute to a positive environment:
-
-**Communication**
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Giving and gracefully accepting constructive feedback
-- Assuming good intent while addressing impact
-- Communicating clearly and patiently, especially with newcomers
-
-**Collaboration**
-- Focusing on what is best for the community
-- Showing empathy and kindness toward other community members
-- Being collaborative rather than competitive
-- Mentoring and supporting less experienced contributors
-- Celebrating others' contributions and successes
-
-**Professionalism**
-- Accepting responsibility and apologising to those affected by our mistakes
-- Learning from the experience and avoiding repetition
-- Respecting others' time and attention
-- Staying on topic in project spaces
-- Following project guidelines and conventions
-
-**Accessibility**
-- Using plain language and avoiding unnecessary jargon
-- Providing alt text for images and transcripts for audio/video
-- Being patient with those using assistive technologies
-- Accommodating different communication styles and needs
-- Recognising that not everyone communicates the same way
-
-### Unacceptable Behaviour
-
-The following behaviours are considered harassment and are unacceptable:
-
-**Harassment**
-- The use of sexualised language or imagery, and sexual attention or advances of any kind
-- Trolling, insulting or derogatory comments, and personal or political attacks
-- Public or private harassment
-- Deliberate intimidation, stalking, or following (online or in-person)
-- Unwelcome physical contact or simulated physical contact (e.g., emoji)
-- Sustained disruption of talks, events, or online discussions
-
-**Discrimination**
-- Discriminatory jokes and language
-- Posting or threatening to post others' personally identifying information ("doxing")
-- Advocating for, or encouraging, any of the above behaviour
-- Microaggressions — subtle, often unintentional, discriminatory comments or actions
-
-**Professional Misconduct**
-- Publishing others' private information without explicit permission
-- Misrepresenting affiliation or contributions
-- Plagiarism or claiming credit for others' work
-- Retaliating against anyone who reports a Code of Conduct violation
-- Other conduct which could reasonably be considered inappropriate in a professional setting
-
-### Grey Areas
-
-Some situations require judgement. When uncertain:
-
-- **Intent vs Impact**: Good intentions do not excuse harmful impact. Focus on making things right.
-- **Power Dynamics**: Those with more power (maintainers, employers, experienced contributors) must be especially mindful of their impact.
-- **Cultural Differences**: What's acceptable varies by culture. When in doubt, err on the side of caution and ask.
-- **Humour**: Jokes at others' expense are rarely funny to everyone. Punch up, not down.
-
----
-
-## Scope
-
-This Code of Conduct applies within all community spaces, including:
-
-**Online Spaces**
-- Repository discussions, issues, and pull/merge requests
-- Project chat channels (Matrix, Discord, Slack, IRC)
-- Mailing lists and forums
-- Social media when representing the project
-- Video calls and virtual meetings
-
-**In-Person Spaces**
-- Conferences, meetups, and events
-- Workshops and training sessions
-- Any gathering where you represent the project
-
-**Representation**
-This Code of Conduct also applies when an individual is officially representing the community in public spaces. Examples include:
-
-- Using an official project email address
-- Posting via an official social media account
-- Acting as an appointed representative at an event
-- Speaking on behalf of the project
-
----
-
-## Enforcement
-
-### Reporting
-
-If you experience or witness unacceptable behaviour, or have any other concerns, please report it as soon as possible.
-
-**How to Report**
-
-| Method | Details | Best For |
-|--------|---------|----------|
-| **Email** | {{CONDUCT_EMAIL}} | Detailed reports, sensitive matters |
-| **Private Message** | Contact any maintainer directly | Quick questions, minor issues |
-| **Anonymous Form** | [Link to form if available] | When you need anonymity |
-
-**What to Include**
-
-- Your contact information (unless anonymous)
-- Names/usernames of those involved
-- Description of what happened
-- When and where it occurred
-- Any witnesses
-- Any supporting evidence (screenshots, links)
-- How you would like us to respond (if you have a preference)
-
-**What Happens Next**
-
-1. You will receive acknowledgment within **{{RESPONSE_TIME}}**
-2. The {{CONDUCT_TEAM}} will review the report
-3. We may ask for additional information
-4. We will determine appropriate action
-5. We will inform you of the outcome (respecting others' privacy)
-
-### Confidentiality
-
-All reports will be handled with discretion:
-
-- Reporter identity is protected by default
-- Details are shared only with those who need to know
-- We will ask before naming you in any communication
-- Anonymous reports are accepted and investigated
-
-### Conflicts of Interest
-
-If a {{CONDUCT_TEAM}} member is involved in an incident:
-
-- They will recuse themselves from the process
-- Another maintainer or external party will handle the report
-- We will disclose any potential conflicts
-
----
-
-## Enforcement Guidelines
-
-The {{CONDUCT_TEAM}} will follow these guidelines in determining consequences:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome.
-
-**Consequence**: A private, written warning providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested.
-
-**Duration**: Immediate
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series of actions.
-
-**Consequence**: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
-
-**Duration**: 1-4 weeks
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including sustained inappropriate behaviour.
-
-**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
-
-**Duration**: 1-6 months
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within the community.
-
-**Duration**: Permanent (with appeal rights after 12 months)
-
-### Enforcement Across Perimeters
-
-For contributors with elevated access (Perimeter 2 or 1):
-
-| Level | Additional Consequence |
-|-------|----------------------|
-| Correction | Noted in contributor record |
-| Warning | Access privileges may be temporarily reduced |
-| Temporary Ban | Access reduced to Perimeter 3 for ban duration |
-| Permanent Ban | All access revoked |
-
----
-
-## Appeals
-
-If you believe an enforcement decision was made in error:
-
-1. **Wait 7 days** after the decision (cooling-off period)
-2. **Email** {{CONDUCT_EMAIL}} with subject line "Appeal: [Original Report ID]"
-3. **Explain** why you believe the decision should be reconsidered
-4. **Provide** any new information not previously available
-
-**Appeals Process**
-
-- Appeals are reviewed by a different {{CONDUCT_TEAM}} member than the original
-- You will receive a response within 14 days
-- The appeals decision is final
-- You may only appeal once per incident
-
-**Grounds for Appeal**
-
-- Procedural errors in the original investigation
-- New evidence not previously available
-- Disproportionate response to the violation
-- Misunderstanding of facts
-
----
-
-## Supporting Those Who Report
-
-We are committed to supporting those who report violations:
-
-**We Will**
-- Believe and take all reports seriously
-- Respect your privacy and confidentiality preferences
-- Keep you informed of progress (if you wish)
-- Take steps to protect you from retaliation
-- Provide resources if you need support
-
-**We Will Not**
-- Require you to confront the person directly
-- Dismiss reports without investigation
-- Reveal your identity without consent
-- Tolerate retaliation against reporters
-- Rush you to make decisions
-
----
-
-## Prevention
-
-Beyond enforcement, we actively work to prevent issues:
-
-**Onboarding**
-- All contributors are expected to read this Code of Conduct
-- Perimeter 2 applicants must confirm they've read and understood it
-- Maintainers receive additional training on enforcement
-
-**Culture**
-- We model the behaviour we expect
-- We intervene early when we see potential issues
-- We thank people for positive contributions
-- We create opportunities for diverse voices
-
-**Review**
-- This Code of Conduct is reviewed annually
-- Community feedback is welcomed
-- Changes are communicated clearly
-
----
-
-## Acknowledgments
-
-This Code of Conduct is adapted from:
-
-- [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1
-- [Django Code of Conduct](https://www.djangoproject.com/conduct/)
-- [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct)
-- [Python Community Code of Conduct](https://www.python.org/psf/conduct/)
-
-We thank these communities for their leadership in creating welcoming spaces.
-
----
-
-## Questions?
-
-If you have questions about this Code of Conduct:
-
-- Open a [Discussion](https://github.com/hyperpolymath/standards/discussions) (for general questions)
-- Email {{CONDUCT_EMAIL}} (for private questions)
-- Contact any maintainer directly
-
----
-
-## Summary
-
-**Be kind. Be respectful. Be collaborative.**
-
-We're all here because we care about this project. Let's make it a place where everyone can do their best work.
-
----
-
-Last updated: 2026 · Based on Contributor Covenant 2.1
diff --git a/0-ai-gatekeeper-protocol/CONTRIBUTING.adoc b/0-ai-gatekeeper-protocol/CONTRIBUTING.adoc
new file mode 100644
index 00000000..d16ec0c1
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/CONTRIBUTING.adoc
@@ -0,0 +1,108 @@
+== Clone the repository
+
+git clone https://github.com/hyperpolymath/standards.git cd standards
+
+== Using Nix (recommended for reproducibility)
+
+nix develop
+
+== Or using toolbox/distrobox
+
+toolbox create standards-dev toolbox enter standards-dev # Install
+dependencies manually
+
+== Verify setup
+
+just check # or: cargo check / mix compile / etc. just test # Run test
+suite
+
+....
+
+### Repository Structure
+....
+
+standards/ ├── src/ # Source code (Perimeter 1-2) ├── lib/ # Library
+code (Perimeter 1-2) ├── extensions/ # Extensions (Perimeter 2) ├──
+plugins/ # Plugins (Perimeter 2) ├── tools/ # Tooling (Perimeter 2) ├──
+docs/ # Documentation (Perimeter 3) │ ├── architecture/ # ADRs, specs
+(Perimeter 2) │ └── proposals/ # RFCs (Perimeter 3) ├── examples/ #
+Examples (Perimeter 3) ├── spec/ # Spec tests (Perimeter 3) ├── tests/ #
+Test suite (Perimeter 2-3) ├── .well-known/ # Protocol files (Perimeter
+1-3) ├── .github/ # GitHub config (Perimeter 1) │ ├── ISSUE_TEMPLATE/ │
+└── workflows/ ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├──
+CONTRIBUTING.md # This file ├── GOVERNANCE.md ├── LICENSE ├──
+MAINTAINERS.md ├── README.adoc ├── SECURITY.md ├── flake.nix # Nix flake
+(Perimeter 1) └── Justfile # Task runner (Perimeter 1)
+
+....
+
+---
+
+## How to Contribute
+
+### Reporting Bugs
+
+**Before reporting**:
+1. Search existing issues
+2. Check if it's already fixed in `main`
+3. Determine which perimeter the bug affects
+
+**When reporting**:
+
+Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
+
+- Clear, descriptive title
+- Environment details (OS, versions, toolchain)
+- Steps to reproduce
+- Expected vs actual behaviour
+- Logs, screenshots, or minimal reproduction
+
+### Suggesting Features
+
+**Before suggesting**:
+1. Check the [roadmap](ROADMAP.md) if available
+2. Search existing issues and discussions
+3. Consider which perimeter the feature belongs to
+
+**When suggesting**:
+
+Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
+
+- Problem statement (what pain point does this solve?)
+- Proposed solution
+- Alternatives considered
+- Which perimeter this affects
+
+### Your First Contribution
+
+Look for issues labelled:
+
+- [`good first issue`](https://github.com/hyperpolymath/standards/labels/good%20first%20issue) — Simple Perimeter 3 tasks
+- [`help wanted`](https://github.com/hyperpolymath/standards/labels/help%20wanted) — Community help needed
+- [`documentation`](https://github.com/hyperpolymath/standards/labels/documentation) — Docs improvements
+- [`perimeter-3`](https://github.com/hyperpolymath/standards/labels/perimeter-3) — Community sandbox scope
+
+---
+
+## Development Workflow
+
+### Branch Naming
+....
+
+docs/short-description # Documentation (P3) test/what-added # Test
+additions (P3) feat/short-description # New features (P2)
+fix/issue-number-description # Bug fixes (P2) refactor/what-changed #
+Code improvements (P2) security/what-fixed # Security fixes (P1-2)
+
+....
+
+### Commit Messages
+
+We follow [Conventional Commits](https://www.conventionalcommits.org/):
+....
+
+():
+
+{empty}[optional body]
+
+{empty}[optional footer]
diff --git a/0-ai-gatekeeper-protocol/CONTRIBUTING.md b/0-ai-gatekeeper-protocol/CONTRIBUTING.md
deleted file mode 100644
index 8c9d97b7..00000000
--- a/0-ai-gatekeeper-protocol/CONTRIBUTING.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# Clone the repository
-git clone https://github.com/hyperpolymath/standards.git
-cd standards
-
-# Using Nix (recommended for reproducibility)
-nix develop
-
-# Or using toolbox/distrobox
-toolbox create standards-dev
-toolbox enter standards-dev
-# Install dependencies manually
-
-# Verify setup
-just check # or: cargo check / mix compile / etc.
-just test # Run test suite
-```
-
-### Repository Structure
-```
-standards/
-├── src/ # Source code (Perimeter 1-2)
-├── lib/ # Library code (Perimeter 1-2)
-├── extensions/ # Extensions (Perimeter 2)
-├── plugins/ # Plugins (Perimeter 2)
-├── tools/ # Tooling (Perimeter 2)
-├── docs/ # Documentation (Perimeter 3)
-│ ├── architecture/ # ADRs, specs (Perimeter 2)
-│ └── proposals/ # RFCs (Perimeter 3)
-├── examples/ # Examples (Perimeter 3)
-├── spec/ # Spec tests (Perimeter 3)
-├── tests/ # Test suite (Perimeter 2-3)
-├── .well-known/ # Protocol files (Perimeter 1-3)
-├── .github/ # GitHub config (Perimeter 1)
-│ ├── ISSUE_TEMPLATE/
-│ └── workflows/
-├── CHANGELOG.md
-├── CODE_OF_CONDUCT.md
-├── CONTRIBUTING.md # This file
-├── GOVERNANCE.md
-├── LICENSE
-├── MAINTAINERS.md
-├── README.adoc
-├── SECURITY.md
-├── flake.nix # Nix flake (Perimeter 1)
-└── Justfile # Task runner (Perimeter 1)
-```
-
----
-
-## How to Contribute
-
-### Reporting Bugs
-
-**Before reporting**:
-1. Search existing issues
-2. Check if it's already fixed in `main`
-3. Determine which perimeter the bug affects
-
-**When reporting**:
-
-Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
-
-- Clear, descriptive title
-- Environment details (OS, versions, toolchain)
-- Steps to reproduce
-- Expected vs actual behaviour
-- Logs, screenshots, or minimal reproduction
-
-### Suggesting Features
-
-**Before suggesting**:
-1. Check the [roadmap](ROADMAP.md) if available
-2. Search existing issues and discussions
-3. Consider which perimeter the feature belongs to
-
-**When suggesting**:
-
-Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
-
-- Problem statement (what pain point does this solve?)
-- Proposed solution
-- Alternatives considered
-- Which perimeter this affects
-
-### Your First Contribution
-
-Look for issues labelled:
-
-- [`good first issue`](https://github.com/hyperpolymath/standards/labels/good%20first%20issue) — Simple Perimeter 3 tasks
-- [`help wanted`](https://github.com/hyperpolymath/standards/labels/help%20wanted) — Community help needed
-- [`documentation`](https://github.com/hyperpolymath/standards/labels/documentation) — Docs improvements
-- [`perimeter-3`](https://github.com/hyperpolymath/standards/labels/perimeter-3) — Community sandbox scope
-
----
-
-## Development Workflow
-
-### Branch Naming
-```
-docs/short-description # Documentation (P3)
-test/what-added # Test additions (P3)
-feat/short-description # New features (P2)
-fix/issue-number-description # Bug fixes (P2)
-refactor/what-changed # Code improvements (P2)
-security/what-fixed # Security fixes (P1-2)
-```
-
-### Commit Messages
-
-We follow [Conventional Commits](https://www.conventionalcommits.org/):
-```
-():
-
-[optional body]
-
-[optional footer]
diff --git a/0-ai-gatekeeper-protocol/GATEKEEPER-NOTES-COMPLETE-2026-02-07.adoc b/0-ai-gatekeeper-protocol/GATEKEEPER-NOTES-COMPLETE-2026-02-07.adoc
new file mode 100644
index 00000000..a4fa2f40
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/GATEKEEPER-NOTES-COMPLETE-2026-02-07.adoc
@@ -0,0 +1,107 @@
+== AI Gatekeeper Protocol - Follow-up Notes Complete
+
+*Date:* 2026-02-07 *Status:* ✅ ALL FOLLOW-UP NOTES ADDED
+
+'''''
+
+=== Summary
+
+Added notes to three repos about AI Gatekeeper Protocol availability and
+project status.
+
+=== Updates Made
+
+==== 1. nextgen-languages
+
+*File:* `+.machine_readable/STATE.scm+` *Commit:* `+8092396+` - docs:
+add AI Gatekeeper Protocol availability note *URL:*
+https://github.com/hyperpolymath/nextgen-languages
+
+*Added:* - Note about AI Gatekeeper Protocol availability - Action
+required: Add 0-AI-MANIFEST.a2ml from rsr-template-repo - Reference to
+protocol documentation
+
+*Context:* - Hub repo tracking 10 languages (Phronesis, Eclexia,
+WokeLang, My-Lang, etc.) - Completion tracking for production-ready
+through MVP stages - Will benefit from manifest system to prevent
+context loss across sessions
+
+==== 2. git-seo
+
+*File:* `+.machine_readable/STATE.scm+` *Commit:* `+58d8178+` - docs:
+add revival and gatekeeper protocol notes *URL:*
+https://github.com/hyperpolymath/git-seo
+
+*Added:* - Revival status note: Work interrupted by system crash
+(2026-02-06) - AI Gatekeeper Protocol availability note - Critical next
+actions: Revive project, define scope, begin implementation - Session
+history documenting crash interruption
+
+*Context:* - Project was in early stages when system crash interrupted
+work - Needs to be restarted from foundations - Gatekeeper protocol will
+help prevent context loss when reviving
+
+==== 3. ochrance
+
+*File:* `+STATE.scm+` *Commit:* `+b0eec0b+` - docs: add AI Gatekeeper
+Protocol notes and foundations status *URL:*
+https://github.com/hyperpolymath/ochrance
+
+*Added:* - AI Gatekeeper Protocol availability with natural synergy note
+- Foundations laid status: 54% complete, A2ML parsing pipeline
+functional - Integration opportunity: Ochrance’s A2ML parser could
+validate manifests - Next steps: Complete validator, serializer,
+integrate BLAKE3
+
+*Context:* - Neurosymbolic filesystem verification with dependent types
+- Implements A2ML parsing - SAME FORMAT as gatekeeper protocol manifests
+- Natural synergy: Ochrance could become the validator for
+0-AI-MANIFEST.a2ml files - Phase 1 in progress (Ochránce Core)
+
+=== Natural Synergy Discovered
+
+*Ochrance ↔ AI Gatekeeper Protocol:*
+
+Ochrance implements a complete A2ML parser (lexer + parser with covering
+totality) for neurosymbolic filesystem verification. The AI Gatekeeper
+Protocol uses A2ML format for its manifest files (0-AI-MANIFEST.a2ml).
+
+*Potential Integration:* - Ochrance’s validated A2ML parser could become
+the canonical validator for gatekeeper manifests - Formal verification
+from Ochrance could prove manifest correctness - Both projects benefit:
+Gatekeeper gets dependent-type verified parsing, Ochrance gets
+real-world use case
+
+*Future Work:* - When Ochrance Phase 1 complete, explore using its A2ML
+validator for manifest verification - Consider upstreaming Ochrance’s
+A2ML types as the canonical format specification - Potential for formal
+proofs about manifest properties (canonical locations, invariants)
+
+=== Commits
+
+[source,bash]
+----
+# nextgen-languages
+8092396 docs: add AI Gatekeeper Protocol availability note
+
+# git-seo
+58d8178 docs: add revival and gatekeeper protocol notes
+
+# ochrance
+b0eec0b docs: add AI Gatekeeper Protocol notes and foundations status
+----
+
+All commits pushed to GitHub successfully.
+
+=== Remaining Work
+
+Only one item left from original list: - [ ] Package mcp-repo-guardian
+for npm/world distribution
+
+Everything else from the AI Gatekeeper Protocol implementation is
+*COMPLETE*.
+
+'''''
+
+*Status:* Follow-up notes complete. All 3 repos updated, committed, and
+pushed.
diff --git a/0-ai-gatekeeper-protocol/GATEKEEPER-NOTES-COMPLETE-2026-02-07.md b/0-ai-gatekeeper-protocol/GATEKEEPER-NOTES-COMPLETE-2026-02-07.md
deleted file mode 100644
index 045d9711..00000000
--- a/0-ai-gatekeeper-protocol/GATEKEEPER-NOTES-COMPLETE-2026-02-07.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# AI Gatekeeper Protocol - Follow-up Notes Complete
-
-**Date:** 2026-02-07
-**Status:** ✅ ALL FOLLOW-UP NOTES ADDED
-
----
-
-## Summary
-
-Added notes to three repos about AI Gatekeeper Protocol availability and project status.
-
-## Updates Made
-
-### 1. nextgen-languages
-**File:** `.machine_readable/STATE.scm`
-**Commit:** `8092396` - docs: add AI Gatekeeper Protocol availability note
-**URL:** https://github.com/hyperpolymath/nextgen-languages
-
-**Added:**
-- Note about AI Gatekeeper Protocol availability
-- Action required: Add 0-AI-MANIFEST.a2ml from rsr-template-repo
-- Reference to protocol documentation
-
-**Context:**
-- Hub repo tracking 10 languages (Phronesis, Eclexia, WokeLang, My-Lang, etc.)
-- Completion tracking for production-ready through MVP stages
-- Will benefit from manifest system to prevent context loss across sessions
-
-### 2. git-seo
-**File:** `.machine_readable/STATE.scm`
-**Commit:** `58d8178` - docs: add revival and gatekeeper protocol notes
-**URL:** https://github.com/hyperpolymath/git-seo
-
-**Added:**
-- Revival status note: Work interrupted by system crash (2026-02-06)
-- AI Gatekeeper Protocol availability note
-- Critical next actions: Revive project, define scope, begin implementation
-- Session history documenting crash interruption
-
-**Context:**
-- Project was in early stages when system crash interrupted work
-- Needs to be restarted from foundations
-- Gatekeeper protocol will help prevent context loss when reviving
-
-### 3. ochrance
-**File:** `STATE.scm`
-**Commit:** `b0eec0b` - docs: add AI Gatekeeper Protocol notes and foundations status
-**URL:** https://github.com/hyperpolymath/ochrance
-
-**Added:**
-- AI Gatekeeper Protocol availability with natural synergy note
-- Foundations laid status: 54% complete, A2ML parsing pipeline functional
-- Integration opportunity: Ochrance's A2ML parser could validate manifests
-- Next steps: Complete validator, serializer, integrate BLAKE3
-
-**Context:**
-- Neurosymbolic filesystem verification with dependent types
-- Implements A2ML parsing - SAME FORMAT as gatekeeper protocol manifests
-- Natural synergy: Ochrance could become the validator for 0-AI-MANIFEST.a2ml files
-- Phase 1 in progress (Ochránce Core)
-
-## Natural Synergy Discovered
-
-**Ochrance ↔ AI Gatekeeper Protocol:**
-
-Ochrance implements a complete A2ML parser (lexer + parser with covering totality) for neurosymbolic filesystem verification. The AI Gatekeeper Protocol uses A2ML format for its manifest files (0-AI-MANIFEST.a2ml).
-
-**Potential Integration:**
-- Ochrance's validated A2ML parser could become the canonical validator for gatekeeper manifests
-- Formal verification from Ochrance could prove manifest correctness
-- Both projects benefit: Gatekeeper gets dependent-type verified parsing, Ochrance gets real-world use case
-
-**Future Work:**
-- When Ochrance Phase 1 complete, explore using its A2ML validator for manifest verification
-- Consider upstreaming Ochrance's A2ML types as the canonical format specification
-- Potential for formal proofs about manifest properties (canonical locations, invariants)
-
-## Commits
-
-```bash
-# nextgen-languages
-8092396 docs: add AI Gatekeeper Protocol availability note
-
-# git-seo
-58d8178 docs: add revival and gatekeeper protocol notes
-
-# ochrance
-b0eec0b docs: add AI Gatekeeper Protocol notes and foundations status
-```
-
-All commits pushed to GitHub successfully.
-
-## Remaining Work
-
-Only one item left from original list:
-- [ ] Package mcp-repo-guardian for npm/world distribution
-
-Everything else from the AI Gatekeeper Protocol implementation is **COMPLETE**.
-
----
-
-**Status:** Follow-up notes complete. All 3 repos updated, committed, and pushed.
diff --git a/0-ai-gatekeeper-protocol/SECURITY.adoc b/0-ai-gatekeeper-protocol/SECURITY.adoc
new file mode 100644
index 00000000..1d989df9
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/SECURITY.adoc
@@ -0,0 +1,452 @@
+== Security Policy
+
+We take security seriously. We appreciate your efforts to responsibly
+disclose vulnerabilities and will make every effort to acknowledge your
+contributions.
+
+=== Table of Contents
+
+* link:#reporting-a-vulnerability[Reporting a Vulnerability]
+* link:#what-to-include[What to Include]
+* link:#response-timeline[Response Timeline]
+* link:#disclosure-policy[Disclosure Policy]
+* link:#scope[Scope]
+* link:#safe-harbour[Safe Harbour]
+* link:#recognition[Recognition]
+* link:#security-updates[Security Updates]
+* link:#security-best-practices[Security Best Practices]
+
+'''''
+
+=== Reporting a Vulnerability
+
+==== Preferred Method: GitHub Security Advisories
+
+The preferred method for reporting security vulnerabilities is through
+GitHub’s Security Advisory feature:
+
+[arabic]
+. Navigate to
+https://github.com/hyperpolymath/standards/security/advisories/new[Report
+a Vulnerability]
+. Click *"`Report a vulnerability`"*
+. Complete the form with as much detail as possible
+. Submit — we’ll receive a private notification
+
+This method ensures:
+
+* End-to-end encryption of your report
+* Private discussion space for collaboration
+* Coordinated disclosure tooling
+* Automatic credit when the advisory is published
+
+==== Alternative: Encrypted Email
+
+If you cannot use GitHub Security Advisories, you may email us directly:
+
+[cols=",",]
+|===
+|*Email* |6759885+hyperpolymath@users.noreply.github.com
+|*PGP Key* |link:%7B%7BPGP_KEY_URL%7D%7D[Download Public Key]
+|*Fingerprint* |`+[PGP fingerprint not set]+`
+|===
+
+[source,bash]
+----
+# Import our PGP key
+curl -sSL {{PGP_KEY_URL}} | gpg --import
+
+# Verify fingerprint
+gpg --fingerprint 6759885+hyperpolymath@users.noreply.github.com
+
+# Encrypt your report
+gpg --armor --encrypt --recipient 6759885+hyperpolymath@users.noreply.github.com report.txt
+----
+
+____
+*⚠️ Important:* Do not report security vulnerabilities through public
+GitHub issues, pull requests, discussions, or social media.
+____
+
+'''''
+
+=== What to Include
+
+A good vulnerability report helps us understand and reproduce the issue
+quickly.
+
+==== Required Information
+
+* *Description*: Clear explanation of the vulnerability
+* *Impact*: What an attacker could achieve (confidentiality, integrity,
+availability)
+* *Affected versions*: Which versions/commits are affected
+* *Reproduction steps*: Detailed steps to reproduce the issue
+
+==== Helpful Additional Information
+
+* *Proof of concept*: Code, scripts, or screenshots demonstrating the
+vulnerability
+* *Attack scenario*: Realistic attack scenario showing exploitability
+* *CVSS score*: Your assessment of severity (use
+https://www.first.org/cvss/calculator/3.1[CVSS 3.1 Calculator])
+* *CWE ID*: Common Weakness Enumeration identifier if known
+* *Suggested fix*: If you have ideas for remediation
+* *References*: Links to related vulnerabilities, research, or
+advisories
+
+==== Example Report Structure
+
+[source,markdown]
+----
+## Summary
+[One-sentence description of the vulnerability]
+
+## Vulnerability Type
+[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.]
+
+## Affected Component
+[File path, function name, API endpoint, etc.]
+
+## Affected Versions
+[Version range or specific commits]
+
+## Severity Assessment
+- CVSS 3.1 Score: [X.X]
+- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X]
+
+## Description
+[Detailed technical description]
+
+## Steps to Reproduce
+1. [First step]
+2. [Second step]
+3. [...]
+
+## Proof of Concept
+[Code, curl commands, screenshots, etc.]
+
+## Impact
+[What can an attacker achieve?]
+
+## Suggested Remediation
+[Optional: your ideas for fixing]
+
+## References
+[Links to related issues, CVEs, research]
+----
+
+'''''
+
+=== Response Timeline
+
+We commit to the following response times:
+
+[width="100%",cols="24%,35%,41%",options="header",]
+|===
+|Stage |Timeframe |Description
+|*Initial Response* |48 hours |We acknowledge receipt and confirm we’re
+investigating
+
+|*Triage* |7 days |We assess severity, confirm the vulnerability, and
+estimate timeline
+
+|*Status Update* |Every 7 days |Regular updates on remediation progress
+
+|*Resolution* |90 days |Target for fix development and release (complex
+issues may take longer)
+
+|*Disclosure* |90 days |Public disclosure after fix is available
+(coordinated with you)
+|===
+
+____
+*Note:* These are targets, not guarantees. Complex vulnerabilities may
+require more time. We’ll communicate openly about any delays.
+____
+
+'''''
+
+=== Disclosure Policy
+
+We follow *coordinated disclosure* (also known as responsible
+disclosure):
+
+[arabic]
+. *You report* the vulnerability privately
+. *We acknowledge* and begin investigation
+. *We develop* a fix and prepare a release
+. *We coordinate* disclosure timing with you
+. *We publish* security advisory and fix simultaneously
+. *You may publish* your research after disclosure
+
+==== Our Commitments
+
+* We will not take legal action against researchers who follow this
+policy
+* We will work with you to understand and resolve the issue
+* We will credit you in the security advisory (unless you prefer
+anonymity)
+* We will notify you before public disclosure
+* We will publish advisories with sufficient detail for users to assess
+risk
+
+==== Your Commitments
+
+* Report vulnerabilities promptly after discovery
+* Give us reasonable time to address the issue before disclosure
+* Do not access, modify, or delete data beyond what’s necessary to
+demonstrate the vulnerability
+* Do not degrade service availability (no DoS testing on production)
+* Do not share vulnerability details with others until coordinated
+disclosure
+
+==== Disclosure Timeline
+
+....
+Day 0 You report vulnerability
+Day 1-2 We acknowledge receipt
+Day 7 We confirm vulnerability and share initial assessment
+Day 7-90 We develop and test fix
+Day 90 Coordinated public disclosure
+ (earlier if fix is ready; later by mutual agreement)
+....
+
+If we cannot reach agreement on disclosure timing, we default to 90 days
+from your initial report.
+
+'''''
+
+=== Scope
+
+==== In Scope ✅
+
+The following are within scope for security research:
+
+* This repository (`+hyperpolymath/standards+`) and all its code
+* Official releases and packages published from this repository
+* Documentation that could lead to security issues
+* Build and deployment configurations in this repository
+* Dependencies (report here, we’ll coordinate with upstream)
+
+==== Out of Scope ❌
+
+The following are *not* in scope:
+
+* Third-party services we integrate with (report directly to them)
+* Social engineering attacks against maintainers
+* Physical security
+* Denial of service attacks against production infrastructure
+* Spam, phishing, or other non-technical attacks
+* Issues already reported or publicly known
+* Theoretical vulnerabilities without proof of concept
+
+==== Qualifying Vulnerabilities
+
+We’re particularly interested in:
+
+* Remote code execution
+* SQL injection, command injection, code injection
+* Authentication/authorisation bypass
+* Cross-site scripting (XSS) and cross-site request forgery (CSRF)
+* Server-side request forgery (SSRF)
+* Path traversal / local file inclusion
+* Information disclosure (credentials, PII, secrets)
+* Cryptographic weaknesses
+* Deserialisation vulnerabilities
+* Memory safety issues (buffer overflows, use-after-free, etc.)
+* Supply chain vulnerabilities (dependency confusion, etc.)
+* Significant logic flaws
+
+==== Non-Qualifying Issues
+
+The following generally do not qualify as security vulnerabilities:
+
+* Missing security headers on non-sensitive pages
+* Clickjacking on pages without sensitive actions
+* Self-XSS (requires victim to paste code)
+* Missing rate limiting (unless it enables a specific attack)
+* Username/email enumeration (unless high-risk context)
+* Missing cookie flags on non-sensitive cookies
+* Software version disclosure
+* Verbose error messages (unless exposing secrets)
+* Best practice deviations without demonstrable impact
+
+'''''
+
+=== Safe Harbour
+
+We support security research conducted in good faith.
+
+==== Our Promise
+
+If you conduct security research in accordance with this policy:
+
+* ✅ We will not initiate legal action against you
+* ✅ We will not report your activity to law enforcement
+* ✅ We will work with you in good faith to resolve issues
+* ✅ We consider your research authorised under the Computer Fraud and
+Abuse Act (CFAA), UK Computer Misuse Act, and similar laws
+* ✅ We waive any potential claim against you for circumvention of
+security controls
+
+==== Good Faith Requirements
+
+To qualify for safe harbour, you must:
+
+* Comply with this security policy
+* Report vulnerabilities promptly
+* Avoid privacy violations (do not access others’ data)
+* Avoid service degradation (no destructive testing)
+* Not exploit vulnerabilities beyond proof-of-concept
+* Not use vulnerabilities for profit (beyond bug bounties where offered)
+
+____
+*⚠️ Important:* This safe harbour does not extend to third-party
+systems. Always check their policies before testing.
+____
+
+'''''
+
+=== Recognition
+
+We believe in recognising security researchers who help us improve.
+
+==== Hall of Fame
+
+Researchers who report valid vulnerabilities will be acknowledged in our
+link:SECURITY-ACKNOWLEDGMENTS.md[Security Acknowledgments] (unless they
+prefer anonymity).
+
+Recognition includes:
+
+* Your name (or chosen alias)
+* Link to your website/profile (optional)
+* Brief description of the vulnerability class
+* Date of report
+
+==== What We Offer
+
+* ✅ Public credit in security advisories
+* ✅ Acknowledgment in release notes
+* ✅ Entry in our Hall of Fame
+* ✅ Reference/recommendation letter upon request (for significant
+findings)
+
+==== What We Don’t Currently Offer
+
+* ❌ Monetary bug bounties
+* ❌ Hardware or swag
+* ❌ Paid security research contracts
+
+____
+*Note:* We’re a community project with limited resources. Your
+contributions help everyone who uses this software.
+____
+
+'''''
+
+=== Security Updates
+
+==== Receiving Updates
+
+To stay informed about security updates:
+
+* *Watch this repository*: Click "`Watch`" → "`Custom`" → Select
+"`Security alerts`"
+* *GitHub Security Advisories*: Published at
+https://github.com/hyperpolymath/standards/security/advisories[Security
+Advisories]
+* *Release notes*: Security fixes noted in link:CHANGELOG.md[CHANGELOG]
+
+==== Update Policy
+
+[cols=",",options="header",]
+|===
+|Severity |Response
+|*Critical/High* |Patch release as soon as fix is ready
+|*Medium* |Included in next scheduled release (or earlier)
+|*Low* |Included in next scheduled release
+|===
+
+==== Supported Versions
+
+[cols=",,",options="header",]
+|===
+|Version |Supported |Notes
+|`+main+` branch |✅ Yes |Latest development
+|Latest release |✅ Yes |Current stable
+|Previous minor release |✅ Yes |Security fixes backported
+|Older versions |❌ No |Please upgrade
+|===
+
+'''''
+
+=== Security Best Practices
+
+When using Standards, we recommend:
+
+==== General
+
+* Keep dependencies up to date
+* Use the latest stable release
+* Subscribe to security notifications
+* Review configuration against security documentation
+* Follow principle of least privilege
+
+==== For Contributors
+
+* Never commit secrets, credentials, or API keys
+* Use signed commits (`+git config commit.gpgsign true+`)
+* Review dependencies before adding them
+* Run security linters locally before pushing
+* Report any concerns about existing code
+
+'''''
+
+=== Additional Resources
+
+* link:%7B%7BPGP_KEY_URL%7D%7D[Our PGP Public Key]
+* https://github.com/hyperpolymath/standards/security/advisories[Security
+Advisories]
+* link:CHANGELOG.md[Changelog]
+* link:CONTRIBUTING.md[Contributing Guidelines]
+* https://cve.mitre.org/[CVE Database]
+* https://www.first.org/cvss/calculator/3.1[CVSS Calculator]
+
+'''''
+
+=== Contact
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Purpose |Contact
+|*Security issues*
+|https://github.com/hyperpolymath/standards/security/advisories/new[Report
+via GitHub] or 6759885+hyperpolymath@users.noreply.github.com
+
+|*General questions*
+|https://github.com/hyperpolymath/standards/discussions[GitHub
+Discussions]
+
+|*Other enquiries* |See link:README.md[README] for contact information
+|===
+
+'''''
+
+=== Policy Changes
+
+This security policy may be updated from time to time. Significant
+changes will be:
+
+* Committed to this repository with a clear commit message
+* Noted in the changelog
+* Announced via GitHub Discussions (for major changes)
+
+'''''
+
+_Thank you for helping keep Standards and its users safe._ 🛡️
+
+'''''
+
+Last updated: 2026 · Policy version: 1.0.0
diff --git a/0-ai-gatekeeper-protocol/SECURITY.md b/0-ai-gatekeeper-protocol/SECURITY.md
deleted file mode 100644
index 6ea98768..00000000
--- a/0-ai-gatekeeper-protocol/SECURITY.md
+++ /dev/null
@@ -1,406 +0,0 @@
-# Security Policy
-
-
-
-We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
-
-## Table of Contents
-
-- [Reporting a Vulnerability](#reporting-a-vulnerability)
-- [What to Include](#what-to-include)
-- [Response Timeline](#response-timeline)
-- [Disclosure Policy](#disclosure-policy)
-- [Scope](#scope)
-- [Safe Harbour](#safe-harbour)
-- [Recognition](#recognition)
-- [Security Updates](#security-updates)
-- [Security Best Practices](#security-best-practices)
-
----
-
-## Reporting a Vulnerability
-
-### Preferred Method: GitHub Security Advisories
-
-The preferred method for reporting security vulnerabilities is through GitHub's Security Advisory feature:
-
-1. Navigate to [Report a Vulnerability](https://github.com/hyperpolymath/standards/security/advisories/new)
-2. Click **"Report a vulnerability"**
-3. Complete the form with as much detail as possible
-4. Submit — we'll receive a private notification
-
-This method ensures:
-
-- End-to-end encryption of your report
-- Private discussion space for collaboration
-- Coordinated disclosure tooling
-- Automatic credit when the advisory is published
-
-### Alternative: Encrypted Email
-
-If you cannot use GitHub Security Advisories, you may email us directly:
-
-| | |
-|---|---|
-| **Email** | 6759885+hyperpolymath@users.noreply.github.com |
-| **PGP Key** | [Download Public Key]({{PGP_KEY_URL}}) |
-| **Fingerprint** | `[PGP fingerprint not set]` |
-
-```bash
-# Import our PGP key
-curl -sSL {{PGP_KEY_URL}} | gpg --import
-
-# Verify fingerprint
-gpg --fingerprint 6759885+hyperpolymath@users.noreply.github.com
-
-# Encrypt your report
-gpg --armor --encrypt --recipient 6759885+hyperpolymath@users.noreply.github.com report.txt
-```
-
-> **⚠️ Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media.
-
----
-
-## What to Include
-
-A good vulnerability report helps us understand and reproduce the issue quickly.
-
-### Required Information
-
-- **Description**: Clear explanation of the vulnerability
-- **Impact**: What an attacker could achieve (confidentiality, integrity, availability)
-- **Affected versions**: Which versions/commits are affected
-- **Reproduction steps**: Detailed steps to reproduce the issue
-
-### Helpful Additional Information
-
-- **Proof of concept**: Code, scripts, or screenshots demonstrating the vulnerability
-- **Attack scenario**: Realistic attack scenario showing exploitability
-- **CVSS score**: Your assessment of severity (use [CVSS 3.1 Calculator](https://www.first.org/cvss/calculator/3.1))
-- **CWE ID**: Common Weakness Enumeration identifier if known
-- **Suggested fix**: If you have ideas for remediation
-- **References**: Links to related vulnerabilities, research, or advisories
-
-### Example Report Structure
-
-```markdown
-## Summary
-[One-sentence description of the vulnerability]
-
-## Vulnerability Type
-[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.]
-
-## Affected Component
-[File path, function name, API endpoint, etc.]
-
-## Affected Versions
-[Version range or specific commits]
-
-## Severity Assessment
-- CVSS 3.1 Score: [X.X]
-- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X]
-
-## Description
-[Detailed technical description]
-
-## Steps to Reproduce
-1. [First step]
-2. [Second step]
-3. [...]
-
-## Proof of Concept
-[Code, curl commands, screenshots, etc.]
-
-## Impact
-[What can an attacker achieve?]
-
-## Suggested Remediation
-[Optional: your ideas for fixing]
-
-## References
-[Links to related issues, CVEs, research]
-```
-
----
-
-## Response Timeline
-
-We commit to the following response times:
-
-| Stage | Timeframe | Description |
-|-------|-----------|-------------|
-| **Initial Response** | 48 hours | We acknowledge receipt and confirm we're investigating |
-| **Triage** | 7 days | We assess severity, confirm the vulnerability, and estimate timeline |
-| **Status Update** | Every 7 days | Regular updates on remediation progress |
-| **Resolution** | 90 days | Target for fix development and release (complex issues may take longer) |
-| **Disclosure** | 90 days | Public disclosure after fix is available (coordinated with you) |
-
-> **Note:** These are targets, not guarantees. Complex vulnerabilities may require more time. We'll communicate openly about any delays.
-
----
-
-## Disclosure Policy
-
-We follow **coordinated disclosure** (also known as responsible disclosure):
-
-1. **You report** the vulnerability privately
-2. **We acknowledge** and begin investigation
-3. **We develop** a fix and prepare a release
-4. **We coordinate** disclosure timing with you
-5. **We publish** security advisory and fix simultaneously
-6. **You may publish** your research after disclosure
-
-### Our Commitments
-
-- We will not take legal action against researchers who follow this policy
-- We will work with you to understand and resolve the issue
-- We will credit you in the security advisory (unless you prefer anonymity)
-- We will notify you before public disclosure
-- We will publish advisories with sufficient detail for users to assess risk
-
-### Your Commitments
-
-- Report vulnerabilities promptly after discovery
-- Give us reasonable time to address the issue before disclosure
-- Do not access, modify, or delete data beyond what's necessary to demonstrate the vulnerability
-- Do not degrade service availability (no DoS testing on production)
-- Do not share vulnerability details with others until coordinated disclosure
-
-### Disclosure Timeline
-
-```
-Day 0 You report vulnerability
-Day 1-2 We acknowledge receipt
-Day 7 We confirm vulnerability and share initial assessment
-Day 7-90 We develop and test fix
-Day 90 Coordinated public disclosure
- (earlier if fix is ready; later by mutual agreement)
-```
-
-If we cannot reach agreement on disclosure timing, we default to 90 days from your initial report.
-
----
-
-## Scope
-
-### In Scope ✅
-
-The following are within scope for security research:
-
-- This repository (`hyperpolymath/standards`) and all its code
-- Official releases and packages published from this repository
-- Documentation that could lead to security issues
-- Build and deployment configurations in this repository
-- Dependencies (report here, we'll coordinate with upstream)
-
-### Out of Scope ❌
-
-The following are **not** in scope:
-
-- Third-party services we integrate with (report directly to them)
-- Social engineering attacks against maintainers
-- Physical security
-- Denial of service attacks against production infrastructure
-- Spam, phishing, or other non-technical attacks
-- Issues already reported or publicly known
-- Theoretical vulnerabilities without proof of concept
-
-### Qualifying Vulnerabilities
-
-We're particularly interested in:
-
-- Remote code execution
-- SQL injection, command injection, code injection
-- Authentication/authorisation bypass
-- Cross-site scripting (XSS) and cross-site request forgery (CSRF)
-- Server-side request forgery (SSRF)
-- Path traversal / local file inclusion
-- Information disclosure (credentials, PII, secrets)
-- Cryptographic weaknesses
-- Deserialisation vulnerabilities
-- Memory safety issues (buffer overflows, use-after-free, etc.)
-- Supply chain vulnerabilities (dependency confusion, etc.)
-- Significant logic flaws
-
-### Non-Qualifying Issues
-
-The following generally do not qualify as security vulnerabilities:
-
-- Missing security headers on non-sensitive pages
-- Clickjacking on pages without sensitive actions
-- Self-XSS (requires victim to paste code)
-- Missing rate limiting (unless it enables a specific attack)
-- Username/email enumeration (unless high-risk context)
-- Missing cookie flags on non-sensitive cookies
-- Software version disclosure
-- Verbose error messages (unless exposing secrets)
-- Best practice deviations without demonstrable impact
-
----
-
-## Safe Harbour
-
-We support security research conducted in good faith.
-
-### Our Promise
-
-If you conduct security research in accordance with this policy:
-
-- ✅ We will not initiate legal action against you
-- ✅ We will not report your activity to law enforcement
-- ✅ We will work with you in good faith to resolve issues
-- ✅ We consider your research authorised under the Computer Fraud and Abuse Act (CFAA), UK Computer Misuse Act, and similar laws
-- ✅ We waive any potential claim against you for circumvention of security controls
-
-### Good Faith Requirements
-
-To qualify for safe harbour, you must:
-
-- Comply with this security policy
-- Report vulnerabilities promptly
-- Avoid privacy violations (do not access others' data)
-- Avoid service degradation (no destructive testing)
-- Not exploit vulnerabilities beyond proof-of-concept
-- Not use vulnerabilities for profit (beyond bug bounties where offered)
-
-> **⚠️ Important:** This safe harbour does not extend to third-party systems. Always check their policies before testing.
-
----
-
-## Recognition
-
-We believe in recognising security researchers who help us improve.
-
-### Hall of Fame
-
-Researchers who report valid vulnerabilities will be acknowledged in our [Security Acknowledgments](SECURITY-ACKNOWLEDGMENTS.md) (unless they prefer anonymity).
-
-Recognition includes:
-
-- Your name (or chosen alias)
-- Link to your website/profile (optional)
-- Brief description of the vulnerability class
-- Date of report
-
-### What We Offer
-
-- ✅ Public credit in security advisories
-- ✅ Acknowledgment in release notes
-- ✅ Entry in our Hall of Fame
-- ✅ Reference/recommendation letter upon request (for significant findings)
-
-### What We Don't Currently Offer
-
-- ❌ Monetary bug bounties
-- ❌ Hardware or swag
-- ❌ Paid security research contracts
-
-> **Note:** We're a community project with limited resources. Your contributions help everyone who uses this software.
-
----
-
-## Security Updates
-
-### Receiving Updates
-
-To stay informed about security updates:
-
-- **Watch this repository**: Click "Watch" → "Custom" → Select "Security alerts"
-- **GitHub Security Advisories**: Published at [Security Advisories](https://github.com/hyperpolymath/standards/security/advisories)
-- **Release notes**: Security fixes noted in [CHANGELOG](CHANGELOG.md)
-
-### Update Policy
-
-| Severity | Response |
-|----------|----------|
-| **Critical/High** | Patch release as soon as fix is ready |
-| **Medium** | Included in next scheduled release (or earlier) |
-| **Low** | Included in next scheduled release |
-
-### Supported Versions
-
-
-
-| Version | Supported | Notes |
-|---------|-----------|-------|
-| `main` branch | ✅ Yes | Latest development |
-| Latest release | ✅ Yes | Current stable |
-| Previous minor release | ✅ Yes | Security fixes backported |
-| Older versions | ❌ No | Please upgrade |
-
----
-
-## Security Best Practices
-
-When using Standards, we recommend:
-
-### General
-
-- Keep dependencies up to date
-- Use the latest stable release
-- Subscribe to security notifications
-- Review configuration against security documentation
-- Follow principle of least privilege
-
-### For Contributors
-
-- Never commit secrets, credentials, or API keys
-- Use signed commits (`git config commit.gpgsign true`)
-- Review dependencies before adding them
-- Run security linters locally before pushing
-- Report any concerns about existing code
-
----
-
-## Additional Resources
-
-- [Our PGP Public Key]({{PGP_KEY_URL}})
-- [Security Advisories](https://github.com/hyperpolymath/standards/security/advisories)
-- [Changelog](CHANGELOG.md)
-- [Contributing Guidelines](CONTRIBUTING.md)
-- [CVE Database](https://cve.mitre.org/)
-- [CVSS Calculator](https://www.first.org/cvss/calculator/3.1)
-
----
-
-## Contact
-
-| Purpose | Contact |
-|---------|---------|
-| **Security issues** | [Report via GitHub](https://github.com/hyperpolymath/standards/security/advisories/new) or 6759885+hyperpolymath@users.noreply.github.com |
-| **General questions** | [GitHub Discussions](https://github.com/hyperpolymath/standards/discussions) |
-| **Other enquiries** | See [README](README.md) for contact information |
-
----
-
-## Policy Changes
-
-This security policy may be updated from time to time. Significant changes will be:
-
-- Committed to this repository with a clear commit message
-- Noted in the changelog
-- Announced via GitHub Discussions (for major changes)
-
----
-
-*Thank you for helping keep Standards and its users safe.* 🛡️
-
----
-
-Last updated: 2026 · Policy version: 1.0.0
diff --git a/0-ai-gatekeeper-protocol/docs/FEEDBACK-TO-ANTHROPIC.adoc b/0-ai-gatekeeper-protocol/docs/FEEDBACK-TO-ANTHROPIC.adoc
new file mode 100644
index 00000000..ac64d2d5
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/docs/FEEDBACK-TO-ANTHROPIC.adoc
@@ -0,0 +1,318 @@
+== Feedback to Anthropic: AI Gatekeeper Protocol
+
+*Date:* 2026-02-07 *From:* hyperpolymath / Jonathan D.A. Jewell
+*Subject:* Proposed Solution for AI Context Loss and Invariant
+Violations
+
+=== Executive Summary
+
+We’ve developed the *AI Gatekeeper Protocol* to solve a critical
+problem: AI agents (including Claude) lose context between sessions and
+violate repository invariants, causing user frustration and wasted
+resources. This document proposes how Anthropic could natively support
+this protocol in Claude to benefit all users.
+
+=== The Problem
+
+==== User Experience Today
+
+Users working with Claude Code experience:
+
+[arabic]
+. *Context Loss Across Sessions*
+* Session crashes → complete context reset
+* New session starts → user re-explains everything
+* "`For the 10th time, SCM files go in `+.machine_readable/+``"
+. *Duplicate File Creation*
+* Despite explicit instructions, Claude creates files in wrong locations
+* Example: Creates `+STATE.scm+` in root despite it existing in
+`+.machine_readable/+`
+* Results in stale duplicates, confusion, data inconsistency
+. *Invariant Violations*
+* User defines architectural rules (e.g., "`no SCM files in root`")
+* Claude violates them repeatedly across sessions
+* No mechanical enforcement, only repeated verbal instructions
+. *Wasted Resources*
+* User time re-explaining
+* Computational credits on redundant explanations
+* Frustration leading to reduced Claude usage
+
+==== Real Example from User
+
+____
+"`it’s such a mess, as I am starting these projects again and again and
+wasting time and credit on every new start up explaining this`"
+____
+
+____
+"`you have amnesia right?`"
+____
+
+____
+"`if it hasn’t checked [the manifest] there are no rights for it to do
+anything at all, not read, nor write, nor anything else?`"
+____
+
+=== Our Solution: AI Gatekeeper Protocol
+
+==== Core Concept
+
+Every repository contains a manifest file (`+0-AI-MANIFEST.a2ml+` or
+`+AI.a2ml+`) that:
+
+[arabic]
+. *Declares canonical locations* - "`SCM files ONLY in
+`+.machine_readable/+``"
+. *States critical invariants* - Rules that must never be violated
+. *Provides attestation mechanism* - Claude must prove it read the
+manifest
+. *Works universally* - Not Claude-specific, works with Gemini, OpenAI,
+etc.
+
+==== Implementation
+
+We’ve built two components:
+
+[arabic]
+. *MCP Server (mcp-repo-guardian)*
+* Intercepts ALL file operations
+* Blocks access until Claude proves it read manifest (SHA-256 hash)
+* Validates paths against manifest invariants
+* Session-based access control
+. *Documentation Repo (0-ai-gatekeeper-protocol)*
+* Comprehensive specification and rationale
+* Platform-agnostic design
+* Example templates and integration guides
+
+==== How It Works
+
+....
+Claude attempts to read file
+ ↓
+MCP Server: "❌ ACCESS DENIED - Must acknowledge manifest first"
+ ↓
+Claude reads 0-AI-MANIFEST.a2ml
+ ↓
+Claude computes SHA-256 hash
+ ↓
+Claude calls acknowledge_manifest(hash)
+ ↓
+MCP Server validates hash
+ ↓
+✅ Access granted - session created
+ ↓
+Claude operates within manifest rules
+....
+
+==== Results
+
+* ✅ *Zero duplicate file errors* - Mechanical enforcement prevents
+* ✅ *Context preserved* - Manifest read every session
+* ✅ *User satisfaction* - No repeated explanations
+* ✅ *Cross-platform* - Works with other AI agents too
+
+=== Proposed Anthropic Integration
+
+==== Option 1: Native Manifest Support in Claude Code
+
+*Proposal:* Claude Code automatically detects and reads manifest files.
+
+*Implementation:*
+
+[source,typescript]
+----
+// On repo access
+if (repoContains('0-AI-MANIFEST.a2ml') || repoContains('AI.a2ml')) {
+ const manifest = await readManifest(repo);
+ const understood = await llm.understand(manifest);
+
+ // Enforce in tool execution layer
+ registerInvariants(manifest.invariants);
+ setCanonicalLocations(manifest.locations);
+
+ // Log to user
+ notify("Repository manifest acknowledged. Operating within defined constraints.");
+}
+----
+
+*Benefits:* - Works out-of-box for all Claude users - No MCP server
+configuration required - Anthropic controls quality and evolution - Sets
+industry standard
+
+==== Option 2: Enhanced MCP Protocol
+
+*Proposal:* Extend MCP protocol with native manifest awareness.
+
+*MCP Protocol Extension:*
+
+[source,typescript]
+----
+interface McpManifest {
+ type: 'repository-manifest';
+ version: '1.0.0';
+ content: string;
+ hash: string;
+ invariants: Invariant[];
+ canonicalLocations: Record;
+}
+
+// New MCP message types
+type ManifestMessage =
+ | { type: 'manifest/discovered', manifest: McpManifest }
+ | { type: 'manifest/acknowledged', hash: string, sessionId: string }
+ | { type: 'manifest/validate-operation', operation: Operation }
+----
+
+*Benefits:* - Works with any MCP server - Standards-based approach -
+Community can build tools - Anthropic leads standardization
+
+==== Option 3: Claude Settings Enhancement
+
+*Proposal:* Add manifest enforcement to Claude settings.
+
+*User Config:*
+
+[source,json]
+----
+{
+ "manifestEnforcement": {
+ "enabled": true,
+ "strictMode": true,
+ "requireAttestation": true,
+ "blockOnViolation": true
+ }
+}
+----
+
+*Benefits:* - User control over enforcement level - Gradual adoption
+path - Works with existing infrastructure - Clear user communication
+
+=== Why This Matters
+
+==== For Users
+
+* *Massive time savings* - No repeated explanations
+* *Reduced frustration* - Claude respects their architecture
+* *Increased trust* - Mechanical guarantees vs. hopes
+* *Better outcomes* - Projects stay organized
+
+==== For Anthropic
+
+* *Competitive advantage* - First AI with native invariant preservation
+* *User retention* - Solves major pain point
+* *Platform leadership* - Set standard others follow
+* *Enterprise readiness* - Critical for large-scale adoption
+
+==== For AI Industry
+
+* *Standardization* - Common manifest format across platforms
+* *Best practice* - Establishes pattern others can adopt
+* *Research direction* - Bridges neural (LLMs) and symbolic (formal
+methods)
+* *User empowerment* - Users define constraints, AI respects them
+
+=== Technical Considerations
+
+==== Integration Complexity
+
+*Low Complexity:* - Read manifest file on repo access - Parse canonical
+locations and invariants - Validate operations before execution -
+Estimated: 1-2 sprint cycles
+
+*Medium Complexity:* - MCP protocol extension - Attestation verification
+- Session state management - Estimated: 1-2 months
+
+==== Performance Impact
+
+* *Minimal* - One-time manifest read per session
+* *Caching* - Manifest cached after first read
+* *Async* - Validation happens in parallel
+* *Negligible* - Hash computation is fast (<1ms)
+
+==== Backward Compatibility
+
+* *Opt-in* - Only enforced if manifest present
+* *Graceful degradation* - Works without manifest
+* *Migration path* - Users can adopt incrementally
+* *No breaking changes* - Additive only
+
+=== Request for Collaboration
+
+We’d love to collaborate with Anthropic on:
+
+[arabic]
+. *Feedback on Protocol Design*
+* Is the manifest format suitable?
+* Should we use different attestation method?
+* What improvements would you suggest?
+. *MCP Protocol Enhancement*
+* Should manifest support be in core MCP?
+* What’s the right abstraction level?
+* How to handle cross-platform?
+. *Native Integration Path*
+* Timeline for potential integration?
+* What’s needed from our side?
+* How can we help with implementation?
+. *Standardization*
+* Should this be submitted to standards body?
+* Would Anthropic co-author specification?
+* How to ensure cross-platform adoption?
+
+=== Current Status
+
+* ✅ *Protocol designed and documented*
+* ✅ *MCP server implemented* (mcp-repo-guardian)
+* ✅ *Proven in production* (nextgen-languages repo)
+* ⏳ *FUSE wrapper in development* (universal enforcement)
+* ⏳ *Formal specification being written*
+
+*Repositories:* -
+https://github.com/hyperpolymath/0-ai-gatekeeper-protocol -
+https://github.com/hyperpolymath/mcp-repo-guardian
+
+=== Metrics and Evidence
+
+==== Before Protocol
+
+* *Duplicate files:* 6 SCM files in both root and `+.machine_readable/+`
+* *User frustration:* "`wasting time and credit on every new start up`"
+* *Context loss:* Complete re-explanation each session
+* *Violations:* Repeated mistakes despite instructions
+
+==== After Protocol
+
+* *Duplicate files:* Zero (mechanically prevented)
+* *User satisfaction:* "`this will make life a lot easier`"
+* *Context loss:* Eliminated (manifest read every session)
+* *Violations:* Zero (enforced mechanically)
+
+=== Conclusion
+
+The AI Gatekeeper Protocol solves a real, painful problem for users
+working with AI agents across sessions and platforms. By mechanically
+enforcing repository invariants through manifests and attestation, we
+eliminate context loss and give users confidence their architecture will
+be respected.
+
+We believe Anthropic is uniquely positioned to lead this effort by: 1.
+Integrating native manifest support in Claude 2. Extending MCP protocol
+with manifest awareness 3. Setting industry standard for AI-repository
+interaction
+
+This benefits everyone: - *Users* get reliable, respectful AI assistance
+- *Anthropic* differentiates Claude with unique capability - *Industry*
+establishes best practice pattern
+
+We’d welcome the opportunity to discuss this further and collaborate on
+implementation.
+
+'''''
+
+*Contact:* - GitHub:
+https://github.com/hyperpolymath/0-ai-gatekeeper-protocol - Issues:
+https://github.com/hyperpolymath/0-ai-gatekeeper-protocol/issues -
+Email: j.d.a.jewell@open.ac.uk
+
+*References:* - RATIONALE.md - Detailed problem/solution explanation -
+ARCHITECTURE.md - Technical design (to be completed) -
+AI-MANIFEST-SPEC.adoc - Formal specification (to be completed)
diff --git a/0-ai-gatekeeper-protocol/docs/FEEDBACK-TO-ANTHROPIC.md b/0-ai-gatekeeper-protocol/docs/FEEDBACK-TO-ANTHROPIC.md
deleted file mode 100644
index 3f6ff6f7..00000000
--- a/0-ai-gatekeeper-protocol/docs/FEEDBACK-TO-ANTHROPIC.md
+++ /dev/null
@@ -1,307 +0,0 @@
-# Feedback to Anthropic: AI Gatekeeper Protocol
-
-**Date:** 2026-02-07
-**From:** hyperpolymath / Jonathan D.A. Jewell
-**Subject:** Proposed Solution for AI Context Loss and Invariant Violations
-
-## Executive Summary
-
-We've developed the **AI Gatekeeper Protocol** to solve a critical problem: AI agents (including Claude) lose context between sessions and violate repository invariants, causing user frustration and wasted resources. This document proposes how Anthropic could natively support this protocol in Claude to benefit all users.
-
-## The Problem
-
-### User Experience Today
-
-Users working with Claude Code experience:
-
-1. **Context Loss Across Sessions**
- - Session crashes → complete context reset
- - New session starts → user re-explains everything
- - "For the 10th time, SCM files go in `.machine_readable/`"
-
-2. **Duplicate File Creation**
- - Despite explicit instructions, Claude creates files in wrong locations
- - Example: Creates `STATE.scm` in root despite it existing in `.machine_readable/`
- - Results in stale duplicates, confusion, data inconsistency
-
-3. **Invariant Violations**
- - User defines architectural rules (e.g., "no SCM files in root")
- - Claude violates them repeatedly across sessions
- - No mechanical enforcement, only repeated verbal instructions
-
-4. **Wasted Resources**
- - User time re-explaining
- - Computational credits on redundant explanations
- - Frustration leading to reduced Claude usage
-
-### Real Example from User
-
-> "it's such a mess, as I am starting these projects again and again and wasting time and credit on every new start up explaining this"
-
-> "you have amnesia right?"
-
-> "if it hasn't checked [the manifest] there are no rights for it to do anything at all, not read, nor write, nor anything else?"
-
-## Our Solution: AI Gatekeeper Protocol
-
-### Core Concept
-
-Every repository contains a manifest file (`0-AI-MANIFEST.a2ml` or `AI.a2ml`) that:
-
-1. **Declares canonical locations** - "SCM files ONLY in `.machine_readable/`"
-2. **States critical invariants** - Rules that must never be violated
-3. **Provides attestation mechanism** - Claude must prove it read the manifest
-4. **Works universally** - Not Claude-specific, works with Gemini, OpenAI, etc.
-
-### Implementation
-
-We've built two components:
-
-1. **MCP Server (mcp-repo-guardian)**
- - Intercepts ALL file operations
- - Blocks access until Claude proves it read manifest (SHA-256 hash)
- - Validates paths against manifest invariants
- - Session-based access control
-
-2. **Documentation Repo (0-ai-gatekeeper-protocol)**
- - Comprehensive specification and rationale
- - Platform-agnostic design
- - Example templates and integration guides
-
-### How It Works
-
-```
-Claude attempts to read file
- ↓
-MCP Server: "❌ ACCESS DENIED - Must acknowledge manifest first"
- ↓
-Claude reads 0-AI-MANIFEST.a2ml
- ↓
-Claude computes SHA-256 hash
- ↓
-Claude calls acknowledge_manifest(hash)
- ↓
-MCP Server validates hash
- ↓
-✅ Access granted - session created
- ↓
-Claude operates within manifest rules
-```
-
-### Results
-
-- ✅ **Zero duplicate file errors** - Mechanical enforcement prevents
-- ✅ **Context preserved** - Manifest read every session
-- ✅ **User satisfaction** - No repeated explanations
-- ✅ **Cross-platform** - Works with other AI agents too
-
-## Proposed Anthropic Integration
-
-### Option 1: Native Manifest Support in Claude Code
-
-**Proposal:** Claude Code automatically detects and reads manifest files.
-
-**Implementation:**
-```typescript
-// On repo access
-if (repoContains('0-AI-MANIFEST.a2ml') || repoContains('AI.a2ml')) {
- const manifest = await readManifest(repo);
- const understood = await llm.understand(manifest);
-
- // Enforce in tool execution layer
- registerInvariants(manifest.invariants);
- setCanonicalLocations(manifest.locations);
-
- // Log to user
- notify("Repository manifest acknowledged. Operating within defined constraints.");
-}
-```
-
-**Benefits:**
-- Works out-of-box for all Claude users
-- No MCP server configuration required
-- Anthropic controls quality and evolution
-- Sets industry standard
-
-### Option 2: Enhanced MCP Protocol
-
-**Proposal:** Extend MCP protocol with native manifest awareness.
-
-**MCP Protocol Extension:**
-```typescript
-interface McpManifest {
- type: 'repository-manifest';
- version: '1.0.0';
- content: string;
- hash: string;
- invariants: Invariant[];
- canonicalLocations: Record;
-}
-
-// New MCP message types
-type ManifestMessage =
- | { type: 'manifest/discovered', manifest: McpManifest }
- | { type: 'manifest/acknowledged', hash: string, sessionId: string }
- | { type: 'manifest/validate-operation', operation: Operation }
-```
-
-**Benefits:**
-- Works with any MCP server
-- Standards-based approach
-- Community can build tools
-- Anthropic leads standardization
-
-### Option 3: Claude Settings Enhancement
-
-**Proposal:** Add manifest enforcement to Claude settings.
-
-**User Config:**
-```json
-{
- "manifestEnforcement": {
- "enabled": true,
- "strictMode": true,
- "requireAttestation": true,
- "blockOnViolation": true
- }
-}
-```
-
-**Benefits:**
-- User control over enforcement level
-- Gradual adoption path
-- Works with existing infrastructure
-- Clear user communication
-
-## Why This Matters
-
-### For Users
-
-- **Massive time savings** - No repeated explanations
-- **Reduced frustration** - Claude respects their architecture
-- **Increased trust** - Mechanical guarantees vs. hopes
-- **Better outcomes** - Projects stay organized
-
-### For Anthropic
-
-- **Competitive advantage** - First AI with native invariant preservation
-- **User retention** - Solves major pain point
-- **Platform leadership** - Set standard others follow
-- **Enterprise readiness** - Critical for large-scale adoption
-
-### For AI Industry
-
-- **Standardization** - Common manifest format across platforms
-- **Best practice** - Establishes pattern others can adopt
-- **Research direction** - Bridges neural (LLMs) and symbolic (formal methods)
-- **User empowerment** - Users define constraints, AI respects them
-
-## Technical Considerations
-
-### Integration Complexity
-
-**Low Complexity:**
-- Read manifest file on repo access
-- Parse canonical locations and invariants
-- Validate operations before execution
-- Estimated: 1-2 sprint cycles
-
-**Medium Complexity:**
-- MCP protocol extension
-- Attestation verification
-- Session state management
-- Estimated: 1-2 months
-
-### Performance Impact
-
-- **Minimal** - One-time manifest read per session
-- **Caching** - Manifest cached after first read
-- **Async** - Validation happens in parallel
-- **Negligible** - Hash computation is fast (<1ms)
-
-### Backward Compatibility
-
-- **Opt-in** - Only enforced if manifest present
-- **Graceful degradation** - Works without manifest
-- **Migration path** - Users can adopt incrementally
-- **No breaking changes** - Additive only
-
-## Request for Collaboration
-
-We'd love to collaborate with Anthropic on:
-
-1. **Feedback on Protocol Design**
- - Is the manifest format suitable?
- - Should we use different attestation method?
- - What improvements would you suggest?
-
-2. **MCP Protocol Enhancement**
- - Should manifest support be in core MCP?
- - What's the right abstraction level?
- - How to handle cross-platform?
-
-3. **Native Integration Path**
- - Timeline for potential integration?
- - What's needed from our side?
- - How can we help with implementation?
-
-4. **Standardization**
- - Should this be submitted to standards body?
- - Would Anthropic co-author specification?
- - How to ensure cross-platform adoption?
-
-## Current Status
-
-- ✅ **Protocol designed and documented**
-- ✅ **MCP server implemented** (mcp-repo-guardian)
-- ✅ **Proven in production** (nextgen-languages repo)
-- ⏳ **FUSE wrapper in development** (universal enforcement)
-- ⏳ **Formal specification being written**
-
-**Repositories:**
-- https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
-- https://github.com/hyperpolymath/mcp-repo-guardian
-
-## Metrics and Evidence
-
-### Before Protocol
-
-- **Duplicate files:** 6 SCM files in both root and `.machine_readable/`
-- **User frustration:** "wasting time and credit on every new start up"
-- **Context loss:** Complete re-explanation each session
-- **Violations:** Repeated mistakes despite instructions
-
-### After Protocol
-
-- **Duplicate files:** Zero (mechanically prevented)
-- **User satisfaction:** "this will make life a lot easier"
-- **Context loss:** Eliminated (manifest read every session)
-- **Violations:** Zero (enforced mechanically)
-
-## Conclusion
-
-The AI Gatekeeper Protocol solves a real, painful problem for users working with AI agents across sessions and platforms. By mechanically enforcing repository invariants through manifests and attestation, we eliminate context loss and give users confidence their architecture will be respected.
-
-We believe Anthropic is uniquely positioned to lead this effort by:
-1. Integrating native manifest support in Claude
-2. Extending MCP protocol with manifest awareness
-3. Setting industry standard for AI-repository interaction
-
-This benefits everyone:
-- **Users** get reliable, respectful AI assistance
-- **Anthropic** differentiates Claude with unique capability
-- **Industry** establishes best practice pattern
-
-We'd welcome the opportunity to discuss this further and collaborate on implementation.
-
----
-
-**Contact:**
-- GitHub: https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
-- Issues: https://github.com/hyperpolymath/0-ai-gatekeeper-protocol/issues
-- Email: j.d.a.jewell@open.ac.uk
-
-**References:**
-- [RATIONALE.md](RATIONALE.md) - Detailed problem/solution explanation
-- [ARCHITECTURE.md](ARCHITECTURE.md) - Technical design (to be completed)
-- [AI-MANIFEST-SPEC.adoc](AI-MANIFEST-SPEC.adoc) - Formal specification (to be completed)
diff --git a/0-ai-gatekeeper-protocol/docs/RATIONALE.adoc b/0-ai-gatekeeper-protocol/docs/RATIONALE.adoc
new file mode 100644
index 00000000..cc59902f
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/docs/RATIONALE.adoc
@@ -0,0 +1,279 @@
+== AI Gatekeeper Protocol - Rationale
+
+*SPDX-License-Identifier: CC-BY-SA-4.0*
+
+=== The Problem
+
+==== Context Loss Across Sessions
+
+AI agents (Claude, Gemini, OpenAI, etc.) lose context when: - Sessions
+crash or timeout - Users switch between different AI platforms - Long
+time passes between work sessions - Context windows get compacted
+
+This leads to: - *Repeated explanations* - "`For the 10th time, SCM
+files go in .machine_readable/`" - *Duplicate files* - Agent creates
+STATE.scm in root despite it existing in .machine_readable/ - *Invariant
+violations* - Agent doesn’t know about project-specific rules - *Wasted
+resources* - Time, computational credits, user frustration
+
+==== Platform Fragmentation
+
+Different AI platforms have different: - Context management strategies -
+File access patterns - Memory/continuation capabilities - Integration
+points
+
+A user working with: - Claude on Monday - Gemini on Tuesday - GitHub
+Copilot on Wednesday
+
+Results in each agent making the SAME mistakes the others did.
+
+==== Architectural Drift
+
+Without a gatekeeper: - Agents create files wherever they think is best
+- "`Helpful`" refactoring violates design decisions - Stale duplicates
+proliferate - No way to enforce invariants mechanically
+
+=== The Solution: AI Gatekeeper Protocol
+
+==== Single Source of Truth
+
+*Every repo has ONE manifest file* (AI.a2ml or 0-AI-MANIFEST.a2ml) that:
+- ✅ Declares canonical file locations - ✅ States critical invariants -
+✅ Explains repository structure - ✅ Provides session startup checklist
+
+==== Platform-Agnostic Standard
+
+The manifest is: - *Plain text* - Any AI can read it - *Structured* -
+Consistent format across repos - *Self-documenting* - Explains itself -
+*Universal* - Not tied to Claude, Gemini, or any specific platform
+
+==== Mechanical Enforcement
+
+For platforms that support it: - *MCP server* - Hard enforcement for
+Claude and MCP-compatible agents - *FUSE wrapper* - OS-level enforcement
+for ANY tool - *CI/CD validation* - GitHub Actions catch violations -
+*Bot fleet integration* - Automated bots respect protocol
+
+==== Attestation Pattern
+
+Instead of hoping agents read documentation: 1. Agent MUST read manifest
+2. Agent MUST compute hash of manifest content 3. Agent MUST provide
+hash to prove they read it 4. Only then granted access to files
+
+This proves: - ✅ Agent actually read the manifest (not skimmed) - ✅
+Agent has correct version (hash changes if updated) - ✅ Session state
+is trackable
+
+=== Real-World Example
+
+==== Before Gatekeeper Protocol
+
+*Session 1 (Claude):*
+
+....
+User: "Check the project state"
+Claude: *creates STATE.scm in root*
+User: "No! SCM files go in .machine_readable/"
+Claude: "Sorry, let me fix that" *moves file*
+....
+
+*Session 2 (Gemini, next day):*
+
+....
+User: "Check the project state"
+Gemini: *creates STATE.scm in root*
+User: "NO! AGAIN?! How many times do I have to say this?!"
+Gemini: "Apologies, let me move it"
+....
+
+*Session 3 (Claude, after crash):*
+
+....
+User: "What's the current state?"
+Claude: *finds TWO STATE.scm files - root (stale) and .machine_readable/ (current)*
+Claude: "There seem to be inconsistencies..."
+User: *loses mind*
+....
+
+==== After Gatekeeper Protocol
+
+*Session 1 (Claude with MCP):*
+
+....
+Claude: *attempts to read file*
+MCP Guardian: "⚠️ ACCESS DENIED - Must acknowledge manifest first"
+Claude: *reads 0-AI-MANIFEST.a2ml*
+Claude: *calls acknowledge_manifest with hash*
+MCP Guardian: "✅ Session granted - SCM files in .machine_readable/ only"
+Claude: *reads .machine_readable/STATE.scm correctly*
+....
+
+*Session 2 (Gemini, next day):*
+
+....
+Gemini: *reads 0-AI-MANIFEST.a2ml (first file alphabetically)*
+Gemini: "I see. SCM files must be in .machine_readable/ directory only."
+User: "Yes! Thank you for reading that!"
+Gemini: *works correctly*
+....
+
+*Session 3 (Claude, after crash):*
+
+....
+Claude: *reads 0-AI-MANIFEST.a2ml*
+Claude: "SCM files located in .machine_readable/, checking STATE.scm there"
+User: "Perfect, exactly right"
+....
+
+=== Benefits
+
+==== For Users
+
+* ✅ No repeated explanations across sessions
+* ✅ No repeated explanations across AI platforms
+* ✅ Architectural decisions preserved mechanically
+* ✅ Confidence that agents won’t break things
+* ✅ Less frustration, more productivity
+
+==== For AI Agents
+
+* ✅ Clear, unambiguous instructions on repository structure
+* ✅ Context preserved across sessions
+* ✅ Reduced chance of making mistakes
+* ✅ Better collaboration across different AI platforms
+* ✅ Attestation proves understanding
+
+==== For Ecosystem
+
+* ✅ Standardized approach to AI-repository interaction
+* ✅ Interoperability across platforms
+* ✅ Foundation for advanced tooling (MCP servers, FUSE wrappers)
+* ✅ Scalable to thousands of repositories
+* ✅ Open source - anyone can adopt
+
+=== Design Principles
+
+==== 1. Fail-Safe Defaults
+
+If an agent doesn’t read the manifest: - MCP server blocks access (hard
+fail) - CI/CD catches violations (post-commit) - Alphabetical naming
+ensures visibility (0-AI-MANIFEST.a2ml sorts first)
+
+==== 2. Defense in Depth
+
+Multiple enforcement layers: - *Prevention* - MCP server blocks before
+mistake - *Detection* - CI/CD catches violations - *Correction* - Bot
+fleet fixes automatically - *Documentation* - Clear error messages guide
+agents
+
+==== 3. Platform Agnostic
+
+Works with: - ✅ Claude (via MCP) - ✅ Gemini (via manifest reading) -
+✅ OpenAI (via manifest reading) - ✅ GitHub Copilot (via CI/CD
+validation) - ✅ Any future AI platform
+
+==== 4. Human-Readable
+
+Manifests are plain text, not: - Binary formats - Encrypted data -
+Platform-specific encodings - Obscure schemas
+
+Anyone (human or AI) can read and understand.
+
+==== 5. Incremental Adoption
+
+Can be adopted gradually: 1. Start with manifest files (no enforcement)
+2. Add CI/CD validation (post-commit detection) 3. Deploy MCP server
+(pre-operation blocking) 4. Add FUSE wrapper (universal enforcement)
+
+=== Comparison to Alternatives
+
+==== Alternative 1: Hope and Repetition
+
+*Current state for most users:* - Rely on AI reading previous context -
+Repeat instructions each session - Accept that mistakes will happen
+
+*Problems:* - Doesn’t scale across platforms - Frustrating for users -
+Wastes resources
+
+==== Alternative 2: Platform-Specific Solutions
+
+*Example:* Claude-only `+.claude/CLAUDE.md+` file
+
+*Problems:* - Doesn’t help Gemini, OpenAI, etc. - Fragmented approaches
+- User maintains multiple instruction sets
+
+==== Alternative 3: Passive Documentation
+
+*Example:* README.md with instructions
+
+*Problems:* - Agents often don’t read README first - Not enforced
+mechanically - No attestation proving understanding - Gets buried in
+large repos
+
+==== Our Approach: Active Gatekeeper
+
+* ✅ Universal (works across platforms)
+* ✅ Enforced (MCP/FUSE blocking)
+* ✅ Attested (hash proves reading)
+* ✅ Visible (0-prefix sorts first)
+* ✅ Standardized (consistent format)
+
+=== Success Criteria
+
+The protocol is successful if:
+
+[arabic]
+. *Reduction in duplicate files* - Metrics show fewer SCM files in wrong
+locations
+. *Reduced user frustration* - Less time spent re-explaining
+. *Cross-platform consistency* - Same behavior from Claude, Gemini, etc.
+. *Adoption* - Other projects/users adopt the protocol
+. *Bot integration* - Automated tools respect manifest invariants
+
+=== Future Directions
+
+==== 1. Formal Specification
+
+Create RFC-style spec (AI-MANIFEST-SPEC.adoc) defining: - Required
+sections - Syntax rules - Media type - Validation schema
+
+==== 2. Tooling Ecosystem
+
+* Manifest generators
+* Validation tools
+* Migration helpers
+* IDE plugins
+
+==== 3. Platform Integration
+
+Work with: - Anthropic (Claude) - Native MCP support - Google (Gemini) -
+Propose integration - OpenAI - API wrapper support - GitHub (Copilot) -
+Native support
+
+==== 4. Community Standards
+
+* Submit to standardization bodies
+* Create open governance
+* Gather feedback from users
+* Iterate on format
+
+=== Conclusion
+
+The AI Gatekeeper Protocol solves a real problem: - ✅ Context loss
+across sessions and platforms - ✅ Repeated mistakes by different AI
+agents - ✅ Architectural drift and invariant violations - ✅ User
+frustration and wasted resources
+
+Through a combination of: - 📄 Universal manifest files - 🔒 Mechanical
+enforcement - ✅ Attestation proving understanding - 🌍
+Platform-agnostic design
+
+The result: Users work with AI agents that respect their architecture,
+preserve their decisions, and don’t repeat the same mistakes session
+after session.
+
+'''''
+
+*Related Documents:* - ARCHITECTURE.md - Technical implementation -
+INTEGRATION.md - Platform-specific integration - AI-MANIFEST-SPEC.adoc -
+Formal specification
diff --git a/0-ai-gatekeeper-protocol/docs/RATIONALE.md b/0-ai-gatekeeper-protocol/docs/RATIONALE.md
deleted file mode 100644
index 13141f93..00000000
--- a/0-ai-gatekeeper-protocol/docs/RATIONALE.md
+++ /dev/null
@@ -1,309 +0,0 @@
-# AI Gatekeeper Protocol - Rationale
-
-**SPDX-License-Identifier: CC-BY-SA-4.0**
-
-## The Problem
-
-### Context Loss Across Sessions
-
-AI agents (Claude, Gemini, OpenAI, etc.) lose context when:
-- Sessions crash or timeout
-- Users switch between different AI platforms
-- Long time passes between work sessions
-- Context windows get compacted
-
-This leads to:
-- **Repeated explanations** - "For the 10th time, SCM files go in .machine_readable/"
-- **Duplicate files** - Agent creates STATE.scm in root despite it existing in .machine_readable/
-- **Invariant violations** - Agent doesn't know about project-specific rules
-- **Wasted resources** - Time, computational credits, user frustration
-
-### Platform Fragmentation
-
-Different AI platforms have different:
-- Context management strategies
-- File access patterns
-- Memory/continuation capabilities
-- Integration points
-
-A user working with:
-- Claude on Monday
-- Gemini on Tuesday
-- GitHub Copilot on Wednesday
-
-Results in each agent making the SAME mistakes the others did.
-
-### Architectural Drift
-
-Without a gatekeeper:
-- Agents create files wherever they think is best
-- "Helpful" refactoring violates design decisions
-- Stale duplicates proliferate
-- No way to enforce invariants mechanically
-
-## The Solution: AI Gatekeeper Protocol
-
-### Single Source of Truth
-
-**Every repo has ONE manifest file** (AI.a2ml or 0-AI-MANIFEST.a2ml) that:
-- ✅ Declares canonical file locations
-- ✅ States critical invariants
-- ✅ Explains repository structure
-- ✅ Provides session startup checklist
-
-### Platform-Agnostic Standard
-
-The manifest is:
-- **Plain text** - Any AI can read it
-- **Structured** - Consistent format across repos
-- **Self-documenting** - Explains itself
-- **Universal** - Not tied to Claude, Gemini, or any specific platform
-
-### Mechanical Enforcement
-
-For platforms that support it:
-- **MCP server** - Hard enforcement for Claude and MCP-compatible agents
-- **FUSE wrapper** - OS-level enforcement for ANY tool
-- **CI/CD validation** - GitHub Actions catch violations
-- **Bot fleet integration** - Automated bots respect protocol
-
-### Attestation Pattern
-
-Instead of hoping agents read documentation:
-1. Agent MUST read manifest
-2. Agent MUST compute hash of manifest content
-3. Agent MUST provide hash to prove they read it
-4. Only then granted access to files
-
-This proves:
-- ✅ Agent actually read the manifest (not skimmed)
-- ✅ Agent has correct version (hash changes if updated)
-- ✅ Session state is trackable
-
-## Real-World Example
-
-### Before Gatekeeper Protocol
-
-**Session 1 (Claude):**
-```
-User: "Check the project state"
-Claude: *creates STATE.scm in root*
-User: "No! SCM files go in .machine_readable/"
-Claude: "Sorry, let me fix that" *moves file*
-```
-
-**Session 2 (Gemini, next day):**
-```
-User: "Check the project state"
-Gemini: *creates STATE.scm in root*
-User: "NO! AGAIN?! How many times do I have to say this?!"
-Gemini: "Apologies, let me move it"
-```
-
-**Session 3 (Claude, after crash):**
-```
-User: "What's the current state?"
-Claude: *finds TWO STATE.scm files - root (stale) and .machine_readable/ (current)*
-Claude: "There seem to be inconsistencies..."
-User: *loses mind*
-```
-
-### After Gatekeeper Protocol
-
-**Session 1 (Claude with MCP):**
-```
-Claude: *attempts to read file*
-MCP Guardian: "⚠️ ACCESS DENIED - Must acknowledge manifest first"
-Claude: *reads 0-AI-MANIFEST.a2ml*
-Claude: *calls acknowledge_manifest with hash*
-MCP Guardian: "✅ Session granted - SCM files in .machine_readable/ only"
-Claude: *reads .machine_readable/STATE.scm correctly*
-```
-
-**Session 2 (Gemini, next day):**
-```
-Gemini: *reads 0-AI-MANIFEST.a2ml (first file alphabetically)*
-Gemini: "I see. SCM files must be in .machine_readable/ directory only."
-User: "Yes! Thank you for reading that!"
-Gemini: *works correctly*
-```
-
-**Session 3 (Claude, after crash):**
-```
-Claude: *reads 0-AI-MANIFEST.a2ml*
-Claude: "SCM files located in .machine_readable/, checking STATE.scm there"
-User: "Perfect, exactly right"
-```
-
-## Benefits
-
-### For Users
-- ✅ No repeated explanations across sessions
-- ✅ No repeated explanations across AI platforms
-- ✅ Architectural decisions preserved mechanically
-- ✅ Confidence that agents won't break things
-- ✅ Less frustration, more productivity
-
-### For AI Agents
-- ✅ Clear, unambiguous instructions on repository structure
-- ✅ Context preserved across sessions
-- ✅ Reduced chance of making mistakes
-- ✅ Better collaboration across different AI platforms
-- ✅ Attestation proves understanding
-
-### For Ecosystem
-- ✅ Standardized approach to AI-repository interaction
-- ✅ Interoperability across platforms
-- ✅ Foundation for advanced tooling (MCP servers, FUSE wrappers)
-- ✅ Scalable to thousands of repositories
-- ✅ Open source - anyone can adopt
-
-## Design Principles
-
-### 1. Fail-Safe Defaults
-
-If an agent doesn't read the manifest:
-- MCP server blocks access (hard fail)
-- CI/CD catches violations (post-commit)
-- Alphabetical naming ensures visibility (0-AI-MANIFEST.a2ml sorts first)
-
-### 2. Defense in Depth
-
-Multiple enforcement layers:
-- **Prevention** - MCP server blocks before mistake
-- **Detection** - CI/CD catches violations
-- **Correction** - Bot fleet fixes automatically
-- **Documentation** - Clear error messages guide agents
-
-### 3. Platform Agnostic
-
-Works with:
-- ✅ Claude (via MCP)
-- ✅ Gemini (via manifest reading)
-- ✅ OpenAI (via manifest reading)
-- ✅ GitHub Copilot (via CI/CD validation)
-- ✅ Any future AI platform
-
-### 4. Human-Readable
-
-Manifests are plain text, not:
-- Binary formats
-- Encrypted data
-- Platform-specific encodings
-- Obscure schemas
-
-Anyone (human or AI) can read and understand.
-
-### 5. Incremental Adoption
-
-Can be adopted gradually:
-1. Start with manifest files (no enforcement)
-2. Add CI/CD validation (post-commit detection)
-3. Deploy MCP server (pre-operation blocking)
-4. Add FUSE wrapper (universal enforcement)
-
-## Comparison to Alternatives
-
-### Alternative 1: Hope and Repetition
-
-**Current state for most users:**
-- Rely on AI reading previous context
-- Repeat instructions each session
-- Accept that mistakes will happen
-
-**Problems:**
-- Doesn't scale across platforms
-- Frustrating for users
-- Wastes resources
-
-### Alternative 2: Platform-Specific Solutions
-
-**Example:** Claude-only `.claude/CLAUDE.md` file
-
-**Problems:**
-- Doesn't help Gemini, OpenAI, etc.
-- Fragmented approaches
-- User maintains multiple instruction sets
-
-### Alternative 3: Passive Documentation
-
-**Example:** README.md with instructions
-
-**Problems:**
-- Agents often don't read README first
-- Not enforced mechanically
-- No attestation proving understanding
-- Gets buried in large repos
-
-### Our Approach: Active Gatekeeper
-
-- ✅ Universal (works across platforms)
-- ✅ Enforced (MCP/FUSE blocking)
-- ✅ Attested (hash proves reading)
-- ✅ Visible (0-prefix sorts first)
-- ✅ Standardized (consistent format)
-
-## Success Criteria
-
-The protocol is successful if:
-
-1. **Reduction in duplicate files** - Metrics show fewer SCM files in wrong locations
-2. **Reduced user frustration** - Less time spent re-explaining
-3. **Cross-platform consistency** - Same behavior from Claude, Gemini, etc.
-4. **Adoption** - Other projects/users adopt the protocol
-5. **Bot integration** - Automated tools respect manifest invariants
-
-## Future Directions
-
-### 1. Formal Specification
-
-Create RFC-style spec (AI-MANIFEST-SPEC.adoc) defining:
-- Required sections
-- Syntax rules
-- Media type
-- Validation schema
-
-### 2. Tooling Ecosystem
-
-- Manifest generators
-- Validation tools
-- Migration helpers
-- IDE plugins
-
-### 3. Platform Integration
-
-Work with:
-- Anthropic (Claude) - Native MCP support
-- Google (Gemini) - Propose integration
-- OpenAI - API wrapper support
-- GitHub (Copilot) - Native support
-
-### 4. Community Standards
-
-- Submit to standardization bodies
-- Create open governance
-- Gather feedback from users
-- Iterate on format
-
-## Conclusion
-
-The AI Gatekeeper Protocol solves a real problem:
-- ✅ Context loss across sessions and platforms
-- ✅ Repeated mistakes by different AI agents
-- ✅ Architectural drift and invariant violations
-- ✅ User frustration and wasted resources
-
-Through a combination of:
-- 📄 Universal manifest files
-- 🔒 Mechanical enforcement
-- ✅ Attestation proving understanding
-- 🌍 Platform-agnostic design
-
-The result: Users work with AI agents that respect their architecture, preserve their decisions, and don't repeat the same mistakes session after session.
-
----
-
-**Related Documents:**
-- [ARCHITECTURE.md](ARCHITECTURE.md) - Technical implementation
-- [INTEGRATION.md](INTEGRATION.md) - Platform-specific integration
-- [AI-MANIFEST-SPEC.adoc](AI-MANIFEST-SPEC.adoc) - Formal specification
diff --git a/0-ai-gatekeeper-protocol/mcp-repo-guardian/ABI-FFI-README.adoc b/0-ai-gatekeeper-protocol/mcp-repo-guardian/ABI-FFI-README.adoc
new file mode 100644
index 00000000..f883150d
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/mcp-repo-guardian/ABI-FFI-README.adoc
@@ -0,0 +1,409 @@
+\{\{~ Aditionally delete this line and fill out the template below ~}}
+
+== \{\{PROJECT}} ABI/FFI Documentation
+
+=== Overview
+
+This library follows the *Hyperpolymath RSR Standard* for ABI and FFI
+design:
+
+* *ABI (Application Binary Interface)* defined in *Idris2* with formal
+proofs
+* *FFI (Foreign Function Interface)* implemented in *Zig* for C
+compatibility
+* *Generated C headers* bridge Idris2 ABI to Zig FFI
+* *Any language* can call through standard C ABI
+
+=== Architecture
+
+....
+┌─────────────────────────────────────────────┐
+│ ABI Definitions (Idris2) │
+│ src/abi/ │
+│ - Types.idr (Type definitions) │
+│ - Layout.idr (Memory layout proofs) │
+│ - Foreign.idr (FFI declarations) │
+└─────────────────┬───────────────────────────┘
+ │
+ │ generates (at compile time)
+ ▼
+┌─────────────────────────────────────────────┐
+│ C Headers (auto-generated) │
+│ generated/abi/{{project}}.h │
+└─────────────────┬───────────────────────────┘
+ │
+ │ imported by
+ ▼
+┌─────────────────────────────────────────────┐
+│ FFI Implementation (Zig) │
+│ ffi/zig/src/main.zig │
+│ - Implements C-compatible functions │
+│ - Zero-cost abstractions │
+│ - Memory-safe by default │
+└─────────────────┬───────────────────────────┘
+ │
+ │ compiled to lib{{project}}.so/.a
+ ▼
+┌─────────────────────────────────────────────┐
+│ Any Language via C ABI │
+│ - Rust, ReScript, Julia, Python, etc. │
+└─────────────────────────────────────────────┘
+....
+
+=== Directory Structure
+
+....
+{{project}}/
+├── src/
+│ ├── abi/ # ABI definitions (Idris2)
+│ │ ├── Types.idr # Core type definitions with proofs
+│ │ ├── Layout.idr # Memory layout verification
+│ │ └── Foreign.idr # FFI function declarations
+│ └── lib/ # Core library (any language)
+│
+├── ffi/
+│ └── zig/ # FFI implementation (Zig)
+│ ├── build.zig # Build configuration
+│ ├── build.zig.zon # Dependencies
+│ ├── src/
+│ │ └── main.zig # C-compatible FFI implementation
+│ ├── test/
+│ │ └── integration_test.zig
+│ └── include/
+│ └── {{project}}.h # C header (optional, can be generated)
+│
+├── generated/ # Auto-generated files
+│ └── abi/
+│ └── {{project}}.h # Generated from Idris2 ABI
+│
+└── bindings/ # Language-specific wrappers (optional)
+ ├── rust/
+ ├── rescript/
+ └── julia/
+....
+
+=== Why Idris2 for ABI?
+
+==== 1. *Formal Verification*
+
+Idris2’s dependent types allow proving properties about the ABI at
+compile-time:
+
+[source,idris]
+----
+-- Prove struct size is correct
+public export
+exampleStructSize : HasSize ExampleStruct 16
+
+-- Prove field alignment is correct
+public export
+fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
+
+-- Prove ABI is platform-compatible
+public export
+abiCompatible : Compatible (ABI 1) (ABI 2)
+----
+
+==== 2. *Type Safety*
+
+Encode invariants that C/Zig cannot express:
+
+[source,idris]
+----
+-- Non-null pointer guaranteed at type level
+data Handle : Type where
+ MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
+
+-- Array with length proof
+data Buffer : (n : Nat) -> Type where
+ MkBuffer : Vect n Byte -> Buffer n
+----
+
+==== 3. *Platform Abstraction*
+
+Platform-specific types with compile-time selection:
+
+[source,idris]
+----
+CInt : Platform -> Type
+CInt Linux = Bits32
+CInt Windows = Bits32
+
+CSize : Platform -> Type
+CSize Linux = Bits64
+CSize Windows = Bits64
+----
+
+==== 4. *Safe Evolution*
+
+Prove that new ABI versions are backward-compatible:
+
+[source,idris]
+----
+-- Compiler enforces compatibility
+abiUpgrade : ABI 1 -> ABI 2
+abiUpgrade old = MkABI2 {
+ -- Must preserve all v1 fields
+ v1_compat = old,
+ -- Can add new fields
+ new_features = defaults
+}
+----
+
+=== Why Zig for FFI?
+
+==== 1. *C ABI Compatibility*
+
+Zig exports C-compatible functions naturally:
+
+[source,zig]
+----
+export fn library_function(param: i32) i32 {
+ return param * 2;
+}
+----
+
+==== 2. *Memory Safety*
+
+Compile-time safety without runtime overhead:
+
+[source,zig]
+----
+// Null check enforced at compile time
+const handle = init() orelse return error.InitFailed;
+defer free(handle);
+----
+
+==== 3. *Cross-Compilation*
+
+Built-in cross-compilation to any platform:
+
+[source,bash]
+----
+zig build -Dtarget=x86_64-linux
+zig build -Dtarget=aarch64-macos
+zig build -Dtarget=x86_64-windows
+----
+
+==== 4. *Zero Dependencies*
+
+No runtime, no libc required (unless explicitly needed):
+
+[source,zig]
+----
+// Minimal binary size
+pub const lib = @import("std");
+// Only includes what you use
+----
+
+=== Building
+
+==== Build FFI Library
+
+[source,bash]
+----
+cd ffi/zig
+zig build # Build debug
+zig build -Doptimize=ReleaseFast # Build optimized
+zig build test # Run tests
+----
+
+==== Generate C Header from Idris2 ABI
+
+[source,bash]
+----
+cd src/abi
+idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
+----
+
+==== Cross-Compile
+
+[source,bash]
+----
+cd ffi/zig
+
+# Linux x86_64
+zig build -Dtarget=x86_64-linux
+
+# macOS ARM64
+zig build -Dtarget=aarch64-macos
+
+# Windows x86_64
+zig build -Dtarget=x86_64-windows
+----
+
+=== Usage
+
+==== From C
+
+[source,c]
+----
+#include "{{project}}.h"
+
+int main() {
+ void* handle = {{project}}_init();
+ if (!handle) return 1;
+
+ int result = {{project}}_process(handle, 42);
+ if (result != 0) {
+ const char* err = {{project}}_last_error();
+ fprintf(stderr, "Error: %s\n", err);
+ }
+
+ {{project}}_free(handle);
+ return 0;
+}
+----
+
+Compile with:
+
+[source,bash]
+----
+gcc -o example example.c -l{{project}} -L./zig-out/lib
+----
+
+==== From Idris2
+
+[source,idris]
+----
+import {{PROJECT}}.ABI.Foreign
+
+main : IO ()
+main = do
+ Just handle <- init
+ | Nothing => putStrLn "Failed to initialize"
+
+ Right result <- process handle 42
+ | Left err => putStrLn $ "Error: " ++ errorDescription err
+
+ free handle
+ putStrLn "Success"
+----
+
+==== From Rust
+
+[source,rust]
+----
+#[link(name = "{{project}}")]
+extern "C" {
+ fn {{project}}_init() -> *mut std::ffi::c_void;
+ fn {{project}}_free(handle: *mut std::ffi::c_void);
+ fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
+}
+
+fn main() {
+ unsafe {
+ let handle = {{project}}_init();
+ assert!(!handle.is_null());
+
+ let result = {{project}}_process(handle, 42);
+ assert_eq!(result, 0);
+
+ {{project}}_free(handle);
+ }
+}
+----
+
+==== From Julia
+
+[source,julia]
+----
+const lib{{project}} = "lib{{project}}"
+
+function init()
+ handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
+ handle == C_NULL && error("Failed to initialize")
+ handle
+end
+
+function process(handle, input)
+ result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
+ result
+end
+
+function cleanup(handle)
+ ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
+end
+
+# Usage
+handle = init()
+try
+ result = process(handle, 42)
+ println("Result: $result")
+finally
+ cleanup(handle)
+end
+----
+
+=== Testing
+
+==== Unit Tests (Zig)
+
+[source,bash]
+----
+cd ffi/zig
+zig build test
+----
+
+==== Integration Tests
+
+[source,bash]
+----
+cd ffi/zig
+zig build test-integration
+----
+
+==== ABI Verification (Idris2)
+
+[source,idris]
+----
+-- Compile-time verification
+%runElab verifyABI
+
+-- Runtime checks
+main : IO ()
+main = do
+ verifyLayoutsCorrect
+ verifyAlignmentsCorrect
+ putStrLn "ABI verification passed"
+----
+
+=== Contributing
+
+When modifying the ABI/FFI:
+
+[arabic]
+. *Update ABI first* (`+src/abi/*.idr+`)
+* Modify type definitions
+* Update proofs
+* Ensure backward compatibility
+. *Generate C header*
++
+[source,bash]
+----
+idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
+----
+. *Update FFI implementation* (`+ffi/zig/src/main.zig+`)
+* Implement new functions
+* Match ABI types exactly
+. *Add tests*
+* Unit tests in Zig
+* Integration tests
+* ABI verification tests
+. *Update documentation*
+* Function signatures
+* Usage examples
+* Migration guide (if breaking changes)
+
+=== License
+
+PMPL-1.0-or-later
+
+=== See Also
+
+* https://idris2.readthedocs.io[Idris2 Documentation]
+* https://ziglang.org/documentation/master/[Zig Documentation]
+* https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium
+Standard Repositories]
+* link:../ffi-migration-guide.md[FFI Migration Guide]
+* link:../abi-migration-guide.md[ABI Migration Guide]
diff --git a/0-ai-gatekeeper-protocol/mcp-repo-guardian/ABI-FFI-README.md b/0-ai-gatekeeper-protocol/mcp-repo-guardian/ABI-FFI-README.md
deleted file mode 100644
index e6a32bbf..00000000
--- a/0-ai-gatekeeper-protocol/mcp-repo-guardian/ABI-FFI-README.md
+++ /dev/null
@@ -1,385 +0,0 @@
-{{~ Aditionally delete this line and fill out the template below ~}}
-
-# {{PROJECT}} ABI/FFI Documentation
-
-## Overview
-
-This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design:
-
-- **ABI (Application Binary Interface)** defined in **Idris2** with formal proofs
-- **FFI (Foreign Function Interface)** implemented in **Zig** for C compatibility
-- **Generated C headers** bridge Idris2 ABI to Zig FFI
-- **Any language** can call through standard C ABI
-
-## Architecture
-
-```
-┌─────────────────────────────────────────────┐
-│ ABI Definitions (Idris2) │
-│ src/abi/ │
-│ - Types.idr (Type definitions) │
-│ - Layout.idr (Memory layout proofs) │
-│ - Foreign.idr (FFI declarations) │
-└─────────────────┬───────────────────────────┘
- │
- │ generates (at compile time)
- ▼
-┌─────────────────────────────────────────────┐
-│ C Headers (auto-generated) │
-│ generated/abi/{{project}}.h │
-└─────────────────┬───────────────────────────┘
- │
- │ imported by
- ▼
-┌─────────────────────────────────────────────┐
-│ FFI Implementation (Zig) │
-│ ffi/zig/src/main.zig │
-│ - Implements C-compatible functions │
-│ - Zero-cost abstractions │
-│ - Memory-safe by default │
-└─────────────────┬───────────────────────────┘
- │
- │ compiled to lib{{project}}.so/.a
- ▼
-┌─────────────────────────────────────────────┐
-│ Any Language via C ABI │
-│ - Rust, ReScript, Julia, Python, etc. │
-└─────────────────────────────────────────────┘
-```
-
-## Directory Structure
-
-```
-{{project}}/
-├── src/
-│ ├── abi/ # ABI definitions (Idris2)
-│ │ ├── Types.idr # Core type definitions with proofs
-│ │ ├── Layout.idr # Memory layout verification
-│ │ └── Foreign.idr # FFI function declarations
-│ └── lib/ # Core library (any language)
-│
-├── ffi/
-│ └── zig/ # FFI implementation (Zig)
-│ ├── build.zig # Build configuration
-│ ├── build.zig.zon # Dependencies
-│ ├── src/
-│ │ └── main.zig # C-compatible FFI implementation
-│ ├── test/
-│ │ └── integration_test.zig
-│ └── include/
-│ └── {{project}}.h # C header (optional, can be generated)
-│
-├── generated/ # Auto-generated files
-│ └── abi/
-│ └── {{project}}.h # Generated from Idris2 ABI
-│
-└── bindings/ # Language-specific wrappers (optional)
- ├── rust/
- ├── rescript/
- └── julia/
-```
-
-## Why Idris2 for ABI?
-
-### 1. **Formal Verification**
-
-Idris2's dependent types allow proving properties about the ABI at compile-time:
-
-```idris
--- Prove struct size is correct
-public export
-exampleStructSize : HasSize ExampleStruct 16
-
--- Prove field alignment is correct
-public export
-fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
-
--- Prove ABI is platform-compatible
-public export
-abiCompatible : Compatible (ABI 1) (ABI 2)
-```
-
-### 2. **Type Safety**
-
-Encode invariants that C/Zig cannot express:
-
-```idris
--- Non-null pointer guaranteed at type level
-data Handle : Type where
- MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
-
--- Array with length proof
-data Buffer : (n : Nat) -> Type where
- MkBuffer : Vect n Byte -> Buffer n
-```
-
-### 3. **Platform Abstraction**
-
-Platform-specific types with compile-time selection:
-
-```idris
-CInt : Platform -> Type
-CInt Linux = Bits32
-CInt Windows = Bits32
-
-CSize : Platform -> Type
-CSize Linux = Bits64
-CSize Windows = Bits64
-```
-
-### 4. **Safe Evolution**
-
-Prove that new ABI versions are backward-compatible:
-
-```idris
--- Compiler enforces compatibility
-abiUpgrade : ABI 1 -> ABI 2
-abiUpgrade old = MkABI2 {
- -- Must preserve all v1 fields
- v1_compat = old,
- -- Can add new fields
- new_features = defaults
-}
-```
-
-## Why Zig for FFI?
-
-### 1. **C ABI Compatibility**
-
-Zig exports C-compatible functions naturally:
-
-```zig
-export fn library_function(param: i32) i32 {
- return param * 2;
-}
-```
-
-### 2. **Memory Safety**
-
-Compile-time safety without runtime overhead:
-
-```zig
-// Null check enforced at compile time
-const handle = init() orelse return error.InitFailed;
-defer free(handle);
-```
-
-### 3. **Cross-Compilation**
-
-Built-in cross-compilation to any platform:
-
-```bash
-zig build -Dtarget=x86_64-linux
-zig build -Dtarget=aarch64-macos
-zig build -Dtarget=x86_64-windows
-```
-
-### 4. **Zero Dependencies**
-
-No runtime, no libc required (unless explicitly needed):
-
-```zig
-// Minimal binary size
-pub const lib = @import("std");
-// Only includes what you use
-```
-
-## Building
-
-### Build FFI Library
-
-```bash
-cd ffi/zig
-zig build # Build debug
-zig build -Doptimize=ReleaseFast # Build optimized
-zig build test # Run tests
-```
-
-### Generate C Header from Idris2 ABI
-
-```bash
-cd src/abi
-idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
-```
-
-### Cross-Compile
-
-```bash
-cd ffi/zig
-
-# Linux x86_64
-zig build -Dtarget=x86_64-linux
-
-# macOS ARM64
-zig build -Dtarget=aarch64-macos
-
-# Windows x86_64
-zig build -Dtarget=x86_64-windows
-```
-
-## Usage
-
-### From C
-
-```c
-#include "{{project}}.h"
-
-int main() {
- void* handle = {{project}}_init();
- if (!handle) return 1;
-
- int result = {{project}}_process(handle, 42);
- if (result != 0) {
- const char* err = {{project}}_last_error();
- fprintf(stderr, "Error: %s\n", err);
- }
-
- {{project}}_free(handle);
- return 0;
-}
-```
-
-Compile with:
-```bash
-gcc -o example example.c -l{{project}} -L./zig-out/lib
-```
-
-### From Idris2
-
-```idris
-import {{PROJECT}}.ABI.Foreign
-
-main : IO ()
-main = do
- Just handle <- init
- | Nothing => putStrLn "Failed to initialize"
-
- Right result <- process handle 42
- | Left err => putStrLn $ "Error: " ++ errorDescription err
-
- free handle
- putStrLn "Success"
-```
-
-### From Rust
-
-```rust
-#[link(name = "{{project}}")]
-extern "C" {
- fn {{project}}_init() -> *mut std::ffi::c_void;
- fn {{project}}_free(handle: *mut std::ffi::c_void);
- fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
-}
-
-fn main() {
- unsafe {
- let handle = {{project}}_init();
- assert!(!handle.is_null());
-
- let result = {{project}}_process(handle, 42);
- assert_eq!(result, 0);
-
- {{project}}_free(handle);
- }
-}
-```
-
-### From Julia
-
-```julia
-const lib{{project}} = "lib{{project}}"
-
-function init()
- handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
- handle == C_NULL && error("Failed to initialize")
- handle
-end
-
-function process(handle, input)
- result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
- result
-end
-
-function cleanup(handle)
- ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
-end
-
-# Usage
-handle = init()
-try
- result = process(handle, 42)
- println("Result: $result")
-finally
- cleanup(handle)
-end
-```
-
-## Testing
-
-### Unit Tests (Zig)
-
-```bash
-cd ffi/zig
-zig build test
-```
-
-### Integration Tests
-
-```bash
-cd ffi/zig
-zig build test-integration
-```
-
-### ABI Verification (Idris2)
-
-```idris
--- Compile-time verification
-%runElab verifyABI
-
--- Runtime checks
-main : IO ()
-main = do
- verifyLayoutsCorrect
- verifyAlignmentsCorrect
- putStrLn "ABI verification passed"
-```
-
-## Contributing
-
-When modifying the ABI/FFI:
-
-1. **Update ABI first** (`src/abi/*.idr`)
- - Modify type definitions
- - Update proofs
- - Ensure backward compatibility
-
-2. **Generate C header**
- ```bash
- idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
- ```
-
-3. **Update FFI implementation** (`ffi/zig/src/main.zig`)
- - Implement new functions
- - Match ABI types exactly
-
-4. **Add tests**
- - Unit tests in Zig
- - Integration tests
- - ABI verification tests
-
-5. **Update documentation**
- - Function signatures
- - Usage examples
- - Migration guide (if breaking changes)
-
-## License
-
-PMPL-1.0-or-later
-
-## See Also
-
-- [Idris2 Documentation](https://idris2.readthedocs.io)
-- [Zig Documentation](https://ziglang.org/documentation/master/)
-- [Rhodium Standard Repositories](https://github.com/hyperpolymath/rhodium-standard-repositories)
-- [FFI Migration Guide](../ffi-migration-guide.md)
-- [ABI Migration Guide](../abi-migration-guide.md)
diff --git a/0-ai-gatekeeper-protocol/mcp-repo-guardian/NPM-PUBLISHING.adoc b/0-ai-gatekeeper-protocol/mcp-repo-guardian/NPM-PUBLISHING.adoc
new file mode 100644
index 00000000..ec63487b
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/mcp-repo-guardian/NPM-PUBLISHING.adoc
@@ -0,0 +1,180 @@
+== NPM Publishing Guide
+
+*SPDX-License-Identifier: CC-BY-SA-4.0*
+
+This document describes how to publish
+`+@hyperpolymath/mcp-repo-guardian+` to npm.
+
+=== Prerequisites
+
+[arabic]
+. *npm account* - Create at https://www.npmjs.com/signup
+. *npm login* - Run `+npm login+` and authenticate
+. *Organization access* - Join `+@hyperpolymath+` organization on npm
+(or create it)
+
+=== Pre-Publication Checklist
+
+* [x] Package.json properly configured
+** [x] Name: `+@hyperpolymath/mcp-repo-guardian+`
+** [x] Version: `+0.1.0+`
+** [x] Author: Jonathan D.A. Jewell j.d.a.jewell@open.ac.uk
+** [x] License: PMPL-1.0-or-later
+** [x] Repository, bugs, homepage URLs
+** [x] Keywords for discoverability
+* [x] .npmignore configured (excludes source, dev files)
+* [x] TypeScript build working (`+npm run build+`)
+* [x] README with installation instructions
+* [x] LICENSE file present
+* [x] All changes committed and pushed to GitHub
+
+=== Publishing Commands
+
+==== First-Time Publication
+
+[source,bash]
+----
+cd ~/Documents/hyperpolymath-repos/mcp-repo-guardian
+
+# Ensure you're logged in
+npm login
+
+# Verify package contents (dry run)
+npm pack --dry-run
+
+# Publish as public package
+npm publish --access public
+----
+
+==== Subsequent Releases
+
+[source,bash]
+----
+# Update version (choose one)
+npm version patch # 0.1.0 → 0.1.1
+npm version minor # 0.1.0 → 0.2.0
+npm version major # 0.1.0 → 1.0.0
+
+# Push version tag
+git push && git push --tags
+
+# Publish
+npm publish --access public
+----
+
+=== Post-Publication
+
+[arabic]
+. Verify package on npm:
+https://www.npmjs.com/package/@hyperpolymath/mcp-repo-guardian
+. Test installation: `+npm install -g @hyperpolymath/mcp-repo-guardian+`
+. Test execution: `+mcp-repo-guardian --help+` (should work globally)
+. Update documentation repos with npm availability
+
+=== Package Structure
+
+What gets published (via .npmignore):
+
+....
+@hyperpolymath/mcp-repo-guardian/
+├── dist/ # Compiled JavaScript + type definitions
+│ ├── index.js
+│ ├── index.d.ts
+│ ├── manifest.js
+│ ├── manifest.d.ts
+│ ├── session.js
+│ ├── session.d.ts
+│ ├── guards.js
+│ ├── guards.d.ts
+│ ├── types.js
+│ └── types.d.ts
+├── README.md # Installation and usage
+├── LICENSE # PMPL-1.0-or-later full text
+└── package.json # Metadata
+....
+
+What gets excluded (via .npmignore):
+
+* Source files (src/)
+* TypeScript config (tsconfig.json)
+* Development files (.github/, .editorconfig, etc.)
+* Documentation (docs/, examples/, contractiles/, etc.)
+* Repository management (.bot_directives/, .machines_readable/, SCM
+files)
+
+=== Installation Verification
+
+After publishing, test with:
+
+[source,bash]
+----
+# Global installation
+npm install -g @hyperpolymath/mcp-repo-guardian
+
+# Verify binary works
+which mcp-repo-guardian
+mcp-repo-guardian --version
+
+# Test in MCP configuration
+# Edit ~/.claude/settings.json and add:
+{
+ "mcpServers": {
+ "repo-guardian": {
+ "command": "mcp-repo-guardian",
+ "env": {
+ "REPOS_PATH": "/path/to/repos"
+ }
+ }
+ }
+}
+----
+
+=== Troubleshooting
+
+==== "`You do not have permission to publish`"
+
+You need to be added to the `+@hyperpolymath+` organization on npm:
+
+[source,bash]
+----
+# Ask organization owner to run:
+npm org:add hyperpolymath
+----
+
+Or publish under your own username first, then transfer to organization.
+
+==== "`Package name already exists`"
+
+If someone else registered `+@hyperpolymath/mcp-repo-guardian+`, choose
+alternative:
+
+* `+@hyperpolymath/repo-guardian-mcp+`
+* `+mcp-ai-gatekeeper+`
+* Contact npm support to claim abandoned package
+
+==== Build errors
+
+[source,bash]
+----
+# Clean and rebuild
+rm -rf dist/ node_modules/
+npm install
+npm run build
+----
+
+=== Version History
+
+* *0.1.0* (2026-02-07) - Initial release
+** MCP server with hard enforcement
+** Session management and attestation
+** 4 tools: get_manifest, acknowledge_manifest, read_file,
+list_directory
+
+=== Related
+
+* Main documentation:
+https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
+* GitHub repository: https://github.com/hyperpolymath/mcp-repo-guardian
+* npm package:
+https://www.npmjs.com/package/@hyperpolymath/mcp-repo-guardian (after
+publishing)
diff --git a/0-ai-gatekeeper-protocol/mcp-repo-guardian/NPM-PUBLISHING.md b/0-ai-gatekeeper-protocol/mcp-repo-guardian/NPM-PUBLISHING.md
deleted file mode 100644
index f760c2e1..00000000
--- a/0-ai-gatekeeper-protocol/mcp-repo-guardian/NPM-PUBLISHING.md
+++ /dev/null
@@ -1,164 +0,0 @@
-# NPM Publishing Guide
-
-**SPDX-License-Identifier: CC-BY-SA-4.0**
-
-This document describes how to publish `@hyperpolymath/mcp-repo-guardian` to npm.
-
-## Prerequisites
-
-1. **npm account** - Create at https://www.npmjs.com/signup
-2. **npm login** - Run `npm login` and authenticate
-3. **Organization access** - Join `@hyperpolymath` organization on npm (or create it)
-
-## Pre-Publication Checklist
-
-- [x] Package.json properly configured
- - [x] Name: `@hyperpolymath/mcp-repo-guardian`
- - [x] Version: `0.1.0`
- - [x] Author: Jonathan D.A. Jewell
- - [x] License: PMPL-1.0-or-later
- - [x] Repository, bugs, homepage URLs
- - [x] Keywords for discoverability
-- [x] .npmignore configured (excludes source, dev files)
-- [x] TypeScript build working (`npm run build`)
-- [x] README with installation instructions
-- [x] LICENSE file present
-- [x] All changes committed and pushed to GitHub
-
-## Publishing Commands
-
-### First-Time Publication
-
-```bash
-cd ~/Documents/hyperpolymath-repos/mcp-repo-guardian
-
-# Ensure you're logged in
-npm login
-
-# Verify package contents (dry run)
-npm pack --dry-run
-
-# Publish as public package
-npm publish --access public
-```
-
-### Subsequent Releases
-
-```bash
-# Update version (choose one)
-npm version patch # 0.1.0 → 0.1.1
-npm version minor # 0.1.0 → 0.2.0
-npm version major # 0.1.0 → 1.0.0
-
-# Push version tag
-git push && git push --tags
-
-# Publish
-npm publish --access public
-```
-
-## Post-Publication
-
-1. Verify package on npm: https://www.npmjs.com/package/@hyperpolymath/mcp-repo-guardian
-2. Test installation: `npm install -g @hyperpolymath/mcp-repo-guardian`
-3. Test execution: `mcp-repo-guardian --help` (should work globally)
-4. Update documentation repos with npm availability
-
-## Package Structure
-
-What gets published (via .npmignore):
-
-```
-@hyperpolymath/mcp-repo-guardian/
-├── dist/ # Compiled JavaScript + type definitions
-│ ├── index.js
-│ ├── index.d.ts
-│ ├── manifest.js
-│ ├── manifest.d.ts
-│ ├── session.js
-│ ├── session.d.ts
-│ ├── guards.js
-│ ├── guards.d.ts
-│ ├── types.js
-│ └── types.d.ts
-├── README.md # Installation and usage
-├── LICENSE # PMPL-1.0-or-later full text
-└── package.json # Metadata
-```
-
-What gets excluded (via .npmignore):
-
-- Source files (src/)
-- TypeScript config (tsconfig.json)
-- Development files (.github/, .editorconfig, etc.)
-- Documentation (docs/, examples/, contractiles/, etc.)
-- Repository management (.bot_directives/, .machines_readable/, SCM files)
-
-## Installation Verification
-
-After publishing, test with:
-
-```bash
-# Global installation
-npm install -g @hyperpolymath/mcp-repo-guardian
-
-# Verify binary works
-which mcp-repo-guardian
-mcp-repo-guardian --version
-
-# Test in MCP configuration
-# Edit ~/.claude/settings.json and add:
-{
- "mcpServers": {
- "repo-guardian": {
- "command": "mcp-repo-guardian",
- "env": {
- "REPOS_PATH": "/path/to/repos"
- }
- }
- }
-}
-```
-
-## Troubleshooting
-
-### "You do not have permission to publish"
-
-You need to be added to the `@hyperpolymath` organization on npm:
-
-```bash
-# Ask organization owner to run:
-npm org:add hyperpolymath
-```
-
-Or publish under your own username first, then transfer to organization.
-
-### "Package name already exists"
-
-If someone else registered `@hyperpolymath/mcp-repo-guardian`, choose alternative:
-
-- `@hyperpolymath/repo-guardian-mcp`
-- `mcp-ai-gatekeeper`
-- Contact npm support to claim abandoned package
-
-### Build errors
-
-```bash
-# Clean and rebuild
-rm -rf dist/ node_modules/
-npm install
-npm run build
-```
-
-## Version History
-
-- **0.1.0** (2026-02-07) - Initial release
- - MCP server with hard enforcement
- - Session management and attestation
- - 4 tools: get_manifest, acknowledge_manifest, read_file, list_directory
-
-## Related
-
-- Main documentation: https://github.com/hyperpolymath/0-ai-gatekeeper-protocol
-- GitHub repository: https://github.com/hyperpolymath/mcp-repo-guardian
-- npm package: https://www.npmjs.com/package/@hyperpolymath/mcp-repo-guardian (after publishing)
diff --git a/0-ai-gatekeeper-protocol/repo-guardian-fs/ABI-FFI-README.adoc b/0-ai-gatekeeper-protocol/repo-guardian-fs/ABI-FFI-README.adoc
new file mode 100644
index 00000000..f883150d
--- /dev/null
+++ b/0-ai-gatekeeper-protocol/repo-guardian-fs/ABI-FFI-README.adoc
@@ -0,0 +1,409 @@
+\{\{~ Aditionally delete this line and fill out the template below ~}}
+
+== \{\{PROJECT}} ABI/FFI Documentation
+
+=== Overview
+
+This library follows the *Hyperpolymath RSR Standard* for ABI and FFI
+design:
+
+* *ABI (Application Binary Interface)* defined in *Idris2* with formal
+proofs
+* *FFI (Foreign Function Interface)* implemented in *Zig* for C
+compatibility
+* *Generated C headers* bridge Idris2 ABI to Zig FFI
+* *Any language* can call through standard C ABI
+
+=== Architecture
+
+....
+┌─────────────────────────────────────────────┐
+│ ABI Definitions (Idris2) │
+│ src/abi/ │
+│ - Types.idr (Type definitions) │
+│ - Layout.idr (Memory layout proofs) │
+│ - Foreign.idr (FFI declarations) │
+└─────────────────┬───────────────────────────┘
+ │
+ │ generates (at compile time)
+ ▼
+┌─────────────────────────────────────────────┐
+│ C Headers (auto-generated) │
+│ generated/abi/{{project}}.h │
+└─────────────────┬───────────────────────────┘
+ │
+ │ imported by
+ ▼
+┌─────────────────────────────────────────────┐
+│ FFI Implementation (Zig) │
+│ ffi/zig/src/main.zig │
+│ - Implements C-compatible functions │
+│ - Zero-cost abstractions │
+│ - Memory-safe by default │
+└─────────────────┬───────────────────────────┘
+ │
+ │ compiled to lib{{project}}.so/.a
+ ▼
+┌─────────────────────────────────────────────┐
+│ Any Language via C ABI │
+│ - Rust, ReScript, Julia, Python, etc. │
+└─────────────────────────────────────────────┘
+....
+
+=== Directory Structure
+
+....
+{{project}}/
+├── src/
+│ ├── abi/ # ABI definitions (Idris2)
+│ │ ├── Types.idr # Core type definitions with proofs
+│ │ ├── Layout.idr # Memory layout verification
+│ │ └── Foreign.idr # FFI function declarations
+│ └── lib/ # Core library (any language)
+│
+├── ffi/
+│ └── zig/ # FFI implementation (Zig)
+│ ├── build.zig # Build configuration
+│ ├── build.zig.zon # Dependencies
+│ ├── src/
+│ │ └── main.zig # C-compatible FFI implementation
+│ ├── test/
+│ │ └── integration_test.zig
+│ └── include/
+│ └── {{project}}.h # C header (optional, can be generated)
+│
+├── generated/ # Auto-generated files
+│ └── abi/
+│ └── {{project}}.h # Generated from Idris2 ABI
+│
+└── bindings/ # Language-specific wrappers (optional)
+ ├── rust/
+ ├── rescript/
+ └── julia/
+....
+
+=== Why Idris2 for ABI?
+
+==== 1. *Formal Verification*
+
+Idris2’s dependent types allow proving properties about the ABI at
+compile-time:
+
+[source,idris]
+----
+-- Prove struct size is correct
+public export
+exampleStructSize : HasSize ExampleStruct 16
+
+-- Prove field alignment is correct
+public export
+fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
+
+-- Prove ABI is platform-compatible
+public export
+abiCompatible : Compatible (ABI 1) (ABI 2)
+----
+
+==== 2. *Type Safety*
+
+Encode invariants that C/Zig cannot express:
+
+[source,idris]
+----
+-- Non-null pointer guaranteed at type level
+data Handle : Type where
+ MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
+
+-- Array with length proof
+data Buffer : (n : Nat) -> Type where
+ MkBuffer : Vect n Byte -> Buffer n
+----
+
+==== 3. *Platform Abstraction*
+
+Platform-specific types with compile-time selection:
+
+[source,idris]
+----
+CInt : Platform -> Type
+CInt Linux = Bits32
+CInt Windows = Bits32
+
+CSize : Platform -> Type
+CSize Linux = Bits64
+CSize Windows = Bits64
+----
+
+==== 4. *Safe Evolution*
+
+Prove that new ABI versions are backward-compatible:
+
+[source,idris]
+----
+-- Compiler enforces compatibility
+abiUpgrade : ABI 1 -> ABI 2
+abiUpgrade old = MkABI2 {
+ -- Must preserve all v1 fields
+ v1_compat = old,
+ -- Can add new fields
+ new_features = defaults
+}
+----
+
+=== Why Zig for FFI?
+
+==== 1. *C ABI Compatibility*
+
+Zig exports C-compatible functions naturally:
+
+[source,zig]
+----
+export fn library_function(param: i32) i32 {
+ return param * 2;
+}
+----
+
+==== 2. *Memory Safety*
+
+Compile-time safety without runtime overhead:
+
+[source,zig]
+----
+// Null check enforced at compile time
+const handle = init() orelse return error.InitFailed;
+defer free(handle);
+----
+
+==== 3. *Cross-Compilation*
+
+Built-in cross-compilation to any platform:
+
+[source,bash]
+----
+zig build -Dtarget=x86_64-linux
+zig build -Dtarget=aarch64-macos
+zig build -Dtarget=x86_64-windows
+----
+
+==== 4. *Zero Dependencies*
+
+No runtime, no libc required (unless explicitly needed):
+
+[source,zig]
+----
+// Minimal binary size
+pub const lib = @import("std");
+// Only includes what you use
+----
+
+=== Building
+
+==== Build FFI Library
+
+[source,bash]
+----
+cd ffi/zig
+zig build # Build debug
+zig build -Doptimize=ReleaseFast # Build optimized
+zig build test # Run tests
+----
+
+==== Generate C Header from Idris2 ABI
+
+[source,bash]
+----
+cd src/abi
+idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
+----
+
+==== Cross-Compile
+
+[source,bash]
+----
+cd ffi/zig
+
+# Linux x86_64
+zig build -Dtarget=x86_64-linux
+
+# macOS ARM64
+zig build -Dtarget=aarch64-macos
+
+# Windows x86_64
+zig build -Dtarget=x86_64-windows
+----
+
+=== Usage
+
+==== From C
+
+[source,c]
+----
+#include "{{project}}.h"
+
+int main() {
+ void* handle = {{project}}_init();
+ if (!handle) return 1;
+
+ int result = {{project}}_process(handle, 42);
+ if (result != 0) {
+ const char* err = {{project}}_last_error();
+ fprintf(stderr, "Error: %s\n", err);
+ }
+
+ {{project}}_free(handle);
+ return 0;
+}
+----
+
+Compile with:
+
+[source,bash]
+----
+gcc -o example example.c -l{{project}} -L./zig-out/lib
+----
+
+==== From Idris2
+
+[source,idris]
+----
+import {{PROJECT}}.ABI.Foreign
+
+main : IO ()
+main = do
+ Just handle <- init
+ | Nothing => putStrLn "Failed to initialize"
+
+ Right result <- process handle 42
+ | Left err => putStrLn $ "Error: " ++ errorDescription err
+
+ free handle
+ putStrLn "Success"
+----
+
+==== From Rust
+
+[source,rust]
+----
+#[link(name = "{{project}}")]
+extern "C" {
+ fn {{project}}_init() -> *mut std::ffi::c_void;
+ fn {{project}}_free(handle: *mut std::ffi::c_void);
+ fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
+}
+
+fn main() {
+ unsafe {
+ let handle = {{project}}_init();
+ assert!(!handle.is_null());
+
+ let result = {{project}}_process(handle, 42);
+ assert_eq!(result, 0);
+
+ {{project}}_free(handle);
+ }
+}
+----
+
+==== From Julia
+
+[source,julia]
+----
+const lib{{project}} = "lib{{project}}"
+
+function init()
+ handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
+ handle == C_NULL && error("Failed to initialize")
+ handle
+end
+
+function process(handle, input)
+ result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
+ result
+end
+
+function cleanup(handle)
+ ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
+end
+
+# Usage
+handle = init()
+try
+ result = process(handle, 42)
+ println("Result: $result")
+finally
+ cleanup(handle)
+end
+----
+
+=== Testing
+
+==== Unit Tests (Zig)
+
+[source,bash]
+----
+cd ffi/zig
+zig build test
+----
+
+==== Integration Tests
+
+[source,bash]
+----
+cd ffi/zig
+zig build test-integration
+----
+
+==== ABI Verification (Idris2)
+
+[source,idris]
+----
+-- Compile-time verification
+%runElab verifyABI
+
+-- Runtime checks
+main : IO ()
+main = do
+ verifyLayoutsCorrect
+ verifyAlignmentsCorrect
+ putStrLn "ABI verification passed"
+----
+
+=== Contributing
+
+When modifying the ABI/FFI:
+
+[arabic]
+. *Update ABI first* (`+src/abi/*.idr+`)
+* Modify type definitions
+* Update proofs
+* Ensure backward compatibility
+. *Generate C header*
++
+[source,bash]
+----
+idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
+----
+. *Update FFI implementation* (`+ffi/zig/src/main.zig+`)
+* Implement new functions
+* Match ABI types exactly
+. *Add tests*
+* Unit tests in Zig
+* Integration tests
+* ABI verification tests
+. *Update documentation*
+* Function signatures
+* Usage examples
+* Migration guide (if breaking changes)
+
+=== License
+
+PMPL-1.0-or-later
+
+=== See Also
+
+* https://idris2.readthedocs.io[Idris2 Documentation]
+* https://ziglang.org/documentation/master/[Zig Documentation]
+* https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium
+Standard Repositories]
+* link:../ffi-migration-guide.md[FFI Migration Guide]
+* link:../abi-migration-guide.md[ABI Migration Guide]
diff --git a/0-ai-gatekeeper-protocol/repo-guardian-fs/ABI-FFI-README.md b/0-ai-gatekeeper-protocol/repo-guardian-fs/ABI-FFI-README.md
deleted file mode 100644
index e6a32bbf..00000000
--- a/0-ai-gatekeeper-protocol/repo-guardian-fs/ABI-FFI-README.md
+++ /dev/null
@@ -1,385 +0,0 @@
-{{~ Aditionally delete this line and fill out the template below ~}}
-
-# {{PROJECT}} ABI/FFI Documentation
-
-## Overview
-
-This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design:
-
-- **ABI (Application Binary Interface)** defined in **Idris2** with formal proofs
-- **FFI (Foreign Function Interface)** implemented in **Zig** for C compatibility
-- **Generated C headers** bridge Idris2 ABI to Zig FFI
-- **Any language** can call through standard C ABI
-
-## Architecture
-
-```
-┌─────────────────────────────────────────────┐
-│ ABI Definitions (Idris2) │
-│ src/abi/ │
-│ - Types.idr (Type definitions) │
-│ - Layout.idr (Memory layout proofs) │
-│ - Foreign.idr (FFI declarations) │
-└─────────────────┬───────────────────────────┘
- │
- │ generates (at compile time)
- ▼
-┌─────────────────────────────────────────────┐
-│ C Headers (auto-generated) │
-│ generated/abi/{{project}}.h │
-└─────────────────┬───────────────────────────┘
- │
- │ imported by
- ▼
-┌─────────────────────────────────────────────┐
-│ FFI Implementation (Zig) │
-│ ffi/zig/src/main.zig │
-│ - Implements C-compatible functions │
-│ - Zero-cost abstractions │
-│ - Memory-safe by default │
-└─────────────────┬───────────────────────────┘
- │
- │ compiled to lib{{project}}.so/.a
- ▼
-┌─────────────────────────────────────────────┐
-│ Any Language via C ABI │
-│ - Rust, ReScript, Julia, Python, etc. │
-└─────────────────────────────────────────────┘
-```
-
-## Directory Structure
-
-```
-{{project}}/
-├── src/
-│ ├── abi/ # ABI definitions (Idris2)
-│ │ ├── Types.idr # Core type definitions with proofs
-│ │ ├── Layout.idr # Memory layout verification
-│ │ └── Foreign.idr # FFI function declarations
-│ └── lib/ # Core library (any language)
-│
-├── ffi/
-│ └── zig/ # FFI implementation (Zig)
-│ ├── build.zig # Build configuration
-│ ├── build.zig.zon # Dependencies
-│ ├── src/
-│ │ └── main.zig # C-compatible FFI implementation
-│ ├── test/
-│ │ └── integration_test.zig
-│ └── include/
-│ └── {{project}}.h # C header (optional, can be generated)
-│
-├── generated/ # Auto-generated files
-│ └── abi/
-│ └── {{project}}.h # Generated from Idris2 ABI
-│
-└── bindings/ # Language-specific wrappers (optional)
- ├── rust/
- ├── rescript/
- └── julia/
-```
-
-## Why Idris2 for ABI?
-
-### 1. **Formal Verification**
-
-Idris2's dependent types allow proving properties about the ABI at compile-time:
-
-```idris
--- Prove struct size is correct
-public export
-exampleStructSize : HasSize ExampleStruct 16
-
--- Prove field alignment is correct
-public export
-fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
-
--- Prove ABI is platform-compatible
-public export
-abiCompatible : Compatible (ABI 1) (ABI 2)
-```
-
-### 2. **Type Safety**
-
-Encode invariants that C/Zig cannot express:
-
-```idris
--- Non-null pointer guaranteed at type level
-data Handle : Type where
- MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
-
--- Array with length proof
-data Buffer : (n : Nat) -> Type where
- MkBuffer : Vect n Byte -> Buffer n
-```
-
-### 3. **Platform Abstraction**
-
-Platform-specific types with compile-time selection:
-
-```idris
-CInt : Platform -> Type
-CInt Linux = Bits32
-CInt Windows = Bits32
-
-CSize : Platform -> Type
-CSize Linux = Bits64
-CSize Windows = Bits64
-```
-
-### 4. **Safe Evolution**
-
-Prove that new ABI versions are backward-compatible:
-
-```idris
--- Compiler enforces compatibility
-abiUpgrade : ABI 1 -> ABI 2
-abiUpgrade old = MkABI2 {
- -- Must preserve all v1 fields
- v1_compat = old,
- -- Can add new fields
- new_features = defaults
-}
-```
-
-## Why Zig for FFI?
-
-### 1. **C ABI Compatibility**
-
-Zig exports C-compatible functions naturally:
-
-```zig
-export fn library_function(param: i32) i32 {
- return param * 2;
-}
-```
-
-### 2. **Memory Safety**
-
-Compile-time safety without runtime overhead:
-
-```zig
-// Null check enforced at compile time
-const handle = init() orelse return error.InitFailed;
-defer free(handle);
-```
-
-### 3. **Cross-Compilation**
-
-Built-in cross-compilation to any platform:
-
-```bash
-zig build -Dtarget=x86_64-linux
-zig build -Dtarget=aarch64-macos
-zig build -Dtarget=x86_64-windows
-```
-
-### 4. **Zero Dependencies**
-
-No runtime, no libc required (unless explicitly needed):
-
-```zig
-// Minimal binary size
-pub const lib = @import("std");
-// Only includes what you use
-```
-
-## Building
-
-### Build FFI Library
-
-```bash
-cd ffi/zig
-zig build # Build debug
-zig build -Doptimize=ReleaseFast # Build optimized
-zig build test # Run tests
-```
-
-### Generate C Header from Idris2 ABI
-
-```bash
-cd src/abi
-idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
-```
-
-### Cross-Compile
-
-```bash
-cd ffi/zig
-
-# Linux x86_64
-zig build -Dtarget=x86_64-linux
-
-# macOS ARM64
-zig build -Dtarget=aarch64-macos
-
-# Windows x86_64
-zig build -Dtarget=x86_64-windows
-```
-
-## Usage
-
-### From C
-
-```c
-#include "{{project}}.h"
-
-int main() {
- void* handle = {{project}}_init();
- if (!handle) return 1;
-
- int result = {{project}}_process(handle, 42);
- if (result != 0) {
- const char* err = {{project}}_last_error();
- fprintf(stderr, "Error: %s\n", err);
- }
-
- {{project}}_free(handle);
- return 0;
-}
-```
-
-Compile with:
-```bash
-gcc -o example example.c -l{{project}} -L./zig-out/lib
-```
-
-### From Idris2
-
-```idris
-import {{PROJECT}}.ABI.Foreign
-
-main : IO ()
-main = do
- Just handle <- init
- | Nothing => putStrLn "Failed to initialize"
-
- Right result <- process handle 42
- | Left err => putStrLn $ "Error: " ++ errorDescription err
-
- free handle
- putStrLn "Success"
-```
-
-### From Rust
-
-```rust
-#[link(name = "{{project}}")]
-extern "C" {
- fn {{project}}_init() -> *mut std::ffi::c_void;
- fn {{project}}_free(handle: *mut std::ffi::c_void);
- fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
-}
-
-fn main() {
- unsafe {
- let handle = {{project}}_init();
- assert!(!handle.is_null());
-
- let result = {{project}}_process(handle, 42);
- assert_eq!(result, 0);
-
- {{project}}_free(handle);
- }
-}
-```
-
-### From Julia
-
-```julia
-const lib{{project}} = "lib{{project}}"
-
-function init()
- handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
- handle == C_NULL && error("Failed to initialize")
- handle
-end
-
-function process(handle, input)
- result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
- result
-end
-
-function cleanup(handle)
- ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
-end
-
-# Usage
-handle = init()
-try
- result = process(handle, 42)
- println("Result: $result")
-finally
- cleanup(handle)
-end
-```
-
-## Testing
-
-### Unit Tests (Zig)
-
-```bash
-cd ffi/zig
-zig build test
-```
-
-### Integration Tests
-
-```bash
-cd ffi/zig
-zig build test-integration
-```
-
-### ABI Verification (Idris2)
-
-```idris
--- Compile-time verification
-%runElab verifyABI
-
--- Runtime checks
-main : IO ()
-main = do
- verifyLayoutsCorrect
- verifyAlignmentsCorrect
- putStrLn "ABI verification passed"
-```
-
-## Contributing
-
-When modifying the ABI/FFI:
-
-1. **Update ABI first** (`src/abi/*.idr`)
- - Modify type definitions
- - Update proofs
- - Ensure backward compatibility
-
-2. **Generate C header**
- ```bash
- idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
- ```
-
-3. **Update FFI implementation** (`ffi/zig/src/main.zig`)
- - Implement new functions
- - Match ABI types exactly
-
-4. **Add tests**
- - Unit tests in Zig
- - Integration tests
- - ABI verification tests
-
-5. **Update documentation**
- - Function signatures
- - Usage examples
- - Migration guide (if breaking changes)
-
-## License
-
-PMPL-1.0-or-later
-
-## See Also
-
-- [Idris2 Documentation](https://idris2.readthedocs.io)
-- [Zig Documentation](https://ziglang.org/documentation/master/)
-- [Rhodium Standard Repositories](https://github.com/hyperpolymath/rhodium-standard-repositories)
-- [FFI Migration Guide](../ffi-migration-guide.md)
-- [ABI Migration Guide](../abi-migration-guide.md)
diff --git a/AGENTS.adoc b/AGENTS.adoc
new file mode 100644
index 00000000..6fb5d530
--- /dev/null
+++ b/AGENTS.adoc
@@ -0,0 +1,26 @@
+== Repository instructions
+
+This repository is the canonical general standards authority for the
+Hyperpolymath estate. Read `+0-AI-MANIFEST.a2ml+`, `+README.adoc+`,
+`+constitution/README.adoc+`, and `+.machine_readable/REGISTRY.a2ml+` in
+that order before changing normative material.
+
+Constitutional, normative, profile, local-policy, guidance, template,
+implementation, generated, and historical material are distinct
+authority classes. A proposal is not authorised policy until the
+applicable change procedure is completed. Evidence records what
+currently holds; it does not gain authority merely by being generated or
+machine-readable.
+
+Canonical sources include `+constitution/+`, domain standard sources,
+profile sources, and the registry source consumed by
+`+scripts/build-registry.sh+`. `+.machine_readable/REGISTRY.a2ml+` and
+`+TOPOLOGY.md+` are generated: never edit them directly. Preserve
+licences, coined names, MAA’s independent authority, and current
+language/build conventions. Do not add TypeScript or Deno, weaken
+validation, or describe draft/tested work as proven.
+
+Run the relevant `+just+`/`+must+` targets, registry and topology
+generators/checks, A2ML/Nickel/K9 validation where applicable,
+link/canonical-name checks, and `+git diff --check+`. Regenerate twice
+and require a clean second pass for generated outputs.
diff --git a/AGENTS.md b/AGENTS.md
deleted file mode 100644
index 9d98ca41..00000000
--- a/AGENTS.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Repository instructions
-
-This repository is the canonical general standards authority for the Hyperpolymath estate. Read `0-AI-MANIFEST.a2ml`, `README.adoc`, `constitution/README.adoc`, and `.machine_readable/REGISTRY.a2ml` in that order before changing normative material.
-
-Constitutional, normative, profile, local-policy, guidance, template, implementation, generated, and historical material are distinct authority classes. A proposal is not authorised policy until the applicable change procedure is completed. Evidence records what currently holds; it does not gain authority merely by being generated or machine-readable.
-
-Canonical sources include `constitution/`, domain standard sources, profile sources, and the registry source consumed by `scripts/build-registry.sh`. `.machine_readable/REGISTRY.a2ml` and `TOPOLOGY.md` are generated: never edit them directly. Preserve licences, coined names, MAA's independent authority, and current language/build conventions. Do not add TypeScript or Deno, weaken validation, or describe draft/tested work as proven.
-
-Run the relevant `just`/`must` targets, registry and topology generators/checks, A2ML/Nickel/K9 validation where applicable, link/canonical-name checks, and `git diff --check`. Regenerate twice and require a clean second pass for generated outputs.
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
new file mode 100644
index 00000000..b73e4eac
--- /dev/null
+++ b/CHANGELOG.adoc
@@ -0,0 +1,92 @@
+== Changelog
+
+All notable changes to `+standards+` will be documented in this file.
+
+This file is generated from conventional commits by the
+https://github.com/hyperpolymath/standards/blob/main/.github/workflows/changelog-reusable.yml[`+changelog-reusable.yml+`]
+workflow (`+hyperpolymath/standards#206+`). Adopt the workflow in this
+repo’s CI to keep this file in sync automatically — see
+https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml[`+templates/cliff.toml+`]
+for the canonical config.
+
+The format follows https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog]; this project aims to follow
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [Unreleased]
+
+==== Added
+
+* feat(governance): add scorecard-reusable.yml — close 5-candidate
+convergence set (#205)
+* feat(changelog): add git-cliff config + reusable workflow (#206)
+* feat(cartridges): canonicalise BoJ cartridge format in standards/
+(#200)
+* feat(governance): add secret-scanner-reusable.yml — propagate
+shell-secrets to 281 repos (#190)
+* feat(governance): add mirror-reusable.yml — consolidate 289-repo
+mirror.yml drift (#187)
+* feat(launcher-standard): reference impls for soft-attach +
+gui-dialog-chain (#179)
+* feat(launcher-standard): require –version mode with machine-greppable
+format (#173)
+* feat: consume .hypatia-baseline.json in governance gate (#166)
+
+==== Fixed
+
+* fix(governance): eradicate inline Python from governance-reusable.yml
+(#189)
+* fix(launcher-standard): resolve 3 cross-doc contradictions (#170)
+* fix(baseline): file_pattern glob matching + jq scoping bugs (#180)
+* fix(launcher-standard): move PID/log to XDG dirs (security:
+symlink-attack hardening) (#175)
+* fix(keepopen): honour NO_COLOR and auto-strip ANSI for non-TTY stdout
+(#176)
+* fix: checkout caller’s repo in governance-reusable workflow (#165)
+* fix: checkout caller’s repo in governance-reusable workflow
+* fix: use canonical STATE completion field
+* fix(security): enforce SSH-only git remotes estate-wide (standards#69)
+(#147)
+* fix(licence): #3 isolated — clear scaffold-placeholder leak
+(standards) (#139)
+
+==== Changed
+
+* refactor(governance): subsume language-policy.yml + add
+deno-ci-reusable (semantics-level fix for estate-template drift) (#168)
+
+==== Documentation
+
+* docs(policies): trusted-base reduction policy for proof debt (#203)
+* docs: launcher-standard review 2026-05-26 — prose + a2ml campaign
+manifest (#182)
+* docs(audits): admin-merge wrapper sweep 2026-05-26 (human + a2ml)
+(#202)
+* docs: exempt palimpsest plasma licensing repo
+* docs: add scaffold-stub guix.scm debt tracker (Refs standards#102)
+* docs(nix-retirement): closure report + machine-readable record (#102
+#103) (#149)
+* docs(licence-policy): restore A6+A7 dropped by #143/#144 merge race
+(#146)
+* docs(licence-policy): A8 — explicit owner-sanctioned scoped carve-outs
+(#144)
+* docs(licence-policy): A6 hard-exclusions + A7 multi-SPDX FP
+ignore-list (ledger #2/#3) (#143)
+* docs(licence-policy): A5 — scaffold-placeholder leak is NOT licence
+debt (#140)
+
+==== CI
+
+* ci: add launcher-standard prose↔a2ml lock-step gate (#172)
+* ci(tooling): promote standards R4 lint to strict (#159)
+* ci(spark): SPARK Theatre Gate reusable workflow (#135) (#141)
+
+=== Pre-history
+
+Prior commits to this file’s introduction are recorded in git history
+but not formally classified into Keep-a-Changelog sections. To backfill,
+run `+git cliff -o CHANGELOG.md+` locally using the canonical
+https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml[`+cliff.toml+`]
+— this is one-shot mechanical work.
+
+'''''
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index e514114c..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-# Changelog
-
-All notable changes to `standards` will be documented in this file.
-
-This file is generated from conventional commits by the
-[`changelog-reusable.yml`](https://github.com/hyperpolymath/standards/blob/main/.github/workflows/changelog-reusable.yml)
-workflow (`hyperpolymath/standards#206`). Adopt the workflow in this repo's CI to keep this file in sync automatically — see
-[`templates/cliff.toml`](https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml)
-for the canonical config.
-
-The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
-this project aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [Unreleased]
-
-### Added
-
-- feat(governance): add scorecard-reusable.yml — close 5-candidate convergence set (#205)
-- feat(changelog): add git-cliff config + reusable workflow (#206)
-- feat(cartridges): canonicalise BoJ cartridge format in standards/ (#200)
-- feat(governance): add secret-scanner-reusable.yml — propagate shell-secrets to 281 repos (#190)
-- feat(governance): add mirror-reusable.yml — consolidate 289-repo mirror.yml drift (#187)
-- feat(launcher-standard): reference impls for soft-attach + gui-dialog-chain (#179)
-- feat(launcher-standard): require --version mode with machine-greppable format (#173)
-- feat: consume .hypatia-baseline.json in governance gate (#166)
-
-### Fixed
-
-- fix(governance): eradicate inline Python from governance-reusable.yml (#189)
-- fix(launcher-standard): resolve 3 cross-doc contradictions (#170)
-- fix(baseline): file_pattern glob matching + jq scoping bugs (#180)
-- fix(launcher-standard): move PID/log to XDG dirs (security: symlink-attack hardening) (#175)
-- fix(keepopen): honour NO_COLOR and auto-strip ANSI for non-TTY stdout (#176)
-- fix: checkout caller's repo in governance-reusable workflow (#165)
-- fix: checkout caller's repo in governance-reusable workflow
-- fix: use canonical STATE completion field
-- fix(security): enforce SSH-only git remotes estate-wide (standards#69) (#147)
-- fix(licence): #3 isolated — clear scaffold-placeholder leak (standards) (#139)
-
-### Changed
-
-- refactor(governance): subsume language-policy.yml + add deno-ci-reusable (semantics-level fix for estate-template drift) (#168)
-
-### Documentation
-
-- docs(policies): trusted-base reduction policy for proof debt (#203)
-- docs: launcher-standard review 2026-05-26 — prose + a2ml campaign manifest (#182)
-- docs(audits): admin-merge wrapper sweep 2026-05-26 (human + a2ml) (#202)
-- docs: exempt palimpsest plasma licensing repo
-- docs: add scaffold-stub guix.scm debt tracker (Refs standards#102)
-- docs(nix-retirement): closure report + machine-readable record (#102 #103) (#149)
-- docs(licence-policy): restore A6+A7 dropped by #143/#144 merge race (#146)
-- docs(licence-policy): A8 — explicit owner-sanctioned scoped carve-outs (#144)
-- docs(licence-policy): A6 hard-exclusions + A7 multi-SPDX FP ignore-list (ledger #2/#3) (#143)
-- docs(licence-policy): A5 — scaffold-placeholder leak is NOT licence debt (#140)
-
-### CI
-
-- ci: add launcher-standard prose↔a2ml lock-step gate (#172)
-- ci(tooling): promote standards R4 lint to strict (#159)
-- ci(spark): SPARK Theatre Gate reusable workflow (#135) (#141)
-
-## Pre-history
-
-Prior commits to this file's introduction are recorded in git history but not formally classified into Keep-a-Changelog sections. To backfill, run `git cliff -o CHANGELOG.md` locally using the canonical [`cliff.toml`](https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml) — this is one-shot mechanical work.
-
----
-
-
diff --git a/CODE_OF_CONDUCT.adoc b/CODE_OF_CONDUCT.adoc
new file mode 100644
index 00000000..5961e219
--- /dev/null
+++ b/CODE_OF_CONDUCT.adoc
@@ -0,0 +1,339 @@
+== Code of Conduct
+
+=== Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in
+Standards a harassment-free experience for everyone, regardless of age,
+body size, visible or invisible disability, ethnicity, sex
+characteristics, gender identity and expression, level of experience,
+education, socio-economic status, nationality, personal appearance,
+race, caste, colour, religion, or sexual identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open,
+welcoming, diverse, inclusive, and healthy community.
+
+We recognise that a thriving open source community requires
+*psychological safety* — an environment where people can contribute, ask
+questions, make mistakes, and learn without fear of ridicule or
+retaliation.
+
+'''''
+
+=== Our Standards
+
+==== Expected Behaviour
+
+The following behaviours contribute to a positive environment:
+
+*Communication* - Using welcoming and inclusive language - Being
+respectful of differing viewpoints and experiences - Giving and
+gracefully accepting constructive feedback - Assuming good intent while
+addressing impact - Communicating clearly and patiently, especially with
+newcomers
+
+*Collaboration* - Focusing on what is best for the community - Showing
+empathy and kindness toward other community members - Being
+collaborative rather than competitive - Mentoring and supporting less
+experienced contributors - Celebrating others’ contributions and
+successes
+
+*Professionalism* - Accepting responsibility and apologising to those
+affected by our mistakes - Learning from the experience and avoiding
+repetition - Respecting others’ time and attention - Staying on topic in
+project spaces - Following project guidelines and conventions
+
+*Accessibility* - Using plain language and avoiding unnecessary jargon -
+Providing alt text for images and transcripts for audio/video - Being
+patient with those using assistive technologies - Accommodating
+different communication styles and needs - Recognising that not everyone
+communicates the same way
+
+==== Unacceptable Behaviour
+
+The following behaviours are considered harassment and are unacceptable:
+
+*Harassment* - The use of sexualised language or imagery, and sexual
+attention or advances of any kind - Trolling, insulting or derogatory
+comments, and personal or political attacks - Public or private
+harassment - Deliberate intimidation, stalking, or following (online or
+in-person) - Unwelcome physical contact or simulated physical contact
+(e.g., emoji) - Sustained disruption of talks, events, or online
+discussions
+
+*Discrimination* - Discriminatory jokes and language - Posting or
+threatening to post others’ personally identifying information
+("`doxing`") - Advocating for, or encouraging, any of the above
+behaviour - Microaggressions — subtle, often unintentional,
+discriminatory comments or actions
+
+*Professional Misconduct* - Publishing others’ private information
+without explicit permission - Misrepresenting affiliation or
+contributions - Plagiarism or claiming credit for others’ work -
+Retaliating against anyone who reports a Code of Conduct violation -
+Other conduct which could reasonably be considered inappropriate in a
+professional setting
+
+==== Grey Areas
+
+Some situations require judgement. When uncertain:
+
+* *Intent vs Impact*: Good intentions do not excuse harmful impact.
+Focus on making things right.
+* *Power Dynamics*: Those with more power (maintainers, employers,
+experienced contributors) must be especially mindful of their impact.
+* *Cultural Differences*: What’s acceptable varies by culture. When in
+doubt, err on the side of caution and ask.
+* *Humour*: Jokes at others’ expense are rarely funny to everyone. Punch
+up, not down.
+
+'''''
+
+=== Scope
+
+This Code of Conduct applies within all community spaces, including:
+
+*Online Spaces* - Repository discussions, issues, and pull/merge
+requests - Project chat channels (Matrix, Discord, Slack, IRC) - Mailing
+lists and forums - Social media when representing the project - Video
+calls and virtual meetings
+
+*In-Person Spaces* - Conferences, meetups, and events - Workshops and
+training sessions - Any gathering where you represent the project
+
+*Representation* This Code of Conduct also applies when an individual is
+officially representing the community in public spaces. Examples
+include:
+
+* Using an official project email address
+* Posting via an official social media account
+* Acting as an appointed representative at an event
+* Speaking on behalf of the project
+
+'''''
+
+=== Enforcement
+
+==== Reporting
+
+If you experience or witness unacceptable behaviour, or have any other
+concerns, please report it as soon as possible.
+
+*How to Report*
+
+[width="99%",cols="30%,33%,37%",options="header",]
+|===
+|Method |Details |Best For
+|*Email* |\{\{CONDUCT_EMAIL}} |Detailed reports, sensitive matters
+
+|*Private Message* |Contact any maintainer directly |Quick questions,
+minor issues
+
+|*Anonymous Form* |[Link to form if available] |When you need anonymity
+|===
+
+*What to Include*
+
+* Your contact information (unless anonymous)
+* Names/usernames of those involved
+* Description of what happened
+* When and where it occurred
+* Any witnesses
+* Any supporting evidence (screenshots, links)
+* How you would like us to respond (if you have a preference)
+
+*What Happens Next*
+
+[arabic]
+. You will receive acknowledgment within *\{\{RESPONSE_TIME}}*
+. The \{\{CONDUCT_TEAM}} will review the report
+. We may ask for additional information
+. We will determine appropriate action
+. We will inform you of the outcome (respecting others’ privacy)
+
+==== Confidentiality
+
+All reports will be handled with discretion:
+
+* Reporter identity is protected by default
+* Details are shared only with those who need to know
+* We will ask before naming you in any communication
+* Anonymous reports are accepted and investigated
+
+==== Conflicts of Interest
+
+If a \{\{CONDUCT_TEAM}} member is involved in an incident:
+
+* They will recuse themselves from the process
+* Another maintainer or external party will handle the report
+* We will disclose any potential conflicts
+
+'''''
+
+=== Enforcement Guidelines
+
+The \{\{CONDUCT_TEAM}} will follow these guidelines in determining
+consequences:
+
+==== 1. Correction
+
+*Community Impact*: Use of inappropriate language or other behaviour
+deemed unprofessional or unwelcome.
+
+*Consequence*: A private, written warning providing clarity around the
+nature of the violation and an explanation of why the behaviour was
+inappropriate. A public apology may be requested.
+
+*Duration*: Immediate
+
+==== 2. Warning
+
+*Community Impact*: A violation through a single incident or series of
+actions.
+
+*Consequence*: A warning with consequences for continued behaviour. No
+interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, for a specified period. This
+includes avoiding interactions in community spaces as well as external
+channels like social media. Violating these terms may lead to a
+temporary or permanent ban.
+
+*Duration*: 1-4 weeks
+
+==== 3. Temporary Ban
+
+*Community Impact*: A serious violation of community standards,
+including sustained inappropriate behaviour.
+
+*Consequence*: A temporary ban from any sort of interaction or public
+communication with the community for a specified period. No public or
+private interaction with the people involved, including unsolicited
+interaction with those enforcing the Code of Conduct, is allowed during
+this period. Violating these terms may lead to a permanent ban.
+
+*Duration*: 1-6 months
+
+==== 4. Permanent Ban
+
+*Community Impact*: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behaviour, harassment of an
+individual, or aggression toward or disparagement of classes of
+individuals.
+
+*Consequence*: A permanent ban from any sort of public interaction
+within the community.
+
+*Duration*: Permanent (with appeal rights after 12 months)
+
+==== Enforcement Across Perimeters
+
+For contributors with elevated access (Perimeter 2 or 1):
+
+[cols=",",options="header",]
+|===
+|Level |Additional Consequence
+|Correction |Noted in contributor record
+|Warning |Access privileges may be temporarily reduced
+|Temporary Ban |Access reduced to Perimeter 3 for ban duration
+|Permanent Ban |All access revoked
+|===
+
+'''''
+
+=== Appeals
+
+If you believe an enforcement decision was made in error:
+
+[arabic]
+. *Wait 7 days* after the decision (cooling-off period)
+. *Email* \{\{CONDUCT_EMAIL}} with subject line "`Appeal: [Original
+Report ID]`"
+. *Explain* why you believe the decision should be reconsidered
+. *Provide* any new information not previously available
+
+*Appeals Process*
+
+* Appeals are reviewed by a different \{\{CONDUCT_TEAM}} member than the
+original
+* You will receive a response within 14 days
+* The appeals decision is final
+* You may only appeal once per incident
+
+*Grounds for Appeal*
+
+* Procedural errors in the original investigation
+* New evidence not previously available
+* Disproportionate response to the violation
+* Misunderstanding of facts
+
+'''''
+
+=== Supporting Those Who Report
+
+We are committed to supporting those who report violations:
+
+*We Will* - Believe and take all reports seriously - Respect your
+privacy and confidentiality preferences - Keep you informed of progress
+(if you wish) - Take steps to protect you from retaliation - Provide
+resources if you need support
+
+*We Will Not* - Require you to confront the person directly - Dismiss
+reports without investigation - Reveal your identity without consent -
+Tolerate retaliation against reporters - Rush you to make decisions
+
+'''''
+
+=== Prevention
+
+Beyond enforcement, we actively work to prevent issues:
+
+*Onboarding* - All contributors are expected to read this Code of
+Conduct - Perimeter 2 applicants must confirm they’ve read and
+understood it - Maintainers receive additional training on enforcement
+
+*Culture* - We model the behaviour we expect - We intervene early when
+we see potential issues - We thank people for positive contributions -
+We create opportunities for diverse voices
+
+*Review* - This Code of Conduct is reviewed annually - Community
+feedback is welcomed - Changes are communicated clearly
+
+'''''
+
+=== Acknowledgments
+
+This Code of Conduct is adapted from:
+
+* https://www.contributor-covenant.org/[Contributor Covenant], version
+2.1
+* https://www.djangoproject.com/conduct/[Django Code of Conduct]
+* https://www.rust-lang.org/policies/code-of-conduct[Rust Code of
+Conduct]
+* https://www.python.org/psf/conduct/[Python Community Code of Conduct]
+
+We thank these communities for their leadership in creating welcoming
+spaces.
+
+'''''
+
+=== Questions?
+
+If you have questions about this Code of Conduct:
+
+* Open a
+https://github.com/hyperpolymath/standards/discussions[Discussion] (for
+general questions)
+* Email \{\{CONDUCT_EMAIL}} (for private questions)
+* Contact any maintainer directly
+
+'''''
+
+=== Summary
+
+*Be kind. Be respectful. Be collaborative.*
+
+We’re all here because we care about this project. Let’s make it a place
+where everyone can do their best work.
+
+'''''
+
+Last updated: 2026 · Based on Contributor Covenant 2.1
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index f9af5d2e..00000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,327 +0,0 @@
-# Code of Conduct
-
-
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in Standards a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
-
-We recognise that a thriving open source community requires **psychological safety** — an environment where people can contribute, ask questions, make mistakes, and learn without fear of ridicule or retaliation.
-
----
-
-## Our Standards
-
-### Expected Behaviour
-
-The following behaviours contribute to a positive environment:
-
-**Communication**
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Giving and gracefully accepting constructive feedback
-- Assuming good intent while addressing impact
-- Communicating clearly and patiently, especially with newcomers
-
-**Collaboration**
-- Focusing on what is best for the community
-- Showing empathy and kindness toward other community members
-- Being collaborative rather than competitive
-- Mentoring and supporting less experienced contributors
-- Celebrating others' contributions and successes
-
-**Professionalism**
-- Accepting responsibility and apologising to those affected by our mistakes
-- Learning from the experience and avoiding repetition
-- Respecting others' time and attention
-- Staying on topic in project spaces
-- Following project guidelines and conventions
-
-**Accessibility**
-- Using plain language and avoiding unnecessary jargon
-- Providing alt text for images and transcripts for audio/video
-- Being patient with those using assistive technologies
-- Accommodating different communication styles and needs
-- Recognising that not everyone communicates the same way
-
-### Unacceptable Behaviour
-
-The following behaviours are considered harassment and are unacceptable:
-
-**Harassment**
-- The use of sexualised language or imagery, and sexual attention or advances of any kind
-- Trolling, insulting or derogatory comments, and personal or political attacks
-- Public or private harassment
-- Deliberate intimidation, stalking, or following (online or in-person)
-- Unwelcome physical contact or simulated physical contact (e.g., emoji)
-- Sustained disruption of talks, events, or online discussions
-
-**Discrimination**
-- Discriminatory jokes and language
-- Posting or threatening to post others' personally identifying information ("doxing")
-- Advocating for, or encouraging, any of the above behaviour
-- Microaggressions — subtle, often unintentional, discriminatory comments or actions
-
-**Professional Misconduct**
-- Publishing others' private information without explicit permission
-- Misrepresenting affiliation or contributions
-- Plagiarism or claiming credit for others' work
-- Retaliating against anyone who reports a Code of Conduct violation
-- Other conduct which could reasonably be considered inappropriate in a professional setting
-
-### Grey Areas
-
-Some situations require judgement. When uncertain:
-
-- **Intent vs Impact**: Good intentions do not excuse harmful impact. Focus on making things right.
-- **Power Dynamics**: Those with more power (maintainers, employers, experienced contributors) must be especially mindful of their impact.
-- **Cultural Differences**: What's acceptable varies by culture. When in doubt, err on the side of caution and ask.
-- **Humour**: Jokes at others' expense are rarely funny to everyone. Punch up, not down.
-
----
-
-## Scope
-
-This Code of Conduct applies within all community spaces, including:
-
-**Online Spaces**
-- Repository discussions, issues, and pull/merge requests
-- Project chat channels (Matrix, Discord, Slack, IRC)
-- Mailing lists and forums
-- Social media when representing the project
-- Video calls and virtual meetings
-
-**In-Person Spaces**
-- Conferences, meetups, and events
-- Workshops and training sessions
-- Any gathering where you represent the project
-
-**Representation**
-This Code of Conduct also applies when an individual is officially representing the community in public spaces. Examples include:
-
-- Using an official project email address
-- Posting via an official social media account
-- Acting as an appointed representative at an event
-- Speaking on behalf of the project
-
----
-
-## Enforcement
-
-### Reporting
-
-If you experience or witness unacceptable behaviour, or have any other concerns, please report it as soon as possible.
-
-**How to Report**
-
-| Method | Details | Best For |
-|--------|---------|----------|
-| **Email** | {{CONDUCT_EMAIL}} | Detailed reports, sensitive matters |
-| **Private Message** | Contact any maintainer directly | Quick questions, minor issues |
-| **Anonymous Form** | [Link to form if available] | When you need anonymity |
-
-**What to Include**
-
-- Your contact information (unless anonymous)
-- Names/usernames of those involved
-- Description of what happened
-- When and where it occurred
-- Any witnesses
-- Any supporting evidence (screenshots, links)
-- How you would like us to respond (if you have a preference)
-
-**What Happens Next**
-
-1. You will receive acknowledgment within **{{RESPONSE_TIME}}**
-2. The {{CONDUCT_TEAM}} will review the report
-3. We may ask for additional information
-4. We will determine appropriate action
-5. We will inform you of the outcome (respecting others' privacy)
-
-### Confidentiality
-
-All reports will be handled with discretion:
-
-- Reporter identity is protected by default
-- Details are shared only with those who need to know
-- We will ask before naming you in any communication
-- Anonymous reports are accepted and investigated
-
-### Conflicts of Interest
-
-If a {{CONDUCT_TEAM}} member is involved in an incident:
-
-- They will recuse themselves from the process
-- Another maintainer or external party will handle the report
-- We will disclose any potential conflicts
-
----
-
-## Enforcement Guidelines
-
-The {{CONDUCT_TEAM}} will follow these guidelines in determining consequences:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome.
-
-**Consequence**: A private, written warning providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested.
-
-**Duration**: Immediate
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series of actions.
-
-**Consequence**: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
-
-**Duration**: 1-4 weeks
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including sustained inappropriate behaviour.
-
-**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
-
-**Duration**: 1-6 months
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within the community.
-
-**Duration**: Permanent (with appeal rights after 12 months)
-
-### Enforcement Across Perimeters
-
-For contributors with elevated access (Perimeter 2 or 1):
-
-| Level | Additional Consequence |
-|-------|----------------------|
-| Correction | Noted in contributor record |
-| Warning | Access privileges may be temporarily reduced |
-| Temporary Ban | Access reduced to Perimeter 3 for ban duration |
-| Permanent Ban | All access revoked |
-
----
-
-## Appeals
-
-If you believe an enforcement decision was made in error:
-
-1. **Wait 7 days** after the decision (cooling-off period)
-2. **Email** {{CONDUCT_EMAIL}} with subject line "Appeal: [Original Report ID]"
-3. **Explain** why you believe the decision should be reconsidered
-4. **Provide** any new information not previously available
-
-**Appeals Process**
-
-- Appeals are reviewed by a different {{CONDUCT_TEAM}} member than the original
-- You will receive a response within 14 days
-- The appeals decision is final
-- You may only appeal once per incident
-
-**Grounds for Appeal**
-
-- Procedural errors in the original investigation
-- New evidence not previously available
-- Disproportionate response to the violation
-- Misunderstanding of facts
-
----
-
-## Supporting Those Who Report
-
-We are committed to supporting those who report violations:
-
-**We Will**
-- Believe and take all reports seriously
-- Respect your privacy and confidentiality preferences
-- Keep you informed of progress (if you wish)
-- Take steps to protect you from retaliation
-- Provide resources if you need support
-
-**We Will Not**
-- Require you to confront the person directly
-- Dismiss reports without investigation
-- Reveal your identity without consent
-- Tolerate retaliation against reporters
-- Rush you to make decisions
-
----
-
-## Prevention
-
-Beyond enforcement, we actively work to prevent issues:
-
-**Onboarding**
-- All contributors are expected to read this Code of Conduct
-- Perimeter 2 applicants must confirm they've read and understood it
-- Maintainers receive additional training on enforcement
-
-**Culture**
-- We model the behaviour we expect
-- We intervene early when we see potential issues
-- We thank people for positive contributions
-- We create opportunities for diverse voices
-
-**Review**
-- This Code of Conduct is reviewed annually
-- Community feedback is welcomed
-- Changes are communicated clearly
-
----
-
-## Acknowledgments
-
-This Code of Conduct is adapted from:
-
-- [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1
-- [Django Code of Conduct](https://www.djangoproject.com/conduct/)
-- [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct)
-- [Python Community Code of Conduct](https://www.python.org/psf/conduct/)
-
-We thank these communities for their leadership in creating welcoming spaces.
-
----
-
-## Questions?
-
-If you have questions about this Code of Conduct:
-
-- Open a [Discussion](https://github.com/hyperpolymath/standards/discussions) (for general questions)
-- Email {{CONDUCT_EMAIL}} (for private questions)
-- Contact any maintainer directly
-
----
-
-## Summary
-
-**Be kind. Be respectful. Be collaborative.**
-
-We're all here because we care about this project. Let's make it a place where everyone can do their best work.
-
----
-
-Last updated: 2026 · Based on Contributor Covenant 2.1
diff --git a/COMPLIANCE-DASHBOARD.adoc b/COMPLIANCE-DASHBOARD.adoc
new file mode 100644
index 00000000..bd3ab516
--- /dev/null
+++ b/COMPLIANCE-DASHBOARD.adoc
@@ -0,0 +1,121 @@
+== Standards Compliance Dashboard (derived)
+
+____
+Generated from `+.machine_readable/scorecards/.scorecard.a2ml+`
+by `+scripts/build-scorecards.sh+`. One scorecard per LOCAL spec in
+`+.machine_readable/REGISTRY.a2ml+`. Do not edit by hand — edit the
+scorecards.
+
+*How to read this.* Each spec is audited as MUST / SHOULD / COULD
+requirements. *MUST-status* is the compliance verdict: ✅ met (every
+MUST passes or is manual-only) or ❌ gap (some MUST fails). *Systems
+coverage* is the share of requirements with a real mechanical check
+(`+system+` ≠ `+none+`) — the honest measure of _enforcement
+vs. assertion_. *Aspirational* requirements (intentionally-unreachable
+reach targets) are never counted as passing.
+____
+
+=== Per-spec scorecards
+
+[width="100%",cols="16%,12%,12%,12%,12%,12%,12%,12%",options="header",]
+|===
+|Spec |MUST status |MUST (pass/total) |SHOULD (pass/total) |COULD
+(pass/total) |Systems coverage |Grounded passes |Assessed
+|`+estate-constitution+` |❌ gap |2/4 |1/1 |0/0 |60% |3/3 |2026-07-11
+
+|`+a2ml+` |✅ met |4/5 |4/5 |0/3 |84% |8/8 |2026-07-03
+
+|`+k9-svc+` |❌ gap |3/6 |3/5 |2/3 |100% |8/8 |2026-07-03
+
+|`+contractiles+` |❌ gap |0/5 |0/3 |0/3 |54% |– |2026-07-03
+
+|`+meta-a2ml+` |❌ gap |1/5 |1/4 |1/3 |83% |3/3 |2026-07-03
+
+|`+state-a2ml+` |❌ gap |0/5 |1/4 |1/3 |50% |2/2 |2026-07-03
+
+|`+ecosystem-a2ml+` |❌ gap |2/5 |0/4 |0/3 |41% |2/2 |2026-07-03
+
+|`+agentic-a2ml+` |❌ gap |1/5 |0/4 |0/3 |100% |1/1 |2026-07-03
+
+|`+neurosym-a2ml+` |❌ gap |1/5 |0/4 |1/3 |83% |2/2 |2026-07-03
+
+|`+playbook-a2ml+` |❌ gap |1/5 |0/4 |0/3 |0% |1/1 |2026-07-03
+
+|`+anchor-a2ml+` |❌ gap |0/5 |0/5 |0/3 |15% |– |2026-07-03
+
+|`+0-ai-gatekeeper-protocol+` |❌ gap |3/5 |0/4 |0/2 |54% |3/3
+|2026-07-03
+
+|`+k9-coordination-protocol+` |❌ gap |3/5 |2/4 |0/3 |100% |5/5
+|2026-07-03
+
+|`+avow-protocol+` |❌ gap |0/5 |1/4 |0/3 |58% |1/1 |2026-07-03
+
+|`+axel-protocol+` |❌ gap |0/5 |4/5 |0/3 |92% |4/4 |2026-07-03
+
+|`+overlay-protocol+` |❌ gap |1/5 |0/4 |0/3 |50% |1/1 |2026-07-03
+
+|`+adoption-readiness-grades+` |❌ gap |1/5 |1/4 |0/4 |84% |2/2
+|2026-07-03
+
+|`+foundations-readiness-grades+` |❌ gap |2/5 |1/4 |0/2 |72% |3/3
+|2026-07-03
+
+|`+component-readiness-grades+` |❌ gap |2/5 |2/4 |0/3 |66% |4/4
+|2026-07-03
+
+|`+toolchain-readiness-grades+` |❌ gap |1/5 |2/4 |0/3 |83% |3/3
+|2026-07-03
+
+|`+rhodium-standard-repositories+` |❌ gap |1/3 |1/2 |0/1 |50% |2/2
+|2026-07-03
+
+|`+session-management-standards+` |❌ gap |1/5 |1/4 |0/3 |41% |2/2
+|2026-07-03
+
+|`+did-you-actually-do-that+` |✅ met |5/5 |2/3 |0/2 |90% |7/7
+|2026-07-03
+
+|`+ensaid-config+` |❌ gap |0/5 |0/3 |0/3 |90% |– |2026-07-03
+
+|`+accessibility+` |❌ gap |2/5 |0/5 |0/3 |100% |2/2 |2026-07-03
+
+|`+publication-pre-flight+` |❌ gap |0/5 |0/4 |0/2 |36% |– |2026-07-03
+
+|`+release-pre-flight+` |❌ gap |4/5 |3/4 |0/2 |72% |7/7 |2026-07-03
+
+|`+hypatia-rules+` |❌ gap |2/4 |1/3 |1/3 |100% |4/4 |2026-07-03
+
+|`+a2ml-templates+` |❌ gap |1/5 |1/3 |0/2 |20% |2/2 |2026-07-03
+|===
+
+=== Estate rollup
+
+* *Specs registered (local):* 29
+* *Specs with a scorecard:* 29 / 29
+* *MUST requirements:* 44 passing / 142 total (71 failing)
+* *Estate systems coverage:* 67% of 330 graded requirements have a
+mechanical check
+* *Grounded passes:* 82 / 82 (100%) pass rows carry an executable
+`+check+` run by `+--verify+`
+
+=== How this dashboard stays honest
+
+....
+scorecards/*.scorecard.a2ml ──► scripts/build-scorecards.sh ──► COMPLIANCE-DASHBOARD.md
+ (hand-authored) │
+ validated vs scorecard.schema.json ▼
+ just scorecards-check (CI)
+....
+
+* A `+pass+` requires cited `+evidence+`; the generator rejects a pass
+without it.
+* `+aspirational+` requirements never count as passing (no
+intuition-plucked Grade-A gate can inflate a score — standards#446).
+* `+system = "none"+` is legal but visible, and lowers systems coverage.
+* A pass MAY carry an executable `+check+`; `+--verify+` RUNS every such
+check and *fails loudly if a claimed pass does not hold right now*
+(DYADT applied to the scorecards themselves). Passes without a check are
+reported as self-asserted — visible debt, tracked by the Grounded
+column.
+* Regenerate after editing any scorecard: `+just scorecards+`.
diff --git a/COMPLIANCE-DASHBOARD.md b/COMPLIANCE-DASHBOARD.md
deleted file mode 100644
index e16ae361..00000000
--- a/COMPLIANCE-DASHBOARD.md
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-# Standards Compliance Dashboard (derived)
-
-> Generated from `.machine_readable/scorecards/.scorecard.a2ml` by
-> `scripts/build-scorecards.sh`. One scorecard per LOCAL spec in
-> `.machine_readable/REGISTRY.a2ml`. Do not edit by hand — edit the scorecards.
->
-> **How to read this.** Each spec is audited as MUST / SHOULD / COULD
-> requirements. **MUST-status** is the compliance verdict: ✅ met (every MUST
-> passes or is manual-only) or ❌ gap (some MUST fails). **Systems coverage**
-> is the share of requirements with a real mechanical check (`system` ≠ `none`)
-> — the honest measure of *enforcement vs. assertion*. **Aspirational**
-> requirements (intentionally-unreachable reach targets) are never counted as
-> passing.
-
-## Per-spec scorecards
-
-| Spec | MUST status | MUST (pass/total) | SHOULD (pass/total) | COULD (pass/total) | Systems coverage | Grounded passes | Assessed |
-|---|---|---|---|---|---|---|---|
-| `estate-constitution` | ❌ gap | 2/4 | 1/1 | 0/0 | 60% | 3/3 | 2026-07-11 |
-| `a2ml` | ✅ met | 4/5 | 4/5 | 0/3 | 84% | 8/8 | 2026-07-03 |
-| `k9-svc` | ❌ gap | 3/6 | 3/5 | 2/3 | 100% | 8/8 | 2026-07-03 |
-| `contractiles` | ❌ gap | 0/5 | 0/3 | 0/3 | 54% | – | 2026-07-03 |
-| `meta-a2ml` | ❌ gap | 1/5 | 1/4 | 1/3 | 83% | 3/3 | 2026-07-03 |
-| `state-a2ml` | ❌ gap | 0/5 | 1/4 | 1/3 | 50% | 2/2 | 2026-07-03 |
-| `ecosystem-a2ml` | ❌ gap | 2/5 | 0/4 | 0/3 | 41% | 2/2 | 2026-07-03 |
-| `agentic-a2ml` | ❌ gap | 1/5 | 0/4 | 0/3 | 100% | 1/1 | 2026-07-03 |
-| `neurosym-a2ml` | ❌ gap | 1/5 | 0/4 | 1/3 | 83% | 2/2 | 2026-07-03 |
-| `playbook-a2ml` | ❌ gap | 1/5 | 0/4 | 0/3 | 0% | 1/1 | 2026-07-03 |
-| `anchor-a2ml` | ❌ gap | 0/5 | 0/5 | 0/3 | 15% | – | 2026-07-03 |
-| `0-ai-gatekeeper-protocol` | ❌ gap | 3/5 | 0/4 | 0/2 | 54% | 3/3 | 2026-07-03 |
-| `k9-coordination-protocol` | ❌ gap | 3/5 | 2/4 | 0/3 | 100% | 5/5 | 2026-07-03 |
-| `avow-protocol` | ❌ gap | 0/5 | 1/4 | 0/3 | 58% | 1/1 | 2026-07-03 |
-| `axel-protocol` | ❌ gap | 0/5 | 4/5 | 0/3 | 92% | 4/4 | 2026-07-03 |
-| `overlay-protocol` | ❌ gap | 1/5 | 0/4 | 0/3 | 50% | 1/1 | 2026-07-03 |
-| `adoption-readiness-grades` | ❌ gap | 1/5 | 1/4 | 0/4 | 84% | 2/2 | 2026-07-03 |
-| `foundations-readiness-grades` | ❌ gap | 2/5 | 1/4 | 0/2 | 72% | 3/3 | 2026-07-03 |
-| `component-readiness-grades` | ❌ gap | 2/5 | 2/4 | 0/3 | 66% | 4/4 | 2026-07-03 |
-| `toolchain-readiness-grades` | ❌ gap | 1/5 | 2/4 | 0/3 | 83% | 3/3 | 2026-07-03 |
-| `rhodium-standard-repositories` | ❌ gap | 1/3 | 1/2 | 0/1 | 50% | 2/2 | 2026-07-03 |
-| `session-management-standards` | ❌ gap | 1/5 | 1/4 | 0/3 | 41% | 2/2 | 2026-07-03 |
-| `did-you-actually-do-that` | ✅ met | 5/5 | 2/3 | 0/2 | 90% | 7/7 | 2026-07-03 |
-| `ensaid-config` | ❌ gap | 0/5 | 0/3 | 0/3 | 90% | – | 2026-07-03 |
-| `accessibility` | ❌ gap | 2/5 | 0/5 | 0/3 | 100% | 2/2 | 2026-07-03 |
-| `publication-pre-flight` | ❌ gap | 0/5 | 0/4 | 0/2 | 36% | – | 2026-07-03 |
-| `release-pre-flight` | ❌ gap | 4/5 | 3/4 | 0/2 | 72% | 7/7 | 2026-07-03 |
-| `hypatia-rules` | ❌ gap | 2/4 | 1/3 | 1/3 | 100% | 4/4 | 2026-07-03 |
-| `a2ml-templates` | ❌ gap | 1/5 | 1/3 | 0/2 | 20% | 2/2 | 2026-07-03 |
-
-## Estate rollup
-
-- **Specs registered (local):** 29
-- **Specs with a scorecard:** 29 / 29
-- **MUST requirements:** 44 passing / 142 total (71 failing)
-- **Estate systems coverage:** 67% of 330 graded requirements have a mechanical check
-- **Grounded passes:** 82 / 82 (100%) pass rows carry an executable `check` run by `--verify`
-
-## How this dashboard stays honest
-
-```
-scorecards/*.scorecard.a2ml ──► scripts/build-scorecards.sh ──► COMPLIANCE-DASHBOARD.md
- (hand-authored) │
- validated vs scorecard.schema.json ▼
- just scorecards-check (CI)
-```
-
-- A `pass` requires cited `evidence`; the generator rejects a pass without it.
-- `aspirational` requirements never count as passing (no intuition-plucked
- Grade-A gate can inflate a score — standards#446).
-- `system = "none"` is legal but visible, and lowers systems coverage.
-- A pass MAY carry an executable `check`; `--verify` RUNS every such check and
- **fails loudly if a claimed pass does not hold right now** (DYADT applied to
- the scorecards themselves). Passes without a check are reported as
- self-asserted — visible debt, tracked by the Grounded column.
-- Regenerate after editing any scorecard: `just scorecards`.
diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc
new file mode 100644
index 00000000..70b97c78
--- /dev/null
+++ b/CONTRIBUTING.adoc
@@ -0,0 +1,131 @@
+== Clone the repository
+
+git clone https://github.com/hyperpolymath/standards.git cd standards
+
+== Using Nix (recommended for reproducibility)
+
+nix develop
+
+== Or using toolbox/distrobox
+
+toolbox create standards-dev toolbox enter standards-dev # Install
+dependencies manually
+
+== Verify setup
+
+just check # or: cargo check / mix compile / etc. just test # Run test
+suite
+
+....
+
+### Repository Structure
+....
+
+standards/ ├── src/ # Source code (Perimeter 1-2) ├── lib/ # Library
+code (Perimeter 1-2) ├── extensions/ # Extensions (Perimeter 2) ├──
+plugins/ # Plugins (Perimeter 2) ├── tools/ # Tooling (Perimeter 2) ├──
+docs/ # Documentation (Perimeter 3) │ ├── architecture/ # ADRs, specs
+(Perimeter 2) │ └── proposals/ # RFCs (Perimeter 3) ├── examples/ #
+Examples (Perimeter 3) ├── spec/ # Spec tests (Perimeter 3) ├── tests/ #
+Test suite (Perimeter 2-3) ├── .well-known/ # Protocol files (Perimeter
+1-3) ├── .github/ # GitHub config (Perimeter 1) │ ├── ISSUE_TEMPLATE/ │
+└── workflows/ ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├──
+CONTRIBUTING.md # This file ├── GOVERNANCE.md ├── LICENSE ├──
+MAINTAINERS.md ├── README.adoc ├── SECURITY.md ├── flake.nix # Nix flake
+(Perimeter 1) └── Justfile # Task runner (Perimeter 1)
+
+....
+
+---
+
+## How to Contribute
+
+### Reporting Bugs
+
+**Before reporting**:
+1. Search existing issues
+2. Check if it's already fixed in `main`
+3. Determine which perimeter the bug affects
+
+**When reporting**:
+
+Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
+
+- Clear, descriptive title
+- Environment details (OS, versions, toolchain)
+- Steps to reproduce
+- Expected vs actual behaviour
+- Logs, screenshots, or minimal reproduction
+
+### Suggesting Features
+
+**Before suggesting**:
+1. Check the [roadmap](ROADMAP.md) if available
+2. Search existing issues and discussions
+3. Consider which perimeter the feature belongs to
+
+**When suggesting**:
+
+Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
+
+- Problem statement (what pain point does this solve?)
+- Proposed solution
+- Alternatives considered
+- Which perimeter this affects
+
+### Your First Contribution
+
+Look for issues labelled:
+
+- [`good first issue`](https://github.com/hyperpolymath/standards/labels/good%20first%20issue) — Simple Perimeter 3 tasks
+- [`help wanted`](https://github.com/hyperpolymath/standards/labels/help%20wanted) — Community help needed
+- [`documentation`](https://github.com/hyperpolymath/standards/labels/documentation) — Docs improvements
+- [`perimeter-3`](https://github.com/hyperpolymath/standards/labels/perimeter-3) — Community sandbox scope
+
+---
+
+## Development Workflow
+
+### First: install the pre-commit guard
+
+```sh
+just hooks-install
+....
+
+This installs `+hooks/pre-commit+`, which catches the most common CI
+failure before it leaves your machine: *registry drift*. The spec
+registry (`+.machine_readable/REGISTRY.a2ml+`) records a content hash of
+every tracked file under a spec home, so _any_ edit under one (including
+`+.machine_readable/+` itself) must be followed by:
+
+[source,sh]
+----
+just registry # regenerates REGISTRY.a2ml + TOPOLOGY.md
+git add .machine_readable/REGISTRY.a2ml TOPOLOGY.md
+----
+
+If you skip this, the required "`Registry + topology in sync`" check
+fails — and because it is a required check, stale registry hashes on
+`+main+` block _every_ open PR, not just yours (see #381). The hook
+fails the commit with the exact fix commands whenever the registry is
+stale.
+
+=== Branch Naming
+
+....
+docs/short-description # Documentation (P3)
+test/what-added # Test additions (P3)
+feat/short-description # New features (P2)
+fix/issue-number-description # Bug fixes (P2)
+refactor/what-changed # Code improvements (P2)
+security/what-fixed # Security fixes (P1-2)
+....
+
+=== Commit Messages
+
+We follow https://www.conventionalcommits.org/[Conventional Commits]:
+``` ():
+
+{empty}[optional body]
+
+{empty}[optional footer]
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 54c28a67..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# Clone the repository
-git clone https://github.com/hyperpolymath/standards.git
-cd standards
-
-# Using Nix (recommended for reproducibility)
-nix develop
-
-# Or using toolbox/distrobox
-toolbox create standards-dev
-toolbox enter standards-dev
-# Install dependencies manually
-
-# Verify setup
-just check # or: cargo check / mix compile / etc.
-just test # Run test suite
-```
-
-### Repository Structure
-```
-standards/
-├── src/ # Source code (Perimeter 1-2)
-├── lib/ # Library code (Perimeter 1-2)
-├── extensions/ # Extensions (Perimeter 2)
-├── plugins/ # Plugins (Perimeter 2)
-├── tools/ # Tooling (Perimeter 2)
-├── docs/ # Documentation (Perimeter 3)
-│ ├── architecture/ # ADRs, specs (Perimeter 2)
-│ └── proposals/ # RFCs (Perimeter 3)
-├── examples/ # Examples (Perimeter 3)
-├── spec/ # Spec tests (Perimeter 3)
-├── tests/ # Test suite (Perimeter 2-3)
-├── .well-known/ # Protocol files (Perimeter 1-3)
-├── .github/ # GitHub config (Perimeter 1)
-│ ├── ISSUE_TEMPLATE/
-│ └── workflows/
-├── CHANGELOG.md
-├── CODE_OF_CONDUCT.md
-├── CONTRIBUTING.md # This file
-├── GOVERNANCE.md
-├── LICENSE
-├── MAINTAINERS.md
-├── README.adoc
-├── SECURITY.md
-├── flake.nix # Nix flake (Perimeter 1)
-└── Justfile # Task runner (Perimeter 1)
-```
-
----
-
-## How to Contribute
-
-### Reporting Bugs
-
-**Before reporting**:
-1. Search existing issues
-2. Check if it's already fixed in `main`
-3. Determine which perimeter the bug affects
-
-**When reporting**:
-
-Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
-
-- Clear, descriptive title
-- Environment details (OS, versions, toolchain)
-- Steps to reproduce
-- Expected vs actual behaviour
-- Logs, screenshots, or minimal reproduction
-
-### Suggesting Features
-
-**Before suggesting**:
-1. Check the [roadmap](ROADMAP.md) if available
-2. Search existing issues and discussions
-3. Consider which perimeter the feature belongs to
-
-**When suggesting**:
-
-Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
-
-- Problem statement (what pain point does this solve?)
-- Proposed solution
-- Alternatives considered
-- Which perimeter this affects
-
-### Your First Contribution
-
-Look for issues labelled:
-
-- [`good first issue`](https://github.com/hyperpolymath/standards/labels/good%20first%20issue) — Simple Perimeter 3 tasks
-- [`help wanted`](https://github.com/hyperpolymath/standards/labels/help%20wanted) — Community help needed
-- [`documentation`](https://github.com/hyperpolymath/standards/labels/documentation) — Docs improvements
-- [`perimeter-3`](https://github.com/hyperpolymath/standards/labels/perimeter-3) — Community sandbox scope
-
----
-
-## Development Workflow
-
-### First: install the pre-commit guard
-
-```sh
-just hooks-install
-```
-
-This installs `hooks/pre-commit`, which catches the most common CI failure
-before it leaves your machine: **registry drift**. The spec registry
-(`.machine_readable/REGISTRY.a2ml`) records a content hash of every tracked
-file under a spec home, so *any* edit under one (including
-`.machine_readable/` itself) must be followed by:
-
-```sh
-just registry # regenerates REGISTRY.a2ml + TOPOLOGY.md
-git add .machine_readable/REGISTRY.a2ml TOPOLOGY.md
-```
-
-If you skip this, the required "Registry + topology in sync" check fails —
-and because it is a required check, stale registry hashes on `main` block
-*every* open PR, not just yours (see #381). The hook fails the commit with
-the exact fix commands whenever the registry is stale.
-
-### Branch Naming
-```
-docs/short-description # Documentation (P3)
-test/what-added # Test additions (P3)
-feat/short-description # New features (P2)
-fix/issue-number-description # Bug fixes (P2)
-refactor/what-changed # Code improvements (P2)
-security/what-fixed # Security fixes (P1-2)
-```
-
-### Commit Messages
-
-We follow [Conventional Commits](https://www.conventionalcommits.org/):
-```
-():
-
-[optional body]
-
-[optional footer]
diff --git a/GOVERNANCE.adoc b/GOVERNANCE.adoc
new file mode 100644
index 00000000..9b836fb2
--- /dev/null
+++ b/GOVERNANCE.adoc
@@ -0,0 +1,60 @@
+== Governance
+
+=== Overview
+
+This project is governed by the following principles and structures to
+ensure transparent, inclusive, and effective decision-making.
+
+=== Roles and Responsibilities
+
+==== Maintainers
+
+Maintainers are responsible for: - Reviewing and merging pull requests -
+Managing releases and versioning - Ensuring code quality and standards -
+Triaging issues and bug reports - Community engagement and support
+
+==== Contributors
+
+Contributors are expected to: - Follow the code of conduct - Submit
+well-documented pull requests - Write tests for new functionality -
+Maintain existing tests - Update documentation as needed
+
+=== Decision Making
+
+==== Minor Changes
+
+* Can be made by any maintainer
+* Include bug fixes, documentation updates, dependency updates
+
+==== Major Changes
+
+* Require discussion in issues or pull requests
+* Include new features, architectural changes, API changes
+* Need approval from at least 2 maintainers
+
+==== Breaking Changes
+
+* Require RFC (Request for Comments) process
+* Need approval from majority of maintainers
+* Must include migration guide
+
+=== Code of Conduct
+
+All participants are expected to follow our Code of Conduct. Violations
+can be reported to the maintainers.
+
+=== Communication
+
+* *Issues*: For bug reports and feature requests
+* *Discussions*: For questions and general discussion
+* *Pull Requests*: For code contributions
+
+=== Licensing
+
+All contributions are made under the terms of the repository’s LICENSE
+file. By submitting a pull request, you agree to license your
+contributions accordingly.
+
+'''''
+
+_Last updated: 2026-07-18_
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
deleted file mode 100644
index e27364c7..00000000
--- a/GOVERNANCE.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# Governance
-
-## Overview
-
-This project is governed by the following principles and structures to ensure transparent, inclusive, and effective decision-making.
-
-## Roles and Responsibilities
-
-### Maintainers
-
-Maintainers are responsible for:
-- Reviewing and merging pull requests
-- Managing releases and versioning
-- Ensuring code quality and standards
-- Triaging issues and bug reports
-- Community engagement and support
-
-### Contributors
-
-Contributors are expected to:
-- Follow the code of conduct
-- Submit well-documented pull requests
-- Write tests for new functionality
-- Maintain existing tests
-- Update documentation as needed
-
-## Decision Making
-
-### Minor Changes
-- Can be made by any maintainer
-- Include bug fixes, documentation updates, dependency updates
-
-### Major Changes
-- Require discussion in issues or pull requests
-- Include new features, architectural changes, API changes
-- Need approval from at least 2 maintainers
-
-### Breaking Changes
-- Require RFC (Request for Comments) process
-- Need approval from majority of maintainers
-- Must include migration guide
-
-## Code of Conduct
-
-All participants are expected to follow our Code of Conduct. Violations can be reported to the maintainers.
-
-## Communication
-
-- **Issues**: For bug reports and feature requests
-- **Discussions**: For questions and general discussion
-- **Pull Requests**: For code contributions
-
-## Licensing
-
-All contributions are made under the terms of the repository's LICENSE file.
-By submitting a pull request, you agree to license your contributions accordingly.
-
----
-
-*Last updated: 2026-07-18*
diff --git a/PORT-REGISTRY.adoc b/PORT-REGISTRY.adoc
new file mode 100644
index 00000000..557cb46f
--- /dev/null
+++ b/PORT-REGISTRY.adoc
@@ -0,0 +1,14 @@
+== Port Registry — hyperpolymath ecosystem
+
+=== RULE: Every project MUST use a unique port. No two projects share a port.
+
+*NOTE:* Port assignments are being migrated to
+`+hyperpolymath/verisim-data+` per Issue #495. This file will be retired
+once the migration is complete. See verisim-data for the authoritative
+port registry.
+
+=== Authority
+
+For groove-speaking services, `+groove/registry/groove-registry.json+`
+(hyperpolymath/groove, ADR 0006, 2026-07-02) is the single source of
+truth for the GROOVE-DISCOVERY surface.
diff --git a/PORT-REGISTRY.md b/PORT-REGISTRY.md
deleted file mode 100644
index f4029f0b..00000000
--- a/PORT-REGISTRY.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Port Registry — hyperpolymath ecosystem
-
-## RULE: Every project MUST use a unique port. No two projects share a port.
-
-**NOTE:** Port assignments are being migrated to `hyperpolymath/verisim-data` per Issue #495.
-This file will be retired once the migration is complete. See verisim-data for
-the authoritative port registry.
-
-## Authority
-
-For groove-speaking services, `groove/registry/groove-registry.json`
-(hyperpolymath/groove, ADR 0006, 2026-07-02) is the single source of truth for
-the GROOVE-DISCOVERY surface.
diff --git a/PROOF-NEEDS.adoc b/PROOF-NEEDS.adoc
new file mode 100644
index 00000000..13733755
--- /dev/null
+++ b/PROOF-NEEDS.adoc
@@ -0,0 +1,74 @@
+== PROOF-NEEDS.md
+
+=== Current State
+
+* *LOC*: ~139,200 (monorepo with many sub-standards)
+* *Languages*: ReScript, Idris2, Agda, Rust, Haskell, Zig, Nickel
+* *Existing ABI proofs*: Multiple `+src/abi/*.idr+` across sub-projects
+(a2ml, axel-protocol, avow-protocol, lol, etc.)
+* *Existing verification*:
+`+lol/proofs/theories/information_theory.agda+` with A2ML Idris2 proofs
+in `+a2ml/src/A2ML/Proofs.idr+`
+* *Dangerous patterns*:
+** `+lol/proofs/theories/information_theory.agda+`: 6 `+postulate+`
+(information theory axioms)
+** `+axel-protocol/src/Tea.res+` and `+AxelApp.res+`: `+Obj.magic+` for
+DOM operations
+** `+lol/src/abi/Locale.idr+`: mentions avoiding believe_me (good
+practice)
+
+=== What Needs Proving
+
+==== LOL Information Theory Postulates (6)
+
+* `+information_theory.agda+` has 6 postulated axioms about entropy,
+mutual information, etc.
+* Audit: which are genuine mathematical axioms vs. provable lemmas?
+* Entropy non-negativity and chain rule should be constructively
+provable
+
+==== A2ML Parser Proofs (a2ml/src/A2ML/)
+
+* `+Proofs.idr+` exists — audit completeness
+* `+Parser.idr+`, `+TypedCore.idr+`, `+Surface.idr+` — prove
+parser/type-system correspondence
+* A2ML is a markup format standard — parser correctness ensures
+documents are faithfully processed
+
+==== Avow Protocol Consent Proofs
+
+* `+avow-protocol/avow-lib/src/abi/Consent.idr+`, `+Unsubscribe.idr+`
+* Consent management is GDPR-relevant — prove consent state transitions
+are correct
+* Prove: unsubscribe always terminates in a non-consented state
+
+==== Axel Protocol Obj.magic
+
+* `+axel-protocol/src/Tea.res+` — 8+ `+Obj.magic+` calls for DOM
+rendering
+* Lower priority than the protocol specification proofs
+
+==== Groove Protocol Reference
+
+* `+groove-protocol/reference/groove-proxy/GrooveProxy.idr+` — Idris2
+reference implementation
+* Prove: proxy faithfully implements the Groove protocol specification
+
+=== Recommended Prover
+
+* *Agda* for information theory (extend existing proofs, eliminate
+postulates)
+* *Idris2* for A2ML, Avow, Groove protocol correctness (already in use)
+
+=== Priority
+
+*MEDIUM* — Standards monorepo. The LOL information theory postulates and
+Avow consent proofs are the highest-value targets. A2ML proofs already
+exist and need completion audit.
+
+=== Template ABI Cleanup (2026-03-29)
+
+Template ABI removed – was creating false impression of formal
+verification. The removed files (Types.idr, Layout.idr, Foreign.idr)
+contained only RSR template scaffolding with unresolved
+\{\{PROJECT}}/\{\{AUTHOR}} placeholders and no domain-specific proofs.
diff --git a/PROOF-NEEDS.md b/PROOF-NEEDS.md
deleted file mode 100644
index 95909327..00000000
--- a/PROOF-NEEDS.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# PROOF-NEEDS.md
-
-
-## Current State
-
-- **LOC**: ~139,200 (monorepo with many sub-standards)
-- **Languages**: ReScript, Idris2, Agda, Rust, Haskell, Zig, Nickel
-- **Existing ABI proofs**: Multiple `src/abi/*.idr` across sub-projects (a2ml, axel-protocol, avow-protocol, lol, etc.)
-- **Existing verification**: `lol/proofs/theories/information_theory.agda` with A2ML Idris2 proofs in `a2ml/src/A2ML/Proofs.idr`
-- **Dangerous patterns**:
- - `lol/proofs/theories/information_theory.agda`: 6 `postulate` (information theory axioms)
- - `axel-protocol/src/Tea.res` and `AxelApp.res`: `Obj.magic` for DOM operations
- - `lol/src/abi/Locale.idr`: mentions avoiding believe_me (good practice)
-
-## What Needs Proving
-
-### LOL Information Theory Postulates (6)
-- `information_theory.agda` has 6 postulated axioms about entropy, mutual information, etc.
-- Audit: which are genuine mathematical axioms vs. provable lemmas?
-- Entropy non-negativity and chain rule should be constructively provable
-
-### A2ML Parser Proofs (a2ml/src/A2ML/)
-- `Proofs.idr` exists — audit completeness
-- `Parser.idr`, `TypedCore.idr`, `Surface.idr` — prove parser/type-system correspondence
-- A2ML is a markup format standard — parser correctness ensures documents are faithfully processed
-
-### Avow Protocol Consent Proofs
-- `avow-protocol/avow-lib/src/abi/Consent.idr`, `Unsubscribe.idr`
-- Consent management is GDPR-relevant — prove consent state transitions are correct
-- Prove: unsubscribe always terminates in a non-consented state
-
-### Axel Protocol Obj.magic
-- `axel-protocol/src/Tea.res` — 8+ `Obj.magic` calls for DOM rendering
-- Lower priority than the protocol specification proofs
-
-### Groove Protocol Reference
-- `groove-protocol/reference/groove-proxy/GrooveProxy.idr` — Idris2 reference implementation
-- Prove: proxy faithfully implements the Groove protocol specification
-
-## Recommended Prover
-
-- **Agda** for information theory (extend existing proofs, eliminate postulates)
-- **Idris2** for A2ML, Avow, Groove protocol correctness (already in use)
-
-## Priority
-
-**MEDIUM** — Standards monorepo. The LOL information theory postulates and Avow consent proofs are the highest-value targets. A2ML proofs already exist and need completion audit.
-
-## Template ABI Cleanup (2026-03-29)
-
-Template ABI removed -- was creating false impression of formal verification.
-The removed files (Types.idr, Layout.idr, Foreign.idr) contained only RSR template
-scaffolding with unresolved {{PROJECT}}/{{AUTHOR}} placeholders and no domain-specific proofs.
diff --git a/REORGANIZATION-PLAN.adoc b/REORGANIZATION-PLAN.adoc
new file mode 100644
index 00000000..7662e3b8
--- /dev/null
+++ b/REORGANIZATION-PLAN.adoc
@@ -0,0 +1,223 @@
+== Standards Repo Reorganization Plan
+
+____
+*⚠️ SUPERSEDED (2026-06-02) — historical record only.*
+
+This plan predates the monorepo consolidation and the verifiable
+registry. Its premises no longer match reality: it proposes moving
+content _out_ to separate repos (`+k9-svc-repo+`, `+rsr-engine-repo+`,
+`+a2ml-repo+`), but those satellites were *absorbed into this monorepo*
+on 2026-02-08, and several "`redundancies`" it lists (e.g. duplicate K9
+templates / RSR workflows) have since been resolved or re-scoped.
+
+*What replaced it:* - _Discoverability_ is now solved by the generated
+index
+link:.machine_readable/REGISTRY.a2ml[`+.machine_readable/REGISTRY.a2ml+`]
+(prose: link:REGISTRY.adoc[`+REGISTRY.adoc+`]) — every spec, its home,
+and a content-addressed `+source_hash+`. - _"`Where do I go for X`"_ is
+answered by the routing table at the top of
+link:README.adoc[`+README.adoc+`] and by
+link:0-AI-MANIFEST.a2ml[`+0-AI-MANIFEST.a2ml+`]. - _Drift_ (the thing
+this plan tried to prevent by hand) is now detected automatically:
+`+registry-verify.yml+` (CI) + Hypatia rule HYP-S006.
+
+Any still-relevant idea below should be re-filed as a registry entry or
+an issue. The text is retained unedited for provenance.
+____
+
+'''''
+
+=== Current Redundancies Identified
+
+==== 1. Template Duplication
+
+*Issue:* K9 templates appear in multiple locations: -
+`+.machine_readable/contractiles/k9/template-*.k9.ncl+` (3 copies) -
+`+0-ai-gatekeeper-protocol/contractiles/k9/template-*.k9.ncl+` (3 copies
+per subdir) -
+`+0-ai-gatekeeper-protocol/*/contractiles/k9/template-*.k9.ncl+`
+(multiple copies)
+
+*Solution:* Consolidate into single source in k9-svc monorepo
+
+==== 2. RSR Workflow Duplication
+
+*Issue:* `+rsr-antipattern.yml+` appears in: -
+`+.github/workflows/rsr-antipattern.yml+` -
+`+0-ai-gatekeeper-protocol/.github/workflows/rsr-antipattern.yml+` -
+`+0-ai-gatekeeper-protocol/mcp-repo-guardian/.github/workflows/rsr-antipattern.yml+`
+
+*Solution:* Move to RSR engine repo, reference via GitHub workflow reuse
+
+==== 3. Overlapping Specifications
+
+*Issue:* A2ML templates exist in both: - `+a2ml-templates/+` (6 files) -
+`+rhodium-standard-repositories/templates/+` (20+ files with some
+overlap)
+
+*Solution:* Separate concerns - A2ML templates in a2ml-repo, RSR
+compliance templates in rsr-engine-repo
+
+=== Better Locations Needed
+
+==== 1. Contractile Templates
+
+*Current:* Scattered across `+.machine_readable/contractiles/+` and
+protocol dirs *Better:* Centralize in k9-svc-repo with clear
+categorization:
+
+....
+k9-svc-repo/
+ templates/
+ contractiles/
+ dust/
+ intend/
+ lust/
+ must/
+ trust/
+ k9/
+ kennel/
+ yard/
+ hunt/
+....
+
+==== 2. RSR Badges
+
+*Current:* Buried in `+rhodium-standard-repositories/badges/+` *Better:*
+Promote to top-level in rsr-engine-repo:
+
+....
+rsr-engine-repo/
+ badges/
+ rsr-bronze.svg
+ rsr-silver.svg
+ rsr-gold.svg
+ rsr-rhodium.svg
+ README.md # Badge usage guidelines
+....
+
+==== 3. Machine Readable Specs
+
+*Current:* Mixed in `+.machine_readable/6a2/+` with other files
+*Better:* Organize by standard:
+
+....
+standards/
+ .machine_readable/
+ crg/
+ COMPONENT-READINESS-GRADES.a2ml
+ trg/
+ TOOLCHAIN-READINESS-GRADES.a2ml
+ rsr/
+ RSR-SPEC.a2ml
+....
+
+=== Standards Coverage Gaps
+
+==== 1. Missing Interoperability Standards
+
+*Gap:* No formal specification for how CRG/TRG/RSR interact *Add:*
+`+standards/interop/+` directory with: - CRG-TRG mapping specification -
+RSR compliance matrix - Version compatibility rules
+
+==== 2. Automation Interface Standards
+
+*Gap:* K9 automation hooks lack formal interface definition *Add:*
+`+standards/automation/+` with: - K9 contract interface spec - CI/CD
+integration patterns - Automation safety levels
+
+==== 3. Template Versioning Standard
+
+*Gap:* No formal template versioning policy *Add:*
+`+standards/templates/+` with: - Template versioning spec -
+Compatibility requirements - Deprecation policy
+
+==== 4. Compliance Testing Standards
+
+*Gap:* RSR certifier lacks formal test specification *Add:*
+`+rsr-engine-repo/spec/+` with: - Test coverage requirements -
+Certification validation rules - Audit trail format
+
+=== Implementation Checklist
+
+==== Phase 1: Eliminate Redundancies
+
+* [ ] Consolidate K9 templates into k9-svc-repo
+* [ ] Remove duplicate RSR workflow files
+* [ ] Separate A2ML vs RSR templates
+* [ ] Clean up scattered contractile templates
+
+==== Phase 2: Relocate Misplaced Items
+
+* [ ] Move RSR badges to rsr-engine-repo/badges/
+* [ ] Reorganize machine-readable specs by standard
+* [ ] Centralize contractile templates in k9-svc-repo
+* [ ] Promote RSR workflows to reusable GitHub actions
+
+==== Phase 3: Fill Coverage Gaps
+
+* [ ] Create interop/ directory with CRG-TRG-RSR mappings
+* [ ] Add automation/ directory with K9 interface specs
+* [ ] Develop templates/ directory with versioning standards
+* [ ] Formalize compliance testing in rsr-engine-repo
+
+==== Phase 4: Documentation Updates
+
+* [ ] Update all README files with new structure
+* [ ] Add migration guide for existing projects
+* [ ] Create template usage documentation
+* [ ] Document version compatibility matrix
+
+=== Verification Plan
+
+==== Post-Reorganization Checks:
+
+[arabic]
+. *Template Accessibility:* All templates reachable via registry
+. *No Broken References:* `+grep -r+` for old paths
+. *CI/CD Functionality:* All workflows pass
+. *RSR Compliance:* Run certifier on new structure
+. *Documentation Completeness:* All changes documented
+
+==== Validation Commands:
+
+[source,bash]
+----
+# Check for remaining duplicates
+find . -name "template-*.k9.ncl" | wc -l # Should be 3 total
+
+# Verify RSR workflow consolidation
+find . -name "*rsr-antipattern*" | wc -l # Should be 1
+
+# Validate template registry
+rsr-certifier validate-registry template-registry.json
+----
+
+=== Risk Mitigation
+
+==== Potential Issues & Solutions:
+
+[arabic]
+. *Broken Template References:* Use symlinks during transition
+. *CI/CD Failures:* Test workflows in staging first
+. *Documentation Gaps:* Create redirect pages
+. *Template Version Mismatches:* Implement gradual deprecation
+
+==== Rollback Plan:
+
+[source,bash]
+----
+# Quick rollback script
+git checkout reorganization-start-point
+git subtree add --prefix=standards/a2ml a2ml-repo main
+# Repeat for other repos
+----
+
+=== Expected Benefits
+
+[arabic]
+. *Reduced Maintenance:* 40% fewer duplicate files
+. *Clearer Structure:* Logical grouping by function
+. *Better Discoverability:* Centralized template locations
+. *Improved Compliance:* Complete standards coverage
+. *Easier Onboarding:* Consistent documentation structure
diff --git a/REORGANIZATION-PLAN.md b/REORGANIZATION-PLAN.md
deleted file mode 100644
index 5d80bce6..00000000
--- a/REORGANIZATION-PLAN.md
+++ /dev/null
@@ -1,198 +0,0 @@
-# Standards Repo Reorganization Plan
-
-> **⚠️ SUPERSEDED (2026-06-02) — historical record only.**
->
-> This plan predates the monorepo consolidation and the verifiable registry.
-> Its premises no longer match reality: it proposes moving content *out* to
-> separate repos (`k9-svc-repo`, `rsr-engine-repo`, `a2ml-repo`), but those
-> satellites were **absorbed into this monorepo** on 2026-02-08, and several
-> "redundancies" it lists (e.g. duplicate K9 templates / RSR workflows) have
-> since been resolved or re-scoped.
->
-> **What replaced it:**
-> - *Discoverability* is now solved by the generated index
-> [`.machine_readable/REGISTRY.a2ml`](.machine_readable/REGISTRY.a2ml)
-> (prose: [`REGISTRY.adoc`](REGISTRY.adoc)) — every spec, its home, and a
-> content-addressed `source_hash`.
-> - *"Where do I go for X"* is answered by the routing table at the top of
-> [`README.adoc`](README.adoc) and by [`0-AI-MANIFEST.a2ml`](0-AI-MANIFEST.a2ml).
-> - *Drift* (the thing this plan tried to prevent by hand) is now detected
-> automatically: `registry-verify.yml` (CI) + Hypatia rule HYP-S006.
->
-> Any still-relevant idea below should be re-filed as a registry entry or an
-> issue. The text is retained unedited for provenance.
-
----
-
-## Current Redundancies Identified
-
-### 1. Template Duplication
-**Issue:** K9 templates appear in multiple locations:
-- `.machine_readable/contractiles/k9/template-*.k9.ncl` (3 copies)
-- `0-ai-gatekeeper-protocol/contractiles/k9/template-*.k9.ncl` (3 copies per subdir)
-- `0-ai-gatekeeper-protocol/*/contractiles/k9/template-*.k9.ncl` (multiple copies)
-
-**Solution:** Consolidate into single source in k9-svc monorepo
-
-### 2. RSR Workflow Duplication
-**Issue:** `rsr-antipattern.yml` appears in:
-- `.github/workflows/rsr-antipattern.yml`
-- `0-ai-gatekeeper-protocol/.github/workflows/rsr-antipattern.yml`
-- `0-ai-gatekeeper-protocol/mcp-repo-guardian/.github/workflows/rsr-antipattern.yml`
-
-**Solution:** Move to RSR engine repo, reference via GitHub workflow reuse
-
-### 3. Overlapping Specifications
-**Issue:** A2ML templates exist in both:
-- `a2ml-templates/` (6 files)
-- `rhodium-standard-repositories/templates/` (20+ files with some overlap)
-
-**Solution:** Separate concerns - A2ML templates in a2ml-repo, RSR compliance templates in rsr-engine-repo
-
-## Better Locations Needed
-
-### 1. Contractile Templates
-**Current:** Scattered across `.machine_readable/contractiles/` and protocol dirs
-**Better:** Centralize in k9-svc-repo with clear categorization:
-```
-k9-svc-repo/
- templates/
- contractiles/
- dust/
- intend/
- lust/
- must/
- trust/
- k9/
- kennel/
- yard/
- hunt/
-```
-
-### 2. RSR Badges
-**Current:** Buried in `rhodium-standard-repositories/badges/`
-**Better:** Promote to top-level in rsr-engine-repo:
-```
-rsr-engine-repo/
- badges/
- rsr-bronze.svg
- rsr-silver.svg
- rsr-gold.svg
- rsr-rhodium.svg
- README.md # Badge usage guidelines
-```
-
-### 3. Machine Readable Specs
-**Current:** Mixed in `.machine_readable/6a2/` with other files
-**Better:** Organize by standard:
-```
-standards/
- .machine_readable/
- crg/
- COMPONENT-READINESS-GRADES.a2ml
- trg/
- TOOLCHAIN-READINESS-GRADES.a2ml
- rsr/
- RSR-SPEC.a2ml
-```
-
-## Standards Coverage Gaps
-
-### 1. Missing Interoperability Standards
-**Gap:** No formal specification for how CRG/TRG/RSR interact
-**Add:** `standards/interop/` directory with:
-- CRG-TRG mapping specification
-- RSR compliance matrix
-- Version compatibility rules
-
-### 2. Automation Interface Standards
-**Gap:** K9 automation hooks lack formal interface definition
-**Add:** `standards/automation/` with:
-- K9 contract interface spec
-- CI/CD integration patterns
-- Automation safety levels
-
-### 3. Template Versioning Standard
-**Gap:** No formal template versioning policy
-**Add:** `standards/templates/` with:
-- Template versioning spec
-- Compatibility requirements
-- Deprecation policy
-
-### 4. Compliance Testing Standards
-**Gap:** RSR certifier lacks formal test specification
-**Add:** `rsr-engine-repo/spec/` with:
-- Test coverage requirements
-- Certification validation rules
-- Audit trail format
-
-## Implementation Checklist
-
-### Phase 1: Eliminate Redundancies
-- [ ] Consolidate K9 templates into k9-svc-repo
-- [ ] Remove duplicate RSR workflow files
-- [ ] Separate A2ML vs RSR templates
-- [ ] Clean up scattered contractile templates
-
-### Phase 2: Relocate Misplaced Items
-- [ ] Move RSR badges to rsr-engine-repo/badges/
-- [ ] Reorganize machine-readable specs by standard
-- [ ] Centralize contractile templates in k9-svc-repo
-- [ ] Promote RSR workflows to reusable GitHub actions
-
-### Phase 3: Fill Coverage Gaps
-- [ ] Create interop/ directory with CRG-TRG-RSR mappings
-- [ ] Add automation/ directory with K9 interface specs
-- [ ] Develop templates/ directory with versioning standards
-- [ ] Formalize compliance testing in rsr-engine-repo
-
-### Phase 4: Documentation Updates
-- [ ] Update all README files with new structure
-- [ ] Add migration guide for existing projects
-- [ ] Create template usage documentation
-- [ ] Document version compatibility matrix
-
-## Verification Plan
-
-### Post-Reorganization Checks:
-1. **Template Accessibility:** All templates reachable via registry
-2. **No Broken References:** `grep -r` for old paths
-3. **CI/CD Functionality:** All workflows pass
-4. **RSR Compliance:** Run certifier on new structure
-5. **Documentation Completeness:** All changes documented
-
-### Validation Commands:
-```bash
-# Check for remaining duplicates
-find . -name "template-*.k9.ncl" | wc -l # Should be 3 total
-
-# Verify RSR workflow consolidation
-find . -name "*rsr-antipattern*" | wc -l # Should be 1
-
-# Validate template registry
-rsr-certifier validate-registry template-registry.json
-```
-
-## Risk Mitigation
-
-### Potential Issues & Solutions:
-1. **Broken Template References:** Use symlinks during transition
-2. **CI/CD Failures:** Test workflows in staging first
-3. **Documentation Gaps:** Create redirect pages
-4. **Template Version Mismatches:** Implement gradual deprecation
-
-### Rollback Plan:
-```bash
-# Quick rollback script
-git checkout reorganization-start-point
-git subtree add --prefix=standards/a2ml a2ml-repo main
-# Repeat for other repos
-```
-
-## Expected Benefits
-
-1. **Reduced Maintenance:** 40% fewer duplicate files
-2. **Clearer Structure:** Logical grouping by function
-3. **Better Discoverability:** Centralized template locations
-4. **Improved Compliance:** Complete standards coverage
-5. **Easier Onboarding:** Consistent documentation structure
\ No newline at end of file
diff --git a/SECURITY.adoc b/SECURITY.adoc
new file mode 100644
index 00000000..012566b5
--- /dev/null
+++ b/SECURITY.adoc
@@ -0,0 +1,438 @@
+== Security Policy
+
+We take security seriously. We appreciate your efforts to responsibly
+disclose vulnerabilities and will make every effort to acknowledge your
+contributions.
+
+=== Table of Contents
+
+* link:#reporting-a-vulnerability[Reporting a Vulnerability]
+* link:#what-to-include[What to Include]
+* link:#response-timeline[Response Timeline]
+* link:#disclosure-policy[Disclosure Policy]
+* link:#scope[Scope]
+* link:#safe-harbour[Safe Harbour]
+* link:#recognition[Recognition]
+* link:#security-updates[Security Updates]
+* link:#security-best-practices[Security Best Practices]
+
+'''''
+
+=== Reporting a Vulnerability
+
+==== Preferred Method: GitHub Security Advisories
+
+The preferred method for reporting security vulnerabilities is through
+GitHub’s Security Advisory feature:
+
+[arabic]
+. Navigate to
+https://github.com/hyperpolymath/standards/security/advisories/new[Report
+a Vulnerability]
+. Click *"`Report a vulnerability`"*
+. Complete the form with as much detail as possible
+. Submit — we’ll receive a private notification
+
+This method ensures:
+
+* End-to-end encryption of your report
+* Private discussion space for collaboration
+* Coordinated disclosure tooling
+* Automatic credit when the advisory is published
+
+==== Alternative: Encrypted Email
+
+If you cannot use GitHub Security Advisories, you may email us directly:
+
+[cols=",",]
+|===
+|*Email* |6759885+hyperpolymath@users.noreply.github.com
+|*Fingerprint* |`+[PGP fingerprint not set]+`
+|===
+
+____
+*⚠️ Important:* Do not report security vulnerabilities through public
+GitHub issues, pull requests, discussions, or social media.
+____
+
+'''''
+
+=== What to Include
+
+A good vulnerability report helps us understand and reproduce the issue
+quickly.
+
+==== Required Information
+
+* *Description*: Clear explanation of the vulnerability
+* *Impact*: What an attacker could achieve (confidentiality, integrity,
+availability)
+* *Affected versions*: Which versions/commits are affected
+* *Reproduction steps*: Detailed steps to reproduce the issue
+
+==== Helpful Additional Information
+
+* *Proof of concept*: Code, scripts, or screenshots demonstrating the
+vulnerability
+* *Attack scenario*: Realistic attack scenario showing exploitability
+* *CVSS score*: Your assessment of severity (use
+https://www.first.org/cvss/calculator/3.1[CVSS 3.1 Calculator])
+* *CWE ID*: Common Weakness Enumeration identifier if known
+* *Suggested fix*: If you have ideas for remediation
+* *References*: Links to related vulnerabilities, research, or
+advisories
+
+==== Example Report Structure
+
+[source,markdown]
+----
+## Summary
+[One-sentence description of the vulnerability]
+
+## Vulnerability Type
+[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.]
+
+## Affected Component
+[File path, function name, API endpoint, etc.]
+
+## Affected Versions
+[Version range or specific commits]
+
+## Severity Assessment
+- CVSS 3.1 Score: [X.X]
+- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X]
+
+## Description
+[Detailed technical description]
+
+## Steps to Reproduce
+1. [First step]
+2. [Second step]
+3. [...]
+
+## Proof of Concept
+[Code, curl commands, screenshots, etc.]
+
+## Impact
+[What can an attacker achieve?]
+
+## Suggested Remediation
+[Optional: your ideas for fixing]
+
+## References
+[Links to related issues, CVEs, research]
+----
+
+'''''
+
+=== Response Timeline
+
+We commit to the following response times:
+
+[width="100%",cols="24%,35%,41%",options="header",]
+|===
+|Stage |Timeframe |Description
+|*Initial Response* |48 hours |We acknowledge receipt and confirm we’re
+investigating
+
+|*Triage* |7 days |We assess severity, confirm the vulnerability, and
+estimate timeline
+
+|*Status Update* |Every 7 days |Regular updates on remediation progress
+
+|*Resolution* |90 days |Target for fix development and release (complex
+issues may take longer)
+
+|*Disclosure* |90 days |Public disclosure after fix is available
+(coordinated with you)
+|===
+
+____
+*Note:* These are targets, not guarantees. Complex vulnerabilities may
+require more time. We’ll communicate openly about any delays.
+____
+
+'''''
+
+=== Disclosure Policy
+
+We follow *coordinated disclosure* (also known as responsible
+disclosure):
+
+[arabic]
+. *You report* the vulnerability privately
+. *We acknowledge* and begin investigation
+. *We develop* a fix and prepare a release
+. *We coordinate* disclosure timing with you
+. *We publish* security advisory and fix simultaneously
+. *You may publish* your research after disclosure
+
+==== Our Commitments
+
+* We will not take legal action against researchers who follow this
+policy
+* We will work with you to understand and resolve the issue
+* We will credit you in the security advisory (unless you prefer
+anonymity)
+* We will notify you before public disclosure
+* We will publish advisories with sufficient detail for users to assess
+risk
+
+==== Your Commitments
+
+* Report vulnerabilities promptly after discovery
+* Give us reasonable time to address the issue before disclosure
+* Do not access, modify, or delete data beyond what’s necessary to
+demonstrate the vulnerability
+* Do not degrade service availability (no DoS testing on production)
+* Do not share vulnerability details with others until coordinated
+disclosure
+
+==== Disclosure Timeline
+
+....
+Day 0 You report vulnerability
+Day 1-2 We acknowledge receipt
+Day 7 We confirm vulnerability and share initial assessment
+Day 7-90 We develop and test fix
+Day 90 Coordinated public disclosure
+ (earlier if fix is ready; later by mutual agreement)
+....
+
+If we cannot reach agreement on disclosure timing, we default to 90 days
+from your initial report.
+
+'''''
+
+=== Scope
+
+==== In Scope ✅
+
+The following are within scope for security research:
+
+* This repository (`+hyperpolymath/standards+`) and all its code
+* Official releases and packages published from this repository
+* Documentation that could lead to security issues
+* Build and deployment configurations in this repository
+* Dependencies (report here, we’ll coordinate with upstream)
+
+==== Out of Scope ❌
+
+The following are *not* in scope:
+
+* Third-party services we integrate with (report directly to them)
+* Social engineering attacks against maintainers
+* Physical security
+* Denial of service attacks against production infrastructure
+* Spam, phishing, or other non-technical attacks
+* Issues already reported or publicly known
+* Theoretical vulnerabilities without proof of concept
+
+==== Qualifying Vulnerabilities
+
+We’re particularly interested in:
+
+* Remote code execution
+* SQL injection, command injection, code injection
+* Authentication/authorisation bypass
+* Cross-site scripting (XSS) and cross-site request forgery (CSRF)
+* Server-side request forgery (SSRF)
+* Path traversal / local file inclusion
+* Information disclosure (credentials, PII, secrets)
+* Cryptographic weaknesses
+* Deserialisation vulnerabilities
+* Memory safety issues (buffer overflows, use-after-free, etc.)
+* Supply chain vulnerabilities (dependency confusion, etc.)
+* Significant logic flaws
+
+==== Non-Qualifying Issues
+
+The following generally do not qualify as security vulnerabilities:
+
+* Missing security headers on non-sensitive pages
+* Clickjacking on pages without sensitive actions
+* Self-XSS (requires victim to paste code)
+* Missing rate limiting (unless it enables a specific attack)
+* Username/email enumeration (unless high-risk context)
+* Missing cookie flags on non-sensitive cookies
+* Software version disclosure
+* Verbose error messages (unless exposing secrets)
+* Best practice deviations without demonstrable impact
+
+'''''
+
+=== Safe Harbour
+
+We support security research conducted in good faith.
+
+==== Our Promise
+
+If you conduct security research in accordance with this policy:
+
+* ✅ We will not initiate legal action against you
+* ✅ We will not report your activity to law enforcement
+* ✅ We will work with you in good faith to resolve issues
+* ✅ We consider your research authorised under the Computer Fraud and
+Abuse Act (CFAA), UK Computer Misuse Act, and similar laws
+* ✅ We waive any potential claim against you for circumvention of
+security controls
+
+==== Good Faith Requirements
+
+To qualify for safe harbour, you must:
+
+* Comply with this security policy
+* Report vulnerabilities promptly
+* Avoid privacy violations (do not access others’ data)
+* Avoid service degradation (no destructive testing)
+* Not exploit vulnerabilities beyond proof-of-concept
+* Not use vulnerabilities for profit (beyond bug bounties where offered)
+
+____
+*⚠️ Important:* This safe harbour does not extend to third-party
+systems. Always check their policies before testing.
+____
+
+'''''
+
+=== Recognition
+
+We believe in recognising security researchers who help us improve.
+
+==== Hall of Fame
+
+Researchers who report valid vulnerabilities will be acknowledged in our
+link:SECURITY-ACKNOWLEDGMENTS.md[Security Acknowledgments] (unless they
+prefer anonymity).
+
+Recognition includes:
+
+* Your name (or chosen alias)
+* Link to your website/profile (optional)
+* Brief description of the vulnerability class
+* Date of report
+
+==== What We Offer
+
+* ✅ Public credit in security advisories
+* ✅ Acknowledgment in release notes
+* ✅ Entry in our Hall of Fame
+* ✅ Reference/recommendation letter upon request (for significant
+findings)
+
+==== What We Don’t Currently Offer
+
+* ❌ Monetary bug bounties
+* ❌ Hardware or swag
+* ❌ Paid security research contracts
+
+____
+*Note:* We’re a community project with limited resources. Your
+contributions help everyone who uses this software.
+____
+
+'''''
+
+=== Security Updates
+
+==== Receiving Updates
+
+To stay informed about security updates:
+
+* *Watch this repository*: Click "`Watch`" → "`Custom`" → Select
+"`Security alerts`"
+* *GitHub Security Advisories*: Published at
+https://github.com/hyperpolymath/standards/security/advisories[Security
+Advisories]
+* *Release notes*: Security fixes noted in link:CHANGELOG.md[CHANGELOG]
+
+==== Update Policy
+
+[cols=",",options="header",]
+|===
+|Severity |Response
+|*Critical/High* |Patch release as soon as fix is ready
+|*Medium* |Included in next scheduled release (or earlier)
+|*Low* |Included in next scheduled release
+|===
+
+==== Supported Versions
+
+[cols=",,",options="header",]
+|===
+|Version |Supported |Notes
+|`+main+` branch |✅ Yes |Latest development
+|Latest release |✅ Yes |Current stable
+|Previous minor release |✅ Yes |Security fixes backported
+|Older versions |❌ No |Please upgrade
+|===
+
+'''''
+
+=== Security Best Practices
+
+When using Standards, we recommend:
+
+==== General
+
+* Keep dependencies up to date
+* Use the latest stable release
+* Subscribe to security notifications
+* Review configuration against security documentation
+* Follow principle of least privilege
+
+==== For Contributors
+
+* Never commit secrets, credentials, or API keys
+* Use signed commits (`+git config commit.gpgsign true+`)
+* Review dependencies before adding them
+* Run security linters locally before pushing
+* Report any concerns about existing code
+
+'''''
+
+=== Additional Resources
+
+* https://github.com/hyperpolymath/standards/security/advisories[Security
+Advisories]
+* link:CHANGELOG.md[Changelog]
+* link:CONTRIBUTING.md[Contributing Guidelines]
+* https://cve.mitre.org/[CVE Database]
+* https://www.first.org/cvss/calculator/3.1[CVSS Calculator]
+
+'''''
+
+=== Contact
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Purpose |Contact
+|*Security issues*
+|https://github.com/hyperpolymath/standards/security/advisories/new[Report
+via GitHub] or 6759885+hyperpolymath@users.noreply.github.com
+
+|*General questions*
+|https://github.com/hyperpolymath/standards/discussions[GitHub
+Discussions]
+
+|*Other enquiries* |See link:README.md[README] for contact information
+|===
+
+'''''
+
+=== Policy Changes
+
+This security policy may be updated from time to time. Significant
+changes will be:
+
+* Committed to this repository with a clear commit message
+* Noted in the changelog
+* Announced via GitHub Discussions (for major changes)
+
+'''''
+
+_Thank you for helping keep Standards and its users safe._ 🛡️
+
+'''''
+
+Last updated: 2026 · Policy version: 1.0.0
diff --git a/SECURITY.md b/SECURITY.md
deleted file mode 100644
index 801d33f6..00000000
--- a/SECURITY.md
+++ /dev/null
@@ -1,376 +0,0 @@
-# Security Policy
-
-We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
-
-## Table of Contents
-
-- [Reporting a Vulnerability](#reporting-a-vulnerability)
-- [What to Include](#what-to-include)
-- [Response Timeline](#response-timeline)
-- [Disclosure Policy](#disclosure-policy)
-- [Scope](#scope)
-- [Safe Harbour](#safe-harbour)
-- [Recognition](#recognition)
-- [Security Updates](#security-updates)
-- [Security Best Practices](#security-best-practices)
-
----
-
-## Reporting a Vulnerability
-
-### Preferred Method: GitHub Security Advisories
-
-The preferred method for reporting security vulnerabilities is through GitHub's Security Advisory feature:
-
-1. Navigate to [Report a Vulnerability](https://github.com/hyperpolymath/standards/security/advisories/new)
-2. Click **"Report a vulnerability"**
-3. Complete the form with as much detail as possible
-4. Submit — we'll receive a private notification
-
-This method ensures:
-
-- End-to-end encryption of your report
-- Private discussion space for collaboration
-- Coordinated disclosure tooling
-- Automatic credit when the advisory is published
-
-### Alternative: Encrypted Email
-
-If you cannot use GitHub Security Advisories, you may email us directly:
-
-| | |
-|---|---|
-| **Email** | 6759885+hyperpolymath@users.noreply.github.com |
-| **Fingerprint** | `[PGP fingerprint not set]` |
-
-
-> **⚠️ Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media.
-
----
-
-## What to Include
-
-A good vulnerability report helps us understand and reproduce the issue quickly.
-
-### Required Information
-
-- **Description**: Clear explanation of the vulnerability
-- **Impact**: What an attacker could achieve (confidentiality, integrity, availability)
-- **Affected versions**: Which versions/commits are affected
-- **Reproduction steps**: Detailed steps to reproduce the issue
-
-### Helpful Additional Information
-
-- **Proof of concept**: Code, scripts, or screenshots demonstrating the vulnerability
-- **Attack scenario**: Realistic attack scenario showing exploitability
-- **CVSS score**: Your assessment of severity (use [CVSS 3.1 Calculator](https://www.first.org/cvss/calculator/3.1))
-- **CWE ID**: Common Weakness Enumeration identifier if known
-- **Suggested fix**: If you have ideas for remediation
-- **References**: Links to related vulnerabilities, research, or advisories
-
-### Example Report Structure
-
-```markdown
-## Summary
-[One-sentence description of the vulnerability]
-
-## Vulnerability Type
-[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.]
-
-## Affected Component
-[File path, function name, API endpoint, etc.]
-
-## Affected Versions
-[Version range or specific commits]
-
-## Severity Assessment
-- CVSS 3.1 Score: [X.X]
-- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X]
-
-## Description
-[Detailed technical description]
-
-## Steps to Reproduce
-1. [First step]
-2. [Second step]
-3. [...]
-
-## Proof of Concept
-[Code, curl commands, screenshots, etc.]
-
-## Impact
-[What can an attacker achieve?]
-
-## Suggested Remediation
-[Optional: your ideas for fixing]
-
-## References
-[Links to related issues, CVEs, research]
-```
-
----
-
-## Response Timeline
-
-We commit to the following response times:
-
-| Stage | Timeframe | Description |
-|-------|-----------|-------------|
-| **Initial Response** | 48 hours | We acknowledge receipt and confirm we're investigating |
-| **Triage** | 7 days | We assess severity, confirm the vulnerability, and estimate timeline |
-| **Status Update** | Every 7 days | Regular updates on remediation progress |
-| **Resolution** | 90 days | Target for fix development and release (complex issues may take longer) |
-| **Disclosure** | 90 days | Public disclosure after fix is available (coordinated with you) |
-
-> **Note:** These are targets, not guarantees. Complex vulnerabilities may require more time. We'll communicate openly about any delays.
-
----
-
-## Disclosure Policy
-
-We follow **coordinated disclosure** (also known as responsible disclosure):
-
-1. **You report** the vulnerability privately
-2. **We acknowledge** and begin investigation
-3. **We develop** a fix and prepare a release
-4. **We coordinate** disclosure timing with you
-5. **We publish** security advisory and fix simultaneously
-6. **You may publish** your research after disclosure
-
-### Our Commitments
-
-- We will not take legal action against researchers who follow this policy
-- We will work with you to understand and resolve the issue
-- We will credit you in the security advisory (unless you prefer anonymity)
-- We will notify you before public disclosure
-- We will publish advisories with sufficient detail for users to assess risk
-
-### Your Commitments
-
-- Report vulnerabilities promptly after discovery
-- Give us reasonable time to address the issue before disclosure
-- Do not access, modify, or delete data beyond what's necessary to demonstrate the vulnerability
-- Do not degrade service availability (no DoS testing on production)
-- Do not share vulnerability details with others until coordinated disclosure
-
-### Disclosure Timeline
-
-```
-Day 0 You report vulnerability
-Day 1-2 We acknowledge receipt
-Day 7 We confirm vulnerability and share initial assessment
-Day 7-90 We develop and test fix
-Day 90 Coordinated public disclosure
- (earlier if fix is ready; later by mutual agreement)
-```
-
-If we cannot reach agreement on disclosure timing, we default to 90 days from your initial report.
-
----
-
-## Scope
-
-### In Scope ✅
-
-The following are within scope for security research:
-
-- This repository (`hyperpolymath/standards`) and all its code
-- Official releases and packages published from this repository
-- Documentation that could lead to security issues
-- Build and deployment configurations in this repository
-- Dependencies (report here, we'll coordinate with upstream)
-
-### Out of Scope ❌
-
-The following are **not** in scope:
-
-- Third-party services we integrate with (report directly to them)
-- Social engineering attacks against maintainers
-- Physical security
-- Denial of service attacks against production infrastructure
-- Spam, phishing, or other non-technical attacks
-- Issues already reported or publicly known
-- Theoretical vulnerabilities without proof of concept
-
-### Qualifying Vulnerabilities
-
-We're particularly interested in:
-
-- Remote code execution
-- SQL injection, command injection, code injection
-- Authentication/authorisation bypass
-- Cross-site scripting (XSS) and cross-site request forgery (CSRF)
-- Server-side request forgery (SSRF)
-- Path traversal / local file inclusion
-- Information disclosure (credentials, PII, secrets)
-- Cryptographic weaknesses
-- Deserialisation vulnerabilities
-- Memory safety issues (buffer overflows, use-after-free, etc.)
-- Supply chain vulnerabilities (dependency confusion, etc.)
-- Significant logic flaws
-
-### Non-Qualifying Issues
-
-The following generally do not qualify as security vulnerabilities:
-
-- Missing security headers on non-sensitive pages
-- Clickjacking on pages without sensitive actions
-- Self-XSS (requires victim to paste code)
-- Missing rate limiting (unless it enables a specific attack)
-- Username/email enumeration (unless high-risk context)
-- Missing cookie flags on non-sensitive cookies
-- Software version disclosure
-- Verbose error messages (unless exposing secrets)
-- Best practice deviations without demonstrable impact
-
----
-
-## Safe Harbour
-
-We support security research conducted in good faith.
-
-### Our Promise
-
-If you conduct security research in accordance with this policy:
-
-- ✅ We will not initiate legal action against you
-- ✅ We will not report your activity to law enforcement
-- ✅ We will work with you in good faith to resolve issues
-- ✅ We consider your research authorised under the Computer Fraud and Abuse Act (CFAA), UK Computer Misuse Act, and similar laws
-- ✅ We waive any potential claim against you for circumvention of security controls
-
-### Good Faith Requirements
-
-To qualify for safe harbour, you must:
-
-- Comply with this security policy
-- Report vulnerabilities promptly
-- Avoid privacy violations (do not access others' data)
-- Avoid service degradation (no destructive testing)
-- Not exploit vulnerabilities beyond proof-of-concept
-- Not use vulnerabilities for profit (beyond bug bounties where offered)
-
-> **⚠️ Important:** This safe harbour does not extend to third-party systems. Always check their policies before testing.
-
----
-
-## Recognition
-
-We believe in recognising security researchers who help us improve.
-
-### Hall of Fame
-
-Researchers who report valid vulnerabilities will be acknowledged in our [Security Acknowledgments](SECURITY-ACKNOWLEDGMENTS.md) (unless they prefer anonymity).
-
-Recognition includes:
-
-- Your name (or chosen alias)
-- Link to your website/profile (optional)
-- Brief description of the vulnerability class
-- Date of report
-
-### What We Offer
-
-- ✅ Public credit in security advisories
-- ✅ Acknowledgment in release notes
-- ✅ Entry in our Hall of Fame
-- ✅ Reference/recommendation letter upon request (for significant findings)
-
-### What We Don't Currently Offer
-
-- ❌ Monetary bug bounties
-- ❌ Hardware or swag
-- ❌ Paid security research contracts
-
-> **Note:** We're a community project with limited resources. Your contributions help everyone who uses this software.
-
----
-
-## Security Updates
-
-### Receiving Updates
-
-To stay informed about security updates:
-
-- **Watch this repository**: Click "Watch" → "Custom" → Select "Security alerts"
-- **GitHub Security Advisories**: Published at [Security Advisories](https://github.com/hyperpolymath/standards/security/advisories)
-- **Release notes**: Security fixes noted in [CHANGELOG](CHANGELOG.md)
-
-### Update Policy
-
-| Severity | Response |
-|----------|----------|
-| **Critical/High** | Patch release as soon as fix is ready |
-| **Medium** | Included in next scheduled release (or earlier) |
-| **Low** | Included in next scheduled release |
-
-### Supported Versions
-
-
-
-| Version | Supported | Notes |
-|---------|-----------|-------|
-| `main` branch | ✅ Yes | Latest development |
-| Latest release | ✅ Yes | Current stable |
-| Previous minor release | ✅ Yes | Security fixes backported |
-| Older versions | ❌ No | Please upgrade |
-
----
-
-## Security Best Practices
-
-When using Standards, we recommend:
-
-### General
-
-- Keep dependencies up to date
-- Use the latest stable release
-- Subscribe to security notifications
-- Review configuration against security documentation
-- Follow principle of least privilege
-
-### For Contributors
-
-- Never commit secrets, credentials, or API keys
-- Use signed commits (`git config commit.gpgsign true`)
-- Review dependencies before adding them
-- Run security linters locally before pushing
-- Report any concerns about existing code
-
----
-
-## Additional Resources
-
-- [Security Advisories](https://github.com/hyperpolymath/standards/security/advisories)
-- [Changelog](CHANGELOG.md)
-- [Contributing Guidelines](CONTRIBUTING.md)
-- [CVE Database](https://cve.mitre.org/)
-- [CVSS Calculator](https://www.first.org/cvss/calculator/3.1)
-
----
-
-## Contact
-
-| Purpose | Contact |
-|---------|---------|
-| **Security issues** | [Report via GitHub](https://github.com/hyperpolymath/standards/security/advisories/new) or 6759885+hyperpolymath@users.noreply.github.com |
-| **General questions** | [GitHub Discussions](https://github.com/hyperpolymath/standards/discussions) |
-| **Other enquiries** | See [README](README.md) for contact information |
-
----
-
-## Policy Changes
-
-This security policy may be updated from time to time. Significant changes will be:
-
-- Committed to this repository with a clear commit message
-- Noted in the changelog
-- Announced via GitHub Discussions (for major changes)
-
----
-
-*Thank you for helping keep Standards and its users safe.* 🛡️
-
----
-
-Last updated: 2026 · Policy version: 1.0.0
diff --git a/TEST-NEEDS.adoc b/TEST-NEEDS.adoc
new file mode 100644
index 00000000..d6dc9b2e
--- /dev/null
+++ b/TEST-NEEDS.adoc
@@ -0,0 +1,286 @@
+== TEST-NEEDS: standards
+
+=== CRG Grade: B/A (Targeting)
+
+To achieve CRG Grades B and above, projects MUST implement *Zigzag
+Testing* for their critical paths, following the
+link:./ZIGZAG-TESTING.md[ZIGZAG-TESTING.md] methodology.
+
+=== CRG Grade: C — ACHIEVED 2026-04-04
+
+All CRG C categories are present and passing. See breakdown below.
+
+[width="99%",cols="41%,20%,17%,22%",options="header",]
+|===
+|CRG C Category |Status |Count |Details
+|*Unit* |PASS |100+ |Inline (#[test]) in parser.rs, renderer.rs +
+integration tests
+
+|*Smoke* |PASS |9 |smoke_* tests in a2ml + k9-svc crg_c_tests.rs
+
+|*P2P (property-based)* |PASS |15+ |proptest suites in a2ml + k9-svc
+crg_c_tests.rs
+
+|*E2E / Reflexive* |PASS |4 |Dogfood: parse standards manifest +
+round-trip constructed docs
+
+|*Contract* |PASS |13 |Pre/post-condition tests in a2ml + k9-svc
+crg_c_tests.rs
+
+|*Aspect* |PASS |14 |Security (injection, large input, null bytes,
+unicode) + error-handling
+
+|*Benchmarks (baselined)* |PASS |10+ |Criterion: a2ml_bench + k9_bench;
+Zig: grv6; Deno: manifest
+|===
+
+=== Current State
+
+[width="100%",cols="40%,26%,34%",options="header",]
+|===
+|Category |Count |Details
+|*Source modules* |358+ |Massive monorepo: 0-ai-gatekeeper-protocol
+(mcp-repo-guardian, repo-guardian-fs), a2ml, axel-protocol,
+groove-protocol, contractiles, and many more sub-projects
+
+|*Unit tests* |158+ |Real tests across 6 test suites (see breakdown
+below)
+
+|*P2P (property) tests* |15+ |proptest in a2ml + k9-svc integration test
+files
+
+|*Contract tests* |13 |Pre/post-condition tests in a2ml + k9-svc
+
+|*Aspect tests* |14 |Security + error-handling cross-cutting tests
+
+|*E2E tests* |4 |Dogfood: parse real manifests + round-trip stability
+
+|*Benchmarks* |22+ |Criterion (a2ml + k9-svc) + Zig (grv6) + Deno
+(manifest)
+
+|*Fuzz tests* |0 |Placeholder removed; real fuzz TODO
+|===
+
+=== Test Suite Breakdown (as of 2026-04-04)
+
+==== groove-protocol/reference/ipv6t — 10 tests (Zig)
+
+Run: `+zig build test+` from `+groove-protocol/reference/ipv6t/+`
+
+All 10 tests pass. Cover all 5 spec validation scenarios + 5 property
+tests: - [x] Positive: correct type hash accepted - [x] Negative: wrong
+type hash rejected before payload parsing - [x] Provenance: 3 chained
+frames produce verifiable hash chain - [x] Fallback: raw bytes without
+magic treated as untyped - [x] Trust flag: PROVEN flag does not bypass
+type hash validation - [x] Header size is exactly 108 bytes - [x] Hash
+determinism: same input always same hash - [x] Multiple type acceptance:
+reader accepts any of N expected types - [x] Trust level correctly
+derived from flags - [x] Hash hex formatting is correct
+
+*Benchmarks*: `+zig build bench+` — measures hash computation
+throughput: - SHA-256 type hash: ~4.3µs/iter - SHA-256 cap hash:
+~3.2µs/iter - Provenance chain step (2x SHA-256): ~10.2µs/iter - Hash
+hex format: ~57ns/iter (17.5 M/s)
+
+==== mcp-repo-guardian — 36 tests (Deno/JS)
+
+Run: `+deno task test+` from
+`+0-ai-gatekeeper-protocol/mcp-repo-guardian/+`
+
+All 36 tests pass. Tests cover: - [x] Manifest parsing (hash, canonical
+locations, invariants) - [x] Determinism and hash correctness - [x]
+Session management (create, acknowledge, multi-session isolation) - [x]
+Access guard (denied before ack, allowed after ack, invalid session) -
+[x] Path validation / invariant enforcement (all 7 SCM file variants) -
+[x] *Security aspect*: path traversal in canonical location → safe
+default - [x] *Security aspect*: XSS/injection in manifest → stored as
+plain text, not executed - [x] *Security aspect*: 1MB manifest does not
+error (no catastrophic regex) - [x] *Security aspect*: null bytes in
+manifest handled - [x] *E2E dogfood*: parses standards repo’s own
+`+0-AI-MANIFEST.a2ml+`
+
+*Benchmarks*: `+deno task bench+` - SHA-256 hash (manifest ~400 bytes):
+~4µs/iter - Full manifest build: ~5.6µs/iter (hash + 5 regex + date) -
+Session lifecycle: ~7.7µs/iter
+
+==== axel-protocol — 14 tests (Deno/TS)
+
+Run: `+deno task test+` from `+axel-protocol/+`
+
+All 14 tests pass. Tests cover: - [x] Valid AXEL1 DNS TXT record parsing
+- [x] Extra whitespace handling - [x] Unknown keys ignored - [x] id with
+equals signs (base64) - [x] Reject: missing version, empty payload,
+whitespace-only - [x] Reject: wrong version (AXEL2) - [x] Reject:
+version without value - [x] Reject: missing id, empty id,
+whitespace-only id - [x] Reject: full DNS RR line (not just RDATA) - [x]
+Reject: no default version when missing
+
+==== repo-guardian-fs/tests-offline — 29 tests (Rust)
+
+Run: `+cargo test+` from
+`+0-ai-gatekeeper-protocol/repo-guardian-fs/tests-offline/+`
+
+All 29 tests pass. *NOTE*: the main `+repo-guardian-fs+` crate cannot
+build because `+fuse3 v0.7.3+` is incompatible with Rust stable >= 1.80.
+The offline test crate isolates the manifest and session logic (no fuse3
+dependency).
+
+Tests cover: - [x] Manifest hash computation (deterministic, 64 hex
+chars) - [x] Canonical location extraction (scm_files, bot_directives) -
+[x] Defaults when canonical location not found - [x] Invariant
+extraction from CORE INVARIANTS section - [x] Default invariants when
+section absent - [x] File I/O: parse from file, error on missing file -
+[x] `+find_and_parse_manifest+` prefers `+0-AI-MANIFEST.a2ml+` over
+`+AI.a2ml+` - [x] `+find_and_parse_manifest+` errors when no manifest
+exists - [x] *Security*: path traversal rejected → safe default used -
+[x] *Security*: 1MB manifest does not panic - [x] *Security*: null bytes
+in manifest do not panic - [x] *Security*: 0-AI-MANIFEST.a2ml preferred
+over AI.a2ml (cannot be spoofed) - [x] *E2E dogfood*: parses standards
+repo’s own manifest - [x] Session: new session is unacknowledged - [x]
+Session: acknowledgment with correct hash succeeds - [x] Session:
+acknowledgment with wrong hash fails - [x] Session: unknown session ID
+returns error - [x] Session: expired session is unacknowledged - [x]
+Session: multiple independent sessions - [x] Session: active count
+tracking - [x] Session: cleanup_expired removes expired sessions - [x]
+Session: idempotent get_or_create
+
+==== a2ml/bindings/rust — 47 tests (Rust)
+
+Run: `+cargo test+` from `+a2ml/bindings/rust/+`
+
+All 47 tests pass (11 inline unit tests + 36 CRG C integration tests).
+
+CRG C integration tests (`+tests/crg_c_tests.rs+`): - [x] *Smoke*:
+version directive roundtrip, empty document, TrustLevel display (3
+tests) - [x] *Unit*: heading levels 1-6, attestation all fields,
+ordered/unordered lists, inline emphasis/strong/code, Manifest
+extraction, Directive::new (10 tests) - [x] *P2P*: TrustLevel from_str
+canonical + unknown, ordering, display roundtrip; Directive stores
+verbatim; Attestation stores verbatim; paragraph roundtrip block count
+(6 proptest functions) - [x] *Contract*: parse(““) -> empty doc, render
+always UTF-8, unclosed code block is Err, total order, Document::default
+equals new, Manifest version None/Some (7 tests) - [x]
+*Aspect/Security*: no script injection in directive, 1MB no panic, null
+bytes no panic, very long directive name no stackoverflow, unicode
+content, deep blockquote no stackoverflow (6 tests) - [x]
+*Aspect/Error*: A2mlError::diagnostic non-empty, RenderError diagnostic
+(2 tests) - [x] *E2E/Reflexive*: parse standards repo
+0-AI-MANIFEST.a2ml, parse .machine_readable/6a2/STATE.a2ml (2 tests)
+
+*Benchmarks*: `+cargo bench+` from `+a2ml/bindings/rust/+` - Parse
+small/medium/large_manifest throughput - Render medium throughput -
+Round-trip (parse+render) for small/medium/large - TrustLevel comparison
+micro-benchmark
+
+==== k9-svc/bindings/rust — 45 tests (Rust)
+
+Run: `+cargo test+` from `+k9-svc/bindings/rust/+`
+
+All 45 tests pass (9 inline unit tests + 3 doc tests + 33 CRG C
+integration tests).
+
+CRG C integration tests (`+tests/crg_c_tests.rs+`): - [x] *Smoke*:
+minimal parse, SecurityLevel display, render minimal (3 tests) - [x]
+*Unit*: SecurityLevel ordering, component with
+description/recipe/contract, multiple contracts, pedigree with license,
+Component::new minimal, Recipe::new, Contract::new default severity (9
+tests) - [x] *P2P*: SecurityLevel from_str canonical + unknown, display
+roundtrip; Component stores verbatim; Pedigree stores verbatim; Contract
+stores verbatim (6 proptest functions) - [x] *Contract*: parse(““) ->
+empty vec, render([]) empty, render always UTF-8, Nickel format
+rejected, SecurityLevel total order, missing pedigree Err, unknown
+security level Err (7 tests) - [x] *Aspect/Security*: no shell injection
+in origin, 1MB no panic, null bytes no panic, unicode no panic (4 tests)
+- [x] *Aspect/Error*: K9Error diagnostic non-empty, NickelFormat error
+message (2 tests) - [x] *E2E/Reflexive*: parse .k9 fixtures from k9-svc
+dir, round-trip constructed component (2 tests)
+
+*Benchmarks*: `+cargo bench+` from `+k9-svc/bindings/rust/+` - Parse
+small/medium/multi-component throughput - Render medium throughput -
+Round-trip (parse+render) for small/medium/multi -
+SecurityLevel::from_str micro-benchmark
+
+=== What Was Fixed in This Session (2026-04-04, session 2)
+
+* [x] Added `+proptest+` + `+criterion+` dev-dependencies to
+`+a2ml/bindings/rust/Cargo.toml+`
+* [x] Added `+proptest+` + `+criterion+` dev-dependencies to
+`+k9-svc/bindings/rust/Cargo.toml+`
+* [x] Created `+a2ml/bindings/rust/tests/crg_c_tests.rs+` — 36 tests
+covering all CRG C categories
+* [x] Created `+a2ml/bindings/rust/benches/a2ml_bench.rs+` — Criterion
+benchmarks (6 bench functions)
+* [x] Created `+k9-svc/bindings/rust/tests/crg_c_tests.rs+` — 33 tests
+covering all CRG C categories
+* [x] Created `+k9-svc/bindings/rust/benches/k9_bench.rs+` — Criterion
+benchmarks (6 bench functions)
+* [x] All 158+ tests pass across all 6 test suites
+
+=== What Was Fixed in Previous Session (2026-04-04, session 1)
+
+* [x] Removed `+tests/fuzz/placeholder.txt+` (fake fuzz claim)
+* [x] Created 36 real tests for `+mcp-repo-guardian+` (replacing 0
+tests)
+* [x] Created 29 real tests for `+repo-guardian-fs+` logic (bypassing
+broken fuse3)
+* [x] Confirmed groove-protocol grv6 10 tests already existed and pass
+* [x] Confirmed axel-protocol 14 tests already existed and pass
+* [x] Created grv6 benchmarks (Zig — `+zig build bench+`)
+* [x] Created manifest parsing benchmarks (Deno — `+deno task bench+`)
+* [x] Added `+test+` and `+bench+` tasks to `+deno.json+` files
+
+=== What’s Still Missing (TODO for v0.3.0)
+
+==== BLOCKERS
+
+* [ ] *fuse3 v0.7.3 incompatible with Rust stable >= 1.80* —
+`+repo-guardian-fs+` cannot build. Fix: upgrade to `+fuse3 v0.9.0+`
+(breaking API changes) or replace with `+fuser+` crate.
+
+==== Tests Still Needed
+
+===== LIVE ENVIRONMENT (cannot run in CI without setup)
+
+* [ ] `+repo-guardian-fs+` FUSE mount/unmount lifecycle
+* [ ] `+repo-guardian-fs+` access control via FUSE operations (open,
+read, readdir)
+* [ ] `+mcp-repo-guardian+` MCP server roundtrip (requires running MCP
+server)
+* [ ] `+repo-guardian-fs+` concurrent FUSE access (requires FUSE +
+threads)
+
+===== Property Tests (infrastructure needed)
+
+* [ ] A2ML parser roundtrip: arbitrary valid A2ML → parse → pretty-print
+→ parse matches
+* [ ] Manifest hash property: hash(content) always 64 hex chars, never
+the same for different inputs
+* [ ] Groove grv6 property: for any payload and type, type hash mismatch
+always rejected
+
+===== Missing Sub-projects (358 source files with ~0 tests)
+
+* [ ] `+avow-protocol+` — no tests (ReScript source exists)
+* [ ] `+contractiles+` — no tests
+* [ ] `+lol+` — no tests
+* [ ] `+overlay-protocol+` — no tests
+* [ ] `+k9-svc+` — no tests (mirrors a2ml structure, same test pattern
+applies)
+* [ ] All Zig `+integration_test.zig+` files in sub-projects — all are
+templates with `+{{project}}+` placeholders
+
+===== Idris2
+
+* [ ] Idris2 compilation verification for `+a2ml/src/A2ML/+` (Tests.idr
+exists but cannot verify without idris2 binary)
+* [ ] Idris2 proof verification for `+a2ml/src/A2ML/Proofs.idr+`
+
+==== Benchmark Gaps
+
+* [ ] Network-level grv6 benchmark (frame roundtrip throughput over
+loopback) — requires live env
+* [ ] A2ML document parser throughput (Idris2 parser bench) — requires
+idris2 binary
+* [ ] FUSE filesystem overhead vs native filesystem — requires live env
+
+=== Priority: P0 (CRITICAL)
diff --git a/TEST-NEEDS.md b/TEST-NEEDS.md
deleted file mode 100644
index d60b5f82..00000000
--- a/TEST-NEEDS.md
+++ /dev/null
@@ -1,225 +0,0 @@
-# TEST-NEEDS: standards
-
-## CRG Grade: B/A (Targeting)
-To achieve CRG Grades B and above, projects MUST implement **Zigzag Testing** for their critical paths, following the [ZIGZAG-TESTING.md](./ZIGZAG-TESTING.md) methodology.
-
-## CRG Grade: C — ACHIEVED 2026-04-04
-
-All CRG C categories are present and passing. See breakdown below.
-
-| CRG C Category | Status | Count | Details |
-|----------------|--------|-------|---------|
-| **Unit** | PASS | 100+ | Inline (#[test]) in parser.rs, renderer.rs + integration tests |
-| **Smoke** | PASS | 9 | smoke_* tests in a2ml + k9-svc crg_c_tests.rs |
-| **P2P (property-based)** | PASS | 15+ | proptest suites in a2ml + k9-svc crg_c_tests.rs |
-| **E2E / Reflexive** | PASS | 4 | Dogfood: parse standards manifest + round-trip constructed docs |
-| **Contract** | PASS | 13 | Pre/post-condition tests in a2ml + k9-svc crg_c_tests.rs |
-| **Aspect** | PASS | 14 | Security (injection, large input, null bytes, unicode) + error-handling |
-| **Benchmarks (baselined)** | PASS | 10+ | Criterion: a2ml_bench + k9_bench; Zig: grv6; Deno: manifest |
-
-## Current State
-
-| Category | Count | Details |
-|----------|-------|---------|
-| **Source modules** | 358+ | Massive monorepo: 0-ai-gatekeeper-protocol (mcp-repo-guardian, repo-guardian-fs), a2ml, axel-protocol, groove-protocol, contractiles, and many more sub-projects |
-| **Unit tests** | 158+ | Real tests across 6 test suites (see breakdown below) |
-| **P2P (property) tests** | 15+ | proptest in a2ml + k9-svc integration test files |
-| **Contract tests** | 13 | Pre/post-condition tests in a2ml + k9-svc |
-| **Aspect tests** | 14 | Security + error-handling cross-cutting tests |
-| **E2E tests** | 4 | Dogfood: parse real manifests + round-trip stability |
-| **Benchmarks** | 22+ | Criterion (a2ml + k9-svc) + Zig (grv6) + Deno (manifest) |
-| **Fuzz tests** | 0 | Placeholder removed; real fuzz TODO |
-
-## Test Suite Breakdown (as of 2026-04-04)
-
-### groove-protocol/reference/ipv6t — 10 tests (Zig)
-
-Run: `zig build test` from `groove-protocol/reference/ipv6t/`
-
-All 10 tests pass. Cover all 5 spec validation scenarios + 5 property tests:
-- [x] Positive: correct type hash accepted
-- [x] Negative: wrong type hash rejected before payload parsing
-- [x] Provenance: 3 chained frames produce verifiable hash chain
-- [x] Fallback: raw bytes without magic treated as untyped
-- [x] Trust flag: PROVEN flag does not bypass type hash validation
-- [x] Header size is exactly 108 bytes
-- [x] Hash determinism: same input always same hash
-- [x] Multiple type acceptance: reader accepts any of N expected types
-- [x] Trust level correctly derived from flags
-- [x] Hash hex formatting is correct
-
-**Benchmarks**: `zig build bench` — measures hash computation throughput:
-- SHA-256 type hash: ~4.3µs/iter
-- SHA-256 cap hash: ~3.2µs/iter
-- Provenance chain step (2x SHA-256): ~10.2µs/iter
-- Hash hex format: ~57ns/iter (17.5 M/s)
-
-### mcp-repo-guardian — 36 tests (Deno/JS)
-
-Run: `deno task test` from `0-ai-gatekeeper-protocol/mcp-repo-guardian/`
-
-All 36 tests pass. Tests cover:
-- [x] Manifest parsing (hash, canonical locations, invariants)
-- [x] Determinism and hash correctness
-- [x] Session management (create, acknowledge, multi-session isolation)
-- [x] Access guard (denied before ack, allowed after ack, invalid session)
-- [x] Path validation / invariant enforcement (all 7 SCM file variants)
-- [x] **Security aspect**: path traversal in canonical location → safe default
-- [x] **Security aspect**: XSS/injection in manifest → stored as plain text, not executed
-- [x] **Security aspect**: 1MB manifest does not error (no catastrophic regex)
-- [x] **Security aspect**: null bytes in manifest handled
-- [x] **E2E dogfood**: parses standards repo's own `0-AI-MANIFEST.a2ml`
-
-**Benchmarks**: `deno task bench`
-- SHA-256 hash (manifest ~400 bytes): ~4µs/iter
-- Full manifest build: ~5.6µs/iter (hash + 5 regex + date)
-- Session lifecycle: ~7.7µs/iter
-
-### axel-protocol — 14 tests (Deno/TS)
-
-Run: `deno task test` from `axel-protocol/`
-
-All 14 tests pass. Tests cover:
-- [x] Valid AXEL1 DNS TXT record parsing
-- [x] Extra whitespace handling
-- [x] Unknown keys ignored
-- [x] id with equals signs (base64)
-- [x] Reject: missing version, empty payload, whitespace-only
-- [x] Reject: wrong version (AXEL2)
-- [x] Reject: version without value
-- [x] Reject: missing id, empty id, whitespace-only id
-- [x] Reject: full DNS RR line (not just RDATA)
-- [x] Reject: no default version when missing
-
-### repo-guardian-fs/tests-offline — 29 tests (Rust)
-
-Run: `cargo test` from `0-ai-gatekeeper-protocol/repo-guardian-fs/tests-offline/`
-
-All 29 tests pass. **NOTE**: the main `repo-guardian-fs` crate cannot build because
-`fuse3 v0.7.3` is incompatible with Rust stable >= 1.80. The offline test crate
-isolates the manifest and session logic (no fuse3 dependency).
-
-Tests cover:
-- [x] Manifest hash computation (deterministic, 64 hex chars)
-- [x] Canonical location extraction (scm_files, bot_directives)
-- [x] Defaults when canonical location not found
-- [x] Invariant extraction from CORE INVARIANTS section
-- [x] Default invariants when section absent
-- [x] File I/O: parse from file, error on missing file
-- [x] `find_and_parse_manifest` prefers `0-AI-MANIFEST.a2ml` over `AI.a2ml`
-- [x] `find_and_parse_manifest` errors when no manifest exists
-- [x] **Security**: path traversal rejected → safe default used
-- [x] **Security**: 1MB manifest does not panic
-- [x] **Security**: null bytes in manifest do not panic
-- [x] **Security**: 0-AI-MANIFEST.a2ml preferred over AI.a2ml (cannot be spoofed)
-- [x] **E2E dogfood**: parses standards repo's own manifest
-- [x] Session: new session is unacknowledged
-- [x] Session: acknowledgment with correct hash succeeds
-- [x] Session: acknowledgment with wrong hash fails
-- [x] Session: unknown session ID returns error
-- [x] Session: expired session is unacknowledged
-- [x] Session: multiple independent sessions
-- [x] Session: active count tracking
-- [x] Session: cleanup_expired removes expired sessions
-- [x] Session: idempotent get_or_create
-
-### a2ml/bindings/rust — 47 tests (Rust)
-
-Run: `cargo test` from `a2ml/bindings/rust/`
-
-All 47 tests pass (11 inline unit tests + 36 CRG C integration tests).
-
-CRG C integration tests (`tests/crg_c_tests.rs`):
-- [x] **Smoke**: version directive roundtrip, empty document, TrustLevel display (3 tests)
-- [x] **Unit**: heading levels 1-6, attestation all fields, ordered/unordered lists, inline emphasis/strong/code, Manifest extraction, Directive::new (10 tests)
-- [x] **P2P**: TrustLevel from_str canonical + unknown, ordering, display roundtrip; Directive stores verbatim; Attestation stores verbatim; paragraph roundtrip block count (6 proptest functions)
-- [x] **Contract**: parse("") -> empty doc, render always UTF-8, unclosed code block is Err, total order, Document::default equals new, Manifest version None/Some (7 tests)
-- [x] **Aspect/Security**: no script injection in directive, 1MB no panic, null bytes no panic, very long directive name no stackoverflow, unicode content, deep blockquote no stackoverflow (6 tests)
-- [x] **Aspect/Error**: A2mlError::diagnostic non-empty, RenderError diagnostic (2 tests)
-- [x] **E2E/Reflexive**: parse standards repo 0-AI-MANIFEST.a2ml, parse .machine_readable/6a2/STATE.a2ml (2 tests)
-
-**Benchmarks**: `cargo bench` from `a2ml/bindings/rust/`
-- Parse small/medium/large_manifest throughput
-- Render medium throughput
-- Round-trip (parse+render) for small/medium/large
-- TrustLevel comparison micro-benchmark
-
-### k9-svc/bindings/rust — 45 tests (Rust)
-
-Run: `cargo test` from `k9-svc/bindings/rust/`
-
-All 45 tests pass (9 inline unit tests + 3 doc tests + 33 CRG C integration tests).
-
-CRG C integration tests (`tests/crg_c_tests.rs`):
-- [x] **Smoke**: minimal parse, SecurityLevel display, render minimal (3 tests)
-- [x] **Unit**: SecurityLevel ordering, component with description/recipe/contract, multiple contracts, pedigree with license, Component::new minimal, Recipe::new, Contract::new default severity (9 tests)
-- [x] **P2P**: SecurityLevel from_str canonical + unknown, display roundtrip; Component stores verbatim; Pedigree stores verbatim; Contract stores verbatim (6 proptest functions)
-- [x] **Contract**: parse("") -> empty vec, render([]) empty, render always UTF-8, Nickel format rejected, SecurityLevel total order, missing pedigree Err, unknown security level Err (7 tests)
-- [x] **Aspect/Security**: no shell injection in origin, 1MB no panic, null bytes no panic, unicode no panic (4 tests)
-- [x] **Aspect/Error**: K9Error diagnostic non-empty, NickelFormat error message (2 tests)
-- [x] **E2E/Reflexive**: parse .k9 fixtures from k9-svc dir, round-trip constructed component (2 tests)
-
-**Benchmarks**: `cargo bench` from `k9-svc/bindings/rust/`
-- Parse small/medium/multi-component throughput
-- Render medium throughput
-- Round-trip (parse+render) for small/medium/multi
-- SecurityLevel::from_str micro-benchmark
-
-## What Was Fixed in This Session (2026-04-04, session 2)
-
-- [x] Added `proptest` + `criterion` dev-dependencies to `a2ml/bindings/rust/Cargo.toml`
-- [x] Added `proptest` + `criterion` dev-dependencies to `k9-svc/bindings/rust/Cargo.toml`
-- [x] Created `a2ml/bindings/rust/tests/crg_c_tests.rs` — 36 tests covering all CRG C categories
-- [x] Created `a2ml/bindings/rust/benches/a2ml_bench.rs` — Criterion benchmarks (6 bench functions)
-- [x] Created `k9-svc/bindings/rust/tests/crg_c_tests.rs` — 33 tests covering all CRG C categories
-- [x] Created `k9-svc/bindings/rust/benches/k9_bench.rs` — Criterion benchmarks (6 bench functions)
-- [x] All 158+ tests pass across all 6 test suites
-
-## What Was Fixed in Previous Session (2026-04-04, session 1)
-
-- [x] Removed `tests/fuzz/placeholder.txt` (fake fuzz claim)
-- [x] Created 36 real tests for `mcp-repo-guardian` (replacing 0 tests)
-- [x] Created 29 real tests for `repo-guardian-fs` logic (bypassing broken fuse3)
-- [x] Confirmed groove-protocol grv6 10 tests already existed and pass
-- [x] Confirmed axel-protocol 14 tests already existed and pass
-- [x] Created grv6 benchmarks (Zig — `zig build bench`)
-- [x] Created manifest parsing benchmarks (Deno — `deno task bench`)
-- [x] Added `test` and `bench` tasks to `deno.json` files
-
-## What's Still Missing (TODO for v0.3.0)
-
-### BLOCKERS
-- [ ] **fuse3 v0.7.3 incompatible with Rust stable >= 1.80** — `repo-guardian-fs` cannot build.
- Fix: upgrade to `fuse3 v0.9.0` (breaking API changes) or replace with `fuser` crate.
-
-### Tests Still Needed
-
-#### LIVE ENVIRONMENT (cannot run in CI without setup)
-- [ ] `repo-guardian-fs` FUSE mount/unmount lifecycle
-- [ ] `repo-guardian-fs` access control via FUSE operations (open, read, readdir)
-- [ ] `mcp-repo-guardian` MCP server roundtrip (requires running MCP server)
-- [ ] `repo-guardian-fs` concurrent FUSE access (requires FUSE + threads)
-
-#### Property Tests (infrastructure needed)
-- [ ] A2ML parser roundtrip: arbitrary valid A2ML → parse → pretty-print → parse matches
-- [ ] Manifest hash property: hash(content) always 64 hex chars, never the same for different inputs
-- [ ] Groove grv6 property: for any payload and type, type hash mismatch always rejected
-
-#### Missing Sub-projects (358 source files with ~0 tests)
-- [ ] `avow-protocol` — no tests (ReScript source exists)
-- [ ] `contractiles` — no tests
-- [ ] `lol` — no tests
-- [ ] `overlay-protocol` — no tests
-- [ ] `k9-svc` — no tests (mirrors a2ml structure, same test pattern applies)
-- [ ] All Zig `integration_test.zig` files in sub-projects — all are templates with `{{project}}` placeholders
-
-#### Idris2
-- [ ] Idris2 compilation verification for `a2ml/src/A2ML/` (Tests.idr exists but cannot verify without idris2 binary)
-- [ ] Idris2 proof verification for `a2ml/src/A2ML/Proofs.idr`
-
-### Benchmark Gaps
-- [ ] Network-level grv6 benchmark (frame roundtrip throughput over loopback) — requires live env
-- [ ] A2ML document parser throughput (Idris2 parser bench) — requires idris2 binary
-- [ ] FUSE filesystem overhead vs native filesystem — requires live env
-
-## Priority: P0 (CRITICAL)
diff --git a/TOPOLOGY.adoc b/TOPOLOGY.adoc
new file mode 100644
index 00000000..7d628b4b
--- /dev/null
+++ b/TOPOLOGY.adoc
@@ -0,0 +1,188 @@
+== Hyperpolymath Standards — Topology (derived)
+
+____
+This file is *generated* from `+.machine_readable/REGISTRY.a2ml+` and
+`+.machine_readable/6a2/STATE.a2ml+` by `+scripts/build-registry.sh+`.
+It cannot freeze: every regeneration re-reads ground truth. Do not edit
+by hand.
+____
+
+* *Phase:* active | *Maturity:* experimental | *STATE last-updated:*
+2026-06-03T00:00:00Z
+* *Registry entries:* 33 specs across 6 streams
+* *Front door:* human → README.adoc; machine → 0-AI-MANIFEST.a2ml
+* *Registry:* .machine_readable/REGISTRY.a2ml (index + source hashes) ·
+prose: REGISTRY.adoc
+
+=== Specs by stream
+
+==== Foundation — A2ML family + K9 + contractiles (Stream 1)
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|Spec |Home |If you want…
+|A2ML — Attested Markup Language |link:a2ml/[`+a2ml/+`] |the
+typed/verified machine-readable document format
+
+|K9 Self-Validating Components |link:k9-svc/[`+k9-svc/+`]
+|self-validating components with embedded contracts + deploy logic
+
+|Contractiles (Must/Trust/Dust/Intend)
+|link:contractiles/[`+contractiles/+`] |policy-enforcement primitives
+the K9 layer is built from
+
+|META.a2ml spec |link:meta-a2ml/[`+meta-a2ml/+`] |architecture decisions
+/ governance metadata format
+
+|STATE.a2ml spec |link:state-a2ml/[`+state-a2ml/+`] |project-state
+metadata format (drives this registry’s topology)
+
+|ECOSYSTEM.a2ml spec |link:ecosystem-a2ml/[`+ecosystem-a2ml/+`]
+|ecosystem-positioning metadata format
+
+|AGENTIC.a2ml spec |link:agentic-a2ml/[`+agentic-a2ml/+`] |AI-agent
+operational gating / entropy budgets
+
+|NEUROSYM.a2ml spec |link:neurosym-a2ml/[`+neurosym-a2ml/+`] |symbolic
+semantics / proof obligations
+
+|PLAYBOOK.a2ml spec |link:playbook-a2ml/[`+playbook-a2ml/+`] |executable
+operational runbooks
+
+|ANCHOR.a2ml spec |link:anchor-a2ml/[`+anchor-a2ml/+`]
+|project-recalibration intervention format
+|===
+
+==== Language — AffineScript + language policy (Stream 2)
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|Spec |Home |If you want…
+|AffineScript .affine (faces / source documents)
+|https://github.com/hyperpolymath/affinescript/blob/main/spec/affine.adoc[`+hyperpolymath/affinescript+`]
+`+@ v2.0.0+` ⇗ |faces, canonical-lowering invariant, canonical islands,
+idiom packs, mimicry bindings, project face policy
+
+|AffineScript .affex (face-interop manifest)
+|https://github.com/hyperpolymath/affinescript/blob/main/spec/affex.adoc[`+hyperpolymath/affinescript+`]
+`+@ v2.0.0+` ⇗ |derived regenerable manifest; declaration heads not full
+bodies; format_version bumps independently
+
+|AffineScript .affmap (provenance)
+|https://github.com/hyperpolymath/affinescript/blob/main/spec/affmap.adoc[`+hyperpolymath/affinescript+`]
+`+@ v2.0.0+` ⇗ |provenance format; own pointer for independent staleness
+tracking
+|===
+
+==== Protocols
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|Spec |Home |If you want…
+|0-AI Gatekeeper Protocol
+|link:0-ai-gatekeeper-protocol/[`+0-ai-gatekeeper-protocol/+`] |the
+AI-agent entry/gating protocol behind 0-AI-MANIFEST
+
+|K9 Coordination Protocol
+|link:k9-coordination-protocol/[`+k9-coordination-protocol/+`]
+|multi-agent coordination on top of K9
+
+|AVOW Protocol |link:avow-protocol/[`+avow-protocol/+`]
+|consent-attested messaging / origin attribution
+
+|AXEL Protocol |link:axel-protocol/[`+axel-protocol/+`] |age-gating +
+explicit-content enforcement
+
+|Overlay Protocol |link:overlay-protocol/[`+overlay-protocol/+`]
+|layered overlay composition spec
+
+|Consent-Aware Web (AIBDP + HTTP 430)
+|https://github.com/metadatastician/consent-aware-web/blob/main/README.adoc[`+metadatastician/consent-aware-web+`]
+`+@ v0.2.0+` ⇗ |consent headers / AI-usage boundaries for HTTP;
+extracted from this repo 2026-08-07
+|===
+
+==== Governance — RSR, gates, session standards
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|Spec |Home |If you want…
+|Hyperpolymath Estate Constitution
+|link:constitution/[`+constitution/+`] |the highest estate-level rules,
+authority precedence, assurance, contribution, exceptions, and known
+tensions
+
+|RSR — Rhodium Standard Repositories
+|link:rhodium-standard-repositories/[`+rhodium-standard-repositories/+`]
+|the repository-compliance standard every repo is graded against
+
+|Session Management Standards
+|link:session-management-standards/[`+session-management-standards/+`]
+|continuity / verify / handover protocols
+
+|DYADT — Did-You-Actually-Do-That
+|link:did-you-actually-do-that/[`+did-you-actually-do-that/+`]
+|post-action agent-claim verification (Tier 4 accountability)
+
+|ENSAID Config |link:ensaid-config/[`+ensaid-config/+`] |the ensaid
+configuration standard
+
+|Accessibility Standard |link:accessibility/[`+accessibility/+`] |estate
+accessibility requirements
+
+|Publication Pre-Flight
+|link:publication-pre-flight/[`+publication-pre-flight/+`] |submission
+gate (HOL + Zenodo checklists)
+
+|Release Pre-Flight (V1 Gate)
+|link:release-pre-flight/[`+release-pre-flight/+`] |hard v1.0.0 audit
+requirements
+|===
+
+==== Readiness grading — ARG / FRG / CRG / TRG
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|Spec |Home |If you want…
+|ARG — Adoption Readiness Grades
+|link:adoption-readiness-grades/[`+adoption-readiness-grades/+`]
+|per-language adoption-maturity profile templates
+
+|FRG — Foundations Readiness Grades
+|link:foundations-readiness-grades/[`+foundations-readiness-grades/+`]
+|per-language foundational-maturity profile templates
+
+|CRG — Component Readiness Grades
+|link:component-readiness-grades/[`+component-readiness-grades/+`] |the
+X..A grading system for components
+
+|TRG — Toolchain Readiness Grades
+|link:toolchain-readiness-grades/[`+toolchain-readiness-grades/+`]
+|per-toolchain readiness profile templates
+|===
+
+==== Integration — registry, hypatia rules, templates (Stream 3)
+
+[width="100%",cols="34%,33%,33%",options="header",]
+|===
+|Spec |Home |If you want…
+|Standards Hypatia Rules |link:hypatia-rules/[`+hypatia-rules/+`] |the
+dogfooding rules that scan THIS repo (incl. drift detection)
+
+|A2ML Templates |link:a2ml-templates/[`+a2ml-templates/+`] |copy-in
+templates for the 7 A2ML files
+|===
+
+=== How this map stays honest
+
+....
+file tree + STATE.a2ml ──► scripts/build-registry.sh ──► REGISTRY.a2ml ──► TOPOLOGY.md
+ ▲ │
+ │ ▼
+ just registry / CI HYP-S006 (registry-staleness)
+ (registry-verify.yml) emits doc.drift on hash mismatch
+....
+
+Regenerate after any spec change: `+just registry+` (writes
+REGISTRY.a2ml + TOPOLOGY.md). CI (`+registry-verify.yml+`) runs
+`+--check+` and fails the build if either is stale.
diff --git a/TOPOLOGY.md b/TOPOLOGY.md
deleted file mode 100644
index 6bd05b54..00000000
--- a/TOPOLOGY.md
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-# Hyperpolymath Standards — Topology (derived)
-
-> This file is **generated** from `.machine_readable/REGISTRY.a2ml` and
-> `.machine_readable/6a2/STATE.a2ml` by `scripts/build-registry.sh`.
-> It cannot freeze: every regeneration re-reads ground truth. Do not edit by hand.
-
-- **Phase:** active | **Maturity:** experimental | **STATE last-updated:** 2026-06-03T00:00:00Z
-- **Registry entries:** 33 specs across 6 streams
-- **Front door:** human → [README.adoc](README.adoc); machine → [0-AI-MANIFEST.a2ml](0-AI-MANIFEST.a2ml)
-- **Registry:** [.machine_readable/REGISTRY.a2ml](.machine_readable/REGISTRY.a2ml) (index + source hashes) · prose: [REGISTRY.adoc](REGISTRY.adoc)
-
-## Specs by stream
-
-### Foundation — A2ML family + K9 + contractiles (Stream 1)
-
-| Spec | Home | If you want… |
-|---|---|---|
-| A2ML — Attested Markup Language | [`a2ml/`](a2ml/) | the typed/verified machine-readable document format |
-| K9 Self-Validating Components | [`k9-svc/`](k9-svc/) | self-validating components with embedded contracts + deploy logic |
-| Contractiles (Must/Trust/Dust/Intend) | [`contractiles/`](contractiles/) | policy-enforcement primitives the K9 layer is built from |
-| META.a2ml spec | [`meta-a2ml/`](meta-a2ml/) | architecture decisions / governance metadata format |
-| STATE.a2ml spec | [`state-a2ml/`](state-a2ml/) | project-state metadata format (drives this registry's topology) |
-| ECOSYSTEM.a2ml spec | [`ecosystem-a2ml/`](ecosystem-a2ml/) | ecosystem-positioning metadata format |
-| AGENTIC.a2ml spec | [`agentic-a2ml/`](agentic-a2ml/) | AI-agent operational gating / entropy budgets |
-| NEUROSYM.a2ml spec | [`neurosym-a2ml/`](neurosym-a2ml/) | symbolic semantics / proof obligations |
-| PLAYBOOK.a2ml spec | [`playbook-a2ml/`](playbook-a2ml/) | executable operational runbooks |
-| ANCHOR.a2ml spec | [`anchor-a2ml/`](anchor-a2ml/) | project-recalibration intervention format |
-
-### Language — AffineScript + language policy (Stream 2)
-
-| Spec | Home | If you want… |
-|---|---|---|
-| AffineScript .affine (faces / source documents) | [`hyperpolymath/affinescript`](https://github.com/hyperpolymath/affinescript/blob/main/spec/affine.adoc) `@ v2.0.0` ⇗ | faces, canonical-lowering invariant, canonical islands, idiom packs, mimicry bindings, project face policy |
-| AffineScript .affex (face-interop manifest) | [`hyperpolymath/affinescript`](https://github.com/hyperpolymath/affinescript/blob/main/spec/affex.adoc) `@ v2.0.0` ⇗ | derived regenerable manifest; declaration heads not full bodies; format_version bumps independently |
-| AffineScript .affmap (provenance) | [`hyperpolymath/affinescript`](https://github.com/hyperpolymath/affinescript/blob/main/spec/affmap.adoc) `@ v2.0.0` ⇗ | provenance format; own pointer for independent staleness tracking |
-
-### Protocols
-
-| Spec | Home | If you want… |
-|---|---|---|
-| 0-AI Gatekeeper Protocol | [`0-ai-gatekeeper-protocol/`](0-ai-gatekeeper-protocol/) | the AI-agent entry/gating protocol behind 0-AI-MANIFEST |
-| K9 Coordination Protocol | [`k9-coordination-protocol/`](k9-coordination-protocol/) | multi-agent coordination on top of K9 |
-| AVOW Protocol | [`avow-protocol/`](avow-protocol/) | consent-attested messaging / origin attribution |
-| AXEL Protocol | [`axel-protocol/`](axel-protocol/) | age-gating + explicit-content enforcement |
-| Overlay Protocol | [`overlay-protocol/`](overlay-protocol/) | layered overlay composition spec |
-| Consent-Aware Web (AIBDP + HTTP 430) | [`metadatastician/consent-aware-web`](https://github.com/metadatastician/consent-aware-web/blob/main/README.adoc) `@ v0.2.0` ⇗ | consent headers / AI-usage boundaries for HTTP; extracted from this repo 2026-08-07 |
-
-### Governance — RSR, gates, session standards
-
-| Spec | Home | If you want… |
-|---|---|---|
-| Hyperpolymath Estate Constitution | [`constitution/`](constitution/) | the highest estate-level rules, authority precedence, assurance, contribution, exceptions, and known tensions |
-| RSR — Rhodium Standard Repositories | [`rhodium-standard-repositories/`](rhodium-standard-repositories/) | the repository-compliance standard every repo is graded against |
-| Session Management Standards | [`session-management-standards/`](session-management-standards/) | continuity / verify / handover protocols |
-| DYADT — Did-You-Actually-Do-That | [`did-you-actually-do-that/`](did-you-actually-do-that/) | post-action agent-claim verification (Tier 4 accountability) |
-| ENSAID Config | [`ensaid-config/`](ensaid-config/) | the ensaid configuration standard |
-| Accessibility Standard | [`accessibility/`](accessibility/) | estate accessibility requirements |
-| Publication Pre-Flight | [`publication-pre-flight/`](publication-pre-flight/) | submission gate (HOL + Zenodo checklists) |
-| Release Pre-Flight (V1 Gate) | [`release-pre-flight/`](release-pre-flight/) | hard v1.0.0 audit requirements |
-
-### Readiness grading — ARG / FRG / CRG / TRG
-
-| Spec | Home | If you want… |
-|---|---|---|
-| ARG — Adoption Readiness Grades | [`adoption-readiness-grades/`](adoption-readiness-grades/) | per-language adoption-maturity profile templates |
-| FRG — Foundations Readiness Grades | [`foundations-readiness-grades/`](foundations-readiness-grades/) | per-language foundational-maturity profile templates |
-| CRG — Component Readiness Grades | [`component-readiness-grades/`](component-readiness-grades/) | the X..A grading system for components |
-| TRG — Toolchain Readiness Grades | [`toolchain-readiness-grades/`](toolchain-readiness-grades/) | per-toolchain readiness profile templates |
-
-### Integration — registry, hypatia rules, templates (Stream 3)
-
-| Spec | Home | If you want… |
-|---|---|---|
-| Standards Hypatia Rules | [`hypatia-rules/`](hypatia-rules/) | the dogfooding rules that scan THIS repo (incl. drift detection) |
-| A2ML Templates | [`a2ml-templates/`](a2ml-templates/) | copy-in templates for the 7 A2ML files |
-
-## How this map stays honest
-
-```
-file tree + STATE.a2ml ──► scripts/build-registry.sh ──► REGISTRY.a2ml ──► TOPOLOGY.md
- ▲ │
- │ ▼
- just registry / CI HYP-S006 (registry-staleness)
- (registry-verify.yml) emits doc.drift on hash mismatch
-```
-
-Regenerate after any spec change: `just registry` (writes REGISTRY.a2ml + TOPOLOGY.md).
-CI (`registry-verify.yml`) runs `--check` and fails the build if either is stale.
diff --git a/ZIGZAG-TESTING.adoc b/ZIGZAG-TESTING.adoc
index cefbc099..58d48d0a 100644
--- a/ZIGZAG-TESTING.adoc
+++ b/ZIGZAG-TESTING.adoc
@@ -1,49 +1,68 @@
-= Zigzag Testing: Aspect-Oriented Analysis and Synthesis
+== Zigzag Testing: Aspect-Oriented Analysis and Synthesis
-== 1. Introduction
-Zigzag Testing is an advanced testing methodology designed to perform aspect-oriented analysis and synthesis by charting a collection of meandering routes through a system's design.
+=== 1. Introduction
-Unlike traditional linear integration testing (which verifies a single end-to-end happy path) or pure property-based testing (which verifies invariants on a single component), Zigzag testing deliberately crosses horizontal and vertical boundaries. It validates that cross-cutting concerns (e.g., authentication, telemetry, state persistence, failure recovery) interact correctly under chaotic, stateful traversal.
+Zigzag Testing is an advanced testing methodology designed to perform
+aspect-oriented analysis and synthesis by charting a collection of
+meandering routes through a system’s design.
-== 2. Core Concepts
+Unlike traditional linear integration testing (which verifies a single
+end-to-end happy path) or pure property-based testing (which verifies
+invariants on a single component), Zigzag testing deliberately crosses
+horizontal and vertical boundaries. It validates that cross-cutting
+concerns (e.g., authentication, telemetry, state persistence, failure
+recovery) interact correctly under chaotic, stateful traversal.
-=== 2.1 Aspect-Oriented Analysis and Synthesis
-Systems are composed of overlapping "aspects" (security, networking, DB logic, domain logic). Zigzag testing analyzes these aspects individually and synthesizes tests that verify their intersections.
+=== 2. Core Concepts
-* **Analysis**: Decompose the system into orthogonal aspects.
-* **Synthesis**: Recombine these aspects into meandering operational routes that cross boundaries.
+==== 2.1 Aspect-Oriented Analysis and Synthesis
-=== 2.2 Meandering Routes
-A meandering route is a non-linear test execution path. Instead of `A -> B -> C`, a meandering route might trace `A -> trigger aspect X -> induce failure in B -> verify aspect Y -> C`.
+Systems are composed of overlapping "`aspects`" (security, networking,
+DB logic, domain logic). Zigzag testing analyzes these aspects
+individually and synthesizes tests that verify their intersections. -
+*Analysis*: Decompose the system into orthogonal aspects. - *Synthesis*:
+Recombine these aspects into meandering operational routes that cross
+boundaries.
-* **State-Machine Traversal**: Tests are modeled as state machines where transitions represent API calls or events.
-* **Random Walks**: Property-based testing engines execute random walks through the state machine.
-* **Cross-Cutting Verification**: After each step, global invariants (like "no orphaned database connections" or "telemetry was emitted") are asserted.
+==== 2.2 Meandering Routes
-=== 2.3 Scope, Locality, and Effects Analysis
-A proper Zigzag Test must comprehensively map the inputs, outputs, and their ripple effects across the system. This requires tracking the state in the immediate locality of the place and time of the test, as well as the broader impact:
+A meandering route is a non-linear test execution path. Instead of
+`+A -> B -> C+`, a meandering route might trace
+`+A -> trigger aspect X -> induce failure in B -> verify aspect Y -> C+`.
+- *State-Machine Traversal*: Tests are modeled as state machines where
+transitions represent API calls or events. - *Random Walks*:
+Property-based testing engines execute random walks through the state
+machine. - *Cross-Cutting Verification*: After each step, global
+invariants (like "`no orphaned database connections`" or "`telemetry was
+emitted`") are asserted.
-* **Upstream and Downstream Dependencies**: Explicitly track systems or components that feed data into the aspect (upstream) and those that consume its outputs (downstream), including strict versioning of these dependencies.
-* **Inputs and Outputs**: Map the full scope of things consumed (inputs) and things outputted (outputs) at each node of the meandering route.
-* **Locality (Spatial & Temporal)**: Ensure the test context accounts for the immediate locality of the operation—both where it happens (spatial/network locality) and when it happens (temporal locality/timing).
-* **Side-Effect Tracing**: Measure and verify any secondary effects felt by the system (e.g., side-channels, caching behavior, rate-limiting triggers) resulting from the primary inputs and outputs.
+=== 3. Implementation in the Estate
-== 3. Implementation in the Estate
-The preferred languages for implementing Zigzag Tests across the estate are **Idris2** and **Elixir**. Additionally, reference aspects can be seen implemented natively in **Rust** (e.g., in the `patch-bridge` repository).
+The preferred languages for implementing Zigzag Tests across the estate
+are *Idris2* and *Elixir*.
-=== 3.1 Idris2 (Algebraic Modeling)
-Idris2 is used to rigorously model the state machine and aspects using dependent types.
+==== 3.1 Idris2 (Algebraic Modeling)
-* **Algebras**: Define the system aspects as algebraic data types.
-* **Proofs**: Use dependent types to prove that invalid states cannot be represented.
-* **Code Generation**: Idris2 models can generate test sequences or API payloads that are guaranteed to be structurally valid.
+Idris2 is used to rigorously model the state machine and aspects using
+dependent types. - *Algebras*: Define the system aspects as algebraic
+data types. - *Proofs*: Use dependent types to prove that invalid states
+cannot be represented. - *Code Generation*: Idris2 models can generate
+test sequences or API payloads that are guaranteed to be structurally
+valid.
-=== 3.2 Elixir (Concurrency and Fault Tolerance)
-Elixir (running on the BEAM) is used as the execution engine for the meandering routes.
+==== 3.2 Elixir (Concurrency and Fault Tolerance)
-* **PropEr / StreamData**: Use Elixir's property-based testing libraries to generate random walks through the state transitions.
-* **OTP Processes**: Spawn concurrent actors to simulate meandering routes in parallel, stress-testing aspects like race conditions and distributed state.
-* **Fault Injection**: Intentionally crash GenServers (aspect failure) during a route to verify self-healing (synthesis).
+Elixir (running on the BEAM) is used as the execution engine for the
+meandering routes. - *PropEr / StreamData*: Use Elixir’s property-based
+testing libraries to generate random walks through the state
+transitions. - *OTP Processes*: Spawn concurrent actors to simulate
+meandering routes in parallel, stress-testing aspects like race
+conditions and distributed state. - *Fault Injection*: Intentionally
+crash GenServers (aspect failure) during a route to verify self-healing
+(synthesis).
-== 4. Requirement (CRG Grading)
-To achieve a Code Review Guidelines (CRG) Grade of **A** or **B**, core infrastructure and high-criticality services MUST implement Zigzag Testing for their critical paths.
+=== 4. Requirement (CRG Grading)
+
+To achieve a Code Review Guidelines (CRG) Grade of *A* or *B*, core
+infrastructure and high-criticality services MUST implement Zigzag
+Testing for their critical paths.
diff --git a/ZIGZAG-TESTING.md b/ZIGZAG-TESTING.md
deleted file mode 100755
index ccb58573..00000000
--- a/ZIGZAG-TESTING.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Zigzag Testing: Aspect-Oriented Analysis and Synthesis
-
-## 1. Introduction
-Zigzag Testing is an advanced testing methodology designed to perform aspect-oriented analysis and synthesis by charting a collection of meandering routes through a system's design.
-
-Unlike traditional linear integration testing (which verifies a single end-to-end happy path) or pure property-based testing (which verifies invariants on a single component), Zigzag testing deliberately crosses horizontal and vertical boundaries. It validates that cross-cutting concerns (e.g., authentication, telemetry, state persistence, failure recovery) interact correctly under chaotic, stateful traversal.
-
-## 2. Core Concepts
-
-### 2.1 Aspect-Oriented Analysis and Synthesis
-Systems are composed of overlapping "aspects" (security, networking, DB logic, domain logic). Zigzag testing analyzes these aspects individually and synthesizes tests that verify their intersections.
-- **Analysis**: Decompose the system into orthogonal aspects.
-- **Synthesis**: Recombine these aspects into meandering operational routes that cross boundaries.
-
-### 2.2 Meandering Routes
-A meandering route is a non-linear test execution path. Instead of `A -> B -> C`, a meandering route might trace `A -> trigger aspect X -> induce failure in B -> verify aspect Y -> C`.
-- **State-Machine Traversal**: Tests are modeled as state machines where transitions represent API calls or events.
-- **Random Walks**: Property-based testing engines execute random walks through the state machine.
-- **Cross-Cutting Verification**: After each step, global invariants (like "no orphaned database connections" or "telemetry was emitted") are asserted.
-
-## 3. Implementation in the Estate
-The preferred languages for implementing Zigzag Tests across the estate are **Idris2** and **Elixir**.
-
-### 3.1 Idris2 (Algebraic Modeling)
-Idris2 is used to rigorously model the state machine and aspects using dependent types.
-- **Algebras**: Define the system aspects as algebraic data types.
-- **Proofs**: Use dependent types to prove that invalid states cannot be represented.
-- **Code Generation**: Idris2 models can generate test sequences or API payloads that are guaranteed to be structurally valid.
-
-### 3.2 Elixir (Concurrency and Fault Tolerance)
-Elixir (running on the BEAM) is used as the execution engine for the meandering routes.
-- **PropEr / StreamData**: Use Elixir's property-based testing libraries to generate random walks through the state transitions.
-- **OTP Processes**: Spawn concurrent actors to simulate meandering routes in parallel, stress-testing aspects like race conditions and distributed state.
-- **Fault Injection**: Intentionally crash GenServers (aspect failure) during a route to verify self-healing (synthesis).
-
-## 4. Requirement (CRG Grading)
-To achieve a Code Review Guidelines (CRG) Grade of **A** or **B**, core infrastructure and high-criticality services MUST implement Zigzag Testing for their critical paths.
diff --git a/a2ml/ABI-FFI-README.adoc b/a2ml/ABI-FFI-README.adoc
new file mode 100644
index 00000000..f883150d
--- /dev/null
+++ b/a2ml/ABI-FFI-README.adoc
@@ -0,0 +1,409 @@
+\{\{~ Aditionally delete this line and fill out the template below ~}}
+
+== \{\{PROJECT}} ABI/FFI Documentation
+
+=== Overview
+
+This library follows the *Hyperpolymath RSR Standard* for ABI and FFI
+design:
+
+* *ABI (Application Binary Interface)* defined in *Idris2* with formal
+proofs
+* *FFI (Foreign Function Interface)* implemented in *Zig* for C
+compatibility
+* *Generated C headers* bridge Idris2 ABI to Zig FFI
+* *Any language* can call through standard C ABI
+
+=== Architecture
+
+....
+┌─────────────────────────────────────────────┐
+│ ABI Definitions (Idris2) │
+│ src/abi/ │
+│ - Types.idr (Type definitions) │
+│ - Layout.idr (Memory layout proofs) │
+│ - Foreign.idr (FFI declarations) │
+└─────────────────┬───────────────────────────┘
+ │
+ │ generates (at compile time)
+ ▼
+┌─────────────────────────────────────────────┐
+│ C Headers (auto-generated) │
+│ generated/abi/{{project}}.h │
+└─────────────────┬───────────────────────────┘
+ │
+ │ imported by
+ ▼
+┌─────────────────────────────────────────────┐
+│ FFI Implementation (Zig) │
+│ ffi/zig/src/main.zig │
+│ - Implements C-compatible functions │
+│ - Zero-cost abstractions │
+│ - Memory-safe by default │
+└─────────────────┬───────────────────────────┘
+ │
+ │ compiled to lib{{project}}.so/.a
+ ▼
+┌─────────────────────────────────────────────┐
+│ Any Language via C ABI │
+│ - Rust, ReScript, Julia, Python, etc. │
+└─────────────────────────────────────────────┘
+....
+
+=== Directory Structure
+
+....
+{{project}}/
+├── src/
+│ ├── abi/ # ABI definitions (Idris2)
+│ │ ├── Types.idr # Core type definitions with proofs
+│ │ ├── Layout.idr # Memory layout verification
+│ │ └── Foreign.idr # FFI function declarations
+│ └── lib/ # Core library (any language)
+│
+├── ffi/
+│ └── zig/ # FFI implementation (Zig)
+│ ├── build.zig # Build configuration
+│ ├── build.zig.zon # Dependencies
+│ ├── src/
+│ │ └── main.zig # C-compatible FFI implementation
+│ ├── test/
+│ │ └── integration_test.zig
+│ └── include/
+│ └── {{project}}.h # C header (optional, can be generated)
+│
+├── generated/ # Auto-generated files
+│ └── abi/
+│ └── {{project}}.h # Generated from Idris2 ABI
+│
+└── bindings/ # Language-specific wrappers (optional)
+ ├── rust/
+ ├── rescript/
+ └── julia/
+....
+
+=== Why Idris2 for ABI?
+
+==== 1. *Formal Verification*
+
+Idris2’s dependent types allow proving properties about the ABI at
+compile-time:
+
+[source,idris]
+----
+-- Prove struct size is correct
+public export
+exampleStructSize : HasSize ExampleStruct 16
+
+-- Prove field alignment is correct
+public export
+fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
+
+-- Prove ABI is platform-compatible
+public export
+abiCompatible : Compatible (ABI 1) (ABI 2)
+----
+
+==== 2. *Type Safety*
+
+Encode invariants that C/Zig cannot express:
+
+[source,idris]
+----
+-- Non-null pointer guaranteed at type level
+data Handle : Type where
+ MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
+
+-- Array with length proof
+data Buffer : (n : Nat) -> Type where
+ MkBuffer : Vect n Byte -> Buffer n
+----
+
+==== 3. *Platform Abstraction*
+
+Platform-specific types with compile-time selection:
+
+[source,idris]
+----
+CInt : Platform -> Type
+CInt Linux = Bits32
+CInt Windows = Bits32
+
+CSize : Platform -> Type
+CSize Linux = Bits64
+CSize Windows = Bits64
+----
+
+==== 4. *Safe Evolution*
+
+Prove that new ABI versions are backward-compatible:
+
+[source,idris]
+----
+-- Compiler enforces compatibility
+abiUpgrade : ABI 1 -> ABI 2
+abiUpgrade old = MkABI2 {
+ -- Must preserve all v1 fields
+ v1_compat = old,
+ -- Can add new fields
+ new_features = defaults
+}
+----
+
+=== Why Zig for FFI?
+
+==== 1. *C ABI Compatibility*
+
+Zig exports C-compatible functions naturally:
+
+[source,zig]
+----
+export fn library_function(param: i32) i32 {
+ return param * 2;
+}
+----
+
+==== 2. *Memory Safety*
+
+Compile-time safety without runtime overhead:
+
+[source,zig]
+----
+// Null check enforced at compile time
+const handle = init() orelse return error.InitFailed;
+defer free(handle);
+----
+
+==== 3. *Cross-Compilation*
+
+Built-in cross-compilation to any platform:
+
+[source,bash]
+----
+zig build -Dtarget=x86_64-linux
+zig build -Dtarget=aarch64-macos
+zig build -Dtarget=x86_64-windows
+----
+
+==== 4. *Zero Dependencies*
+
+No runtime, no libc required (unless explicitly needed):
+
+[source,zig]
+----
+// Minimal binary size
+pub const lib = @import("std");
+// Only includes what you use
+----
+
+=== Building
+
+==== Build FFI Library
+
+[source,bash]
+----
+cd ffi/zig
+zig build # Build debug
+zig build -Doptimize=ReleaseFast # Build optimized
+zig build test # Run tests
+----
+
+==== Generate C Header from Idris2 ABI
+
+[source,bash]
+----
+cd src/abi
+idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
+----
+
+==== Cross-Compile
+
+[source,bash]
+----
+cd ffi/zig
+
+# Linux x86_64
+zig build -Dtarget=x86_64-linux
+
+# macOS ARM64
+zig build -Dtarget=aarch64-macos
+
+# Windows x86_64
+zig build -Dtarget=x86_64-windows
+----
+
+=== Usage
+
+==== From C
+
+[source,c]
+----
+#include "{{project}}.h"
+
+int main() {
+ void* handle = {{project}}_init();
+ if (!handle) return 1;
+
+ int result = {{project}}_process(handle, 42);
+ if (result != 0) {
+ const char* err = {{project}}_last_error();
+ fprintf(stderr, "Error: %s\n", err);
+ }
+
+ {{project}}_free(handle);
+ return 0;
+}
+----
+
+Compile with:
+
+[source,bash]
+----
+gcc -o example example.c -l{{project}} -L./zig-out/lib
+----
+
+==== From Idris2
+
+[source,idris]
+----
+import {{PROJECT}}.ABI.Foreign
+
+main : IO ()
+main = do
+ Just handle <- init
+ | Nothing => putStrLn "Failed to initialize"
+
+ Right result <- process handle 42
+ | Left err => putStrLn $ "Error: " ++ errorDescription err
+
+ free handle
+ putStrLn "Success"
+----
+
+==== From Rust
+
+[source,rust]
+----
+#[link(name = "{{project}}")]
+extern "C" {
+ fn {{project}}_init() -> *mut std::ffi::c_void;
+ fn {{project}}_free(handle: *mut std::ffi::c_void);
+ fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
+}
+
+fn main() {
+ unsafe {
+ let handle = {{project}}_init();
+ assert!(!handle.is_null());
+
+ let result = {{project}}_process(handle, 42);
+ assert_eq!(result, 0);
+
+ {{project}}_free(handle);
+ }
+}
+----
+
+==== From Julia
+
+[source,julia]
+----
+const lib{{project}} = "lib{{project}}"
+
+function init()
+ handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
+ handle == C_NULL && error("Failed to initialize")
+ handle
+end
+
+function process(handle, input)
+ result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
+ result
+end
+
+function cleanup(handle)
+ ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
+end
+
+# Usage
+handle = init()
+try
+ result = process(handle, 42)
+ println("Result: $result")
+finally
+ cleanup(handle)
+end
+----
+
+=== Testing
+
+==== Unit Tests (Zig)
+
+[source,bash]
+----
+cd ffi/zig
+zig build test
+----
+
+==== Integration Tests
+
+[source,bash]
+----
+cd ffi/zig
+zig build test-integration
+----
+
+==== ABI Verification (Idris2)
+
+[source,idris]
+----
+-- Compile-time verification
+%runElab verifyABI
+
+-- Runtime checks
+main : IO ()
+main = do
+ verifyLayoutsCorrect
+ verifyAlignmentsCorrect
+ putStrLn "ABI verification passed"
+----
+
+=== Contributing
+
+When modifying the ABI/FFI:
+
+[arabic]
+. *Update ABI first* (`+src/abi/*.idr+`)
+* Modify type definitions
+* Update proofs
+* Ensure backward compatibility
+. *Generate C header*
++
+[source,bash]
+----
+idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
+----
+. *Update FFI implementation* (`+ffi/zig/src/main.zig+`)
+* Implement new functions
+* Match ABI types exactly
+. *Add tests*
+* Unit tests in Zig
+* Integration tests
+* ABI verification tests
+. *Update documentation*
+* Function signatures
+* Usage examples
+* Migration guide (if breaking changes)
+
+=== License
+
+PMPL-1.0-or-later
+
+=== See Also
+
+* https://idris2.readthedocs.io[Idris2 Documentation]
+* https://ziglang.org/documentation/master/[Zig Documentation]
+* https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium
+Standard Repositories]
+* link:../ffi-migration-guide.md[FFI Migration Guide]
+* link:../abi-migration-guide.md[ABI Migration Guide]
diff --git a/a2ml/ABI-FFI-README.md b/a2ml/ABI-FFI-README.md
deleted file mode 100644
index e6a32bbf..00000000
--- a/a2ml/ABI-FFI-README.md
+++ /dev/null
@@ -1,385 +0,0 @@
-{{~ Aditionally delete this line and fill out the template below ~}}
-
-# {{PROJECT}} ABI/FFI Documentation
-
-## Overview
-
-This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design:
-
-- **ABI (Application Binary Interface)** defined in **Idris2** with formal proofs
-- **FFI (Foreign Function Interface)** implemented in **Zig** for C compatibility
-- **Generated C headers** bridge Idris2 ABI to Zig FFI
-- **Any language** can call through standard C ABI
-
-## Architecture
-
-```
-┌─────────────────────────────────────────────┐
-│ ABI Definitions (Idris2) │
-│ src/abi/ │
-│ - Types.idr (Type definitions) │
-│ - Layout.idr (Memory layout proofs) │
-│ - Foreign.idr (FFI declarations) │
-└─────────────────┬───────────────────────────┘
- │
- │ generates (at compile time)
- ▼
-┌─────────────────────────────────────────────┐
-│ C Headers (auto-generated) │
-│ generated/abi/{{project}}.h │
-└─────────────────┬───────────────────────────┘
- │
- │ imported by
- ▼
-┌─────────────────────────────────────────────┐
-│ FFI Implementation (Zig) │
-│ ffi/zig/src/main.zig │
-│ - Implements C-compatible functions │
-│ - Zero-cost abstractions │
-│ - Memory-safe by default │
-└─────────────────┬───────────────────────────┘
- │
- │ compiled to lib{{project}}.so/.a
- ▼
-┌─────────────────────────────────────────────┐
-│ Any Language via C ABI │
-│ - Rust, ReScript, Julia, Python, etc. │
-└─────────────────────────────────────────────┘
-```
-
-## Directory Structure
-
-```
-{{project}}/
-├── src/
-│ ├── abi/ # ABI definitions (Idris2)
-│ │ ├── Types.idr # Core type definitions with proofs
-│ │ ├── Layout.idr # Memory layout verification
-│ │ └── Foreign.idr # FFI function declarations
-│ └── lib/ # Core library (any language)
-│
-├── ffi/
-│ └── zig/ # FFI implementation (Zig)
-│ ├── build.zig # Build configuration
-│ ├── build.zig.zon # Dependencies
-│ ├── src/
-│ │ └── main.zig # C-compatible FFI implementation
-│ ├── test/
-│ │ └── integration_test.zig
-│ └── include/
-│ └── {{project}}.h # C header (optional, can be generated)
-│
-├── generated/ # Auto-generated files
-│ └── abi/
-│ └── {{project}}.h # Generated from Idris2 ABI
-│
-└── bindings/ # Language-specific wrappers (optional)
- ├── rust/
- ├── rescript/
- └── julia/
-```
-
-## Why Idris2 for ABI?
-
-### 1. **Formal Verification**
-
-Idris2's dependent types allow proving properties about the ABI at compile-time:
-
-```idris
--- Prove struct size is correct
-public export
-exampleStructSize : HasSize ExampleStruct 16
-
--- Prove field alignment is correct
-public export
-fieldAligned : Divides 8 (offsetOf ExampleStruct.field)
-
--- Prove ABI is platform-compatible
-public export
-abiCompatible : Compatible (ABI 1) (ABI 2)
-```
-
-### 2. **Type Safety**
-
-Encode invariants that C/Zig cannot express:
-
-```idris
--- Non-null pointer guaranteed at type level
-data Handle : Type where
- MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
-
--- Array with length proof
-data Buffer : (n : Nat) -> Type where
- MkBuffer : Vect n Byte -> Buffer n
-```
-
-### 3. **Platform Abstraction**
-
-Platform-specific types with compile-time selection:
-
-```idris
-CInt : Platform -> Type
-CInt Linux = Bits32
-CInt Windows = Bits32
-
-CSize : Platform -> Type
-CSize Linux = Bits64
-CSize Windows = Bits64
-```
-
-### 4. **Safe Evolution**
-
-Prove that new ABI versions are backward-compatible:
-
-```idris
--- Compiler enforces compatibility
-abiUpgrade : ABI 1 -> ABI 2
-abiUpgrade old = MkABI2 {
- -- Must preserve all v1 fields
- v1_compat = old,
- -- Can add new fields
- new_features = defaults
-}
-```
-
-## Why Zig for FFI?
-
-### 1. **C ABI Compatibility**
-
-Zig exports C-compatible functions naturally:
-
-```zig
-export fn library_function(param: i32) i32 {
- return param * 2;
-}
-```
-
-### 2. **Memory Safety**
-
-Compile-time safety without runtime overhead:
-
-```zig
-// Null check enforced at compile time
-const handle = init() orelse return error.InitFailed;
-defer free(handle);
-```
-
-### 3. **Cross-Compilation**
-
-Built-in cross-compilation to any platform:
-
-```bash
-zig build -Dtarget=x86_64-linux
-zig build -Dtarget=aarch64-macos
-zig build -Dtarget=x86_64-windows
-```
-
-### 4. **Zero Dependencies**
-
-No runtime, no libc required (unless explicitly needed):
-
-```zig
-// Minimal binary size
-pub const lib = @import("std");
-// Only includes what you use
-```
-
-## Building
-
-### Build FFI Library
-
-```bash
-cd ffi/zig
-zig build # Build debug
-zig build -Doptimize=ReleaseFast # Build optimized
-zig build test # Run tests
-```
-
-### Generate C Header from Idris2 ABI
-
-```bash
-cd src/abi
-idris2 --cg c-header Types.idr -o ../../generated/abi/{{project}}.h
-```
-
-### Cross-Compile
-
-```bash
-cd ffi/zig
-
-# Linux x86_64
-zig build -Dtarget=x86_64-linux
-
-# macOS ARM64
-zig build -Dtarget=aarch64-macos
-
-# Windows x86_64
-zig build -Dtarget=x86_64-windows
-```
-
-## Usage
-
-### From C
-
-```c
-#include "{{project}}.h"
-
-int main() {
- void* handle = {{project}}_init();
- if (!handle) return 1;
-
- int result = {{project}}_process(handle, 42);
- if (result != 0) {
- const char* err = {{project}}_last_error();
- fprintf(stderr, "Error: %s\n", err);
- }
-
- {{project}}_free(handle);
- return 0;
-}
-```
-
-Compile with:
-```bash
-gcc -o example example.c -l{{project}} -L./zig-out/lib
-```
-
-### From Idris2
-
-```idris
-import {{PROJECT}}.ABI.Foreign
-
-main : IO ()
-main = do
- Just handle <- init
- | Nothing => putStrLn "Failed to initialize"
-
- Right result <- process handle 42
- | Left err => putStrLn $ "Error: " ++ errorDescription err
-
- free handle
- putStrLn "Success"
-```
-
-### From Rust
-
-```rust
-#[link(name = "{{project}}")]
-extern "C" {
- fn {{project}}_init() -> *mut std::ffi::c_void;
- fn {{project}}_free(handle: *mut std::ffi::c_void);
- fn {{project}}_process(handle: *mut std::ffi::c_void, input: u32) -> i32;
-}
-
-fn main() {
- unsafe {
- let handle = {{project}}_init();
- assert!(!handle.is_null());
-
- let result = {{project}}_process(handle, 42);
- assert_eq!(result, 0);
-
- {{project}}_free(handle);
- }
-}
-```
-
-### From Julia
-
-```julia
-const lib{{project}} = "lib{{project}}"
-
-function init()
- handle = ccall((:{{project}}_init, lib{{project}}), Ptr{Cvoid}, ())
- handle == C_NULL && error("Failed to initialize")
- handle
-end
-
-function process(handle, input)
- result = ccall((:{{project}}_process, lib{{project}}), Cint, (Ptr{Cvoid}, UInt32), handle, input)
- result
-end
-
-function cleanup(handle)
- ccall((:{{project}}_free, lib{{project}}), Cvoid, (Ptr{Cvoid},), handle)
-end
-
-# Usage
-handle = init()
-try
- result = process(handle, 42)
- println("Result: $result")
-finally
- cleanup(handle)
-end
-```
-
-## Testing
-
-### Unit Tests (Zig)
-
-```bash
-cd ffi/zig
-zig build test
-```
-
-### Integration Tests
-
-```bash
-cd ffi/zig
-zig build test-integration
-```
-
-### ABI Verification (Idris2)
-
-```idris
--- Compile-time verification
-%runElab verifyABI
-
--- Runtime checks
-main : IO ()
-main = do
- verifyLayoutsCorrect
- verifyAlignmentsCorrect
- putStrLn "ABI verification passed"
-```
-
-## Contributing
-
-When modifying the ABI/FFI:
-
-1. **Update ABI first** (`src/abi/*.idr`)
- - Modify type definitions
- - Update proofs
- - Ensure backward compatibility
-
-2. **Generate C header**
- ```bash
- idris2 --cg c-header src/abi/Types.idr -o generated/abi/{{project}}.h
- ```
-
-3. **Update FFI implementation** (`ffi/zig/src/main.zig`)
- - Implement new functions
- - Match ABI types exactly
-
-4. **Add tests**
- - Unit tests in Zig
- - Integration tests
- - ABI verification tests
-
-5. **Update documentation**
- - Function signatures
- - Usage examples
- - Migration guide (if breaking changes)
-
-## License
-
-PMPL-1.0-or-later
-
-## See Also
-
-- [Idris2 Documentation](https://idris2.readthedocs.io)
-- [Zig Documentation](https://ziglang.org/documentation/master/)
-- [Rhodium Standard Repositories](https://github.com/hyperpolymath/rhodium-standard-repositories)
-- [FFI Migration Guide](../ffi-migration-guide.md)
-- [ABI Migration Guide](../abi-migration-guide.md)
diff --git a/a2ml/CODE_OF_CONDUCT.adoc b/a2ml/CODE_OF_CONDUCT.adoc
new file mode 100644
index 00000000..5961e219
--- /dev/null
+++ b/a2ml/CODE_OF_CONDUCT.adoc
@@ -0,0 +1,339 @@
+== Code of Conduct
+
+=== Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in
+Standards a harassment-free experience for everyone, regardless of age,
+body size, visible or invisible disability, ethnicity, sex
+characteristics, gender identity and expression, level of experience,
+education, socio-economic status, nationality, personal appearance,
+race, caste, colour, religion, or sexual identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open,
+welcoming, diverse, inclusive, and healthy community.
+
+We recognise that a thriving open source community requires
+*psychological safety* — an environment where people can contribute, ask
+questions, make mistakes, and learn without fear of ridicule or
+retaliation.
+
+'''''
+
+=== Our Standards
+
+==== Expected Behaviour
+
+The following behaviours contribute to a positive environment:
+
+*Communication* - Using welcoming and inclusive language - Being
+respectful of differing viewpoints and experiences - Giving and
+gracefully accepting constructive feedback - Assuming good intent while
+addressing impact - Communicating clearly and patiently, especially with
+newcomers
+
+*Collaboration* - Focusing on what is best for the community - Showing
+empathy and kindness toward other community members - Being
+collaborative rather than competitive - Mentoring and supporting less
+experienced contributors - Celebrating others’ contributions and
+successes
+
+*Professionalism* - Accepting responsibility and apologising to those
+affected by our mistakes - Learning from the experience and avoiding
+repetition - Respecting others’ time and attention - Staying on topic in
+project spaces - Following project guidelines and conventions
+
+*Accessibility* - Using plain language and avoiding unnecessary jargon -
+Providing alt text for images and transcripts for audio/video - Being
+patient with those using assistive technologies - Accommodating
+different communication styles and needs - Recognising that not everyone
+communicates the same way
+
+==== Unacceptable Behaviour
+
+The following behaviours are considered harassment and are unacceptable:
+
+*Harassment* - The use of sexualised language or imagery, and sexual
+attention or advances of any kind - Trolling, insulting or derogatory
+comments, and personal or political attacks - Public or private
+harassment - Deliberate intimidation, stalking, or following (online or
+in-person) - Unwelcome physical contact or simulated physical contact
+(e.g., emoji) - Sustained disruption of talks, events, or online
+discussions
+
+*Discrimination* - Discriminatory jokes and language - Posting or
+threatening to post others’ personally identifying information
+("`doxing`") - Advocating for, or encouraging, any of the above
+behaviour - Microaggressions — subtle, often unintentional,
+discriminatory comments or actions
+
+*Professional Misconduct* - Publishing others’ private information
+without explicit permission - Misrepresenting affiliation or
+contributions - Plagiarism or claiming credit for others’ work -
+Retaliating against anyone who reports a Code of Conduct violation -
+Other conduct which could reasonably be considered inappropriate in a
+professional setting
+
+==== Grey Areas
+
+Some situations require judgement. When uncertain:
+
+* *Intent vs Impact*: Good intentions do not excuse harmful impact.
+Focus on making things right.
+* *Power Dynamics*: Those with more power (maintainers, employers,
+experienced contributors) must be especially mindful of their impact.
+* *Cultural Differences*: What’s acceptable varies by culture. When in
+doubt, err on the side of caution and ask.
+* *Humour*: Jokes at others’ expense are rarely funny to everyone. Punch
+up, not down.
+
+'''''
+
+=== Scope
+
+This Code of Conduct applies within all community spaces, including:
+
+*Online Spaces* - Repository discussions, issues, and pull/merge
+requests - Project chat channels (Matrix, Discord, Slack, IRC) - Mailing
+lists and forums - Social media when representing the project - Video
+calls and virtual meetings
+
+*In-Person Spaces* - Conferences, meetups, and events - Workshops and
+training sessions - Any gathering where you represent the project
+
+*Representation* This Code of Conduct also applies when an individual is
+officially representing the community in public spaces. Examples
+include:
+
+* Using an official project email address
+* Posting via an official social media account
+* Acting as an appointed representative at an event
+* Speaking on behalf of the project
+
+'''''
+
+=== Enforcement
+
+==== Reporting
+
+If you experience or witness unacceptable behaviour, or have any other
+concerns, please report it as soon as possible.
+
+*How to Report*
+
+[width="99%",cols="30%,33%,37%",options="header",]
+|===
+|Method |Details |Best For
+|*Email* |\{\{CONDUCT_EMAIL}} |Detailed reports, sensitive matters
+
+|*Private Message* |Contact any maintainer directly |Quick questions,
+minor issues
+
+|*Anonymous Form* |[Link to form if available] |When you need anonymity
+|===
+
+*What to Include*
+
+* Your contact information (unless anonymous)
+* Names/usernames of those involved
+* Description of what happened
+* When and where it occurred
+* Any witnesses
+* Any supporting evidence (screenshots, links)
+* How you would like us to respond (if you have a preference)
+
+*What Happens Next*
+
+[arabic]
+. You will receive acknowledgment within *\{\{RESPONSE_TIME}}*
+. The \{\{CONDUCT_TEAM}} will review the report
+. We may ask for additional information
+. We will determine appropriate action
+. We will inform you of the outcome (respecting others’ privacy)
+
+==== Confidentiality
+
+All reports will be handled with discretion:
+
+* Reporter identity is protected by default
+* Details are shared only with those who need to know
+* We will ask before naming you in any communication
+* Anonymous reports are accepted and investigated
+
+==== Conflicts of Interest
+
+If a \{\{CONDUCT_TEAM}} member is involved in an incident:
+
+* They will recuse themselves from the process
+* Another maintainer or external party will handle the report
+* We will disclose any potential conflicts
+
+'''''
+
+=== Enforcement Guidelines
+
+The \{\{CONDUCT_TEAM}} will follow these guidelines in determining
+consequences:
+
+==== 1. Correction
+
+*Community Impact*: Use of inappropriate language or other behaviour
+deemed unprofessional or unwelcome.
+
+*Consequence*: A private, written warning providing clarity around the
+nature of the violation and an explanation of why the behaviour was
+inappropriate. A public apology may be requested.
+
+*Duration*: Immediate
+
+==== 2. Warning
+
+*Community Impact*: A violation through a single incident or series of
+actions.
+
+*Consequence*: A warning with consequences for continued behaviour. No
+interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, for a specified period. This
+includes avoiding interactions in community spaces as well as external
+channels like social media. Violating these terms may lead to a
+temporary or permanent ban.
+
+*Duration*: 1-4 weeks
+
+==== 3. Temporary Ban
+
+*Community Impact*: A serious violation of community standards,
+including sustained inappropriate behaviour.
+
+*Consequence*: A temporary ban from any sort of interaction or public
+communication with the community for a specified period. No public or
+private interaction with the people involved, including unsolicited
+interaction with those enforcing the Code of Conduct, is allowed during
+this period. Violating these terms may lead to a permanent ban.
+
+*Duration*: 1-6 months
+
+==== 4. Permanent Ban
+
+*Community Impact*: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behaviour, harassment of an
+individual, or aggression toward or disparagement of classes of
+individuals.
+
+*Consequence*: A permanent ban from any sort of public interaction
+within the community.
+
+*Duration*: Permanent (with appeal rights after 12 months)
+
+==== Enforcement Across Perimeters
+
+For contributors with elevated access (Perimeter 2 or 1):
+
+[cols=",",options="header",]
+|===
+|Level |Additional Consequence
+|Correction |Noted in contributor record
+|Warning |Access privileges may be temporarily reduced
+|Temporary Ban |Access reduced to Perimeter 3 for ban duration
+|Permanent Ban |All access revoked
+|===
+
+'''''
+
+=== Appeals
+
+If you believe an enforcement decision was made in error:
+
+[arabic]
+. *Wait 7 days* after the decision (cooling-off period)
+. *Email* \{\{CONDUCT_EMAIL}} with subject line "`Appeal: [Original
+Report ID]`"
+. *Explain* why you believe the decision should be reconsidered
+. *Provide* any new information not previously available
+
+*Appeals Process*
+
+* Appeals are reviewed by a different \{\{CONDUCT_TEAM}} member than the
+original
+* You will receive a response within 14 days
+* The appeals decision is final
+* You may only appeal once per incident
+
+*Grounds for Appeal*
+
+* Procedural errors in the original investigation
+* New evidence not previously available
+* Disproportionate response to the violation
+* Misunderstanding of facts
+
+'''''
+
+=== Supporting Those Who Report
+
+We are committed to supporting those who report violations:
+
+*We Will* - Believe and take all reports seriously - Respect your
+privacy and confidentiality preferences - Keep you informed of progress
+(if you wish) - Take steps to protect you from retaliation - Provide
+resources if you need support
+
+*We Will Not* - Require you to confront the person directly - Dismiss
+reports without investigation - Reveal your identity without consent -
+Tolerate retaliation against reporters - Rush you to make decisions
+
+'''''
+
+=== Prevention
+
+Beyond enforcement, we actively work to prevent issues:
+
+*Onboarding* - All contributors are expected to read this Code of
+Conduct - Perimeter 2 applicants must confirm they’ve read and
+understood it - Maintainers receive additional training on enforcement
+
+*Culture* - We model the behaviour we expect - We intervene early when
+we see potential issues - We thank people for positive contributions -
+We create opportunities for diverse voices
+
+*Review* - This Code of Conduct is reviewed annually - Community
+feedback is welcomed - Changes are communicated clearly
+
+'''''
+
+=== Acknowledgments
+
+This Code of Conduct is adapted from:
+
+* https://www.contributor-covenant.org/[Contributor Covenant], version
+2.1
+* https://www.djangoproject.com/conduct/[Django Code of Conduct]
+* https://www.rust-lang.org/policies/code-of-conduct[Rust Code of
+Conduct]
+* https://www.python.org/psf/conduct/[Python Community Code of Conduct]
+
+We thank these communities for their leadership in creating welcoming
+spaces.
+
+'''''
+
+=== Questions?
+
+If you have questions about this Code of Conduct:
+
+* Open a
+https://github.com/hyperpolymath/standards/discussions[Discussion] (for
+general questions)
+* Email \{\{CONDUCT_EMAIL}} (for private questions)
+* Contact any maintainer directly
+
+'''''
+
+=== Summary
+
+*Be kind. Be respectful. Be collaborative.*
+
+We’re all here because we care about this project. Let’s make it a place
+where everyone can do their best work.
+
+'''''
+
+Last updated: 2026 · Based on Contributor Covenant 2.1
diff --git a/a2ml/CODE_OF_CONDUCT.md b/a2ml/CODE_OF_CONDUCT.md
deleted file mode 100644
index f9af5d2e..00000000
--- a/a2ml/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,327 +0,0 @@
-# Code of Conduct
-
-
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in Standards a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
-
-We recognise that a thriving open source community requires **psychological safety** — an environment where people can contribute, ask questions, make mistakes, and learn without fear of ridicule or retaliation.
-
----
-
-## Our Standards
-
-### Expected Behaviour
-
-The following behaviours contribute to a positive environment:
-
-**Communication**
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Giving and gracefully accepting constructive feedback
-- Assuming good intent while addressing impact
-- Communicating clearly and patiently, especially with newcomers
-
-**Collaboration**
-- Focusing on what is best for the community
-- Showing empathy and kindness toward other community members
-- Being collaborative rather than competitive
-- Mentoring and supporting less experienced contributors
-- Celebrating others' contributions and successes
-
-**Professionalism**
-- Accepting responsibility and apologising to those affected by our mistakes
-- Learning from the experience and avoiding repetition
-- Respecting others' time and attention
-- Staying on topic in project spaces
-- Following project guidelines and conventions
-
-**Accessibility**
-- Using plain language and avoiding unnecessary jargon
-- Providing alt text for images and transcripts for audio/video
-- Being patient with those using assistive technologies
-- Accommodating different communication styles and needs
-- Recognising that not everyone communicates the same way
-
-### Unacceptable Behaviour
-
-The following behaviours are considered harassment and are unacceptable:
-
-**Harassment**
-- The use of sexualised language or imagery, and sexual attention or advances of any kind
-- Trolling, insulting or derogatory comments, and personal or political attacks
-- Public or private harassment
-- Deliberate intimidation, stalking, or following (online or in-person)
-- Unwelcome physical contact or simulated physical contact (e.g., emoji)
-- Sustained disruption of talks, events, or online discussions
-
-**Discrimination**
-- Discriminatory jokes and language
-- Posting or threatening to post others' personally identifying information ("doxing")
-- Advocating for, or encouraging, any of the above behaviour
-- Microaggressions — subtle, often unintentional, discriminatory comments or actions
-
-**Professional Misconduct**
-- Publishing others' private information without explicit permission
-- Misrepresenting affiliation or contributions
-- Plagiarism or claiming credit for others' work
-- Retaliating against anyone who reports a Code of Conduct violation
-- Other conduct which could reasonably be considered inappropriate in a professional setting
-
-### Grey Areas
-
-Some situations require judgement. When uncertain:
-
-- **Intent vs Impact**: Good intentions do not excuse harmful impact. Focus on making things right.
-- **Power Dynamics**: Those with more power (maintainers, employers, experienced contributors) must be especially mindful of their impact.
-- **Cultural Differences**: What's acceptable varies by culture. When in doubt, err on the side of caution and ask.
-- **Humour**: Jokes at others' expense are rarely funny to everyone. Punch up, not down.
-
----
-
-## Scope
-
-This Code of Conduct applies within all community spaces, including:
-
-**Online Spaces**
-- Repository discussions, issues, and pull/merge requests
-- Project chat channels (Matrix, Discord, Slack, IRC)
-- Mailing lists and forums
-- Social media when representing the project
-- Video calls and virtual meetings
-
-**In-Person Spaces**
-- Conferences, meetups, and events
-- Workshops and training sessions
-- Any gathering where you represent the project
-
-**Representation**
-This Code of Conduct also applies when an individual is officially representing the community in public spaces. Examples include:
-
-- Using an official project email address
-- Posting via an official social media account
-- Acting as an appointed representative at an event
-- Speaking on behalf of the project
-
----
-
-## Enforcement
-
-### Reporting
-
-If you experience or witness unacceptable behaviour, or have any other concerns, please report it as soon as possible.
-
-**How to Report**
-
-| Method | Details | Best For |
-|--------|---------|----------|
-| **Email** | {{CONDUCT_EMAIL}} | Detailed reports, sensitive matters |
-| **Private Message** | Contact any maintainer directly | Quick questions, minor issues |
-| **Anonymous Form** | [Link to form if available] | When you need anonymity |
-
-**What to Include**
-
-- Your contact information (unless anonymous)
-- Names/usernames of those involved
-- Description of what happened
-- When and where it occurred
-- Any witnesses
-- Any supporting evidence (screenshots, links)
-- How you would like us to respond (if you have a preference)
-
-**What Happens Next**
-
-1. You will receive acknowledgment within **{{RESPONSE_TIME}}**
-2. The {{CONDUCT_TEAM}} will review the report
-3. We may ask for additional information
-4. We will determine appropriate action
-5. We will inform you of the outcome (respecting others' privacy)
-
-### Confidentiality
-
-All reports will be handled with discretion:
-
-- Reporter identity is protected by default
-- Details are shared only with those who need to know
-- We will ask before naming you in any communication
-- Anonymous reports are accepted and investigated
-
-### Conflicts of Interest
-
-If a {{CONDUCT_TEAM}} member is involved in an incident:
-
-- They will recuse themselves from the process
-- Another maintainer or external party will handle the report
-- We will disclose any potential conflicts
-
----
-
-## Enforcement Guidelines
-
-The {{CONDUCT_TEAM}} will follow these guidelines in determining consequences:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome.
-
-**Consequence**: A private, written warning providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested.
-
-**Duration**: Immediate
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series of actions.
-
-**Consequence**: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
-
-**Duration**: 1-4 weeks
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including sustained inappropriate behaviour.
-
-**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
-
-**Duration**: 1-6 months
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within the community.
-
-**Duration**: Permanent (with appeal rights after 12 months)
-
-### Enforcement Across Perimeters
-
-For contributors with elevated access (Perimeter 2 or 1):
-
-| Level | Additional Consequence |
-|-------|----------------------|
-| Correction | Noted in contributor record |
-| Warning | Access privileges may be temporarily reduced |
-| Temporary Ban | Access reduced to Perimeter 3 for ban duration |
-| Permanent Ban | All access revoked |
-
----
-
-## Appeals
-
-If you believe an enforcement decision was made in error:
-
-1. **Wait 7 days** after the decision (cooling-off period)
-2. **Email** {{CONDUCT_EMAIL}} with subject line "Appeal: [Original Report ID]"
-3. **Explain** why you believe the decision should be reconsidered
-4. **Provide** any new information not previously available
-
-**Appeals Process**
-
-- Appeals are reviewed by a different {{CONDUCT_TEAM}} member than the original
-- You will receive a response within 14 days
-- The appeals decision is final
-- You may only appeal once per incident
-
-**Grounds for Appeal**
-
-- Procedural errors in the original investigation
-- New evidence not previously available
-- Disproportionate response to the violation
-- Misunderstanding of facts
-
----
-
-## Supporting Those Who Report
-
-We are committed to supporting those who report violations:
-
-**We Will**
-- Believe and take all reports seriously
-- Respect your privacy and confidentiality preferences
-- Keep you informed of progress (if you wish)
-- Take steps to protect you from retaliation
-- Provide resources if you need support
-
-**We Will Not**
-- Require you to confront the person directly
-- Dismiss reports without investigation
-- Reveal your identity without consent
-- Tolerate retaliation against reporters
-- Rush you to make decisions
-
----
-
-## Prevention
-
-Beyond enforcement, we actively work to prevent issues:
-
-**Onboarding**
-- All contributors are expected to read this Code of Conduct
-- Perimeter 2 applicants must confirm they've read and understood it
-- Maintainers receive additional training on enforcement
-
-**Culture**
-- We model the behaviour we expect
-- We intervene early when we see potential issues
-- We thank people for positive contributions
-- We create opportunities for diverse voices
-
-**Review**
-- This Code of Conduct is reviewed annually
-- Community feedback is welcomed
-- Changes are communicated clearly
-
----
-
-## Acknowledgments
-
-This Code of Conduct is adapted from:
-
-- [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1
-- [Django Code of Conduct](https://www.djangoproject.com/conduct/)
-- [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct)
-- [Python Community Code of Conduct](https://www.python.org/psf/conduct/)
-
-We thank these communities for their leadership in creating welcoming spaces.
-
----
-
-## Questions?
-
-If you have questions about this Code of Conduct:
-
-- Open a [Discussion](https://github.com/hyperpolymath/standards/discussions) (for general questions)
-- Email {{CONDUCT_EMAIL}} (for private questions)
-- Contact any maintainer directly
-
----
-
-## Summary
-
-**Be kind. Be respectful. Be collaborative.**
-
-We're all here because we care about this project. Let's make it a place where everyone can do their best work.
-
----
-
-Last updated: 2026 · Based on Contributor Covenant 2.1
diff --git a/a2ml/CONTRIBUTING.adoc b/a2ml/CONTRIBUTING.adoc
new file mode 100644
index 00000000..d16ec0c1
--- /dev/null
+++ b/a2ml/CONTRIBUTING.adoc
@@ -0,0 +1,108 @@
+== Clone the repository
+
+git clone https://github.com/hyperpolymath/standards.git cd standards
+
+== Using Nix (recommended for reproducibility)
+
+nix develop
+
+== Or using toolbox/distrobox
+
+toolbox create standards-dev toolbox enter standards-dev # Install
+dependencies manually
+
+== Verify setup
+
+just check # or: cargo check / mix compile / etc. just test # Run test
+suite
+
+....
+
+### Repository Structure
+....
+
+standards/ ├── src/ # Source code (Perimeter 1-2) ├── lib/ # Library
+code (Perimeter 1-2) ├── extensions/ # Extensions (Perimeter 2) ├──
+plugins/ # Plugins (Perimeter 2) ├── tools/ # Tooling (Perimeter 2) ├──
+docs/ # Documentation (Perimeter 3) │ ├── architecture/ # ADRs, specs
+(Perimeter 2) │ └── proposals/ # RFCs (Perimeter 3) ├── examples/ #
+Examples (Perimeter 3) ├── spec/ # Spec tests (Perimeter 3) ├── tests/ #
+Test suite (Perimeter 2-3) ├── .well-known/ # Protocol files (Perimeter
+1-3) ├── .github/ # GitHub config (Perimeter 1) │ ├── ISSUE_TEMPLATE/ │
+└── workflows/ ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├──
+CONTRIBUTING.md # This file ├── GOVERNANCE.md ├── LICENSE ├──
+MAINTAINERS.md ├── README.adoc ├── SECURITY.md ├── flake.nix # Nix flake
+(Perimeter 1) └── Justfile # Task runner (Perimeter 1)
+
+....
+
+---
+
+## How to Contribute
+
+### Reporting Bugs
+
+**Before reporting**:
+1. Search existing issues
+2. Check if it's already fixed in `main`
+3. Determine which perimeter the bug affects
+
+**When reporting**:
+
+Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
+
+- Clear, descriptive title
+- Environment details (OS, versions, toolchain)
+- Steps to reproduce
+- Expected vs actual behaviour
+- Logs, screenshots, or minimal reproduction
+
+### Suggesting Features
+
+**Before suggesting**:
+1. Check the [roadmap](ROADMAP.md) if available
+2. Search existing issues and discussions
+3. Consider which perimeter the feature belongs to
+
+**When suggesting**:
+
+Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
+
+- Problem statement (what pain point does this solve?)
+- Proposed solution
+- Alternatives considered
+- Which perimeter this affects
+
+### Your First Contribution
+
+Look for issues labelled:
+
+- [`good first issue`](https://github.com/hyperpolymath/standards/labels/good%20first%20issue) — Simple Perimeter 3 tasks
+- [`help wanted`](https://github.com/hyperpolymath/standards/labels/help%20wanted) — Community help needed
+- [`documentation`](https://github.com/hyperpolymath/standards/labels/documentation) — Docs improvements
+- [`perimeter-3`](https://github.com/hyperpolymath/standards/labels/perimeter-3) — Community sandbox scope
+
+---
+
+## Development Workflow
+
+### Branch Naming
+....
+
+docs/short-description # Documentation (P3) test/what-added # Test
+additions (P3) feat/short-description # New features (P2)
+fix/issue-number-description # Bug fixes (P2) refactor/what-changed #
+Code improvements (P2) security/what-fixed # Security fixes (P1-2)
+
+....
+
+### Commit Messages
+
+We follow [Conventional Commits](https://www.conventionalcommits.org/):
+....
+
+():
+
+{empty}[optional body]
+
+{empty}[optional footer]
diff --git a/a2ml/CONTRIBUTING.md b/a2ml/CONTRIBUTING.md
deleted file mode 100644
index 8c9d97b7..00000000
--- a/a2ml/CONTRIBUTING.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# Clone the repository
-git clone https://github.com/hyperpolymath/standards.git
-cd standards
-
-# Using Nix (recommended for reproducibility)
-nix develop
-
-# Or using toolbox/distrobox
-toolbox create standards-dev
-toolbox enter standards-dev
-# Install dependencies manually
-
-# Verify setup
-just check # or: cargo check / mix compile / etc.
-just test # Run test suite
-```
-
-### Repository Structure
-```
-standards/
-├── src/ # Source code (Perimeter 1-2)
-├── lib/ # Library code (Perimeter 1-2)
-├── extensions/ # Extensions (Perimeter 2)
-├── plugins/ # Plugins (Perimeter 2)
-├── tools/ # Tooling (Perimeter 2)
-├── docs/ # Documentation (Perimeter 3)
-│ ├── architecture/ # ADRs, specs (Perimeter 2)
-│ └── proposals/ # RFCs (Perimeter 3)
-├── examples/ # Examples (Perimeter 3)
-├── spec/ # Spec tests (Perimeter 3)
-├── tests/ # Test suite (Perimeter 2-3)
-├── .well-known/ # Protocol files (Perimeter 1-3)
-├── .github/ # GitHub config (Perimeter 1)
-│ ├── ISSUE_TEMPLATE/
-│ └── workflows/
-├── CHANGELOG.md
-├── CODE_OF_CONDUCT.md
-├── CONTRIBUTING.md # This file
-├── GOVERNANCE.md
-├── LICENSE
-├── MAINTAINERS.md
-├── README.adoc
-├── SECURITY.md
-├── flake.nix # Nix flake (Perimeter 1)
-└── Justfile # Task runner (Perimeter 1)
-```
-
----
-
-## How to Contribute
-
-### Reporting Bugs
-
-**Before reporting**:
-1. Search existing issues
-2. Check if it's already fixed in `main`
-3. Determine which perimeter the bug affects
-
-**When reporting**:
-
-Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
-
-- Clear, descriptive title
-- Environment details (OS, versions, toolchain)
-- Steps to reproduce
-- Expected vs actual behaviour
-- Logs, screenshots, or minimal reproduction
-
-### Suggesting Features
-
-**Before suggesting**:
-1. Check the [roadmap](ROADMAP.md) if available
-2. Search existing issues and discussions
-3. Consider which perimeter the feature belongs to
-
-**When suggesting**:
-
-Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
-
-- Problem statement (what pain point does this solve?)
-- Proposed solution
-- Alternatives considered
-- Which perimeter this affects
-
-### Your First Contribution
-
-Look for issues labelled:
-
-- [`good first issue`](https://github.com/hyperpolymath/standards/labels/good%20first%20issue) — Simple Perimeter 3 tasks
-- [`help wanted`](https://github.com/hyperpolymath/standards/labels/help%20wanted) — Community help needed
-- [`documentation`](https://github.com/hyperpolymath/standards/labels/documentation) — Docs improvements
-- [`perimeter-3`](https://github.com/hyperpolymath/standards/labels/perimeter-3) — Community sandbox scope
-
----
-
-## Development Workflow
-
-### Branch Naming
-```
-docs/short-description # Documentation (P3)
-test/what-added # Test additions (P3)
-feat/short-description # New features (P2)
-fix/issue-number-description # Bug fixes (P2)
-refactor/what-changed # Code improvements (P2)
-security/what-fixed # Security fixes (P1-2)
-```
-
-### Commit Messages
-
-We follow [Conventional Commits](https://www.conventionalcommits.org/):
-```
-():
-
-[optional body]
-
-[optional footer]
diff --git a/a2ml/DOGFOODING-OPPORTUNITIES.adoc b/a2ml/DOGFOODING-OPPORTUNITIES.adoc
new file mode 100644
index 00000000..f0978cf1
--- /dev/null
+++ b/a2ml/DOGFOODING-OPPORTUNITIES.adoc
@@ -0,0 +1,653 @@
+== A2ML Dogfooding Opportunities
+
+*Date:* 2026-01-30 *Status:* Strategy Document *A2ML Version:* 0.6.0
+(Prototype)
+
+'''''
+
+=== Philosophy
+
+A2ML is designed to provide *attested markup with formal structural
+guarantees*. The best way to prove its value is to use it extensively
+within the Hyperpolymath ecosystem that created it.
+
+*Core Principle:* If A2ML can’t document itself and the ecosystem it was
+built for, it’s not ready for general use.
+
+'''''
+
+=== Current Status
+
+* *Version:* 0.6.0
+* *Phase:* Prototype (60% complete)
+* *Tech Stack:* Idris2 (typed core), ReScript (web prototype + WASM)
+* *What Works:* Surface grammar, parser, validator, vector tests,
+ddraig-ssg integration
+
+'''''
+
+=== Strategic Dogfooding Targets
+
+==== 1. *A2ML Self-Documentation* (Meta-Dogfooding)
+
+*Priority:* CRITICAL *Files to Convert:* - `+README.adoc+` →
+`+README.a2ml+` - `+SPEC.adoc+` → `+SPEC.a2ml+` - `+docs/*.adoc+` →
+`+docs/*.a2ml+`
+
+*Why This Matters:* - If A2ML can’t formally verify its own
+documentation structure, how can it verify others? - Demonstrates
+progressive strictness (start lax, add attestation) - Proves the format
+works for complex technical documentation
+
+*Benefits:* - Abstract sections required (can’t skip overview) -
+References automatically validated (no broken links to spec sections) -
+Section structure enforced (grammar, conformance, examples) - Version
+attestation (docs match implementation version)
+
+*Example:*
+
+[source,a2ml]
+----
+# A2ML Specification v0.6.0
+
+@abstract:
+A2ML is a lightweight, Djot-like markup that compiles into a typed, attested core.
+It provides formal structural guarantees while keeping authoring simple.
+@end
+
+@version-attestation:
+spec-version = "0.6.0"
+implementation-version = "0.6.0"
+status = "draft"
+@end
+
+## Core Concepts
+
+### Progressive Strictness
+
+@definition:
+A2ML supports three strictness levels:
+1. **Lax**: Minimal validation, maximum flexibility
+2. **Checked**: Structure validated, references resolved
+3. **Attested**: Cryptographically signed with formal proofs
+@end
+
+@refs:
+[1] docs/MODULES.adoc (Syntax Modules)
+[2] docs/CONFORMANCE.adoc (Conformance Testing)
+@end
+----
+
+*Action Items:* - [ ] Convert README.adoc to README.a2ml (use lax mode
+initially) - [ ] Convert SPEC.adoc to SPEC.a2ml (use checked mode) - [ ]
+Add attestation proofs for release versions - [ ] Ensure all internal
+references validate
+
+'''''
+
+==== 2. *Hyperpolymath RSR Documentation Standard*
+
+*Priority:* HIGH *Target:* All 500+ Hyperpolymath repositories
+
+*What to Convert:* - `+README.adoc+` → `+README.a2ml+` (all repos) -
+`+STATE.scm+` → `+STATE.a2ml+` (checkpoint files) - `+ECOSYSTEM.scm+` →
+`+ECOSYSTEM.a2ml+` (relationships) - `+META.scm+` → `+META.a2ml+` (ADRs
+and decisions)
+
+*Why This Matters:* - RSR requires specific documentation structure -
+A2ML can *enforce* this structure formally - Prevents incomplete or
+malformed documentation - Automatic validation in CI/CD
+
+*Benefits:* - Required sections enforced (project-context,
+current-position, route-to-mvp) - Metadata validated (version, dates,
+repo name) - Cross-references between STATE/ECOSYSTEM/META validated -
+Breaking changes to checkpoint format caught at parse time
+
+*Example STATE.a2ml:*
+
+[source,a2ml]
+----
+# Project State - A2ML
+
+@metadata:
+version = "0.6.0"
+schema-version = "1.0"
+created = "2026-01-26"
+updated = "2026-01-30"
+project = "a2ml"
+repo = "hyperpolymath/a2ml"
+@end
+
+@project-context:
+name = "A2ML"
+tagline = "Attested Markup Language"
+tech-stack = ["spec", "idris2", "rescript"]
+@end
+
+@current-position:
+phase = "prototype"
+overall-completion = 60
+working-features = [
+ "Surface grammar (draft)",
+ "Typed core outline",
+ "ReScript web prototype",
+ "Vector suite passing"
+]
+@end
+
+@route-to-mvp:
+## Milestone: Core Implementation
+- [ ] Complete Idris2 typed core
+- [ ] Full reference resolver
+- [ ] Attestation signing system
+
+## Milestone: Production Ready
+- [ ] 1.0.0 release
+- [ ] Full test coverage
+- [ ] Documentation complete
+@end
+----
+
+*Challenge:* - STATE/ECOSYSTEM/META are currently Scheme (executable) -
+A2ML is markup (data) - *Solution:* Hybrid approach or A2ML with
+embedded Scheme blocks
+
+*Action Items:* - [ ] Design STATE.a2ml schema with required sections -
+[ ] Prototype STATE.a2ml in a2ml repo first - [ ] Create validation
+rules for checkpoint files - [ ] Add A2ML validation to RSR CI workflows
+
+'''''
+
+==== 3. *ABI/FFI Documentation*
+
+*Priority:* HIGH *Target:* All ABI/FFI repos with Idris2 ABIs
+
+*What to Document:* - Type definitions with formal proofs - Memory
+layout verification - Platform-specific ABIs - FFI interface contracts
+
+*Why This Matters:* - ABI documentation must match ABI implementation -
+A2ML can enforce documentation structure - Formal proofs in docs mirror
+formal proofs in code - Documentation becomes part of the verification
+chain
+
+*Benefits:* - Required sections: Types, Layout, Foreign, Proofs -
+References between docs and code validated - Proof blocks structured and
+checked - Breaking ABI changes require doc updates (enforced)
+
+*Example ABI Documentation:*
+
+[source,a2ml]
+----
+# Container ABI Documentation
+
+@abstract:
+This ABI defines the interface for container runtime operations with formal
+correctness proofs. All types are verified at compile-time.
+@end
+
+@abi-version:
+version = "1.0.0"
+idris-version = "0.7.0"
+platform = "linux-x86_64"
+@end
+
+## Types
+
+### Handle
+
+Non-null pointer guaranteed at type level.
+
+@proof:
+type = "Handle"
+invariant = "ptr /= 0"
+proof-term = "nonNull : So (ptr /= 0)"
+source = "src/abi/Types.idr:15-20"
+@end
+
+@code:
+```idris
+data Handle : Type where
+ MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
+----
+
+@end
+
+==== Platform-Specific CInt
+
+@proof: type = "`CInt`" platforms = \{ "`linux`" = "`Bits32`",
+"`windows`" = "`Bits32`", "`macos`" = "`Bits32`" } verified = true
+source = "`src/abi/Types.idr:45-48`" @end
+
+=== Memory Layout
+
+@verification: struct = "`ContainerState`" total-size = 64 alignment = 8
+fields = [ \{ name = "`pid`", offset = 0, size = 4 }, \{ name =
+"`status`", offset = 4, size = 4 }, \{ name = "`timestamp`", offset = 8,
+size = 8 }] proof = "`layoutCorrect : HasSize ContainerState 64`" source
+= "`src/abi/Layout.idr:30-42`" @end
+
+@refs: [1] src/abi/Types.idr - Type definitions [2] src/abi/Layout.idr -
+Memory layout proofs [3] src/abi/Foreign.idr - FFI declarations [4]
+Idris2 Dependent Types Manual @end
+
+....
+
+**Action Items:**
+- [ ] Create ABI-FFI-README.a2ml template
+- [ ] Convert zig-*-ffi repo docs to A2ML
+- [ ] Add A2ML validation to ABI CI
+- [ ] Ensure doc updates when ABI changes
+
+---
+
+### 4. **Migration Guides and Technical Documentation**
+
+**Priority:** MEDIUM
+**Target:** Technical guides, tutorials, RFCs
+
+**What to Convert:**
+- `ffi-migration-guide.md` → `.a2ml`
+- `abi-migration-guide.md` → `.a2ml`
+- All tutorial and guide documents
+- RFC and specification documents
+
+**Why This Matters:**
+- Migration guides must be complete (can't skip critical steps)
+- Tutorial structure enforced (prerequisites, steps, verification)
+- RFCs require specific sections (abstract, motivation, specification)
+
+**Benefits:**
+- Required sections enforced (overview, prerequisites, steps, troubleshooting)
+- Checklists validated (all items present)
+- Code examples required and structured
+- Version-specific content clearly marked
+
+**Example Migration Guide:**
+```a2ml
+# FFI Migration Guide: Rust to Zig
+
+@abstract:
+This guide covers migrating Foreign Function Interface implementations from
+Rust to Zig across 5 Hyperpolymath repositories. It includes patterns,
+gotchas, and a complete checklist.
+@end
+
+@metadata:
+version = "1.0.0"
+applies-to = ["wokelang", "valence-shell", "volumod", "vordr", "echidna"]
+created = "2026-01-30"
+@end
+
+## Prerequisites
+
+@checklist:
+- [ ] Zig 0.11.0+ installed
+- [ ] Idris2 0.7.0+ installed
+- [ ] Existing Rust FFI understood
+- [ ] ABI documentation available
+@end
+
+## Migration Steps
+
+### Step 1: Analyze Existing FFI
+
+@required-actions:
+1. Read current Rust implementation
+2. Document all exported functions
+3. Identify unsafe blocks
+4. List dependencies
+@end
+
+@code-example:
+```rust
+// Before: Rust FFI
+#[no_mangle]
+pub extern "C" fn init() -> *mut Handle {
+ Box::into_raw(Box::new(Handle::new()))
+}
+....
+
+@end
+
+==== Step 2: Port to Zig
+
+@code-example:
+
+[source,zig]
+----
+// After: Zig FFI
+export fn init() ?*Handle {
+ const allocator = std.heap.c_allocator;
+ const handle = allocator.create(Handle) catch return null;
+ handle.* = Handle.init();
+ return handle;
+}
+----
+
+@end
+
+@gotchas: - Zig uses `+?T+` for nullable pointers (Rust uses `+*mut T+`)
+- Zig allocators explicit (Rust uses global allocator) - Zig error
+unions different from Rust Result @end
+
+=== Verification
+
+@verification-checklist: - [ ] All functions exported - [ ] Types match
+ABI - [ ] Tests pass - [ ] Memory leaks checked - [ ] Cross-platform
+build tested @end
+
+@refs: [1] Zig Language Reference -
+https://ziglang.org/documentation/master/ [2] src/abi/*.idr - ABI
+definitions [3] Original Rust FFI implementation @end
+
+....
+
+**Action Items:**
+- [ ] Convert ffi-migration-guide.md to A2ML
+- [ ] Convert abi-migration-guide.md to A2ML
+- [ ] Create tutorial template in A2ML
+- [ ] Add A2ML validation for all guides
+
+---
+
+### 5. **ddraig-ssg Integration**
+
+**Priority:** HIGH
+**Target:** ddraig-ssg static site generator
+
+**What to Build:**
+- Native A2ML input support (already has prototype!)
+- A2ML → HTML/PDF rendering
+- A2ML → academic paper format
+- Structured blog posts
+
+**Why This Matters:**
+- ddraig-ssg is written in Idris2 (same as A2ML core)
+- Static sites with formally verified structure
+- Academic papers with guaranteed format
+- Blog posts that enforce content structure
+
+**Benefits:**
+- Blog posts require abstract/content/conclusion
+- Academic papers follow required format
+- References automatically validated
+- Navigation generated from structure
+
+**Example Blog Post:**
+```a2ml
+# Universal Idris2 ABI + Zig FFI Standard
+
+@metadata:
+date = "2026-01-30"
+author = "Jonathan D.A. Jewell"
+tags = ["idris2", "zig", "ffi", "formal-verification"]
+category = "technical"
+@end
+
+@abstract:
+We've established a universal standard for ABIs and FFIs across the Hyperpolymath
+ecosystem. Idris2 provides proven-correct ABIs, Zig provides memory-safe FFI,
+and generated C headers bridge them.
+@end
+
+## Introduction
+
+[Content...]
+
+## Architecture
+
+@diagram:
+type = "ascii-art"
+shows = "ABI → Headers → FFI flow"
+@end
+
+## Benefits
+
+@list:
+- Mathematically proven ABIs
+- Memory-safe FFI implementation
+- Cross-platform support
+- Universal C compatibility
+@end
+
+## Conclusion
+
+[Content...]
+
+@refs:
+[1] rsr-template-repo/ABI-FFI-README.md
+[2] Idris2 Documentation
+[3] Zig Documentation
+@end
+....
+
+*Action Items:* - [ ] Expand ddraig-ssg A2ML support beyond prototype -
+[ ] Create A2ML blog post template - [ ] Create A2ML academic paper
+template - [ ] Generate this repo’s documentation site with ddraig-ssg
+
+'''''
+
+==== 6. *Architecture Decision Records (ADRs)*
+
+*Priority:* MEDIUM *Target:* META.scm files in all repos
+
+*What to Structure:* - ADR format (context, decision, consequences,
+status) - Status values (proposed/accepted/deprecated/superseded) -
+Cross-references between related ADRs
+
+*Why This Matters:* - ADRs require specific structure - Status
+transitions must be valid - Superseded ADRs must reference replacements
+- Date ordering enforced
+
+*Benefits:* - ADR format enforced automatically - Status validation
+(can’t use invalid status) - Required fields present (date, context,
+decision) - Cross-references validated
+
+*Example ADR in A2ML:*
+
+[source,a2ml]
+----
+# ADR-001: Universal Idris2 ABI Standard
+
+@metadata:
+adr-number = 1
+status = "accepted"
+date = "2026-01-30"
+supersedes = []
+superseded-by = []
+@end
+
+@context:
+We have 22 ABI/FFI repositories with inconsistent interface definitions.
+Some use Zig ABI, some use Idris2, some use C headers directly. This
+creates maintenance burden and prevents formal verification.
+@end
+
+@decision:
+Establish Idris2 as the universal ABI definition language for all
+Hyperpolymath projects. Key points:
+
+1. All ABIs written in Idris2 with dependent types
+2. Formal proofs of correctness required
+3. C headers auto-generated from Idris2
+4. FFI implementations in Zig consume generated headers
+@end
+
+@consequences:
+
+## Positive
+- Mathematically proven interface correctness
+- Memory layout verification at compile-time
+- Platform compatibility proven, not tested
+- Single source of truth for ABIs
+
+## Negative
+- Learning curve for Idris2
+- Build process more complex (generate headers)
+- Idris2 compiler required in toolchain
+
+## Neutral
+- Migration required for 6 repos
+- Templates needed for new repos
+@end
+
+@refs:
+[1] abi-migration-guide.md
+[2] rsr-template-repo/src/abi/
+[3] Discussion: https://github.com/hyperpolymath/standards/issues/42
+@end
+----
+
+*Action Items:* - [ ] Create ADR.a2ml template - [ ] Convert existing
+META.scm ADRs to A2ML - [ ] Add ADR validation to CI - [ ] Document ADR
+process with A2ML
+
+'''''
+
+=== Progressive Adoption Strategy
+
+==== Phase 1: Self-Dogfooding (A2ML v0.6.0 - v1.0.0)
+
+*Focus:* Use A2ML to document itself
+
+[arabic]
+. Convert A2ML’s own documentation to A2ML
+. Use lax mode initially (minimal validation)
+. Progressively add strictness as format stabilizes
+. Prove the format works for complex technical docs
+
+*Success Metrics:* - A2ML README, SPEC, and guides in A2ML format - All
+internal references validate - Documentation CI passes - Contributors
+find it easier than AsciiDoc
+
+==== Phase 2: Ecosystem Standards (A2ML v1.0.0+)
+
+*Focus:* Standardize Hyperpolymath documentation
+
+[arabic]
+. Create templates for STATE/ECOSYSTEM/META
+. Convert rsr-template-repo docs
+. Pilot in 5-10 repos
+. Gather feedback and iterate
+
+*Success Metrics:* - RSR documentation CI validates A2ML - Incomplete
+docs caught automatically - 50+ repos using A2ML - Reduced documentation
+errors
+
+==== Phase 3: ABI/FFI Documentation (A2ML v1.1.0+)
+
+*Focus:* Formal verification chain
+
+[arabic]
+. A2ML ABI documentation templates
+. Convert all zig-*-ffi docs
+. Link docs to code with proofs
+. Validate docs in ABI CI
+
+*Success Metrics:* - ABI changes require doc updates (enforced) - Proof
+blocks validated - 100% ABI documentation coverage - Docs match code
+(verified)
+
+==== Phase 4: Full Adoption (A2ML v2.0.0+)
+
+*Focus:* A2ML as default format
+
+[arabic]
+. All new repos start with A2ML
+. Gradual migration of existing repos
+. ddraig-ssg native A2ML support
+. External adoption begins
+
+*Success Metrics:* - 500+ repos using A2ML - A2ML in rsr-template-repo
+as default - Blog/paper templates widely used - External projects adopt
+A2ML
+
+'''''
+
+=== Technical Requirements
+
+==== For A2ML to Be Dogfoodable
+
+*Must Have:* - [ ] Stable surface syntax (no breaking changes) - [ ]
+Reference resolution working - [ ] Validation errors clear and
+actionable - [ ] Tooling: a2ml validate, a2ml convert - [ ] CI
+integration (GitHub Actions)
+
+*Should Have:* - [ ] IDE support (VS Code extension) - [ ] Syntax
+highlighting - [ ] Auto-completion - [ ] Convert from AsciiDoc/Markdown
+
+*Nice to Have:* - [ ] Live preview in browser - [ ] Documentation
+generator - [ ] Attestation signing built-in
+
+==== Tooling Gaps to Fill
+
+[arabic]
+. *Converter:* `+a2ml convert README.adoc README.a2ml+`
+. *Validator:* `+a2ml validate --strict README.a2ml+`
+. *CI Action:* `+actions/a2ml-validate@v1+`
+. *Preview:* `+a2ml preview README.a2ml+` (local server)
+. *Generator:* `+a2ml generate --template=STATE.a2ml+`
+
+'''''
+
+=== Success Criteria
+
+A2ML dogfooding is successful when:
+
+[arabic]
+. *Self-Documentation:* A2ML’s own docs are in A2ML format
+. *RSR Standard:* A2ML is the default documentation format in
+rsr-template-repo
+. *ABI Coverage:* All ABI/FFI repos document interfaces in A2ML
+. *Reduced Errors:* Incomplete/malformed docs caught automatically
+. *External Interest:* Other projects ask to adopt A2ML
+
+'''''
+
+=== Risks and Mitigations
+
+==== Risk: Format Not Yet Stable
+
+*Impact:* Breaking changes require re-writing docs *Mitigation:* Use lax
+mode, version documents clearly, automated migration tools
+
+==== Risk: Tooling Gaps
+
+*Impact:* Hard to use without good tools *Mitigation:* Build essential
+tools first (validator, converter), improve incrementally
+
+==== Risk: Learning Curve
+
+*Impact:* Contributors struggle with new format *Mitigation:* Clear
+templates, good error messages, fallback to Markdown/AsciiDoc initially
+
+==== Risk: Maintenance Burden
+
+*Impact:* Maintaining docs in two formats *Mitigation:* Automated
+conversion, progressive migration, keep old format until confident
+
+'''''
+
+=== Conclusion
+
+A2ML dogfooding is *essential* for proving the format’s viability. By
+using it extensively within the Hyperpolymath ecosystem, we demonstrate:
+
+[arabic]
+. *It works for complex documentation* (specs, guides, ADRs)
+. *It catches real errors* (incomplete docs, broken references)
+. *It scales* (500+ repos)
+. *It integrates* (CI, generators, validators)
+
+*Recommended Start:* Convert A2ML’s own README and SPEC to A2ML format
+using lax mode. This proves the format can handle its own complexity.
+
+*Next Steps:* 1. Create A2ML versions of key documents (README, SPEC) 2.
+Build essential tooling (validator, converter) 3. Pilot in 5 repos to
+gather feedback 4. Iterate based on real usage
+
+'''''
+
+*Document Status:* Ready for Implementation *Next Review:* After A2ML
+v1.0.0 release *Maintainer:* Jonathan D.A. Jewell
+j.d.a.jewell@open.ac.uk
diff --git a/a2ml/DOGFOODING-OPPORTUNITIES.md b/a2ml/DOGFOODING-OPPORTUNITIES.md
deleted file mode 100644
index 68e4028b..00000000
--- a/a2ml/DOGFOODING-OPPORTUNITIES.md
+++ /dev/null
@@ -1,696 +0,0 @@
-# A2ML Dogfooding Opportunities
-
-**Date:** 2026-01-30
-**Status:** Strategy Document
-**A2ML Version:** 0.6.0 (Prototype)
-
----
-
-## Philosophy
-
-A2ML is designed to provide **attested markup with formal structural guarantees**. The best way to prove its value is to use it extensively within the Hyperpolymath ecosystem that created it.
-
-**Core Principle:** If A2ML can't document itself and the ecosystem it was built for, it's not ready for general use.
-
----
-
-## Current Status
-
-- **Version:** 0.6.0
-- **Phase:** Prototype (60% complete)
-- **Tech Stack:** Idris2 (typed core), ReScript (web prototype + WASM)
-- **What Works:** Surface grammar, parser, validator, vector tests, ddraig-ssg integration
-
----
-
-## Strategic Dogfooding Targets
-
-### 1. **A2ML Self-Documentation** (Meta-Dogfooding)
-
-**Priority:** CRITICAL
-**Files to Convert:**
-- `README.adoc` → `README.a2ml`
-- `SPEC.adoc` → `SPEC.a2ml`
-- `docs/*.adoc` → `docs/*.a2ml`
-
-**Why This Matters:**
-- If A2ML can't formally verify its own documentation structure, how can it verify others?
-- Demonstrates progressive strictness (start lax, add attestation)
-- Proves the format works for complex technical documentation
-
-**Benefits:**
-- Abstract sections required (can't skip overview)
-- References automatically validated (no broken links to spec sections)
-- Section structure enforced (grammar, conformance, examples)
-- Version attestation (docs match implementation version)
-
-**Example:**
-```a2ml
-# A2ML Specification v0.6.0
-
-@abstract:
-A2ML is a lightweight, Djot-like markup that compiles into a typed, attested core.
-It provides formal structural guarantees while keeping authoring simple.
-@end
-
-@version-attestation:
-spec-version = "0.6.0"
-implementation-version = "0.6.0"
-status = "draft"
-@end
-
-## Core Concepts
-
-### Progressive Strictness
-
-@definition:
-A2ML supports three strictness levels:
-1. **Lax**: Minimal validation, maximum flexibility
-2. **Checked**: Structure validated, references resolved
-3. **Attested**: Cryptographically signed with formal proofs
-@end
-
-@refs:
-[1] docs/MODULES.adoc (Syntax Modules)
-[2] docs/CONFORMANCE.adoc (Conformance Testing)
-@end
-```
-
-**Action Items:**
-- [ ] Convert README.adoc to README.a2ml (use lax mode initially)
-- [ ] Convert SPEC.adoc to SPEC.a2ml (use checked mode)
-- [ ] Add attestation proofs for release versions
-- [ ] Ensure all internal references validate
-
----
-
-### 2. **Hyperpolymath RSR Documentation Standard**
-
-**Priority:** HIGH
-**Target:** All 500+ Hyperpolymath repositories
-
-**What to Convert:**
-- `README.adoc` → `README.a2ml` (all repos)
-- `STATE.scm` → `STATE.a2ml` (checkpoint files)
-- `ECOSYSTEM.scm` → `ECOSYSTEM.a2ml` (relationships)
-- `META.scm` → `META.a2ml` (ADRs and decisions)
-
-**Why This Matters:**
-- RSR requires specific documentation structure
-- A2ML can **enforce** this structure formally
-- Prevents incomplete or malformed documentation
-- Automatic validation in CI/CD
-
-**Benefits:**
-- Required sections enforced (project-context, current-position, route-to-mvp)
-- Metadata validated (version, dates, repo name)
-- Cross-references between STATE/ECOSYSTEM/META validated
-- Breaking changes to checkpoint format caught at parse time
-
-**Example STATE.a2ml:**
-```a2ml
-# Project State - A2ML
-
-@metadata:
-version = "0.6.0"
-schema-version = "1.0"
-created = "2026-01-26"
-updated = "2026-01-30"
-project = "a2ml"
-repo = "hyperpolymath/a2ml"
-@end
-
-@project-context:
-name = "A2ML"
-tagline = "Attested Markup Language"
-tech-stack = ["spec", "idris2", "rescript"]
-@end
-
-@current-position:
-phase = "prototype"
-overall-completion = 60
-working-features = [
- "Surface grammar (draft)",
- "Typed core outline",
- "ReScript web prototype",
- "Vector suite passing"
-]
-@end
-
-@route-to-mvp:
-## Milestone: Core Implementation
-- [ ] Complete Idris2 typed core
-- [ ] Full reference resolver
-- [ ] Attestation signing system
-
-## Milestone: Production Ready
-- [ ] 1.0.0 release
-- [ ] Full test coverage
-- [ ] Documentation complete
-@end
-```
-
-**Challenge:**
-- STATE/ECOSYSTEM/META are currently Scheme (executable)
-- A2ML is markup (data)
-- **Solution:** Hybrid approach or A2ML with embedded Scheme blocks
-
-**Action Items:**
-- [ ] Design STATE.a2ml schema with required sections
-- [ ] Prototype STATE.a2ml in a2ml repo first
-- [ ] Create validation rules for checkpoint files
-- [ ] Add A2ML validation to RSR CI workflows
-
----
-
-### 3. **ABI/FFI Documentation**
-
-**Priority:** HIGH
-**Target:** All ABI/FFI repos with Idris2 ABIs
-
-**What to Document:**
-- Type definitions with formal proofs
-- Memory layout verification
-- Platform-specific ABIs
-- FFI interface contracts
-
-**Why This Matters:**
-- ABI documentation must match ABI implementation
-- A2ML can enforce documentation structure
-- Formal proofs in docs mirror formal proofs in code
-- Documentation becomes part of the verification chain
-
-**Benefits:**
-- Required sections: Types, Layout, Foreign, Proofs
-- References between docs and code validated
-- Proof blocks structured and checked
-- Breaking ABI changes require doc updates (enforced)
-
-**Example ABI Documentation:**
-```a2ml
-# Container ABI Documentation
-
-@abstract:
-This ABI defines the interface for container runtime operations with formal
-correctness proofs. All types are verified at compile-time.
-@end
-
-@abi-version:
-version = "1.0.0"
-idris-version = "0.7.0"
-platform = "linux-x86_64"
-@end
-
-## Types
-
-### Handle
-
-Non-null pointer guaranteed at type level.
-
-@proof:
-type = "Handle"
-invariant = "ptr /= 0"
-proof-term = "nonNull : So (ptr /= 0)"
-source = "src/abi/Types.idr:15-20"
-@end
-
-@code:
-```idris
-data Handle : Type where
- MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle
-```
-@end
-
-### Platform-Specific CInt
-
-@proof:
-type = "CInt"
-platforms = {
- "linux" = "Bits32",
- "windows" = "Bits32",
- "macos" = "Bits32"
-}
-verified = true
-source = "src/abi/Types.idr:45-48"
-@end
-
-## Memory Layout
-
-@verification:
-struct = "ContainerState"
-total-size = 64
-alignment = 8
-fields = [
- { name = "pid", offset = 0, size = 4 },
- { name = "status", offset = 4, size = 4 },
- { name = "timestamp", offset = 8, size = 8 }
-]
-proof = "layoutCorrect : HasSize ContainerState 64"
-source = "src/abi/Layout.idr:30-42"
-@end
-
-@refs:
-[1] src/abi/Types.idr - Type definitions
-[2] src/abi/Layout.idr - Memory layout proofs
-[3] src/abi/Foreign.idr - FFI declarations
-[4] Idris2 Dependent Types Manual
-@end
-```
-
-**Action Items:**
-- [ ] Create ABI-FFI-README.a2ml template
-- [ ] Convert zig-*-ffi repo docs to A2ML
-- [ ] Add A2ML validation to ABI CI
-- [ ] Ensure doc updates when ABI changes
-
----
-
-### 4. **Migration Guides and Technical Documentation**
-
-**Priority:** MEDIUM
-**Target:** Technical guides, tutorials, RFCs
-
-**What to Convert:**
-- `ffi-migration-guide.md` → `.a2ml`
-- `abi-migration-guide.md` → `.a2ml`
-- All tutorial and guide documents
-- RFC and specification documents
-
-**Why This Matters:**
-- Migration guides must be complete (can't skip critical steps)
-- Tutorial structure enforced (prerequisites, steps, verification)
-- RFCs require specific sections (abstract, motivation, specification)
-
-**Benefits:**
-- Required sections enforced (overview, prerequisites, steps, troubleshooting)
-- Checklists validated (all items present)
-- Code examples required and structured
-- Version-specific content clearly marked
-
-**Example Migration Guide:**
-```a2ml
-# FFI Migration Guide: Rust to Zig
-
-@abstract:
-This guide covers migrating Foreign Function Interface implementations from
-Rust to Zig across 5 Hyperpolymath repositories. It includes patterns,
-gotchas, and a complete checklist.
-@end
-
-@metadata:
-version = "1.0.0"
-applies-to = ["wokelang", "valence-shell", "volumod", "vordr", "echidna"]
-created = "2026-01-30"
-@end
-
-## Prerequisites
-
-@checklist:
-- [ ] Zig 0.11.0+ installed
-- [ ] Idris2 0.7.0+ installed
-- [ ] Existing Rust FFI understood
-- [ ] ABI documentation available
-@end
-
-## Migration Steps
-
-### Step 1: Analyze Existing FFI
-
-@required-actions:
-1. Read current Rust implementation
-2. Document all exported functions
-3. Identify unsafe blocks
-4. List dependencies
-@end
-
-@code-example:
-```rust
-// Before: Rust FFI
-#[no_mangle]
-pub extern "C" fn init() -> *mut Handle {
- Box::into_raw(Box::new(Handle::new()))
-}
-```
-@end
-
-### Step 2: Port to Zig
-
-@code-example:
-```zig
-// After: Zig FFI
-export fn init() ?*Handle {
- const allocator = std.heap.c_allocator;
- const handle = allocator.create(Handle) catch return null;
- handle.* = Handle.init();
- return handle;
-}
-```
-@end
-
-@gotchas:
-- Zig uses `?T` for nullable pointers (Rust uses `*mut T`)
-- Zig allocators explicit (Rust uses global allocator)
-- Zig error unions different from Rust Result
-@end
-
-## Verification
-
-@verification-checklist:
-- [ ] All functions exported
-- [ ] Types match ABI
-- [ ] Tests pass
-- [ ] Memory leaks checked
-- [ ] Cross-platform build tested
-@end
-
-@refs:
-[1] Zig Language Reference - https://ziglang.org/documentation/master/
-[2] src/abi/*.idr - ABI definitions
-[3] Original Rust FFI implementation
-@end
-```
-
-**Action Items:**
-- [ ] Convert ffi-migration-guide.md to A2ML
-- [ ] Convert abi-migration-guide.md to A2ML
-- [ ] Create tutorial template in A2ML
-- [ ] Add A2ML validation for all guides
-
----
-
-### 5. **ddraig-ssg Integration**
-
-**Priority:** HIGH
-**Target:** ddraig-ssg static site generator
-
-**What to Build:**
-- Native A2ML input support (already has prototype!)
-- A2ML → HTML/PDF rendering
-- A2ML → academic paper format
-- Structured blog posts
-
-**Why This Matters:**
-- ddraig-ssg is written in Idris2 (same as A2ML core)
-- Static sites with formally verified structure
-- Academic papers with guaranteed format
-- Blog posts that enforce content structure
-
-**Benefits:**
-- Blog posts require abstract/content/conclusion
-- Academic papers follow required format
-- References automatically validated
-- Navigation generated from structure
-
-**Example Blog Post:**
-```a2ml
-# Universal Idris2 ABI + Zig FFI Standard
-
-@metadata:
-date = "2026-01-30"
-author = "Jonathan D.A. Jewell"
-tags = ["idris2", "zig", "ffi", "formal-verification"]
-category = "technical"
-@end
-
-@abstract:
-We've established a universal standard for ABIs and FFIs across the Hyperpolymath
-ecosystem. Idris2 provides proven-correct ABIs, Zig provides memory-safe FFI,
-and generated C headers bridge them.
-@end
-
-## Introduction
-
-[Content...]
-
-## Architecture
-
-@diagram:
-type = "ascii-art"
-shows = "ABI → Headers → FFI flow"
-@end
-
-## Benefits
-
-@list:
-- Mathematically proven ABIs
-- Memory-safe FFI implementation
-- Cross-platform support
-- Universal C compatibility
-@end
-
-## Conclusion
-
-[Content...]
-
-@refs:
-[1] rsr-template-repo/ABI-FFI-README.md
-[2] Idris2 Documentation
-[3] Zig Documentation
-@end
-```
-
-**Action Items:**
-- [ ] Expand ddraig-ssg A2ML support beyond prototype
-- [ ] Create A2ML blog post template
-- [ ] Create A2ML academic paper template
-- [ ] Generate this repo's documentation site with ddraig-ssg
-
----
-
-### 6. **Architecture Decision Records (ADRs)**
-
-**Priority:** MEDIUM
-**Target:** META.scm files in all repos
-
-**What to Structure:**
-- ADR format (context, decision, consequences, status)
-- Status values (proposed/accepted/deprecated/superseded)
-- Cross-references between related ADRs
-
-**Why This Matters:**
-- ADRs require specific structure
-- Status transitions must be valid
-- Superseded ADRs must reference replacements
-- Date ordering enforced
-
-**Benefits:**
-- ADR format enforced automatically
-- Status validation (can't use invalid status)
-- Required fields present (date, context, decision)
-- Cross-references validated
-
-**Example ADR in A2ML:**
-```a2ml
-# ADR-001: Universal Idris2 ABI Standard
-
-@metadata:
-adr-number = 1
-status = "accepted"
-date = "2026-01-30"
-supersedes = []
-superseded-by = []
-@end
-
-@context:
-We have 22 ABI/FFI repositories with inconsistent interface definitions.
-Some use Zig ABI, some use Idris2, some use C headers directly. This
-creates maintenance burden and prevents formal verification.
-@end
-
-@decision:
-Establish Idris2 as the universal ABI definition language for all
-Hyperpolymath projects. Key points:
-
-1. All ABIs written in Idris2 with dependent types
-2. Formal proofs of correctness required
-3. C headers auto-generated from Idris2
-4. FFI implementations in Zig consume generated headers
-@end
-
-@consequences:
-
-## Positive
-- Mathematically proven interface correctness
-- Memory layout verification at compile-time
-- Platform compatibility proven, not tested
-- Single source of truth for ABIs
-
-## Negative
-- Learning curve for Idris2
-- Build process more complex (generate headers)
-- Idris2 compiler required in toolchain
-
-## Neutral
-- Migration required for 6 repos
-- Templates needed for new repos
-@end
-
-@refs:
-[1] abi-migration-guide.md
-[2] rsr-template-repo/src/abi/
-[3] Discussion: https://github.com/hyperpolymath/standards/issues/42
-@end
-```
-
-**Action Items:**
-- [ ] Create ADR.a2ml template
-- [ ] Convert existing META.scm ADRs to A2ML
-- [ ] Add ADR validation to CI
-- [ ] Document ADR process with A2ML
-
----
-
-## Progressive Adoption Strategy
-
-### Phase 1: Self-Dogfooding (A2ML v0.6.0 - v1.0.0)
-
-**Focus:** Use A2ML to document itself
-
-1. Convert A2ML's own documentation to A2ML
-2. Use lax mode initially (minimal validation)
-3. Progressively add strictness as format stabilizes
-4. Prove the format works for complex technical docs
-
-**Success Metrics:**
-- A2ML README, SPEC, and guides in A2ML format
-- All internal references validate
-- Documentation CI passes
-- Contributors find it easier than AsciiDoc
-
-### Phase 2: Ecosystem Standards (A2ML v1.0.0+)
-
-**Focus:** Standardize Hyperpolymath documentation
-
-1. Create templates for STATE/ECOSYSTEM/META
-2. Convert rsr-template-repo docs
-3. Pilot in 5-10 repos
-4. Gather feedback and iterate
-
-**Success Metrics:**
-- RSR documentation CI validates A2ML
-- Incomplete docs caught automatically
-- 50+ repos using A2ML
-- Reduced documentation errors
-
-### Phase 3: ABI/FFI Documentation (A2ML v1.1.0+)
-
-**Focus:** Formal verification chain
-
-1. A2ML ABI documentation templates
-2. Convert all zig-*-ffi docs
-3. Link docs to code with proofs
-4. Validate docs in ABI CI
-
-**Success Metrics:**
-- ABI changes require doc updates (enforced)
-- Proof blocks validated
-- 100% ABI documentation coverage
-- Docs match code (verified)
-
-### Phase 4: Full Adoption (A2ML v2.0.0+)
-
-**Focus:** A2ML as default format
-
-1. All new repos start with A2ML
-2. Gradual migration of existing repos
-3. ddraig-ssg native A2ML support
-4. External adoption begins
-
-**Success Metrics:**
-- 500+ repos using A2ML
-- A2ML in rsr-template-repo as default
-- Blog/paper templates widely used
-- External projects adopt A2ML
-
----
-
-## Technical Requirements
-
-### For A2ML to Be Dogfoodable
-
-**Must Have:**
-- [ ] Stable surface syntax (no breaking changes)
-- [ ] Reference resolution working
-- [ ] Validation errors clear and actionable
-- [ ] Tooling: a2ml validate, a2ml convert
-- [ ] CI integration (GitHub Actions)
-
-**Should Have:**
-- [ ] IDE support (VS Code extension)
-- [ ] Syntax highlighting
-- [ ] Auto-completion
-- [ ] Convert from AsciiDoc/Markdown
-
-**Nice to Have:**
-- [ ] Live preview in browser
-- [ ] Documentation generator
-- [ ] Attestation signing built-in
-
-### Tooling Gaps to Fill
-
-1. **Converter:** `a2ml convert README.adoc README.a2ml`
-2. **Validator:** `a2ml validate --strict README.a2ml`
-3. **CI Action:** `actions/a2ml-validate@v1`
-4. **Preview:** `a2ml preview README.a2ml` (local server)
-5. **Generator:** `a2ml generate --template=STATE.a2ml`
-
----
-
-## Success Criteria
-
-A2ML dogfooding is successful when:
-
-1. **Self-Documentation:** A2ML's own docs are in A2ML format
-2. **RSR Standard:** A2ML is the default documentation format in rsr-template-repo
-3. **ABI Coverage:** All ABI/FFI repos document interfaces in A2ML
-4. **Reduced Errors:** Incomplete/malformed docs caught automatically
-5. **External Interest:** Other projects ask to adopt A2ML
-
----
-
-## Risks and Mitigations
-
-### Risk: Format Not Yet Stable
-
-**Impact:** Breaking changes require re-writing docs
-**Mitigation:** Use lax mode, version documents clearly, automated migration tools
-
-### Risk: Tooling Gaps
-
-**Impact:** Hard to use without good tools
-**Mitigation:** Build essential tools first (validator, converter), improve incrementally
-
-### Risk: Learning Curve
-
-**Impact:** Contributors struggle with new format
-**Mitigation:** Clear templates, good error messages, fallback to Markdown/AsciiDoc initially
-
-### Risk: Maintenance Burden
-
-**Impact:** Maintaining docs in two formats
-**Mitigation:** Automated conversion, progressive migration, keep old format until confident
-
----
-
-## Conclusion
-
-A2ML dogfooding is **essential** for proving the format's viability. By using it extensively within the Hyperpolymath ecosystem, we demonstrate:
-
-1. **It works for complex documentation** (specs, guides, ADRs)
-2. **It catches real errors** (incomplete docs, broken references)
-3. **It scales** (500+ repos)
-4. **It integrates** (CI, generators, validators)
-
-**Recommended Start:** Convert A2ML's own README and SPEC to A2ML format using lax mode. This proves the format can handle its own complexity.
-
-**Next Steps:**
-1. Create A2ML versions of key documents (README, SPEC)
-2. Build essential tooling (validator, converter)
-3. Pilot in 5 repos to gather feedback
-4. Iterate based on real usage
-
----
-
-**Document Status:** Ready for Implementation
-**Next Review:** After A2ML v1.0.0 release
-**Maintainer:** Jonathan D.A. Jewell
diff --git a/a2ml/IANA-MEDIA-TYPE-APPLICATION.adoc b/a2ml/IANA-MEDIA-TYPE-APPLICATION.adoc
new file mode 100644
index 00000000..7044190f
--- /dev/null
+++ b/a2ml/IANA-MEDIA-TYPE-APPLICATION.adoc
@@ -0,0 +1,285 @@
+== IANA Media Type Registration Application: application/vnd.a2ml
+
+____
+Prepared for submission to IANA per RFC 6838 (Vendor Tree) Submission
+URL: https://www.iana.org/form/media-types Revision 2 – 2026-04-03
+____
+
+'''''
+
+=== Applicant Information
+
+[cols=",",options="header",]
+|===
+|Field |Value
+|*Full Name* |Jonathan D.A. Jewell
+|*Email* |j.d.a.jewell@open.ac.uk
+|*Affiliation* |The Open University
+|===
+
+'''''
+
+=== Media Type Details
+
+[cols=",",options="header",]
+|===
+|Field |Value
+|*Top-Level Type* |application
+|*Subtype* |vnd.a2ml
+|*Tree* |Vendor (vnd.)
+|===
+
+*Note:* A2ML is distinct from ASAM A2L (`+application/A2L+`), which is a
+measurement and calibration data format for automotive ECUs. Despite
+similar names, the two formats are unrelated in purpose, syntax, and
+application domain.
+
+'''''
+
+=== Technical Parameters
+
+==== Required Parameters
+
+N/A
+
+==== Optional Parameters
+
+* *charset*: If specified, the value MUST be "`utf-8`"
+(case-insensitive). A2ML documents are UTF-8 by default (RFC 3629). The
+charset parameter SHOULD NOT be specified if the document contains
+opaque payload blocks with arbitrary binary content.
+
+==== Encoding Considerations
+
+*binary*
+
+A2ML documents are primarily UTF-8 text but MAY include opaque payload
+blocks (via the `+@opaque+` directive) containing arbitrary binary data.
+Because opaque blocks may contain any octet sequence, the encoding is
+classified as "`binary`" per RFC 6838 Section 4.8.
+
+Implementations MUST preserve byte-for-byte fidelity of opaque blocks
+across parsing and serialisation. Line endings are LF (U+000A) by
+convention; parsers MUST accept CR+LF (U+000D U+000A) and normalise to
+LF internally.
+
+'''''
+
+=== Security Considerations
+
+A2ML is a document markup format comparable to Markdown and AsciiDoc. It
+is not executable by itself and does not contain active content.
+
+*Executable content:* A2ML MAY embed opaque payload blocks (using the
+`+@opaque+` directive) and code blocks (using fenced code blocks) that
+can contain code, scripts, or other executable content. Processors MUST
+treat opaque payloads and code blocks as untrusted data and MUST NOT
+execute embedded content by default. If an implementation offers
+execution or evaluation features (e.g., running code blocks in a REPL
+environment), it MUST:
+
+* {blank}
+[loweralpha]
+. Operate in a sandboxed context with restricted privileges
+* {blank}
+[loweralpha, start=2]
+. Require explicit user consent before execution
+* {blank}
+[loweralpha, start=3]
+. Clearly indicate which content is being executed
+* {blank}
+[loweralpha, start=4]
+. Provide mechanisms to disable execution entirely
+
+*Privacy:* A2ML documents may contain personally identifiable
+information (PII) in author metadata, abstracts, or content blocks.
+Implementations SHOULD provide mechanisms to redact or strip metadata
+when sharing documents. Opaque payloads may contain sensitive data and
+SHOULD be inspected before transmission across trust boundaries.
+
+*Integrity and cryptographic attestation:* A2ML documents support
+cryptographic attestation via Ed25519 signatures for opaque payloads and
+document structure. Implementations that verify signatures MUST
+validate:
+
+* {blank}
+[loweralpha]
+. Signature correctness against the stated public key
+* {blank}
+[loweralpha, start=2]
+. Timestamp freshness (to prevent replay)
+* {blank}
+[loweralpha, start=3]
+. Public-key trust (via a known-keys list or certificate chain)
+
+Documents without signatures SHOULD be treated as unverified.
+
+*Compression:* A2ML does not define a compression layer. If documents
+are compressed for transport, standard HTTP Content-Encoding or
+Transfer-Encoding mechanisms (RFC 9110) should be used.
+
+*External references:* A2ML link syntax (`+[label](url)+`) and
+`+@ref()+` directives may reference external resources. Implementations
+MUST NOT automatically fetch external resources without user consent.
+
+'''''
+
+=== Interoperability Considerations
+
+A2ML is designed for cross-platform interoperability with progressive
+strictness modes:
+
+* *Lax mode*: Permissive parsing, warnings only
+* *Checked mode*: Structural validation required (unique IDs, valid
+cross-references, well-formed directives)
+* *Attested mode*: Cryptographic attestation required, enforced by
+dependent-type proofs in the Idris2 reference implementation
+
+Character encoding is UTF-8 (RFC 3629). Byte Order Marks (U+FEFF) at the
+start of a document are permitted but not required; parsers MUST accept
+and silently consume a leading BOM.
+
+Opaque payloads are preserved byte-for-byte across parsing and
+serialisation. Renderers MAY transform opaque content for display but
+MUST retain the original bytes for attestation and round-trip fidelity.
+
+A2ML is renderer-agnostic and can be converted to HTML5, LaTeX/PDF,
+Markdown (CommonMark), Djot, or plain text.
+
+Implementations SHOULD support all three strictness modes.
+
+'''''
+
+=== Published Specification
+
+* *Primary specification (v1.0.0, Stable):*
+https://github.com/hyperpolymath/standards/blob/main/a2ml/SPEC-v1.0.adoc
+* *Surface grammar specification (v0, Draft):*
+https://github.com/hyperpolymath/standards/blob/main/a2ml/SPEC.adoc
+* *Formal verification (Idris2 typed core):*
+https://github.com/hyperpolymath/a2ml/tree/main/src/A2ML
+
+'''''
+
+=== Application Usage
+
+A2ML is used by:
+
+* A2ML compilers and validators (the `+a2ml+` command-line tool)
+* Static site generators that consume A2ML documents
+* Document management systems requiring formal structure guarantees
+* Academic publishing workflows for papers and specifications
+* Technical documentation with verifiable cross-references
+* Standards bodies requiring attested document integrity
+* AI agent manifest files (0-AI-MANIFEST.a2ml, AI.a2ml)
+
+Reference implementation:
+https://github.com/hyperpolymath/standards/tree/main/a2ml
+
+'''''
+
+=== Fragment Identifier Considerations
+
+Fragment identifiers for A2ML documents refer to element IDs.
+
+*Syntax:* `+#+` where `++` matches `+[A-Za-z][A-Za-z0-9:_-]*+`
+
+*Examples:* - `+#intro+` – references a section with id="`intro`" -
+`+#fig:results+` – references a figure with id="`fig:results`" -
+`+#tab:data+` – references a table with id="`tab:data`"
+
+*Resolution:* Fragment MUST match an element with the specified ID. If
+no match, the user agent SHOULD treat it as unresolvable without raising
+an error. ID uniqueness enforcement depends on the strictness mode
+(attested > checked > lax).
+
+'''''
+
+=== Restrictions on Usage
+
+None.
+
+'''''
+
+=== Provisional Registration
+
+*No.* (Vendor-tree registration; provisional applies only to standards
+tree.)
+
+'''''
+
+=== Additional Information
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Field |Value
+|*Deprecated alias names* |None
+
+|*Magic number(s)* |None (text-based format; identified by file
+extension or content detection of A2ML directives such as
+`+@abstract:+`, `+@refs:+`, `+@opaque:+`)
+
+|*File extension(s)* |`+.a2ml+`
+
+|*Macintosh file type code(s)* |None
+
+|*Object Identifier(s) / OID(s)* |None
+
+|*Intended usage* |COMMON
+|===
+
+==== Other Comments
+
+A2ML (Attested Markup Language) is a lightweight markup language that
+compiles to a typed, verifiable core with formal proof obligations. It
+enables progressive strictness: from permissive authoring to formally
+verified structural invariants enforced by dependent types in Idris2.
+
+The format is designed for long-term document preservation with
+cryptographic attestation and byte-for-byte opaque payload fidelity.
+
+'''''
+
+=== Contact Information
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Field |Value
+|*Contact Name* |Jonathan D.A. Jewell
+|*Contact Email* |j.d.a.jewell@open.ac.uk
+|*Affiliation* |The Open University
+|*Address* |Milton Keynes, MK7 6AA, United Kingdom
+|*Author/Change Controller* |Jonathan D.A. Jewell, The Open University
+|===
+
+'''''
+
+=== References
+
+[arabic]
+. RFC 6838 – Media Type Specifications and Registration Procedures
+https://www.rfc-editor.org/rfc/rfc6838.html
+. RFC 3629 – UTF-8, a transformation format of ISO 10646
+https://www.rfc-editor.org/rfc/rfc3629.html
+. RFC 9110 – HTTP Semantics https://www.rfc-editor.org/rfc/rfc9110.html
+. A2ML Specification (v1.0.0, Stable)
+https://github.com/hyperpolymath/standards/blob/main/a2ml/SPEC-v1.0.adoc
+. A2ML Idris2 Core Implementation
+https://github.com/hyperpolymath/a2ml/tree/main/src/A2ML
+
+'''''
+
+=== Submission Checklist
+
+* [x] Review all fields for accuracy
+* [x] Verify published specification links are accessible
+* [x] Confirm no naming conflict with existing registrations
+* [x] Clarify distinction from ASAM A2L (application/A2L)
+* [ ] Submit via IANA web form at https://www.iana.org/form/media-types
+* [ ] Monitor IANA email for review feedback
+* [ ] Update specification with assigned media type upon approval
+
+'''''
+
+_Prepared: 2026-01-30_ _Revised: 2026-04-03 (Revision 2)_ _Status: Draft
+– ready for submission_
diff --git a/a2ml/IANA-MEDIA-TYPE-APPLICATION.md b/a2ml/IANA-MEDIA-TYPE-APPLICATION.md
deleted file mode 100644
index 36e4ab7b..00000000
--- a/a2ml/IANA-MEDIA-TYPE-APPLICATION.md
+++ /dev/null
@@ -1,259 +0,0 @@
-
-# IANA Media Type Registration Application: application/vnd.a2ml
-
-> Prepared for submission to IANA per RFC 6838 (Vendor Tree)
-> Submission URL: https://www.iana.org/form/media-types
-> Revision 2 -- 2026-04-03
-
----
-
-## Applicant Information
-
-| Field | Value |
-|-------|-------|
-| **Full Name** | Jonathan D.A. Jewell |
-| **Email** | j.d.a.jewell@open.ac.uk |
-| **Affiliation** | The Open University |
-
----
-
-## Media Type Details
-
-| Field | Value |
-|-------|-------|
-| **Top-Level Type** | application |
-| **Subtype** | vnd.a2ml |
-| **Tree** | Vendor (vnd.) |
-
-**Note:** A2ML is distinct from ASAM A2L (`application/A2L`), which is a
-measurement and calibration data format for automotive ECUs. Despite similar
-names, the two formats are unrelated in purpose, syntax, and application domain.
-
----
-
-## Technical Parameters
-
-### Required Parameters
-
-N/A
-
-### Optional Parameters
-
-- **charset**: If specified, the value MUST be "utf-8" (case-insensitive).
- A2ML documents are UTF-8 by default (RFC 3629). The charset parameter
- SHOULD NOT be specified if the document contains opaque payload blocks
- with arbitrary binary content.
-
-### Encoding Considerations
-
-**binary**
-
-A2ML documents are primarily UTF-8 text but MAY include opaque payload blocks
-(via the `@opaque` directive) containing arbitrary binary data. Because opaque
-blocks may contain any octet sequence, the encoding is classified as "binary"
-per RFC 6838 Section 4.8.
-
-Implementations MUST preserve byte-for-byte fidelity of opaque blocks across
-parsing and serialisation. Line endings are LF (U+000A) by convention; parsers
-MUST accept CR+LF (U+000D U+000A) and normalise to LF internally.
-
----
-
-## Security Considerations
-
-A2ML is a document markup format comparable to Markdown and AsciiDoc. It is
-not executable by itself and does not contain active content.
-
-**Executable content:** A2ML MAY embed opaque payload blocks (using the
-`@opaque` directive) and code blocks (using fenced code blocks) that can
-contain code, scripts, or other executable content. Processors MUST treat
-opaque payloads and code blocks as untrusted data and MUST NOT execute
-embedded content by default. If an implementation offers execution or
-evaluation features (e.g., running code blocks in a REPL environment), it
-MUST:
-
-- (a) Operate in a sandboxed context with restricted privileges
-- (b) Require explicit user consent before execution
-- (c) Clearly indicate which content is being executed
-- (d) Provide mechanisms to disable execution entirely
-
-**Privacy:** A2ML documents may contain personally identifiable information
-(PII) in author metadata, abstracts, or content blocks. Implementations
-SHOULD provide mechanisms to redact or strip metadata when sharing documents.
-Opaque payloads may contain sensitive data and SHOULD be inspected before
-transmission across trust boundaries.
-
-**Integrity and cryptographic attestation:** A2ML documents support
-cryptographic attestation via Ed25519 signatures for opaque payloads and
-document structure. Implementations that verify signatures MUST validate:
-
-- (a) Signature correctness against the stated public key
-- (b) Timestamp freshness (to prevent replay)
-- (c) Public-key trust (via a known-keys list or certificate chain)
-
-Documents without signatures SHOULD be treated as unverified.
-
-**Compression:** A2ML does not define a compression layer. If documents are
-compressed for transport, standard HTTP Content-Encoding or Transfer-Encoding
-mechanisms (RFC 9110) should be used.
-
-**External references:** A2ML link syntax (`[label](url)`) and `@ref()`
-directives may reference external resources. Implementations MUST NOT
-automatically fetch external resources without user consent.
-
----
-
-## Interoperability Considerations
-
-A2ML is designed for cross-platform interoperability with progressive
-strictness modes:
-
-- **Lax mode**: Permissive parsing, warnings only
-- **Checked mode**: Structural validation required (unique IDs, valid
- cross-references, well-formed directives)
-- **Attested mode**: Cryptographic attestation required, enforced by
- dependent-type proofs in the Idris2 reference implementation
-
-Character encoding is UTF-8 (RFC 3629). Byte Order Marks (U+FEFF) at the
-start of a document are permitted but not required; parsers MUST accept and
-silently consume a leading BOM.
-
-Opaque payloads are preserved byte-for-byte across parsing and serialisation.
-Renderers MAY transform opaque content for display but MUST retain the
-original bytes for attestation and round-trip fidelity.
-
-A2ML is renderer-agnostic and can be converted to HTML5, LaTeX/PDF,
-Markdown (CommonMark), Djot, or plain text.
-
-Implementations SHOULD support all three strictness modes.
-
----
-
-## Published Specification
-
-- **Primary specification (v1.0.0, Stable):**
- https://github.com/hyperpolymath/standards/blob/main/a2ml/SPEC-v1.0.adoc
-
-- **Surface grammar specification (v0, Draft):**
- https://github.com/hyperpolymath/standards/blob/main/a2ml/SPEC.adoc
-
-- **Formal verification (Idris2 typed core):**
- https://github.com/hyperpolymath/a2ml/tree/main/src/A2ML
-
----
-
-## Application Usage
-
-A2ML is used by:
-
-- A2ML compilers and validators (the `a2ml` command-line tool)
-- Static site generators that consume A2ML documents
-- Document management systems requiring formal structure guarantees
-- Academic publishing workflows for papers and specifications
-- Technical documentation with verifiable cross-references
-- Standards bodies requiring attested document integrity
-- AI agent manifest files (0-AI-MANIFEST.a2ml, AI.a2ml)
-
-Reference implementation: https://github.com/hyperpolymath/standards/tree/main/a2ml
-
----
-
-## Fragment Identifier Considerations
-
-Fragment identifiers for A2ML documents refer to element IDs.
-
-**Syntax:** `#` where `` matches `[A-Za-z][A-Za-z0-9:_-]*`
-
-**Examples:**
-- `#intro` -- references a section with id="intro"
-- `#fig:results` -- references a figure with id="fig:results"
-- `#tab:data` -- references a table with id="tab:data"
-
-**Resolution:** Fragment MUST match an element with the specified ID. If no
-match, the user agent SHOULD treat it as unresolvable without raising an
-error. ID uniqueness enforcement depends on the strictness mode
-(attested > checked > lax).
-
----
-
-## Restrictions on Usage
-
-None.
-
----
-
-## Provisional Registration
-
-**No.** (Vendor-tree registration; provisional applies only to standards tree.)
-
----
-
-## Additional Information
-
-| Field | Value |
-|-------|-------|
-| **Deprecated alias names** | None |
-| **Magic number(s)** | None (text-based format; identified by file extension or content detection of A2ML directives such as `@abstract:`, `@refs:`, `@opaque:`) |
-| **File extension(s)** | `.a2ml` |
-| **Macintosh file type code(s)** | None |
-| **Object Identifier(s) / OID(s)** | None |
-| **Intended usage** | COMMON |
-
-### Other Comments
-
-A2ML (Attested Markup Language) is a lightweight markup language that compiles
-to a typed, verifiable core with formal proof obligations. It enables
-progressive strictness: from permissive authoring to formally verified
-structural invariants enforced by dependent types in Idris2.
-
-The format is designed for long-term document preservation with cryptographic
-attestation and byte-for-byte opaque payload fidelity.
-
----
-
-## Contact Information
-
-| Field | Value |
-|-------|-------|
-| **Contact Name** | Jonathan D.A. Jewell |
-| **Contact Email** | j.d.a.jewell@open.ac.uk |
-| **Affiliation** | The Open University |
-| **Address** | Milton Keynes, MK7 6AA, United Kingdom |
-| **Author/Change Controller** | Jonathan D.A. Jewell, The Open University |
-
----
-
-## References
-
-1. RFC 6838 -- Media Type Specifications and Registration Procedures
- https://www.rfc-editor.org/rfc/rfc6838.html
-
-2. RFC 3629 -- UTF-8, a transformation format of ISO 10646
- https://www.rfc-editor.org/rfc/rfc3629.html
-
-3. RFC 9110 -- HTTP Semantics
- https://www.rfc-editor.org/rfc/rfc9110.html
-
-4. A2ML Specification (v1.0.0, Stable)
- https://github.com/hyperpolymath/standards/blob/main/a2ml/SPEC-v1.0.adoc
-
-5. A2ML Idris2 Core Implementation
- https://github.com/hyperpolymath/a2ml/tree/main/src/A2ML
-
----
-
-## Submission Checklist
-
-- [x] Review all fields for accuracy
-- [x] Verify published specification links are accessible
-- [x] Confirm no naming conflict with existing registrations
-- [x] Clarify distinction from ASAM A2L (application/A2L)
-- [ ] Submit via IANA web form at https://www.iana.org/form/media-types
-- [ ] Monitor IANA email for review feedback
-- [ ] Update specification with assigned media type upon approval
-
----
-
-*Prepared: 2026-01-30*
-*Revised: 2026-04-03 (Revision 2)*
-*Status: Draft -- ready for submission*
diff --git a/a2ml/READINESS.adoc b/a2ml/READINESS.adoc
new file mode 100644
index 00000000..baf1c91f
--- /dev/null
+++ b/a2ml/READINESS.adoc
@@ -0,0 +1,163 @@
+== a2ml Component Readiness Assessment
+
+*Standard:*
+https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades[Component
+Readiness Grades (CRG) v1.0] *Assessed:* 2026-04-04 *Assessor:* Jonathan
+D.A. Jewell + Claude Sonnet 4.6
+
+*Current Grade:* B
+
+=== Summary
+
+[width="100%",cols="16%,4%,14%,66%",options="header",]
+|===
+|Component |Grade |Release Stage |Evidence Summary
+|`+a2ml-validator+` |B |Release Candidate |Deployed via dogfood-gate on
+105+ repos; validates STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml,
+AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml across Rust, Elixir, Gleam,
+Julia, ReScript contexts.
+
+|`+a2ml-rs+` |B |Release Candidate |Rust implementation; used as
+reference validator; CLI and library API both validated on 105+ repos.
+
+|`+a2ml_ex+` |C |Beta |Elixir implementation; integrated into mix
+pipeline on Elixir repos; dogfooded on burble, oblibeny, boj-server
+adapter layer.
+
+|`+a2ml_gleam+` |C |Beta |Gleam implementation; wired on BEAM/Gleam
+repos; dogfooded on k9_gleam, a2ml_gleam, polyglot-formalisms-gleam.
+
+|`+a2ml-haskell+` |C |Beta |Haskell implementation; validated on Haskell
+repos in the estate.
+
+|`+a2ml-deno+` |C |Beta |Deno/TypeScript-free JS implementation; used on
+ReScript/Deno frontend repos (idaptik, nafa-app).
+
+|`+schema+` |B |Release Candidate |Core A2ML schema definition; stable
+since v1.0; referenced by all 6 language implementations and 105+ repos.
+
+|`+dogfood-gate+` |B |Release Candidate |CI enforcement workflow;
+deployed on all repos requiring A2ML compliance; diverse language
+targets confirmed.
+|===
+
+=== Overall Project Readiness
+
+* *Components at B or above:* 4/8 (50%) — a2ml-validator, a2ml-rs,
+schema, dogfood-gate
+* *Components at C (Beta) or above:* 8/8 (100%)
+* *Components at D (Alpha):* 0/8 (0%)
+* *Weighted assessment:* The A2ML standard and its primary validator are
+*Grade B*. Language-specific implementations are Beta-quality with real
+dogfooding.
+
+=== Detailed Assessment
+
+==== `+a2ml-validator+` — Core A2ML Validation Engine (Grade: B)
+
+*Evidence:* - Deployed via `+dogfood-gate+` CI workflow on 105+
+hyperpolymath repos - Validates 6 canonical file types: STATE.a2ml,
+META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml -
+Language context diversity confirmed: 1. Rust repos (panic-attacker,
+januskey, conflow, a2ml-rs, ephapax) — .machine_readable/6a2/ paths 2.
+Elixir/Phoenix repos (burble, oblibeny, boj-server adapters) — BEAM
+ecosystem 3. Gleam repos (k9_gleam, a2ml_gleam,
+polyglot-formalisms-gleam) — typed BEAM 4. Julia repos (7-tentacles,
+statistease, developer-ecosystem) — scientific computing 5.
+ReScript/Deno repos (idaptik, nafa-app) — web frontend 6. Idris2 repos
+(ephapax, stapeln) — formal verification 7. Multi-language monorepos
+(developer-ecosystem, nextgen-languages) — polyglot 8. Standards repos
+(standards, rsr-template-repo) — meta-validation - Findings: 41 repos
+flagged for SCM→A2ML migration (tracked in memory file
+scm-to-a2ml-migration.md)
+
+*Known limitations:* - A2ML parser is strict; minor formatting issues
+cause validation failure rather than warning - PLAYBOOK.a2ml schema not
+yet finalised (v0.9) - Cross-reference validation between A2ML files not
+yet implemented
+
+*Promotion path to A:* External users outside hyperpolymath adopt A2ML
+and confirm validator is non-blocking for their workflows.
+
+==== `+schema+` — A2ML Schema Definition (Grade: B)
+
+*Evidence:* - Core schema stable since v1.0 - Referenced by 6 language
+implementations (Rust, Elixir, Gleam, Haskell, Deno, Julia) - Deployed
+on 105+ repos as the canonical AI manifest format - IANA media type
+submission in progress (`+application/vnd.a2ml+`)
+
+*Known limitations:* - PLAYBOOK.a2ml schema at v0.9 (not yet stable) -
+No formal grammar (EBNF/PEG) published yet
+
+*Promotion path to A:* IANA media type approved; grammar published;
+external adopters.
+
+==== `+dogfood-gate+` — CI Enforcement Workflow (Grade: B)
+
+*Evidence:* - Deployed on all RSR-compliant repos requiring A2ML
+compliance (105+) - Blocks merge on validation failure - Targets
+confirmed across all primary hyperpolymath languages - SHA-pinned,
+`+permissions: read-all+`, SPDX header present
+
+*Known limitations:* - Some repos have partial A2ML files (missing
+PLAYBOOK.a2ml) — gate configured to warn only for optional files -
+Periodic SHA pin refresh required
+
+*Promotion path to A:* External maintainers adopt dogfood-gate; no
+harmful false-positives in wild.
+
+==== `+a2ml-rs+` — Rust Implementation (Grade: B)
+
+*Evidence:* - Reference implementation; CLI and library API - Used as
+validator on 105+ repos via dogfood-gate - Extensive test suite; CI
+passing
+
+*Known limitations:* - Some edge cases in UTF-8 boundary handling -
+Library API not yet stabilised (semver pre-1.0)
+
+==== `+a2ml_ex+` — Elixir Implementation (Grade: C)
+
+*Evidence:* - Integrated into mix pipeline on all Elixir repos in the
+estate - Dogfooded on burble, oblibeny, boj-server adapter layer
+
+*Promotion path to B:* Validated on 6+ diverse external Elixir projects.
+
+==== `+a2ml_gleam+` — Gleam Implementation (Grade: C)
+
+*Evidence:* - Wired on BEAM/Gleam repos (k9_gleam, a2ml_gleam,
+polyglot-formalisms-gleam) - Compiles to both BEAM and JavaScript
+targets
+
+*Promotion path to B:* Validated on 6+ diverse Gleam/BEAM projects.
+
+==== `+a2ml-haskell+` — Haskell Implementation (Grade: C)
+
+*Evidence:* - Validated on Haskell repos in the estate (a2ml-haskell
+itself, scaffoldia)
+
+*Promotion path to B:* Validated on 6+ diverse Haskell projects.
+
+==== `+a2ml-deno+` — Deno Implementation (Grade: C)
+
+*Evidence:* - Used on ReScript/Deno frontend repos (idaptik, nafa-app) -
+Zero npm dependencies (pure Deno)
+
+*Promotion path to B:* Validated on 6+ diverse Deno/ReScript projects.
+
+=== Recipes
+
+....
+just validate # Validate A2ML files in a repo
+just test # All implementation tests
+just build # Build all language implementations
+just check-schema # Validate schema self-consistency
+just lint # Format and lint checks
+....
+
+=== Known Debt
+
+* PLAYBOOK.a2ml schema not yet at v1.0
+* No formal grammar (EBNF/PEG) for the A2ML format
+* Cross-reference validation between A2ML files not implemented
+* 41 repos still using SCM files instead of A2ML (migration tracked)
+* IANA media type application pending
diff --git a/a2ml/READINESS.md b/a2ml/READINESS.md
deleted file mode 100644
index 919f2c58..00000000
--- a/a2ml/READINESS.md
+++ /dev/null
@@ -1,143 +0,0 @@
-
-
-
-# a2ml Component Readiness Assessment
-
-**Standard:** [Component Readiness Grades (CRG) v1.0](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)
-**Assessed:** 2026-04-04
-**Assessor:** Jonathan D.A. Jewell + Claude Sonnet 4.6
-
-**Current Grade:** B
-
-## Summary
-
-| Component | Grade | Release Stage | Evidence Summary |
-|--------------------|-------|--------------------|-----------------------------------------------------------------------------------------------|
-| `a2ml-validator` | B | Release Candidate | Deployed via dogfood-gate on 105+ repos; validates STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml across Rust, Elixir, Gleam, Julia, ReScript contexts. |
-| `a2ml-rs` | B | Release Candidate | Rust implementation; used as reference validator; CLI and library API both validated on 105+ repos. |
-| `a2ml_ex` | C | Beta | Elixir implementation; integrated into mix pipeline on Elixir repos; dogfooded on burble, oblibeny, boj-server adapter layer. |
-| `a2ml_gleam` | C | Beta | Gleam implementation; wired on BEAM/Gleam repos; dogfooded on k9_gleam, a2ml_gleam, polyglot-formalisms-gleam. |
-| `a2ml-haskell` | C | Beta | Haskell implementation; validated on Haskell repos in the estate. |
-| `a2ml-deno` | C | Beta | Deno/TypeScript-free JS implementation; used on ReScript/Deno frontend repos (idaptik, nafa-app). |
-| `schema` | B | Release Candidate | Core A2ML schema definition; stable since v1.0; referenced by all 6 language implementations and 105+ repos. |
-| `dogfood-gate` | B | Release Candidate | CI enforcement workflow; deployed on all repos requiring A2ML compliance; diverse language targets confirmed. |
-
-## Overall Project Readiness
-
-- **Components at B or above:** 4/8 (50%) — a2ml-validator, a2ml-rs, schema, dogfood-gate
-- **Components at C (Beta) or above:** 8/8 (100%)
-- **Components at D (Alpha):** 0/8 (0%)
-- **Weighted assessment:** The A2ML standard and its primary validator are **Grade B**. Language-specific implementations are Beta-quality with real dogfooding.
-
-## Detailed Assessment
-
-### `a2ml-validator` — Core A2ML Validation Engine (Grade: B)
-
-**Evidence:**
-- Deployed via `dogfood-gate` CI workflow on 105+ hyperpolymath repos
-- Validates 6 canonical file types: STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml
-- Language context diversity confirmed:
- 1. Rust repos (panic-attacker, januskey, conflow, a2ml-rs, ephapax) — .machine_readable/6a2/ paths
- 2. Elixir/Phoenix repos (burble, oblibeny, boj-server adapters) — BEAM ecosystem
- 3. Gleam repos (k9_gleam, a2ml_gleam, polyglot-formalisms-gleam) — typed BEAM
- 4. Julia repos (7-tentacles, statistease, developer-ecosystem) — scientific computing
- 5. ReScript/Deno repos (idaptik, nafa-app) — web frontend
- 6. Idris2 repos (ephapax, stapeln) — formal verification
- 7. Multi-language monorepos (developer-ecosystem, nextgen-languages) — polyglot
- 8. Standards repos (standards, rsr-template-repo) — meta-validation
-- Findings: 41 repos flagged for SCM→A2ML migration (tracked in memory file scm-to-a2ml-migration.md)
-
-**Known limitations:**
-- A2ML parser is strict; minor formatting issues cause validation failure rather than warning
-- PLAYBOOK.a2ml schema not yet finalised (v0.9)
-- Cross-reference validation between A2ML files not yet implemented
-
-**Promotion path to A:** External users outside hyperpolymath adopt A2ML and confirm validator is non-blocking for their workflows.
-
-### `schema` — A2ML Schema Definition (Grade: B)
-
-**Evidence:**
-- Core schema stable since v1.0
-- Referenced by 6 language implementations (Rust, Elixir, Gleam, Haskell, Deno, Julia)
-- Deployed on 105+ repos as the canonical AI manifest format
-- IANA media type submission in progress (`application/vnd.a2ml`)
-
-**Known limitations:**
-- PLAYBOOK.a2ml schema at v0.9 (not yet stable)
-- No formal grammar (EBNF/PEG) published yet
-
-**Promotion path to A:** IANA media type approved; grammar published; external adopters.
-
-### `dogfood-gate` — CI Enforcement Workflow (Grade: B)
-
-**Evidence:**
-- Deployed on all RSR-compliant repos requiring A2ML compliance (105+)
-- Blocks merge on validation failure
-- Targets confirmed across all primary hyperpolymath languages
-- SHA-pinned, `permissions: read-all`, SPDX header present
-
-**Known limitations:**
-- Some repos have partial A2ML files (missing PLAYBOOK.a2ml) — gate configured to warn only for optional files
-- Periodic SHA pin refresh required
-
-**Promotion path to A:** External maintainers adopt dogfood-gate; no harmful false-positives in wild.
-
-### `a2ml-rs` — Rust Implementation (Grade: B)
-
-**Evidence:**
-- Reference implementation; CLI and library API
-- Used as validator on 105+ repos via dogfood-gate
-- Extensive test suite; CI passing
-
-**Known limitations:**
-- Some edge cases in UTF-8 boundary handling
-- Library API not yet stabilised (semver pre-1.0)
-
-### `a2ml_ex` — Elixir Implementation (Grade: C)
-
-**Evidence:**
-- Integrated into mix pipeline on all Elixir repos in the estate
-- Dogfooded on burble, oblibeny, boj-server adapter layer
-
-**Promotion path to B:** Validated on 6+ diverse external Elixir projects.
-
-### `a2ml_gleam` — Gleam Implementation (Grade: C)
-
-**Evidence:**
-- Wired on BEAM/Gleam repos (k9_gleam, a2ml_gleam, polyglot-formalisms-gleam)
-- Compiles to both BEAM and JavaScript targets
-
-**Promotion path to B:** Validated on 6+ diverse Gleam/BEAM projects.
-
-### `a2ml-haskell` — Haskell Implementation (Grade: C)
-
-**Evidence:**
-- Validated on Haskell repos in the estate (a2ml-haskell itself, scaffoldia)
-
-**Promotion path to B:** Validated on 6+ diverse Haskell projects.
-
-### `a2ml-deno` — Deno Implementation (Grade: C)
-
-**Evidence:**
-- Used on ReScript/Deno frontend repos (idaptik, nafa-app)
-- Zero npm dependencies (pure Deno)
-
-**Promotion path to B:** Validated on 6+ diverse Deno/ReScript projects.
-
-## Recipes
-
-```
-just validate # Validate A2ML files in a repo
-just test # All implementation tests
-just build # Build all language implementations
-just check-schema # Validate schema self-consistency
-just lint # Format and lint checks
-```
-
-## Known Debt
-
-- PLAYBOOK.a2ml schema not yet at v1.0
-- No formal grammar (EBNF/PEG) for the A2ML format
-- Cross-reference validation between A2ML files not implemented
-- 41 repos still using SCM files instead of A2ML (migration tracked)
-- IANA media type application pending
diff --git a/a2ml/SECURITY-SETUP.adoc b/a2ml/SECURITY-SETUP.adoc
new file mode 100644
index 00000000..ac92d64d
--- /dev/null
+++ b/a2ml/SECURITY-SETUP.adoc
@@ -0,0 +1,242 @@
+== Security Configuration for a2ml.net
+
+=== Overview
+
+This site is configured with maximum security settings on Cloudflare’s
+free tier, including:
+
+* *TLS 1.3* minimum (no TLS 1.2 or older)
+* *HSTS* with preload (max-age=31536000, includeSubDomains)
+* *Strict SSL/TLS* mode
+* *HTTP/2 and HTTP/3 (QUIC)* enabled
+* *Brotli compression*
+* *Consent-Aware HTTP* (GDPR/privacy compliance)
+* *RFC 9116 compliant* security.txt
+
+=== DNS Configuration
+
+==== A Records (GitHub Pages)
+
+Both root (@) and www use A records for consistency:
+
+....
+@ A 185.199.108.153
+@ A 185.199.109.153
+@ A 185.199.110.153
+@ A 185.199.111.153
+
+www A 185.199.108.153
+www A 185.199.109.153
+www A 185.199.110.153
+www A 185.199.111.153
+....
+
+*Why A records for www instead of CNAME?* - Consistent behavior with
+root domain - No CNAME chain resolution needed - Direct control over IP
+addresses - Better for SEO (some crawlers prefer consistency)
+
+==== AAAA Records (IPv6)
+
+....
+@ AAAA 2606:50c0:8000::153
+@ AAAA 2606:50c0:8001::153
+@ AAAA 2606:50c0:8002::153
+@ AAAA 2606:50c0:8003::153
+
+www AAAA 2606:50c0:8000::153
+www AAAA 2606:50c0:8001::153
+www AAAA 2606:50c0:8002::153
+www AAAA 2606:50c0:8003::153
+....
+
+==== CAA Records (Certificate Authority Authorization)
+
+....
+@ CAA 128 issue "letsencrypt.org"
+@ CAA 128 issuewild "letsencrypt.org"
+@ CAA 128 issue "digicert.com"
+@ CAA 128 iodef "mailto:security@a2ml.net"
+....
+
+*Flag 128 = Critical*: If a CA doesn’t understand the CAA record, it
+MUST refuse to issue the certificate.
+
+==== Email Security
+
+....
+@ TXT "v=spf1 include:_spf.github.com ~all"
+_dmarc TXT "v=DMARC1; p=reject; rua=mailto:security@a2ml.net"
+....
+
+=== Cloudflare Security Settings
+
+==== TLS/SSL
+
+* *Minimum TLS Version*: 1.3
+* *SSL Mode*: Strict (Full with certificate verification)
+* *Always Use HTTPS*: On
+* *Automatic HTTPS Rewrites*: On
+* *Opportunistic Encryption*: On
+* *TLS 1.3 0-RTT*: On
+
+==== HSTS (HTTP Strict Transport Security)
+
+....
+Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
+....
+
+* *Max Age*: 31536000 seconds (1 year)
+* *Include Subdomains*: Yes
+* *Preload*: Yes (eligible for browser preload lists)
+
+To add to Chrome’s preload list: https://hstspreload.org/
+
+==== Security Headers
+
+* *X-Content-Type-Options*: nosniff
+* *X-Frame-Options*: SAMEORIGIN
+* *X-XSS-Protection*: 1; mode=block
+* *Referrer-Policy*: strict-origin-when-cross-origin
+* *Permissions-Policy*: Configured via meta tags or headers
+
+==== Performance
+
+* *HTTP/2*: Enabled
+* *HTTP/3 (QUIC)*: Enabled
+* *Brotli Compression*: Enabled
+* *0-RTT Connection Resumption*: Enabled
+
+==== Bot Management
+
+* *Security Level*: Medium (allows search bots)
+* *Browser Integrity Check*: On
+* *Challenge Passage*: 30 minutes
+* *Email Obfuscation*: On
+
+=== Consent-Aware HTTP
+
+This site implements consent-aware-http for GDPR/privacy compliance.
+
+==== Consent Categories
+
+[arabic]
+. *Essential* (always on)
+* Core site functionality
+* Security features
+* Session management
+. *Functional*
+* Enhanced features
+* User preferences
+* Language settings
+. *Analytics*
+* Anonymous usage statistics
+* Performance monitoring
+* Error tracking
+. *Marketing*
+* Advertising
+* Campaign tracking
+* Social media integration
+. *Personalization*
+* Customized content
+* Recommendations
+* User profiling
+
+==== Implementation
+
+*Cloudflare Worker* (consent-aware-http.js) intercepts all requests and:
+1. Checks for `+user-consent+` cookie 2. Validates consent level matches
+resource requirements 3. Returns 403 if consent not granted 4. Passes
+request to origin if consent valid
+
+*Frontend* includes consent banner allowing users to: - View current
+consent settings - Grant/revoke consent per category - Export consent
+preferences - Delete all tracking data
+
+==== Testing Consent
+
+[source,bash]
+----
+# Without consent cookie (essential only)
+curl https://a2ml.net/api/analytics
+# → 403 Forbidden (requires analytics consent)
+
+# With analytics consent
+curl -b "user-consent=%7B%22analytics%22%3Atrue%7D" \
+ https://a2ml.net/api/analytics
+# → 200 OK
+
+# Essential resources always work
+curl https://a2ml.net/
+# → 200 OK (no consent needed)
+----
+
+=== .well-known/security.txt
+
+RFC 9116 compliant security contact information:
+
+....
+https://a2ml.net/.well-known/security.txt
+....
+
+Contains: - Security contact emails - GitHub security advisory links -
+PGP encryption keys - Security policy links - Acknowledgments page -
+Consent-aware-http endpoints - Expiration date (1 year)
+
+=== Verification
+
+==== Check DNS Records
+
+[source,bash]
+----
+dig a2ml.net A +short
+dig a2ml.net AAAA +short
+dig a2ml.net CAA +short
+dig _dmarc.a2ml.net TXT +short
+----
+
+==== Check TLS Configuration
+
+[source,bash]
+----
+curl -I https://a2ml.net | grep -i strict-transport
+----
+
+==== Check security.txt
+
+[source,bash]
+----
+curl https://a2ml.net/.well-known/security.txt
+----
+
+==== SSL Labs Test
+
+https://www.ssllabs.com/ssltest/analyze.html?d=a2ml.net
+
+*Expected Grade*: A+ (with HSTS preload)
+
+==== SecurityHeaders.com
+
+https://securityheaders.com/?q=a2ml.net
+
+*Expected Grade*: A+ (with all headers configured)
+
+=== Reporting Security Issues
+
+*DO NOT* open public GitHub issues for security vulnerabilities.
+
+Instead: 1. Email: security@a2ml.net 2. GitHub Security Advisory:
+https://github.com/hyperpolymath/standards/tree/main/a2ml/security/advisories/new
+3. PGP encrypted:
+https://keys.openpgp.org/search?q=j.d.a.jewell@open.ac.uk
+
+We aim to respond within 48 hours.
+
+=== Privacy & Consent Issues
+
+For privacy concerns or consent management: - Email: privacy@a2ml.net -
+Consent settings: https://a2ml.net/privacy#consent - Data
+export/deletion: https://a2ml.net/privacy#your-rights
+
+=== License
+
+Security configuration: PMPL-1.0-or-later Documentation: CC-BY-SA-4.0
diff --git a/a2ml/SECURITY-SETUP.md b/a2ml/SECURITY-SETUP.md
deleted file mode 100644
index 6b435ce4..00000000
--- a/a2ml/SECURITY-SETUP.md
+++ /dev/null
@@ -1,241 +0,0 @@
-# Security Configuration for a2ml.net
-
-## Overview
-
-This site is configured with maximum security settings on Cloudflare's free tier, including:
-
-- **TLS 1.3** minimum (no TLS 1.2 or older)
-- **HSTS** with preload (max-age=31536000, includeSubDomains)
-- **Strict SSL/TLS** mode
-- **HTTP/2 and HTTP/3 (QUIC)** enabled
-- **Brotli compression**
-- **Consent-Aware HTTP** (GDPR/privacy compliance)
-- **RFC 9116 compliant** security.txt
-
-## DNS Configuration
-
-### A Records (GitHub Pages)
-
-Both root (@) and www use A records for consistency:
-
-```
-@ A 185.199.108.153
-@ A 185.199.109.153
-@ A 185.199.110.153
-@ A 185.199.111.153
-
-www A 185.199.108.153
-www A 185.199.109.153
-www A 185.199.110.153
-www A 185.199.111.153
-```
-
-**Why A records for www instead of CNAME?**
-- Consistent behavior with root domain
-- No CNAME chain resolution needed
-- Direct control over IP addresses
-- Better for SEO (some crawlers prefer consistency)
-
-### AAAA Records (IPv6)
-
-```
-@ AAAA 2606:50c0:8000::153
-@ AAAA 2606:50c0:8001::153
-@ AAAA 2606:50c0:8002::153
-@ AAAA 2606:50c0:8003::153
-
-www AAAA 2606:50c0:8000::153
-www AAAA 2606:50c0:8001::153
-www AAAA 2606:50c0:8002::153
-www AAAA 2606:50c0:8003::153
-```
-
-### CAA Records (Certificate Authority Authorization)
-
-```
-@ CAA 128 issue "letsencrypt.org"
-@ CAA 128 issuewild "letsencrypt.org"
-@ CAA 128 issue "digicert.com"
-@ CAA 128 iodef "mailto:security@a2ml.net"
-```
-
-**Flag 128 = Critical**: If a CA doesn't understand the CAA record, it MUST refuse to issue the certificate.
-
-### Email Security
-
-```
-@ TXT "v=spf1 include:_spf.github.com ~all"
-_dmarc TXT "v=DMARC1; p=reject; rua=mailto:security@a2ml.net"
-```
-
-## Cloudflare Security Settings
-
-### TLS/SSL
-- **Minimum TLS Version**: 1.3
-- **SSL Mode**: Strict (Full with certificate verification)
-- **Always Use HTTPS**: On
-- **Automatic HTTPS Rewrites**: On
-- **Opportunistic Encryption**: On
-- **TLS 1.3 0-RTT**: On
-
-### HSTS (HTTP Strict Transport Security)
-```
-Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
-```
-
-- **Max Age**: 31536000 seconds (1 year)
-- **Include Subdomains**: Yes
-- **Preload**: Yes (eligible for browser preload lists)
-
-To add to Chrome's preload list: https://hstspreload.org/
-
-### Security Headers
-- **X-Content-Type-Options**: nosniff
-- **X-Frame-Options**: SAMEORIGIN
-- **X-XSS-Protection**: 1; mode=block
-- **Referrer-Policy**: strict-origin-when-cross-origin
-- **Permissions-Policy**: Configured via meta tags or headers
-
-### Performance
-- **HTTP/2**: Enabled
-- **HTTP/3 (QUIC)**: Enabled
-- **Brotli Compression**: Enabled
-- **0-RTT Connection Resumption**: Enabled
-
-### Bot Management
-- **Security Level**: Medium (allows search bots)
-- **Browser Integrity Check**: On
-- **Challenge Passage**: 30 minutes
-- **Email Obfuscation**: On
-
-## Consent-Aware HTTP
-
-This site implements consent-aware-http for GDPR/privacy compliance.
-
-### Consent Categories
-
-1. **Essential** (always on)
- - Core site functionality
- - Security features
- - Session management
-
-2. **Functional**
- - Enhanced features
- - User preferences
- - Language settings
-
-3. **Analytics**
- - Anonymous usage statistics
- - Performance monitoring
- - Error tracking
-
-4. **Marketing**
- - Advertising
- - Campaign tracking
- - Social media integration
-
-5. **Personalization**
- - Customized content
- - Recommendations
- - User profiling
-
-### Implementation
-
-**Cloudflare Worker** (consent-aware-http.js) intercepts all requests and:
-1. Checks for `user-consent` cookie
-2. Validates consent level matches resource requirements
-3. Returns 403 if consent not granted
-4. Passes request to origin if consent valid
-
-**Frontend** includes consent banner allowing users to:
-- View current consent settings
-- Grant/revoke consent per category
-- Export consent preferences
-- Delete all tracking data
-
-### Testing Consent
-
-```bash
-# Without consent cookie (essential only)
-curl https://a2ml.net/api/analytics
-# → 403 Forbidden (requires analytics consent)
-
-# With analytics consent
-curl -b "user-consent=%7B%22analytics%22%3Atrue%7D" \
- https://a2ml.net/api/analytics
-# → 200 OK
-
-# Essential resources always work
-curl https://a2ml.net/
-# → 200 OK (no consent needed)
-```
-
-## .well-known/security.txt
-
-RFC 9116 compliant security contact information:
-
-```
-https://a2ml.net/.well-known/security.txt
-```
-
-Contains:
-- Security contact emails
-- GitHub security advisory links
-- PGP encryption keys
-- Security policy links
-- Acknowledgments page
-- Consent-aware-http endpoints
-- Expiration date (1 year)
-
-## Verification
-
-### Check DNS Records
-```bash
-dig a2ml.net A +short
-dig a2ml.net AAAA +short
-dig a2ml.net CAA +short
-dig _dmarc.a2ml.net TXT +short
-```
-
-### Check TLS Configuration
-```bash
-curl -I https://a2ml.net | grep -i strict-transport
-```
-
-### Check security.txt
-```bash
-curl https://a2ml.net/.well-known/security.txt
-```
-
-### SSL Labs Test
-https://www.ssllabs.com/ssltest/analyze.html?d=a2ml.net
-
-**Expected Grade**: A+ (with HSTS preload)
-
-### SecurityHeaders.com
-https://securityheaders.com/?q=a2ml.net
-
-**Expected Grade**: A+ (with all headers configured)
-
-## Reporting Security Issues
-
-**DO NOT** open public GitHub issues for security vulnerabilities.
-
-Instead:
-1. Email: security@a2ml.net
-2. GitHub Security Advisory: https://github.com/hyperpolymath/standards/tree/main/a2ml/security/advisories/new
-3. PGP encrypted: https://keys.openpgp.org/search?q=j.d.a.jewell@open.ac.uk
-
-We aim to respond within 48 hours.
-
-## Privacy & Consent Issues
-
-For privacy concerns or consent management:
-- Email: privacy@a2ml.net
-- Consent settings: https://a2ml.net/privacy#consent
-- Data export/deletion: https://a2ml.net/privacy#your-rights
-
-## License
-
-Security configuration: PMPL-1.0-or-later
-Documentation: CC-BY-SA-4.0
diff --git a/a2ml/SECURITY.adoc b/a2ml/SECURITY.adoc
new file mode 100644
index 00000000..1d989df9
--- /dev/null
+++ b/a2ml/SECURITY.adoc
@@ -0,0 +1,452 @@
+== Security Policy
+
+We take security seriously. We appreciate your efforts to responsibly
+disclose vulnerabilities and will make every effort to acknowledge your
+contributions.
+
+=== Table of Contents
+
+* link:#reporting-a-vulnerability[Reporting a Vulnerability]
+* link:#what-to-include[What to Include]
+* link:#response-timeline[Response Timeline]
+* link:#disclosure-policy[Disclosure Policy]
+* link:#scope[Scope]
+* link:#safe-harbour[Safe Harbour]
+* link:#recognition[Recognition]
+* link:#security-updates[Security Updates]
+* link:#security-best-practices[Security Best Practices]
+
+'''''
+
+=== Reporting a Vulnerability
+
+==== Preferred Method: GitHub Security Advisories
+
+The preferred method for reporting security vulnerabilities is through
+GitHub’s Security Advisory feature:
+
+[arabic]
+. Navigate to
+https://github.com/hyperpolymath/standards/security/advisories/new[Report
+a Vulnerability]
+. Click *"`Report a vulnerability`"*
+. Complete the form with as much detail as possible
+. Submit — we’ll receive a private notification
+
+This method ensures:
+
+* End-to-end encryption of your report
+* Private discussion space for collaboration
+* Coordinated disclosure tooling
+* Automatic credit when the advisory is published
+
+==== Alternative: Encrypted Email
+
+If you cannot use GitHub Security Advisories, you may email us directly:
+
+[cols=",",]
+|===
+|*Email* |6759885+hyperpolymath@users.noreply.github.com
+|*PGP Key* |link:%7B%7BPGP_KEY_URL%7D%7D[Download Public Key]
+|*Fingerprint* |`+[PGP fingerprint not set]+`
+|===
+
+[source,bash]
+----
+# Import our PGP key
+curl -sSL {{PGP_KEY_URL}} | gpg --import
+
+# Verify fingerprint
+gpg --fingerprint 6759885+hyperpolymath@users.noreply.github.com
+
+# Encrypt your report
+gpg --armor --encrypt --recipient 6759885+hyperpolymath@users.noreply.github.com report.txt
+----
+
+____
+*⚠️ Important:* Do not report security vulnerabilities through public
+GitHub issues, pull requests, discussions, or social media.
+____
+
+'''''
+
+=== What to Include
+
+A good vulnerability report helps us understand and reproduce the issue
+quickly.
+
+==== Required Information
+
+* *Description*: Clear explanation of the vulnerability
+* *Impact*: What an attacker could achieve (confidentiality, integrity,
+availability)
+* *Affected versions*: Which versions/commits are affected
+* *Reproduction steps*: Detailed steps to reproduce the issue
+
+==== Helpful Additional Information
+
+* *Proof of concept*: Code, scripts, or screenshots demonstrating the
+vulnerability
+* *Attack scenario*: Realistic attack scenario showing exploitability
+* *CVSS score*: Your assessment of severity (use
+https://www.first.org/cvss/calculator/3.1[CVSS 3.1 Calculator])
+* *CWE ID*: Common Weakness Enumeration identifier if known
+* *Suggested fix*: If you have ideas for remediation
+* *References*: Links to related vulnerabilities, research, or
+advisories
+
+==== Example Report Structure
+
+[source,markdown]
+----
+## Summary
+[One-sentence description of the vulnerability]
+
+## Vulnerability Type
+[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.]
+
+## Affected Component
+[File path, function name, API endpoint, etc.]
+
+## Affected Versions
+[Version range or specific commits]
+
+## Severity Assessment
+- CVSS 3.1 Score: [X.X]
+- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X]
+
+## Description
+[Detailed technical description]
+
+## Steps to Reproduce
+1. [First step]
+2. [Second step]
+3. [...]
+
+## Proof of Concept
+[Code, curl commands, screenshots, etc.]
+
+## Impact
+[What can an attacker achieve?]
+
+## Suggested Remediation
+[Optional: your ideas for fixing]
+
+## References
+[Links to related issues, CVEs, research]
+----
+
+'''''
+
+=== Response Timeline
+
+We commit to the following response times:
+
+[width="100%",cols="24%,35%,41%",options="header",]
+|===
+|Stage |Timeframe |Description
+|*Initial Response* |48 hours |We acknowledge receipt and confirm we’re
+investigating
+
+|*Triage* |7 days |We assess severity, confirm the vulnerability, and
+estimate timeline
+
+|*Status Update* |Every 7 days |Regular updates on remediation progress
+
+|*Resolution* |90 days |Target for fix development and release (complex
+issues may take longer)
+
+|*Disclosure* |90 days |Public disclosure after fix is available
+(coordinated with you)
+|===
+
+____
+*Note:* These are targets, not guarantees. Complex vulnerabilities may
+require more time. We’ll communicate openly about any delays.
+____
+
+'''''
+
+=== Disclosure Policy
+
+We follow *coordinated disclosure* (also known as responsible
+disclosure):
+
+[arabic]
+. *You report* the vulnerability privately
+. *We acknowledge* and begin investigation
+. *We develop* a fix and prepare a release
+. *We coordinate* disclosure timing with you
+. *We publish* security advisory and fix simultaneously
+. *You may publish* your research after disclosure
+
+==== Our Commitments
+
+* We will not take legal action against researchers who follow this
+policy
+* We will work with you to understand and resolve the issue
+* We will credit you in the security advisory (unless you prefer
+anonymity)
+* We will notify you before public disclosure
+* We will publish advisories with sufficient detail for users to assess
+risk
+
+==== Your Commitments
+
+* Report vulnerabilities promptly after discovery
+* Give us reasonable time to address the issue before disclosure
+* Do not access, modify, or delete data beyond what’s necessary to
+demonstrate the vulnerability
+* Do not degrade service availability (no DoS testing on production)
+* Do not share vulnerability details with others until coordinated
+disclosure
+
+==== Disclosure Timeline
+
+....
+Day 0 You report vulnerability
+Day 1-2 We acknowledge receipt
+Day 7 We confirm vulnerability and share initial assessment
+Day 7-90 We develop and test fix
+Day 90 Coordinated public disclosure
+ (earlier if fix is ready; later by mutual agreement)
+....
+
+If we cannot reach agreement on disclosure timing, we default to 90 days
+from your initial report.
+
+'''''
+
+=== Scope
+
+==== In Scope ✅
+
+The following are within scope for security research:
+
+* This repository (`+hyperpolymath/standards+`) and all its code
+* Official releases and packages published from this repository
+* Documentation that could lead to security issues
+* Build and deployment configurations in this repository
+* Dependencies (report here, we’ll coordinate with upstream)
+
+==== Out of Scope ❌
+
+The following are *not* in scope:
+
+* Third-party services we integrate with (report directly to them)
+* Social engineering attacks against maintainers
+* Physical security
+* Denial of service attacks against production infrastructure
+* Spam, phishing, or other non-technical attacks
+* Issues already reported or publicly known
+* Theoretical vulnerabilities without proof of concept
+
+==== Qualifying Vulnerabilities
+
+We’re particularly interested in:
+
+* Remote code execution
+* SQL injection, command injection, code injection
+* Authentication/authorisation bypass
+* Cross-site scripting (XSS) and cross-site request forgery (CSRF)
+* Server-side request forgery (SSRF)
+* Path traversal / local file inclusion
+* Information disclosure (credentials, PII, secrets)
+* Cryptographic weaknesses
+* Deserialisation vulnerabilities
+* Memory safety issues (buffer overflows, use-after-free, etc.)
+* Supply chain vulnerabilities (dependency confusion, etc.)
+* Significant logic flaws
+
+==== Non-Qualifying Issues
+
+The following generally do not qualify as security vulnerabilities:
+
+* Missing security headers on non-sensitive pages
+* Clickjacking on pages without sensitive actions
+* Self-XSS (requires victim to paste code)
+* Missing rate limiting (unless it enables a specific attack)
+* Username/email enumeration (unless high-risk context)
+* Missing cookie flags on non-sensitive cookies
+* Software version disclosure
+* Verbose error messages (unless exposing secrets)
+* Best practice deviations without demonstrable impact
+
+'''''
+
+=== Safe Harbour
+
+We support security research conducted in good faith.
+
+==== Our Promise
+
+If you conduct security research in accordance with this policy:
+
+* ✅ We will not initiate legal action against you
+* ✅ We will not report your activity to law enforcement
+* ✅ We will work with you in good faith to resolve issues
+* ✅ We consider your research authorised under the Computer Fraud and
+Abuse Act (CFAA), UK Computer Misuse Act, and similar laws
+* ✅ We waive any potential claim against you for circumvention of
+security controls
+
+==== Good Faith Requirements
+
+To qualify for safe harbour, you must:
+
+* Comply with this security policy
+* Report vulnerabilities promptly
+* Avoid privacy violations (do not access others’ data)
+* Avoid service degradation (no destructive testing)
+* Not exploit vulnerabilities beyond proof-of-concept
+* Not use vulnerabilities for profit (beyond bug bounties where offered)
+
+____
+*⚠️ Important:* This safe harbour does not extend to third-party
+systems. Always check their policies before testing.
+____
+
+'''''
+
+=== Recognition
+
+We believe in recognising security researchers who help us improve.
+
+==== Hall of Fame
+
+Researchers who report valid vulnerabilities will be acknowledged in our
+link:SECURITY-ACKNOWLEDGMENTS.md[Security Acknowledgments] (unless they
+prefer anonymity).
+
+Recognition includes:
+
+* Your name (or chosen alias)
+* Link to your website/profile (optional)
+* Brief description of the vulnerability class
+* Date of report
+
+==== What We Offer
+
+* ✅ Public credit in security advisories
+* ✅ Acknowledgment in release notes
+* ✅ Entry in our Hall of Fame
+* ✅ Reference/recommendation letter upon request (for significant
+findings)
+
+==== What We Don’t Currently Offer
+
+* ❌ Monetary bug bounties
+* ❌ Hardware or swag
+* ❌ Paid security research contracts
+
+____
+*Note:* We’re a community project with limited resources. Your
+contributions help everyone who uses this software.
+____
+
+'''''
+
+=== Security Updates
+
+==== Receiving Updates
+
+To stay informed about security updates:
+
+* *Watch this repository*: Click "`Watch`" → "`Custom`" → Select
+"`Security alerts`"
+* *GitHub Security Advisories*: Published at
+https://github.com/hyperpolymath/standards/security/advisories[Security
+Advisories]
+* *Release notes*: Security fixes noted in link:CHANGELOG.md[CHANGELOG]
+
+==== Update Policy
+
+[cols=",",options="header",]
+|===
+|Severity |Response
+|*Critical/High* |Patch release as soon as fix is ready
+|*Medium* |Included in next scheduled release (or earlier)
+|*Low* |Included in next scheduled release
+|===
+
+==== Supported Versions
+
+[cols=",,",options="header",]
+|===
+|Version |Supported |Notes
+|`+main+` branch |✅ Yes |Latest development
+|Latest release |✅ Yes |Current stable
+|Previous minor release |✅ Yes |Security fixes backported
+|Older versions |❌ No |Please upgrade
+|===
+
+'''''
+
+=== Security Best Practices
+
+When using Standards, we recommend:
+
+==== General
+
+* Keep dependencies up to date
+* Use the latest stable release
+* Subscribe to security notifications
+* Review configuration against security documentation
+* Follow principle of least privilege
+
+==== For Contributors
+
+* Never commit secrets, credentials, or API keys
+* Use signed commits (`+git config commit.gpgsign true+`)
+* Review dependencies before adding them
+* Run security linters locally before pushing
+* Report any concerns about existing code
+
+'''''
+
+=== Additional Resources
+
+* link:%7B%7BPGP_KEY_URL%7D%7D[Our PGP Public Key]
+* https://github.com/hyperpolymath/standards/security/advisories[Security
+Advisories]
+* link:CHANGELOG.md[Changelog]
+* link:CONTRIBUTING.md[Contributing Guidelines]
+* https://cve.mitre.org/[CVE Database]
+* https://www.first.org/cvss/calculator/3.1[CVSS Calculator]
+
+'''''
+
+=== Contact
+
+[width="100%",cols="50%,50%",options="header",]
+|===
+|Purpose |Contact
+|*Security issues*
+|https://github.com/hyperpolymath/standards/security/advisories/new[Report
+via GitHub] or 6759885+hyperpolymath@users.noreply.github.com
+
+|*General questions*
+|https://github.com/hyperpolymath/standards/discussions[GitHub
+Discussions]
+
+|*Other enquiries* |See link:README.md[README] for contact information
+|===
+
+'''''
+
+=== Policy Changes
+
+This security policy may be updated from time to time. Significant
+changes will be:
+
+* Committed to this repository with a clear commit message
+* Noted in the changelog
+* Announced via GitHub Discussions (for major changes)
+
+'''''
+
+_Thank you for helping keep Standards and its users safe._ 🛡️
+
+'''''
+
+Last updated: 2026 · Policy version: 1.0.0
diff --git a/a2ml/SECURITY.md b/a2ml/SECURITY.md
deleted file mode 100644
index 6ea98768..00000000
--- a/a2ml/SECURITY.md
+++ /dev/null
@@ -1,406 +0,0 @@
-# Security Policy
-
-
-
-We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
-
-## Table of Contents
-
-- [Reporting a Vulnerability](#reporting-a-vulnerability)
-- [What to Include](#what-to-include)
-- [Response Timeline](#response-timeline)
-- [Disclosure Policy](#disclosure-policy)
-- [Scope](#scope)
-- [Safe Harbour](#safe-harbour)
-- [Recognition](#recognition)
-- [Security Updates](#security-updates)
-- [Security Best Practices](#security-best-practices)
-
----
-
-## Reporting a Vulnerability
-
-### Preferred Method: GitHub Security Advisories
-
-The preferred method for reporting security vulnerabilities is through GitHub's Security Advisory feature:
-
-1. Navigate to [Report a Vulnerability](https://github.com/hyperpolymath/standards/security/advisories/new)
-2. Click **"Report a vulnerability"**
-3. Complete the form with as much detail as possible
-4. Submit — we'll receive a private notification
-
-This method ensures:
-
-- End-to-end encryption of your report
-- Private discussion space for collaboration
-- Coordinated disclosure tooling
-- Automatic credit when the advisory is published
-
-### Alternative: Encrypted Email
-
-If you cannot use GitHub Security Advisories, you may email us directly:
-
-| | |
-|---|---|
-| **Email** | 6759885+hyperpolymath@users.noreply.github.com |
-| **PGP Key** | [Download Public Key]({{PGP_KEY_URL}}) |
-| **Fingerprint** | `[PGP fingerprint not set]` |
-
-```bash
-# Import our PGP key
-curl -sSL {{PGP_KEY_URL}} | gpg --import
-
-# Verify fingerprint
-gpg --fingerprint 6759885+hyperpolymath@users.noreply.github.com
-
-# Encrypt your report
-gpg --armor --encrypt --recipient 6759885+hyperpolymath@users.noreply.github.com report.txt
-```
-
-> **⚠️ Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media.
-
----
-
-## What to Include
-
-A good vulnerability report helps us understand and reproduce the issue quickly.
-
-### Required Information
-
-- **Description**: Clear explanation of the vulnerability
-- **Impact**: What an attacker could achieve (confidentiality, integrity, availability)
-- **Affected versions**: Which versions/commits are affected
-- **Reproduction steps**: Detailed steps to reproduce the issue
-
-### Helpful Additional Information
-
-- **Proof of concept**: Code, scripts, or screenshots demonstrating the vulnerability
-- **Attack scenario**: Realistic attack scenario showing exploitability
-- **CVSS score**: Your assessment of severity (use [CVSS 3.1 Calculator](https://www.first.org/cvss/calculator/3.1))
-- **CWE ID**: Common Weakness Enumeration identifier if known
-- **Suggested fix**: If you have ideas for remediation
-- **References**: Links to related vulnerabilities, research, or advisories
-
-### Example Report Structure
-
-```markdown
-## Summary
-[One-sentence description of the vulnerability]
-
-## Vulnerability Type
-[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.]
-
-## Affected Component
-[File path, function name, API endpoint, etc.]
-
-## Affected Versions
-[Version range or specific commits]
-
-## Severity Assessment
-- CVSS 3.1 Score: [X.X]
-- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X]
-
-## Description
-[Detailed technical description]
-
-## Steps to Reproduce
-1. [First step]
-2. [Second step]
-3. [...]
-
-## Proof of Concept
-[Code, curl commands, screenshots, etc.]
-
-## Impact
-[What can an attacker achieve?]
-
-## Suggested Remediation
-[Optional: your ideas for fixing]
-
-## References
-[Links to related issues, CVEs, research]
-```
-
----
-
-## Response Timeline
-
-We commit to the following response times:
-
-| Stage | Timeframe | Description |
-|-------|-----------|-------------|
-| **Initial Response** | 48 hours | We acknowledge receipt and confirm we're investigating |
-| **Triage** | 7 days | We assess severity, confirm the vulnerability, and estimate timeline |
-| **Status Update** | Every 7 days | Regular updates on remediation progress |
-| **Resolution** | 90 days | Target for fix development and release (complex issues may take longer) |
-| **Disclosure** | 90 days | Public disclosure after fix is available (coordinated with you) |
-
-> **Note:** These are targets, not guarantees. Complex vulnerabilities may require more time. We'll communicate openly about any delays.
-
----
-
-## Disclosure Policy
-
-We follow **coordinated disclosure** (also known as responsible disclosure):
-
-1. **You report** the vulnerability privately
-2. **We acknowledge** and begin investigation
-3. **We develop** a fix and prepare a release
-4. **We coordinate** disclosure timing with you
-5. **We publish** security advisory and fix simultaneously
-6. **You may publish** your research after disclosure
-
-### Our Commitments
-
-- We will not take legal action against researchers who follow this policy
-- We will work with you to understand and resolve the issue
-- We will credit you in the security advisory (unless you prefer anonymity)
-- We will notify you before public disclosure
-- We will publish advisories with sufficient detail for users to assess risk
-
-### Your Commitments
-
-- Report vulnerabilities promptly after discovery
-- Give us reasonable time to address the issue before disclosure
-- Do not access, modify, or delete data beyond what's necessary to demonstrate the vulnerability
-- Do not degrade service availability (no DoS testing on production)
-- Do not share vulnerability details with others until coordinated disclosure
-
-### Disclosure Timeline
-
-```
-Day 0 You report vulnerability
-Day 1-2 We acknowledge receipt
-Day 7 We confirm vulnerability and share initial assessment
-Day 7-90 We develop and test fix
-Day 90 Coordinated public disclosure
- (earlier if fix is ready; later by mutual agreement)
-```
-
-If we cannot reach agreement on disclosure timing, we default to 90 days from your initial report.
-
----
-
-## Scope
-
-### In Scope ✅
-
-The following are within scope for security research:
-
-- This repository (`hyperpolymath/standards`) and all its code
-- Official releases and packages published from this repository
-- Documentation that could lead to security issues
-- Build and deployment configurations in this repository
-- Dependencies (report here, we'll coordinate with upstream)
-
-### Out of Scope ❌
-
-The following are **not** in scope:
-
-- Third-party services we integrate with (report directly to them)
-- Social engineering attacks against maintainers
-- Physical security
-- Denial of service attacks against production infrastructure
-- Spam, phishing, or other non-technical attacks
-- Issues already reported or publicly known
-- Theoretical vulnerabilities without proof of concept
-
-### Qualifying Vulnerabilities
-
-We're particularly interested in:
-
-- Remote code execution
-- SQL injection, command injection, code injection
-- Authentication/authorisation bypass
-- Cross-site scripting (XSS) and cross-site request forgery (CSRF)
-- Server-side request forgery (SSRF)
-- Path traversal / local file inclusion
-- Information disclosure (credentials, PII, secrets)
-- Cryptographic weaknesses
-- Deserialisation vulnerabilities
-- Memory safety issues (buffer overflows, use-after-free, etc.)
-- Supply chain vulnerabilities (dependency confusion, etc.)
-- Significant logic flaws
-
-### Non-Qualifying Issues
-
-The following generally do not qualify as security vulnerabilities:
-
-- Missing security headers on non-sensitive pages
-- Clickjacking on pages without sensitive actions
-- Self-XSS (requires victim to paste code)
-- Missing rate limiting (unless it enables a specific attack)
-- Username/email enumeration (unless high-risk context)
-- Missing cookie flags on non-sensitive cookies
-- Software version disclosure
-- Verbose error messages (unless exposing secrets)
-- Best practice deviations without demonstrable impact
-
----
-
-## Safe Harbour
-
-We support security research conducted in good faith.
-
-### Our Promise
-
-If you conduct security research in accordance with this policy:
-
-- ✅ We will not initiate legal action against you
-- ✅ We will not report your activity to law enforcement
-- ✅ We will work with you in good faith to resolve issues
-- ✅ We consider your research authorised under the Computer Fraud and Abuse Act (CFAA), UK Computer Misuse Act, and similar laws
-- ✅ We waive any potential claim against you for circumvention of security controls
-
-### Good Faith Requirements
-
-To qualify for safe harbour, you must:
-
-- Comply with this security policy
-- Report vulnerabilities promptly
-- Avoid privacy violations (do not access others' data)
-- Avoid service degradation (no destructive testing)
-- Not exploit vulnerabilities beyond proof-of-concept
-- Not use vulnerabilities for profit (beyond bug bounties where offered)
-
-> **⚠️ Important:** This safe harbour does not extend to third-party systems. Always check their policies before testing.
-
----
-
-## Recognition
-
-We believe in recognising security researchers who help us improve.
-
-### Hall of Fame
-
-Researchers who report valid vulnerabilities will be acknowledged in our [Security Acknowledgments](SECURITY-ACKNOWLEDGMENTS.md) (unless they prefer anonymity).
-
-Recognition includes:
-
-- Your name (or chosen alias)
-- Link to your website/profile (optional)
-- Brief description of the vulnerability class
-- Date of report
-
-### What We Offer
-
-- ✅ Public credit in security advisories
-- ✅ Acknowledgment in release notes
-- ✅ Entry in our Hall of Fame
-- ✅ Reference/recommendation letter upon request (for significant findings)
-
-### What We Don't Currently Offer
-
-- ❌ Monetary bug bounties
-- ❌ Hardware or swag
-- ❌ Paid security research contracts
-
-> **Note:** We're a community project with limited resources. Your contributions help everyone who uses this software.
-
----
-
-## Security Updates
-
-### Receiving Updates
-
-To stay informed about security updates:
-
-- **Watch this repository**: Click "Watch" → "Custom" → Select "Security alerts"
-- **GitHub Security Advisories**: Published at [Security Advisories](https://github.com/hyperpolymath/standards/security/advisories)
-- **Release notes**: Security fixes noted in [CHANGELOG](CHANGELOG.md)
-
-### Update Policy
-
-| Severity | Response |
-|----------|----------|
-| **Critical/High** | Patch release as soon as fix is ready |
-| **Medium** | Included in next scheduled release (or earlier) |
-| **Low** | Included in next scheduled release |
-
-### Supported Versions
-
-
-
-| Version | Supported | Notes |
-|---------|-----------|-------|
-| `main` branch | ✅ Yes | Latest development |
-| Latest release | ✅ Yes | Current stable |
-| Previous minor release | ✅ Yes | Security fixes backported |
-| Older versions | ❌ No | Please upgrade |
-
----
-
-## Security Best Practices
-
-When using Standards, we recommend:
-
-### General
-
-- Keep dependencies up to date
-- Use the latest stable release
-- Subscribe to security notifications
-- Review configuration against security documentation
-- Follow principle of least privilege
-
-### For Contributors
-
-- Never commit secrets, credentials, or API keys
-- Use signed commits (`git config commit.gpgsign true`)
-- Review dependencies before adding them
-- Run security linters locally before pushing
-- Report any concerns about existing code
-
----
-
-## Additional Resources
-
-- [Our PGP Public Key]({{PGP_KEY_URL}})
-- [Security Advisories](https://github.com/hyperpolymath/standards/security/advisories)
-- [Changelog](CHANGELOG.md)
-- [Contributing Guidelines](CONTRIBUTING.md)
-- [CVE Database](https://cve.mitre.org/)
-- [CVSS Calculator](https://www.first.org/cvss/calculator/3.1)
-
----
-
-## Contact
-
-| Purpose | Contact |
-|---------|---------|
-| **Security issues** | [Report via GitHub](https://github.com/hyperpolymath/standards/security/advisories/new) or 6759885+hyperpolymath@users.noreply.github.com |
-| **General questions** | [GitHub Discussions](https://github.com/hyperpolymath/standards/discussions) |
-| **Other enquiries** | See [README](README.md) for contact information |
-
----
-
-## Policy Changes
-
-This security policy may be updated from time to time. Significant changes will be:
-
-- Committed to this repository with a clear commit message
-- Noted in the changelog
-- Announced via GitHub Discussions (for major changes)
-
----
-
-*Thank you for helping keep Standards and its users safe.* 🛡️
-
----
-
-Last updated: 2026 · Policy version: 1.0.0
diff --git a/a2ml/actions/validate/CHANGELOG.adoc b/a2ml/actions/validate/CHANGELOG.adoc
new file mode 100644
index 00000000..ca1c6528
--- /dev/null
+++ b/a2ml/actions/validate/CHANGELOG.adoc
@@ -0,0 +1,9 @@
+== Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog], and this project adheres to
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [Unreleased]
diff --git a/a2ml/actions/validate/CHANGELOG.md b/a2ml/actions/validate/CHANGELOG.md
deleted file mode 100644
index 81094769..00000000
--- a/a2ml/actions/validate/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-
-
-
-## [Unreleased]
diff --git a/a2ml/actions/validate/SECURITY.adoc b/a2ml/actions/validate/SECURITY.adoc
new file mode 100644
index 00000000..e47fdd92
--- /dev/null
+++ b/a2ml/actions/validate/SECURITY.adoc
@@ -0,0 +1,16 @@
+== Security Policy
+
+=== Reporting a Vulnerability
+
+If you discover a security vulnerability, please report it responsibly.
+
+*Email:* j.d.a.jewell@open.ac.uk
+
+*Please include:* - Description of the vulnerability - Steps to
+reproduce - Potential impact
+
+*Response timeline:* - Acknowledgement within 48 hours - Initial
+assessment within 7 days - Fix or mitigation within 90 days
+
+*Safe harbour:* We will not pursue legal action against security
+researchers who follow responsible disclosure.
diff --git a/a2ml/actions/validate/SECURITY.md b/a2ml/actions/validate/SECURITY.md
deleted file mode 100644
index 5c4d5e97..00000000
--- a/a2ml/actions/validate/SECURITY.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you discover a security vulnerability, please report it responsibly.
-
-**Email:** j.d.a.jewell@open.ac.uk
-
-**Please include:**
-- Description of the vulnerability
-- Steps to reproduce
-- Potential impact
-
-**Response timeline:**
-- Acknowledgement within 48 hours
-- Initial assessment within 7 days
-- Fix or mitigation within 90 days
-
-**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure.
diff --git a/a2ml/bindings/deno/CHANGELOG.adoc b/a2ml/bindings/deno/CHANGELOG.adoc
new file mode 100644
index 00000000..ca1c6528
--- /dev/null
+++ b/a2ml/bindings/deno/CHANGELOG.adoc
@@ -0,0 +1,9 @@
+== Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog], and this project adheres to
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [Unreleased]
diff --git a/a2ml/bindings/deno/CHANGELOG.md b/a2ml/bindings/deno/CHANGELOG.md
deleted file mode 100644
index 81094769..00000000
--- a/a2ml/bindings/deno/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-
-
-
-## [Unreleased]
diff --git a/a2ml/bindings/deno/SECURITY.adoc b/a2ml/bindings/deno/SECURITY.adoc
new file mode 100644
index 00000000..e47fdd92
--- /dev/null
+++ b/a2ml/bindings/deno/SECURITY.adoc
@@ -0,0 +1,16 @@
+== Security Policy
+
+=== Reporting a Vulnerability
+
+If you discover a security vulnerability, please report it responsibly.
+
+*Email:* j.d.a.jewell@open.ac.uk
+
+*Please include:* - Description of the vulnerability - Steps to
+reproduce - Potential impact
+
+*Response timeline:* - Acknowledgement within 48 hours - Initial
+assessment within 7 days - Fix or mitigation within 90 days
+
+*Safe harbour:* We will not pursue legal action against security
+researchers who follow responsible disclosure.
diff --git a/a2ml/bindings/deno/SECURITY.md b/a2ml/bindings/deno/SECURITY.md
deleted file mode 100644
index 5c4d5e97..00000000
--- a/a2ml/bindings/deno/SECURITY.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you discover a security vulnerability, please report it responsibly.
-
-**Email:** j.d.a.jewell@open.ac.uk
-
-**Please include:**
-- Description of the vulnerability
-- Steps to reproduce
-- Potential impact
-
-**Response timeline:**
-- Acknowledgement within 48 hours
-- Initial assessment within 7 days
-- Fix or mitigation within 90 days
-
-**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure.
diff --git a/a2ml/bindings/haskell/CHANGELOG.adoc b/a2ml/bindings/haskell/CHANGELOG.adoc
new file mode 100644
index 00000000..5d889565
--- /dev/null
+++ b/a2ml/bindings/haskell/CHANGELOG.adoc
@@ -0,0 +1,18 @@
+== Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog], and this project adheres to
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [0.1.0.0] - 2026-03-16
+
+==== Added
+
+* Initial release.
+* `+Data.A2ML.Types+` — Core AST types (Document, Block, Inline,
+Directive, Attestation, TrustLevel, Manifest).
+* `+Data.A2ML.Parser+` — Parse `+.a2ml+` files into the typed AST.
+* `+Data.A2ML.Renderer+` — Render the AST back to A2ML surface syntax.
+* `+Data.A2ML+` — Convenience re-export module.
diff --git a/a2ml/bindings/haskell/CHANGELOG.md b/a2ml/bindings/haskell/CHANGELOG.md
deleted file mode 100644
index 7845f995..00000000
--- a/a2ml/bindings/haskell/CHANGELOG.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [0.1.0.0] - 2026-03-16
-
-### Added
-- Initial release.
-- `Data.A2ML.Types` — Core AST types (Document, Block, Inline, Directive, Attestation, TrustLevel, Manifest).
-- `Data.A2ML.Parser` — Parse `.a2ml` files into the typed AST.
-- `Data.A2ML.Renderer` — Render the AST back to A2ML surface syntax.
-- `Data.A2ML` — Convenience re-export module.
diff --git a/a2ml/bindings/haskell/SECURITY.adoc b/a2ml/bindings/haskell/SECURITY.adoc
new file mode 100644
index 00000000..e47fdd92
--- /dev/null
+++ b/a2ml/bindings/haskell/SECURITY.adoc
@@ -0,0 +1,16 @@
+== Security Policy
+
+=== Reporting a Vulnerability
+
+If you discover a security vulnerability, please report it responsibly.
+
+*Email:* j.d.a.jewell@open.ac.uk
+
+*Please include:* - Description of the vulnerability - Steps to
+reproduce - Potential impact
+
+*Response timeline:* - Acknowledgement within 48 hours - Initial
+assessment within 7 days - Fix or mitigation within 90 days
+
+*Safe harbour:* We will not pursue legal action against security
+researchers who follow responsible disclosure.
diff --git a/a2ml/bindings/haskell/SECURITY.md b/a2ml/bindings/haskell/SECURITY.md
deleted file mode 100644
index 5c4d5e97..00000000
--- a/a2ml/bindings/haskell/SECURITY.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you discover a security vulnerability, please report it responsibly.
-
-**Email:** j.d.a.jewell@open.ac.uk
-
-**Please include:**
-- Description of the vulnerability
-- Steps to reproduce
-- Potential impact
-
-**Response timeline:**
-- Acknowledgement within 48 hours
-- Initial assessment within 7 days
-- Fix or mitigation within 90 days
-
-**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure.
diff --git a/a2ml/bindings/rust/CHANGELOG.adoc b/a2ml/bindings/rust/CHANGELOG.adoc
new file mode 100644
index 00000000..ca1c6528
--- /dev/null
+++ b/a2ml/bindings/rust/CHANGELOG.adoc
@@ -0,0 +1,9 @@
+== Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog], and this project adheres to
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [Unreleased]
diff --git a/a2ml/bindings/rust/CHANGELOG.md b/a2ml/bindings/rust/CHANGELOG.md
deleted file mode 100644
index 81094769..00000000
--- a/a2ml/bindings/rust/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-
-
-
-## [Unreleased]
diff --git a/a2ml/bindings/rust/SECURITY.adoc b/a2ml/bindings/rust/SECURITY.adoc
new file mode 100644
index 00000000..e47fdd92
--- /dev/null
+++ b/a2ml/bindings/rust/SECURITY.adoc
@@ -0,0 +1,16 @@
+== Security Policy
+
+=== Reporting a Vulnerability
+
+If you discover a security vulnerability, please report it responsibly.
+
+*Email:* j.d.a.jewell@open.ac.uk
+
+*Please include:* - Description of the vulnerability - Steps to
+reproduce - Potential impact
+
+*Response timeline:* - Acknowledgement within 48 hours - Initial
+assessment within 7 days - Fix or mitigation within 90 days
+
+*Safe harbour:* We will not pursue legal action against security
+researchers who follow responsible disclosure.
diff --git a/a2ml/bindings/rust/SECURITY.md b/a2ml/bindings/rust/SECURITY.md
deleted file mode 100644
index 5c4d5e97..00000000
--- a/a2ml/bindings/rust/SECURITY.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you discover a security vulnerability, please report it responsibly.
-
-**Email:** j.d.a.jewell@open.ac.uk
-
-**Please include:**
-- Description of the vulnerability
-- Steps to reproduce
-- Potential impact
-
-**Response timeline:**
-- Acknowledgement within 48 hours
-- Initial assessment within 7 days
-- Fix or mitigation within 90 days
-
-**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure.
diff --git a/a2ml/docs/iana/IANA-SUBMISSION-GUIDE.adoc b/a2ml/docs/iana/IANA-SUBMISSION-GUIDE.adoc
new file mode 100644
index 00000000..2807dc1e
--- /dev/null
+++ b/a2ml/docs/iana/IANA-SUBMISSION-GUIDE.adoc
@@ -0,0 +1,211 @@
+== IANA Media Type Submission Guide
+
+Guide for submitting A2ML and K9 media type registrations to IANA.
+
+'''''
+
+=== Overview
+
+We are registering two media types with IANA:
+
+[arabic]
+. *application/vnd.a2ml* – For A2ML (Attested Markup Language) documents
+. *application/vnd.k9* – For K9 SVC (Self-Validating Component) files
+
+Both are vendor-tree registrations (vnd.) per RFC 6838.
+
+*Note:* Earlier drafts used `+application/vnd.k9+nickel+`, but the
+`++nickel+` structured syntax suffix is not registered with IANA. Per
+RFC 6838 Section 4.2.8, unregistered suffixes SHOULD NOT be used. The
+base type `+application/vnd.k9+` is registered instead.
+
+'''''
+
+=== Pre-Submission Checklist
+
+* [x] Registration templates completed
+** [x] application/vnd.a2ml
+(format-registrations/iana/a2ml-media-type.txt)
+** [x] application/vnd.k9 (format-registrations/iana/k9-media-type.txt)
+* [x] Specifications publicly available
+** [x] A2ML:
+github.com/hyperpolymath/standards/blob/main/a2ml/SPEC-v1.0.adoc
+** [x] K9: github.com/hyperpolymath/standards/blob/main/k9-svc/SPEC.adoc
+* [x] Reference implementations published
+** [x] A2ML: github.com/hyperpolymath/standards/tree/main/a2ml
+** [x] K9: github.com/hyperpolymath/standards/tree/main/k9-svc
+* [x] No naming conflicts with existing IANA registrations
+** [x] Confirmed A2ML is distinct from ASAM A2L (application/A2L)
+** [x] No existing vnd.k9 registration
+* [x] Removed unregistered +nickel suffix (RFC 6838 Section 4.2.8)
+* [ ] arXiv paper published (optional, recommended for credibility)
+
+'''''
+
+=== Submission Process
+
+==== Step 1: Submit via IANA Web Form
+
+IANA vendor-tree media type registrations are submitted through the web
+form:
+
+*URL:* https://www.iana.org/form/media-types
+
+Fill in the fields from the registration template. The form requires:
+
+[cols=",,",options="header",]
+|===
+|Form Field |A2ML Value |K9 Value
+|Type name |application |application
+|Subtype name |vnd.a2ml |vnd.k9
+|Required parameters |N/A |N/A
+|Optional parameters |charset (utf-8 only) |security-level, version
+|Encoding |binary |8bit
+|Security considerations |(see template) |(see template)
+|Interoperability |(see template) |(see template)
+|Published specification |(spec URLs) |(spec URLs)
+|Application usage |(see template) |(see template)
+|Intended usage |COMMON |COMMON
+|Contact |Jonathan D.A. Jewell |Jonathan D.A. Jewell
+|===
+
+==== Step 2: Separate Submissions
+
+Submit each registration *separately* (do not combine).
+
+*Recommended order:* 1. Submit `+application/vnd.a2ml+` first 2. Submit
+`+application/vnd.k9+` a few days later (or after first acknowledgement)
+
+'''''
+
+==== Step 3: IANA Review Process
+
+*Timeline:* Typically 2-4 weeks for vendor-tree registrations.
+
+*Process:*
+
+[arabic]
+. *Initial review* (1-3 days): IANA checks template completeness. May
+request clarifications.
+. *Expert review* (1-2 weeks): Media types designated expert reviews
+technical details. May ask about security, interoperability, or
+specification.
+. *Approval* (1-2 days): IANA approves registration and publishes to
+registry.
+
+*Common reviewer questions:*
+
+* "`Can you expand the security considerations?`" – Add specific attack
+vectors and mitigations.
+* "`Is the specification permanently accessible?`" – Ensure GitHub repo
+is public; consider a permanent domain.
+* "`Are the optional parameters widely used?`" – Explain use cases for
+each parameter.
+* "`How do fragment identifiers resolve?`" – Provide step-by-step
+algorithm (already included in our templates).
+
+'''''
+
+==== Step 4: Respond to Feedback
+
+If IANA or the designated expert requests changes:
+
+[arabic]
+. Read the request carefully
+. Update the registration template
+. Reply promptly (within 1 week)
+. Re-submit updated template via the web form or by replying to the
+review email
+
+'''''
+
+==== Step 5: After Approval
+
+*Registry entries will appear at:* -
+https://www.iana.org/assignments/media-types/application/vnd.a2ml -
+https://www.iana.org/assignments/media-types/application/vnd.k9
+
+*Post-approval actions:*
+
+[arabic]
+. Update documentation with official IANA registry links
+. Add IANA badges to repository READMEs
+. Update HTTP Content-Type headers in examples
+. Announce on relevant channels (Nickel, Idris2, markup language
+communities)
+
+'''''
+
+=== Recommended HTTP Usage After Registration
+
+*A2ML:*
+
+[source,http]
+----
+Content-Type: application/vnd.a2ml
+Content-Type: application/vnd.a2ml; charset=utf-8
+----
+
+*K9:*
+
+[source,http]
+----
+Content-Type: application/vnd.k9
+Content-Type: application/vnd.k9; security-level=kennel
+Content-Type: application/vnd.k9; security-level=hunt; version=1.0.0
+----
+
+'''''
+
+=== File Locations
+
+[width="100%",cols="38%,62%",options="header",]
+|===
+|File |Location
+|A2ML registration (canonical)
+|format-registrations/iana/a2ml-media-type.txt
+
+|K9 registration (canonical)
+|format-registrations/iana/k9-media-type.txt
+
+|A2ML registration (standards sync)
+|standards/a2ml/docs/iana/application-vnd.a2ml-registration.txt
+
+|K9 registration (standards sync)
+|standards/k9-svc/docs/iana/application-vnd.k9+nickel-registration.txt
+
+|A2ML application (Markdown)
+|standards/a2ml/IANA-MEDIA-TYPE-APPLICATION.md
+
+|K9 application (Markdown)
+|standards/k9-svc/IANA-MEDIA-TYPE-APPLICATION.md
+|===
+
+'''''
+
+=== Contacts
+
+*IANA Media Types Team:* - Web form:
+https://www.iana.org/form/media-types - Email (for follow-up):
+media-types@iana.org
+
+*Submitter:* - Jonathan D.A. Jewell - Email: j.d.a.jewell@open.ac.uk -
+Institution: The Open University
+
+'''''
+
+=== References
+
+* RFC 6838 – Media Type Specifications and Registration Procedures
+https://www.rfc-editor.org/rfc/rfc6838.html
+* RFC 6839 – Additional Media Type Structured Syntax Suffixes
+https://www.rfc-editor.org/rfc/rfc6839.html
+* IANA Media Types Registry
+https://www.iana.org/assignments/media-types/
+* IANA Structured Syntax Suffixes Registry
+https://www.iana.org/assignments/media-type-structured-suffix/
+
+'''''
+
+_Created: 2026-01-30_ _Revised: 2026-04-03 (Revision 2 – web form,
++nickel removal, A2L note)_
diff --git a/a2ml/docs/iana/IANA-SUBMISSION-GUIDE.md b/a2ml/docs/iana/IANA-SUBMISSION-GUIDE.md
deleted file mode 100644
index acaba7b2..00000000
--- a/a2ml/docs/iana/IANA-SUBMISSION-GUIDE.md
+++ /dev/null
@@ -1,196 +0,0 @@
-
-# IANA Media Type Submission Guide
-
-Guide for submitting A2ML and K9 media type registrations to IANA.
-
----
-
-## Overview
-
-We are registering two media types with IANA:
-
-1. **application/vnd.a2ml** -- For A2ML (Attested Markup Language) documents
-2. **application/vnd.k9** -- For K9 SVC (Self-Validating Component) files
-
-Both are vendor-tree registrations (vnd.) per RFC 6838.
-
-**Note:** Earlier drafts used `application/vnd.k9+nickel`, but the `+nickel`
-structured syntax suffix is not registered with IANA. Per RFC 6838
-Section 4.2.8, unregistered suffixes SHOULD NOT be used. The base type
-`application/vnd.k9` is registered instead.
-
----
-
-## Pre-Submission Checklist
-
-- [x] Registration templates completed
- - [x] application/vnd.a2ml (format-registrations/iana/a2ml-media-type.txt)
- - [x] application/vnd.k9 (format-registrations/iana/k9-media-type.txt)
-- [x] Specifications publicly available
- - [x] A2ML: github.com/hyperpolymath/standards/blob/main/a2ml/SPEC-v1.0.adoc
- - [x] K9: github.com/hyperpolymath/standards/blob/main/k9-svc/SPEC.adoc
-- [x] Reference implementations published
- - [x] A2ML: github.com/hyperpolymath/standards/tree/main/a2ml
- - [x] K9: github.com/hyperpolymath/standards/tree/main/k9-svc
-- [x] No naming conflicts with existing IANA registrations
- - [x] Confirmed A2ML is distinct from ASAM A2L (application/A2L)
- - [x] No existing vnd.k9 registration
-- [x] Removed unregistered +nickel suffix (RFC 6838 Section 4.2.8)
-- [ ] arXiv paper published (optional, recommended for credibility)
-
----
-
-## Submission Process
-
-### Step 1: Submit via IANA Web Form
-
-IANA vendor-tree media type registrations are submitted through the web form:
-
-**URL:** https://www.iana.org/form/media-types
-
-Fill in the fields from the registration template. The form requires:
-
-| Form Field | A2ML Value | K9 Value |
-|-----------|-----------|---------|
-| Type name | application | application |
-| Subtype name | vnd.a2ml | vnd.k9 |
-| Required parameters | N/A | N/A |
-| Optional parameters | charset (utf-8 only) | security-level, version |
-| Encoding | binary | 8bit |
-| Security considerations | (see template) | (see template) |
-| Interoperability | (see template) | (see template) |
-| Published specification | (spec URLs) | (spec URLs) |
-| Application usage | (see template) | (see template) |
-| Intended usage | COMMON | COMMON |
-| Contact | Jonathan D.A. Jewell | Jonathan D.A. Jewell |
-
-### Step 2: Separate Submissions
-
-Submit each registration **separately** (do not combine).
-
-**Recommended order:**
-1. Submit `application/vnd.a2ml` first
-2. Submit `application/vnd.k9` a few days later (or after first acknowledgement)
-
----
-
-### Step 3: IANA Review Process
-
-**Timeline:** Typically 2-4 weeks for vendor-tree registrations.
-
-**Process:**
-
-1. **Initial review** (1-3 days):
- IANA checks template completeness. May request clarifications.
-
-2. **Expert review** (1-2 weeks):
- Media types designated expert reviews technical details.
- May ask about security, interoperability, or specification.
-
-3. **Approval** (1-2 days):
- IANA approves registration and publishes to registry.
-
-**Common reviewer questions:**
-
-- "Can you expand the security considerations?" -- Add specific attack
- vectors and mitigations.
-- "Is the specification permanently accessible?" -- Ensure GitHub repo
- is public; consider a permanent domain.
-- "Are the optional parameters widely used?" -- Explain use cases for
- each parameter.
-- "How do fragment identifiers resolve?" -- Provide step-by-step
- algorithm (already included in our templates).
-
----
-
-### Step 4: Respond to Feedback
-
-If IANA or the designated expert requests changes:
-
-1. Read the request carefully
-2. Update the registration template
-3. Reply promptly (within 1 week)
-4. Re-submit updated template via the web form or by replying to the
- review email
-
----
-
-### Step 5: After Approval
-
-**Registry entries will appear at:**
-- https://www.iana.org/assignments/media-types/application/vnd.a2ml
-- https://www.iana.org/assignments/media-types/application/vnd.k9
-
-**Post-approval actions:**
-
-1. Update documentation with official IANA registry links
-2. Add IANA badges to repository READMEs
-3. Update HTTP Content-Type headers in examples
-4. Announce on relevant channels (Nickel, Idris2, markup language
- communities)
-
----
-
-## Recommended HTTP Usage After Registration
-
-**A2ML:**
-
-```http
-Content-Type: application/vnd.a2ml
-Content-Type: application/vnd.a2ml; charset=utf-8
-```
-
-**K9:**
-
-```http
-Content-Type: application/vnd.k9
-Content-Type: application/vnd.k9; security-level=kennel
-Content-Type: application/vnd.k9; security-level=hunt; version=1.0.0
-```
-
----
-
-## File Locations
-
-| File | Location |
-|------|----------|
-| A2ML registration (canonical) | format-registrations/iana/a2ml-media-type.txt |
-| K9 registration (canonical) | format-registrations/iana/k9-media-type.txt |
-| A2ML registration (standards sync) | standards/a2ml/docs/iana/application-vnd.a2ml-registration.txt |
-| K9 registration (standards sync) | standards/k9-svc/docs/iana/application-vnd.k9+nickel-registration.txt |
-| A2ML application (Markdown) | standards/a2ml/IANA-MEDIA-TYPE-APPLICATION.md |
-| K9 application (Markdown) | standards/k9-svc/IANA-MEDIA-TYPE-APPLICATION.md |
-
----
-
-## Contacts
-
-**IANA Media Types Team:**
-- Web form: https://www.iana.org/form/media-types
-- Email (for follow-up): media-types@iana.org
-
-**Submitter:**
-- Jonathan D.A. Jewell
-- Email: j.d.a.jewell@open.ac.uk
-- Institution: The Open University
-
----
-
-## References
-
-- RFC 6838 -- Media Type Specifications and Registration Procedures
- https://www.rfc-editor.org/rfc/rfc6838.html
-
-- RFC 6839 -- Additional Media Type Structured Syntax Suffixes
- https://www.rfc-editor.org/rfc/rfc6839.html
-
-- IANA Media Types Registry
- https://www.iana.org/assignments/media-types/
-
-- IANA Structured Syntax Suffixes Registry
- https://www.iana.org/assignments/media-type-structured-suffix/
-
----
-
-*Created: 2026-01-30*
-*Revised: 2026-04-03 (Revision 2 -- web form, +nickel removal, A2L note)*
diff --git a/a2ml/docs/paper/ARXIV-SUBMISSION-GUIDE.adoc b/a2ml/docs/paper/ARXIV-SUBMISSION-GUIDE.adoc
new file mode 100644
index 00000000..944e7237
--- /dev/null
+++ b/a2ml/docs/paper/ARXIV-SUBMISSION-GUIDE.adoc
@@ -0,0 +1,290 @@
+== arXiv Submission Guide: A2ML Paper
+
+*Paper:* A2ML: A Lightweight Markup Language with Formal Proof
+Obligations *Author:* Jonathan D.A. Jewell j.d.a.jewell@open.ac.uk
+*Submission Package:* `+a2ml-arxiv-submission.tar.gz+` (5.9 KB)
+
+'''''
+
+=== Pre-Submission Checklist
+
+* [x] LaTeX source prepared (`+a2ml-arxiv.tex+`)
+* [x] PDF compiled successfully (`+a2ml-arxiv.pdf+`, 74 KB)
+* [x] Submission package created (`+a2ml-arxiv-submission.tar.gz+`)
+* [x] Author metadata correct (Jonathan D.A. Jewell, The Open
+University)
+* [x] Bibliography included (inline, no external .bib file)
+* [ ] arXiv account created (if not already)
+* [ ] Subject classification selected (see below)
+* [ ] Submission uploaded
+
+'''''
+
+=== Step-by-Step Submission Process
+
+==== 1. Create arXiv Account (if needed)
+
+*URL:* https://arxiv.org/user/login
+
+* Click "`Register`" if you don’t have an account
+* Use your academic email: `+j.d.a.jewell@open.ac.uk+`
+* Verify email address
+* Complete profile (name, affiliation, etc.)
+
+==== 2. Start New Submission
+
+*URL:* https://arxiv.org/submit
+
+* Log in to your arXiv account
+* Click "`Start New Submission`"
+* Select submission type: *New submission*
+
+==== 3. Select Archive and Subject Class
+
+*Primary Archive:* `+cs+` (Computer Science)
+
+*Primary Subject Classification:* Choose ONE primary:
+
+* *cs.PL* - Programming Languages (RECOMMENDED) _Best fit: A2ML is a
+markup language with formal verification in Idris2_
+
+*Secondary Subject Classifications:* (optional, can add 1-2)
+
+* *cs.LO* - Logic in Computer Science _Relevant: Formal verification,
+dependent types, proof obligations_
+* *cs.SE* - Software Engineering _Relevant: Document engineering,
+specifications, standards_
+
+*Recommendation:* Use *cs.PL* as primary, *cs.LO* as secondary.
+
+==== 4. Upload Files
+
+*File Upload Method:* Upload `+.tar.gz+` archive
+
+[arabic]
+. Click "`Choose File`"
+. Select:
+`+~/Documents/hyperpolymath-repos/a2ml/docs/paper/a2ml-arxiv-submission.tar.gz+`
+. Click "`Upload Files`"
+. arXiv will automatically extract and process the archive
+
+*Expected Processing:*
+
+* arXiv extracts `+a2ml-arxiv.tex+`
+* Compiles with `+pdflatex+` (may take 30-60 seconds)
+* Generates preview PDF for verification
+
+*If compilation succeeds:* Proceed to metadata
+
+*If compilation fails:* Check error log, fix .tex file, re-upload
+
+==== 5. Enter Metadata
+
+*Title:*
+
+....
+A2ML: A Lightweight Markup Language with Formal Proof Obligations
+....
+
+*Authors:*
+
+....
+Jonathan D.A. Jewell
+....
+
+*Affiliation:*
+
+....
+The Open University
+....
+
+*Abstract:* (copy from paper or use this)
+
+....
+We present A2ML (Attested Markup Language), a lightweight markup format that combines ease of authoring with formal verification guarantees. Unlike existing markup languages (Markdown, AsciiDoc, reStructuredText), A2ML provides a typed core with decidable proof obligations implemented in Idris2. Documents can be validated in three modes: lax (permissive authoring), checked (structural validation), and attested (formal proofs required). We demonstrate that A2ML's hybrid architecture—a Djot-inspired surface syntax compiled to a dependently-typed core—enables progressive strictness without sacrificing usability. Our implementation includes a formally verified parser that compiles to JavaScript (45KB) and a ReScript-based GUI. Benchmarks show A2ML parsing performance competitive with Markdown while providing guarantees unattainable in traditional markup languages. A2ML is designed for documents requiring structural invariants: academic papers, technical specifications, and standards documents.
+....
+
+*Comments:* (optional, internal notes for arXiv moderators)
+
+....
+This paper introduces A2ML, a new markup language with formal verification capabilities. Related to programming languages (Idris2), logic (dependent types), and document engineering.
+....
+
+*Report Number:* Leave blank (unless you have an institutional report
+number)
+
+*Journal Reference:* Leave blank (this is a new submission, not
+previously published)
+
+*DOI:* Leave blank (arXiv will assign one after acceptance)
+
+==== 6. License Selection
+
+*Recommended License:*
+
+* *arXiv.org perpetual, non-exclusive license to distribute this
+article* _(Standard arXiv license, allows arXiv to distribute
+indefinitely)_
+
+*OR (if you prefer Creative Commons):*
+
+* *CC BY 4.0* (Creative Commons Attribution) _Allows anyone to
+share/adapt with attribution_
+
+*Recommendation:* Use standard arXiv license (first option). This is
+most common for academic papers and matches PMPL-1.0 philosophy.
+
+==== 7. Review and Submit
+
+[arabic]
+. *Preview PDF:* arXiv shows compiled PDF - verify it matches your local
+`+a2ml-arxiv.pdf+`
+. *Check metadata:* Review title, authors, abstract, classification
+. *Submit for processing:* Click "`Submit to arXiv`"
+
+*After submission:*
+
+* arXiv assigns a submission ID (e.g., `+2601.12345+`)
+* Paper enters moderation queue (typically 24-48 hours)
+* You’ll receive email confirmation
+
+==== 8. Moderation Process
+
+*What happens:*
+
+* arXiv moderators review paper for:
+** Topic relevance to selected archive (cs.PL)
+** Quality and clarity
+** Proper LaTeX formatting
+** No obvious errors or spam
+
+*Possible outcomes:*
+
+[arabic]
+. *Accepted* - Paper published, gets arXiv ID (e.g.,
+`+arXiv:2601.12345+`)
+. *Reclassified* - Moderators suggest different subject classification
+. *Put on hold* - Request clarifications or corrections
+. *Rejected* - Rare, usually for spam or off-topic submissions
+
+*Timeline:* 1-3 business days (usually 24-48 hours)
+
+==== 9. After Acceptance
+
+*You’ll receive:*
+
+* arXiv ID (e.g., `+arXiv:2601.12345+`)
+* Permanent URL (e.g., `+https://arxiv.org/abs/2601.12345+`)
+* PDF link (e.g., `+https://arxiv.org/pdf/2601.12345.pdf+`)
+* Announcement timestamp (papers announced daily at 20:00 EST)
+
+*Next steps:*
+
+[arabic]
+. *Share the arXiv link:*
+* Add to A2ML README.adoc
+* Share on social media, HN, Reddit, etc.
+* Email to relevant communities (Nickel, Idris2, markup language
+enthusiasts)
+. *Update repository:*
+* Add arXiv badge to README:
+`+[](https://arxiv.org/abs/2601.12345)+`
+* Link from documentation
+. *Consider follow-up venues:*
+* Conference submission (e.g., PLDI, ICFP, POPL)
+* Workshop (e.g., TyDe, ML Family Workshop)
+* Journal (e.g., JFP, TOPLAS)
+
+'''''
+
+=== Troubleshooting
+
+==== Compilation Fails
+
+*Error:* `+! LaTeX Error: File 'X.sty' not found+`
+
+*Fix:* arXiv has most standard packages. If using obscure packages,
+either: - Remove the package if not essential - Include the `+.sty+`
+file in submission archive
+
+*Error:* `+! Undefined control sequence+`
+
+*Fix:* Check that all custom commands are defined in the preamble.
+
+==== Paper Put on Hold
+
+*Reason:* Moderators may request: - Better abstract (more specific about
+contributions) - Clearer subject classification - Correction of
+formatting issues
+
+*Action:* Respond to moderator email with requested changes, re-submit.
+
+==== Paper Reclassified
+
+*Example:* Submitted to `+cs.PL+`, moderators suggest `+cs.SE+`
+
+*Action:* Accept reclassification or provide justification for original
+choice.
+
+'''''
+
+=== Post-Submission TODO
+
+After arXiv acceptance:
+
+* [ ] Update `+a2ml/README.adoc+` with arXiv badge and link
+* [ ] Update `+a2ml/docs/IANA-MEDIA-TYPE.adoc+` to reference arXiv paper
+* [ ] Add arXiv link to A2ML website (when created)
+* [ ] Share on social media (Twitter/X, Mastodon, LinkedIn)
+* [ ] Post to Hacker News (https://news.ycombinator.com/submit)
+* [ ] Post to Reddit r/ProgrammingLanguages
+* [ ] Email Nickel community (Discord/GitHub discussions)
+* [ ] Email Idris2 community (Discord/Discourse)
+* [ ] Consider submitting to conference (PLDI, ICFP, POPL deadlines)
+
+'''''
+
+=== Quick Reference
+
+[width="100%",cols="47%,53%",options="header",]
+|===
+|Item |Value
+|*Title* |A2ML: A Lightweight Markup Language with Formal Proof
+Obligations
+
+|*Author* |Jonathan D.A. Jewell
+
+|*Affiliation* |The Open University
+
+|*Email* |j.d.a.jewell@open.ac.uk
+
+|*Primary Subject* |cs.PL (Programming Languages)
+
+|*Secondary Subject* |cs.LO (Logic in Computer Science)
+
+|*Submission Package* |`+a2ml-arxiv-submission.tar.gz+` (5.9 KB)
+
+|*PDF Size* |74 KB
+
+|*Estimated Review Time* |1-3 business days
+|===
+
+'''''
+
+=== Files in This Directory
+
+....
+~/Documents/hyperpolymath-repos/a2ml/docs/paper/
+├── a2ml-arxiv.tex # LaTeX source
+├── a2ml-arxiv.pdf # Compiled PDF (74 KB)
+├── a2ml-arxiv-submission.tar.gz # Submission package (5.9 KB) ← UPLOAD THIS
+├── Makefile # Build script
+└── ARXIV-SUBMISSION-GUIDE.md # This file
+....
+
+'''''
+
+*Ready to submit!* Go to https://arxiv.org/submit and follow the steps
+above.
+
+Good luck! 🚀
diff --git a/a2ml/docs/paper/ARXIV-SUBMISSION-GUIDE.md b/a2ml/docs/paper/ARXIV-SUBMISSION-GUIDE.md
deleted file mode 100644
index 452fa267..00000000
--- a/a2ml/docs/paper/ARXIV-SUBMISSION-GUIDE.md
+++ /dev/null
@@ -1,262 +0,0 @@
-# arXiv Submission Guide: A2ML Paper
-
-**Paper:** A2ML: A Lightweight Markup Language with Formal Proof Obligations
-**Author:** Jonathan D.A. Jewell
-**Submission Package:** `a2ml-arxiv-submission.tar.gz` (5.9 KB)
-
----
-
-## Pre-Submission Checklist
-
-- [x] LaTeX source prepared (`a2ml-arxiv.tex`)
-- [x] PDF compiled successfully (`a2ml-arxiv.pdf`, 74 KB)
-- [x] Submission package created (`a2ml-arxiv-submission.tar.gz`)
-- [x] Author metadata correct (Jonathan D.A. Jewell, The Open University)
-- [x] Bibliography included (inline, no external .bib file)
-- [ ] arXiv account created (if not already)
-- [ ] Subject classification selected (see below)
-- [ ] Submission uploaded
-
----
-
-## Step-by-Step Submission Process
-
-### 1. Create arXiv Account (if needed)
-
-**URL:** https://arxiv.org/user/login
-
-- Click "Register" if you don't have an account
-- Use your academic email: `j.d.a.jewell@open.ac.uk`
-- Verify email address
-- Complete profile (name, affiliation, etc.)
-
-### 2. Start New Submission
-
-**URL:** https://arxiv.org/submit
-
-- Log in to your arXiv account
-- Click "Start New Submission"
-- Select submission type: **New submission**
-
-### 3. Select Archive and Subject Class
-
-**Primary Archive:** `cs` (Computer Science)
-
-**Primary Subject Classification:** Choose ONE primary:
-
-- **cs.PL** - Programming Languages (RECOMMENDED)
- *Best fit: A2ML is a markup language with formal verification in Idris2*
-
-**Secondary Subject Classifications:** (optional, can add 1-2)
-
-- **cs.LO** - Logic in Computer Science
- *Relevant: Formal verification, dependent types, proof obligations*
-
-- **cs.SE** - Software Engineering
- *Relevant: Document engineering, specifications, standards*
-
-**Recommendation:** Use **cs.PL** as primary, **cs.LO** as secondary.
-
-### 4. Upload Files
-
-**File Upload Method:** Upload `.tar.gz` archive
-
-1. Click "Choose File"
-2. Select: `~/Documents/hyperpolymath-repos/a2ml/docs/paper/a2ml-arxiv-submission.tar.gz`
-3. Click "Upload Files"
-4. arXiv will automatically extract and process the archive
-
-**Expected Processing:**
-
-- arXiv extracts `a2ml-arxiv.tex`
-- Compiles with `pdflatex` (may take 30-60 seconds)
-- Generates preview PDF for verification
-
-**If compilation succeeds:** Proceed to metadata
-
-**If compilation fails:** Check error log, fix .tex file, re-upload
-
-### 5. Enter Metadata
-
-**Title:**
-```
-A2ML: A Lightweight Markup Language with Formal Proof Obligations
-```
-
-**Authors:**
-```
-Jonathan D.A. Jewell
-```
-
-**Affiliation:**
-```
-The Open University
-```
-
-**Abstract:** (copy from paper or use this)
-```
-We present A2ML (Attested Markup Language), a lightweight markup format that combines ease of authoring with formal verification guarantees. Unlike existing markup languages (Markdown, AsciiDoc, reStructuredText), A2ML provides a typed core with decidable proof obligations implemented in Idris2. Documents can be validated in three modes: lax (permissive authoring), checked (structural validation), and attested (formal proofs required). We demonstrate that A2ML's hybrid architecture—a Djot-inspired surface syntax compiled to a dependently-typed core—enables progressive strictness without sacrificing usability. Our implementation includes a formally verified parser that compiles to JavaScript (45KB) and a ReScript-based GUI. Benchmarks show A2ML parsing performance competitive with Markdown while providing guarantees unattainable in traditional markup languages. A2ML is designed for documents requiring structural invariants: academic papers, technical specifications, and standards documents.
-```
-
-**Comments:** (optional, internal notes for arXiv moderators)
-```
-This paper introduces A2ML, a new markup language with formal verification capabilities. Related to programming languages (Idris2), logic (dependent types), and document engineering.
-```
-
-**Report Number:** Leave blank (unless you have an institutional report number)
-
-**Journal Reference:** Leave blank (this is a new submission, not previously published)
-
-**DOI:** Leave blank (arXiv will assign one after acceptance)
-
-### 6. License Selection
-
-**Recommended License:**
-
-- **arXiv.org perpetual, non-exclusive license to distribute this article**
- *(Standard arXiv license, allows arXiv to distribute indefinitely)*
-
-**OR (if you prefer Creative Commons):**
-
-- **CC BY 4.0** (Creative Commons Attribution)
- *Allows anyone to share/adapt with attribution*
-
-**Recommendation:** Use standard arXiv license (first option). This is most common for academic papers and matches PMPL-1.0 philosophy.
-
-### 7. Review and Submit
-
-1. **Preview PDF:** arXiv shows compiled PDF - verify it matches your local `a2ml-arxiv.pdf`
-2. **Check metadata:** Review title, authors, abstract, classification
-3. **Submit for processing:** Click "Submit to arXiv"
-
-**After submission:**
-
-- arXiv assigns a submission ID (e.g., `2601.12345`)
-- Paper enters moderation queue (typically 24-48 hours)
-- You'll receive email confirmation
-
-### 8. Moderation Process
-
-**What happens:**
-
-- arXiv moderators review paper for:
- - Topic relevance to selected archive (cs.PL)
- - Quality and clarity
- - Proper LaTeX formatting
- - No obvious errors or spam
-
-**Possible outcomes:**
-
-1. **Accepted** - Paper published, gets arXiv ID (e.g., `arXiv:2601.12345`)
-2. **Reclassified** - Moderators suggest different subject classification
-3. **Put on hold** - Request clarifications or corrections
-4. **Rejected** - Rare, usually for spam or off-topic submissions
-
-**Timeline:** 1-3 business days (usually 24-48 hours)
-
-### 9. After Acceptance
-
-**You'll receive:**
-
-- arXiv ID (e.g., `arXiv:2601.12345`)
-- Permanent URL (e.g., `https://arxiv.org/abs/2601.12345`)
-- PDF link (e.g., `https://arxiv.org/pdf/2601.12345.pdf`)
-- Announcement timestamp (papers announced daily at 20:00 EST)
-
-**Next steps:**
-
-1. **Share the arXiv link:**
- - Add to A2ML README.adoc
- - Share on social media, HN, Reddit, etc.
- - Email to relevant communities (Nickel, Idris2, markup language enthusiasts)
-
-2. **Update repository:**
- - Add arXiv badge to README: `[](https://arxiv.org/abs/2601.12345)`
- - Link from documentation
-
-3. **Consider follow-up venues:**
- - Conference submission (e.g., PLDI, ICFP, POPL)
- - Workshop (e.g., TyDe, ML Family Workshop)
- - Journal (e.g., JFP, TOPLAS)
-
----
-
-## Troubleshooting
-
-### Compilation Fails
-
-**Error:** `! LaTeX Error: File 'X.sty' not found`
-
-**Fix:** arXiv has most standard packages. If using obscure packages, either:
-- Remove the package if not essential
-- Include the `.sty` file in submission archive
-
-**Error:** `! Undefined control sequence`
-
-**Fix:** Check that all custom commands are defined in the preamble.
-
-### Paper Put on Hold
-
-**Reason:** Moderators may request:
-- Better abstract (more specific about contributions)
-- Clearer subject classification
-- Correction of formatting issues
-
-**Action:** Respond to moderator email with requested changes, re-submit.
-
-### Paper Reclassified
-
-**Example:** Submitted to `cs.PL`, moderators suggest `cs.SE`
-
-**Action:** Accept reclassification or provide justification for original choice.
-
----
-
-## Post-Submission TODO
-
-After arXiv acceptance:
-
-- [ ] Update `a2ml/README.adoc` with arXiv badge and link
-- [ ] Update `a2ml/docs/IANA-MEDIA-TYPE.adoc` to reference arXiv paper
-- [ ] Add arXiv link to A2ML website (when created)
-- [ ] Share on social media (Twitter/X, Mastodon, LinkedIn)
-- [ ] Post to Hacker News (https://news.ycombinator.com/submit)
-- [ ] Post to Reddit r/ProgrammingLanguages
-- [ ] Email Nickel community (Discord/GitHub discussions)
-- [ ] Email Idris2 community (Discord/Discourse)
-- [ ] Consider submitting to conference (PLDI, ICFP, POPL deadlines)
-
----
-
-## Quick Reference
-
-| Item | Value |
-|------|-------|
-| **Title** | A2ML: A Lightweight Markup Language with Formal Proof Obligations |
-| **Author** | Jonathan D.A. Jewell |
-| **Affiliation** | The Open University |
-| **Email** | j.d.a.jewell@open.ac.uk |
-| **Primary Subject** | cs.PL (Programming Languages) |
-| **Secondary Subject** | cs.LO (Logic in Computer Science) |
-| **Submission Package** | `a2ml-arxiv-submission.tar.gz` (5.9 KB) |
-| **PDF Size** | 74 KB |
-| **Estimated Review Time** | 1-3 business days |
-
----
-
-## Files in This Directory
-
-```
-~/Documents/hyperpolymath-repos/a2ml/docs/paper/
-├── a2ml-arxiv.tex # LaTeX source
-├── a2ml-arxiv.pdf # Compiled PDF (74 KB)
-├── a2ml-arxiv-submission.tar.gz # Submission package (5.9 KB) ← UPLOAD THIS
-├── Makefile # Build script
-└── ARXIV-SUBMISSION-GUIDE.md # This file
-```
-
----
-
-**Ready to submit!** Go to https://arxiv.org/submit and follow the steps above.
-
-Good luck! 🚀
diff --git a/a2ml/editors/vscode/CHANGELOG.adoc b/a2ml/editors/vscode/CHANGELOG.adoc
new file mode 100644
index 00000000..ca1c6528
--- /dev/null
+++ b/a2ml/editors/vscode/CHANGELOG.adoc
@@ -0,0 +1,9 @@
+== Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog], and this project adheres to
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [Unreleased]
diff --git a/a2ml/editors/vscode/CHANGELOG.md b/a2ml/editors/vscode/CHANGELOG.md
deleted file mode 100644
index 81094769..00000000
--- a/a2ml/editors/vscode/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-
-
-
-## [Unreleased]
diff --git a/a2ml/editors/vscode/README.adoc b/a2ml/editors/vscode/README.adoc
index 227eaae7..79cbb015 100644
--- a/a2ml/editors/vscode/README.adoc
+++ b/a2ml/editors/vscode/README.adoc
@@ -1,190 +1,41 @@
-// SPDX-License-Identifier: CC-BY-SA-4.0
-// (PMPL-1.0-or-later preferred; MPL-2.0 required for VS Code Marketplace)
-// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
+== A2ML for Visual Studio Code
-= vscode-a2ml
-:author: Jonathan D.A. Jewell
-:toc: preamble
-:icons: font
+Syntax highlighting for
+https://github.com/hyperpolymath/standards/tree/main/a2ml[A2ML]
+(Attested Markup Language) — a structured document format for AI agent
+manifests and project metadata.
-== Overview
+=== Features
-VS Code extension providing syntax highlighting, language configuration, and snippets for
-https://github.com/hyperpolymath/standards/tree/main/a2ml[A2ML (Attested Markup Language)]
-files.
+* Syntax highlighting for `+.a2ml+` files
+* Directive recognition (`+@abstract+`, `+@opaque+`, `+@fig+`, `+@ref+`,
+`+@include+`, etc.)
+* Section header highlighting (`+[metadata]+`, `+[dependencies]+`, etc.)
+* Inline formatting (bold, italic, links, code spans)
+* Fenced code block support with language annotations
+* SPDX license header recognition
-A2ML is the universal manifest format for AI agents, providing structured metadata,
-attestation blocks, lifecycle hooks, and gatekeeper configuration for repositories.
+=== File Associations
-== Installation
-
-=== From the Marketplace
-
-[source]
-----
-ext install hyperpolymath.a2ml
-----
-
-Or search for "A2ML" in the VS Code Extensions panel.
-
-=== From VSIX
-
-[source,sh]
-----
-code --install-extension vscode-a2ml-0.1.0.vsix
-----
-
-== Features
-
-=== Syntax Highlighting
-
-Full TextMate grammar for `.a2ml` files, highlighting:
-
-[cols="1,2"]
-|===
-| Element | TextMate Scope
-
-| Comments (`#`)
-| `comment.line`
-
-| SPDX headers
-| `keyword.other.spdx`
-
-| Section delimiters (`---`)
-| `markup.heading`
-
-| Key names
-| `entity.name.tag`
-
-| Attestation keywords
-| `keyword.other.attestation`
-
-| Strings (single and double quoted)
-| `string.quoted`
-
-| Dates (ISO 8601)
-| `constant.other.date`
-
-| URLs
-| `markup.underline.link`
-
-| Booleans
-| `constant.language.boolean`
+[cols=",",options="header",]
|===
-
-=== Language Configuration
-
-* **Line comments** toggled with `Ctrl+/` (uses `#` prefix)
-* **Bracket matching** for `{}`, `[]`, `()`
-* **Auto-closing pairs** for brackets, parentheses, and quotes
-* **Surrounding pairs** for wrapping selected text
-* **Folding** on `---` section delimiters
-
-=== Snippets
-
-Seven snippets for common A2ML patterns:
-
-[cols="1,1,3"]
+|Extension |Language
+|`+.a2ml+` |A2ML
|===
-| Prefix | Name | Description
-
-| `spdx`
-| SPDX Header
-| SPDX license identifier and copyright header with tab stops for license, year, and author
-
-| `manifest`
-| A2ML Manifest
-| Complete AI manifest template with canonical locations, critical invariants, and lifecycle hooks
-
-| `attest`
-| Attestation Block
-| Attestation block with trust level choice (`high`/`medium`/`low`), signature, and timestamp
-
-| `gatekeeper`
-| Gatekeeper Section
-| Gatekeeper protocol configuration with enforcement level and agent list
-
-| `---`
-| Section Delimiter
-| Section delimiter with key name
-
-| `kv`
-| Key-Value Pair
-| Simple key-value pair
-
-| `checkpoint`
-| Checkpoint
-| Checkpoint entry with id, status choice (`pending`/`complete`/`blocked`), and verification flag
-|===
-
-== Configuration
-
-The extension activates automatically for files with the `.a2ml` extension. No additional
-configuration is required.
-
-=== File Association
-
-The extension registers the `a2ml` language ID for `.a2ml` files. You can also manually
-associate other file patterns in your VS Code settings:
-
-[source,json]
-----
-{
- "files.associations": {
- "*.a2ml": "a2ml",
- "AI-MANIFEST.*": "a2ml"
- }
-}
-----
-
-== Extension Details
-
-[cols="1,2"]
-|===
-| Field | Value
-
-| Publisher
-| `hyperpolymath`
-
-| Display Name
-| A2ML (Attested Markup Language)
-
-| VS Code Compatibility
-| ^1.75.0
-
-| Category
-| Programming Languages
-
-| Grammar Scope
-| `source.a2ml`
-|===
-
-== Directory Layout
-[source]
-----
-editors/vscode/
- package.json -- Extension manifest
- language-configuration.json -- Bracket/comment/folding rules
- syntaxes/
- a2ml.tmLanguage.json -- TextMate grammar (full highlighting)
- a2ml.json -- Additional syntax definitions
- snippets/
- a2ml.json -- 7 snippet definitions
- icons/ -- Extension icons
- src/ -- Extension source
-----
+=== LSP Support
-== Licensing
+For diagnostics, completions, and hover documentation, install the
+https://github.com/hyperpolymath/standards/tree/main/a2ml/lsp[A2ML LSP
+server] and configure the `+a2ml.server.path+` setting.
-SPDX-License-Identifier: MPL-2.0
+=== Related
-PMPL-1.0-or-later is preferred. MPL-2.0 is used as a fallback because the VS Code
-Marketplace requires an OSI-approved license. See link:LICENSE[LICENSE] for the MPL-2.0
-text and link:LICENSE-PMPL[LICENSE-PMPL] for the PMPL-1.0-or-later text.
+* https://github.com/hyperpolymath/standards/tree/main/a2ml/SPEC-v1.0.adoc[A2ML
+Specification]
+* https://github.com/hyperpolymath/standards/tree/main/a2ml/pandoc[Pandoc
+Reader/Writer]
-== Part of the A2ML Ecosystem
+=== License
-This extension is part of the link:../../README.adoc[A2ML specification and tooling] in the
-https://github.com/hyperpolymath/standards[standards monorepo]. See the parent directory
-for language bindings, Pandoc support, the validation GitHub Action, and the CLI.
+PMPL-1.0-or-later (Palimpsest License)
diff --git a/a2ml/editors/vscode/README.md b/a2ml/editors/vscode/README.md
deleted file mode 100644
index fdd2b9e3..00000000
--- a/a2ml/editors/vscode/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# A2ML for Visual Studio Code
-
-Syntax highlighting for [A2ML](https://github.com/hyperpolymath/standards/tree/main/a2ml) (Attested Markup Language) — a structured document format for AI agent manifests and project metadata.
-
-## Features
-
-- Syntax highlighting for `.a2ml` files
-- Directive recognition (`@abstract`, `@opaque`, `@fig`, `@ref`, `@include`, etc.)
-- Section header highlighting (`[metadata]`, `[dependencies]`, etc.)
-- Inline formatting (bold, italic, links, code spans)
-- Fenced code block support with language annotations
-- SPDX license header recognition
-
-## File Associations
-
-| Extension | Language |
-|-----------|----------|
-| `.a2ml` | A2ML |
-
-## LSP Support
-
-For diagnostics, completions, and hover documentation, install the
-[A2ML LSP server](https://github.com/hyperpolymath/standards/tree/main/a2ml/lsp)
-and configure the `a2ml.server.path` setting.
-
-## Related
-
-- [A2ML Specification](https://github.com/hyperpolymath/standards/tree/main/a2ml/SPEC-v1.0.adoc)
-- [Pandoc Reader/Writer](https://github.com/hyperpolymath/standards/tree/main/a2ml/pandoc)
-
-## License
-
-PMPL-1.0-or-later (Palimpsest License)
diff --git a/a2ml/editors/vscode/SECURITY.adoc b/a2ml/editors/vscode/SECURITY.adoc
new file mode 100644
index 00000000..e47fdd92
--- /dev/null
+++ b/a2ml/editors/vscode/SECURITY.adoc
@@ -0,0 +1,16 @@
+== Security Policy
+
+=== Reporting a Vulnerability
+
+If you discover a security vulnerability, please report it responsibly.
+
+*Email:* j.d.a.jewell@open.ac.uk
+
+*Please include:* - Description of the vulnerability - Steps to
+reproduce - Potential impact
+
+*Response timeline:* - Acknowledgement within 48 hours - Initial
+assessment within 7 days - Fix or mitigation within 90 days
+
+*Safe harbour:* We will not pursue legal action against security
+researchers who follow responsible disclosure.
diff --git a/a2ml/editors/vscode/SECURITY.md b/a2ml/editors/vscode/SECURITY.md
deleted file mode 100644
index 5c4d5e97..00000000
--- a/a2ml/editors/vscode/SECURITY.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you discover a security vulnerability, please report it responsibly.
-
-**Email:** j.d.a.jewell@open.ac.uk
-
-**Please include:**
-- Description of the vulnerability
-- Steps to reproduce
-- Potential impact
-
-**Response timeline:**
-- Acknowledgement within 48 hours
-- Initial assessment within 7 days
-- Fix or mitigation within 90 days
-
-**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure.
diff --git a/a2ml/pandoc/CHANGELOG.adoc b/a2ml/pandoc/CHANGELOG.adoc
new file mode 100644
index 00000000..ca1c6528
--- /dev/null
+++ b/a2ml/pandoc/CHANGELOG.adoc
@@ -0,0 +1,9 @@
+== Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
+Changelog], and this project adheres to
+https://semver.org/spec/v2.0.0.html[Semantic Versioning].
+
+=== [Unreleased]
diff --git a/a2ml/pandoc/CHANGELOG.md b/a2ml/pandoc/CHANGELOG.md
deleted file mode 100644
index 81094769..00000000
--- a/a2ml/pandoc/CHANGELOG.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-
-
-
-## [Unreleased]
diff --git a/a2ml/pandoc/PANDOC-SUBMISSION.adoc b/a2ml/pandoc/PANDOC-SUBMISSION.adoc
new file mode 100644
index 00000000..1a114a60
--- /dev/null
+++ b/a2ml/pandoc/PANDOC-SUBMISSION.adoc
@@ -0,0 +1,77 @@
+== A2ML Pandoc Reader, Writer, and Filter
+
+=== Summary
+
+Custom Pandoc reader, writer, and Lua filter for A2ML (Attested Markup
+Language) — a structured document format for AI agent manifests and
+project metadata.
+
+A2ML provides a typed, formally verified surface syntax with directives
+(`+@abstract+`, `+@opaque+`, `+@fig+`, `+@ref+`, etc.), sections,
+key-value metadata, and cross-references. This tooling brings full
+Pandoc ecosystem support: convert A2ML to HTML, PDF, DOCX, Markdown,
+EPUB, and dozens more formats.
+
+=== Components
+
+* *a2ml.lua* — Combined Pandoc custom reader (360 lines). Parses A2ML
+surface syntax into the Pandoc AST preserving headings, directives, code
+blocks, inline formatting, and cross-references.
+* *a2ml-reader.lua* — Standalone reader variant (189 lines) for simpler
+use cases.
+* *a2ml-writer.lua* — Custom Pandoc writer (153 lines). Converts any
+Pandoc AST to valid A2ML output, enabling round-trip conversion and
+cross-format workflows.
+* *a2ml-filter.lua* — Post-processing Lua filter with six passes:
+cross-reference resolution, `+@include+` directive expansion, TOC
+generation, diagram rendering (Mermaid/Graphviz), SPDX validation, and
+git metadata enrichment.
+* *a2ml.html* — HTML5 Pandoc template with directive-specific styling
+(colour-coded borders for `+@abstract+`, `+@opaque+`, `+@fig+`,
+`+@note+`, `+@warning+`), responsive layout, print-friendly output, and
+syntax highlighting.
+
+=== Usage
+
+[source,sh]
+----
+# A2ML to HTML (full pipeline)
+pandoc -f a2ml.lua input.a2ml \
+ --lua-filter=a2ml-filter.lua \
+ --template=a2ml.html \
+ -o output.html
+
+# A2ML to PDF
+pandoc -f a2ml.lua input.a2ml -o output.pdf
+
+# Markdown to A2ML
+pandoc input.md -t a2ml-writer.lua -o output.a2ml
+----
+
+=== Requirements
+
+* Pandoc 3.0+ with Lua support
+
+=== Spec
+
+* A2ML v1.0.0: https://github.com/hyperpolymath/standards/tree/main/a2ml
+* Media type: `+application/vnd.a2ml+` (IANA registration pending)
+
+=== Related
+
+* https://github.com/pandoc/lua-filters[pandoc/lua-filters] — Community
+Lua filters repository
+* link:../lsp/[A2ML LSP server] — Language Server Protocol
+implementation
+* link:../editors/vscode/[VS Code extension] — Syntax highlighting for
+VS Code
+* link:../SPEC-v1.0.adoc[A2ML specification] — Full language
+specification
+
+=== License
+
+PMPL-1.0-or-later (Palimpsest License)
+
+=== Author
+
+Jonathan D.A. Jewell j.d.a.jewell@open.ac.uk
diff --git a/a2ml/pandoc/PANDOC-SUBMISSION.md b/a2ml/pandoc/PANDOC-SUBMISSION.md
deleted file mode 100644
index 18657849..00000000
--- a/a2ml/pandoc/PANDOC-SUBMISSION.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# A2ML Pandoc Reader, Writer, and Filter
-
-## Summary
-
-Custom Pandoc reader, writer, and Lua filter for A2ML (Attested Markup Language) — a structured document format for AI agent manifests and project metadata.
-
-A2ML provides a typed, formally verified surface syntax with directives (`@abstract`, `@opaque`, `@fig`, `@ref`, etc.), sections, key-value metadata, and cross-references. This tooling brings full Pandoc ecosystem support: convert A2ML to HTML, PDF, DOCX, Markdown, EPUB, and dozens more formats.
-
-## Components
-
-- **a2ml.lua** — Combined Pandoc custom reader (360 lines). Parses A2ML surface syntax into the Pandoc AST preserving headings, directives, code blocks, inline formatting, and cross-references.
-- **a2ml-reader.lua** — Standalone reader variant (189 lines) for simpler use cases.
-- **a2ml-writer.lua** — Custom Pandoc writer (153 lines). Converts any Pandoc AST to valid A2ML output, enabling round-trip conversion and cross-format workflows.
-- **a2ml-filter.lua** — Post-processing Lua filter with six passes: cross-reference resolution, `@include` directive expansion, TOC generation, diagram rendering (Mermaid/Graphviz), SPDX validation, and git metadata enrichment.
-- **a2ml.html** — HTML5 Pandoc template with directive-specific styling (colour-coded borders for `@abstract`, `@opaque`, `@fig`, `@note`, `@warning`), responsive layout, print-friendly output, and syntax highlighting.
-
-## Usage
-
-```sh
-# A2ML to HTML (full pipeline)
-pandoc -f a2ml.lua input.a2ml \
- --lua-filter=a2ml-filter.lua \
- --template=a2ml.html \
- -o output.html
-
-# A2ML to PDF
-pandoc -f a2ml.lua input.a2ml -o output.pdf
-
-# Markdown to A2ML
-pandoc input.md -t a2ml-writer.lua -o output.a2ml
-```
-
-## Requirements
-
-- Pandoc 3.0+ with Lua support
-
-## Spec
-
-- A2ML v1.0.0:
-- Media type: `application/vnd.a2ml` (IANA registration pending)
-
-## Related
-
-- [pandoc/lua-filters](https://github.com/pandoc/lua-filters) — Community Lua filters repository
-- [A2ML LSP server](../lsp/) — Language Server Protocol implementation
-- [VS Code extension](../editors/vscode/) — Syntax highlighting for VS Code
-- [A2ML specification](../SPEC-v1.0.adoc) — Full language specification
-
-## License
-
-PMPL-1.0-or-later (Palimpsest License)
-
-## Author
-
-Jonathan D.A. Jewell
diff --git a/a2ml/pandoc/README.adoc b/a2ml/pandoc/README.adoc
index 14f4838e..c0d61e98 100644
--- a/a2ml/pandoc/README.adoc
+++ b/a2ml/pandoc/README.adoc
@@ -1,268 +1,163 @@
-// SPDX-License-Identifier: CC-BY-SA-4.0
-// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
+== pandoc-a2ml
-= A2ML Pandoc Reader, Writer & Filter
-:author: Jonathan D.A. Jewell
-:toc: preamble
-:icons: font
+link:LICENSE[image:https://img.shields.io/badge/License-MIT-blue.svg[License:
+MIT]]
-== Overview
+A collection of Pandoc custom reader, writer, filter, and HTML template
+for https://github.com/hyperpolymath/standards/tree/main/a2ml[A2ML]
+(Attested Markup Language) documents.
-Pandoc custom reader, writer, and Lua filter for
-https://github.com/hyperpolymath/standards/tree/main/a2ml[A2ML (Attested Markup Language)].
-These components let you convert A2ML documents to and from any format that
-https://pandoc.org[Pandoc] supports: HTML, PDF, DOCX, Markdown, LaTeX, EPUB, and dozens more.
+A2ML is a typed, attested markup format designed for documents that need
+structural guarantees: cross-references that resolve, directives with
+typed attributes, and byte-exact opaque payloads. Think of it as
+Markdown with attestation.
-== Installation
+=== Files
-Copy the Lua files into your project or a shared filters directory:
+* `+a2ml.lua+` – Custom reader (full-featured, 360 lines)
+* `+a2ml-reader.lua+` – Standalone reader (lightweight, 189 lines)
+* `+a2ml-writer.lua+` – Custom writer producing A2ML output
+* `+a2ml-filter.lua+` – Lua filter with 6 post-processing passes
+* `+a2ml.html+` – HTML5 template with A2ML-specific CSS
-[source,sh]
-----
-# Minimal: reader + writer
-cp a2ml-reader.lua a2ml-writer.lua /path/to/your/project/
+=== Usage
-# Full suite: reader + writer + filter + template
-cp a2ml-reader.lua a2ml-writer.lua a2ml-filter.lua a2ml.html /path/to/your/project/
+==== Reading A2ML
-# Combined reader (includes writer logic)
-cp a2ml.lua /path/to/your/project/
-----
+Convert A2ML documents to any Pandoc output format:
-Requires Pandoc 3.0+ with Lua support.
+....
+pandoc -f a2ml.lua input.a2ml -o output.html
+pandoc -f a2ml.lua input.a2ml -t markdown
+pandoc -f a2ml.lua input.a2ml -o output.pdf
+....
-== Reader: A2ML to Anything
+==== Writing A2ML
-The reader parses `.a2ml` files into the Pandoc AST, enabling conversion to any output
-format.
+Convert any Pandoc-supported format to A2ML:
-[source,sh]
-----
-# A2ML to HTML
-pandoc -f a2ml-reader.lua input.a2ml -o output.html
+....
+pandoc input.md -t a2ml-writer.lua -o output.a2ml
+....
-# A2ML to Markdown
-pandoc -f a2ml-reader.lua input.a2ml -t markdown
+==== Full pipeline
-# A2ML to PDF (via LaTeX)
-pandoc -f a2ml-reader.lua input.a2ml -o output.pdf
+Use the reader, filter, and template together:
-# A2ML to DOCX
-pandoc -f a2ml-reader.lua input.a2ml -o output.docx
+....
+pandoc -f a2ml.lua input.a2ml \
+ --lua-filter=a2ml-filter.lua \
+ --template=a2ml.html \
+ -o output.html
+....
-# A2ML to JSON AST (for programmatic use)
-pandoc -f a2ml-reader.lua input.a2ml -t json
-----
+==== Round-trip
-=== Syntax Mapping
+....
+pandoc -f a2ml.lua input.a2ml \
+ -t a2ml-writer.lua -o roundtrip.a2ml
+....
-[cols="1,3"]
-|===
-| A2ML Syntax | Pandoc AST Element
+=== A2ML syntax
-| `# Heading` through `##### Heading`
-| `Header` (levels 1--5) with auto-generated IDs
+A2ML uses a familiar surface syntax:
-| `@directive(attrs): ... @end`
-| `Div` with CSS classes `a2ml-directive` and `a2ml-`
+....
+# Heading
-| `**bold**`
-| `Strong`
+@abstract:
+This is an abstract directive block.
+@end
-| `*italic*`
-| `Emph`
+Paragraphs are separated by blank lines.
-| `[text](url)`
-| `Link`
+- Bullet lists work as expected
+- **Bold** and *italic* inline formatting
-| `@ref(id)`
-| `Link` targeting `#id` (internal cross-reference)
+@ref(heading) creates an internal cross-reference.
-| `- list items` / `* list items`
-| `BulletList`
+@opaque(lang="json"):
+{"preserved": "byte-exact"}
+@end
-| +```lang ... ```+
-| `CodeBlock` with language annotation
+```lua
+-- Fenced code blocks with language tags
+```
+....
-| `;; comment`
-| Stripped (Scheme-style comments)
+Supported elements:
-| Blank-line-separated text
-| `Para`
+[cols=",",options="header",]
|===
-
-== Writer: Anything to A2ML
-
-The writer converts any Pandoc-supported input format to A2ML surface syntax.
-
-[source,sh]
-----
-# Markdown to A2ML
-pandoc input.md -t a2ml-writer.lua -o output.a2ml
-
-# HTML to A2ML
-pandoc input.html -t a2ml-writer.lua -o output.a2ml
-
-# Round-trip: A2ML to AST to A2ML
-pandoc -f a2ml-reader.lua input.a2ml -t a2ml-writer.lua -o roundtrip.a2ml
-----
-
-The writer produces:
-
-* `#` headings from `Header` elements
-* `@directive: ... @end` from `Div` elements with `a2ml-*` classes
-* `@abstract: ... @end` from `BlockQuote` elements
-* Fenced code blocks with language annotations
-* `@ref()` for internal cross-references (links targeting `#id`)
-* Ordered and unordered lists
-* SPDX header on all output
-
-== Filter: a2ml-filter.lua
-
-A Lua filter providing six post-processing passes over the AST. Run it with `--lua-filter`
-after the reader:
-
-[source,sh]
-----
-pandoc -f a2ml-reader.lua input.a2ml \
- --lua-filter=a2ml-filter.lua \
- -o output.html
-----
-
-=== Capabilities
-
-[cols="1,3"]
+|A2ML Syntax |Pandoc Element
+|`+# Heading+` |Header
+|`+@directive: ... @end+` |Div
+|`+@opaque(lang="x"): ... @end+` |CodeBlock
+|`+**bold**+` |Strong
+|`+*italic*+` |Emph
+|`+[label](url)+` |Link
+|`+@ref(id)+` |Link (internal)
+|`+- list item+` |BulletList
+|`+\'\'\'lang ... \'\'\'+` |CodeBlock
|===
-| Feature | Description
-
-| Cross-reference resolver
-| `@ref(id)` links are validated against actual heading anchors. Resolved refs get a
- tooltip; unresolved refs produce a warning and are marked with a CSS class.
-
-| Include directive
-| `@include(file.a2ml)` directives are replaced with the parsed content of the referenced
- file via `pandoc.read()`. Missing files produce a visible error block.
-| TOC generator
-| Auto-generates a Table of Contents from all document headings. Inserted after the first
- level-1 heading (or at the top if none exists). Wrapped in a Div with id `a2ml-toc`.
+=== Filter capabilities
-| Diagram rendering
-| Code blocks tagged `mermaid` or `graphviz`/`dot` are rendered to inline SVG via
- `pandoc.pipe()`. Falls back to showing source code if the external tool is unavailable.
-
-| SPDX validator
-| Checks for `SPDX-License-Identifier` in metadata or early document blocks. Warns if
- missing.
-
-| Metadata enrichment
-| Populates `version`, `date`, and `author` from git (`git describe`, `git log`,
- `git config`) when not already present in the document metadata.
-|===
+The `+a2ml-filter.lua+` provides these post-processing passes:
-=== Disabling Capabilities
+[arabic]
+. *Cross-reference resolver* – validates `+@ref(id)+` links against
+actual heading anchors; unresolved refs get a warning and red styling.
+. *Include directive* – `+@include(file.a2ml)+` pulls in external file
+content via `+pandoc.read()+`.
+. *TOC generator* – auto-generates a table of contents from document
+headings.
+. *Diagram rendering* – `+mermaid+` and `+graphviz+` code blocks are
+rendered to inline SVG via `+pandoc.pipe()+`.
+. *SPDX validator* – checks for `+SPDX-License-Identifier+` in metadata
+or early document blocks.
+. *Metadata enrichment* – populates version, date, and author from git
+when not present in the document.
-Set metadata flags in your document or a YAML metadata block to disable individual
-features:
+Disable individual capabilities via metadata:
-[source,yaml]
-----
+....
---
a2ml-includes: false
a2ml-diagrams: false
a2ml-validate: false
-a2ml-smart: false
---
-----
+....
-== Full Pipeline
+=== HTML template
-Combine reader, filter, and HTML template for the best output:
-
-[source,sh]
-----
-pandoc -f a2ml-reader.lua input.a2ml \
- --lua-filter=a2ml-filter.lua \
- --template=a2ml.html \
- -o output.html
-----
-
-=== HTML Template Features
-
-The bundled `a2ml.html` template provides:
+The `+a2ml.html+` template provides:
* SPDX badge in the document header
-* Directive styling: `@abstract` (blue), `@opaque` (amber), `@fig` (green), `@note` (orange), `@warning` (red)
+* Directive styling with distinct colours per type (`+@abstract+` blue,
+`+@opaque+` amber, `+@fig+` green, `+@note+` orange, `+@warning+` red)
* Responsive layout with mobile breakpoints
-* Print-friendly monochrome output
-* Syntax highlighting for code blocks
-* Collapsible TOC box
-* Cross-reference colouring (resolved in blue, unresolved in red)
-
-Template variables: `$title$`, `$author$`, `$date$`, `$version$`, `$spdx-license$`, `$a2ml-format$`.
-
-== Extensions Table
-
-Both the reader and filter advertise extension flags:
-
-[cols="1,3"]
-|===
-| Extension | Purpose
-
-| `+smart`
-| Typographic quotes (SmartyPants processing)
+* Print-friendly stylesheet
+* Full Pandoc syntax highlighting coverage
-| `+includes`
-| File inclusion via `@include` directives
-
-| `+diagrams`
-| Diagram rendering (Mermaid, Graphviz/Dot)
-
-| `+validate`
-| Structural validation (SPDX headers, cross-references)
-|===
-
-== Files
-
-[cols="1,1,2"]
-|===
-| File | Lines | Purpose
-
-| `a2ml.lua`
-| ~360
-| Combined reader (alternative to using reader + writer separately)
-
-| `a2ml-reader.lua`
-| 189
-| Standalone reader: A2ML source to Pandoc AST
-
-| `a2ml-writer.lua`
-| 153
-| Standalone writer: Pandoc AST to A2ML surface syntax
-
-| `a2ml-filter.lua`
-| 465
-| Lua filter with 6 post-processing passes
-
-| `a2ml.html`
-| --
-| HTML5 template with A2ML-specific CSS
-|===
+=== Requirements
-== Spec Compliance
+* Pandoc 3.0+ with Lua support
+* Optional: `+mmdc+` (Mermaid CLI) for diagram rendering
+* Optional: `+dot+` (Graphviz) for diagram rendering
-This reader implements the A2ML v1.0.0 surface syntax as specified in
-`SPEC-v1.0.adoc`. Test vectors in `tests/vectors/` validate correct output for all core
-constructs. Media type: `application/vnd.a2ml` (IANA registration pending).
+=== Installation
-== Licensing
+Copy the Lua files to your pandoc data directory:
-SPDX-License-Identifier: MPL-2.0
+....
+mkdir -p ~/.local/share/pandoc/
+cp a2ml.lua a2ml-reader.lua a2ml-writer.lua a2ml-filter.lua ~/.local/share/pandoc/
+cp a2ml.html ~/.local/share/pandoc/templates/
+....
-See link:LICENSE[LICENSE] for the full text.
+Or use them directly from this directory with explicit paths.
-== Part of the A2ML Ecosystem
+=== License
-This directory is part of the link:../README.adoc[A2ML specification and tooling] in the
-https://github.com/hyperpolymath/standards[standards monorepo]. See the parent directory
-for language bindings, the validation GitHub Action, editor integrations, and the CLI.
+MIT — see LICENSE for details.
diff --git a/a2ml/pandoc/README.md b/a2ml/pandoc/README.md
deleted file mode 100644
index 5b014d5b..00000000
--- a/a2ml/pandoc/README.md
+++ /dev/null
@@ -1,157 +0,0 @@
-pandoc-a2ml
-===========
-
-[](LICENSE)
-
-A collection of Pandoc custom reader, writer, filter, and HTML
-template for [A2ML][] (Attested Markup Language) documents.
-
-A2ML is a typed, attested markup format designed for documents
-that need structural guarantees: cross-references that resolve,
-directives with typed attributes, and byte-exact opaque
-payloads. Think of it as Markdown with attestation.
-
-Files
------
-
-- `a2ml.lua` -- Custom reader (full-featured, 360 lines)
-- `a2ml-reader.lua` -- Standalone reader (lightweight, 189 lines)
-- `a2ml-writer.lua` -- Custom writer producing A2ML output
-- `a2ml-filter.lua` -- Lua filter with 6 post-processing passes
-- `a2ml.html` -- HTML5 template with A2ML-specific CSS
-
-Usage
------
-
-### Reading A2ML
-
-Convert A2ML documents to any Pandoc output format:
-
- pandoc -f a2ml.lua input.a2ml -o output.html
- pandoc -f a2ml.lua input.a2ml -t markdown
- pandoc -f a2ml.lua input.a2ml -o output.pdf
-
-### Writing A2ML
-
-Convert any Pandoc-supported format to A2ML:
-
- pandoc input.md -t a2ml-writer.lua -o output.a2ml
-
-### Full pipeline
-
-Use the reader, filter, and template together:
-
- pandoc -f a2ml.lua input.a2ml \
- --lua-filter=a2ml-filter.lua \
- --template=a2ml.html \
- -o output.html
-
-### Round-trip
-
- pandoc -f a2ml.lua input.a2ml \
- -t a2ml-writer.lua -o roundtrip.a2ml
-
-A2ML syntax
------------
-
-A2ML uses a familiar surface syntax:
-
- # Heading
-
- @abstract:
- This is an abstract directive block.
- @end
-
- Paragraphs are separated by blank lines.
-
- - Bullet lists work as expected
- - **Bold** and *italic* inline formatting
-
- @ref(heading) creates an internal cross-reference.
-
- @opaque(lang="json"):
- {"preserved": "byte-exact"}
- @end
-
- ```lua
- -- Fenced code blocks with language tags
- ```
-
-Supported elements:
-
-| A2ML Syntax | Pandoc Element |
-|--------------------------------|----------------|
-| `# Heading` | Header |
-| `@directive: ... @end` | Div |
-| `@opaque(lang="x"): ... @end` | CodeBlock |
-| `**bold**` | Strong |
-| `*italic*` | Emph |
-| `[label](url)` | Link |
-| `@ref(id)` | Link (internal)|
-| `- list item` | BulletList |
-| `` ```lang ... ``` `` | CodeBlock |
-
-Filter capabilities
--------------------
-
-The `a2ml-filter.lua` provides these post-processing passes:
-
-1. **Cross-reference resolver** -- validates `@ref(id)` links
- against actual heading anchors; unresolved refs get a
- warning and red styling.
-2. **Include directive** -- `@include(file.a2ml)` pulls in
- external file content via `pandoc.read()`.
-3. **TOC generator** -- auto-generates a table of contents
- from document headings.
-4. **Diagram rendering** -- `mermaid` and `graphviz` code
- blocks are rendered to inline SVG via `pandoc.pipe()`.
-5. **SPDX validator** -- checks for `SPDX-License-Identifier`
- in metadata or early document blocks.
-6. **Metadata enrichment** -- populates version, date, and
- author from git when not present in the document.
-
-Disable individual capabilities via metadata:
-
- ---
- a2ml-includes: false
- a2ml-diagrams: false
- a2ml-validate: false
- ---
-
-HTML template
--------------
-
-The `a2ml.html` template provides:
-
-- SPDX badge in the document header
-- Directive styling with distinct colours per type
- (`@abstract` blue, `@opaque` amber, `@fig` green,
- `@note` orange, `@warning` red)
-- Responsive layout with mobile breakpoints
-- Print-friendly stylesheet
-- Full Pandoc syntax highlighting coverage
-
-Requirements
-------------
-
-- Pandoc 3.0+ with Lua support
-- Optional: `mmdc` (Mermaid CLI) for diagram rendering
-- Optional: `dot` (Graphviz) for diagram rendering
-
-Installation
-------------
-
-Copy the Lua files to your pandoc data directory:
-
- mkdir -p ~/.local/share/pandoc/
- cp a2ml.lua a2ml-reader.lua a2ml-writer.lua a2ml-filter.lua ~/.local/share/pandoc/
- cp a2ml.html ~/.local/share/pandoc/templates/
-
-Or use them directly from this directory with explicit paths.
-
-License
--------
-
-MIT — see [LICENSE](LICENSE) for details.
-
-[A2ML]: https://github.com/hyperpolymath/standards/tree/main/a2ml
diff --git a/a2ml/pandoc/SECURITY.adoc b/a2ml/pandoc/SECURITY.adoc
new file mode 100644
index 00000000..e47fdd92
--- /dev/null
+++ b/a2ml/pandoc/SECURITY.adoc
@@ -0,0 +1,16 @@
+== Security Policy
+
+=== Reporting a Vulnerability
+
+If you discover a security vulnerability, please report it responsibly.
+
+*Email:* j.d.a.jewell@open.ac.uk
+
+*Please include:* - Description of the vulnerability - Steps to
+reproduce - Potential impact
+
+*Response timeline:* - Acknowledgement within 48 hours - Initial
+assessment within 7 days - Fix or mitigation within 90 days
+
+*Safe harbour:* We will not pursue legal action against security
+researchers who follow responsible disclosure.
diff --git a/a2ml/pandoc/SECURITY.md b/a2ml/pandoc/SECURITY.md
deleted file mode 100644
index 5c4d5e97..00000000
--- a/a2ml/pandoc/SECURITY.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Security Policy
-
-## Reporting a Vulnerability
-
-If you discover a security vulnerability, please report it responsibly.
-
-**Email:** j.d.a.jewell@open.ac.uk
-
-**Please include:**
-- Description of the vulnerability
-- Steps to reproduce
-- Potential impact
-
-**Response timeline:**
-- Acknowledgement within 48 hours
-- Initial assessment within 7 days
-- Fix or mitigation within 90 days
-
-**Safe harbour:** We will not pursue legal action against security researchers who follow responsible disclosure.
diff --git a/a2ml/prototype/ddraig/content/demo.adoc b/a2ml/prototype/ddraig/content/demo.adoc
new file mode 100644
index 00000000..1807de63
--- /dev/null
+++ b/a2ml/prototype/ddraig/content/demo.adoc
@@ -0,0 +1,27 @@
+== A2ML Overview
+
+A2ML is a typed, attested markup format.
+
+=== A2ML Surface Example
+
+[source,a2ml]
+----
+# A2ML Overview
+
+@abstract:
+A2ML is a typed, attested markup format.
+@end
+
+## Claims
+- Required sections must exist.
+- References must resolve.
+----
+
+=== Claims
+
+* Required sections must exist.
+* References must resolve.
+
+=== References
+
+[1] Attested Markup Language Spec (draft)
diff --git a/a2ml/prototype/ddraig/content/demo.md b/a2ml/prototype/ddraig/content/demo.md
deleted file mode 100644
index 06e999ec..00000000
--- a/a2ml/prototype/ddraig/content/demo.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: A2ML Demo
-date: 2026-01-26
----
-
-# A2ML Overview
-
-A2ML is a typed, attested markup format.
-
-## A2ML Surface Example
-
-```a2ml
-# A2ML Overview
-
-@abstract:
-A2ML is a typed, attested markup format.
-@end
-
-## Claims
-- Required sections must exist.
-- References must resolve.
-```
-
-## Claims
-
-- Required sections must exist.
-- References must resolve.
-
-## References
-
-[1] Attested Markup Language Spec (draft)
diff --git a/a2ml/showcase/content/examples.adoc b/a2ml/showcase/content/examples.adoc
new file mode 100644
index 00000000..57ad5772
--- /dev/null
+++ b/a2ml/showcase/content/examples.adoc
@@ -0,0 +1,272 @@
+== Examples
+
+Real-world A2ML manifests demonstrating the format in practice. Each
+example shows a different use case, from minimal declarations to
+multi-agent orchestration.
+
+=== 1. Minimal Manifest
+
+The simplest possible A2ML file. Declares an agent with a single
+self-attestation.
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# Greeter Bot
+
+@abstract:
+A simple bot that greets new contributors in pull requests.
+@end
+
+@attestation:
+agent-id: greeter-bot
+attested-by: greeter-bot
+trust-level: self-declared
+capabilities:
+ - pr-comment
+scope: repository
+@end
+....
+
+This is enough for tooling to identify the agent, understand what it
+does, and record that its capabilities are self-declared (i.e., not yet
+independently verified).
+
+'''''
+
+=== 2. CI/CD Agent Manifest
+
+A GitHub Actions bot that runs in CI pipelines, with a verified
+attestation from the security team.
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# rhodibot — Repository Automation Agent
+
+@abstract:
+rhodibot automates repository maintenance tasks including
+label management, issue triage, and PR hygiene checks.
+It operates within GitHub Actions workflows.
+@end
+
+@provenance:
+created-by: Jonathan D.A. Jewell
+created: 2026-01-20
+last-modified: 2026-03-14
+source: https://github.com/hyperpolymath/gitbot-fleet
+version: 2.1.0
+@end
+
+## Capabilities
+
+- Applies labels based on file paths and PR content
+- Triages issues by parsing title and body against known patterns
+- Enforces branch naming conventions
+- Validates commit message format
+- Checks PR size and flags oversized changes
+
+@attestation:
+agent-id: rhodibot
+attested-by: rhodibot
+trust-level: self-declared
+timestamp: 2026-01-20T09:00:00Z
+capabilities:
+ - label-management
+ - issue-triage
+ - branch-validation
+ - commit-validation
+ - pr-size-check
+scope: organization
+@end
+
+@attestation:
+agent-id: rhodibot
+attested-by: security-team
+trust-level: verified
+timestamp: 2026-02-15T16:45:00Z
+verifies: rhodibot/self-declared/2026-01-20
+signature: sha256:4e2a91f7c8d3b0...
+note: Verified that rhodibot only reads repository metadata
+ and does not modify code or secrets.
+@end
+
+@policy:
+require: attestation.trust-level >= verified
+enforce: github-actions
+action: allow-execution
+@end
+
+@refs:
+[1] gitbot-fleet Documentation, https://github.com/hyperpolymath/gitbot-fleet
+[2] Rhodium Standard Repositories, https://github.com/hyperpolymath/rhodium-standard-repositories
+@end
+....
+
+'''''
+
+=== 3. Security Scanner Manifest
+
+Hypatia, a neurosymbolic security scanner, declaring its scanning
+capabilities with an audited attestation.
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# Hypatia — Neurosymbolic Security Scanner
+
+@abstract:
+Hypatia performs multi-layered security analysis combining
+rule-based scanning with neurosymbolic reasoning. It detects
+secrets, vulnerable dependencies, misconfigured workflows,
+and policy violations.
+@end
+
+@provenance:
+created-by: Jonathan D.A. Jewell
+created: 2025-11-01
+last-modified: 2026-03-16
+source: https://github.com/hyperpolymath/hypatia
+version: 3.4.0
+@end
+
+## Scan Modules
+
+- **Secret detection** — API keys, tokens, credentials in source
+- **Dependency audit** — CVE matching against known vulnerabilities
+- **Workflow analysis** — GitHub Actions misconfigurations
+- **Policy enforcement** — RSR compliance, license headers, file locations
+- **Neurosymbolic reasoning** — pattern inference beyond static rules
+
+@attestation:
+agent-id: hypatia-scanner-v3
+attested-by: hypatia-scanner-v3
+trust-level: self-declared
+timestamp: 2025-11-01T12:00:00Z
+capabilities:
+ - secret-detection
+ - dependency-audit
+ - workflow-analysis
+ - policy-enforcement
+ - neurosymbolic-reasoning
+scope: global
+@end
+
+@attestation:
+agent-id: hypatia-scanner-v3
+attested-by: security-team
+trust-level: verified
+timestamp: 2026-01-10T14:00:00Z
+verifies: hypatia-scanner-v3/self-declared/2025-11-01
+signature: sha256:8b3d7f2e1a...
+@end
+
+@attestation:
+agent-id: hypatia-scanner-v3
+attested-by: independent-security-review
+trust-level: audited
+timestamp: 2026-02-28T10:30:00Z
+verifies: hypatia-scanner-v3/verified/2026-01-10
+audit-report: https://audits.hyperpolymath.dev/hypatia-v3
+signature: sha256:c91e5a3b0d...
+@end
+
+@refs:
+[1] Hypatia Documentation, https://github.com/hyperpolymath/hypatia
+[2] OWASP Top 10 for LLM Applications
+[3] SLSA Build Provenance, https://slsa.dev
+@end
+....
+
+'''''
+
+=== 4. Multi-Agent Orchestration
+
+Multiple agents referencing each other’s attestations to establish a
+trust network for a deployment pipeline.
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# Deployment Pipeline — Agent Trust Network
+
+@abstract:
+This manifest defines the trust relationships between agents
+involved in the production deployment pipeline. Each agent
+attests to the capabilities of the agents it depends on.
+@end
+
+## Pipeline Agents
+
+The deployment pipeline involves four agents, each responsible
+for a stage of the process:
+
+1. **codebot** — code review and static analysis
+2. **hypatia** — security scanning
+3. **sustainabot** — supply chain and dependency health
+4. **finishbot** — final approval and deployment trigger
+
+## Trust Chain
+
+@attestation:
+agent-id: codebot-v2
+attested-by: codebot-v2
+trust-level: self-declared
+timestamp: 2026-03-01T09:00:00Z
+capabilities:
+ - code-review
+ - style-enforcement
+ - complexity-analysis
+scope: pipeline
+@end
+
+@attestation:
+agent-id: sustainabot
+attested-by: sustainabot
+trust-level: self-declared
+timestamp: 2026-03-01T09:00:00Z
+capabilities:
+ - dependency-health
+ - license-compliance
+ - supply-chain-audit
+scope: pipeline
+@end
+
+;; Finishbot trusts codebot and sustainabot, and requires
+;; hypatia to have been audited before it will approve.
+
+@attestation:
+agent-id: finishbot
+attested-by: finishbot
+trust-level: self-declared
+timestamp: 2026-03-01T09:00:00Z
+capabilities:
+ - deployment-approval
+ - rollback-trigger
+requires:
+ - codebot-v2/verified
+ - hypatia-scanner-v3/audited
+ - sustainabot/verified
+scope: pipeline
+@end
+
+@policy:
+require: all-agents.trust-level >= verified
+require: hypatia-scanner-v3.trust-level == audited
+enforce: deployment-gate
+action: block-deploy
+message: All pipeline agents must be verified.
+ Hypatia must be independently audited.
+@end
+
+@refs:
+[1] gitbot-fleet, https://github.com/hyperpolymath/gitbot-fleet
+[2] Hypatia Scanner, https://github.com/hyperpolymath/hypatia
+[3] SLSA Framework, https://slsa.dev
+@end
+....
+
+This example shows how `+finishbot+` will refuse to approve a deployment
+unless `+codebot+` and `+sustainabot+` are at least `+verified+`, and
+`+hypatia+` has been independently `+audited+`. The policy block makes
+this machine-enforceable.
diff --git a/a2ml/showcase/content/examples.md b/a2ml/showcase/content/examples.md
deleted file mode 100644
index 7b718e4e..00000000
--- a/a2ml/showcase/content/examples.md
+++ /dev/null
@@ -1,267 +0,0 @@
----
-title: Examples
-date: 2026-03-16
-order: 3
----
-
-# Examples
-
-Real-world A2ML manifests demonstrating the format in practice. Each example shows a different use case, from minimal declarations to multi-agent orchestration.
-
-## 1. Minimal Manifest
-
-The simplest possible A2ML file. Declares an agent with a single self-attestation.
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# Greeter Bot
-
-@abstract:
-A simple bot that greets new contributors in pull requests.
-@end
-
-@attestation:
-agent-id: greeter-bot
-attested-by: greeter-bot
-trust-level: self-declared
-capabilities:
- - pr-comment
-scope: repository
-@end
-```
-
-This is enough for tooling to identify the agent, understand what it does, and record that its capabilities are self-declared (i.e., not yet independently verified).
-
----
-
-## 2. CI/CD Agent Manifest
-
-A GitHub Actions bot that runs in CI pipelines, with a verified attestation from the security team.
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# rhodibot — Repository Automation Agent
-
-@abstract:
-rhodibot automates repository maintenance tasks including
-label management, issue triage, and PR hygiene checks.
-It operates within GitHub Actions workflows.
-@end
-
-@provenance:
-created-by: Jonathan D.A. Jewell
-created: 2026-01-20
-last-modified: 2026-03-14
-source: https://github.com/hyperpolymath/gitbot-fleet
-version: 2.1.0
-@end
-
-## Capabilities
-
-- Applies labels based on file paths and PR content
-- Triages issues by parsing title and body against known patterns
-- Enforces branch naming conventions
-- Validates commit message format
-- Checks PR size and flags oversized changes
-
-@attestation:
-agent-id: rhodibot
-attested-by: rhodibot
-trust-level: self-declared
-timestamp: 2026-01-20T09:00:00Z
-capabilities:
- - label-management
- - issue-triage
- - branch-validation
- - commit-validation
- - pr-size-check
-scope: organization
-@end
-
-@attestation:
-agent-id: rhodibot
-attested-by: security-team
-trust-level: verified
-timestamp: 2026-02-15T16:45:00Z
-verifies: rhodibot/self-declared/2026-01-20
-signature: sha256:4e2a91f7c8d3b0...
-note: Verified that rhodibot only reads repository metadata
- and does not modify code or secrets.
-@end
-
-@policy:
-require: attestation.trust-level >= verified
-enforce: github-actions
-action: allow-execution
-@end
-
-@refs:
-[1] gitbot-fleet Documentation, https://github.com/hyperpolymath/gitbot-fleet
-[2] Rhodium Standard Repositories, https://github.com/hyperpolymath/rhodium-standard-repositories
-@end
-```
-
----
-
-## 3. Security Scanner Manifest
-
-Hypatia, a neurosymbolic security scanner, declaring its scanning capabilities with an audited attestation.
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# Hypatia — Neurosymbolic Security Scanner
-
-@abstract:
-Hypatia performs multi-layered security analysis combining
-rule-based scanning with neurosymbolic reasoning. It detects
-secrets, vulnerable dependencies, misconfigured workflows,
-and policy violations.
-@end
-
-@provenance:
-created-by: Jonathan D.A. Jewell
-created: 2025-11-01
-last-modified: 2026-03-16
-source: https://github.com/hyperpolymath/hypatia
-version: 3.4.0
-@end
-
-## Scan Modules
-
-- **Secret detection** — API keys, tokens, credentials in source
-- **Dependency audit** — CVE matching against known vulnerabilities
-- **Workflow analysis** — GitHub Actions misconfigurations
-- **Policy enforcement** — RSR compliance, license headers, file locations
-- **Neurosymbolic reasoning** — pattern inference beyond static rules
-
-@attestation:
-agent-id: hypatia-scanner-v3
-attested-by: hypatia-scanner-v3
-trust-level: self-declared
-timestamp: 2025-11-01T12:00:00Z
-capabilities:
- - secret-detection
- - dependency-audit
- - workflow-analysis
- - policy-enforcement
- - neurosymbolic-reasoning
-scope: global
-@end
-
-@attestation:
-agent-id: hypatia-scanner-v3
-attested-by: security-team
-trust-level: verified
-timestamp: 2026-01-10T14:00:00Z
-verifies: hypatia-scanner-v3/self-declared/2025-11-01
-signature: sha256:8b3d7f2e1a...
-@end
-
-@attestation:
-agent-id: hypatia-scanner-v3
-attested-by: independent-security-review
-trust-level: audited
-timestamp: 2026-02-28T10:30:00Z
-verifies: hypatia-scanner-v3/verified/2026-01-10
-audit-report: https://audits.hyperpolymath.dev/hypatia-v3
-signature: sha256:c91e5a3b0d...
-@end
-
-@refs:
-[1] Hypatia Documentation, https://github.com/hyperpolymath/hypatia
-[2] OWASP Top 10 for LLM Applications
-[3] SLSA Build Provenance, https://slsa.dev
-@end
-```
-
----
-
-## 4. Multi-Agent Orchestration
-
-Multiple agents referencing each other's attestations to establish a trust network for a deployment pipeline.
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# Deployment Pipeline — Agent Trust Network
-
-@abstract:
-This manifest defines the trust relationships between agents
-involved in the production deployment pipeline. Each agent
-attests to the capabilities of the agents it depends on.
-@end
-
-## Pipeline Agents
-
-The deployment pipeline involves four agents, each responsible
-for a stage of the process:
-
-1. **codebot** — code review and static analysis
-2. **hypatia** — security scanning
-3. **sustainabot** — supply chain and dependency health
-4. **finishbot** — final approval and deployment trigger
-
-## Trust Chain
-
-@attestation:
-agent-id: codebot-v2
-attested-by: codebot-v2
-trust-level: self-declared
-timestamp: 2026-03-01T09:00:00Z
-capabilities:
- - code-review
- - style-enforcement
- - complexity-analysis
-scope: pipeline
-@end
-
-@attestation:
-agent-id: sustainabot
-attested-by: sustainabot
-trust-level: self-declared
-timestamp: 2026-03-01T09:00:00Z
-capabilities:
- - dependency-health
- - license-compliance
- - supply-chain-audit
-scope: pipeline
-@end
-
-;; Finishbot trusts codebot and sustainabot, and requires
-;; hypatia to have been audited before it will approve.
-
-@attestation:
-agent-id: finishbot
-attested-by: finishbot
-trust-level: self-declared
-timestamp: 2026-03-01T09:00:00Z
-capabilities:
- - deployment-approval
- - rollback-trigger
-requires:
- - codebot-v2/verified
- - hypatia-scanner-v3/audited
- - sustainabot/verified
-scope: pipeline
-@end
-
-@policy:
-require: all-agents.trust-level >= verified
-require: hypatia-scanner-v3.trust-level == audited
-enforce: deployment-gate
-action: block-deploy
-message: All pipeline agents must be verified.
- Hypatia must be independently audited.
-@end
-
-@refs:
-[1] gitbot-fleet, https://github.com/hyperpolymath/gitbot-fleet
-[2] Hypatia Scanner, https://github.com/hyperpolymath/hypatia
-[3] SLSA Framework, https://slsa.dev
-@end
-```
-
-This example shows how `finishbot` will refuse to approve a deployment unless `codebot` and `sustainabot` are at least `verified`, and `hypatia` has been independently `audited`. The policy block makes this machine-enforceable.
diff --git a/a2ml/showcase/content/getting-started.adoc b/a2ml/showcase/content/getting-started.adoc
new file mode 100644
index 00000000..69efe48a
--- /dev/null
+++ b/a2ml/showcase/content/getting-started.adoc
@@ -0,0 +1,213 @@
+== Get Started
+
+A step-by-step guide to creating your first A2ML manifest, validating
+it, and integrating it into your project.
+
+=== Prerequisites
+
+* https://pandoc.org/installing.html[Pandoc] 3.0 or later
+* Git (for cloning the tooling)
+* A text editor (VS Code recommended for syntax highlighting)
+
+'''''
+
+=== Install pandoc-a2ml
+
+Clone the pandoc-a2ml repository and note the path to the Lua scripts.
+No compilation needed — the reader, writer, and filter are pure Lua.
+
+[source,bash]
+----
+git clone https://github.com/hyperpolymath/pandoc-a2ml.git
+cd pandoc-a2ml
+----
+
+The key files are: - `+a2ml-reader.lua+` — reads `+.a2ml+` files into
+Pandoc’s AST - `+a2ml-writer.lua+` — writes Pandoc AST as `+.a2ml+`
+output - `+a2ml-filter.lua+` — Lua filter for attestation processing
+
+You can either add these to your Pandoc data directory
+(`+~/.local/share/pandoc/+`) or reference them by path.
+
+=== Install the VS Code Extension
+
+For syntax highlighting while editing `+.a2ml+` files:
+
+[arabic]
+. Open VS Code
+. Go to Extensions (Ctrl+Shift+X)
+. Search for *"`A2ML`"*
+. Click Install
+
+Alternatively, clone and install manually:
+
+[source,bash]
+----
+git clone https://github.com/hyperpolymath/vscode-a2ml.git
+cd vscode-a2ml
+code --install-extension .
+----
+
+You should now see syntax highlighting for `+.a2ml+` files, including
+directive blocks, headings, and comments.
+
+=== Create Your First Manifest
+
+Create a file called `+0-AI-MANIFEST.a2ml+` in your repository root.
+This is the entry point that AI agents and tooling will read first.
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# AI Manifest — my-project
+
+@abstract:
+This repository contains my-project, a tool for doing useful things.
+This manifest declares the AI agents that operate on this repository
+and the policies that govern their behaviour.
+@end
+
+@provenance:
+created-by: Your Name
+created: 2026-03-16
+source: https://github.com/your-org/my-project
+version: 1.0.0
+@end
+
+## Repository Structure
+
+- Source code in `src/`
+- Machine-readable metadata in `.machine_readable/`
+- CI/CD workflows in `.github/workflows/`
+
+## Agents
+
+No AI agents currently operate on this repository.
+
+@refs:
+[1] A2ML Specification, https://a2ml.hyperpolymath.dev/specification.html
+@end
+....
+
+=== Validate with Pandoc
+
+Check that your manifest parses correctly by converting it to HTML:
+
+[source,bash]
+----
+pandoc -f path/to/a2ml-reader.lua 0-AI-MANIFEST.a2ml -o manifest.html
+----
+
+If the file is well-formed, Pandoc will produce clean HTML output. Open
+`+manifest.html+` in a browser to verify the structure.
+
+For deeper validation using the A2ML filter (checks attestation
+structure):
+
+[source,bash]
+----
+pandoc -f path/to/a2ml-reader.lua \
+ --lua-filter path/to/a2ml-filter.lua \
+ 0-AI-MANIFEST.a2ml \
+ -o validated.html
+----
+
+=== Add Machine-Readable Metadata
+
+For full Rhodium Standard compliance, create the `+.machine_readable/+`
+directory and add A2ML metadata files:
+
+[source,bash]
+----
+mkdir -p .machine_readable/anchors .machine_readable/policies
+----
+
+Create `+.machine_readable/STATE.a2ml+`:
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# Project State
+
+@abstract:
+Current state of my-project development.
+@end
+
+## Status
+
+- Phase: initial setup
+- Completion: 10%
+- Next milestone: core functionality
+
+## Blockers
+
+None currently.
+....
+
+Create `+.machine_readable/META.a2ml+`:
+
+....
+;; SPDX-License-Identifier: MPL-2.0
+
+# Project Metadata
+
+@abstract:
+Architecture decisions and governance for my-project.
+@end
+
+## Architecture Decisions
+
+- Language: chosen based on team expertise
+- License: PMPL-1.0-or-later for original code
+....
+
+These files give AI agents and automated tooling a structured
+understanding of your project’s state, architecture, and ecosystem
+position.
+
+=== Add an Agent Attestation
+
+When you introduce an AI agent to your workflow (a CI bot, a code
+reviewer, a security scanner), declare it in the manifest:
+
+....
+;; Add this to 0-AI-MANIFEST.a2ml or a dedicated agent file
+
+@attestation:
+agent-id: my-ci-bot
+attested-by: my-ci-bot
+trust-level: self-declared
+timestamp: 2026-03-16T12:00:00Z
+capabilities:
+ - lint-checking
+ - test-execution
+scope: repository
+@end
+....
+
+As the agent is reviewed and verified, add higher-trust attestations:
+
+....
+@attestation:
+agent-id: my-ci-bot
+attested-by: security-team
+trust-level: verified
+timestamp: 2026-03-20T15:00:00Z
+verifies: my-ci-bot/self-declared/2026-03-16
+signature: sha256:your-signature-here
+@end
+....
+
+'''''
+
+=== Next Steps
+
+* Read the full link:specification.html[Specification] for all
+directives and fields
+* Browse link:examples.html[Examples] for real-world patterns
+* Explore link:integrations.html[Integrations] for editor and CI tooling
+* Check out the source repositories:
+** https://github.com/hyperpolymath/pandoc-a2ml[pandoc-a2ml]
+** https://github.com/hyperpolymath/vscode-a2ml[vscode-a2ml]
+** https://github.com/hyperpolymath/tree-sitter-a2ml[tree-sitter-a2ml]
+** https://github.com/hyperpolymath/pandoc-k9[pandoc-k9]
diff --git a/a2ml/showcase/content/getting-started.md b/a2ml/showcase/content/getting-started.md
deleted file mode 100644
index 55e933d6..00000000
--- a/a2ml/showcase/content/getting-started.md
+++ /dev/null
@@ -1,226 +0,0 @@
----
-title: Get Started
-date: 2026-03-16
-order: 5
----
-
-# Get Started
-
-A step-by-step guide to creating your first A2ML manifest, validating it, and integrating it into your project.
-
-## Prerequisites
-
-- [Pandoc](https://pandoc.org/installing.html) 3.0 or later
-- Git (for cloning the tooling)
-- A text editor (VS Code recommended for syntax highlighting)
-
----
-
-
-
-## Install pandoc-a2ml
-
-Clone the pandoc-a2ml repository and note the path to the Lua scripts. No compilation needed — the reader, writer, and filter are pure Lua.
-
-```bash
-git clone https://github.com/hyperpolymath/pandoc-a2ml.git
-cd pandoc-a2ml
-```
-
-The key files are:
-- `a2ml-reader.lua` — reads `.a2ml` files into Pandoc's AST
-- `a2ml-writer.lua` — writes Pandoc AST as `.a2ml` output
-- `a2ml-filter.lua` — Lua filter for attestation processing
-
-You can either add these to your Pandoc data directory (`~/.local/share/pandoc/`) or reference them by path.
-
-
-
-
-
-## Install the VS Code Extension
-
-For syntax highlighting while editing `.a2ml` files:
-
-1. Open VS Code
-2. Go to Extensions (Ctrl+Shift+X)
-3. Search for **"A2ML"**
-4. Click Install
-
-Alternatively, clone and install manually:
-
-```bash
-git clone https://github.com/hyperpolymath/vscode-a2ml.git
-cd vscode-a2ml
-code --install-extension .
-```
-
-You should now see syntax highlighting for `.a2ml` files, including directive blocks, headings, and comments.
-
-
-
-
-
-## Create Your First Manifest
-
-Create a file called `0-AI-MANIFEST.a2ml` in your repository root. This is the entry point that AI agents and tooling will read first.
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# AI Manifest — my-project
-
-@abstract:
-This repository contains my-project, a tool for doing useful things.
-This manifest declares the AI agents that operate on this repository
-and the policies that govern their behaviour.
-@end
-
-@provenance:
-created-by: Your Name
-created: 2026-03-16
-source: https://github.com/your-org/my-project
-version: 1.0.0
-@end
-
-## Repository Structure
-
-- Source code in `src/`
-- Machine-readable metadata in `.machine_readable/`
-- CI/CD workflows in `.github/workflows/`
-
-## Agents
-
-No AI agents currently operate on this repository.
-
-@refs:
-[1] A2ML Specification, https://a2ml.hyperpolymath.dev/specification.html
-@end
-```
-
-
-
-
-
-## Validate with Pandoc
-
-Check that your manifest parses correctly by converting it to HTML:
-
-```bash
-pandoc -f path/to/a2ml-reader.lua 0-AI-MANIFEST.a2ml -o manifest.html
-```
-
-If the file is well-formed, Pandoc will produce clean HTML output. Open `manifest.html` in a browser to verify the structure.
-
-For deeper validation using the A2ML filter (checks attestation structure):
-
-```bash
-pandoc -f path/to/a2ml-reader.lua \
- --lua-filter path/to/a2ml-filter.lua \
- 0-AI-MANIFEST.a2ml \
- -o validated.html
-```
-
-
-
-
-
-## Add Machine-Readable Metadata
-
-For full Rhodium Standard compliance, create the `.machine_readable/` directory and add A2ML metadata files:
-
-```bash
-mkdir -p .machine_readable/anchors .machine_readable/policies
-```
-
-Create `.machine_readable/STATE.a2ml`:
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# Project State
-
-@abstract:
-Current state of my-project development.
-@end
-
-## Status
-
-- Phase: initial setup
-- Completion: 10%
-- Next milestone: core functionality
-
-## Blockers
-
-None currently.
-```
-
-Create `.machine_readable/META.a2ml`:
-
-```
-;; SPDX-License-Identifier: MPL-2.0
-
-# Project Metadata
-
-@abstract:
-Architecture decisions and governance for my-project.
-@end
-
-## Architecture Decisions
-
-- Language: chosen based on team expertise
-- License: PMPL-1.0-or-later for original code
-```
-
-These files give AI agents and automated tooling a structured understanding of your project's state, architecture, and ecosystem position.
-
-
-
-
-
-## Add an Agent Attestation
-
-When you introduce an AI agent to your workflow (a CI bot, a code reviewer, a security scanner), declare it in the manifest:
-
-```
-;; Add this to 0-AI-MANIFEST.a2ml or a dedicated agent file
-
-@attestation:
-agent-id: my-ci-bot
-attested-by: my-ci-bot
-trust-level: self-declared
-timestamp: 2026-03-16T12:00:00Z
-capabilities:
- - lint-checking
- - test-execution
-scope: repository
-@end
-```
-
-As the agent is reviewed and verified, add higher-trust attestations:
-
-```
-@attestation:
-agent-id: my-ci-bot
-attested-by: security-team
-trust-level: verified
-timestamp: 2026-03-20T15:00:00Z
-verifies: my-ci-bot/self-declared/2026-03-16
-signature: sha256:your-signature-here
-@end
-```
-
-
-
----
-
-## Next Steps
-
-- Read the full [Specification](specification.html) for all directives and fields
-- Browse [Examples](examples.html) for real-world patterns
-- Explore [Integrations](integrations.html) for editor and CI tooling
-- Check out the source repositories:
- - [pandoc-a2ml](https://github.com/hyperpolymath/pandoc-a2ml)
- - [vscode-a2ml](https://github.com/hyperpolymath/vscode-a2ml)
- - [tree-sitter-a2ml](https://github.com/hyperpolymath/tree-sitter-a2ml)
- - [pandoc-k9](https://github.com/hyperpolymath/pandoc-k9)
diff --git a/a2ml/showcase/content/index.adoc b/a2ml/showcase/content/index.adoc
new file mode 100644
index 00000000..119c6acf
--- /dev/null
+++ b/a2ml/showcase/content/index.adoc
@@ -0,0 +1,88 @@
+A2ML
+
+Attested Markup Language
+
+Every AI agent needs an identity. A2ML gives them one.
+
+A universal manifest format that lets AI agents declare their
+capabilities, prove their provenance through attestation chains, and
+establish trust through verifiable metadata.
+
+Get Started
+
+== What is A2ML?
+
+A2ML (Attested Markup Language) is a structured document format designed
+for the age of AI agents. It solves a fundamental problem: *how do you
+know what an AI agent is, what it can do, and whether you should trust
+it?*
+
+A2ML files (`+.a2ml+`) act as identity documents for software agents.
+They combine human-readable markup with machine-verifiable attestation
+blocks, creating a chain of trust that can be audited by both people and
+automated systems.
+
+Attestation Chains
+
+Every claim is backed by a verifiable attestation. Agents sign their
+capabilities, and auditors countersign. Trust is earned, not assumed.
+
+Provenance Tracking
+
+Know exactly where a manifest came from, who authored it, and what has
+changed. Full lineage from creation to deployment.
+
+Agent Identity
+
+Unique agent identifiers, capability declarations, and trust levels.
+Every agent in your system has a clear, auditable identity.
+
+CI/CD Native
+
+Designed to live in repositories alongside code. Validate manifests in
+pipelines, enforce policies in pull requests, audit in production.
+
+== Why A2ML?
+
+As AI agents proliferate across CI/CD pipelines, security scanners, code
+reviewers, and orchestration systems, the question of *agent
+accountability* becomes critical. Who deployed this bot? What
+permissions does it have? Who attested to its behaviour?
+
+A2ML answers these questions with a format that is:
+
+* *Human-readable* — uses familiar markup syntax with headings, lists,
+and paragraphs
+* *Machine-parseable* — directive blocks (`+@attestation:+` … `+@end+`)
+carry structured data
+* *Auditable* — attestation chains create a verifiable trust graph
+* *Composable* — agents can reference each other’s manifests to build
+multi-agent trust networks
+
+== Tooling Ecosystem
+
+A2ML is not a paper specification. It ships with real, working tools:
+
+* *https://pandoc.org[Pandoc]* reader, writer, filter, and template via
+https://github.com/hyperpolymath/pandoc-a2ml[pandoc-a2ml] — convert A2ML
+to HTML, PDF, Markdown, and 40+ other formats
+* *https://code.visualstudio.com[VS Code]* syntax highlighting via
+https://github.com/hyperpolymath/vscode-a2ml[vscode-a2ml]
+* *https://tree-sitter.github.io[Tree-sitter]* grammar via
+https://github.com/hyperpolymath/tree-sitter-a2ml[tree-sitter-a2ml] —
+works in Neovim, Helix, Zed, and GitHub
+* *GitHub Linguist* — language detection (submission pending)
+
+== Part of a Larger Ecosystem
+
+A2ML integrates with the broader hyperpolymath standards:
+
+* *https://github.com/hyperpolymath/pandoc-k9[K9 Validators]* —
+contractile enforcement for repository policies
+* *https://github.com/hyperpolymath/hypatia[Hypatia]* — neurosymbolic
+CI/CD security scanning that consumes A2ML manifests
+* *https://github.com/hyperpolymath/panll[PanLL]* — panel framework with
+A2ML-based panel identity
+* *https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium
+Standard Repositories]* — repository quality standard that requires A2ML
+manifests
diff --git a/a2ml/showcase/content/index.md b/a2ml/showcase/content/index.md
deleted file mode 100644
index d8b89209..00000000
--- a/a2ml/showcase/content/index.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: A2ML
-date: 2026-03-16
-order: 1
----
-
-
-
A2ML
-
Attested Markup Language
-
Every AI agent needs an identity. A2ML gives them one.
-
A universal manifest format that lets AI agents declare their capabilities,
-prove their provenance through attestation chains, and establish trust
-through verifiable metadata.
-
-## What is A2ML?
-
-A2ML (Attested Markup Language) is a structured document format designed for the age of AI agents. It solves a fundamental problem: **how do you know what an AI agent is, what it can do, and whether you should trust it?**
-
-A2ML files (`.a2ml`) act as identity documents for software agents. They combine human-readable markup with machine-verifiable attestation blocks, creating a chain of trust that can be audited by both people and automated systems.
-
-
-
-
Attestation Chains
-
Every claim is backed by a verifiable attestation. Agents sign their capabilities, and auditors countersign. Trust is earned, not assumed.
-
-
-
Provenance Tracking
-
Know exactly where a manifest came from, who authored it, and what has changed. Full lineage from creation to deployment.
-
-
-
Agent Identity
-
Unique agent identifiers, capability declarations, and trust levels. Every agent in your system has a clear, auditable identity.
-
-
-
CI/CD Native
-
Designed to live in repositories alongside code. Validate manifests in pipelines, enforce policies in pull requests, audit in production.
-
-
-
-## Why A2ML?
-
-As AI agents proliferate across CI/CD pipelines, security scanners, code reviewers, and orchestration systems, the question of **agent accountability** becomes critical. Who deployed this bot? What permissions does it have? Who attested to its behaviour?
-
-A2ML answers these questions with a format that is:
-
-- **Human-readable** — uses familiar markup syntax with headings, lists, and paragraphs
-- **Machine-parseable** — directive blocks (`@attestation:` ... `@end`) carry structured data
-- **Auditable** — attestation chains create a verifiable trust graph
-- **Composable** — agents can reference each other's manifests to build multi-agent trust networks
-
-## Tooling Ecosystem
-
-A2ML is not a paper specification. It ships with real, working tools:
-
-- **[Pandoc](https://pandoc.org)** reader, writer, filter, and template via [pandoc-a2ml](https://github.com/hyperpolymath/pandoc-a2ml) — convert A2ML to HTML, PDF, Markdown, and 40+ other formats
-- **[VS Code](https://code.visualstudio.com)** syntax highlighting via [vscode-a2ml](https://github.com/hyperpolymath/vscode-a2ml)
-- **[Tree-sitter](https://tree-sitter.github.io)** grammar via [tree-sitter-a2ml](https://github.com/hyperpolymath/tree-sitter-a2ml) — works in Neovim, Helix, Zed, and GitHub
-- **GitHub Linguist** — language detection (submission pending)
-
-## Part of a Larger Ecosystem
-
-A2ML integrates with the broader hyperpolymath standards:
-
-- **[K9 Validators](https://github.com/hyperpolymath/pandoc-k9)** — contractile enforcement for repository policies
-- **[Hypatia](https://github.com/hyperpolymath/hypatia)** — neurosymbolic CI/CD security scanning that consumes A2ML manifests
-- **[PanLL](https://github.com/hyperpolymath/panll)** — panel framework with A2ML-based panel identity
-- **[Rhodium Standard Repositories](https://github.com/hyperpolymath/rhodium-standard-repositories)** — repository quality standard that requires A2ML manifests
diff --git a/a2ml/showcase/content/integrations.adoc b/a2ml/showcase/content/integrations.adoc
new file mode 100644
index 00000000..78ab8c2f
--- /dev/null
+++ b/a2ml/showcase/content/integrations.adoc
@@ -0,0 +1,131 @@
+== Integrations
+
+A2ML has working integrations across editors, build tools, and language
+ecosystems. This is not a roadmap — these tools exist today.
+
+'''''
+
+=== Pandoc [.badge .badge-live]#Live#
+
+Full Pandoc integration via
+https://github.com/hyperpolymath/pandoc-a2ml[pandoc-a2ml]: custom
+reader, writer, Lua filter, and HTML template.
+
+Convert A2ML to any of Pandoc’s 40+ output formats (HTML, PDF, DOCX,
+LaTeX, Markdown, reStructuredText, EPUB, and more), or convert _from_
+any Pandoc input format into A2ML.
+
+[source,bash]
+----
+# Read A2ML, output HTML
+pandoc -f a2ml-reader.lua manifest.a2ml -o manifest.html
+
+# Read A2ML, output PDF
+pandoc -f a2ml-reader.lua manifest.a2ml -o manifest.pdf
+
+# Convert Markdown to A2ML
+pandoc README.md -t a2ml-writer.lua -o README.a2ml
+
+# Apply the A2ML filter for attestation validation
+pandoc -f a2ml-reader.lua --lua-filter a2ml-filter.lua manifest.a2ml -o report.html
+----
+
+*Install:* Clone the repo and add the Lua scripts to your Pandoc data
+directory, or reference them by path.
+
+*Repository:*
+https://github.com/hyperpolymath/pandoc-a2ml[github.com/hyperpolymath/pandoc-a2ml]
+
+=== VS Code [.badge .badge-live]#Live#
+
+Syntax highlighting, bracket matching, and snippet support for `+.a2ml+`
+files in Visual Studio Code.
+
+Features: - Full TextMate grammar for A2ML syntax - Highlighting for
+directives (`+@attestation:+` … `+@end+`), headings, inline formatting,
+and comments - Snippets for common patterns (attestation block, policy
+block, provenance block) - File icon for `+.a2ml+` files - Language
+configuration for bracket/comment auto-pairing
+
+*Install:* Search "`A2ML`" in the VS Code marketplace, or install from
+VSIX.
+
+*Repository:*
+https://github.com/hyperpolymath/vscode-a2ml[github.com/hyperpolymath/vscode-a2ml]
+
+=== Tree-sitter [.badge .badge-live]#Live#
+
+A https://tree-sitter.github.io[tree-sitter] grammar for A2ML, enabling
+syntax highlighting and structural queries in any editor that supports
+tree-sitter.
+
+Works with: - *Neovim* (via nvim-treesitter) - *Helix* (built-in
+tree-sitter support) - *Zed* (built-in tree-sitter support) - *GitHub*
+(syntax highlighting in code views, via tree-sitter) - *Emacs* (via
+tree-sitter-langs)
+
+The grammar parses the full A2ML syntax including nested directive
+blocks, attestation fields, and inline formatting.
+
+*Repository:*
+https://github.com/hyperpolymath/tree-sitter-a2ml[github.com/hyperpolymath/tree-sitter-a2ml]
+
+=== GitHub Linguist [.badge .badge-pending]#Pending#
+
+A pull request to add A2ML to
+https://github.com/github-linguist/linguist[GitHub Linguist] is in
+preparation. Once merged, GitHub will:
+
+* Detect `+.a2ml+` files automatically
+* Show A2ML in repository language statistics
+* Apply syntax highlighting using the tree-sitter grammar
+* Recognise `+application/vnd.a2ml+` as a registered media type
+
+=== K9 Validators [.badge .badge-live]#Live#
+
+https://github.com/hyperpolymath/pandoc-k9[pandoc-k9] provides
+contractile validation for A2ML files. K9 validators enforce structural
+and policy constraints:
+
+* *must* — required fields and sections
+* *trust* — attestation chain validity
+* *dust* — deprecated pattern detection
+* *intend* — intent declaration verification
+
+K9 runs in CI/CD pipelines and can block merges when A2ML manifests fail
+validation.
+
+*Repository:*
+https://github.com/hyperpolymath/pandoc-k9[github.com/hyperpolymath/pandoc-k9]
+
+=== LuaRocks [.badge .badge-live]#Live#
+
+The A2ML Pandoc components are available as a Lua library via
+https://luarocks.org[LuaRocks], making it straightforward to integrate
+A2ML parsing into any Lua-based toolchain.
+
+[source,bash]
+----
+luarocks install pandoc-a2ml
+----
+
+=== Hypatia CI/CD Scanner [.badge .badge-live]#Live#
+
+https://github.com/hyperpolymath/hypatia[Hypatia] consumes A2ML
+manifests as part of its neurosymbolic security scanning. It:
+
+* Reads `+0-AI-MANIFEST.a2ml+` to understand repository structure
+* Validates attestation chains in `+.machine_readable/*.a2ml+` files
+* Enforces that all agents operating on a repository have valid
+manifests
+* Reports trust-level gaps in CI pipeline output
+
+=== Hackage (Haskell) [.badge .badge-soon]#Coming Soon#
+
+A native Haskell library for parsing and generating A2ML is in
+development. It will provide:
+
+* Pure Haskell parser (no Pandoc dependency)
+* Type-safe AST for A2ML documents
+* Attestation chain validation
+* Integration with the Pandoc Haskell library
diff --git a/a2ml/showcase/content/integrations.md b/a2ml/showcase/content/integrations.md
deleted file mode 100644
index fdbfe5a2..00000000
--- a/a2ml/showcase/content/integrations.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-title: Integrations
-date: 2026-03-16
-order: 4
----
-
-# Integrations
-
-A2ML has working integrations across editors, build tools, and language ecosystems. This is not a roadmap — these tools exist today.
-
----
-
-
-
-## Pandoc Live
-
-Full Pandoc integration via [pandoc-a2ml](https://github.com/hyperpolymath/pandoc-a2ml): custom reader, writer, Lua filter, and HTML template.
-
-Convert A2ML to any of Pandoc's 40+ output formats (HTML, PDF, DOCX, LaTeX, Markdown, reStructuredText, EPUB, and more), or convert *from* any Pandoc input format into A2ML.
-
-```bash
-# Read A2ML, output HTML
-pandoc -f a2ml-reader.lua manifest.a2ml -o manifest.html
-
-# Read A2ML, output PDF
-pandoc -f a2ml-reader.lua manifest.a2ml -o manifest.pdf
-
-# Convert Markdown to A2ML
-pandoc README.md -t a2ml-writer.lua -o README.a2ml
-
-# Apply the A2ML filter for attestation validation
-pandoc -f a2ml-reader.lua --lua-filter a2ml-filter.lua manifest.a2ml -o report.html
-```
-
-**Install:** Clone the repo and add the Lua scripts to your Pandoc data directory, or reference them by path.
-
-**Repository:** [github.com/hyperpolymath/pandoc-a2ml](https://github.com/hyperpolymath/pandoc-a2ml)
-
-
-
-
-
-## VS Code Live
-
-Syntax highlighting, bracket matching, and snippet support for `.a2ml` files in Visual Studio Code.
-
-Features:
-- Full TextMate grammar for A2ML syntax
-- Highlighting for directives (`@attestation:` ... `@end`), headings, inline formatting, and comments
-- Snippets for common patterns (attestation block, policy block, provenance block)
-- File icon for `.a2ml` files
-- Language configuration for bracket/comment auto-pairing
-
-**Install:** Search "A2ML" in the VS Code marketplace, or install from VSIX.
-
-**Repository:** [github.com/hyperpolymath/vscode-a2ml](https://github.com/hyperpolymath/vscode-a2ml)
-
-
-
-
-
-## Tree-sitter Live
-
-A [tree-sitter](https://tree-sitter.github.io) grammar for A2ML, enabling syntax highlighting and structural queries in any editor that supports tree-sitter.
-
-Works with:
-- **Neovim** (via nvim-treesitter)
-- **Helix** (built-in tree-sitter support)
-- **Zed** (built-in tree-sitter support)
-- **GitHub** (syntax highlighting in code views, via tree-sitter)
-- **Emacs** (via tree-sitter-langs)
-
-The grammar parses the full A2ML syntax including nested directive blocks, attestation fields, and inline formatting.
-
-**Repository:** [github.com/hyperpolymath/tree-sitter-a2ml](https://github.com/hyperpolymath/tree-sitter-a2ml)
-
-
-
-
-
-## GitHub Linguist Pending
-
-A pull request to add A2ML to [GitHub Linguist](https://github.com/github-linguist/linguist) is in preparation. Once merged, GitHub will:
-
-- Detect `.a2ml` files automatically
-- Show A2ML in repository language statistics
-- Apply syntax highlighting using the tree-sitter grammar
-- Recognise `application/vnd.a2ml` as a registered media type
-
-
-
-
-
-## K9 Validators Live
-
-[pandoc-k9](https://github.com/hyperpolymath/pandoc-k9) provides contractile validation for A2ML files. K9 validators enforce structural and policy constraints:
-
-- **must** — required fields and sections
-- **trust** — attestation chain validity
-- **dust** — deprecated pattern detection
-- **intend** — intent declaration verification
-
-K9 runs in CI/CD pipelines and can block merges when A2ML manifests fail validation.
-
-**Repository:** [github.com/hyperpolymath/pandoc-k9](https://github.com/hyperpolymath/pandoc-k9)
-
-
-
-
-
-## LuaRocks Live
-
-The A2ML Pandoc components are available as a Lua library via [LuaRocks](https://luarocks.org), making it straightforward to integrate A2ML parsing into any Lua-based toolchain.
-
-```bash
-luarocks install pandoc-a2ml
-```
-
-
-
-
-
-## Hypatia CI/CD Scanner Live
-
-[Hypatia](https://github.com/hyperpolymath/hypatia) consumes A2ML manifests as part of its neurosymbolic security scanning. It:
-
-- Reads `0-AI-MANIFEST.a2ml` to understand repository structure
-- Validates attestation chains in `.machine_readable/*.a2ml` files
-- Enforces that all agents operating on a repository have valid manifests
-- Reports trust-level gaps in CI pipeline output
-
-
-
-
-
-## Hackage (Haskell) Coming Soon
-
-A native Haskell library for parsing and generating A2ML is in development. It will provide:
-
-- Pure Haskell parser (no Pandoc dependency)
-- Type-safe AST for A2ML documents
-- Attestation chain validation
-- Integration with the Pandoc Haskell library
-
-
diff --git a/a2ml/showcase/content/specification.adoc b/a2ml/showcase/content/specification.adoc
new file mode 100644
index 00000000..53d9771c
--- /dev/null
+++ b/a2ml/showcase/content/specification.adoc
@@ -0,0 +1,280 @@
+== A2ML Specification
+
+=== Overview
+
+A2ML (Attested Markup Language) is a text-based document format that
+combines human-readable markup with machine-verifiable attestation
+blocks. This page describes the format as currently implemented in the
+https://github.com/hyperpolymath/pandoc-a2ml[pandoc-a2ml] toolchain.
+
+=== File Format
+
+* *Extension:* `+.a2ml+`
+* *Media type:* `+application/vnd.a2ml+` (IANA registration pending)
+* *Encoding:* UTF-8
+* *Line endings:* LF (Unix-style) recommended; CRLF accepted
+
+=== Basic Syntax
+
+A2ML uses a Markdown-like syntax with additional constructs for
+attestation and structured metadata.
+
+==== Headings
+
+....
+# Top-level heading
+## Second-level heading
+### Third-level heading
+....
+
+==== Inline Formatting
+
+....
+**Bold text** for emphasis
+*Italic text* for secondary emphasis
+[Link text](https://example.com) for hyperlinks
+@ref(section-id) for internal cross-references
+`inline code` for identifiers
+....
+
+==== Lists
+
+....
+- Unordered list item
+- Another item
+* Asterisk syntax also works
+
+1. Ordered list item
+2. Another item
+....
+
+==== Code Blocks
+
+....
+```language
+code goes here
+```
+....
+
+==== Comments
+
+....
+;; Scheme-style comments are stripped during parsing.
+;; Use these for notes that should not appear in output.
+....
+
+=== Directive Blocks
+
+Directives are the core extension that distinguishes A2ML from plain
+Markdown. They carry structured, machine-readable content within
+annotated blocks.
+
+==== Syntax
+
+....
+@directive-name:
+Content of the directive.
+Can span multiple lines.
+@end
+....
+
+The parser collects everything between `+@directive-name:+` and `+@end+`
+into a named container (rendered as a `+
+` with
+`+class="directive-name"+` in HTML output).
+
+==== Standard Directives
+
+The following directives have conventional meaning across the A2ML
+ecosystem. Tooling may validate or enforce these.
+
+===== `+@abstract+`
+
+A short summary of the document’s purpose. Typically one to three
+sentences.
+
+....
+@abstract:
+A2ML is a typed, attested markup format for AI agent identity.
+@end
+....
+
+===== `+@attestation+`
+
+A trust claim with structured fields. This is the fundamental unit of
+the A2ML trust model.
+
+....
+@attestation:
+agent-id: hypatia-scanner-v3
+attested-by: rhodibot
+trust-level: verified
+timestamp: 2026-03-16T14:30:00Z
+signature: sha256:9f86d08...
+capabilities:
+ - static-analysis
+ - secret-detection
+ - dependency-audit
+scope: repository
+@end
+....
+
+*Fields:*
+
+[width="100%",cols="24%,33%,43%",options="header",]
+|===
+|Field |Required |Description
+|`+agent-id+` |Yes |Unique identifier for the agent being attested
+
+|`+attested-by+` |Yes |Identifier of the attesting authority
+
+|`+trust-level+` |Yes |One of: `+self-declared+`, `+peer-reviewed+`,
+`+verified+`, `+audited+`
+
+|`+timestamp+` |Yes |ISO 8601 timestamp of the attestation
+
+|`+signature+` |Recommended |Cryptographic signature (algorithm:hash)
+
+|`+capabilities+` |Yes |List of declared capabilities
+
+|`+scope+` |No |Scope of the attestation (e.g., `+repository+`,
+`+organization+`, `+global+`)
+|===
+
+===== `+@refs+`
+
+References and citations. Used for linking to external specifications,
+standards, or related documents.
+
+....
+@refs:
+[1] Attested Markup Language Specification (draft), 2026
+[2] SLSA Supply Chain Framework, https://slsa.dev
+@end
+....
+
+===== `+@policy+`
+
+Declares a policy constraint that tooling should enforce.
+
+....
+@policy:
+require: attestation.trust-level >= verified
+enforce: ci-pipeline
+action: block-merge
+@end
+....
+
+===== `+@provenance+`
+
+Records the origin and lineage of the document.
+
+....
+@provenance:
+created-by: Jonathan D.A. Jewell
+created: 2026-01-15
+last-modified: 2026-03-16
+source: https://github.com/hyperpolymath/a2ml-spec
+version: 0.3.0
+@end
+....
+
+=== Attestation Chains
+
+The real power of A2ML comes from *attestation chains* — sequences of
+attestations where each one references or builds upon previous ones.
+
+....
+;; Agent declares its own capabilities
+@attestation:
+agent-id: codebot-v2
+attested-by: codebot-v2
+trust-level: self-declared
+capabilities:
+ - code-review
+ - style-checking
+@end
+
+;; Security team verifies the agent
+@attestation:
+agent-id: codebot-v2
+attested-by: security-team
+trust-level: verified
+verifies: codebot-v2/self-declared/2026-03-10
+signature: sha256:a3f2c8...
+@end
+
+;; Auditor provides highest-level attestation
+@attestation:
+agent-id: codebot-v2
+attested-by: external-auditor
+trust-level: audited
+verifies: codebot-v2/verified/2026-03-12
+audit-report: https://audits.example.com/codebot-v2
+signature: sha256:7b1e4d...
+@end
+....
+
+Each successive attestation raises the trust level and creates an
+auditable trail from `+self-declared+` through `+verified+` to
+`+audited+`.
+
+=== Trust Levels
+
+[width="100%",cols="22%,26%,52%",options="header",]
+|===
+|Level |Meaning |Typical Attester
+|`+self-declared+` |Agent claims its own capabilities |The agent itself
+
+|`+peer-reviewed+` |Another agent or team has reviewed the claims |A
+peer agent or team lead
+
+|`+verified+` |A security or operations team has validated behaviour
+|Security team, CI system
+
+|`+audited+` |An independent audit has confirmed the claims |External
+auditor
+|===
+
+=== Canonical File Locations
+
+In repositories following the
+https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium
+Standard], A2ML files live in the `+.machine_readable/+` directory:
+
+....
+.machine_readable/
+ STATE.a2ml # Project state and progress
+ META.a2ml # Architecture decisions, governance
+ ECOSYSTEM.a2ml # Position in ecosystem, relationships
+ AGENTIC.a2ml # AI agent interaction patterns
+ NEUROSYM.a2ml # Neurosymbolic integration config
+ PLAYBOOK.a2ml # Operational runbook
+ anchors/
+ ANCHOR.a2ml # Canonical authority declaration
+ policies/
+ MAINTENANCE-AXES.a2ml
+ MAINTENANCE-CHECKLIST.a2ml
+....
+
+The top-level `+0-AI-MANIFEST.a2ml+` serves as the entry point that all
+AI agents must read first.
+
+=== Pandoc Integration
+
+A2ML is a first-class Pandoc format. Convert between A2ML and any
+Pandoc-supported format:
+
+[source,bash]
+----
+# A2ML to HTML
+pandoc -f a2ml-reader.lua input.a2ml -o output.html
+
+# A2ML to PDF (via LaTeX)
+pandoc -f a2ml-reader.lua input.a2ml -o output.pdf
+
+# Markdown to A2ML
+pandoc input.md -t a2ml-writer.lua -o output.a2ml
+
+# A2ML to A2ML (normalise)
+pandoc -f a2ml-reader.lua input.a2ml -t a2ml-writer.lua -o normalised.a2ml
+----
diff --git a/a2ml/showcase/content/specification.md b/a2ml/showcase/content/specification.md
deleted file mode 100644
index c4d0e0fc..00000000
--- a/a2ml/showcase/content/specification.md
+++ /dev/null
@@ -1,248 +0,0 @@
----
-title: Specification
-date: 2026-03-16
-order: 2
----
-
-# A2ML Specification
-
-## Overview
-
-A2ML (Attested Markup Language) is a text-based document format that combines human-readable markup with machine-verifiable attestation blocks. This page describes the format as currently implemented in the [pandoc-a2ml](https://github.com/hyperpolymath/pandoc-a2ml) toolchain.
-
-## File Format
-
-- **Extension:** `.a2ml`
-- **Media type:** `application/vnd.a2ml` (IANA registration pending)
-- **Encoding:** UTF-8
-- **Line endings:** LF (Unix-style) recommended; CRLF accepted
-
-## Basic Syntax
-
-A2ML uses a Markdown-like syntax with additional constructs for attestation and structured metadata.
-
-### Headings
-
-```
-# Top-level heading
-## Second-level heading
-### Third-level heading
-```
-
-### Inline Formatting
-
-```
-**Bold text** for emphasis
-*Italic text* for secondary emphasis
-[Link text](https://example.com) for hyperlinks
-@ref(section-id) for internal cross-references
-`inline code` for identifiers
-```
-
-### Lists
-
-```
-- Unordered list item
-- Another item
-* Asterisk syntax also works
-
-1. Ordered list item
-2. Another item
-```
-
-### Code Blocks
-
-````
-```language
-code goes here
-```
-````
-
-### Comments
-
-```
-;; Scheme-style comments are stripped during parsing.
-;; Use these for notes that should not appear in output.
-```
-
-## Directive Blocks
-
-Directives are the core extension that distinguishes A2ML from plain Markdown. They carry structured, machine-readable content within annotated blocks.
-
-### Syntax
-
-```
-@directive-name:
-Content of the directive.
-Can span multiple lines.
-@end
-```
-
-The parser collects everything between `@directive-name:` and `@end` into a named container (rendered as a `
` with `class="directive-name"` in HTML output).
-
-### Standard Directives
-
-The following directives have conventional meaning across the A2ML ecosystem. Tooling may validate or enforce these.
-
-#### `@abstract`
-
-A short summary of the document's purpose. Typically one to three sentences.
-
-```
-@abstract:
-A2ML is a typed, attested markup format for AI agent identity.
-@end
-```
-
-#### `@attestation`
-
-A trust claim with structured fields. This is the fundamental unit of the A2ML trust model.
-
-```
-@attestation:
-agent-id: hypatia-scanner-v3
-attested-by: rhodibot
-trust-level: verified
-timestamp: 2026-03-16T14:30:00Z
-signature: sha256:9f86d08...
-capabilities:
- - static-analysis
- - secret-detection
- - dependency-audit
-scope: repository
-@end
-```
-
-**Fields:**
-
-| Field | Required | Description |
-|-------|----------|-------------|
-| `agent-id` | Yes | Unique identifier for the agent being attested |
-| `attested-by` | Yes | Identifier of the attesting authority |
-| `trust-level` | Yes | One of: `self-declared`, `peer-reviewed`, `verified`, `audited` |
-| `timestamp` | Yes | ISO 8601 timestamp of the attestation |
-| `signature` | Recommended | Cryptographic signature (algorithm:hash) |
-| `capabilities` | Yes | List of declared capabilities |
-| `scope` | No | Scope of the attestation (e.g., `repository`, `organization`, `global`) |
-
-#### `@refs`
-
-References and citations. Used for linking to external specifications, standards, or related documents.
-
-```
-@refs:
-[1] Attested Markup Language Specification (draft), 2026
-[2] SLSA Supply Chain Framework, https://slsa.dev
-@end
-```
-
-#### `@policy`
-
-Declares a policy constraint that tooling should enforce.
-
-```
-@policy:
-require: attestation.trust-level >= verified
-enforce: ci-pipeline
-action: block-merge
-@end
-```
-
-#### `@provenance`
-
-Records the origin and lineage of the document.
-
-```
-@provenance:
-created-by: Jonathan D.A. Jewell
-created: 2026-01-15
-last-modified: 2026-03-16
-source: https://github.com/hyperpolymath/a2ml-spec
-version: 0.3.0
-@end
-```
-
-## Attestation Chains
-
-The real power of A2ML comes from **attestation chains** — sequences of attestations where each one references or builds upon previous ones.
-
-```
-;; Agent declares its own capabilities
-@attestation:
-agent-id: codebot-v2
-attested-by: codebot-v2
-trust-level: self-declared
-capabilities:
- - code-review
- - style-checking
-@end
-
-;; Security team verifies the agent
-@attestation:
-agent-id: codebot-v2
-attested-by: security-team
-trust-level: verified
-verifies: codebot-v2/self-declared/2026-03-10
-signature: sha256:a3f2c8...
-@end
-
-;; Auditor provides highest-level attestation
-@attestation:
-agent-id: codebot-v2
-attested-by: external-auditor
-trust-level: audited
-verifies: codebot-v2/verified/2026-03-12
-audit-report: https://audits.example.com/codebot-v2
-signature: sha256:7b1e4d...
-@end
-```
-
-Each successive attestation raises the trust level and creates an auditable trail from `self-declared` through `verified` to `audited`.
-
-## Trust Levels
-
-| Level | Meaning | Typical Attester |
-|-------|---------|------------------|
-| `self-declared` | Agent claims its own capabilities | The agent itself |
-| `peer-reviewed` | Another agent or team has reviewed the claims | A peer agent or team lead |
-| `verified` | A security or operations team has validated behaviour | Security team, CI system |
-| `audited` | An independent audit has confirmed the claims | External auditor |
-
-## Canonical File Locations
-
-In repositories following the [Rhodium Standard](https://github.com/hyperpolymath/rhodium-standard-repositories), A2ML files live in the `.machine_readable/` directory:
-
-```
-.machine_readable/
- STATE.a2ml # Project state and progress
- META.a2ml # Architecture decisions, governance
- ECOSYSTEM.a2ml # Position in ecosystem, relationships
- AGENTIC.a2ml # AI agent interaction patterns
- NEUROSYM.a2ml # Neurosymbolic integration config
- PLAYBOOK.a2ml # Operational runbook
- anchors/
- ANCHOR.a2ml # Canonical authority declaration
- policies/
- MAINTENANCE-AXES.a2ml
- MAINTENANCE-CHECKLIST.a2ml
-```
-
-The top-level `0-AI-MANIFEST.a2ml` serves as the entry point that all AI agents must read first.
-
-## Pandoc Integration
-
-A2ML is a first-class Pandoc format. Convert between A2ML and any Pandoc-supported format:
-
-```bash
-# A2ML to HTML
-pandoc -f a2ml-reader.lua input.a2ml -o output.html
-
-# A2ML to PDF (via LaTeX)
-pandoc -f a2ml-reader.lua input.a2ml -o output.pdf
-
-# Markdown to A2ML
-pandoc input.md -t a2ml-writer.lua -o output.a2ml
-
-# A2ML to A2ML (normalise)
-pandoc -f a2ml-reader.lua input.a2ml -t a2ml-writer.lua -o normalised.a2ml
-```
diff --git a/a2ml/site/downloads.adoc b/a2ml/site/downloads.adoc
new file mode 100644
index 00000000..c6dcb242
--- /dev/null
+++ b/a2ml/site/downloads.adoc
@@ -0,0 +1,45 @@
+==
+
+title: Downloads site: A2ML description: Starter A2ML templates — lax,
+checked and profile examples — free to download and adapt. date:
+2026-06-29 —
+
+== Downloads
+
+Starter templates for each strictness mode. Download one, adapt it, and
+tighten the guarantees as your document matures.
+
+Lax example
+
+Write freely, no structural enforcement.
+
+Download .a2ml
+
+Checked example
+
+Required sections exist, references resolve, IDs are unique.
+
+Download .a2ml
+
+Profile example
+
+A domain profile layered on the base vocabulary.
+
+Download .a2ml
+
+All templates
+
+The full set plus a README, bundled.
+
+Download .tar.gz
+
+=== Licence
+
+Templates are `+MPL-2.0+` (code); this page is `+CC-BY-SA-4.0+`.
+
+=== More tooling
+
+Full implementations, editor support and CI actions are coordinated in
+the https://github.com/hyperpolymath/a2ml-ecosystem[a2ml-ecosystem] hub
+— clone the repository directly if you want more than the starter
+templates above.
diff --git a/a2ml/site/downloads.md b/a2ml/site/downloads.md
deleted file mode 100644
index 186b9f82..00000000
--- a/a2ml/site/downloads.md
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
----
-title: Downloads
-site: A2ML
-description: Starter A2ML templates — lax, checked and profile examples — free to download and adapt.
-date: 2026-06-29
----
-
-# Downloads
-
-
Starter templates for each strictness mode. Download one, adapt it, and tighten the guarantees as your document matures.
-
-## Licence
-
-Templates are `MPL-2.0` (code); this page is `CC-BY-SA-4.0`.
-
-## More tooling
-
-Full implementations, editor support and CI actions are coordinated in the
-[a2ml-ecosystem](https://github.com/hyperpolymath/a2ml-ecosystem) hub — clone
-the repository directly if you want more than the starter templates above.
diff --git a/a2ml/site/index.adoc b/a2ml/site/index.adoc
new file mode 100644
index 00000000..ea3e1ab9
--- /dev/null
+++ b/a2ml/site/index.adoc
@@ -0,0 +1,81 @@
+==
+
+title: A2ML site: A2ML brand: A2ML description: A2ML is a lightweight,
+Djot-like markup that compiles into a typed, attested core, with
+progressive strictness from lax to fully attested. date: 2026-06-29 —
+
+== A2ML — Attested Markup Language
+
+A lightweight, Djot-like markup that compiles into a typed, attested
+core. Authoring stays simple; structural guarantees switch on when you
+want them.
+
+[.badge]#Spec v1.1.0# [.badge]#Typed core# [.badge]#Progressive
+strictness# [.badge]#Byte-for-byte payloads# [.badge]#MPL-2.0 /
+CC-BY-SA-4.0#
+
+Get started Read the spec GitHub
+
+=== What it does
+
+Readable surface
+
+Write a clean, Djot-like format. No ceremony when you don’t need it.
+
+Typed, attested core
+
+Required sections, resolved references and unique IDs — verified, not
+hoped for.
+
+Faithful payloads
+
+Opaque content is preserved byte-for-byte for reliable embedding.
+
+Portable rendering
+
+One source, many targets — HTML, Markdown and PDF pipelines.
+
+=== Progressive strictness
+
+A2ML lets you dial guarantees up as a document matures:
+
+[width="100%",cols="36%,64%",options="header",]
+|===
+|Mode |Guarantee
+|*lax* |Parse and render; no structural enforcement.
+|*checked* |Required sections exist, references resolve, IDs are unique.
+|*attested* |Checked, plus a verifiable attestation over the typed core.
+|===
+
+=== A taste
+
+[source,a2ml]
+----
+# A2ML Overview
+
+@abstract:
+A2ML is a typed, attested markup format. It verifies structure and references.
+@end
+
+## Claims
+- Required sections must exist.
+- References must resolve.
+
+@refs:
+[1] Attested Markup Language Spec (draft)
+@end
+----
+
+=== Downloads & roadmap
+
+Grab a link:/downloads.html[starter template] in whichever strictness
+mode fits, or see the link:/roadmap.html[roadmap] for what’s next —
+including an interactive teaching area and
+https://github.com/hyperpolymath/a2mliser[a2mliser].
+
+=== Part of the standards estate
+
+A2ML is a satellite of the
+https://github.com/hyperpolymath/standards[Hyperpolymath standards hub].
+The normative specification, conformance vectors and profiles live
+there; this site is the front door.
diff --git a/a2ml/site/index.md b/a2ml/site/index.md
deleted file mode 100644
index 0bcaf9b7..00000000
--- a/a2ml/site/index.md
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
----
-title: A2ML
-site: A2ML
-brand: A2ML
-description: A2ML is a lightweight, Djot-like markup that compiles into a typed, attested core, with progressive strictness from lax to fully attested.
-date: 2026-06-29
----
-
-# A2ML — Attested Markup Language
-
-
A lightweight, Djot-like markup that compiles into a typed, attested core. Authoring stays simple; structural guarantees switch on when you want them.
Write a clean, Djot-like format. No ceremony when you don't need it.
-
-
-
Typed, attested core
-
Required sections, resolved references and unique IDs — verified, not hoped for.
-
-
-
Faithful payloads
-
Opaque content is preserved byte-for-byte for reliable embedding.
-
-
-
Portable rendering
-
One source, many targets — HTML, Markdown and PDF pipelines.
-
-
-
-## Progressive strictness
-
-A2ML lets you dial guarantees up as a document matures:
-
-| Mode | Guarantee |
-|------|-----------|
-| **lax** | Parse and render; no structural enforcement. |
-| **checked** | Required sections exist, references resolve, IDs are unique. |
-| **attested** | Checked, plus a verifiable attestation over the typed core. |
-
-## A taste
-
-```a2ml
-# A2ML Overview
-
-@abstract:
-A2ML is a typed, attested markup format. It verifies structure and references.
-@end
-
-## Claims
-- Required sections must exist.
-- References must resolve.
-
-@refs:
-[1] Attested Markup Language Spec (draft)
-@end
-```
-
-## Downloads & roadmap
-
-Grab a [starter template](/downloads.html) in whichever strictness mode fits, or see the [roadmap](/roadmap.html) for what's next — including an interactive teaching area and [a2mliser](https://github.com/hyperpolymath/a2mliser).
-
-## Part of the standards estate
-
-A2ML is a satellite of the [Hyperpolymath standards hub](https://github.com/hyperpolymath/standards). The normative specification, conformance vectors and profiles live there; this site is the front door.
diff --git a/a2ml/site/roadmap.adoc b/a2ml/site/roadmap.adoc
new file mode 100644
index 00000000..ddc2bff8
--- /dev/null
+++ b/a2ml/site/roadmap.adoc
@@ -0,0 +1,51 @@
+==
+
+title: Roadmap site: A2ML description: Where A2ML is going — near-term
+site work, mid-term tooling and teaching, and the longer-term
+convergence with typed routing. date: 2026-06-29 —
+
+== Roadmap
+
+What’s shipping now, what’s next, and the longer-term direction this
+site is pointed at.
+
+=== Now
+
+Refreshed site
+
+Up-to-date content, SEO essentials (structured data, Open Graph,
+sitemap, feed) and an accessible-by-default theme.
+
+Downloads
+
+Starter templates for each strictness mode, free to grab from the
+Downloads page.
+
+Sharing
+
+Share links and an Atom feed so updates propagate — see the footer on
+any page.
+
+=== Next
+
+* *https://github.com/hyperpolymath/a2mliser[a2mliser]* — cryptographic
+attestation tooling for A2ML and other markup/configuration, with its
+own docs surfaced here.
+* *Interactive & teaching area* — try A2ML in the browser, worked
+examples, and a walkthrough of the three strictness modes.
+* *Estate usage examples* — real, concrete places A2ML is used across
+the Hyperpolymath estate.
+
+=== Later
+
+A2ML sits alongside longer-running research into a *typed routing
+protocol* — work still taking shape, aimed at _entangling
+communications_ alongside two related ideas:
+*glider-over-typed-surfaces* and *encapsulated-gliders-over-QUIC*. As
+that work matures it is expected to converge with A2ML’s typed, attested
+core. This is a direction, not yet a shipped spec — details will land
+here as they solidify.
+
+=== Follow along
+
+Subscribe via RSS/Atom Watch on GitHub
diff --git a/a2ml/site/roadmap.md b/a2ml/site/roadmap.md
deleted file mode 100644
index c9a916a6..00000000
--- a/a2ml/site/roadmap.md
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
----
-title: Roadmap
-site: A2ML
-description: Where A2ML is going — near-term site work, mid-term tooling and teaching, and the longer-term convergence with typed routing.
-date: 2026-06-29
----
-
-# Roadmap
-
-
What's shipping now, what's next, and the longer-term direction this site is pointed at.
-
-## Now
-
-
-
-
Refreshed site
-
Up-to-date content, SEO essentials (structured data, Open Graph, sitemap, feed) and an accessible-by-default theme.
-
-
-
Downloads
-
Starter templates for each strictness mode, free to grab from the Downloads page.
-
-
-
Sharing
-
Share links and an Atom feed so updates propagate — see the footer on any page.
-
-
-
-## Next
-
-- **[a2mliser](https://github.com/hyperpolymath/a2mliser)** — cryptographic attestation tooling for A2ML and other markup/configuration, with its own docs surfaced here.
-- **Interactive & teaching area** — try A2ML in the browser, worked examples, and a walkthrough of the three strictness modes.
-- **Estate usage examples** — real, concrete places A2ML is used across the Hyperpolymath estate.
-
-## Later
-
-A2ML sits alongside longer-running research into a **typed routing protocol** —
-work still taking shape, aimed at *entangling communications* alongside two
-related ideas: **glider-over-typed-surfaces** and
-**encapsulated-gliders-over-QUIC**. As that work matures it is expected to
-converge with A2ML's typed, attested core. This is a direction, not yet a
-shipped spec — details will land here as they solidify.
-
-## Follow along
-
-