Skip to content

I2731 — Every failure class in the published failure table names its test or its stated limitation

Give the runtime's published failure table a proof column, in which every failure class names the tests that drive it or states the limitation that nothing does, and hold the column with a case that refuses a row with neither and a citation that does not resolve.

DONE wave 0 · p1 · implementation profile · parallel safe

Part of failure-is-visible — Every failure the runtime can suffer is bounded, tested or stated, and changes the health it reports.

Objective

Give the runtime's published failure table a proof column, in which every failure class names the tests that drive it or states the limitation that nothing does, and hold the column with a case that refuses a row with neither and a citation that does not resolve.

Why

Leaf FV.3 of 2026-10-15 found the milestone's evidence token failure_class_table owned by no issue: docs/MCP.md's 'Failure behaviour' table said what each failure does and nothing about what shows it, docs/DEVELOPMENT_RUNTIME.md had no such table, and no case refused a row with no proof. The runtime baseline audit of 2026-10-09 (master 1fb8d6be44) named classes no test drives: disk full, a read-only journal directory, a frozen worker, a kill between lease creation and its first write. A table of behaviours with no proof column reads as a list of guarantees.

Current state

docs/MCP.md 'Failure behaviour' has a proof column over 28 failure classes: 23 cite tests under apps/majordomus-cli/tests/ or cases under test/cases/, and 5 state a limitation (a frozen request handler, a full disk, a read-only mesh journal directory, a kill between lease creation and its first write, a failing lease keep-alive write). The read-only journal row names PRs #1179 and #1196 (I2706, case 3052) as pending; on this tree no test drives it. docs/DEVELOPMENT_RUNTIME.md points at the table. Case 3056 refuses a row with neither a resolvable citation nor a reasoned limitation, a citation of a test function or case file the tree does not hold, a limitation with no reason, and a table without its proof column.

Desired state

The published failure table has no row without a test or a stated limitation, and a case refuses one; a limitation row is replaced by a citation when a test for its class lands.

Scope

  • docs/MCP.md
  • docs/DEVELOPMENT_RUNTIME.md
  • test/cases

Out of scope

  • Writing the missing tests themselves (disk full, a frozen handler, a kill between lease creation and its first write, a failing keep-alive write); each is its own issue when taken
  • Readiness and request deadlines, which I2157 and I2156 own
  • Journal durability, which I2706 delivers in PRs #1179 and #1196

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • Every row of the 'Failure behaviour' table in docs/MCP.md names a test or case this tree holds, or a limitation with its reason
  • Case 3056 fails on a row with neither, on a cited test function or case file that does not exist, and on a table without its proof column

Validation

  • bin/majordomus plan validate
  • bash test/run.sh 3056_every_failure_class_names_its_proof

Evidence required

  • failure_class_table

Evidence

coverstypecommandresultat commit
failure_class_tablecivalidate run 39438896504 at master 9a5a9b77520: suite shards 1-4 (jobs 118683336189 118683338077 118683336157 118683336457) run every case, incl. 3056_every_failure_class_names_its_proof (a53fd3b8052)success (the run's only red job is pages, which runs no test)a81b1e3

Timeline

started
2026-10-20T16:17:47Z
verified
—
completed
2026-10-20T16:32:41Z

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2731.yaml. Read it back with majordomus plan show I2731.

Searches the titles and descriptions of every page this site publishes.