Repository navigation
audit(echidna): reconcile ledger topology; land receipt/warrant semantics at Grade 3 #122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
d292b6b
6c98c2e
ceabd82
ca4bca3
a0e6c2d
f9f20c9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -36,3 +36,35 @@ Keep another format only where a consumer the owner does not control | |
| would break (for example a tool that rewrites the file). Record why | ||
| beside the file. Tools the owner controls are changed to handle the | ||
| standard instead of being exempted. | ||
|
|
||
| ### Proofing (normative: `3-practice/PROOF-POLICY.adoc`) | ||
|
|
||
| The estate proof and verification policy is normative for this | ||
| repository; this section is only a pointer and a short mapping. Read that | ||
| file, not this summary. | ||
|
|
||
| | Obligation | Verifier | | ||
| |------------|----------| | ||
| | First-party Rust (`burrower-core`, `-cli`, `-wasm`) | Creusot | | ||
| | APIs, ABIs, wire formats, engineering properties | Idris2 | | ||
| | Theory (anything true of any implementation) | Agda, rechecked in Rocq and Lean | | ||
|
|
||
| - Canonical Agda invocation, in recipes and CI alike: | ||
| `agda --safe --without-K --cubical-compatible <module.agda>`. | ||
| `--cubical-compatible` is not full `--cubical`. Pin and record the Agda | ||
| version and standard library with each source commit and proof result. | ||
| - Grade ladder (Mathesis §5): Grade 3 = type-checks locally in Agda, | ||
| untranslated; 2i = one independent system; 2ii = two, the second | ||
| non-DTT (e.g. Isabelle/HOL); 1 = machine-checked via a verified checker | ||
| API in headless CI. Never flatten this into a confidence percentage. | ||
| - Missing tools, incompatible dependencies or failed theorems are open | ||
| obligations. Do not skip proofs or weaken flags to make a check green. | ||
| - Escape hatches follow `docs/TRUSTED-BASE-REDUCTION-POLICY.adoc` and are | ||
| recorded in `docs/proof-debt.adoc`. | ||
| - An ECHIDNA result is *evidence about someone else's proof*. Burrower | ||
| records the grade it was told and never asserts one it derived. | ||
|
|
||
| Status for this repo: 0 of 7 obligations proven; no first-party Agda | ||
| theorem yet, so nothing here is at Grade 3. See | ||
|
Comment on lines
+67
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
For any subsequent agent session that follows Useful? React with 👍 / 👎.
Comment on lines
+67
to
+68
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Update the proof status.
|
||
| `docs/status/PROOF-STATUS.adoc` and | ||
| `docs/reports/audit/2026-11-01-echidna-topology-audit.adoc`. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1404,16 +1404,31 @@ proof-check-agda: | |
| echo "SKIP: agda not installed" | ||
| exit 0 | ||
| fi | ||
| # Estate canonical invocation (standards 3-practice/PROOF-POLICY.adoc | ||
| # §2.1). `--cubical-compatible` implies `--without-K`; both are named | ||
| # because the policy names both. | ||
| AGDA_FLAGS="--safe --without-K --cubical-compatible" | ||
| # Modules under verification/proofs/agda are named relative to that | ||
| # directory (e.g. Burrow.Trust lives in Burrow/Trust.agda), so it has | ||
| # to be on the include path or Agda rejects the module name. | ||
| AGDA_INCLUDE="verification/proofs/agda" | ||
| ERRORS=0 | ||
| for f in $(find verification/proofs/agda -name '*.agda' 2>/dev/null); do | ||
| for f in $(find "$AGDA_INCLUDE" -name '*.agda' 2>/dev/null | sort); do | ||
| echo -n " Checking $f ... " | ||
| if agda --safe "$f" 2>/dev/null; then | ||
| echo "OK" | ||
| if out=$(agda $AGDA_FLAGS -i "$AGDA_INCLUDE" "$f" 2>&1); then | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When a contributor has any other Agda or standard-library version installed, this recipe silently checks the proofs with that ambient toolchain even though the new Grade 3 records specifically attribute the result to Agda 2.7.0.1 and agda-stdlib 2.4, and the newly documented policy requires those versions to be pinned. There is no Agda entry in Useful? React with 👍 / 👎. |
||
| if echo "$out" | grep -qi 'warning:'; then | ||
| echo "OK (with warnings)" | ||
| echo "$out" | grep -i 'warning:' | sed 's/^/ /' | ||
| else | ||
| echo "OK" | ||
| fi | ||
| else | ||
| echo "FAIL" | ||
| echo "$out" | sed 's/^/ /' | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| done | ||
| find "$AGDA_INCLUDE" -name '*.agdai' -delete 2>/dev/null || true | ||
| if [ "$ERRORS" -gt 0 ]; then | ||
| echo "FAIL: $ERRORS Agda proof(s) failed" | ||
| exit 1 | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mark the echidnabot CLI integration as planned.
This says echidnabot reaches Burrower through the CLI, but Line 26 says that integration is not wired. Use prospective wording here so readers do not mistake it for a working integration.