2.8 KiB
Briefing Internals
This document describes the implemented briefing package boundary.
Purpose
internal/briefing builds structured report-specific briefing packages from
resolved report metadata, forecast bundles, and derived forecast summaries.
Briefings are curated inputs for prompt data packages, not rendered report
prose.
Inputs And Outputs
Inputs:
- resolved report definition, generation time, timezone, and valid period
- forecast bundle with source provenance and warnings
- derived daily or period summaries where required
- configured units, timezone, and descriptive location context
Outputs:
briefing.Packagewith common metadata and one report-specific content object for Daily, 3-Day, Weekend, or Storm Report- optional
currentConditionsprompt context from normalized/conditions/currentdata when available - optional JSON file written by
briefing.Save
Boundaries
- This package selects and shapes weather facts for prompts.
- It does not fetch weather data, compare prior snapshots, build
data_packagefiles, invoke Scriptorium, or write workflow metadata.
Config Fields Used
The package receives configured units and timezone from the app layer. Daypart
configuration is consumed by internal/forecast before briefing builders run.
Configured location values are prompt context only; Weather API
sourceLocationId and sourceLocation remain source provenance.
Current conditions are copied from the normalized /conditions/current bundle
source only; observation station and timestamp fields remain provenance.
External Adapters Used
None directly.
State Or Manifest Behavior
briefing.Save writes briefing JSON atomically. Managed workspace placement is
owned by internal/state.
Skip And Resume Behavior
None. Builders either return a complete briefing package or an error.
Failure Behavior
- Daily briefing construction requires a Daily report definition and derived daily summary.
- 3-Day briefing construction requires a 3-Day report definition and at least one derived summary.
- Weekend briefing construction requires a Weekend report definition and at least one derived summary.
- Storm briefing construction requires a Storm Report definition and forecast bundle.
- Save failures include path and operation context.
Tests
Inspect:
internal/briefing/daily_test.gointernal/briefing/three_day_test.gointernal/briefing/weekend_test.gointernal/briefing/storm_test.gointernal/app/app_test.go
Invariants
- Briefings contain structured weather facts and source context.
- Common metadata includes RunID, report ID, prompt ID, valid period, source provenance, source hashes, source warnings, and configured prompt location.
- LLM prompt input packaging and Scriptorium execution remain outside this boundary.