diff --git a/src/headless-events.ts b/src/headless-events.ts index 8a64e96c0..4710db020 100644 --- a/src/headless-events.ts +++ b/src/headless-events.ts @@ -174,10 +174,13 @@ export function isMilestoneReadyNotification( ): boolean { if (event.type !== "extension_ui_request" || event.method !== "notify") return false; - // Structured: approval_request+blocking is the milestone-ready signal. const meta = getEventMetadata(event); - if (meta?.kind === "approval_request" && meta.blocking === true) return true; - // Fallback: legacy text heuristics. + if (meta !== undefined) { + // Metadata present: it is the authoritative source. Do not fall back to + // text matching — the emitter declared the event kind explicitly. + return meta.kind === "approval_request" && meta.blocking === true; + } + // No metadata — fall back to legacy text heuristics. return isMilestoneReadyText(String(event.message ?? "")); }