Skip to content

Commit 360ca7c

Browse files
docs: enumerate exploratory truncation postulates in docs/proof-debt.md (#172)
## Summary - Adds `docs/proof-debt.md` enumerating the repo's sole soundness-relevant escape hatch under Disposition (c) NECESSARY AXIOM - Closes the recurring `governance / Trusted-base reduction policy` red check estate-wide (consistently failing on echo-types main + every PR since policy adoption) - No code changes, no new postulates, no `.trusted-base-ignore` additions ## Background Standards #211 estate-wide gate (`governance / Trusted-base reduction policy`) requires every soundness-relevant escape hatch in a proof-bearing repo to be either: - (a) discharged (proof landed → entry removed), - (b) budgeted (`TRUSTED:` inline + entry in `docs/proof-debt.md` §(b)), - (c) necessary axiom (`AXIOM:` inline + entry in §(c)), - (d) debt (deadline + owner in §(d)). echo-types has exactly one such hatch: the four propositional-truncation postulates in `EchoImageFactorizationPropPostulated.agda`. They are already: - explicitly scoped exploratory by the file preamble, - allowed by `hypatia: allow code_safety/agda_postulate`, - exempted in `tools/check-guardrails.sh`, - classified Tier-2 in `docs/echo-types/echo-kernel-note.adoc`. This PR just adds the canonical enumeration so the gate goes green for all future PRs. ## Verification ``` $ bash /tmp/check-trusted-base.sh . [INFO] Found 1 soundness-relevant escape hatch(es). [OK] proof-debt document(s) found: docs/proof-debt.md [OK] All 1 escape hatch(es) are documented. ``` ## Test plan - [x] `bash check-trusted-base.sh` passes locally - [ ] `governance / Trusted-base reduction policy` green on this PR - [ ] Auto-merge SQUASH armed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ed347df commit 360ca7c

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

docs/proof-debt.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Proof debt
2+
3+
Per the estate Trusted-Base Reduction Policy
4+
(hyperpolymath/standards `docs/TRUSTED-BASE-REDUCTION-POLICY.adoc`), every
5+
soundness-relevant escape hatch in this repository is enumerated below
6+
under one of (a) discharged / (b) budgeted / (c) necessary axiom / (d) debt.
7+
8+
## (a) Discharged in this repo
9+
10+
- (none — entries are removed here when proofs land)
11+
12+
## (b) Budgeted — tested with refutation budget
13+
14+
- (none)
15+
16+
## (c) Necessary axiom
17+
18+
- `proofs/agda/EchoImageFactorizationPropPostulated.agda:102` — top-level
19+
`postulate` introducing four propositional-truncation primitives
20+
(`Trunc-pos`, `∣_∣-pos`, `is-prop-pos`, `rec-pos`)
21+
- **Justification**: propositional truncation `∥_∥` cannot be
22+
constructed in plain `--safe --without-K` Agda without HITs /
23+
Cubical. The four postulates encode the standard `TruncInterface ℓ`
24+
record (existence + propositionality + propositional-recursion +
25+
introduction). The construction is **exploratory** — the base
26+
module `EchoImageFactorizationProp.agda` remains `--safe
27+
--without-K` with zero postulates; `…Postulated` exists solely
28+
to demonstrate the interface concretely.
29+
- **Citation**: see `docs/echo-types/echo-kernel-note.adoc` (Tier-2
30+
classification — "Exploratory / postulated"); HoTT Book §3.7
31+
(propositional truncation); agda-stdlib does not currently expose
32+
this in `--safe --without-K`.
33+
- **Guardrail status**: explicitly allow-listed in
34+
`tools/check-guardrails.sh` and in the inline `hypatia: allow`
35+
pragma at the head of the module.
36+
37+
## (d) DEBT — actively to be closed
38+
39+
- (none — the kernel is `--safe --without-K` clean; all
40+
`…Postulated` modules are intentionally scoped to (c).)
41+
42+
## Notes
43+
44+
The `EchoDecorationBridge.agda` module is tagged exploratory in the
45+
guardrail but contains no escape hatches; it is excluded from the
46+
guardrail's "no postulates" rule for naming convenience (the
47+
`-Postulated` suffix would be misleading there). The trusted-base
48+
script does not flag this module because it scans for actual
49+
`^[[:space:]]*postulate` lines.

0 commit comments

Comments
 (0)