From 3e895deb82e0cb27fa7eb2bf7ef7e4cc02b3ea28 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Fri, 15 May 2026 17:28:33 -0500 Subject: docs(todo): mark fold-epic children 1-3 done (audit, install-ai, fold), child 5 awaits ratio --- todo.org | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/todo.org b/todo.org index 7f2c3a2..68afc43 100644 --- a/todo.org +++ b/todo.org @@ -1794,7 +1794,8 @@ Today (2026-05-15) the canonical-source rule got violated again: rulesets commit Build order: fold first (others depend on the new canonical path), then audit + install-ai in parallel, then test, then propagate to ratio. -*** TODO [#A] Fold =claude-templates= into rulesets +*** DONE [#A] Fold =claude-templates= into rulesets +CLOSED: [2026-05-15 Fri] Two repos, one source of truth. =~/projects/claude-templates/= is the canonical =.ai/= template that gets rsync'd into every project at session start. Keeping it standalone means a second =git pull= in startup Phase A.0, a second remote to push to at wrap-up, and a split history any time a change touches both. Folding it into =rulesets/claude-templates/= gives one repo to clone on a fresh machine and one place to edit templates. @@ -1819,7 +1820,8 @@ Two repos, one source of truth. =~/projects/claude-templates/= is the canonical Every project on the machine has a =.ai/workflows/startup.org= that rsyncs from =~/projects/claude-templates/=. Until each project's startup.org gets refreshed (which happens via the rsync itself), the old path needs to keep resolving. The symlink at step 4 is the bridge: old paths resolve into the new location, the rsync delivers the updated startup.org, next session uses the new path directly. -*** DOING [#A] Add =make audit= — drift detector across all =.ai/=-using projects +*** DONE [#A] Add =make audit= — drift detector across all =.ai/=-using projects +CLOSED: [2026-05-15 Fri] Companion to =make doctor= (single-machine scope, checks =~/.claude/=). =audit= is cross-project scope: walks every directory on the machine that has a =.ai/=, diffs the synced template files against the canonical source, and reports drift. =--apply= flag rsyncs the drift into the project's working tree (no auto-commit). Catches stale projects without forcing a session start in each one. @@ -1864,7 +1866,8 @@ Exit code: =0= if all clean, no skips, no failures. =1= otherwise. =doctor= has a clean meaning today: "is this machine's =~/.claude/= consistent with rulesets?" Mixing in cross-project =.ai/= drift muddies the exit code. Keep them separate. =audit= can optionally invoke =doctor= as its last check since both ask "did the symlinks keep up with the source?". A future =make all-checks= can wrap both. -*** DOING [#A] Add =make install-ai PROJECT== — bootstrap =.ai/= in a fresh project +*** DONE [#A] Add =make install-ai PROJECT== — bootstrap =.ai/= in a fresh project +CLOSED: [2026-05-15 Fri] Separate target from =audit= because operating on projects that lack =.ai/= is a distinct action. The absence might be intentional, so =audit= skips them. Bootstrap is explicit opt-in. -- cgit v1.2.3