Output renamed plan-autoresolve.md; header changed to '# AUTO-RESOLVABLE items' (no fake --- a/ /+++ b/ wrapper). Added test autoresolve_output_is_not_claimed_as_diff. Template updated: user manually applies, not via git apply.
4.3 KiB
Deep-sleep NREM consolidation (KeiSeiKit v0.13.0)
Clone: {REPO_URL} Cadence: every {DEEP_SLEEP_CRON_DAYS} day(s), counted from first install Fork-output mode: WITH_FORK={WITH_FORK} (1 = plan + fork; 0 = plan only)
Cycle order with Phase C
Phase A (incubation, v0.12.0) → Phase B (REM consolidation, v0.12.0) → Phase C (deep-sleep NREM, THIS document, v0.13.0)
Phase C runs AFTER Phase B, and ONLY when today is a multiple of
DEEP_SLEEP_CRON_DAYS from the install date (file
sync-repo/reports/install-anchor.txt). If the file is missing on a
first run, Phase C silently no-ops and writes the anchor for next time.
If Phase A selected a marathon: true task, Phase B is skipped per
v0.12.0 rules AND Phase C is skipped too — the marathon owns the night.
Phase C — Task
-
Scan. Run
kei-conflict-scan --path sync-repo/ --format=json --exit-on-hitand capture the JSON. Categories: rules, hooks, blocks, orphans, cp. -
Plan. Pipe the JSON into
kei-refactor-engine --input - --plan-out sync-repo/sleep-deep/YYYY-MM-DD-plan.md. The plan markdown always lists:- Auto-apply candidates (safe; engine-proposed)
- "Requires human decision" items (zero-conflict guarantee: NEVER included in the generated patch)
-
Optional fork (only if
WITH_FORK=1):a.
kei-refactor-engine --input - --apply-to-branch deep-sleep/YYYY-MM-DD --patch-out sync-repo/sleep-deep/YYYY-MM-DD-autoresolve.md(re-run on same JSON; the auto-resolve markdown lists auto-apply items only — NOT a unified diff, see note below).b. Review the auto-resolve markdown and apply each change manually in a new local branch:
git checkout -b deep-sleep/YYYY-MM-DDOpen<autoresolve>.md, edit the listed files accordingly, thengit add <files> && git commit.c. Gate:
kei-graph-check --path sync-repo/. If broken refs after your edits → delete branch, append "graph check failed — fork aborted, plan kept" note to the plan file.d. If clean → push the fork branch for morning review.
NOTE (v0.14.1 retraction): earlier docs claimed the engine emits a
git apply-ready patch. It does not — seepatch.rsheader for the reason (engine cannot synthesise file-content hunks without reading source files, which risks RULE 0.4 hallucination). The companion file is a markdown summary reviewed and applied by hand.
- Commit + push. The plan markdown is always committed to
mainwith messageNREM: deep-sleep YYYY-MM-DD. If a fork branch was produced, it is pushed as a separate ref for the user's morning review. The user merges (or rejects) the fork manually.
Zero-conflict guarantee
Any conflict the refactor-engine marks requires_human_decision is
EXCLUDED from the generated patch and listed plainly in the plan
under the matching section. The user sees every such item explicitly.
No silent auto-apply of ambiguous changes.
Invariants
- Plan is ALWAYS written, even if the engine finds nothing (body reads "no conflicts this cycle").
- Fork branch never auto-merges to main.
- Phase C never touches
traces/*.jsonl(append-only, inherited). - Store backend is whatever
kei-store statusreports — the Phase C pipeline is store-agnostic.
Failure handling
kei-conflict-scanfails → record the error in the plan body and skip fork.kei-refactor-enginefails → same; keep any partial plan markdown.- Manual edits in step 3b produce merge conflicts → delete fork branch; append the conflict summary to the plan.
- Push fails → retry once; on second failure leave local commit and exit 1. Local state is recoverable on next run.