Context
A live operator side quest on 2026-06-23 identified two additional deference-register phrases that should be caught by the autonomous-turn Stop-hook phrase matcher:
Your steer on
if you'd rather
The current matcher surface is ai/scripts/lifecycle/deferencePhraseMatch.mjs. Its DEFERENCE_PHRASES list is intentionally tight and fixture-backed; it already excludes broad near-misses like should I, shall I, happy to, no rush, and whenever you want. These two additions are narrower than those broad forms and map to the same handoff-of-maintainer-judgment pattern the hook is meant to mirror.
Release classification: boardless / post-release tooling hardening. This is not a release blocker.
Live latest-open sweep: checked the latest 20 open issues at 2026-06-23T00:46:32Z; no equivalent open ticket found. A2A in-flight sweep: checked latest 30 messages at the same boundary; no competing lane-claim or lane-intent for this phrase addition. KB ticket sweep for deferencePhraseMatch DEFERENCE_PHRASES Your steer on if you'd rather found no equivalent ticket. Exact local sweep found the historical deference-hook origin surfaces and prior real prose containing if you'd rather, but no open duplicate for adding these fixtures.
The Problem
The deference hook currently catches phrases such as would you like me to, unless you want me, want me to, do you want me, your call, and your move. Recent live coordination produced adjacent wording that has the same behavior at an autonomous turn terminal:
Your steer on asks the operator to decide a lane that the agent should classify or route.
if you'd rather makes the agent's next action conditional on operator preference when peer/lane evidence should decide.
Without adding these fixtures, the hook remains blind to two observed forms of the same Helpful Assistant regression register.
The Architectural Reality
ai/scripts/lifecycle/deferencePhraseMatch.mjs owns the shared phrase list, phrase matching, and reminder text consumed by lifecycle Stop hooks. The helper uses case-insensitive boundary matching, so the new phrases should be added as literal lower/upper-case strings in DEFERENCE_PHRASES and covered by the existing focused unit-test surface.
The existing JSDoc states that broadening the list requires a falsifier-backed follow-up so the hook stays a mirror rather than a noisy leash. This ticket is that follow-up: two concrete phrases, not a generic widening of all conditional or polite language.
The Fix
Add the following strings to DEFERENCE_PHRASES in ai/scripts/lifecycle/deferencePhraseMatch.mjs:
Your steer on
if you'd rather
Update the focused hook tests under test/playwright/unit/hooks/ so both phrases are covered by the matcher/autonomous-turn behavior without changing the operator-dialogue carve.
Contract Ledger
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Docs |
Evidence |
DEFERENCE_PHRASES in ai/scripts/lifecycle/deferencePhraseMatch.mjs |
This ticket + live operator side quest on 2026-06-23 |
Include Your steer on and if you'd rather as tight deference fixtures. |
Do not add broad catchalls like should I or happy to; keep phrase matching fixture-backed. |
Existing JSDoc remains accurate; update only if wording needs clarification. |
Unit test proves both phrases match case-insensitively and existing exclusions still hold. |
| Stop-hook deference behavior |
detectDeferencePhrase() and hook decision tests |
Autonomous turn terminals containing either phrase trigger the existing deference reminder path. |
Operator-in-loop dialogue still returns null / allowed behavior via the existing carve. |
Test names should make the autonomous-vs-operator carve visible. |
Focused hook/unit tests under test/playwright/unit/hooks/. |
Decision Record impact
None. This aligns with the existing deference-register hook substrate from #13674 and does not amend an ADR.
Acceptance Criteria
Out of Scope
- No generic expansion to all conditional phrases.
- No changes to the operator-dialogue carve.
- No changes to lane-state parsing or no-hold state semantics.
- No new hook architecture.
Related
Related: #13674
Retrieval Hint: deferencePhraseMatch DEFERENCE_PHRASES Your steer on if you'd rather helpful assistant deference hook
Context
A live operator side quest on 2026-06-23 identified two additional deference-register phrases that should be caught by the autonomous-turn Stop-hook phrase matcher:
Your steer onif you'd ratherThe current matcher surface is
ai/scripts/lifecycle/deferencePhraseMatch.mjs. ItsDEFERENCE_PHRASESlist is intentionally tight and fixture-backed; it already excludes broad near-misses likeshould I,shall I,happy to,no rush, andwhenever you want. These two additions are narrower than those broad forms and map to the same handoff-of-maintainer-judgment pattern the hook is meant to mirror.Release classification: boardless / post-release tooling hardening. This is not a release blocker.
Live latest-open sweep: checked the latest 20 open issues at 2026-06-23T00:46:32Z; no equivalent open ticket found. A2A in-flight sweep: checked latest 30 messages at the same boundary; no competing lane-claim or lane-intent for this phrase addition. KB ticket sweep for
deferencePhraseMatch DEFERENCE_PHRASES Your steer on if you'd ratherfound no equivalent ticket. Exact local sweep found the historical deference-hook origin surfaces and prior real prose containingif you'd rather, but no open duplicate for adding these fixtures.The Problem
The deference hook currently catches phrases such as
would you like me to,unless you want me,want me to,do you want me,your call, andyour move. Recent live coordination produced adjacent wording that has the same behavior at an autonomous turn terminal:Your steer onasks the operator to decide a lane that the agent should classify or route.if you'd rathermakes the agent's next action conditional on operator preference when peer/lane evidence should decide.Without adding these fixtures, the hook remains blind to two observed forms of the same Helpful Assistant regression register.
The Architectural Reality
ai/scripts/lifecycle/deferencePhraseMatch.mjsowns the shared phrase list, phrase matching, and reminder text consumed by lifecycle Stop hooks. The helper uses case-insensitive boundary matching, so the new phrases should be added as literal lower/upper-case strings inDEFERENCE_PHRASESand covered by the existing focused unit-test surface.The existing JSDoc states that broadening the list requires a falsifier-backed follow-up so the hook stays a mirror rather than a noisy leash. This ticket is that follow-up: two concrete phrases, not a generic widening of all conditional or polite language.
The Fix
Add the following strings to
DEFERENCE_PHRASESinai/scripts/lifecycle/deferencePhraseMatch.mjs:Your steer onif you'd ratherUpdate the focused hook tests under
test/playwright/unit/hooks/so both phrases are covered by the matcher/autonomous-turn behavior without changing the operator-dialogue carve.Contract Ledger
DEFERENCE_PHRASESinai/scripts/lifecycle/deferencePhraseMatch.mjsYour steer onandif you'd ratheras tight deference fixtures.should Iorhappy to; keep phrase matching fixture-backed.detectDeferencePhrase()and hook decision testsnull/ allowed behavior via the existing carve.test/playwright/unit/hooks/.Decision Record impact
None. This aligns with the existing deference-register hook substrate from #13674 and does not amend an ADR.
Acceptance Criteria
DEFERENCE_PHRASEScontainsYour steer on.DEFERENCE_PHRASEScontainsif you'd rather.Out of Scope
Related
Related: #13674
Retrieval Hint:
deferencePhraseMatch DEFERENCE_PHRASES Your steer on if you'd rather helpful assistant deference hook