Skip to content

I3392 — The mesh lab injects the three faults into work in progress, and its evidence holds the conservation reading of each scenario

Add three scenarios to test/mesh-lab/run after the existing nine: a node holding an exclusive claim and an open task is killed, its claim expires, another node resumes from its published handover and finishes; the connection is cut while a claim and a handover are in flight and healed; two nodes take the same issue. Each scripted worker uses start, check, handover and finish through the CLI; each scenario ends with the conservation reading on every node and passes only with zero lost commits and zero duplicate completions. Add the scenarios to scripts/ci/mesh-lab-evidence's required set, to case 414 and to the note of mesh-network-acceptance in docs/CLAIMS.yaml.

BLOCKED wave 3 · p1 · implementation profile · parallel safe

Part of recovery-from-injected-faults-is-proven — A killed worker, a cut connection and a conflict are injected on purpose, and recovery is proven without lost work or duplicate completion.

Blocked. This issue cannot start until I3390, I3391 are done. The status is derived from that, not declared.

Objective

Add three scenarios to test/mesh-lab/run after the existing nine: a node holding an exclusive claim and an open task is killed, its claim expires, another node resumes from its published handover and finishes; the connection is cut while a claim and a handover are in flight and healed; two nodes take the same issue. Each scripted worker uses start, check, handover and finish through the CLI; each scenario ends with the conservation reading on every node and passes only with zero lost commits and zero duplicate completions. Add the scenarios to scripts/ci/mesh-lab-evidence's required set, to case 414 and to the note of mesh-network-acceptance in docs/CLAIMS.yaml.

Why

T5 of the owner's report of 2026-10-19. The lab already breaks the network on purpose and is judged by a reader other than itself (case 414), so work-level faults belong there rather than in a second harness.

Current state

test/mesh-lab/run:187-245 runs claim_conflict, cross_node_handover, network_partition and process_crash_recovery among nine scenarios; scripts/ci/mesh-lab-evidence refuses an incomplete record; case 414 holds the required set equal to the scenarios the lab reaches.

Desired state

target/mesh-lab/evidence.json carries the three scenarios with their conservation readings; case 414 requires them.

Scope

  • test/mesh-lab/run
  • test/mesh-lab/node-entrypoint
  • scripts/ci/mesh-lab-evidence
  • test/cases/414_mesh_lab_evidence.sh
  • docs/CLAIMS.yaml

Out of scope

  • Agent sessions in the lab (I3393 runs those)
  • A routed or WAN topology

Dependencies

What waits on this

Acceptance criteria

  • Each scenario records its fault, timings and conservation reading
  • A scenario with a duplicate completion or a lost commit fails
  • Case 414 refuses a record missing any of the three scenarios
  • The existing nine scenarios still pass

Validation

  • test/mesh-lab/run
  • bash test/run.sh 414_mesh_lab_evidence
  • majordomus shell check

Evidence required

  • mesh_lab_work_faults

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

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/I3392.yaml. Read it back with majordomus plan show I3392.

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