Files
weatherreporter/docs/roadmap/future.md

189 lines
7.2 KiB
Markdown
Raw Normal View History

2026-05-29 20:02:56 +00:00
# Future Roadmap
2026-07-31 01:39:33 +00:00
This roadmap contains future work only. Each section identifies its planning
status; current behavior is documented outside `docs/roadmap/`.
2026-05-29 20:02:56 +00:00
2026-08-01 19:16:44 +00:00
## Upstream Forecast Change Product
Status: Proposed upstream feature request; unimplemented.
2026-08-02 00:15:41 +00:00
Weatherreporter's local Recent Changes feature was removed by the accepted
[stateless execution decision](../adr/0001-stateless-execution.md). Forecast
2026-08-01 19:16:44 +00:00
version history and comparison are better owned by the Weather API, where the
underlying forecast issuances can be retained and compared consistently for
all consumers.
A future Weather API feature should expose a structured change product with:
- explicit current and baseline forecast issuance timestamps or identifiers;
- documented baseline selection, such as a requested comparison timestamp,
preceding issuance, or fixed rolling period;
- location, timezone, and half-open valid-period identity;
- typed changed values with previous and current values and units;
- stable change categories for temperature, precipitation probability and
timing, wind gusts, alerts, and aggregate hazards;
- an API-owned significance classification or enough structured information
for a stateless consumer to apply a documented presentation threshold; and
- deterministic ordering, missing-baseline behavior, and source metadata.
The API should compare forecast versions, not track a Weatherreporter client's
"previous run." It should not require consumer identity, mutable cursors, or
Weatherreporter-managed history. A missing baseline should be a normal empty
result rather than an error.
Once a stable upstream contract exists, a separate Weatherreporter roadmap may
reintroduce change commentary by collecting that product and mapping it into a
curated prompt-facing module. There must be no local snapshot fallback. The
ordinary Weatherreporter process must remain stateless, and the upstream
feature should have deterministic fixtures before adoption.
## Automatic Storm Monitoring
2026-05-29 20:02:56 +00:00
2026-07-31 01:39:33 +00:00
Status: Proposed and unimplemented.
2026-05-29 20:02:56 +00:00
Storm reporting, whether manual or automatic, is unimplemented.
2026-06-15 13:00:59 +00:00
Possible direction:
1. Detect candidate storm events from alerts, forecast discussion, weather
story context, hourly thresholds, and material forecast changes.
2. Evaluate candidates through Promptkit or another narrow evaluator adapter.
2026-08-01 19:16:44 +00:00
3. Keep any required storm lifecycle state in the upstream service or another
explicitly designed external owner rather than silently reintroducing a
Weatherreporter workspace.
4. Generate or update a storm report only when a meaningful event is present.
2026-06-15 13:00:59 +00:00
5. Suppress ordinary low-impact thunder or rain chances.
2026-05-29 20:02:56 +00:00
Possible lifecycle states:
- `none`
- `monitoring`
- `active_report`
- `escalated`
- `deescalating`
- `resolved`
2026-06-15 13:00:59 +00:00
Before implementation, the design must preserve scheduled report behavior,
inspectable evaluator failures, and fixture coverage for deterministic
candidate detection.
2026-05-29 20:02:56 +00:00
2026-06-15 13:00:59 +00:00
## Future Report Types
2026-05-29 20:02:56 +00:00
2026-07-31 01:39:33 +00:00
Status: Proposed and unimplemented.
Possible future report types:
2026-05-29 20:02:56 +00:00
2026-06-15 13:00:59 +00:00
- a short-fuse planning report distinct from the implemented Hourly Report, if
a separate product is needed
- event-specific reports with stable event IDs
- storm review or yesterday-style reports using historical observations
- archive-focused report variants if generated report history becomes a
2026-06-15 13:00:59 +00:00
first-class product
2026-07-31 01:39:33 +00:00
New reports should preserve the boundaries documented in the [report registry
internals](../internal/report-registry.md).
2026-06-15 13:00:59 +00:00
## Future Modules
2026-07-31 01:39:33 +00:00
Status: Proposed and unimplemented.
Possible future modules:
2026-06-15 13:00:59 +00:00
- `hourly_table` for compact valid-period hourly facts
2026-08-01 19:16:44 +00:00
- `forecast_delta` after an upstream forecast-change product exists
- `weekend_planning` if weekend-specific planning guidance needs a dedicated
2026-06-15 13:00:59 +00:00
deterministic stanza
- `storm_window_summary` if manual or automatic storm reports need a dedicated
2026-06-15 13:00:59 +00:00
prompt-facing storm-window module
- separate AFD section aliases, such as `afd_key_messages`,
`afd_short_term_text`, and `afd_long_term_text`, if separate stanzas prove
2026-06-15 13:00:59 +00:00
more useful than `area_forecast_discussion.options.sections`
- SPC, radar, QPF, snow/rain total, or historical-observation modules once
2026-06-15 13:00:59 +00:00
upstream sources and report requirements exist
QPF fields such as `measurable_qpf_total_in` and `max_hourly_qpf_in` should
remain omitted until a real upstream quantitative precipitation source is
represented in `CollectedFacts`.
2026-07-31 01:39:33 +00:00
Future module work should preserve the boundaries documented in [fact
contracts](../internal/facts.md), [module internals](../internal/module.md), and
[briefing internals](../internal/briefing.md):
- keep upstream collection in app orchestration
- keep upstream collection out of modules
2026-06-15 13:00:59 +00:00
- keep broad reusable calculations in `DerivedFacts`
- keep prompt-facing field shape inside module builders
- use typed options for configurable module behavior
2026-08-01 19:16:44 +00:00
- keep module output structured and deterministic
2026-05-29 18:27:34 -05:00
## Distributor Notification Enhancements
2026-06-07 23:50:55 +00:00
2026-07-31 01:39:33 +00:00
Status: Proposed and unimplemented.
Single-report and batch Distributor notification are implemented. Current
behavior is documented in the [Distributor adapter guide](../internal/distributor-adapter.md),
[Distributor integration guides](../integrations/distributor/), and
[operations guide](../operations.md). The following enhancements remain
unimplemented:
2026-06-07 23:50:55 +00:00
2026-06-15 13:00:59 +00:00
- `failure_policy: warn`
- durable upload retry queues
- distributor-specific CLI flags
- destination routing, Markdown-to-HTML transformation, public URLs, or nginx
layout inside weatherreporter
2026-06-07 23:50:55 +00:00
2026-06-15 13:00:59 +00:00
Any distributor enhancement should preserve the adapter boundary:
2026-06-07 23:50:55 +00:00
weatherreporter selects explicit generated files and submits source bundles,
while distributor owns destination routing and publication behavior.
## Comparison Profile Diagnostics
Status: Proposed and unimplemented.
Comparison preflight failures could identify the profile being inspected and
preserve a safe, actionable Promptkit cause, such as a duplicate profile ID,
instead of reporting only a generic `profile_load` failure. Any improvement
must continue to omit credentials, endpoints, and other sensitive profile
values. Regression coverage should include a comparison that mixes built-in
and configured-directory profiles and a directory containing duplicate IDs.
## Alternate Runtime Integrations
2026-07-31 01:39:33 +00:00
Status: Proposed and unimplemented.
These ideas remain unimplemented:
2026-06-15 13:00:59 +00:00
- native LLM client inside `weatherreporter`
- database-backed state
- public HTTP API
- multi-location selection
- daemon mode
- multi-user authorization
- plugin system
- dynamic module loading
- user-defined module code
- YAML-defined module schemas
- module-owned Weather API fetching
Each item needs its own design note before implementation. Non-roadmap docs
must not describe these as available behavior.
2026-06-15 13:00:59 +00:00
## Deferred Refactors
2026-07-31 01:39:33 +00:00
Status: Deferred.
2026-06-15 13:00:59 +00:00
These refactors should remain deferred until new requirements or recurring
maintenance costs make the added abstraction worthwhile:
- broad briefing weather-signal consolidation
- generic workflow engine
- Cobra migration
- manifest, resume, or progress system
- global test helper package
- logging subsystem
2026-05-29 18:27:34 -05:00
2026-08-01 19:16:44 +00:00
Any future implementation should preserve the public CLI, report-output
contract, report identities, module boundaries, and adapter boundaries in
effect when that work begins unless a separate roadmap explicitly changes
them.