Commit 70b03e8
## Summary
**Closes #126** with the NARROW recommendation from the bg-agent
proposal at `/tmp/ephapax-bridge-proposal.md` §4:
- **Companion** to #161 (which closes #125 + #127 + #132).
- **Sets up** #128 umbrella close: once this and #161 merge, every
child issue (#125 / #126 / #127 / #132) is discharged.
Ships a thin import-time documentation module that catalogues the
ephapax↔echo-types L3 correspondence without re-mechanising it. Two
definitional `refl`-renames pin the load-bearing Agda symbols under
`ephapax-L3-` prefixed names so `MAP.adoc`'s "Directions" navigation
has an ephapax row and a silent upstream rename trips `Smoke.agda`.
The cross-repo content correspondence is already discharged by
`coqc` on the ephapax side (`formal/Echo.v`, 584 lines, 24 `Qed`,
zero `Admitted` / zero `Axiom` — explicit Coq port of
`EchoLinear.agda` + `EchoResidue.agda` under a K-free / zero-axiom
discipline equivalent to `--safe --without-K`). **No Lane 4 CI
dependency.**
## Files
| File | Change |
|---|---|
| `proofs/agda/EchoEphapaxBridge.agda` | **NEW** ~45 lines. Module
docstring catalogues 5 Coq headlines (`mode_le_prop`,
`weaken_collapses_distinction`, `affine_canonical`, `degrade_mode_comp`,
`no_section_collapse_to_residue`); two definitional `refl`-renames
`ephapax-L3-weaken = weaken` + `ephapax-L3-no-section-collapse =
no-section-collapse-to-residue`. |
| `proofs/agda/All.agda` | One line: wires `EchoEphapaxBridge` between
`EchoJanusBridge` and `Dyadic`. |
| `proofs/agda/Smoke.agda` | Pins `ephapax-L3-weaken` +
`ephapax-L3-no-section-collapse` so silent upstream renames in
`EchoLinear` / `EchoResidue` trip CI fast. Comment block flags ephapax
cross-repo nature. |
| `docs/echo-types/MAP.adoc` | New `=== Ephapax L3 — linear/affine
modality bridge \`[REAL]\`` subsection in §Directions between JanusKey
and Tropical/Dyadic. Scope explicit: **L3 only** — ephapax-affine and
L1/L2/L4 are NOT mechanised to the same standard. |
## Why NARROW (not YES or NO)
Per the bg-agent verdict:
- **YES (full content bridge)** would require ephapax to add an Agda
dependency it doesn't currently have (ephapax's stack is Coq +
Idris2 + Rust). Definitional redundancy: by construction the
bridge collapses to `Echo f y := Σ A (f x ≡ y), QED`.
- **NO (decline)** is right about content but wrong about
navigability. `EchoCNOBridge.agda` + `EchoJanusBridge.agda` both
exist for navigability reasons independent of content depth.
Declining would mean `MAP.adoc` has no ephapax row, despite
ephapax being more tightly mechanised than several already-bridged
targets.
- **NARROW** captures the trade-off: ship a thin pointer without
re-mechanising. Maintenance cost is near-zero (renames are `refl`;
upstream renames break `Smoke.agda` and surface immediately). The
stub does not foreclose a future full content bridge.
## Local verification
- `agda -i proofs/agda proofs/agda/EchoEphapaxBridge.agda` — clean.
- `agda -i proofs/agda proofs/agda/Smoke.agda` — clean, exit 0.
- `agda -i proofs/agda proofs/agda/All.agda` — clean, exit 0.
- `bash tools/check-guardrails.sh proofs/agda` — 160 modules pass
(`--safe --without-K`, no escape pragmas, no postulates, with the
two existing exploratory exemptions).
## Honest-scope discipline
The module docstring + MAP.adoc subsection both scope the
corroboration claim **to L3 only** per the MEMORY hook
`feedback_ephapax_affine_proofs_not_done.md` and the R-2026-05-18
retraction surface. Ephapax-affine has Rust checkers only; L1 has 5
`Axiom` + 11 `Admitted`; L4 has no mechanised theorems yet. L3 is
the single layer where the upstream-Agda correspondence is both
literal (file mirrors files) and fully discharged.
## Test plan
- [x] New file typechecks under `--safe --without-K` locally.
- [x] `Smoke.agda` typechecks with new pins, exit 0.
- [x] `All.agda` typechecks with new module wired in, exit 0.
- [x] Foundation guardrail passes (160 modules, no new exemptions).
- [ ] CI: Agda + cold-check + characteristic + examples lanes all
green on this branch.
- [ ] Auto-merge on green.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 3a38c6c commit 70b03e8
5 files changed
Lines changed: 85 additions & 0 deletions
File tree
- docs/echo-types
- proofs/agda
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
289 | 289 | | |
290 | 290 | | |
291 | 291 | | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
292 | 319 | | |
293 | 320 | | |
294 | 321 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| 82 | + | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
956 | 956 | | |
957 | 957 | | |
958 | 958 | | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
959 | 970 | | |
960 | 971 | | |
961 | 972 | | |
| |||
0 commit comments