|
| 1 | +; SPDX-License-Identifier: PMPL-1.0-or-later |
| 2 | +; SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) |
| 3 | +; |
| 4 | +; ============================================================ |
| 5 | +; STATUS: SECONDARY / SHORT-FORM COMPANION |
| 6 | +; ============================================================ |
| 7 | +; |
| 8 | +; CANONICAL STATE FILE: ../../STATE.scm (top of audit-output/) |
| 9 | +; That file uses the (define-module ...) + (define ...) shape |
| 10 | +; matching standards/playbook-a2ml/spec/PLAYBOOK-FORMAT-SPEC.adoc. |
| 11 | +; It is the authoritative state record. |
| 12 | +; |
| 13 | +; This file (STATE.a2ml) uses a different surface shape (atomic |
| 14 | +; top-level (state ...) form). Both files capture overlapping |
| 15 | +; content; THIS file's unique contribution is the |
| 16 | +; (lifecycle (on-enter ...) (on-exit ...)) block at the end |
| 17 | +; — operational session-handover procedure. The (state ...) body |
| 18 | +; itself duplicates content in STATE.scm and should be considered |
| 19 | +; SECONDARY: if STATE.scm and STATE.a2ml conflict, STATE.scm wins. |
| 20 | +; |
| 21 | +; To migrate to a single canonical surface in a future session, |
| 22 | +; the (lifecycle ...) block should be moved into PLAYBOOK.scm |
| 23 | +; (a sibling of STATE.scm, in the (define ...) module shape) and |
| 24 | +; this file then deleted. That migration is parked, not blocking. |
| 25 | +; |
| 26 | +; Reading order for a new session entering audit-output/: |
| 27 | +; 1. INDEX.adoc ← map of which fact lives where |
| 28 | +; 2. STATE.scm ← current state (authoritative) |
| 29 | +; 3. META.scm ← architecture decisions (permanent) |
| 30 | +; 4. AGENTIC.scm ← gating rules (do not bypass) |
| 31 | +; 5. (other 6a2 files as needed) |
| 32 | +; 6. THIS file ← only for the lifecycle block |
| 33 | +; |
| 34 | +; ============================================================ |
| 35 | + |
| 36 | +; SPDX-License-Identifier: PMPL-1.0-or-later |
| 37 | +; SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) |
| 38 | +; |
| 39 | +; STATE.a2ml — current authoritative state of echo-types integration work |
| 40 | +; Media-Type: application/a2ml |
| 41 | +; Read by AI agents on session entry; updated on session exit. |
| 42 | +; |
| 43 | +; Companion files in this directory: |
| 44 | +; META.a2ml — what's been decided, what's permanent, what's parked |
| 45 | +; ECOSYSTEM.a2ml — relationships to other hyperpolymath repos |
| 46 | + |
| 47 | +(state |
| 48 | + (identity |
| 49 | + (name "echo-types") |
| 50 | + (full-name "Echo Types: structured loss under non-injective computation") |
| 51 | + (version "0.1.0+integration-pending") |
| 52 | + (target-version "0.1.1") |
| 53 | + (repo "https://github.com/hyperpolymath/echo-types") |
| 54 | + (mirrors ("gitlab.com/hyperpolymath/echo-types" "codeberg.org/hyperpolymath/echo-types")) |
| 55 | + (license "PMPL-1.0-or-later") |
| 56 | + (author "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>")) |
| 57 | + |
| 58 | + ;; =================================================================== |
| 59 | + ;; CURRENT STATUS (as of last session exit) |
| 60 | + ;; =================================================================== |
| 61 | + (status |
| 62 | + (phase "integration-ready, not yet pushed") |
| 63 | + (branch-pending "integrate-parallel-work") |
| 64 | + (commits-staged 7) |
| 65 | + (commits-pushed 0) |
| 66 | + (work-location "/mnt/user-data/outputs/audit-output/") |
| 67 | + (next-action "review patches, apply commits 1-7, push to GitHub origin")) |
| 68 | + |
| 69 | + ;; =================================================================== |
| 70 | + ;; EI-2 — TERMINATED |
| 71 | + ;; =================================================================== |
| 72 | + ;; The integration robustness investigation. Closed negatively via |
| 73 | + ;; PATH B. Do NOT reopen under any framing without explicit prior |
| 74 | + ;; review of the closure record below. |
| 75 | + (ei-2 |
| 76 | + (status terminated) |
| 77 | + (verdict negative) |
| 78 | + (route "PATH B") |
| 79 | + (route-rationale |
| 80 | + "Full 2D iff theorem not formalisable in safe Agda without postulates |
| 81 | + (decidable equality, F-collapses axioms, extensionality). Per-axis |
| 82 | + halves proved in RecipeTheorem.agda; concrete halves in |
| 83 | + RecipeNonTriviality.agda; structural argument that even two |
| 84 | + non-loss-only axes don't help in RoleRole.agda. Empirical evidence |
| 85 | + overwhelming across seven data points.") |
| 86 | + |
| 87 | + (finding |
| 88 | + "The integration recipe with the existing five named axes does NOT |
| 89 | + carry substantive simultaneous cross-axis content. Distinctness |
| 90 | + against neighbour frameworks rests on the truncation argument |
| 91 | + (echo-not-prop family in proofs/agda/examples/) and the 2-cell |
| 92 | + argument (Sophisticated submodules of EchoVsQuotient.agda and |
| 93 | + EchoVsGalois.agda), NOT on the integration argument.") |
| 94 | + |
| 95 | + (data-points-evidence |
| 96 | + ((construction "RoleGraded") (axes "Role × Grade") |
| 97 | + (cells 18) (non-trivial 1) (note "1 NLO axis")) |
| 98 | + ((construction "RoleMode") (axes "Role × Mode") |
| 99 | + (cells 9) (non-trivial 1) (note "1 NLO axis")) |
| 100 | + ((construction "ModeGraded") (axes "Mode × Grade") |
| 101 | + (cells 18) (non-trivial 0) (note "0 NLO axes")) |
| 102 | + ((construction "RoleModeGrade @ 3D pairwise") (axes "R×M, G free") |
| 103 | + (cells 27) (non-trivial 1) (note "1 NLO axis")) |
| 104 | + ((construction "RoleModeGrade @ 3D pairwise") (axes "R×G, M free") |
| 105 | + (cells 36) (non-trivial 1) (note "1 NLO axis")) |
| 106 | + ((construction "RoleModeGrade @ 3D pairwise") (axes "M×G, R free") |
| 107 | + (cells 36) (non-trivial 0) (note "0 NLO axes; preserves 2D result")) |
| 108 | + ((construction "RoleModeGrade triple") (axes "R×M×G") |
| 109 | + (cells 54) (non-trivial 1) (note "1 NLO axis")) |
| 110 | + ((construction "RoleRole independent-product") (axes "Role × Role") |
| 111 | + (cells 9) (non-trivial 0) |
| 112 | + (note "Both NLO; trivial by categorical product structure")) |
| 113 | + ((construction "RoleRole shared-state") (axes "Role × Role") |
| 114 | + (cells "—") (non-trivial "—") |
| 115 | + (note "Per-axis transport not uniformly definable; recipe doesn't apply"))) |
| 116 | + |
| 117 | + (key-insight |
| 118 | + "Non-loss-only criterion is NECESSARY but NOT SUFFICIENT. Even two |
| 119 | + non-loss-only axes paired together produce trivial coordinate-product |
| 120 | + commutation or break per-axis transport. The recipe is useful as |
| 121 | + organising vocabulary; it is not the locus of distinctness.") |
| 122 | + |
| 123 | + (closure-cascade-applied-to |
| 124 | + ("docs/gate-1-distinct-phenomenon.adoc — § The Gate #1 claim narrowed" |
| 125 | + "docs/gate-2-handoff.adoc — § Observation G updated with NOTE block" |
| 126 | + "roadmap-gates.adoc — § Gate 1 Claim narrowed" |
| 127 | + "docs/adjacency/README.adoc — EI-2 cascade note added" |
| 128 | + "README.md — integration-bridge bullet rewritten" |
| 129 | + "docs/next-questions.adoc — moved from open to closed section")) |
| 130 | + |
| 131 | + (formal-artefacts-in |
| 132 | + ("proofs/agda/characteristic/RoleGraded.agda" |
| 133 | + "proofs/agda/characteristic/RoleMode.agda" |
| 134 | + "proofs/agda/characteristic/ModeGraded.agda ; canonical, with trailing 'd'" |
| 135 | + "proofs/agda/characteristic/RoleModeGrade.agda" |
| 136 | + "proofs/agda/characteristic/RoleRole.agda" |
| 137 | + "proofs/agda/characteristic/InteractionTest.agda" |
| 138 | + "proofs/agda/characteristic/RecipeSpec.agda" |
| 139 | + "proofs/agda/characteristic/RecipeTheorem.agda" |
| 140 | + "proofs/agda/characteristic/RecipeNonTriviality.agda" |
| 141 | + "proofs/agda/characteristic/ChoreoInjective.agda")) |
| 142 | + |
| 143 | + (working-record "docs/EI2_REPORT.adoc") |
| 144 | + |
| 145 | + (superseded-drafts |
| 146 | + ((file "docs/EI2_READING1_PATCHES.adoc") |
| 147 | + (reason "Drafted before RoleRole.agda findings; assumed simple gate-1 weakening sufficient")) |
| 148 | + ((file "docs/EI2_READING2_PATCHES.adoc") |
| 149 | + (reason "Drafted before RoleRole.agda findings; assumed NLO sufficient as recipe precondition")) |
| 150 | + ((file "docs/EI2_READINGS_COMPARISON.adoc") |
| 151 | + (reason "Decision aid; both readings refuted by stronger negative finding")) |
| 152 | + (note "Files retained as historical record; banners on each marking SUPERSEDED.")) |
| 153 | + |
| 154 | + (do-not |
| 155 | + ("Reopen EI-2 under any of these framings:" |
| 156 | + " - 'recipe non-triviality might hold for axis combinations we haven't tried'" |
| 157 | + " - 'NLO is the precondition' (ruled out by RoleRole)" |
| 158 | + " - 'gate-1 distinctness still rests on integration' (rerouted)" |
| 159 | + "Re-derive the seven data points (formalised, typechecked)" |
| 160 | + "Add a third standalone ModeGrade variant (canonical is ModeGraded.agda with trailing d)" |
| 161 | + "Pursue the full 2D iff theorem in safe Agda (proved infeasible without postulates)"))) |
| 162 | + |
| 163 | + ;; =================================================================== |
| 164 | + ;; INTEGRATION COMMIT SEQUENCE — 7 COMMITS, NOT YET PUSHED |
| 165 | + ;; =================================================================== |
| 166 | + (integration |
| 167 | + (commits-doc "INTEGRATION_COMMITS.adoc") |
| 168 | + (commits |
| 169 | + ((seq 1) (name "infra") |
| 170 | + (purpose "cross-platform support and hub-and-spoke mirroring") |
| 171 | + (status staged)) |
| 172 | + ((seq 2) (name "gate-1: distinct-phenomenon argument and falsification scaffolds") |
| 173 | + (status staged)) |
| 174 | + ((seq 3) (name "docs(adjacency): per-neighbour distinctness notes") |
| 175 | + (status staged)) |
| 176 | + ((seq 4) (name "gate-2: characteristic theorem family audit, revision 4") |
| 177 | + (status staged)) |
| 178 | + ((seq 5) (name "gate-3: three canonical examples — tropical, epistemic, linear") |
| 179 | + (status staged)) |
| 180 | + ((seq 6) (name "integrate: polish from cross-lane audit + EI-2 obligation") |
| 181 | + (status staged)) |
| 182 | + ((seq 7) (name "EI-2: terminate negatively via PATH B; narrow gate-1 distinctness load") |
| 183 | + (status staged)))) |
| 184 | + |
| 185 | + ;; =================================================================== |
| 186 | + ;; OPEN QUESTIONS REMAINING (from next-questions.adoc) |
| 187 | + ;; =================================================================== |
| 188 | + ;; These are the live open work items after the 7-commit integration |
| 189 | + ;; lands. None of them is EI-2; EI-2 is terminated. |
| 190 | + (open-questions |
| 191 | + ((id "Q1.3 / T3") (gate 1) |
| 192 | + (name "Informativeness collapse — gate-1's third falsification test") |
| 193 | + (notes "Now better-targeted post-RoleGraded: ask whether the role-or-grade axis is derivable from the other plus a forgetful functor")) |
| 194 | + |
| 195 | + ((id "Q2.1") (gate 2) |
| 196 | + (name "Generalisation of echo-not-prop") |
| 197 | + (notes "n=2 special-case proofs generalise to: for non-injective f with at least two distinct preimages of y, is-prop (Echo f y) → ⊥. Closing this also discharges the truncation-argument gap for refinement, IFC, provenance adjacency notes.")) |
| 198 | + |
| 199 | + ((id "Q2.4") (gate 2) |
| 200 | + (name "Falsifier attempts for the four surviving gate-2 nominees") |
| 201 | + (notes "Each surviving nominee has an unattempted falsifier; worth attempting at least one to harden the case beyond 'no successful reduction has been attempted'")) |
| 202 | + |
| 203 | + ((id "Q2.3") (gate 2) |
| 204 | + (name "Adopt RoleGraded.choreo-grade-commute as gate-2 nominee N5") |
| 205 | + (notes "Audit doc currently flags as candidate but does not adopt; adoption pushes the count to 5-of-5 across four constructions")) |
| 206 | + |
| 207 | + ((id "QC.1") (cross-cutting) |
| 208 | + (name "Promote integration audit findings into adjacency notes — done in commit 3") |
| 209 | + (status closed-by-commit-3)) |
| 210 | + |
| 211 | + ((id "v0.2-recipe-extension") (parked) |
| 212 | + (name "Recipe extension: coupled state across axes OR multiple live positions per axis") |
| 213 | + (notes "Genuinely separate work from EI-2. The substantive question shifts to: does the extended recipe match anything in modal type theories, HoTT bundles, or refinement-type families, or is it genuinely echo-specific? Park for v0.2; do not conflate with EI-2.")) |
| 214 | + |
| 215 | + ((id "Q3.x-prov") (gate 3) |
| 216 | + (name "Additional bridge-axis examples — provenance, IFC, refinement") |
| 217 | + (notes "Gate-3 dropped DigestEcho and ChoreographyProjection honestly; differential privacy and lossy compression deferred due to safe-Agda real-number formalisation cost"))) |
| 218 | + |
| 219 | + ;; =================================================================== |
| 220 | + ;; KNOWN NAMING TRAPS — READ BEFORE TOUCHING THE REPO |
| 221 | + ;; =================================================================== |
| 222 | + (naming-traps |
| 223 | + ((trap "ModeGraded vs ModeGrade") |
| 224 | + (canonical "characteristic.ModeGraded — with trailing 'd'") |
| 225 | + (trap-detail "An earlier session created characteristic.ModeGrade (no 'd'). It was a duplicate of ModeGraded with the same content. ModeGrade has been deleted; ModeGraded is canonical. Match the project naming style (RoleGraded, RoleModeGrade).")) |
| 226 | + |
| 227 | + ((trap "EI-1 vs EI-2 confusion") |
| 228 | + (canonical "EI-1 = closed (protocol, narrow); EI-2 = closed (negatively, PATH B)") |
| 229 | + (trap-detail "Both are closed but for different reasons. EI-1 is protocol-closed (the Observation E test passes) but substantively narrow (1 of 18 non-trivial cells). EI-2 closes the substantive question with negative verdict. Never describe either as 'open' in new docs.")) |
| 230 | + |
| 231 | + ((trap "READING 1 / READING 2 patches") |
| 232 | + (canonical "Both superseded; do not apply") |
| 233 | + (trap-detail "EI2_READING1_PATCHES.adoc and EI2_READING2_PATCHES.adoc were drafted before RoleRole.agda's findings. Both assumed something the data refutes. Banners on each file mark SUPERSEDED. Do not regenerate or reapply them."))) |
| 234 | + |
| 235 | + ;; =================================================================== |
| 236 | + ;; SESSION LIFECYCLE |
| 237 | + ;; =================================================================== |
| 238 | + (lifecycle |
| 239 | + (on-enter |
| 240 | + (step "Read THIS file (.machine_readable/6a2/STATE.a2ml) first") |
| 241 | + (step "Read META.a2ml for permanent decisions") |
| 242 | + (step "Check current-status.phase before starting any work") |
| 243 | + (step "If user asks about EI-2: state TERMINATED; refer to ei-2 block above")) |
| 244 | + (on-exit |
| 245 | + (step "Update status.phase if changed") |
| 246 | + (step "Update commits-pushed if any commits actually pushed") |
| 247 | + (step "If new questions opened, add to open-questions block") |
| 248 | + (step "If naming-traps encountered, add to naming-traps block") |
| 249 | + (step "Never remove the ei-2 block; it is permanent record"))) |
| 250 | + |
| 251 | + (format-meta |
| 252 | + (version "1.0.0") |
| 253 | + (media-type "application/a2ml") |
| 254 | + (created "2026-04-29") |
| 255 | + (last-updated "2026-04-29") |
| 256 | + (last-session-summary |
| 257 | + "Integration commits 1-7 staged; EI-2 terminated negatively via PATH B; |
| 258 | + gate-1 distinctness rerouted to truncation + 2-cell arguments; |
| 259 | + documentation cascade applied across five locations; |
| 260 | + 6a2 manifest files created.") |
| 261 | + (maintained-by "Jonathan D.A. Jewell / hyperpolymath") |
| 262 | + (protocol "https://github.com/hyperpolymath/0-ai-gatekeeper-protocol"))) |
0 commit comments