A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I1984
Knowledge candidates never leave untracked files on a trunk that only pull requests change
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- Behind it in all
1- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Decide and implement where knowledge candidates are written so that deriving them at an episode boundary on the trunk never leaves the trunk's working tree dirty.
- Why
- OSCILLA main carries untracked .ai/repo/knowledge/candidates/ (a README and 7 records). It can never commit them, because its main changes only through pull requests. Every checkpoint since records working_tree dirty, clean-tree release gates refuse, and the advisory rule candidates-reviewed asks for the very commit the process forbids.
- Now
- Slice 1 of the ADR 0091 amendment (2026-10-15): on the trunk (mj_on_trunk, lib/common.sh) session close and recovery (lib/session.sh, lib/recover.sh) and knowledge derive (lib/knowledge.sh) write to .ai/local/state/outbox/{sessions,candidates}/, and context and doctor name a non-empty outbox; case 3060. Slice 2: a session close off the trunk (mj_session_outbox_drain, lib/session.sh) moves the outbox into the tracked sections unchanged and exactly once, and leaves a file that is not a record in the outbox with a line on stderr; case 3063. Slice 3: docs/KNOWLEDGE.md, the candidates-reviewed rule text (share/standard/majordomus/rules, vendored) and the sessions README (tracked and skeleton) say where a trunk episode's records wait, when a branch carries them, what context and doctor say meanwhile, and what happens to a file in the outbox that is not a record.
- Wanted
- Candidates derived on the trunk are staged under .ai/local, or derivation is skipped there, until a branch promotes them. The decision is recorded against ADR 0091.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- Closing an episode on the trunk leaves `git status --porcelain` empty
- Candidates derived on a branch are still offered for review and promotion as today
- Validation
bin/majordomus plan validateMJ_TEST_JOBS=4 bash test/run.sh <the case this issue adds>- Evidence required
trunk_stays_clean_casedecision_recorded- Evidence present
decision_recordedtrunk_stays_clean_case
Scope
- Touches
lib/knowledge.shlib/capture.shshare/standard/majordomus/rulesdocs/KNOWLEDGE.md.ai/repo/adrstest/cases- Not
- unknown: the record declares no `non_scope`
- Depends on
- unknown: the record declares no `depends_on`
- Priority
- p1
- Profile
- deep-work
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-04
- Updated
- 2026-10-15T11:21:05Z
- Started
- 2026-10-15T11:20:46Z
- Verified
- unknown: the record declares no `verified_at`
- Completed
- 2026-10-15T11:21:05Z
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
Nothing is wrong with these records.