I2694 — A promoted note resolves in every checkout, not only where it was promoted
Make `majordomus knowledge promote` produce a record that `knowledge check` accepts in a fresh clone and in CI, so that the evolve skill's procedure can be followed to its end.
READY wave 0 · p1 · implementation profile · parallel safe
Part of development-runtime — The runtime has a development surface.
Ready. Every dependency is done, so majordomus plan start I2694 will be accepted.
Objective
Make `majordomus knowledge promote` produce a record that `knowledge check` accepts in a fresh clone and in CI, so that the evolve skill's procedure can be followed to its end.
Why
On 2026-10-14 the first pass of the evolve skill promoted five candidates. Each curated note names `session:<episode>` and `task:<id>` in provenance.derived_from. `knowledge check` passed in the worktree that promoted them and failed with ten findings in another worktree of the same repository: a session resolves only through a tracked session record, which is written when the episode is closed, and a task resolves only through the ledger or the task store, both under .ai/local. The structure job passed where the notes were made, so the defect would first have been seen in CI.
Current state
A `task:` reference resolves to the ledger or the task store of the checkout that reads it and to nothing else. A tracked session record lists its tasks (`tasks:`), and nothing reads that list when a task is resolved. The five notes were withdrawn from the pull request that would have carried them; their lessons are in docs/INTEGRATION.md and in the evolve skill.
Desired state
A task named by a tracked session record resolves through that record. Promotion refuses, with the remedy, a candidate whose episode is still open and so has no tracked record yet. A case promotes a candidate in one clone and runs `knowledge check` in a second.
Scope
- apps/majordomus-cli/src/capability/builtin/knowledge_base.rs
- lib/knowledge.sh
- .ai/repo/skills/evolve/SKILL.md
- .ai/repo/project/issues/I2694.yaml
Out of scope
- Tracking the ledger or the task store
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- A note promoted in one clone passes `majordomus knowledge check` in a second clone that has only what git carries
- Promoting a candidate of an episode that is still open is refused and names `majordomus session close`
- The evolve skill's procedure says when the episode is closed
Validation
- bin/majordomus plan validate
- bin/majordomus knowledge check
Evidence required
- promoted_note_resolves_in_a_second_clone_case
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2694.yaml. Read it back with majordomus plan show I2694.