Skip to content

Commit 42b2001

Browse files
chore(naming)+ci: migrate 6a2 → descriptiles; harden proofs CI (#102)
## Summary Follow-up to the completed docs sweep (#101), doing the two things flagged there plus the wiki publish (already pushed live — see below). ### 1. `6a2/` → `descriptiles/` (estate naming mandate) The machine-readable metadata family is `descriptiles`; `6a2` is fully deprecated (estate mandate 2026-06-30, `standards/CANONICAL-NAMES.adoc`). This renames `.machine_readable/6a2/` → `.machine_readable/descriptiles/` (as git renames, history preserved) and migrates **every** `6a2` reference across the repo (21 files: docs, wiki, AUDIT, GOVERNANCE, RSR_COMPLIANCE, the contractile `Mustfile` validation invariants, `.well-known/ai.txt`, and the metadata files' own cross-references). Zero residual `6a2`. ### 2. Harden the proofs CI (`.github/workflows/proofs.yml`) - Three **independent** jobs — Coq (14 theories, both pillars), Agda (CNO + OND), Z3 (CNO + OND bounded) — so one flaking never reds the others. - Pinned to **`ubuntu-24.04`** (ships Coq 8.18 — exactly what the proofs need) to stop apt version drift; `concurrency` cancel-in-progress; SHA-pinned checkout; `contents: read`. - Heavy provers (Lean+Mathlib, Isabelle, Mizar, Idris) stay on the local gate `proofs/verify-all-provers.sh`, documented in-file. ### Wiki (done, live) The 13-page `docs/wiki` — previously **never published** (the live wiki was a 1-line stub) — has been published to the GitHub wiki, with repo-relative links rewritten to `blob/main` URLs and sibling links to wiki-style. `docs/wiki` remains the in-repo source of truth. (Wiki push is separate from this PR.) ## Test `just build-coq` → 14/14; `proofs.yml` validates; `git grep 6a2` → empty. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 25d0d3d commit 42b2001

28 files changed

Lines changed: 91 additions & 57 deletions

.github/workflows/proofs.yml

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# SPDX-License-Identifier: MPL-2.0
22
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
33
#
4-
# Proof verification CI. Runs the LIGHTWEIGHT provers that are feasible on a
5-
# standard GitHub runner — Coq (both pillars, all 14 theories) and Z3 (CNO +
6-
# OND bounded instances). The full six-prover gate (adds Lean+Mathlib, Agda,
7-
# Isabelle, Mizar, Idris) is heavy and runs locally / in a container via
8-
# `proofs/verify-all-provers.sh`; see PROOF-STATUS.adoc.
4+
# Proof verification CI. Runs the LIGHTWEIGHT provers that are fast and reliable
5+
# on a standard GitHub runner — Coq (both pillars, all 14 theories), Agda (CNO +
6+
# OND), and Z3 (CNO + OND bounded instances). Each is an INDEPENDENT job, so one
7+
# flaking never blocks the others.
8+
#
9+
# The heavy provers (Lean + multi-GB Mathlib, Isabelle ~1.2 GB, Mizar i386 + MML,
10+
# Idris 2 from source) are NOT run here — they are covered by the local/container
11+
# gate `proofs/verify-all-provers.sh` (ALL-PROVERS-GREEN). See PROOF-STATUS.adoc.
912
name: Proofs
1013

1114
on:
@@ -24,10 +27,15 @@ on:
2427
permissions:
2528
contents: read
2629

30+
# Cancel superseded runs on the same ref (don't pile up on force-pushes).
31+
concurrency:
32+
group: proofs-${{ github.ref }}
33+
cancel-in-progress: true
34+
2735
jobs:
2836
coq:
2937
name: Coq — CNO + OND (14 theories)
30-
runs-on: ubuntu-latest
38+
runs-on: ubuntu-24.04
3139
steps:
3240
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
3341
- name: Install Coq
@@ -40,9 +48,35 @@ jobs:
4048
make -f Makefile.all -j"$(nproc)"
4149
echo "✓ Coq: 14/14 theories compiled (CNO + OND)"
4250
51+
agda:
52+
name: Agda — CNO + OND
53+
runs-on: ubuntu-24.04
54+
steps:
55+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
56+
- name: Install Agda + stdlib
57+
run: sudo apt-get update && sudo apt-get install -y agda agda-stdlib
58+
- name: Register the standard library
59+
run: |
60+
mkdir -p "$HOME/.agda"
61+
LIB="$(dpkg -L agda-stdlib | grep -m1 'standard-library.*\.agda-lib' || true)"
62+
if [ -n "$LIB" ]; then
63+
echo "$LIB" > "$HOME/.agda/libraries"
64+
echo "standard-library" > "$HOME/.agda/defaults"
65+
echo "registered: $LIB"
66+
else
67+
echo "agda-stdlib .agda-lib not found via dpkg -L" >&2; exit 1
68+
fi
69+
- name: Type-check CNO + OND (--safe --without-K)
70+
working-directory: proofs/agda
71+
run: |
72+
agda --version
73+
agda --safe --without-K CNO.agda
74+
agda --safe --without-K OND.agda
75+
echo "✓ Agda: CNO + OND type-check"
76+
4377
z3:
44-
name: Z3 — OND bounded checks
45-
runs-on: ubuntu-latest
78+
name: Z3 — CNO + OND bounded checks
79+
runs-on: ubuntu-24.04
4680
steps:
4781
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
4882
- name: Install Z3

.machine_readable/contractiles/Dustfile.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ notes = "Exercised precedent: PR #69 repinned orphan reusable SHAs (97df7621/4fd
4343

4444
[[recovery]]
4545
id = "stale-machine-metadata"
46-
asset = ".machine_readable/ (6a2, contractiles, bot_directives)"
46+
asset = ".machine_readable/ (descriptiles, contractiles, bot_directives)"
4747
reversible = true
4848
handler = "Regenerate from repo facts: git log since the last STATE date + repo docs, per the governance-checkpoint discipline; prior states recoverable from git history"
4949
notes = "STATE refreshes are additive light-bumps; never invent facts — omit unknown keys."

.machine_readable/contractiles/Intentfile.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#
1313
# Populated 2026-06-12 (governance checkpoint): replaces the
1414
# rsr-template-repo stub. Sources: README.adoc, ROADMAP.adoc,
15-
# 6a2/STATE.a2ml ([route-to-mvp], [critical-next-actions], [blockers-and-issues]).
15+
# descriptiles/STATE.a2ml ([route-to-mvp], [critical-next-actions], [blockers-and-issues]).
1616
# A2ML here is TOML-flavoured.
1717

1818
[metadata]

.machine_readable/contractiles/Mustfile.a2ml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
repo = "absolute-zero"
1818
contractile-verb = "must"
1919
last-updated = "2026-06-12"
20-
abstract = "Physical-state invariants for absolute-zero: required governance files, the flat contractile set, the 6a2 metadata set, and the absence of superseded duplicate metadata."
20+
abstract = "Physical-state invariants for absolute-zero: required governance files, the flat contractile set, the descriptiles metadata set, and the absence of superseded duplicate metadata."
2121

2222
[[checks]]
2323
id = "license-present"
@@ -57,14 +57,14 @@ severity = "critical"
5757

5858
[[checks]]
5959
id = "six-a2ml-present"
60-
description = "6a2 directory has all six A2ML files plus manifest and README"
61-
run = "test -f .machine_readable/6a2/STATE.a2ml && test -f .machine_readable/6a2/META.a2ml && test -f .machine_readable/6a2/ECOSYSTEM.a2ml && test -f .machine_readable/6a2/AGENTIC.a2ml && test -f .machine_readable/6a2/NEUROSYM.a2ml && test -f .machine_readable/6a2/PLAYBOOK.a2ml && test -f .machine_readable/6a2/0-AI-MANIFEST.a2ml"
60+
description = "descriptiles directory has all six A2ML files plus manifest and README"
61+
run = "test -f .machine_readable/descriptiles/STATE.a2ml && test -f .machine_readable/descriptiles/META.a2ml && test -f .machine_readable/descriptiles/ECOSYSTEM.a2ml && test -f .machine_readable/descriptiles/AGENTIC.a2ml && test -f .machine_readable/descriptiles/NEUROSYM.a2ml && test -f .machine_readable/descriptiles/PLAYBOOK.a2ml && test -f .machine_readable/descriptiles/0-AI-MANIFEST.a2ml"
6262
severity = "critical"
6363

6464
[[checks]]
6565
id = "anchor-directory"
66-
description = "6a2/anchor/ exists with ANCHOR.a2ml (realignment record)"
67-
run = "test -d .machine_readable/6a2/anchor && test -f .machine_readable/6a2/anchor/ANCHOR.a2ml"
66+
description = "descriptiles/anchor/ exists with ANCHOR.a2ml (realignment record)"
67+
run = "test -d .machine_readable/descriptiles/anchor && test -f .machine_readable/descriptiles/anchor/ANCHOR.a2ml"
6868
severity = "warning"
6969

7070
[[checks]]
@@ -81,14 +81,14 @@ severity = "warning"
8181

8282
[[checks]]
8383
id = "no-duplicate-root-scm"
84-
description = "No duplicate root .machine_readable/*.scm set (removed by estate wave 2026-06; 6a2/*.a2ml is canonical)"
84+
description = "No duplicate root .machine_readable/*.scm set (removed by estate wave 2026-06; descriptiles/*.a2ml is canonical)"
8585
run = "test -z \"$(ls .machine_readable/*.scm 2>/dev/null)\""
8686
severity = "critical"
8787

8888
[[checks]]
8989
id = "a2ml-parses-as-toml"
90-
description = "Every 6a2 A2ML file parses as TOML"
91-
run = "for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml .machine_readable/6a2/AGENTIC.a2ml .machine_readable/6a2/NEUROSYM.a2ml .machine_readable/6a2/PLAYBOOK.a2ml; do python3 -c \"import tomllib;tomllib.load(open('$f','rb'))\" || exit 1; done"
90+
description = "Every descriptiles A2ML file parses as TOML"
91+
run = "for f in .machine_readable/descriptiles/STATE.a2ml .machine_readable/descriptiles/META.a2ml .machine_readable/descriptiles/ECOSYSTEM.a2ml .machine_readable/descriptiles/AGENTIC.a2ml .machine_readable/descriptiles/NEUROSYM.a2ml .machine_readable/descriptiles/PLAYBOOK.a2ml; do python3 -c \"import tomllib;tomllib.load(open('$f','rb'))\" || exit 1; done"
9292
severity = "critical"
9393

9494
[[checks]]

.machine_readable/6a2/0-AI-MANIFEST.a2ml renamed to .machine_readable/descriptiles/0-AI-MANIFEST.a2ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# AI Manifest for 6a2 Directory
1+
# AI Manifest for descriptiles Directory
22

33
## Purpose
44

5-
This manifest declares the AI-assistant context for the 6a2 machine-readable metadata directory.
5+
This manifest declares the AI-assistant context for the descriptiles machine-readable metadata directory.
66

77
## Canonical Locations
88

.machine_readable/6a2/AGENTIC.a2ml renamed to .machine_readable/descriptiles/AGENTIC.a2ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ recommended = ["read", "edit", "bash", "grep", "glob"]
5151
permissions = "read-all"
5252

5353
[automation-hooks]
54-
# on-enter: Read AI.a2ml, then .machine_readable/6a2/STATE.a2ml
55-
# on-exit: Update .machine_readable/6a2/STATE.a2ml with session outcomes
54+
# on-enter: Read AI.a2ml, then .machine_readable/descriptiles/STATE.a2ml
55+
# on-exit: Update .machine_readable/descriptiles/STATE.a2ml with session outcomes
5656
# on-commit: Run just validate-rsr (if available)
File renamed without changes.
File renamed without changes.

.machine_readable/6a2/PLAYBOOK.a2ml renamed to .machine_readable/descriptiles/PLAYBOOK.a2ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ build-mizar = "just build-mizar"
3131
build-idris = "just build-idris"
3232

3333
[incident-response]
34-
# 1. Check .machine_readable/6a2/STATE.a2ml for current status
34+
# 1. Check .machine_readable/descriptiles/STATE.a2ml for current status
3535
# 2. Review recent commits: git log --oneline -10
3636
# 3. Run `just validate` if available
3737
# 4. Run `just security` for vulnerability audit
3838
# 5. For proof failures: check proofs/<system>/ for unsaved Admitted/sorry
3939

4040
[release-process]
41-
# 1. Update version in .machine_readable/6a2/STATE.a2ml and META.a2ml
41+
# 1. Update version in .machine_readable/descriptiles/STATE.a2ml and META.a2ml
4242
# 2. Resolve all Admitted/sorry entries to target count
4343
# 3. Run `just build-all` to confirm no regressions
4444
# 4. Tag and push to origin (GitHub only)

0 commit comments

Comments
 (0)