Skip to content

Commit c924eae

Browse files
committed
docs: machine-doc currency sweep + wiki depth (tutorial + maintainer runbook)
Session close-out follow-through (options 2 + 3). Machine-doc currency (option 2): - META.a2ml: add adr-012 recording the ordinal/Buchholz track retirement (D-2026-06-21) + extraction disposition (tracking #263); bump last-updated. - cross-repo-bridge-status.md: mark the Tropical row's long-game ordinal alignment as moving with the ordinal extraction (#263); bump last-updated. Wiki depth (option 3): - wiki/Tutorial-Consuming-Echo.adoc (new): end-user from-the-outside-in walkthrough -- the definition, making/reading an echo, the totality completion A<->SigmaEcho, the no-section boundary, and four real consumers (phronesis, KitchenSpeak, Invariant Path, EchoAggregation). - wiki/Maintainer-Runbook.adoc (new): build cone, identity gates + failure actions, rung-consolidation, machine-doc currency discipline, release checklist, CI lanes + parked failures, branch hygiene. - wiki/Home.adoc: wire both pages into the Start-here index and the maintainer / end-user audience lanes. Refs #263. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PWMMxryCcPrAjJ8tuGvygG
1 parent 20acd2e commit c924eae

5 files changed

Lines changed: 284 additions & 5 deletions

File tree

.machine_readable/6a2/META.a2ml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
[metadata]
1616
project = "echo-types"
17-
last-updated = "2026-06-12"
17+
last-updated = "2026-06-21"
1818

1919
# ============================================================
2020
# Architecture Decision Records
@@ -319,6 +319,38 @@ PRs #161/#162/#163.
319319
module = "proofs/agda/EchoEphapaxBridge.agda"
320320
supersedes = "none"
321321

322+
[[architecture-decisions]]
323+
id = "adr-012"
324+
title = "Ordinal/Buchholz track RETIRED from echo-types; disposition = extraction"
325+
status = "accepted"
326+
date = "2026-06-21"
327+
context = """
328+
The transfinite ordinal / Buchholz / Veblen ascent (target ψ₀(Ω_ω)) outgrew
329+
echo-types. It was PARKED 2026-06-20 (D-2026-06-20: consumer-less after the
330+
Groove cleave resolved to a finite, well-foundedness-only zipper), then
331+
escalated to RETIRED 2026-06-21 (D-2026-06-21). The landed artifact is correct
332+
(--safe --without-K, zero postulates, in the green closure); Echo Core never
333+
depended on it beyond the OmegaMarkers <- Buchholz.Syntax <- EchoOrdinal bridge.
334+
"""
335+
decision = """
336+
No new ordinal rung is opened in echo-types. The disposition is extraction to
337+
its own ordinal-notation repository — the physical cross-repo cut is the
338+
owner's (tracking issue #263). Firewall: OmegaMarkers <- Buchholz.Syntax <-
339+
EchoOrdinal STAY; everything else under proofs/agda/Ordinal/ MOVES. Order-type
340+
fidelity to ψ₀(Ω_ω) (D-2026-06-14) remains an OPEN external problem —
341+
retirement neither closes nor over-claims it.
342+
"""
343+
consequences = """
344+
The [recent-work] / [current-workstream] blocks in STATE.a2ml are preserved as
345+
HISTORY of the 2026-06-05 -> 2026-06-12 ordinal-track arc, not live work.
346+
Hand-off record: docs/echo-types/decisions/ordinal-fidelity-ladder-parked.adoc.
347+
Live tracks: composition (landed); establishment (Pillars A–D+F closed, Pillar
348+
E in-repo complete at the bounded-claim level); variance resolved (#243);
349+
aggregation generalised (#175).
350+
"""
351+
module = "proofs/agda/Ordinal/ (whole subtree except the STAY firewall)"
352+
supersedes = "none"
353+
322354
# ============================================================
323355
# Development practices (relevant subset)
324356
# ============================================================

docs/bridges/cross-repo-bridge-status.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<!-- SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> -->
33
# Cross-Repo Bridge Status
44

5-
Last updated: 2026-06-18.
5+
Last updated: 2026-06-21.
66

77
This file is the single status ledger for echo-type bridge work that
88
touches other repositories.
@@ -14,7 +14,7 @@ touches other repositories.
1414
| CNO bridge (Agda) | `proofs/agda/EchoCNOBridge.agda` | `absolute-zero/proofs/agda/CNO.agda` (direct import) | **Content-bridge done.** Bridge imports `IsCNO`, `empty-is-cno`, `halt-is-cno`, `cno-composition`, `absolute-zero-is-cno`, `seq-comp` from absolute-zero's `CNO.agda` and exhibits `cno-program-echo : (p : Program) → IsCNO p → ProgramEcho p` plus three concrete instances. `CNO.agda` builds clean under `--safe --without-K`, no postulates. | — (closed at content-bridge level; cross-prover theorem-statement alignment is the next row.) |
1515
| CNO core theorem alignment | `EchoCNOBridge` theorem family | `absolute-zero/proofs/coq/common/CNO.v`, `absolute-zero/proofs/lean4/CNO.lean` | Name-by-name correspondence table drafted (see §"CNO Agda↔Coq↔Lean4 correspondence" below). | (1) Coq's `eval` is relational; Agda+Lean are functional. (2) Coq has no `absolute_zero` alias. (3) Coq's single-instruction CNO is `nop_is_cno`; Agda+Lean use `halt_is_cno`. (4) Coq carries 3 axioms (`eval_deterministic`, `eval_respects_state_eq_{left,right}`) that echo-types' `--safe --without-K` policy forbids — porting must re-route through a functional formulation, where they hold by `refl`. (5) `ProgramEcho`/`Echo` itself is currently unilateral (Agda-only). |
1616
| JanusKey bridge | `proofs/agda/EchoJanusBridge.agda` | `januskey/src/abi/Types.idr` (`OpKind`, `IsFileOp`, `IsKeyOp`); `januskey/PROOF-NEEDS.md` | Name-bridge only — Agda side has a *local* 4-variant `JanusOp = Create \| Delete \| Modify \| Move`; canonical Idris2 ABI defines 8-variant `OpKind = Copy \| Move \| Delete \| Modify \| Obliterate \| KeyGen \| KeyRotate \| KeyRevoke` plus `IsFileOp`/`IsKeyOp` predicates. Already drifted (Create vs Copy; missing Obliterate + 3 key ops). | Decision recorded: structural-mirror the Agda enum to januskey's Idris2 `OpKind`; content-bridge deferred until januskey's `PROOF-NEEDS.md` lands content-bearing semantics. Agda↔Idris2 has no FFI, so any content-bridge must run via shared schema or trusted extraction. |
17-
| Tropical alignment | `proofs/agda/EchoTropical.agda` | `tropical-resource-typing/Tropical.thy`, `tropical-resource-typing/TropicalSessionTypes.lean` (and 8 other `.thy` files) | Adjacent repo audit complete (2026-05-20). Repo present at `repos-monorepo/verification-ecosystem/tropical-resource-typing`; remote `hyperpolymath/tropical-resource-typing` active (last push 2026-05-18, language=Isabelle). First alignable theorem pair identified: Agda `⊕-idem` ↔ Isabelle `trop_add_idem` ↔ Lean `add_comm_trop`+`add_assoc_trop`. | Agda cannot import `.thy` or `.lean` directly; alignment is citation-level (statement correspondence with build-side independent proof per language), not import-level. Long-game target: `Tropical_Ordinal_Bridge.thy` ↔ echo-types ordinal track. |
17+
| Tropical alignment | `proofs/agda/EchoTropical.agda` | `tropical-resource-typing/Tropical.thy`, `tropical-resource-typing/TropicalSessionTypes.lean` (and 8 other `.thy` files) | Adjacent repo audit complete (2026-05-20). Repo present at `repos-monorepo/verification-ecosystem/tropical-resource-typing`; remote `hyperpolymath/tropical-resource-typing` active (last push 2026-05-18, language=Isabelle). First alignable theorem pair identified: Agda `⊕-idem` ↔ Isabelle `trop_add_idem` ↔ Lean `add_comm_trop`+`add_assoc_trop`. | Agda cannot import `.thy` or `.lean` directly; alignment is citation-level (statement correspondence with build-side independent proof per language), not import-level. Long-game target: `Tropical_Ordinal_Bridge.thy`the (now-RETIRED, extracting) echo-types ordinal track — that long-game alignment moves with the ordinal extraction (echo-types#263, owner decision D-2026-06-21); it is not an echo-types deliverable. |
1818
| EchoTypes.jl executable mirror | Tier-1+Tier-2 spine + unconditional F5 OFS fragment (modules: `Echo`, `EchoResidue`, `EchoFiberCount`, `EchoThermodynamics`, plus 2026-05-27 v0.2.0 additions: `EchoTotalCompletion`, `EchoOrthogonalFactorizationSystem`, `EchoImageFactorization`, `EchoNoSectionGeneric`, `EchoLossTaxonomy`, `EchoEntropy`, `EchoObservationalEquivalence`) | [`hyperpolymath/EchoTypes.jl`](https://github.com/hyperpolymath/EchoTypes.jl) v0.2.0 (pinned to `e7dded6`); registered in `julia-professional-registry` | **Executable companion shipped.** Mirrors run the finite-domain shadow of the upstream theorems on concrete data and falsify-by-counterexample; the companion makes no proof claims, the Agda here remains the source of truth. R-2026-05-18 retraction surface NOT mirrored; F5 funext-qualified clauses (uniqueness up to iso, diagonal lifting) NOT mirrored — Julia has no funext, the claims would be vacuous. UIP- and truncation-strength upgrades likewise honestly not mirrored. | — (shipped; honest scope holds verbatim from upstream). Future advances on the Tier-1+Tier-2 spine are candidates for new shadows in subsequent EchoTypes.jl releases, but no in-repo CI dependency exists in either direction. |
1919
| Ephapax L3 bridge (Agda↔Coq) | `proofs/agda/EchoEphapaxBridge.agda` | `ephapax/formal/Echo.v` (Coq, 584 lines, 24 `Qed`, zero `Admitted` / zero `Axiom`) — explicit port of `EchoLinear.agda` + `EchoResidue.agda` under a K-free / zero-axiom discipline equivalent to `--safe --without-K` | **Navigability bridge done; content bridge NARROW** (2026-05-30). Two definitional `refl`-renames: `ephapax-L3-weaken = EchoLinear.weaken` and `ephapax-L3-no-section-collapse = EchoResidue.no-section-collapse-to-residue`. Coq headlines `mode_le_prop`, `weaken_collapses_distinction`, `affine_canonical`, `degrade_mode_comp`, `no_section_collapse_to_residue` (line 502-517) each match an Agda counterpart pinned in `Smoke.agda`. Scope: **L3 only** — ephapax-affine has Rust checkers only; L1 has 5 `Axiom` + 11 `Admitted`; L4 has no mechanised theorems yet (cf. ephapax `formal/PRESERVATION-DESIGN.md`, `docs/echo-types/paper.adoc` §"Threats to validity"). | Per-bridge docs `docs/bridges/ECHO-EPHAPAX-BRIDGE.adoc` (CNO-equivalent) not yet authored; tracked as follow-up issue. Full content bridge (round-trip CI between Agda + Coq) would require an Agda mirror of ephapax `formal/Echo.v` and is **not foreclosed** by the NARROW stub. |
2020
| Valence Shell / Ochránce accountable-shell bridge (exploratory, downstream) | Structured-loss vocabulary only — `EchoResidue` / `EchoResidueTaxonomy` / `EchoLossTaxonomy` / `EchoObservationalEquivalence` / `EchoNoSectionGeneric` cited at the reading-aid level. **No bridge module**; nothing added to `All.agda`, `Smoke.agda`, or `EchoCanonicalIdentitySuite.agda`. | Valence Shell (`hyperpolymath/valence-shell`) — shell state transitions, undo/redo, checkpoints, diff/replay. Ochránce (`hyperpolymath/ochrance`) — A2ML manifests, Merkle state commitments, repair/attestation surfaces. | **Exploratory — candidate downstream consumer. Core Affect: NO.** Echo Types' structured-loss semantics may *classify* shell state transitions by residue / loss form (recoverable / constrained / residue-bearing / observationally equivalent / genuinely lost); Ochránce may supply concrete receipt evidence. Downstream application evidence only — not a new foundation. No mechanised cross-repo theorem currently exists. Companion: `docs/bridge-status.md` §7 and `docs/echo-types/explorations/accountable-shell/README.adoc`. | No shared schema and no Agda↔Idris2 / Agda↔Rust import path; the relationship is citation-level only. Echo Types makes **no** claim about Valence Shell / Ochránce implementation correctness, and **no** claim about POSIX, Rust, the Lean→Rust correspondence, secure deletion, GDPR, cryptographic integrity, or attestation. Valence Shell's RMR/RMO vocabulary, if referenced, is downstream application vocabulary and is not adopted into the Echo Types core. |

wiki/Home.adoc

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,14 @@ toc::[]
4444
(constant / no-section) case and the partial (injective / has-section)
4545
case, with the `IsConstantOpener` boundary and its connection to the
4646
affine mode.
47+
48+
| <<Tutorial-Consuming-Echo.adoc#,Tutorial: Consuming Echo>>
49+
| End-user walkthrough: the one definition, making/reading an echo, the
50+
totality completion, the no-section boundary, and four real consumers.
51+
52+
| <<Maintainer-Runbook.adoc#,Maintainer Runbook>>
53+
| Gate-keeping + release runbook: the build cone, the identity gates,
54+
rung-consolidation, machine-doc currency, and the release checklist.
4755
|===
4856

4957
== Who is this for?
@@ -74,7 +82,9 @@ echo-types serves three audiences. Find your lane, then follow the reading order
7482
3. `scripts/kernel-guard.sh` + `.github/workflows/agda.yml` — the CI cone
7583
that must stay green. +
7684
4. `.machine_readable/6a2/STATE.a2ml` (EI-2 record + current state) and
77-
`docs/bridges/cross-repo-bridge-status.md` (downstream ledger).
85+
`docs/bridges/cross-repo-bridge-status.md` (downstream ledger). +
86+
5. <<Maintainer-Runbook.adoc#,Maintainer Runbook>> — the full gate-keeping +
87+
release runbook (build cone, gates, rung-consolidation, release checklist).
7888

7989
| *An end user* +
8090
(wiring Echo into another language)
@@ -85,7 +95,9 @@ echo-types serves three audiences. Find your lane, then follow the reading order
8595
3. *EchoTypes.jl* — the executable Julia shadow; falsifies-by-counterexample
8696
on concrete finite data. +
8797
4. <<Deniability.adoc#,Deniability>> — a worked first-class echo property to
88-
see the shape of a consumer-facing result.
98+
see the shape of a consumer-facing result. +
99+
5. <<Tutorial-Consuming-Echo.adoc#,Tutorial: Consuming Echo>> — the
100+
from-the-outside-in walkthrough (definition → totality → no-section → consumers).
89101
|===
90102

91103
== Canonical sources of truth

wiki/Maintainer-Runbook.adoc

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// SPDX-License-Identifier: CC-BY-SA-4.0
2+
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
= Maintainer Runbook
4+
:toc: macro
5+
:toclevels: 2
6+
7+
[.lead]
8+
For *maintainers* — gate-keeping changes, keeping the proof cone green, keeping
9+
the documentation honest, and cutting releases. Authoritative sources:
10+
`roadmap-gates.adoc`, `CLAUDE.md` (current-rung-state + per-arc DO-NOT-reopen
11+
lists), and `.machine_readable/6a2/`.
12+
13+
toc::[]
14+
15+
== 1. The non-negotiable build cone
16+
17+
Every change must hold the invariant:
18+
19+
[source,sh]
20+
----
21+
agda -i proofs/agda proofs/agda/All.agda # exits 0
22+
agda -i proofs/agda proofs/agda/Smoke.agda # exits 0
23+
sh scripts/kernel-guard.sh # PASS
24+
----
25+
26+
under `--safe --without-K`, with *zero postulates* in the load-bearing tracks
27+
and no escape pragmas (`believe_me`, `assert_total`, `postulate`, `sorry`,
28+
`Admitted`, `unsafeCoerce`). Every headline theorem is pinned in `Smoke.agda`;
29+
every new module is wired into `All.agda` (an orphan module that compiles but
30+
is not in `All.agda` is treated as dead code).
31+
32+
== 2. The identity gates (the falsifiability contract)
33+
34+
The identity claim rests on three gates, each with an explicit *failure action*
35+
(see <<Roadmap.adoc#,Roadmap>> and `roadmap-gates.adoc`):
36+
37+
. *Distinct phenomenon* — echo types name structured loss as distinct from
38+
refinement types / lenses / HoTT fibres / quotients / provenance semirings.
39+
. *Characteristic theorems* — at least two theorems are naturally echo-shaped,
40+
not generic Σ lemmas.
41+
. *Canonical examples* — at least one fully worked example where echo types are
42+
the right explanatory unit.
43+
44+
Gates are *reassessed at every tagged release* — surviving one round grants no
45+
immunity in the next. A failed gate is recorded in `docs/retractions.adoc` (a
46+
new dated `R-`/`F-` entry), *never silently revised*. Retractions are the
47+
mechanism that makes the claim falsifiable; they are not failures of the repo.
48+
49+
== 3. When a proof rung lands — rung-consolidation policy
50+
51+
Per `CLAUDE.md`, each named theorem / iso-shape that lands triggers:
52+
53+
. *Branch housekeeping* — enumerate open remote branches ahead of `main`;
54+
decide landing / superseded / abandoned.
55+
. *Cherry-pick* to a consolidation branch off latest `main`, in dependency
56+
order (conflicts are usually additive, in `Smoke.agda` / `All.agda`).
57+
. *Human docs* — sweep `roadmap.adoc`, `docs/echo-types/composition.md`,
58+
`overview.md`, and the wiki for stale `(Open)` tags; use honest labels
59+
`(Landed)` / `(Partial)` / `(Open)`.
60+
. *Machine docs* — update `CLAUDE.md` current-rung-state and the `6a2/` files
61+
(see Section 4).
62+
. *Verify* — the build cone (Section 1).
63+
. *Fast-forward `main`* and push.
64+
. *Session ledger* — record the rung, the commits folded in, the remaining
65+
open pieces, and the smallest useful next advance.
66+
67+
== 4. Machine-doc currency discipline
68+
69+
When a *track's status changes*, the change must propagate to all of:
70+
71+
* `.machine_readable/6a2/STATE.a2ml` — `[metadata]` phase + the current-workstream
72+
framing (historical blocks are preserved, not deleted; mark them HISTORY).
73+
* `.machine_readable/6a2/META.a2ml` — add an ADR for any architecture-level
74+
decision (status / supersedes per `[development-practices.versioning-of-decisions]`).
75+
* `docs/bridges/cross-repo-bridge-status.md` — the bridge ledger.
76+
* the wiki (<<Home.adoc#,Home>> one-line status + <<Roadmap.adoc#,Roadmap>>).
77+
78+
Worked example: the 2026-06-21 ordinal-track *retirement* (`D-2026-06-21`) was
79+
swept through STATE.a2ml (currency note + phase), META.a2ml (adr-012), the
80+
bridge ledger (Tropical long-game row), and the wiki — keeping human and
81+
machine documentation consistent. Mirror that pattern.
82+
83+
== 5. Release checklist
84+
85+
Versioning is SemVer 2.0.0 (current target `0.1.1`; recipe-extension target
86+
`0.2.0+`). To cut a release:
87+
88+
. [ ] Build cone green (Section 1) on `main`.
89+
. [ ] Identity gates reassessed (Section 2); any failure recorded in
90+
`docs/retractions.adoc`.
91+
. [ ] `CHANGELOG.md` updated; `[Unreleased]` rolled to the version.
92+
. [ ] Machine docs current (Section 4): `6a2/STATE.a2ml`, `META.a2ml`,
93+
bridge ledger, wiki one-line status.
94+
. [ ] Tag minted; mirrors (gitlab, codeberg) consistent.
95+
. [ ] *Then*, author-driven and *not* auto-run: Zenodo DOI, installable library
96+
packaging, outreach. Flag to the owner; do not start unprompted.
97+
98+
== 6. CI lanes and known parked failures
99+
100+
Substantive lanes that must stay green: Agda (`check` + `cold-check`),
101+
`governance/*`, the secret scanners (`gitleaks`/`trufflehog`/`*-secrets`),
102+
CodeQL (`analyze`), and Hypatia. A docs-only change passes the Agda lanes
103+
trivially (no `.agda` touched).
104+
105+
*Parked, do not chase:* `scorecard.yml` / `mirror.yml` `startup_failure` at 0s
106+
is the billing-wall *pattern B* (a structural reusable-workflow failure, not a
107+
Guix/Nix policy failure). Hypatia may post pre-existing repo-level findings
108+
(e.g. a stale Scorecard `TokenPermissionsID` code-scanning alert that cannot
109+
auto-clear while Scorecard is billing-walled); confirm the Hypatia *check
110+
conclusion* (it is usually `success`) before treating a comment as a gate.
111+
112+
== 7. Branch hygiene
113+
114+
Single-`main` policy (Hypatia `GS007`). Remote-branch deletion is *owner /
115+
GitHub-UI only* — agents get HTTP 403 and the MCP has no delete-branch
116+
endpoint, so stale-branch cleanup is flagged in an issue and actioned by the
117+
owner.

0 commit comments

Comments
 (0)