Files
weatherreporter/docs/internal/changes.md

1.6 KiB

Changes Internals

This document describes the implemented structured change comparison boundary.

Purpose

internal/changes compares current and prior structured briefing snapshots and produces compact change records for prompt input data packages.

Inputs and Outputs

Inputs:

  • prior Daily briefing package
  • current Daily briefing package
  • configured Recent Changes thresholds

Output:

  • ordered changes.Change records with type, message, previous value, and current value where useful

Boundaries

  • This package compares structured briefing data only.
  • It does not read state directly, render Markdown, invoke scriptorium, or compare generated report text.

Config Fields Used

The app maps these config 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

Behavior

Daily comparison currently detects:

  • temperature changes crossing configured thresholds
  • precipitation probability and timing changes
  • alert additions and removals
  • peak wind gust changes
  • snow, ice, and thunder risk changes

When no prior comparable snapshot exists, the app sends an empty Recent Changes section in the data package.

Failure Behavior

Daily comparison requires both inputs to contain Daily briefing content.

Tests

Inspect:

  • internal/changes/daily_test.go
  • internal/app/app_test.go

Invariants

  • Recent Changes are based on structured snapshots, not Markdown report text.
  • Comparison thresholds come from configuration.
  • The comparison output remains compact enough for prompt input.