I2708 — Pole události meshe, které nikdo nevypsal, shodí kontrolu meshe a žádné pole logu ani tělo recenze nenese přihlašovací údaj, který redaktor zná
Zařídit, aby scripts/ci/mesh-check odmítl pole EventBody chybějící v seznamu povolených, přidat vrstvu redakce pro každé pole tracingu a vést těla review přes redaktor.
HOTOVO vlna 1 · p1 · profil implementation · běží samostatně
Cíl
Zařídit, aby scripts/ci/mesh-check odmítl pole EventBody chybějící v seznamu povolených, přidat vrstvu redakce pro každé pole tracingu a vést těla review přes redaktor.
Proč
Odděleno od I2161 dne 2026-10-14. I2161 propustil každé tělo chyby HTTP, chybu JSON-RPC, odmítnutí nástroje MCP, zalogované pole požadavku i tělo předávky přes redaction::redact_secrets a jeho desired_state o allow-listu ve scripts/ci/mesh-check, který odmítne pole EventBody, jež nikdo nevypsal, o redakční vrstvě pro každé pole tracingu a o tělech review říkal „Not done here“, zatímco jeho kritéria přijetí allow-list stále vyžadovala, takže se nikdy nemohl uzavřít. Mesh replikuje těla událostí čitelně přes prosté HTTP; pole přidané do EventBody dorazí ke každému propojenému runtime, aniž by kdokoli rozhodl, že smí. Invariant balíčku 9.
Aktuální stav
scripts/ci/mesh-check čte pole každé varianty EventBody proti .ai/repo/ci/mesh-event-fields.yaml a selže na poli, které neuvádí (případ 3051). Tělo předávky se redaktuje před podepsáním (apps/majordomus-cli/src/mesh/handover.rs), stejně tak subject, body, verdikt a poznámky review (apps/majordomus-cli/src/mesh/cooperation.rs, request_review, answer_review a withdraw_review) a verdikt mimo approved, changes_requested a commented, včetně přihlašovacího údaje, se odmítne před podepsáním; seznam označuje těchto šest polí `redacted`. Vrstva trasování je jediná polovina, která v tomto stromě není: je to PR #1195 (apps/majordomus-cli/src/logging.rs).
Cílový stav
scripts/ci/mesh-check čte pole každé varianty EventBody a selže na té, kterou její allow-list nejmenuje, a allow-list pro každé uvedené pole říká, zda se před podepsáním redaguje; každé pole tracingu projde redaction::redact_secrets v jedné vrstvě; předmět a verdikt revize se redagují dříve, než se podepíší do žurnálu.
Rozsah
- scripts/ci/mesh-check
- apps/majordomus-cli/src/mesh/journal.rs
- apps/majordomus-cli/src/mesh/cooperation.rs
- apps/majordomus-cli/src/logging.rs
- apps/majordomus-cli/src/redaction.rs
- apps/majordomus-cli/tests/redaction.rs
- test/cases
Mimo rozsah
- Těla chyb, chyby MCP, logovaná pole požadavků a těla předávek, které dodal I2161
- Zapojení publikace důkazů do redaction::public_text, což je věc I1955
Závislosti
Kritéria přijetí
- Pole EventBody přidané bez položky na seznamu povolených způsobí selhání scripts/ci/mesh-check
- Hodnota ve tvaru přihlašovacího údaje v libovolném poli trasování se v server.log nevyskytuje
- Revize, jejíž předmět nebo verdikt nese tvar přihlašovacích údajů, se redaktuje nebo odmítne dřív, než je podepsána do žurnálu
Validace
- bin/majordomus plan validate
- scripts/ci/mesh-check
- cargo test --test redaction
Požadované důkazy
- eventbody_allowlist_case
- review_redaction_test
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| eventbody_allowlist_case | test | bash test/run.sh 3051_an_unlisted_event_field_fails_the_mesh_check 301_the_mesh_stays_one_subsystem; scripts/ci/mesh-check | testy: 2 prošly, 0 selhaly. Případ 3051: skutečný strom prochází (47 polí neseno, 1 před podpisem začerněno: HandoverBody.body); kopie selže s exit 10 na nevypsaném poli varianty (EventBody.ReviewAnswered.token), nevypsaném poli neseného structu (SessionInfo.home), nové variantě (EventBody.NoteShared.text), položce ani začerněné, ani čisté, zastaralé položce, žurnálu bez EventBody a chybějícím seznamu a znovu projde, jakmile je pole vypsáno (run 2026-10-15 na #1179 head 98ef9ac6e3 plus tato změna) | 98ef9ac |
| review_redaction_test | test | cargo test --test redaction; scripts/ci/mesh-check; bash test/run.sh 3051_an_unlisted_event_field_fails_the_mesh_check 301_the_mesh_stays_one_subsystem | redakce: 11 prošlo, 0 selhalo (lundra, 2026-10-15). a_review_is_journaled_with_the_marker_never_the_secret zapíše každý řádek přihlašovacích údajů z test/fixtures/redaction/shapes.tsv do předmětu, těla, poznámky odpovědi a poznámky stažení revize: žurnál na disku i složený stav nesou značku každého tvaru a žádné tělo; tentýž řádek jako verdikt se před podepsáním odmítne a odmítnutí jmenuje značku. Test nad starou cestou revize selhává (odmítnutí opakovalo tělo klíče anthropic). mesh-check OK: 47 nesených polí, 6 redagovaných před podepsáním. Případy 3051 a 301 procházejí. Běh na e2d7042a44 (#1188) plus tato změna. | e2d7042 |
| eventbody_allowlist_case | test | scripts/ci/mesh-check | OK: každé pole EventBody je uvedeno (47 neseno, 6 redigováno před podpisem); redakce tracingu od dd4798ce55e (kód na master od 3c3372d0617; znovu spuštěno na master 01227a0) | 01227a0 |
| review_redaction_test | test | cargo test --test redaction | 12 prošlo, 0 selhalo, vč. a_review_is_journaled_with_the_marker_never_the_secret (kód na master od 3c3372d0617; znovu spuštěno na master 01227a0) | 01227a0 |
Časová osa
- zahájeno
- 2026-10-17T12:04:14Z
- ověřeno
- 2026-10-17T12:04:36Z
- dokončeno
- 2026-10-17T12:04:47Z
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/I2708.yaml. Načtěte jej zpět pomocí majordomus plan show I2708.