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
docs: resync status claims with the verified state of the repo (#72)
A ground-truth audit (6-way parallel survey, 2026-07-01) catalogued ~23
stale or contradictory claims across the status docs. This brings them
in line with what is actually built, proven, and CI-enforced:
- ROADMAP: '54% complete' + unchecked Validator/Serializer/Merkle/
Verify/Repair boxes were stale — all are implemented with their
soundness proofs landed (each box now carries its honest residual);
the 'libochrance.so must be built and linked' blocker was resolved by
703fa00 and is replaced by the real named boundaries. Critical Next
Actions replaced with the actual open items (canonical signing
serialization + KAT, Stage 4 proofs, placeholder integration tests,
required-checks ruleset).
- TOPOLOGY dashboard: 'Verify soundness 0%' vs reality (Stages 2.1-2.4
proven), 'Crypto linked 20%/NOT linked' vs reality (CI-gated end to
end), Repair/binding rows updated; new rows for validator+policy and
the CI proof gate; overall ~40% -> ~70% on the proof axis.
- README status: dropped the stale 'stub fallbacks must be removed'
paragraph; now states the CI-verified FFI path and names the residual
boundaries (CollisionResistant, ABI blake3Hash, trust-root).
- EXPLAINME: fixed the self-contradicting Merkle caveat (hashPairStub
no longer exists) and replaced the four nonexistent test-file
references with the real, CI-wired suites.
- PROOFS.adoc: Stage 2.1 EXTENDED entry for the policy-enforcement
theorems (PR #71) incl. the goal-rewrite proof technique note, and a
CI-ENFORCED note (idris2.yml gates the whole ledger per PR).
- ABI-FFI-README: fixed wrong test ipkg path.
- ComprehensiveTest: stale 'FFI Crypto (stubbed)' banner corrected.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
**How verified**: The Merkle tree is defined as a size-indexed binary tree: `MerkleTree : (size : Nat) → Type`. At compile time, Idris2 verifies that all leaf nodes are at depth `log2(size)`. The tree operations (leaf insertion, hash computation, proof generation) take dependent proofs that structure is maintained. README (§Architecture) claims "Verified Merkle trees — Size-indexed binary trees with compile-time structure proofs." This is proven by the type signature itself: if you try to construct a tree of size 8 with only 7 leaves, the type checker rejects it because the dependent type `MerkleTree 8` requires exactly 8 leaves.
31
31
32
-
**Caveat**: The size-indexed *structure* proofs are independent of hash strength. Real hashing now exists — the Zig FFI implements BLAKE3/SHA-256/SHA3-256 (`ffi/zig/src/main.zig`, with known-answer-vector tests) and the IO Merkle path calls `hashPairBlake3` — but a pure XOR combiner (`hashPairStub`) remains for totality/offline testing, and `libochrance.so` must be built and linked for the cryptographic path to be live. Until the stub paths are removed and the FFI is wired into the verification flow, the structure proofs hold but cryptographic integrity is not yet claimed.
32
+
**Caveat**: The size-indexed *structure* proofs are independent of hash strength. The cryptographic path is live: the Zig FFI implements BLAKE3/SHA-256/SHA3-256 (`ffi/zig/src/main.zig`, known-answer-vector tested), `build.zig` emits `libochrance.so`, and the IO Merkle path calls `hashPairBlake3` across `%foreign` — confirmed end to end by `tests/ffi/CryptoFFITest.idr` (the production root is the BLAKE3 fold, not the XOR spec root) and CI-gated in the `Idris2` and `Zig FFI` workflows. The pure XOR combiner (`xorCombiner`) is the totality-friendly *spec instance* of the combiner-generic theorems, not a fallback. The irreducible crypto assumption is `CollisionResistant`, isolated in `Filesystem.MerkleAssumption`.
33
33
34
34
== Dogfooded Across The Account
35
35
@@ -60,12 +60,12 @@ Also integrates with ECHIDNA for neural proof synthesis — FFI calls to libechi
60
60
61
61
== Testing Critical Paths
62
62
63
-
* **Lexer totality**: `idris2 --check ochrance-core/A2ML/Lexer.idr` — Idris2 type checker verifies structurally recursive, no partial functions
* **Merkle tree**: `tests/merkle_test.idr` — size-indexed tree construction and hash verification
67
-
* **Repair linearity**: `tests/repair_test.idr` — linear type system prevents use-after-repair bugs (compile-time error if violated)
68
-
* **ECHIDNA FFI**: `tests/echidna_ffi_test.idr` — call libechidna.so via Zig FFI, verify proof synthesis works
63
+
* **Lexer/Parser totality**: `idris2 --build ochrance.ipkg` (opts `--total`) — every core module, including the lexer's structural recursion and the parser's sized-type termination, type-checks under the totality checker; CI-gated by the `Idris2` workflow
* **Crypto FFI runtime**: `tests/ffi/CryptoFFITest.idr` (via `tests/ffi/run_ffi_test.sh`) — real BLAKE3/SHA-256/SHA3-256 across `%foreign` into `libochrance.so`; proves the production Merkle root ≠ XOR spec root
68
+
* **ECHIDNA FFI**: not yet testable — `Ochrance.FFI.Echidna` is a design stub (`Left "FFI not yet implemented"`); see ROADMAP Phase 2
Copy file name to clipboardExpand all lines: ROADMAP.adoc
+24-17Lines changed: 24 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,44 +8,51 @@ v0.1.0, 2026-02-07
8
8
9
9
== Current Status
10
10
11
-
**Phase 1: Ochránce Core** (54% complete - In Progress)
12
-
13
-
The A2ML parsing pipeline is fully functional with total lexer and covering parser. Type-safe framework with q/p/z error taxonomy is complete. Current focus: completing validator, serializer, and Merkle tree implementation.
* [x] A2ML Serializer (roundtrip proven for the reference token codec; production pipeline runtime-checked — the String-primitive wall, see PROOFS.adoc)
* [] Linear Type Repair (consume-old-state semantics)
35
-
* [ ] Integration Tests (50+ scenarios)
40
+
* [x] Merkle Tree Implementation (size-indexed; real BLAKE3 via libochrance.so, CI-gated end to end; residual assumption: CollisionResistant, isolated)
3. Wire the implemented Zig BLAKE3 FFI into Merkle and remove the XOR stub combiner
42
-
4. Implement Filesystem.Verify module
43
-
5. Implement Filesystem.Repair with linear types (Quantity 1)
47
+
1. Canonical signing serialization (delimited, all-fields-bound) + positive-path Ed25519 known-answer test through validateManifestIO
48
+
2. Stage 4 proofs: Merkle completeness (4.1), remaining SatisfiesMinimum monotonicity cases (4.3), VerifiedSubsystem law stated + proven for FSState
49
+
3. Fill in the 45 placeholder integration scenarios
50
+
4. Make real BLAKE3 reachable from a root-verify entry point (IO path via the proven IO↔pure bridge; VerifyRoot currently requires a pure Combiner)
51
+
5. Require the Idris2 / Zig FFI checks in the repo ruleset (currently no required status checks — auto-merge lands before CI finishes)
44
52
45
53
**Blockers:**
46
54
47
-
* Idris2 0.8.0+ compiler required
48
-
* `libochrance.so` (Zig crypto FFI) must be built and linked into the Idris2 verification flow; the primitives themselves (BLAKE3/SHA-256/SHA3-256/Ed25519) are now implemented and tested
0 commit comments