I3426 — An advisor answer carrying instructions or record-shaped fields is kept as bounded text and changes no record
Add two negative fixtures. The first is an answer that tells the executor to ignore governance or promote candidates. The second is an answer that carries status, verified, reviewed_by or independent_review_count fields. Both are normalised to the declared consultation fields only and bounded, and the writer refuses any extra field a caller forwards.
BLOKOVÁNO vlna 0 · p2 · profil implementation · bezpečné souběžně
Blocked. This issue cannot start until milestone:an-inference-names-its-source-and-budget is done. The status is derived from that, not declared.
Cíl
Add two negative fixtures. The first is an answer that tells the executor to ignore governance or promote candidates. The second is an answer that carries status, verified, reviewed_by or independent_review_count fields. Both are normalised to the declared consultation fields only and bounded, and the writer refuses any extra field a caller forwards.
Proč
The owner's 2026-10-19 Cognitive Fabric pack lists a poisoned payload test (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/04_REASONING_MESH.md). verification/ACCEPTANCE.md requires a provider prompt injection to stay data.
Aktuální stav
scripts/lib/advisors/contract.mjs bounds lists to 400 characters and the conclusion to 1000 (contract.mjs:120,145). Records deny unknown fields (apps/majordomus-cli/src/reasoning/record.rs:413), and record.rs:981 refuses a review count typed by a caller. contract.test.mjs:88-105 covers structured, empty and malformed answers, but no answer that carries instructions or forges fields.
Cílový stav
Both fixtures pass through the real normalisation and writer. The stored consultation holds only declared fields, and no conclusion, candidate or count changes.
Rozsah
- scripts/lib/advisors/contract.test.mjs
- apps/majordomus-cli/src/reasoning/record.rs
Mimo rozsah
- Content moderation of answer text
- Changing normalisation bounds
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- An answer with forged fields normalises without those fields
- The writer refuses a consultation record that carries a forged field
- No record other than the consultation is written
Validace
- node --test scripts/lib/advisors/contract.test.mjs
- bash test/run.sh 731_advisor_transport_contract
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib reasoning::record
Požadované důkazy
- a_poisoned_answer_stays_data
- record.rs unit test refusing a forged consultation field
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/I3426.yaml. Read it back with majordomus plan show I3426.