I3413 — A decision, resolved question or verified task fact already curated or pending from another episode of this checkout is not proposed again, and derive names the record it matched
In mj_knowledge_derive_cmd, before writing a decision, question or task row, compare its evidence digest (the twelve hex characters after the episode in the record id) with the file names under curated/, candidates/ and this checkout's outbox. This is a directory listing; no record is read. A match under another id skips the row and reports it, in text and JSON, as a duplicate of the matched record's id. Observation rows are never skipped this way, because their recurrence is the signal that case 981 and I3165 count. Rejected subjects stay with I3164. knowledge check reports two records that share a digest as a WARN.
BLOKOVÁNO wave 2 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3416, I3164, milestone:knowledge-is-reconciled-before-it-is-reviewed are done. The status is derived from that, not declared.
Cíl
In mj_knowledge_derive_cmd, before writing a decision, question or task row, compare its evidence digest (the twelve hex characters after the episode in the record id) with the file names under curated/, candidates/ and this checkout's outbox. This is a directory listing; no record is read. A match under another id skips the row and reports it, in text and JSON, as a duplicate of the matched record's id. Observation rows are never skipped this way, because their recurrence is the signal that case 981 and I3165 count. Rejected subjects stay with I3164. knowledge check reports two records that share a digest as a WARN.
Proč
The owner's 2026-10-19 Cognitive Fabric pack asks for duplicates to be detected against existing curated content before candidates are made (campaigns/prismatic-way-cognitive-fabric-prompt-pack/prompts/03_KNOWLEDGE.md). verification/ACCEPTANCE.md proposes zero duplicate canonical entities as a target, not as a current state.
Aktuální stav
lib/knowledge.sh:1152-1159 builds the id from the episode and a digest. :1334-1337 skip a row only when the same full id is curated or superseded, so the same decision in a second episode becomes a second candidate. The deriver runs inside session close (lib/session.sh:663-669).
Cílový stav
A known fact gets one record. The skip is deterministic, writes nothing and names its match. A pending candidate held in another checkout's outbox is not visible here, which is stated as a limit.
Rozsah
- lib/knowledge.sh
- test/cases/981_an_observation_becomes_a_grouped_candidate.sh
- docs/KNOWLEDGE.md
- site/content/docs/knowledge.md
- .ai/repo/project/intents
Mimo rozsah
- Skipping observations
- Rejected subjects (I3164)
- Semantic or model-based similarity
- Rewriting or merging another episode's file
- Hand-authored curated notes whose ids are slugs (I3414 relates those)
Závislosti
- I3416BLOCKED The episode boundary is proven to give one candidate for an observation recorded twice, none for a partial task, and one file per episode when two episodes close at once
- I3164BLOCKED A change an evolve run makes yields no candidate about itself, and a rejected subject is not proposed again without new evidence
Co na tom čeká
Kritéria přijetí
- A decision recorded in a second episode, identical to a pending candidate of the first, is skipped as a duplicate naming the first record's id, and no file is written
- The same decision is skipped in the same way against a curated record of another episode
- An observation identical to an existing one is still written (case 981 unchanged there)
- A second derivation of the skipping episode still writes nothing
- knowledge check WARNs, keeping its exit status, when two records share a digest
- Session close's added time on a fixture is measured and reported, not asserted
Validace
- bash test/run.sh 981_an_observation_becomes_a_grouped_candidate 564_knowledge_derivation_is_idempotent
- majordomus knowledge check
- majordomus plan validate
Požadované důkazy
- case_known_knowledge_is_not_proposed_again
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/I3413.yaml. Read it back with majordomus plan show I3413.