The worker proposes lessons; it never promotes them. Promotion (candidate →
control/approved_lessons/ or rules.md) is a human git action, not a tool the worker can call.
When to use
- Task wrap-up, postmortem, or when a correction/drift note should outlive this task.
Procedure
- Read
state/tasks/<task_id>/correction_journal.mdand any session observations. - For each keeper, write a candidate into
state/tasks/<task_id>/candidate_lessons.md, tagged with a target tier:working-only— relevant to this task only; stays instate/.approved-lesson-candidate— recurring; propose intocontrol/approved_lessons/.policy-candidate— stable, cross-task; propose intocontrol/rules.md.gate-candidate— binary, machine-checkable; a human may translate it into anagent-completion-gatecheck (this skill does NOT touch the gate).
- Each candidate carries: the lesson, evidence (cite the journal entry),
applies_when, andnot_authoritative_until_reviewed: true. - Leave everything in
candidate_lessons.md(pending). Do not move anything intocontrol/yourself.
Outputs
candidate_lessons.mdwith tier-tagged proposals + evidence.- A short summary the human can review and promote in git.
Do not
- Do not write to
control/approved_lessons/orcontrol/rules.md— read-only to the worker; promotion is a reviewed action. - Do not edit any
agent-completion-gatemanifest. Surfacing agate-candidateis a suggestion to a human, not an action. - Do not mark a lesson "enforced" without a corresponding rule/gate actually carrying it.