Skip to content

v1.1.8 — freshness latch on SessionEnd

Latest

Choose a tag to compare

@kikenandez kikenandez released this 11 Oct 22:33
· 6 commits to main since this release

The 1.1 spec is unchanged. This release fixes a bug in the Dispatch freshness gate that blocked an install's architect mid-session, twice.

What went wrong

The §6.2 gate checks the Dispatch once per session, then leaves a latch so later prompts pass. stop-cleanup released that latch on Claude Code's Stop event, on the assumption that Stop means the session ended. It doesn't: Stop fires at the end of every turn. So the gate re-ran before every prompt, and once the lanes had made more than three commits it blocked the architect, the one role whose job is to keep the Dispatch current. The workaround was ADP_DISPATCH_STALE_OK=1.

Fixed in this release

  • Latch released on SessionEnd. A new session-end-latch hook (bash and Node) is wired in both settings.json and settings.node.json. stop-cleanup keeps worktree pruning and wire sync only. The gate itself is unchanged: every new session is still checked against a fresh Dispatch.
  • A fresh install no longer blocks its first prompt. The installer copied the template's docs/tasks/current.md with the template's original date, so the gate's 24h check tripped immediately. The installers now stamp a newly added Dispatch with the install time.
  • verify-hooks checks that the latch is released at SessionEnd, and uninstall removes the new hook.

Upgrading

init --upgrade replaces the hook scripts but never edits your settings.json. If the ADP hooks are wired without a SessionEnd entry, the installer prints a note: copy that block from .claude/settings.json (bash) or .claude/settings.node.json (Node). Until you do, the gate still runs once per session.

Preprint: doi:10.5281/zenodo.21982389