Session de59f5d7 · Shipped 2026-05-14 · Medium test-harness

Release notes · 2026-05-14

The build feedback got more honest this week.

Three pull requests in thirty-six hours tightened the loops that tell engineers and stakeholders what the system is actually doing. The Stop gate reads git state instead of file mtime. The plan tracker reports tasks that match the code on disk. The CI pipeline runs the tests that already gate local work.

PRs landed
3
36 hours
tests now gated by CI
441
406 pytest + 35 bun
plan boxes corrected
149
across 5 plans
new modules
2
lib/git_state, lib/guard
lines changed
1,796
PR #3 + #4 + #5

Tour

$Stop · session ending with uncommitted showcase stop gate
Before: the gate looked at file mtimes, so any edit to the showcase template auto-passed the check whether or not it was committed. Now the gate looks at git. An uncommitted showcase change blocks the session with a specific, actionable error.
Dopamine Hit: Showcase advanced but uncommitted. Run
git add .dopamine/showcase && git commit before stopping,
or mark infraOnly.
$dop adapter plan tracker
Before: the briefing kept framing every session around boolean signals, a task that had been done for days. After PR #4 ticked 149 stale checkboxes, the adapter reports actual state.
adapter:  superpowers
plan:     2026-05-14-signals-lib
path:     docs/superpowers/plans/
            2026-05-14-signals-lib.md
task:     — (all complete)
$gh pr checks 5 ci
Before: CI ran lint and AST parsing only. A regression breaking 406 pytest cases would land green. PR #5 wired the actual suite into CI.
  CLI lint, build, unit tests   42s
  Python unit tests              1m18s
  Hook scripts smoke test         8s
  Play frontmatter validation     7s
  Doc links and structure         4s
$cat .dopamine/state.json | jq .currentSession session record
Every session now records its starting branch, commit SHA, and dirty file set. The Stop gate uses these to distinguish "Claude finished a turn" from "the user shipped something". A rebase mid-session that orphans the start SHA is detected and degrades safely to the old mtime tree.
{
  "id":            "de59f5d7",
  "gitMode":       "git",
  "gitBranch":     "feat/showcase-release-notes",
  "gitStartSha":   "fb89862…",
  "gitStartDirty": [],
  "guardState":    null
}

Ships in this release

#3 feat(guard): git-aware Stop gate with strict default and loose opt-out +1,623 / −105 · 21 files
#4 chore(plans): tick checkboxes for plans shipped in session f8a7c908 +149 / −149 · 5 files
#5 ci: run unit tests and build the CLI bundle +24 / −2 · 1 file