Setlist 2.0.0 (edition v1.8, the boundary edition)
Setlist 2.0.0 (edition v1.8, the boundary edition)
Setlist turns Claude Code into a spec-driven engineering partner: you direct as architect
and reviewer, the agent writes the code, and a spec, not the keyboard, is the control
surface. 2.0.0 is the release where enforcement moved to the strongest layer available:
git itself.
Highlights
- The guarantee now lives in git's own hooks. The push-time trunk audit stands between
unreviewed work and a shared trunk, and it decides by identity and ancestry: does this
history descend from the commit that adopted the rules, and did this content arrive
through a closed spec's lineage. Because git runs the audit after the shell has already
parsed arguments and resolved refs, a merge is a merge however it was spelled. - Fast feedback stays where you work.
pre-commitandpre-merge-commitrefuse
incomplete closes at commit and merge time, with precise, actionable messages, so the
ordinary day feels immediate while the push-time audit holds the line. /setlist:retrofitrespects the hooks you already have. Retrofitting into a project
that uses husky, lefthook or pre-commit now detects the existing hook layer by content
and stops with a clear choice, instead of silently taking over. One environment variable
(SETLIST_ADOPT_HOOKSPATH=1) expresses the deliberate handover.- Brand-new remotes are protected from the first push. On a repository's first push to
an empty remote, every pushed branch is audited as a trunk candidate, so a project's
default branch is born clean. Push the trunk first and it simply passes. - Close conditions read what a human sees. The mandatory Architecture-diagram field is
now read from live text only: prose inside code fences, comments or collapsed examples
no longer satisfies (or poisons) a Closing report, matching how the spec inventory and
QA verdicts are already read. - Every decision is measured, not assumed. The severity model, the audit's
identity-and-ancestry rules, and each close condition were exercised by generated
adversarial inputs, mutation checks, and cold end-to-end dogfood runs on three stacks
before this tag was cut.
Upgrading from 1.x: run /setlist:upgrade in your instance; the wiring check verifies
the new enforcement is live before it reports success. Full per-version deltas are in
CHANGELOG.md; the framework document ships as setlist.md (edition v1.8).