Skip to content

v3.9.25: post-route Stop hook closes route sentinels (#451)

Choose a tag to compare

@proffesor-for-testing proffesor-for-testing released this 12 May 13:06
· 189 commits to main since this release
b2e6090

What's New

Closes the route sentinel that routing_outcomes could never close on its own. The route hook (UserPromptSubmit) wrote sentinel rows with quality_score=-1, expecting post-task to fill them in — but post-task only fires on PostToolUse ^(Task|Agent)$, which is rare in direct-work sessions (Bash/Edit/Read). Sentinels accumulated indefinitely; Jordi reported 123+ unresolved rows per session and Stream D never converged.

New aqe hooks post-route subcommand is wired into the Stop hook 1:1 with UserPromptSubmit. A task_json NOT LIKE '%"taskId"%' discriminator isolates route sentinels from pre-task sentinels. As a companion symmetry fix, updateRoutingOutcomeQuality (the post-task path) gains the inverse task_json LIKE '%"taskId"%' filter so post-task only ever closes pre-task sentinels — no more cross-sentinel accidents.

After upgrading and re-running aqe init, the Stop hook gains a post-route invocation alongside session-end and brain-checkpoint. Route sentinels now close 1:1 with each turn.

Thanks to @Jordi-Izquierdo-DDS for the diagnosis, evidence, and patch shape.

Getting Started

npx agentic-qe init --auto

See CHANGELOG and release notes for details.