CLAUDE.md · diff
git:20260624.63fce56 to git:20260902.7414564
12 added, 0 removed. Audit A to A.
<!-- wtcraft:claude:start -->
## wtcraft routing
For complex or parallel tasks, read `.agent-harness/planner.md`.
For worktree finishing, read `.agent-harness/finisher.md`.
## repo structure (wtcraft dogfooding)
`templates/` is the source of truth for files `wtcraft init` copies to user repos.
The corresponding live files in this repo are wtcraft's own dogfooded versions:
templates/.agent-harness/ ↔ .agent-harness/
templates/.claude/commands/ ↔ .claude/commands/
When changing harness behavior: update both the template AND the live file.
+ `wtcraft init-ci` vendors the policy evaluator into user repos, so these must
+ stay byte-identical:
+
+ templates/.wtcraft/policy_evaluator.py ↔ scripts/policy_evaluator.py
+ templates/.wtcraft/policy_git_adapter.py ↔ scripts/policy_git_adapter.py
+
+ They are real copies, not symlinks, because npm omits symlinks from packages.
+ `tests/e2e_init_ci.sh` fails the build if they drift — a stale vendored copy
+ would keep security fixes out of user repositories. `templates/.github/` has no
+ live counterpart: this repository does not operate a protected policy branch,
+ so it does not enable its own check.
+
## model knowledge policy
Never rely on your own training knowledge for model names or IDs — it is always outdated.
For model recommendations, read `.agent-harness/role-models.yml`.
If the user states a model name, that overrides everything else.
## release guardrails
- Version tags must use `v<semver>` format (example: `v0.3.8`).
- Version tags must be created from `main` only.
- Never create or move version tags from feature/worktree branches.
- `CHANGELOG.md` is the single source of release notes: add the version's section there before tagging. The publish workflow reads that section into the GitHub Release — do not hand-write release notes separately.
<!-- wtcraft:claude:end -->