Documentation
The propose → review → approve cycle
A complete change lifecycle with explicit human authority and honest uncertainty.
1. Locate
Use Codebase Memory to find the symbol, callers, and relevant files when it is installed. Treat its result as structural coverage, not as a decision.
2. Prepare
Call prepare_change(target, intent) before changing non-trivial code. Read
the constraints, evidence, authority, linkage, provider coverage, and intent
conflicts. A governing Record requires the agent to state whether the planned
change aligns with or contradicts it; Rationale does not pretend a local
heuristic is semantic proof.
3. Change and finalize
Make the smallest change consistent with the context. If code looks strange,
call explain_target before simplifying it. After the edit, call
finalize_change; it captures committed, staged, unstaged, and untracked files
without treating a dirty tree as “nothing happened”.
4. Review
Run:
rationale review
Inspect the statement, evidence, bindings, provisional status, and effect. A proposal can be approved, corrected, rejected, or skipped. The reviewer must confirm the required word for critical assertions.
5. Approve and share
Approval moves the Record into the canonical records/ area with a human
approval event. Commit .rationale/ with the code so the next session sees the
same decision. Never describe a proposal as an approved Record.