v1.3.0 Phase B: summarizer hygiene, quiet-hours mode, guarded follow-ups #105
No reviewers
Labels
No labels
area:ai
area:ci-cd
area:notifications
area:observability
area:public-pages
backlog
bug
duplicate
enhancement
help wanted
invalid
question
type:decision
type:feature
type:infra
type:maintenance
type:security
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v2.0.0
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot!105
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/v1.3.0-phaseB-summarizer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Completes the v1.3.0 summarizer work. With all new flags at their defaults, runtime behavior is unchanged except two intended always-on fixes (the token-formula fix and the #16 hygiene/validator, which only neutralize delimiters and reject fabricated URLs).
#16 / F-33 — prompt hygiene + validators (always-on, low-risk)
_output_tokens_for_charswas a no-op —max(4096, min(max_chars*6, 4096))always returned 4096. Nowmax(4096, min(max_chars*6, 8192)): 4096 floor for reasoning-model headroom, scales with the char budget, 8192 cap. Theextra_configoverride branch is unchanged.source_text/source_titleare sanitized (zero-width space after<in delimiter tags) before interpolation into the<official_source>/<metadata>prompt blocks, so malformed or hostile feed content can't break out of its block. Stored DB text is untouched.The real-world Qwen quality-tracking part of #16 is an ongoing operational activity (needs a running model + real events), not a code deliverable — see the closing note on the issue.
#19 — quiet-hours AI mode (
QUIET_HOURS_AI_MODE, defaultreplace)During quiet hours, non-critical (watch/advisory) alerts either have the verbose raw product replaced by the concise AI summary (default) or supplemented by it. With no AI summary configured,
replacedegrades to today's full suppression — raw verbose text is still never sent in quiet hours. Warning-class alerts bypass quiet hours entirely and are unaffected. The AI follow-up opens its own DB session and never touchesSentAlert/ delivery-outbox / public-page bookkeeping, so the(nws_alert_id, location_id, channel_id)dedup invariant is intact.#21 — guardrailed timing/impact follow-ups (
AI_TIMING_IMPACT_FOLLOWUPS_ENABLED, defaultfalse)Ships dark. When enabled, a bounded prompt clause permits approximate onset/duration/impact synthesized strictly from the official text + structured context, preserving uncertainty and inventing no towns/roads/distances/exact times; existing validators still guard over-reach. With the flag off the prompt is byte-for-byte unchanged.
Testing
Full suite green on the dev server: 658 passed (14 new tests covering the token formula, delimiter neutralization vs. stored-text preservation, the URL validator, the #21 clause on/off, and the #19 mode decision).
Closes #16, #19, #21
🤖 Generated with Claude Code