Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ release schedules, contributor access, and community standards.
- ADR statuses: `proposed`, `accepted`, `deprecated`, `superseded`, `rejected`.
- ADRs provide a historical record of why decisions were made and what alternatives
were considered.
- See `.machine_readable/META.a2ml` for the machine-readable ADR index.
- See `.machine_readable/descriptiles/META.a2ml` for the machine-readable ADR index.

---

Expand Down
6 changes: 3 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@

### As Applicable

- [ ] `.machine_readable/STATE.a2ml` updated (if project state changed)
- [ ] `.machine_readable/ECOSYSTEM.a2ml` updated (if integrations changed)
- [ ] `.machine_readable/META.a2ml` updated (if architectural decisions changed)
- [ ] `.machine_readable/descriptiles/STATE.a2ml` updated (if project state changed)
- [ ] `.machine_readable/descriptiles/ECOSYSTEM.a2ml` updated (if integrations changed)
- [ ] `.machine_readable/descriptiles/META.a2ml` updated (if architectural decisions changed)
- [ ] Documentation updated for user-facing changes
- [ ] `TOPOLOGY.md` updated (if architecture changed)
- [ ] `CHANGELOG` or release notes updated
Expand Down
2 changes: 1 addition & 1 deletion .machine_readable/ai/.clinerules
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
# Authoritative source: docs/AI-CONVENTIONS.md

# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/STATE.a2ml.
# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/descriptiles/STATE.a2ml.

# LICENSE
# All original code: MPL-2.0.
Expand Down
2 changes: 1 addition & 1 deletion .machine_readable/ai/.windsurfrules
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
# Authoritative source: docs/AI-CONVENTIONS.md

# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/STATE.a2ml.
# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/descriptiles/STATE.a2ml.

# LICENSE
# All original code: MPL-2.0.
Expand Down
4 changes: 2 additions & 2 deletions .machine_readable/ai/AI.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
- Prefer to keep generated files out of source control, and regenerate them with the documented commands before committing.

## Workflow
1. Inspect `.machine_readable/STATE.a2ml` for blockers and next actions.
2. Respect any constraints listed inside `.machine_readable/AGENTIC.a2ml` when tooling changes are requested.
1. Inspect `.machine_readable/descriptiles/STATE.a2ml` for blockers and next actions.
2. Respect any constraints listed inside `.machine_readable/descriptiles/AGENTIC.a2ml` when tooling changes are requested.
3. After finishing edits, update STATE with your outcomes and commit with a concise, imperative message.

## Delivery Promises
Expand Down
4 changes: 2 additions & 2 deletions .machine_readable/ai/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ Recommended machine read order:
* `.machine_readable/policies/MAINTENANCE-AXES.a2ml`
* `.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml`
* `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml`
* `.machine_readable/STATE.a2ml`
* `.machine_readable/META.a2ml`
* `.machine_readable/descriptiles/STATE.a2ml`
* `.machine_readable/descriptiles/META.a2ml`
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ last-updated = "2026-04-11"
# target = "container" # container | binary | library | wasm

[incident-response]
# 1. Check .machine_readable/STATE.a2ml for current status
# 1. Check .machine_readable/descriptiles/STATE.a2ml for current status
# 2. Review recent commits and CI results
# 3. Run `just validate` to check compliance
# 4. Run `just security` to audit for vulnerabilities
Expand Down
2 changes: 1 addition & 1 deletion .machine_readable/policies/MAINTENANCE-AXES.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ machine-entrypoints = [
".machine_readable/policies/MAINTENANCE-AXES.a2ml",
".machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml",
".machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml",
".machine_readable/META.a2ml",
".machine_readable/descriptiles/META.a2ml",
".machine_readable/ai/README.adoc",
".machine_readable/bot_directives/README.scm",
]
Expand Down
6 changes: 3 additions & 3 deletions 0-AI-MANIFEST.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ id = "typed-wasm-root-manifest"
level = 0

[canonical_locations]
state = ".machine_readable/6a2/STATE.a2ml"
meta = ".machine_readable/6a2/META.a2ml"
ecosystem = ".machine_readable/6a2/ECOSYSTEM.a2ml"
state = ".machine_readable/descriptiles/STATE.a2ml"
meta = ".machine_readable/descriptiles/META.a2ml"
ecosystem = ".machine_readable/descriptiles/ECOSYSTEM.a2ml"
grammar = "spec/grammar.ebnf"
abi_proofs = "src/abi/"
zig_ffi = "ffi/zig/"
Expand Down
2 changes: 1 addition & 1 deletion AUDIT.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ For typed-wasm-specific audit posture:
* `docs/PRODUCTION-PATH.adoc` — 6-phase plan to production-quality compile
target; current state is Phase 0 (foundation stabilisation), 2 of 3 gates
met
* `.machine_readable/6a2/STATE.a2ml` — machine-readable project state
* `.machine_readable/descriptiles/STATE.a2ml` — machine-readable project state
* `tests/aspect/claim-envelope.mjs` (53 assertions) +
`tests/aspect/security-envelope.mjs` (10 assertions) — automated
drift-detection on cross-document claims
Expand Down
29 changes: 29 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,35 @@ https://semver.org/spec/v2.0.0.html[Semantic Versioning].

=== [Unreleased]

==== Machine-readable substrate: retired `6a2` layout migrated to `descriptiles` (2026-10-10)

`0-canon/CANONICAL-NAMES.adoc` (owner mandate of 2026-06-30) deprecates the
directory name `6a2` in favour of `descriptiles`, and requires migration "on
sight". This repo was the last hold-out: `governance / Workflow security
linter` was red on `check-descriptile-policy.sh`, which forbids an executable
file-existence test on `.machine_readable/(6a2/)?(STATE|META|ECOSYSTEM|AGENTIC|
NEUROSYM|PLAYBOOK|ANCHOR).a2ml`.

* `.machine_readable/6a2/*.a2ml` -> `.machine_readable/descriptiles/*.a2ml`
(6 files, `git mv`, content untouched).
* 49 path references updated across 19 live files (`Justfile`,
`0-AI-MANIFEST.a2ml`, `AUDIT.adoc`, `.github/GOVERNANCE.md`, the PR template,
`.machine_readable/ai/*`, `.machine_readable/policies/MAINTENANCE-AXES.a2ml`,
`docs/`, `spec/async-convergence-abi.adoc`, `src/abi/README.adoc`).
* Left as historical records, as the mandate permits: `CHANGELOG.adoc` and
`docs/reports/maintenance/2026-05-25-phase-0-closure.adoc` keep the spelling
of their day (4 references).

Side effect worth knowing: `just info`, `just validate-rsr` and `just
validate-state` tested paths that had never existed in this repo
(`.machine_readable/STATE.a2ml`, bare), so their `[ -f ]` guards made them
silently skip. Retargeted, all five `META.a2ml` axis assertions now run and
pass. No workflow invokes these recipes, so CI behaviour is unchanged.

Verified with the estate's own gates, run locally: `check-descriptile-policy.sh`
exit 0 (was 1 on `main`), and `check-canonical-names.sh origin/main` reports no
deprecated names reintroduced.

==== Multi-producer carrier ABI: proposals 0001 + 0002 accepted, promoted to ADRs (2026-05-30)

Closes typed-wasm#34 (proposal 0001), typed-wasm#78 (proposal 0002),
Expand Down
36 changes: 18 additions & 18 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ info:
@echo "Version: {{version}}"
@echo "RSR Tier: {{tier}}"
@echo "Recipes: $(just --summary | wc -w)"
@[ -f ".machine_readable/STATE.a2ml" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml | head -1 | xargs -I{} echo "Phase: {}" || true
@[ -f ".machine_readable/descriptiles/STATE.a2ml" ] && grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/descriptiles/STATE.a2ml | head -1 | xargs -I{} echo "Phase: {}" || true

# Repository is already instantiated; there is no template bootstrap step.
init:
Expand Down Expand Up @@ -351,7 +351,7 @@ validate-rsr:
for f in .editorconfig .gitignore Justfile README.adoc LICENSE 0-AI-MANIFEST.a2ml; do
[ -f "$f" ] || MISSING="$MISSING $f"
done
for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml .machine_readable/anchors/ANCHOR.a2ml .machine_readable/policies/MAINTENANCE-AXES.a2ml .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml; do
for f in .machine_readable/descriptiles/STATE.a2ml .machine_readable/descriptiles/META.a2ml .machine_readable/descriptiles/ECOSYSTEM.a2ml .machine_readable/anchors/ANCHOR.a2ml .machine_readable/policies/MAINTENANCE-AXES.a2ml .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml; do
[ -f "$f" ] || MISSING="$MISSING $f"
done
for f in docs/legal/EXHIBIT-A-ETHICAL-USE.txt docs/legal/EXHIBIT-B-QUANTUM-SAFE.txt LICENSES/MPL-2.0.txt; do
Expand All @@ -363,15 +363,15 @@ validate-rsr:
for f in docs/governance/MAINTENANCE-CHECKLIST.adoc docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc; do
[ -f "$f" ] || MISSING="$MISSING $f"
done
if [ -f ".machine_readable/6a2/META.a2ml" ]; then
grep -q 'axis-1 = "must > intend > like"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-1"
grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-2"
grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-3"
grep -q 'scoping-first = true' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:scoping-first"
grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:idris-unsound-scan"
grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:audit-focus"
grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:compliance-focus"
grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:effects-evidence"
if [ -f ".machine_readable/descriptiles/META.a2ml" ]; then
grep -q 'axis-1 = "must > intend > like"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:axis-1"
grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:axis-2"
grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:axis-3"
grep -q 'scoping-first = true' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:scoping-first"
grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:idris-unsound-scan"
grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:audit-focus"
grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:compliance-focus"
grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/descriptiles/META.a2ml || MISSING="$MISSING META.a2ml:effects-evidence"
grep -q 'compliance-tooling = "panic-attack"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:compliance-tooling"
grep -q 'effects-tooling = "ecological checking with sustainabot guidance"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:effects-tooling"
grep -q 'source-human = "docs/maintenance/MAINTENANCE-CHECKLIST.adoc"' .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml || MISSING="$MISSING MAINTENANCE-CHECKLIST.a2ml:source-human"
Expand All @@ -385,12 +385,12 @@ validate-rsr:

# Validate STATE.a2ml syntax
validate-state:
@if [ -f ".machine_readable/STATE.a2ml" ]; then \
grep -q '^\[metadata\]' .machine_readable/STATE.a2ml && \
grep -q 'project\s*=' .machine_readable/STATE.a2ml && \
@if [ -f ".machine_readable/descriptiles/STATE.a2ml" ]; then \
grep -q '^\[metadata\]' .machine_readable/descriptiles/STATE.a2ml && \
grep -q 'project\s*=' .machine_readable/descriptiles/STATE.a2ml && \
echo "STATE.a2ml: valid" || echo "STATE.a2ml: INVALID (missing required sections)"; \
else \
echo "No .machine_readable/STATE.a2ml found"; \
echo "No .machine_readable/descriptiles/STATE.a2ml found"; \
fi

# Validate AI installation guide completeness (finishbot pre-release check)
Expand Down Expand Up @@ -469,14 +469,14 @@ validate: validate-rsr validate-state validate-ai-install

# Update STATE.a2ml timestamp
state-touch:
@if [ -f ".machine_readable/STATE.a2ml" ]; then \
sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/STATE.a2ml && \
@if [ -f ".machine_readable/descriptiles/STATE.a2ml" ]; then \
sed -i 's/last-updated = "[^"]*"/last-updated = "'"$(date +%Y-%m-%d)"'"/' .machine_readable/descriptiles/STATE.a2ml && \
echo "STATE.a2ml timestamp updated"; \
fi

# Show current phase from STATE.a2ml
state-phase:
@grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml 2>/dev/null | head -1 || echo "unknown"
@grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/descriptiles/STATE.a2ml 2>/dev/null | head -1 || echo "unknown"

# ═══════════════════════════════════════════════════════════════════════════════
# GUIX & NIX
Expand Down
2 changes: 1 addition & 1 deletion docs/RSR_OUTLINE.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ project/
* `Justfile`
* `README.adoc`
* `LICENSE` (MPL-2.0)
* `.machine_readable/STATE.a2ml`
* `.machine_readable/descriptiles/STATE.a2ml`
* `.well-known/security.txt`
* `.well-known/ai.txt`
* `.well-known/humans.txt`
Expand Down
2 changes: 1 addition & 1 deletion docs/STATE-VISUALIZER.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ template infrastructure that was inherited and later removed.
v v
+--------------------+ +----------------------+
| Tests and Audits | | Papers and Metadata |
| parser/e2e/aspect | | README/docs/6a2 |
| parser/e2e/aspect | | README/docs/descriptiles |
| benchmarks | | claim envelope |
+--------------------+ +----------------------+
----
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/ABI-PIPELINE.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Not implemented. Closing this gap is a deliverable somewhere between
Phase 1 (codegen end-to-end) and Phase 2 (C ABI for the verifier) in
`docs/PRODUCTION-PATH.adoc`. Tracked in:

* `.machine_readable/6a2/STATE.a2ml` milestone "generated/abi/ C
* `.machine_readable/descriptiles/STATE.a2ml` milestone "generated/abi/ C
header pipeline" — currently 0%
* `TEST-NEEDS.md` blocked-on-codegen items reference this gap

Expand Down
4 changes: 2 additions & 2 deletions docs/architecture/AGGREGATE-LIBRARY-VISION.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ in this file.

This aggregate library role is one of two first-class purposes. The other
is the TypeLL progressive type safety system for WasmGC linear memory.
Both are documented in `.machine_readable/6a2/META.a2ml` (ADR-004).
Both are documented in `.machine_readable/descriptiles/META.a2ml` (ADR-004).

`katagoria` does not exist as a standalone repo yet; when it is created it
will be the upstream of this pipeline.
Expand All @@ -182,7 +182,7 @@ will be the upstream of this pipeline.
* `spec/async-convergence-abi.adoc` — ADR-005: shared async-over-WasmGC
boundary protocol (Thenable handle + closure-ABI continuation; Ephapax
co-stakeholder review, typed-wasm#31)
* `.machine_readable/6a2/META.a2ml` — ADR-004: dual-role architecture decision;
* `.machine_readable/descriptiles/META.a2ml` — ADR-004: dual-role architecture decision;
ADR-005: async convergence ABI
* AffineScript repo: `docs/DESIGN-VISION.adoc`
* Ephapax repo: `docs/specs/DYADIC-VISION.adoc`
8 changes: 4 additions & 4 deletions docs/practice/AI-CONVENTIONS.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ Per-tool config files (.cursorrules, .clinerules, etc.) reference this document.
## Session Startup

1. Read `0-AI-MANIFEST.a2ml` FIRST (mandatory gatekeeper).
2. Read `.machine_readable/STATE.a2ml` for current status and blockers.
2. Read `.machine_readable/descriptiles/STATE.a2ml` for current status and blockers.
3. Read `.machine_readable/anchors/ANCHOR.a2ml` for canonical authority boundaries.
4. Read `.machine_readable/policies/MAINTENANCE-AXES.a2ml` for maintenance/audit sequencing.
5. Read `.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml` for baseline controls.
6. Read `.machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml` for execution order.
7. Read `.machine_readable/AGENTIC.a2ml` for agent constraints.
7. Read `.machine_readable/descriptiles/AGENTIC.a2ml` for agent constraints.

## License

Expand Down Expand Up @@ -77,8 +77,8 @@ Use `just` (Justfile) for all build, test, lint, and format tasks.
## References

- `0-AI-MANIFEST.a2ml` -- universal AI entry point
- `.machine_readable/AGENTIC.a2ml` -- agent permissions and constraints
- `.machine_readable/STATE.a2ml` -- current project state
- `.machine_readable/descriptiles/AGENTIC.a2ml` -- agent permissions and constraints
- `.machine_readable/descriptiles/STATE.a2ml` -- current project state
- `.machine_readable/anchors/ANCHOR.a2ml` -- canonical authority and policy boundary
- `.machine_readable/policies/MAINTENANCE-AXES.a2ml` -- canonical axis sequencing and audit requirements
- `.machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml` -- baseline maintenance checklist policy
Expand Down
2 changes: 1 addition & 1 deletion docs/status/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ often than any docs page and benefit from one-click visibility.
feeds into phase-gate decisions
* `docs/wiki/Phase-0-Status.md` — outside-reader view of current
phase closure state
* `.machine_readable/6a2/STATE.a2ml` — machine-readable state
* `.machine_readable/descriptiles/STATE.a2ml` — machine-readable state
(consumed by agents and dashboards)
4 changes: 2 additions & 2 deletions spec/async-convergence-abi.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,9 @@ divergence: the closure cell converges byte-identically). AffineScript

== References

* typed-wasm ADR-004 (`.machine_readable/6a2/META.a2ml`) — aggregate /
* typed-wasm ADR-004 (`.machine_readable/descriptiles/META.a2ml`) — aggregate /
convergence role
* typed-wasm ADR-005 (this protocol; `.machine_readable/6a2/META.a2ml`)
* typed-wasm ADR-005 (this protocol; `.machine_readable/descriptiles/META.a2ml`)
* typed-wasm#31 — convergence-ABI review issue
* AffineScript: ADR-013 `docs/specs/async-on-wasm-cps.adoc`; #225 (this
work), #160 (Http primitive), #199 (closure ABI), #205 (Thenable
Expand Down
2 changes: 1 addition & 1 deletion src/abi/README.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
== src/abi — Idris2 ABI Layer

This directory contains the Idris2 formal proofs for both roles of
`+typed-wasm+` (see ADR-004 in `+.machine_readable/6a2/META.a2ml+`).
`+typed-wasm+` (see ADR-004 in `+.machine_readable/descriptiles/META.a2ml+`).

=== Directory Layout

Expand Down
Loading