Deterministic local-time normalization for all NWS/SPC timestamps #20
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot#20
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Target release: v1.3.0 (cross-cutting — could be pulled into v1.1.0)
Normalize all NWS/SPC timestamps to location-local time deterministically before they appear in LLM prompts or outbound messages. This benefits all notification paths, not just AI summaries, so it could be scheduled earlier if desired.
Source:
docs/ROADMAP.md→ Local LLM Alert Summarization → "Later phases".Audit note (2026-07-18)
From the 2026-07 codebase audit (
docs/.internal/report-2026-07-17.md), finding F-35.This issue's body overstates the remaining work. Outbound-notification local-time normalization already shipped in May 2026 —
format_location_datetime(app/services/time_formatting.py) is used across all notifiers and templates (grep: 15 files; commitse527b71,42dea36completed the notification-path normalization audit).Remaining scope is narrower: guarantee normalization inside the LLM prompt context (
app/services/ai_context.py) and any remaining raw-Ztimestamps in structured metadata. Re-scope this issue before pulling it into a milestone; consider re-labeling toarea:aionly (it currently also carriesarea:notifications, which the shipped work already covers).Done in #104 (merged). Per the F-35 note, the notification-path normalization already shipped in May; the remaining gap was the AI prompt context. Audited
ai_context.py: existing timestamps already route throughnormalize_timestamp(machine UTC + location-local), and the new radar/SPS fields are localized viaformat_location_datetime— no rawZstrings reach the model. A test asserts the correct local offset and absence of "UTC" wording.