diff --git a/src/resources/extensions/sf/bootstrap/register-hooks.js b/src/resources/extensions/sf/bootstrap/register-hooks.js index 053c87277..1831de204 100644 --- a/src/resources/extensions/sf/bootstrap/register-hooks.js +++ b/src/resources/extensions/sf/bootstrap/register-hooks.js @@ -410,9 +410,13 @@ export function registerHooks(pi, ecosystemHandlers = []) { { noticeKind: NOTICE_KIND.SYSTEM_NOTICE }, ); } - // Forge-only: high/critical entries are queued as hidden follow-up repair - // work on startup, even outside /autonomous. The drain helper owns claim TTL - // and delivery failure retry, so this is safe to call opportunistically. + // Forge-only: queue the triage unit as hidden follow-up work on + // startup, even outside /autonomous. The dispatcher's own selector + // (selectInlineFixCandidates) decides eligibility — every open + // forge-local entry should reach a fix/promote/close decision per + // session, not just the high/critical ones. The drain helper owns + // claim TTL and delivery failure retry so this is safe to call + // opportunistically. const highBlocked = triage.stillBlocked.filter( (e) => e.severity === "high" || e.severity === "critical", ); @@ -423,11 +427,11 @@ export function registerHooks(pi, ecosystemHandlers = []) { "warning", { noticeKind: NOTICE_KIND.SYSTEM_NOTICE }, ); - const { dispatchSelfFeedbackInlineFixIfNeeded } = await import( - "../self-feedback-drain.js" - ); - dispatchSelfFeedbackInlineFixIfNeeded(process.cwd(), ctx, pi); } + const { dispatchSelfFeedbackInlineFixIfNeeded } = await import( + "../self-feedback-drain.js" + ); + dispatchSelfFeedbackInlineFixIfNeeded(process.cwd(), ctx, pi); } catch { /* non-fatal — self-feedback drain must never block session start */ }