You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat+docs: Lane 5 walkthrough 1 + Lane 3 ψα slice + N5 sharpened + Pillar E offline prep + packaging (#122)
## Summary
Four follow-on workstreams from the four design decisions on 2026-05-26.
Stacked onto PR #118's consolidation branch (lands with #118 on the
final squash to main).
**Lane 5 [UNPARKED] — Walkthrough 1 landed**
- `tutorial/region_exit_audit/RegionExitAudit.agda`: ephapax-L3-style
region exit. `LEcho linear` = LiveHandle, `LEcho affine` = AuditReceipt,
`exit = weaken`, `audit-no-recovery = no-section-weaken` aliased
per-region. Honest-bound disclosure (NOT a byte-zeroing claim) opens the
file; matched-negative block at bottom names the four properties NOT
proved.
- Per-walkthrough Smoke + All; tutorial-track aggregator;
`tutorial/README.adoc` unpark status updated.
**Lane 3 [ACTIVE PUSH] — ψ-admissibility rank refinement slice**
- `proofs/agda/Ordinal/Buchholz/RankAdm.agda`: admissibility-aware rank
with α-discriminating bpsi shape `ω-rank-pow ν ⊕ rank-pow α`. Closes 1
of 2 deferred ψ constructors via `rank-mono-<ᵇ⁺-ψα-from-pow`. The
`<ᵇ-ψΩ≤` ν=μ boundary case is *re-classified* from "admissibility" to
"encoding mismatch" (a real structural gap surfaced by the slice); two
design follow-ups documented inline.
- Score in `buchholz-rank-obstruction.adoc`: 9/13 → 10/13.
**Gate 2 N5 falsifier — sharpened & resolved**
- `characteristic/N5Falsifier.agda`: unsolved metas resolved by pinning
the implicit role+grade params at the four `applyRole`/`applyGrade` call
sites. The 2026-05-18 broken status was *inference*, not content (Agda
cannot recover the role from `RoleGEcho r keep = Echo (obs r) true`
because `obs` is not injective). Now in `characteristic/All.agda` CI
green closure.
- `docs/characteristic.adoc` Rev 5b: N5-not-adopted decision UNCHANGED
on the cosmetic-only-marginal-evidence logic.
**Pillar E offline prep — all three sub-tasks**
- `docs/echo-types/pillar-e-offline.adoc`: venue matrix (TYPES first
recommended), Zenodo DOI mint plan, library packaging update, three
outreach drafts (Granule/QTT, choreographic, Linear Haskell).
- `echo-types.agda-lib`: include path extended to repo root (for
tutorial tree).
- `CITATION.cff` + `.zenodo.json`: pre-staged with placeholder DOIs and
ORCID fields left blank (not invented) for author to add post-mint.
## Test plan
- [x] `agda --library=echo-types proofs/agda/All.agda` → exit 0
- [x] `agda --library=echo-types proofs/agda/Smoke.agda` → exit 0
- [x] `agda --library=echo-types proofs/agda/characteristic/All.agda` →
exit 0 (N5Falsifier now included)
- [x] `agda --library=echo-types tutorial/All.agda` → exit 0
- [x] All under `--safe --without-K`, zero postulates / escape pragmas /
funext
- [x] GPG-signed
- [ ] CI: governance + Hypatia + agda jobs green
- [ ] Auto-merge enabled (squash, delete branch)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
"title": "echo-types: a definitionally-grounded, loss-graded reindexing modality (Agda)",
3
+
"upload_type": "software",
4
+
"description": "Constructive Agda formalisation of fibre-based \"structured loss\" types. Defines Echo f y := Σ (x : A) , (f x ≡ y), shows it is definitionally the homotopy fibre (echo↔fib), and develops a loss-graded reindexing modality on top with a pointwise (funext-relative) mediator property, a separating model, and a carrier-parametric abstraction over a fixed grade poset. Under --safe --without-K throughout with zero postulates and a falsifiable retraction discipline.",
Copy file name to clipboardExpand all lines: docs/characteristic.adoc
+20-10Lines changed: 20 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -524,6 +524,8 @@ withdrawn lemma can be left in place as a historical signpost.
524
524
| 4 | Added `EchoLinear.degradeMode-compose` as N4 (per the Revision-3 recommendation; user-explicit). Built `characteristic.RoleGraded` and `choreo-grade-commute` (closes handoff Observation E). 4/4 surviving across three modules. Proposed adding `choreo-grade-commute` as N5 (left to integrator's discretion).
525
525
526
526
| 5 (2026-05-26) | Close-out re-audit per `roadmap.adoc` §Lane 2: re-checks the Revision-4 nominee table against everything that has landed since (EI-2 terminated negative; `characteristic.NonTruncatable` for Q2.1 received-`y` form is PARTIALLY REDUCIBLE; the broken `characteristic.N5Falsifier` is ledgered, not silently dropped). Verdict: 4/4 still surviving, *comfortable* threshold (≥3/4) met by margin of one. Candidate N5 (`choreo-grade-commute`) remains unadopted: the post-Rev-4 EI-2 termination shows its non-trivial content is the same single `(c⊑s, keep≤keep)` cell as before, so nominating it would not strengthen the count beyond cosmetic.
527
+
528
+
| 5b (2026-05-27) | Within-Rev-5 follow-up: `characteristic.N5Falsifier` *no longer broken* — unsolved metas around `EchoChoreo.obs` were resolved by pinning the implicit role and grade parameters at the four `applyRole`/`applyGrade` call sites (the blocker was inference, not content). The module is now in `characteristic/All.agda`'s CI green closure. Audit consequences are *recorded in-line in §"Evidence reviewed" item 3 above*: the SURVIVES verdict for the falsifier exhibit is now mechanised, but the N5-not-adopted decision is unchanged on the same Rev-4/Rev-5 cosmetic-only-marginal-evidence logic.
527
529
|===
528
530
529
531
[[revision-5]]
@@ -568,16 +570,24 @@ comfortable bar?
568
570
bare non-injectivity, carries echo-specific content but is not on
569
571
the Revision-4 nominee table — it is closer to a Gate-3 example
570
572
obligation than a Gate-2 nominee.
571
-
. *`characteristic.N5Falsifier` — KNOWN BROKEN, DELIBERATELY EXCLUDED*
572
-
from `characteristic/All.agda` and from any CI green closure
573
-
(`UnsolvedConstraints` + `UnsolvedMetaVariables`). Status disclosed
574
-
in the module's own broken banner and at
575
-
`docs/echo-types/earn-back-plan.adoc` item C/N5; monitored by an
576
-
expected-failure CI gate. *Crucially: nothing in N5Falsifier is
577
-
cited as evidence in this audit, and its broken status does not
578
-
count against any nominee. The fact that an attempted falsifier
579
-
for N5 (= `choreo-grade-commute`) is not mechanised is exactly why
580
-
N5 itself is not adopted in this revision.*
573
+
. *`characteristic.N5Falsifier` — RESOLVED 2026-05-27, NOW GREEN AND IN CI CLOSURE.*
574
+
Originally KNOWN BROKEN, deliberately excluded
575
+
(`UnsolvedConstraints` + `UnsolvedMetaVariables`). The Lane-2
576
+
N5-sharpening pass on 2026-05-27 closed the unsolved metas by
577
+
making the implicit `r1`/`r2`/`g` parameters of `applyRole` /
578
+
`applyGrade` explicit at the four call sites; the obstacle was
579
+
*inference*, not *content* (Agda cannot recover the role from
580
+
`RoleGEcho r keep = Echo (obs r) true` because `obs` is not
581
+
injective, but supplying the role explicitly resolves it). The
582
+
module is now imported in `characteristic/All.agda` and the
583
+
broken-banner has been updated with the resolution record.
584
+
*Crucially: the resolution does not change the Rev-4 conclusion
585
+
about candidate N5* — the only non-trivial cell is still the
586
+
`(c⊑s, keep≤keep)` Choreo content already credited to N3, so
587
+
adoption would still be cosmetic. The cleaned-up green falsifier
588
+
exhibit *does* tighten the audit story (the SURVIVES verdict is
589
+
now mechanised instead of being a not-mechanised attempt-of-record)
Copy file name to clipboardExpand all lines: docs/echo-types/buchholz-rank-obstruction.adoc
+17-9Lines changed: 17 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -303,22 +303,30 @@ constructors discharge by additive-principal closure.
303
303
| `<ᵇ-ψ+` | ✓ closed | `rank-pow-via-left` plus the IH.
304
304
| `<ᵇ-+Ω` | ✓ closed | `rank-pow-bplus-into-ω-rank-pow` (additive-principal at the target) plus the WfCNF tail bound `y ≤ᵇ x` (caller-provided).
305
305
| `<ᵇ-+ψ` | ✓ closed | Same as `<ᵇ-+Ω` since `rank-pow (bpsi ν _) = ω-rank-pow ν`.
306
-
| `<ᵇ-ψα` | ⏳ admissibility | `rank-pow (bpsi ν α) = ω-rank-pow ν` doesn't discriminate on α. Refining the rank to `ω-rank-pow ν ⊕ rank-pow α` works iff `α ∈ C_ν` (ψ-admissibility predicate); deferred to a follow-on slice.
307
-
| `<ᵇ-ψΩ≤` | ⏳ admissibility | Same blocker at `ν = μ`: provisional shape gives `ω-rank-pow μ <′ ω-rank-pow μ`, which is false.
306
+
| `<ᵇ⁺-ψα` | ✓ closed (Lane 3, 2026-05-26) | `rank-adm (bpsi ν α) = ω-rank-pow ν ⊕ rank-pow α`; `⊕-mono-<-right` closes the shared-Ω-index lex case from `rank-pow α <′ rank-pow β` (which the existing `_<ᵇ⁰_` umbrella discharges). Primitive `rank-mono-<ᵇ⁺-ψα-from-pow` in `Ordinal.Buchholz.RankAdm`.
307
+
| `<ᵇ-ψΩ≤` | ⏳ encoding mismatch | `ν <Ω μ` (strict) case closes by `additive-principal-ω-rank-pow {μ}`. `ν = μ` case STILL OPEN: `ω-rank-pow μ ⊕ rank-pow α <′ ω-rank-pow μ` is impossible under any rank shape with `ω-rank-pow ν ≤ rank-adm (bpsi ν α)`. The classical Buchholz gap `[Ω_μ, Ω_{μ+1})` that admissible ψ_μ(α) lives in is not modelled by `ω-rank-pow ν ⊕ rank-pow α`. Two design follow-ups (lex pair, multiplicative ordinal) documented in `RankAdm.agda` §"<ᵇ-ψΩ≤-still-open"; option A (lex pair) recommended.
308
308
| `<ᵇ-+1` | ⏳ joint-bplus | `rank-pow (bplus z₁ z₂)` is not additive principal in general (it's a sum of additive principals). Discharging requires a coarser bound (e.g., dominate by `ω-rank-pow` of the leading subterm's Ω-index) or a structurally richer rank.
309
309
| `<ᵇ-0-+` | ✓ closed* | `rank-pow bzero = oz`, and `rank-pow (bplus x y) ≥′ oz` strictly when *either* `x` or `y` is non-`bzero` and the term is WfCNF. The degenerate `bplus bzero bzero` is excluded by WfCNF (atomic-right ≤ left forces both `bzero` and then the sum reduces to a `bzero`-shaped equivalent that doesn't pattern-match as a `bplus` under CNF normalisation — covered as a side-condition).
310
310
|===
311
311
312
-
*Score: 9/13 constructors closed; 3 deferred under explicit blockers;
313
-
1 closed conditionally with documented side condition.*
312
+
*Score: 10/13 constructors closed (9 under the original `rank-pow`
313
+
umbrella + 1 under the new `rank-adm` slice); 2 deferred under
314
+
explicit blockers; 1 closed conditionally with documented side
315
+
condition. The Lane-3 active-push slice on 2026-05-26 advanced the
316
+
score by 1 (`<ᵇ⁺-ψα`) and re-classified `<ᵇ-ψΩ≤` from "admissibility"
317
+
to "encoding mismatch" with two named follow-up routes.*
0 commit comments