aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/startup.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-02 05:22:09 -0400
committerCraig Jennings <c@cjennings.net>2026-07-02 05:22:09 -0400
commited75d3c17e7605d2669456b53a03def531a607b7 (patch)
tree3b2d272010c63b6360c4f723f059d12dd62b8fe5 /.ai/workflows/startup.org
parentb6a977cec25fddf1e498896cec3ad9462fc149db (diff)
downloadrulesets-ed75d3c17e7605d2669456b53a03def531a607b7.tar.gz
rulesets-ed75d3c17e7605d2669456b53a03def531a607b7.zip
feat(sync): never let untracked or gitignored files block template updates
Projects were falling behind on templates because somebody sent them a task: an untracked inbox drop read as a dirty tree to the stricter gates. The policy is now stated where the gates live: dirty means tracked modifications only, and untracked or gitignored files never block a template pull, a fast-forward, or a monitoring gate. The audit found one offender. The inbox monitor's precondition used bare porcelain, counting the very drops it exists to process. It now checks tracked changes only, which is safe because the per-item commit already stages explicitly. The rsync WIP-guard keeps counting untracked files inside the synced source paths on purpose, since a half-written template is exactly the WIP it holds back.
Diffstat (limited to '.ai/workflows/startup.org')
-rw-r--r--.ai/workflows/startup.org2
1 files changed, 2 insertions, 0 deletions
diff --git a/.ai/workflows/startup.org b/.ai/workflows/startup.org
index 943bbea..47a77c8 100644
--- a/.ai/workflows/startup.org
+++ b/.ai/workflows/startup.org
@@ -44,6 +44,8 @@ Behavior:
- *Dirty working tree* → skip the pull. Don't auto-stash and don't auto-merge — those would either lose work or invite conflicts at the worst possible moment (session start).
- *Non-fast-forward history* → =--ff-only= aborts with an error. Surface that to the user; the rsync still proceeds against the working tree as-is.
+*Template-freshness policy (applies to every dirty-check in the synced workflows).* "Dirty" means *tracked modifications only*. Untracked and gitignored files — an inbox drop, a file left in the tree to read, scratch output — never block a template pull, a fast-forward, or a monitoring gate. Projects were falling behind on templates because somebody sent them a task; that's the failure this policy closes. The checks here already comply (=git diff --quiet HEAD= sees only tracked changes; the ff gate uses =--untracked-files=no=), and any dirty-check added to a synced workflow follows the same rule. One deliberate exception: the rsync WIP-guard below counts untracked files *within rulesets' own synced source paths*, because an untracked half-written template is exactly the WIP it exists to hold back — that guard is about rulesets' outbound content, not the consuming project's local state.
+
*** Install rulesets symlinks into ~/.claude (idempotent)
A skill, rule, or bin script added to rulesets and pushed reaches each machine's *files* on the next pull, but not its =~/.claude= *symlink* — =make install= only links what isn't already linked, and =git pull= doesn't run it. So a newly-added skill stays silently uninstalled until someone re-runs =make install= by hand. The flush skill sat in that gap from 2026-06-02 until a manual install on 2026-06-05. Running =make install= here, right after the rulesets pull, closes it: "add a skill, commit, push" becomes enough for it to reach every machine on the next session.