92e574cb02
The #7904 fix stopped masking provider errors as "Handoff cancelled", but an empty or whitespace-only generation still fell through: whitespace-only text passed the `!handoffText` guard and produced a bogus handoff, while empty text returned undefined which the interactive /handoff caller mapped to "Handoff cancelled" with no detail and no log entry. Treat empty/whitespace-only output as a real failure: a user-initiated handoff throws "Handoff generation produced no content" (surfaced as "Handoff failed: ...") and logs it; auto-handoff keeps returning undefined so maintenance falls back to context-full compaction. Also log genuine handoff failures in the command controller so they persist for debugging. Fixes #7993