1.7 KiB
1.7 KiB
Briefing Internals
This document describes the implemented briefing package boundary.
Purpose
internal/briefing builds structured report-specific briefing packages from
forecast summaries and report metadata. The package currently implements the
Daily briefing only.
Inputs and Outputs
Inputs:
- resolved report definition and valid period
- forecast bundle
- derived daily forecast summary
- configured units and timezone
Output:
briefing.PackageJSON containing common metadata and Daily briefing content
Boundaries
- Briefings are structured weather facts and context for later prompt input.
- This package does not fetch weather data, compare prior snapshots, build
scriptoriumdata packages, or render final report prose.
Behavior
- Common metadata includes schema version, RunID, report ID, variant, prompt ID, generation time, units, timezone, valid period, source location, source provenance, hashes, and source warnings.
- Daily content includes bottom-line inputs, daypart summaries, relevant alerts, outdoor window inputs, narrative periods, discussion context, and weather story context when available.
- Briefing JSON is written atomically by
briefing.Save.
Failure Behavior
- Daily briefing construction requires a Daily report definition and a derived daily forecast summary.
- Save failures include path and operation context.
Tests
Inspect:
internal/briefing/daily_test.gointernal/app/app_test.gointernal/cli/root_test.go
Invariants
- Weather facts come from normalized and derived source data.
- Briefing output remains JSON-inspectable.
- LLM prompt input packaging and
scriptoriumexecution remain outside this boundary.