I2706 — Vlastní událost, jejíž připojení selhalo, se nikdy nepotvrdí jako trvalá a opětovné načtení žurnálu je omezeno velikostí
Odmítnout potvrdit vlastní událost meshe jako trvalou, když selhalo její připojení, a omezit, kolik toho načtení žurnálu přečte.
HOTOVO vlna 1 · p0 · profil implementation · běží samostatně
Cíl
Odmítnout potvrdit vlastní událost meshe jako trvalou, když selhalo její připojení, a omezit, kolik toho načtení žurnálu přečte.
Proč
Odděleno od I2137 dne 2026-10-14. I2137 učinil připojování synchronizovaným a počítajícím selhání, znovunačtení počítajícím nečitelné řádky, kompaktaci atomickou a soubor přístupným jen vlastníkovi a jeho desired_state říkal „Not done here“ o mezi velikosti při znovunačtení a o odmítnutí potvrdit vlastní událost, jejíž připojení selhalo (drží se v paměti a replikuje se a ztráta se hlásí), zatímco jeho akceptační kritéria stále vyžadovala, aby událost nebyla potvrzena jako trvalá, takže se nikdy nemohl uzavřít. Základní audit z 2026-10-09 na master 1fb8d6be44, mezera selhání 4 a řádky tříd selhání plný disk a useknutý žurnál.
Aktuální stav
Journal::append_own (apps/majordomus-cli/src/mesh/journal.rs) vrací Ok, když zápis na disk selže: událost se drží v paměti a replikuje se a JournalTallies.write_failures počítá ztrátu, kterou hlásí mesh doctor (apps/majordomus-cli/src/mesh/doctor.rs, journal_check). Test a_failed_append_is_counted_and_the_file_is_the_owners_alone ověřuje přesně toto Ok. Opětovné načtení čte celý soubor bez omezení velikosti.
Cílový stav
Vlastní událost, jejíž append selhal, se volajícímu hlásí jako nedurable (držena a replikována, ale nepotvrzena), takže schopnost, která ji zapisuje, netvrdí, že je na disku; opětovné načtení čte nejvýš deklarovaný počet bajtů a hlásí, co nechalo nepřečtené, a mesh doctor to jmenuje.
Rozsah
- apps/majordomus-cli/src/mesh/journal.rs
- apps/majordomus-cli/src/mesh/doctor.rs
- apps/majordomus-cli/src/capability/builtin/mesh.rs
- test/cases
- docs/MESH.md
Mimo rozsah
- Synchronizované připojení, součty selhání zápisu a nečitelných řádků, atomické zhuštění a vytvoření jen pro vlastníka, což I2137 dodalo
Závislosti
Kritéria přijetí
- Neúspěšný zápis na souborovém systému jen pro čtení nebo plném v testu nechá jeho událost nepotvrzenou jako trvalou volajícímu, který ji připojil
- Žurnál větší než mez opětovného načtení se načte až do meze a nepřečtená část je spočítána a hlášena příkazem mesh doctor
Validace
- bin/majordomus plan validate
- cargo test --lib mesh::journal
Požadované důkazy
- failed_append_not_acknowledged_test
- reload_size_bound_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| failed_append_not_acknowledged_test | test | cargo test --lib -- mesh::journal | 56 prošlo, 0 selhalo, vč. a_failed_append_is_not_acknowledged_as_durable (kód od 06e28bb4de0, předka 4a4573690f8; znovu spuštěno na 4a4573690f8) | 4a45736 |
| reload_size_bound_test | test | cargo test --lib -- mesh::journal | 56 prošlo včetně a_reload_is_bounded_and_the_unread_part_is_counted a a_compaction_keeps_what_a_bounded_reload_left_unread (kód od 06e28bb4de0, předka 4a4573690f8; znovu spuštěno na 4a4573690f8) | 4a45736 |
Časová osa
- zahájeno
- 2026-10-17T18:25:04Z
- ověřeno
- 2026-10-17T18:25:16Z
- dokončeno
- 2026-10-17T18:25:22Z
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.
Kanonický záznam: .ai/repo/project/issues/I2706.yaml. Přečtěte ho zpět pomocí majordomus plan show I2706.