|
| 1 | +// SPDX-License-Identifier: MPL-2.0 |
| 2 | +// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | += Echo-Additive Experimental — Decision Log |
| 4 | +:revdate: 2026-06-14 |
| 5 | + |
| 6 | +Decision log for the `experimental/echo-additive/` subtree. Each entry records |
| 7 | +a named, dated, author-authorised decision with its rationale and downstream |
| 8 | +constraints. Entries are append-only. Superseding decisions reference the entry |
| 9 | +they override. |
| 10 | + |
| 11 | +[IMPORTANT] |
| 12 | +==== |
| 13 | +This log holds decisions, not findings. Findings (what the Agda proves or fails to |
| 14 | +prove) live in STATE.adoc. Decisions (what to attempt, what to stop, what to merge) |
| 15 | +live here. A finding without a corresponding decision is not authorization to merge. |
| 16 | +==== |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +== D-2026-06-14-R1: Comparative protocol — primary and secondary lines |
| 21 | + |
| 22 | +*Date:* 2026-06-14 + |
| 23 | +*Author authorization:* explicit, in-session + |
| 24 | +*Supersedes:* none (first decision for this tree) |
| 25 | + |
| 26 | +=== Decision |
| 27 | + |
| 28 | +R1 is resolved as a *comparative protocol*, not as a choice of one reading over the |
| 29 | +other. Both the monadic and comonadic readings of the grade composition map are to |
| 30 | +be constructed in parallel in the experimental tree. Neither is declared the winner |
| 31 | +before construction. |
| 32 | + |
| 33 | +=== Rationale |
| 34 | + |
| 35 | +The variance analysis at R1 established: |
| 36 | + |
| 37 | +* The combining direction of Echo-comp-iso has monadic variance (μ direction; |
| 38 | + `D_r(D_s A) → D_{r+s} A`). Building this gives the primary line. |
| 39 | +* The splitting direction has comonadic variance (δ direction; |
| 40 | + `D_{r+s} A → D_r(D_s A)`). Building this gives the secondary line. |
| 41 | + |
| 42 | +The question of whether *recoverability* — given a lossy output, what inputs were |
| 43 | +possible? — lives naturally in the monadic direction, the comonadic direction, or |
| 44 | +genuinely requires both, cannot be settled by structural analysis alone. It requires |
| 45 | +attempting the laws in `--safe --without-K` Agda and seeing what can and cannot be |
| 46 | +discharged. Choosing before construction would discard potentially live evidence. |
| 47 | + |
| 48 | +=== Three enforcement specifics |
| 49 | + |
| 50 | +[cols="1,4", options="header"] |
| 51 | +|=== |
| 52 | +| Enforcement specific | Binding constraint |
| 53 | + |
| 54 | +| *WHERE* |
| 55 | +| Scope is `proofs/agda/experimental/echo-additive/` exclusively. Shipped modules |
| 56 | +(`EchoGraded.agda`, `EchoGradedComonad.agda`, `EchoTruncation.agda`) are read-only. |
| 57 | +Nothing in shipped code imports from experimental/. R-2026-05-18 retraction stands. |
| 58 | + |
| 59 | +| *WHAT HOLDS YOU (the gate)* |
| 60 | +| Nothing from experimental/ goes to main — no merge, no claim, no retraction |
| 61 | +reversal — until one of the two terminating conditions is met AND the author |
| 62 | +explicitly authorizes the merge. "Both lines compile" alone does not satisfy the gate. |
| 63 | +Author authorization alone does not satisfy the gate. Both required together. |
| 64 | + |
| 65 | +| *LINE-SEPARATION FIREWALL* |
| 66 | +| Primary (`GradedMonad.agda`) and secondary (`GradedComonad.agda`) are separate files. |
| 67 | +Neither imports the other during the law-discharge phase. No postulates anywhere in |
| 68 | +experimental/ (a postulate in one line corrupts the comparison). Synthesis happens in |
| 69 | +a dedicated file created only after both lines have been independently evaluated. |
| 70 | +|=== |
| 71 | + |
| 72 | +=== Terminating condition |
| 73 | + |
| 74 | +[cols="1,4", options="header"] |
| 75 | +|=== |
| 76 | +| Case | Consequence |
| 77 | + |
| 78 | +| *(i)* One reading discharges its laws; the other provably cannot (park point reached |
| 79 | + with named obstruction and no postulate escape) |
| 80 | +| The discharging reading is the correct structural home. The other is parked with the |
| 81 | + named obstruction. Author decides whether to proceed to R4+ on the surviving line. |
| 82 | + |
| 83 | +| *(ii)* Both readings discharge their laws |
| 84 | +| Proceed to adjunction proof: construct F_r, U_r, and the witness `F_r ⊣ U_r` |
| 85 | + in `--safe --without-K` Agda. The adjunction is *not assumed* from the law |
| 86 | + discharge — it must be proven as a separate construction. Only after the witness |
| 87 | + compiles does this satisfy (ii). If the adjunction proof itself fails (postulate |
| 88 | + needed), document the obstruction explicitly and park. Report to author; do not |
| 89 | + auto-merge. |
| 90 | +|=== |
| 91 | + |
| 92 | +=== Files in scope at decision point |
| 93 | + |
| 94 | +* `proofs/agda/experimental/echo-additive/Grade.agda` — R0 grade semiring, exit 0. |
| 95 | +* `proofs/agda/experimental/echo-additive/VarianceGate.agda` — R1 variance frame, |
| 96 | + §3 records this decision. |
| 97 | +* `experimental/echo-additive/STATE.adoc` — running state; records the protocol, |
| 98 | + enforcement specifics, and terminating condition in detail. |
| 99 | +* `experimental/echo-additive/DECISIONS.adoc` — this file. |
| 100 | + |
| 101 | +=== Next action (author-gated) |
| 102 | + |
| 103 | +R2 (per-grade `degrade` coherence in ℕ∪{∞}) is the next rung. Await author return |
| 104 | +before beginning R2 or R3. |
0 commit comments