I3433 — A UI snapshot page renders only the readings its subject declares publishable, and a page that reads any other reading, or a capability that refuses remote callers, is withheld with a link to the live page
Give the UI snapshot subject a declared list of the capability readings it may publish, checked where pages take their readings (ui/source.rs, ui/view.rs through capability/readings.rs). A page that reads a capability outside the list, or one that declares I3434's checkout-private field, is withheld exactly as /cockpit/continuity is today.
BLOKOVÁNO vlna 1 · p1 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I3432, I3434, milestone:a-prompt-reaches-the-work-it-serves are done. The status is derived from that, not declared.
Cíl
Give the UI snapshot subject a declared list of the capability readings it may publish, checked where pages take their readings (ui/source.rs, ui/view.rs through capability/readings.rs). A page that reads a capability outside the list, or one that declares I3434's checkout-private field, is withheld exactly as /cockpit/continuity is today.
Proč
The owner's 2026-10-19 Cognitive Fabric pack asks for privacy-filtered minimal schemas, published from an intentional whitelist (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/05_SURFACES.md, and the verification/ACCEPTANCE.md row on private .ai/local data).
Aktuální stav
apps/majordomus-cli/src/web/report/snapshot.rs:95 gives the UI subject an empty withheld list. The wave-05 audit found /ui pages that read mesh.peers, mesh.events and mesh.state (ui/mesh.rs:28-33, ui/observatory.rs:85-87, ui/dashboard.rs:34). Whether a CI snapshot carries any mesh value today was not measured.
Cílový stav
The UI subject names what it may publish. A new capability whose reading is not named is withheld from snapshots by default, rather than published by default.
Rozsah
- apps/majordomus-cli/src/web/report/snapshot.rs
- apps/majordomus-cli/src/capability/readings.rs
- apps/majordomus-cli/src/ui/source.rs
- apps/majordomus-cli/src/ui/view.rs
Mimo rozsah
- The Cockpit subject (I3435)
- Changing the privacy gates (I3432)
- Changing what the live /ui serves
Závislosti
- I3432BLOCKED The UI and Cockpit snapshots pass both privacy gates after they are placed and before anything is published, on CI and from a terminal
- I3434BLOCKED A capability declared as reading checkout-private records answers only this machine: a caller beyond loopback is refused on HTTP and MCP, and the refusal logs no input value
Co na tom čeká
- I3409BLOCKED An episode answers, for each prompt it captured, the intent it matched, the task that recorded it, that task's outcome and the evidence of the criterion it serves, with the same identities on every surface and after any replay
- I3435BLOCKED A Cockpit snapshot withholds every page that reads a capability refusing remote callers, not only the continuity page it names
Kritéria přijetí
- A fixture page that reads a capability outside the list is withheld, and its navigation link leads to the live page
- A fixture page that reads a capability declaring the checkout-private field is withheld
- The current snapshot pages that read only listed capabilities render byte-identically to before
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib web::report::snapshot
- MJ_TEST_JOBS=4 bash test/run.sh 181_local_is_never_published
Požadované důkazy
- a_ui_snapshot_publishes_only_declared_readings
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/I3433.yaml. Read it back with majordomus plan show I3433.