Context
Follow-up from #405 / PR #406. Cut from that PR's review round.
0.9.1 keeps the renderer's published output out of new commits: init writes _bmad/render/
into .gitignore, and provision_worktree adds a /_bmad/render/ git exclude whenever the
worktree has a _bmad/ at all. Both only help going forward. A project that already committed
_bmad/render/ — before 0.9.1, or before it gitignored _bmad/ — keeps churning it into every
story commit, because a tracked path ignores .gitignore and info/exclude entirely.
The churn is not cosmetic. Every snapshot dir is named for a hash of the absolute project
root plus a generation hash of the renderer, its sources and the resolved config
(render_skill.py), so a committed tree grows a new directory per machine, per checkout path,
and per upstream renderer bump — and under isolation = "worktree" the worktree's own absolute
path differs from the main checkout's, so every isolated run adds one.
Proposal
A tracked_render_warning validate check: warn when git ls-files _bmad/render is non-empty,
with the remediation
git rm -r --cached _bmad/render && git commit -m "chore: untrack rendered skill output"
Severity warning. This is commit hygiene, not a HALT — nothing about a tracked _bmad/render/
stops a session from running, which is why it was cut from the hotfix rather than shipped with
the two HALT-shaped renderer warnings.
Notes
- Register the id in
checks.VALIDATE_CHECKS, or the existing subset tests fail.
- The probe is a
git call, so it must go through the _run_git chokepoint and degrade quietly
in a non-repo project (validate runs there today and must keep passing).
Context
Follow-up from #405 / PR #406. Cut from that PR's review round.
0.9.1 keeps the renderer's published output out of new commits:
initwrites_bmad/render/into
.gitignore, andprovision_worktreeadds a/_bmad/render/git exclude whenever theworktree has a
_bmad/at all. Both only help going forward. A project that already committed_bmad/render/— before 0.9.1, or before it gitignored_bmad/— keeps churning it into everystory commit, because a tracked path ignores
.gitignoreandinfo/excludeentirely.The churn is not cosmetic. Every snapshot dir is named for a hash of the absolute project
root plus a generation hash of the renderer, its sources and the resolved config
(
render_skill.py), so a committed tree grows a new directory per machine, per checkout path,and per upstream renderer bump — and under
isolation = "worktree"the worktree's own absolutepath differs from the main checkout's, so every isolated run adds one.
Proposal
A
tracked_render_warningvalidate check: warn whengit ls-files _bmad/renderis non-empty,with the remediation
Severity
warning. This is commit hygiene, not a HALT — nothing about a tracked_bmad/render/stops a session from running, which is why it was cut from the hotfix rather than shipped with
the two HALT-shaped renderer warnings.
Notes
checks.VALIDATE_CHECKS, or the existing subset tests fail.gitcall, so it must go through the_run_gitchokepoint and degrade quietlyin a non-repo project (validate runs there today and must keep passing).