75 lines
2.0 KiB
Markdown
75 lines
2.0 KiB
Markdown
# Changes Internals
|
|
|
|
This document describes structured Recent Changes comparison.
|
|
|
|
## Purpose
|
|
|
|
`internal/changes` compares current and prior briefing packages and emits
|
|
compact change records for prompt input data packages.
|
|
|
|
## Inputs And Outputs
|
|
|
|
Inputs:
|
|
|
|
- prior briefing package
|
|
- current briefing package
|
|
- comparison thresholds from configuration
|
|
|
|
Outputs:
|
|
|
|
- ordered `changes.Change` items with type, message, previous value, and current
|
|
value where useful
|
|
|
|
## Boundaries
|
|
|
|
- This package compares structured briefing data only.
|
|
- It does not read filesystem state, find prior snapshots, render Markdown,
|
|
invoke Scriptorium, or compare generated report text.
|
|
|
|
## Config Fields Used
|
|
|
|
The app maps these fields into comparison thresholds:
|
|
|
|
- `recent_change.temperature_degrees`
|
|
- `recent_change.precip_probability_points`
|
|
- `recent_change.wind_gust_miles_per_hour`
|
|
- `recent_change.precip_timing_shift_minutes`
|
|
|
|
## External Adapters Used
|
|
|
|
None.
|
|
|
|
## State Or Manifest Behavior
|
|
|
|
None directly. The app loads prior briefing snapshots through `internal/state`
|
|
before calling comparison functions.
|
|
|
|
## Skip And Resume Behavior
|
|
|
|
No resume behavior. When the app has no prior comparable snapshot, it sends an
|
|
empty Recent Changes list without calling a comparison function.
|
|
|
|
## Failure Behavior
|
|
|
|
- Daily comparison requires both inputs to contain Daily briefing content.
|
|
- 3-Day comparison requires both inputs to contain 3-Day briefing content.
|
|
- Weekend comparison requires both inputs to contain Weekend briefing content.
|
|
- Storm Report currently has no comparison implementation, so the app leaves
|
|
Recent Changes empty for Storm reports.
|
|
|
|
## Tests
|
|
|
|
Inspect:
|
|
|
|
- `internal/changes/daily_test.go`
|
|
- `internal/changes/three_day_test.go`
|
|
- `internal/changes/weekend_test.go`
|
|
- `internal/app/app_test.go`
|
|
|
|
## Invariants
|
|
|
|
- Recent Changes are based on structured snapshots, not Markdown report text.
|
|
- Report compatibility is determined outside this package by report definitions
|
|
and state lookup.
|
|
- Output stays compact enough for prompt input.
|