Repository navigation
Description
Follow-up of #776: X08 in the remaining exclusions and follow-ups table, finalized in #834.
Disposition: EXCLUDED individual failure latency.
Milestone: v3.next — Individual failure latency is a deliberate standing exclusion; correctness and durability contracts remain required.
Remaining scope recorded by the audit:
Invalid bounds/windows/binds, deliberate callback errors, corrupt-page rejection, v1–v6 refusal, heavy single-entry WAL replay and individual PRS/API/QRY codes belong to correctness testing. C08 measures a successful repair of known damage and C30 measures cross-chunk rollback; neither claims exhaustive failure timing.
C04/C06/C08/C30/C33/C37 delimit successful work and the narrow failure-related cases actually timed:
- Invalid storage/value/ident size bounds: the v3 audit describes file strings up to 4,068 bytes and idents up to 1,024 bytes. Oversize rejection is a correctness path, not a latency series.
- Invalid valid-time windows, write ordering/ambiguity and prepared binds, including API-019/API-011 and the applicable bind/API contracts.
- Deliberate fallible predicate/aggregate callback errors (QRY-014), invalid query options, memory/rule exhaustion and individual PRS/API/QRY validation codes. Valid successful operations still pay validation cost.
- Corrupt-page/tree rejection, failed-checkpoint retry refusal and refusing unsupported v1–v6 databases. Native v7 migration is a separate supported path.
- Heavy million-fact or larger single-entry WAL replay remains correctness-only timing scope. The ordinary
open/wal_replay/{1k,10k,100k}representatives use 100-fact statements and do not cover this shape.
C08 times checkpoint/storage_v3/verify/100k_history and successful rebuild_damaged_avet/100k_history: 100,150 stored/99,950 live facts, rebuild from a CRC-damaged current AVET root, copied per iteration. That is successful repair of known damage, not arbitrary corruption-rejection timing. C30's insert_file/chunked/statement_rollback/65537 reaches a late API-011 after the first default-size chunk and then permits a valid commit; it is not exhaustive failure timing.
Why outside the nightly shortlist: invalid inputs, deliberate errors, corruption and heavy recovery edge cases primarily require stable error/data/durability assertions. Their individual latency codes would add costly/noisy series without an established performance contract. X02 owns actual memory/exhaustion acceptance bounds; this issue does not waive them.
Acceptance criteria:
- Map every listed exclusion to concrete correctness/recovery/fault test targets and exact error/data invariants at a pinned revision.
- Verify coverage distinguishes invalid bounds/windows/binds, callback errors, corrupt pages, failed-handle retry, v1–v6 refusal and heavy single-entry WAL replay; report any missing tests separately.
- Keep C08 successful repair and C30 cross-chunk rollback claims limited to their exact fixtures/operations and retain their result-integrity checks.
- Publish the standing exclusion rationale; require a concrete performance/durability hypothesis before adding any dedicated failure-latency route.
Run heavy builds, enumeration, measurements and comparisons on idle hardware; retain reproducible evidence and clean temporary scratch afterward. This is benchmark/verification work aligned with PHILOSOPHY.md's reliability, portability and simplicity principles; any production change needs its own review.
Evidence: docs/bench-coverage-v3.md; validation run 41642356471. The validation run establishes only its recorded representative latency coverage; it does not complete this follow-up.
Activity
Merge pull request #866 from project-minigraf/docs/843-failure-correc…
adityamukho commentedon Nov 6, 2026
Done in #866 (merged on v3 as b6da317). Report: 138 curated correctness tests in 35 cells at v3 a95e51f, each with the error-code and data invariants it checks. C08 and C30 claims are limited to their fixtures, and both keep their integrity checks. X08 stays excluded; a future failure-latency route needs a concrete performance or durability hypothesis.
Missing tests, reported separately: heavy single-entry WAL replay through
Minigraf::open(#865); the fixed 1,000-round recursion bound (already planned in #861).