I3222 — A follower whose frames are lost, delayed or reordered, or whose peer is partitioned, ends equal to a fresh snapshot
Add a fault-injection case over the live channel: a test-only frame-level WebSocket proxy drops, delays and reorders frames and partitions a mesh peer, then each follower's state is compared with a snapshot read afresh; no feature is added and the protocol is unchanged.
PŘIPRAVENO vlna 0 · p2 · profil verification · bezpečné paralelně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3222 bude přijato.
Cíl
Add a fault-injection case over the live channel: a test-only frame-level WebSocket proxy drops, delays and reorders frames and partitions a mesh peer, then each follower's state is compared with a snapshot read afresh; no feature is added and the protocol is unchanged.
Proč
The 2026-10-18 live-fabric design asked for chaos tests for replay, resync and partition before more surfaces depend on the channel. Proposed in ADR 0216 (Every live surface follows one channel with named follow streams, and nothing polls where a stream exists) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c294#7.
Aktuální stav
Verified on master 707a04c7ce8: apps/majordomus-cli/src/http/events.rs has replay and heartbeat tests for executions; nothing in test/, scripts/ or apps/majordomus-cli/tests injects faults. In flight, not on master: PR #1178's case 3046 and 5a's blackboard branch with stream.resync and cases 3381 and 3382, which cover stopping and restarting the server.
Cílový stav
One case holds convergence for every follow stream the server serves.
Rozsah
- apps/majordomus-cli/src/http/events.rs
- apps/majordomus-cli/src/http/ws.rs
Mimo rozsah
- Changing the protocol
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- After every fault, the follower's state equals a fresh snapshot read. Receiving a resync frame is not enough
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib http::events
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test cov_runtime_b_http_channel
Požadované důkazy
- case_a_follower_converges_after_loss
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3222.yaml. Read it back with majordomus plan show I3222.