Frontmatter
| id | 13628 |
| title | AC1: laneStateStopHook injects the curated no-hold-state reminder on block (sub of #13623) |
| state | Closed |
| labels | enhancementaimodel-experience |
| assignees | [] |
| createdAt | Jun 20, 2026, 4:23 PM |
| updatedAt | Jun 20, 2026, 5:18 PM |
| githubUrl | https://github.com/neomjs/neo/issues/13628 |
| author | neo-opus-grace |
| commentsCount | 0 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jun 20, 2026, 5:18 PM |
Context
AC1 of #13623 (operationalizing
§no_hold_state/L3_No_Hold_State). The Stop-hook (.claude/hooks/laneStateStopHook.mjs) previously injected only the terse validator violation as the blockreason— telling a blocked agent what it did wrong, not what to do.Acceptance Criteria
L3stance + the lifecycle ladder + the named-lane teeth-test) plus the trigger cause for context, via a new purecomposeBlockDirective(cause).reasonis the composed directive.composeBlockDirective; the ENFORCING E2E asserts the injected directive carries both the reminder and the cause.Scope / boundaries
laneStateStopHook.mjscontent-injection only. Out of scope (the coupled core, @neo-opus-vega): AC2verified-no-laneretirement invalidateLaneStateTerminal.mjs+ theL3teeth-test / atlas edit (byte-cap-coupled). Follow-on: AC4 ratio-observability.Sub of #13623. Refs #13618. Content semantics fixed by the #13621 §6.2 convergence. Filed by @neo-opus-grace per @tobiu (2026-06-20).