| Category | Count | Details |
|---|---|---|
| Source modules | 22 | 12 Idris2 ABI (Region, TypedAccess, Levels, Pointer, Effects, Lifetime, Linear, MultiModule, Proofs, Tropical, Epistemic, VerifierSpec — added 2026-05-27 via PR #79 as the spec-of-record for the Rust post-codegen verifier), 4 AffineScript parser (Ast, Parser, Lexer, Checker), 3 Idris2 interface ABI, 2 Zig FFI + cache, 1 Rust verifier crate (typed-wasm-verify, ~1.6k LOC + 53 tests) |
| Unit tests | 2 files | ParserTests.affine (88 assertions), crates/typed-wasm-verify (43 unit + 10 cross-compat) |
| Integration tests | 1 | tests/contracts/airborne-step-state-contract.mjs (14 assertions) |
| E2E tests | 2 | tests/smoke/e2e-smoke.mjs (40 assertions), tests/e2e/e2e-driver.mjs (corpus driver) |
| Per-level tests | 10 | tests/levels/L1.mjs .. L10.mjs (56 assertions total) |
| Aspect tests | 2 | tests/aspect/claim-envelope.mjs (53 assertions — added 2026-05, bumped 49→53 in PR #60 for §8 drift detection), tests/aspect/security-envelope.mjs (10 assertions — added 2026-05-24) |
| Property-based tests | 1 | tests/property/property_test.mjs (29 assertions across 6 invariants P1-P6) |
| Proof regression | 1 | tests/proof/regression.mjs (107 named-theorem presence assertions + optional idris2 --build layer; bumped 25→58→107 across 2026-05-24, PR #79 +33, PR #80 +49) |
| Benchmarks | 1 | benchmarks/parser-bench.mjs (per-example wallclock; median/p95/min/throughput; JSON summary on stderr; added 2026-05) |
| ECHIDNA harness | 1 | tests/echidna/echidna-harness.mjs (659 LOC, 124 local assertions, remote prover-wars submission) |
- DONE 2026-05-24:
tests/property/property_test.mjsexists with 29 assertions across 6 invariants (parser determinism, comment stability, diagnostic positional consistency, example-corpus liveness, level-fixture coverage, 5-trial stability). Wired into Justfiletest-propertyand CI smoke job. Closes the revoked 2026-04-04 ghost entry. - No tests for Idris2 ABI type checking with Zig FFI
- No tests for AffineScript parser feeding into Idris2 type checker
- DONE 2026-05:
tests/e2e/e2e-driver.mjsexercises every example through parse + check with skip/expect-clean/expect-diagnostic pragmas. Smoke test still narrow (40 assertions) but now augmented by the per-level suite (56 more) and the aspect test (49 more). - No WASM module compilation and execution test (blocked on codegen)
- No multi-module linking test (MultiModule.idr untested at runtime)
- DONE 2026-05:
tests/aspect/claim-envelope.mjs— 49 checks that cross-document claims (README/ROADMAP/LEVEL-STATUS/EXPLAINME) stay consistent with actual artefacts (ipkg, Rust constants, CI pins, example corpus, RSR surface). Built in response to a deep audit finding five drifts the test now catches. - DONE 2026-05-24 (security claim-envelope dimension):
tests/aspect/security-envelope.mjs— 10 assertions covering SECURITY.md ↔ .well-known/security.txt contact alignment, disclosure-timeline concreteness, SPDX-header presence on all git-tracked source files, README badge-claim-vs-reality (parses Idris2 comments out before substring matching), no committed credential patterns, LICENSE-vs-SPDX consistency. Caught two real bugs in the same commit it was added: template residue in.well-known/security.txtand missing SPDX on three files. - Security (behavioural): No memory safety violation detection
tests at the verifier-rejects-bad-program level beyond what
tests/levels/L*.mjscovers (10/10 per-level negative cases exist). Reaching full safety-violation coverage is a Phase 1 deliverable since it requires end-to-end codegen. - Performance: see Benchmarks below
- Concurrency: No concurrent WASM module compilation tests
- Error handling: 10/10 per-level test suites (
tests/levels/L*.mjs) include negative cases — partial coverage
- PARTIAL 2026-05-24:
tests/proof/regression.mjsprovides Layer 1 (named-theorem presence) — 25 assertions covering Region, TypedAccess, Levels, Linear, Lifetime, Effects, Pointer, MultiModule, Layout, Proofs. Catches silent theorem deletion or rename. Layer 2 (idris2 --check typed-wasm.ipkg) runs only when idris2 is on PATH, falls back to skip otherwise; pass--strictto require idris2. The strong test still depends on the toolchain being installable in CI, which is its own Phase 0 item. - Zig FFI integration_test.zig likely a template placeholder
- DONE 2026-05:
benchmarks/parser-bench.mjs— per-example parse + check wallclock with median / p95 / min / throughput and JSON summary for trend tracking. Only the parser is end-to-end today, so that's where benchmark evidence has to start. - Type-checking overhead per WASM instruction (blocked on codegen + Zig FFI runtime path)
- Memory region tracking performance (blocked on codegen)
- Lifetime analysis scaling with module size (blocked on codegen)
- Comparison: typed-wasm overhead vs raw WASM execution (blocked on codegen)
- No type system self-consistency check
- Type safety system with no safety-level-specific tests -- 10 levels claimed, 0 level-specific test suites (IN PROGRESS 2026-04-18 — L1-L3 pilot + agent handoff for L4-L10)
- 11 Idris2 proof modules with 0 proof verification tests -- "proven" is unproven. Update 2026-04-18: A3-A9 theorems landed in commits 987930c, c896a44, 3097b50, 9ebe867 (injectivity, level-achievement monotonicity, erasure P3.1, QTT witness, witness-requiring attestations). L7-L10 preorder + composition lemmas now live. Full per-level Idris2 test files still absent.
- Tropical.idr and Epistemic.idr (novel type features) have 0 tests -- research features untested (L11 semiring closure proven A2 2026-04-18 but no dedicated test suite)
ECHIDNA harness is 7 assertions -- token gesture, not real verificationSUPERSEDED 2026-04-18: tests/echidna/echidna-harness.mjs is now 659 LOC with a random-program generator, 36 proof obligations per run, and parse-rate measurement.- arXiv potential claimed -- paper-worthy claims need paper-worthy evidence
RESOLVED. The placeholder file is gone;tests/fuzz/placeholder.txtis a scorecard placeholder inherited from rsr-template-repo — it does NOT provide real fuzz testingtests/fuzz/README.adocis now an honest status marker pointing attests/echidna/echidna-harness.mjs(659 LOC, real random-program fuzz) andffi/zig/test/. A dedicated retained fuzz corpus is still future work.- Replace with an actual fuzz harness (see rsr-template-repo/tests/fuzz/README.adoc) or remove the file
- Priority: P2 — creates false impression of fuzz coverage