Skip to content

knowledge-is-reconciled-before-it-is-reviewed — What a session proposes as knowledge is reconciled with what the repository already knows before a person reviews it, and a promotion stands on evidence that resolves

A known fact gets one candidate. Each candidate group names what already speaks about its subject, read from the entity layer rather than from a second derivation. A promotion needs a resolvable reference and records it. An observation can cite the review that found it.

BLOCKED 0 of 5 issues done

ready
0
blocked
5
active
0
verify
0
done
0
cancelled
0

Problem

The deriver compares a new candidate with curated knowledge only by full id, episode included (lib/knowledge.sh:1334-1337), so the same decision in a second episode becomes a second candidate. Nothing relates a candidate to the curated notes or rules about its subject: knowledge_base.rs:733-768 groups candidates/ only, and the contradicts relation has no producer or consumer. Promotion accepts any non-blank prose without a transcript marker (lib/knowledge.sh:1586-1591). An observation cannot cite a mesh review (lib/knowledge.sh:187). Repetition, partial tasks and concurrent closes hold by construction, and nothing proves them.

Outcome

A known fact gets one candidate. Each candidate group names what already speaks about its subject, read from the entity layer rather than from a second derivation. A promotion needs a resolvable reference and records it. An observation can cite the review that found it.

Current state

Cases 564, 707-711, 980, 981 and 3004 verify knowledge observe, derive --dry-run, candidates, reject and check. session.knowledge_on_end derives knowledge at the episode end (lib/session.sh:663-673).

Desired state

I3416, I3413, I3414, I3415 and I3417 have landed in that order, each extending an existing case.

Scope

  • lib/knowledge.sh
  • apps/majordomus-cli/src/capability/builtin/knowledge_base.rs
  • apps/majordomus-cli/src/ui/knowledge.rs
  • test/cases/564_knowledge_derivation_is_idempotent.sh
  • test/cases/709_knowledge_promotion_is_an_act.sh
  • test/cases/980_a_session_records_what_it_observed.sh
  • test/cases/981_an_observation_becomes_a_grouped_candidate.sh
  • test/cases/3004_evolve_is_a_procedure_of_existing_commands.sh
  • .ai/repo/skills/evolve/SKILL.md
  • docs/KNOWLEDGE.md
  • docs/CLI.md
  • share/events.yaml
  • .ai/repo/project/intents

Out of scope

  • Automatic promotion, rejection or relation of any record
  • Model-based similarity or contradiction judgement
  • Rejected subjects proposed again (I3164)
  • An incident entity, a review event or any new store (rule project.no-new-nouns)
  • The evolve readiness verdict, friction derivation, self-feeding and moved-source flags (milestone knowledge-acts-on-what-it-learns, I3162-I3166)

Acceptance criteria

  • The criteria a-known-fact-is-one-candidate, a-candidate-names-what-already-says-it, promotion-cites-resolvable-evidence and an-observation-cites-its-review are rewritten to evidence: test naming the extended cases
  • Case 981's shell and Rust parity block stays byte-identical outside the related field, which only the Rust reader answers

Validation

  • majordomus plan validate

Risks

  • I3162, I3163, I3164 and I3166 also have lib/knowledge.sh, knowledge_base.rs, ui/knowledge.rs and the evolve skill in scope; I3413 depends on I3164, and the rest must be announced on the board, with master merged between them
  • I3415 changes promote's documented evidence contract. Whether an agent may promote at all is an open owner question that this milestone does not settle: ADR 0091 says a person promotes, while step 2 of the evolve skill has an agent run promote
  • I3413 runs inside session close (lib/session.sh:663-669); its comparison is a directory listing of file names, not a read of records, and its added time is measured and reported
  • I3413's curated arm matches nothing today, because no curated note's file name has the derived episode-and-digest shape (ls .ai/repo/knowledge/curated); its value lies in the pending arm and in promotions from now on

Issues

Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.

issuestatuswavedepends ontitle
I3413 BLOCKED 2 I3416, I3164 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
I3414 BLOCKED 3 I3413, I3412 Every candidate group names the curated notes and the rule that already speak about its subject, read from entity.affected, so a possible duplicate or contradiction is in front of the reviewer with both sources
I3415 BLOCKED 4 I3414 knowledge promote refuses evidence that names no reference existing in this checkout, and knowledge.promoted records the references it stood on
I3416 BLOCKED 0 — 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
I3417 BLOCKED 5 I3415 An observation can cite the mesh review that found what it records, and the reference stays in the candidate's body, never in its provenance

The graph

knowledge-is-reconciled-before-it-is-reviewed dependency graphfrom .ai/repo/project
flowchart LR
    I3413["I3413<br/>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"]:::blocked
    I3414["I3414<br/>Every candidate group names the curated notes and the rule that already speak about its subject, read from entity.affected, so a possible duplicate or contradiction is in front of the reviewer with both sources"]:::blocked
    I3415["I3415<br/>knowledge promote refuses evidence that names no reference existing in this checkout, and knowledge.promoted records the references it stood on"]:::blocked
    I3416["I3416<br/>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"]:::blocked
    I3417["I3417<br/>An observation can cite the mesh review that found what it records, and the reference stays in the candidate's body, never in its provenance"]:::blocked
    I3413 --> I3414
    I3414 --> I3415
    I3415 --> I3417
    I3416 --> I3413
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Canonical record: .ai/repo/project/milestones/knowledge-is-reconciled-before-it-is-reviewed.yaml. Read it back with majordomus plan show knowledge-is-reconciled-before-it-is-reviewed.

Searches the titles and descriptions of every page this site publishes.