8000 docs(bench): map failure paths to correctness tests (Refs #843) by adityamukho · Pull Request #866 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

docs(bench): map failure paths to correctness tests (Refs #843) - #866

Merged
adityamukho merged 1 commit into
v3from
docs/843-failure-correctness
Nov 6, 2026
Merged

adityamukho merged 1 commit into
v3from
docs/843-failure-correctness

Conversation

@adityamukho
@adityamukho adityamukho commented 8000 Nov 6, 2026
Copy link
Copy Markdown
Collaborator

Related #843 (X08 of the #776 close-out).

What this adds

  • docs/benchmarks/843-failure-correctness/README.md: the X08 report pinned to v3 a95e51ffe506cb83d60a48da1622ab2e6b35340f.
  • targets.csv: 138 curated correctness tests in 35 cells, each with the error-code and data invariants it checks. Families: size bounds, windows and write order, binds, callback errors, exhaustion and validation codes, corrupt pages and trees, failed-handle retry, v1–v6 refusal, heavy WAL replay.
  • map.py (standard library, adapted from Bench: document semantic permutations and natural-plan control limits #842's): checks every target against the pinned plain and test-hooks inventories, and writes a lexical index of all 2,079 Rust tests. Its output reproduces byte for byte from the committed lists in evidence/.
  • Shared docs: the X08, C08 and C30 rows in bench-coverage-v3.md, plus CLAUDE, README, ROADMAP, CHANGELOG, TEST_COVERAGE and BENCHMARKS.

No production code, public API, test or nightly-route change. Nothing was timed: the inventory is a build plus --list, run on an idle secondary host.

Findings

  • Heavy WAL replay is only tested at the WAL layer. test_wal_entry_of_more_than_a_million_facts_replays drives WalWriter/WalReader directly. No test opens a database whose WAL holds one heavy entry. On v3, a statement of exactly transaction_chunk_facts facts (up to 1,000,000) stays small and is written as one entry, so this shape is reachable. Filed as Test: reopen and replay one heavy WAL entry through Minigraf::open #865.
  • The fixed 1,000-round recursion bound has no test. At the pin, a 1,500-edge acyclic chain (reach :n0 ?b) returns INT-020 "Max iterations". It fails loudly, with no partial rows. Make the recursion round limit (max_iterations) configurable per query and in OpenOptions #861 (v3.0.0) already makes the bound configurable and lists the tests, so no new issue was filed.
  • Every other cell has correctness coverage of its exact code and the state left behind. Two message-only checks are noted next to stronger targets in the same cells.
  • C08/C30 claims stay limited to their fixtures. C30 asserts API-011 on every iteration and checks the rollback once at setup. C08 checks once at setup that the damage is detected and the repair is clean. Neither is failure-latency timing.
  • Decision: X08 stays excluded and no nightly ID changes. A future failure-latency route needs a concrete performance or durability hypothesis, a code-and-state preflight before timing, and a bounded budget.

Verification

  • map.py reruns on the committed evidence and reproduces tests.csv, summary.json and targets.json byte for byte.
  • All 138 targets resolve to exactly one listed test. 5 are hooks-only, and 2 of those are ignored nightly acceptance tests.
  • All relative links resolve.
  • Codex review skipped (Codex out of credits).

🤖 Generated with Claude Code

https://claude.ai/code/session_01H2a7QoYX6tc5G3sKVzvLjD

Adds the X08 report for core revision a95e51f on v3. It maps the
failure paths excluded from latency timing (invalid size bounds,
valid-time windows and write order, prepared binds, callback errors,
memory and rule exhaustion, validation codes, corrupt pages and trees,
failed-handle retry, v1-v6 refusal and heavy single-entry WAL replay) to
138 curated correctness tests in 35 cells, with the error-code and data
invariants each checks. A standard-library script verifies every target
against the pinned plain and test-hooks inventories and reproduces a
lexical index of all 2,079 Rust tests byte for byte.

The C08 repair and C30 rollback claims are limited to their exact
fixtures; both keep their integrity checks before timing.

Gaps: no test replays one heavy WAL entry through Minigraf::open (filed
as #865), and the fixed 1,000-round recursion bound is untested (already
planned in #861). X08 stays excluded; no nightly ID changes.

No production code, public API, test or nightly-route change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H2a7QoYX6tc5G3sKVzvLjD
@adityamukho
adityamukho merged commit b6da317 into v3 Nov 6, 2026
18 checks passed
@adityamukho
adityamukho deleted the docs/843-failure-correctness branch November 6, 2026 04:16
@codecov
codecov Bot commented Nov 6, 2026
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0