fix(agents): honest outcomes for empty completions, schema violations, and hook failures master
- Gemini generate path returns "" on every empty completion (all finish reasons), matching Anthropic/OpenAI; deleted _format_completion_message + its 7 tests. No more fabricated "Completed." prose landing as model output. - generate/agenerate raise SchemaValidationError(ValueError) on schema-invalid (and now-unified empty) completions; every json_schema caller family degrades observably (None/[]/fallback/RuntimeError/req.error). generate_with_result unchanged (still non-raising; talent executor contract preserved). - detect_created feeds an explicit "exiftool metadata unavailable" sentinel to the prompt on exiftool failure instead of the exception string. - A raised pre/post talent hook yields a terminal hook_error outcome (not a clean completed): no day-log "ok" line, zero provider fallback on the cogitate path, error names hook + talent + underlying exception. Providers re-raise TalentHookError past their generic error handler so exactly one terminal error is emitted. Unified _terminal_error_evented gate also fixes the pre-existing no_output "ok" mislog. Pulse/steward self-caught skip_reason still records a clean skip. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>