|
| 1 | +<!-- |
| 2 | +SPDX-License-Identifier: MPL-2.0 |
| 3 | +SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) |
| 4 | +--> |
| 5 | + |
| 6 | +# Proof Debt — maa-framework |
| 7 | + |
| 8 | +**Schema**: `hyperpolymath/standards` |
| 9 | +[`docs/TRUSTED-BASE-REDUCTION-POLICY.adoc`](https://github.com/hyperpolymath/standards/blob/main/docs/TRUSTED-BASE-REDUCTION-POLICY.adoc) |
| 10 | +— the canonical policy, landed via standards#203. |
| 11 | +**Enforcement**: standards#211 (`scripts/check-trusted-base.sh`). |
| 12 | + |
| 13 | +This file is the schema-conformant per-repo proof-debt index for |
| 14 | +`hyperpolymath/maa-framework`. The broader strategic proof goals across |
| 15 | +the repo live in [`PROOF-NEEDS.md`](../PROOF-NEEDS.md); this file |
| 16 | +enumerates the *specific* soundness-relevant escape hatches that the |
| 17 | +[`check-trusted-base.sh`](https://github.com/hyperpolymath/standards/blob/main/scripts/check-trusted-base.sh) |
| 18 | +CI gate detects in source. |
| 19 | + |
| 20 | +## Schema extension for maa-framework: §(e) VENDORED |
| 21 | + |
| 22 | +maa-framework carries an in-tree copy of the sibling estate repo |
| 23 | +`hyperpolymath/absolute-zero` at `absolute-zero/`. The canonical home of |
| 24 | +those proof files is the standalone `absolute-zero` repo, which has its |
| 25 | +own `docs/proof-debt.md` (seeded under the same standards#203 chain). |
| 26 | + |
| 27 | +To avoid double-counting (and double-discharging) the same markers, we |
| 28 | +extend the schema with a fifth disposition: |
| 29 | + |
| 30 | +| Disposition | Marker | Definition | |
| 31 | +| --- | --- | --- | |
| 32 | +| **(e) VENDORED — estate-sibling** | `// VENDORED: <canonical-repo>` | The marker lives in an in-tree copy of another estate repository. Disposition is **delegated** to the canonical repo's `docs/proof-debt.md`. Closing the marker upstream + re-vendoring is the close-out path. | |
| 33 | + |
| 34 | +`(e)` is **out of scope** for maa-framework's own proof-debt close-out |
| 35 | +budget. The maintainers' obligation is just to keep the vendored copy |
| 36 | +fresh (re-sync periodically) and to flag if a marker disappears upstream |
| 37 | +but persists here. |
| 38 | + |
| 39 | +The `(e)` extension is documented inline here per the standards#203 |
| 40 | +policy's guidance: "extend the schema; document the extension at the |
| 41 | +top of the file as a repo-specific note." If the pattern recurs across |
| 42 | +other estate repos, it will be promoted into the central policy. |
| 43 | + |
| 44 | +## Marker count (2026-05-27) |
| 45 | + |
| 46 | +`scripts/check-trusted-base.sh`-style grep over `*.v / *.lean / *.agda / |
| 47 | +*.idr / *.fst / *.dfy / *.rs / *.hs`: |
| 48 | + |
| 49 | +- **150 syntactic matches across 13 files** (the higher number vs the |
| 50 | + audit's "134" reflects a more inclusive regex; the audit excluded |
| 51 | + some comment/import false positives). |
| 52 | +- **All 13 files** live under `absolute-zero/proofs/{coq,lean4,agda}/`. |
| 53 | +- **All 13 files** are vendored from `hyperpolymath/absolute-zero` (the |
| 54 | + sibling estate repo). File-header comparison + author/license headers |
| 55 | + ("Author: Jonathan D. A. Jewell; Project: Absolute Zero") confirm |
| 56 | + these are estate-owned but with canonical home in the sibling repo. |
| 57 | +- The two trees have drifted (e.g. |
| 58 | + `proofs/coq/lambda/LambdaCNO.v` differs from the sibling-repo copy); |
| 59 | + re-syncing is a follow-up. |
| 60 | + |
| 61 | +Disposition split: |
| 62 | + |
| 63 | +| Disposition | Files | Marker count | Notes | |
| 64 | +| --- | --- | --- | --- | |
| 65 | +| (a) DISCHARGED | 0 | 0 | — | |
| 66 | +| (b) BUDGETED | 0 | 0 | — | |
| 67 | +| (c) NECESSARY AXIOM | 0 | 0 | (See §(e). The axioms in those files are mostly genuine §(c)-class — physical constants, no-cloning, function-extensionality — but the canonical home is the sibling repo.) | |
| 68 | +| (d) DEBT | 0 | 0 | (PROOF-NEEDS.md flags `y_not_cno` `Admitted` as a known gap — that's also (e) since it lives in the vendored subtree.) | |
| 69 | +| **(e) VENDORED — estate-sibling** | **13** | **150** | All under `absolute-zero/`; canonical home `hyperpolymath/absolute-zero`. | |
| 70 | + |
| 71 | +## (a) DISCHARGED in this repo |
| 72 | + |
| 73 | +*(None — maa-framework itself contains no proof-bearing source outside |
| 74 | +the vendored `absolute-zero/` subtree.)* |
| 75 | + |
| 76 | +## (b) BUDGETED — tested with a refutation budget |
| 77 | + |
| 78 | +*(None — same reason as §(a).)* |
| 79 | + |
| 80 | +## (c) NECESSARY AXIOM |
| 81 | + |
| 82 | +*(None — same reason as §(a). Note: the axioms inside `absolute-zero/` |
| 83 | +(`kB_positive`, `temperature_positive`, `no_cloning`, the unitary-gate |
| 84 | +postulates, Shannon-entropy axioms, function-extensionality, etc.) are |
| 85 | +genuine §(c)-class candidates, but their canonical disposition lives in |
| 86 | +the sibling repo. See §(e).)* |
| 87 | + |
| 88 | +## (d) DEBT — actively to be closed |
| 89 | + |
| 90 | +*(None — same reason as §(a). `PROOF-NEEDS.md` notes a known `Admitted` |
| 91 | +on `y_not_cno` in `proofs/coq/lambda/LambdaCNO.v`; that file is in the |
| 92 | +vendored subtree (§(e)), so the discharge happens upstream in |
| 93 | +`hyperpolymath/absolute-zero`.)* |
| 94 | + |
| 95 | +## (e) VENDORED — estate-sibling |
| 96 | + |
| 97 | +All entries below have the form: `<vendored path> — <marker count> — |
| 98 | +<brief disposition rationale>`. The **canonical home** for every entry |
| 99 | +is `hyperpolymath/absolute-zero`; this file does not duplicate that |
| 100 | +repo's proof-debt classification. |
| 101 | + |
| 102 | +### `absolute-zero/proofs/coq/` (7 files, 91 markers) |
| 103 | + |
| 104 | +| File | Markers | Sample disposition (in sibling repo) | |
| 105 | +| --- | ---: | --- | |
| 106 | +| `absolute-zero/proofs/coq/quantum/QuantumCNO.v` | 35 | Mostly §(c): physical constants (`kB_positive`, `temperature_positive`), gate-unitarity (`X_gate_unitary`, `H_gate_unitary`, `CNOT_gate_unitary`), inner-product / `Cexp` algebra, `no_cloning`, `unitary_preserves_entropy`. | |
| 107 | +| `absolute-zero/proofs/coq/physics/StatMech.v` | 17 | §(c): Shannon-entropy non-negativity / maximum / point-zero, `landauer_principle`, `reversible_zero_dissipation`, physical constants. | |
| 108 | +| `absolute-zero/proofs/coq/physics/LandauerDerivation.v` | 14 | §(c): same family as `StatMech.v` plus `second_law`, `isothermal_work_bound`, `entropy_change_erasure`, `cno_preserves_shannon_entropy`. | |
| 109 | +| `absolute-zero/proofs/coq/filesystem/FilesystemCNO.v` | 13 | §(c): syscall semantics (`mkdir_rmdir_inverse`, `create_unlink_inverse`, `read_write_identity`, `chmod_identity`, `chown_identity`, `rename_inverse`, `snapshot_restore_identity`) — POSIX-spec assumptions standard in filesystem formalisations. | |
| 110 | +| `absolute-zero/proofs/coq/common/CNO.v` | 5 | §(c)+(d) mix: `eval_deterministic` (operational-semantics assumption), `cno_decidable` (decidability postulate), `eval_respects_state_eq_left/right` (one has a "TODO: Prove this axiom by induction on eval structure" comment — that's a (d) entry upstream). | |
| 111 | +| `absolute-zero/proofs/coq/lambda/LambdaCNO.v` | 5 | §(c): `y_not_cno` (Y-combinator non-termination — well-established but not derivable in pure Coq), `eta_equivalence`. **Note: PROOF-NEEDS.md targets `y_not_cno` for discharge; close upstream.** | |
| 112 | +| `absolute-zero/proofs/coq/quantum/QuantumMechanicsExact.v` | 4 | §(c): `X_gate_unitary`, `unitary_preserves_entropy`, `no_cloning` (subset of QuantumCNO.v). | |
| 113 | +| `absolute-zero/proofs/coq/category/CNOCategory.v` | 2 | §(c): `hom_functor` (Hom-functor functoriality, standard category-theory result). | |
| 114 | + |
| 115 | +### `absolute-zero/proofs/lean4/` (4 files, 54 markers) |
| 116 | + |
| 117 | +| File | Markers | Sample disposition (in sibling repo) | |
| 118 | +| --- | ---: | --- | |
| 119 | +| `absolute-zero/proofs/lean4/FilesystemCNO.lean` | 22 | §(c): Lean4 port of `FilesystemCNO.v` axioms — same family of syscall-semantics postulates plus `mkdir_test_not_identity`, `mkdir_idempotent`. | |
| 120 | +| `absolute-zero/proofs/lean4/StatMech.lean` | 15 | §(c): Lean4 port of `StatMech.v` plus `programState_eq_eval_fixpoint`, `state_preserving_dist`. | |
| 121 | +| `absolute-zero/proofs/lean4/QuantumCNO.lean` | 14 | §(c): Lean4 port of `QuantumCNO.v`. | |
| 122 | +| `absolute-zero/proofs/lean4/LambdaCNO.lean` | 3 | §(c): `subst_closed_term`, `y_combinator_not_identity`, `eta_equivalence`. | |
| 123 | + |
| 124 | +### `absolute-zero/proofs/agda/` (1 file, 1 marker) |
| 125 | + |
| 126 | +| File | Markers | Disposition | |
| 127 | +| --- | ---: | --- | |
| 128 | +| `absolute-zero/proofs/agda/EchoBridgeCNO.agda` | 1 | False positive on the strict grep — the single hit is `open import Axiom.Extensionality.Propositional`, which is a **module import** (the agda-stdlib path), not a `postulate`. Treat as resolved on close inspection. | |
| 129 | + |
| 130 | +### One outlier on close inspection |
| 131 | + |
| 132 | +The `EchoBridgeCNO.agda` count is a grep false positive |
| 133 | +(`Axiom.Extensionality.Propositional` is the agda-stdlib module path, |
| 134 | +not an axiom declaration). The real "load-bearing escape hatches" count |
| 135 | +across `absolute-zero/` is therefore **149**, not 150. Schema preserves |
| 136 | +the grep number for CI parity with `check-trusted-base.sh`. |
| 137 | + |
| 138 | +## How to update this file |
| 139 | + |
| 140 | +1. Re-run `bash scripts/check-trusted-base.sh .` (from standards#211) |
| 141 | + from the repo root. |
| 142 | +2. If markers in `absolute-zero/` change, the close-out path is to fix |
| 143 | + the canonical `hyperpolymath/absolute-zero` repo and re-sync into |
| 144 | + this subtree. |
| 145 | +3. If a **new** proof-bearing file appears **outside** `absolute-zero/` |
| 146 | + (e.g. under `aletheia/` for the Rust verification pipeline, or under |
| 147 | + `contractiles/`), classify it into §(a)/(b)/(c)/(d) per the canonical |
| 148 | + schema. That would be load-bearing maa-framework debt. |
| 149 | + |
| 150 | +## Open owner question |
| 151 | + |
| 152 | +1. **Vendoring policy**: should the `absolute-zero/` subtree be a git |
| 153 | + submodule (so the canonical proof-debt.md is the single source of |
| 154 | + truth) instead of a vendored copy? Current state is "in-tree copy |
| 155 | + that has drifted from the sibling repo's main branch". Filed for |
| 156 | + maintainer decision; this PR does not resolve it. |
| 157 | +2. **Re-sync cadence**: until the vendoring question is resolved, |
| 158 | + maa-framework's vendored copies should be diffed against the |
| 159 | + sibling repo before each minor release, and the diff annotated in |
| 160 | + `CHANGELOG.adoc`. |
| 161 | + |
| 162 | +## Companion documents |
| 163 | + |
| 164 | +- [`PROOF-NEEDS.md`](../PROOF-NEEDS.md) — the broader strategic proof |
| 165 | + narrative for maa-framework as a whole. |
| 166 | +- `hyperpolymath/standards` |
| 167 | + [`docs/TRUSTED-BASE-REDUCTION-POLICY.adoc`](https://github.com/hyperpolymath/standards/blob/main/docs/TRUSTED-BASE-REDUCTION-POLICY.adoc) |
| 168 | + — the canonical schema. |
| 169 | +- `hyperpolymath/standards` |
| 170 | + [`scripts/check-trusted-base.sh`](https://github.com/hyperpolymath/standards/blob/main/scripts/check-trusted-base.sh) |
| 171 | + — the CI gate. |
| 172 | +- `hyperpolymath/absolute-zero` `docs/proof-debt.md` — the canonical |
| 173 | + per-marker disposition for everything in §(e). |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +Initial seed under standards#203 + standards#211, 2026-05-27. |
0 commit comments