Files
weatherreporter/docs/operations.md

87 lines
2.3 KiB
Markdown

# Weatherreporter Operations
## Normal Workflow
The implemented Daily generation workflow is:
```text
weatherreporter generate daily --date 2026-05-29
```
The command fetches weather data, builds the Daily briefing, builds the prompt
input data package, runs `scriptorium render`, runs `scriptorium run`, and
writes inspectable artifacts under the configured workspace.
## Filesystem Layout
The default workspace root is `workspace`.
```text
workspace/
snapshots/
daily/
YYYY-MM-DD/
<run_id>.briefing.json
<run_id>.metadata.json
data-packages/
daily/
YYYY-MM-DD/
<run_id>.data_package.json
preflight/
daily/
YYYY-MM-DD/
<run_id>.render.json
reports/
daily/
<run_id>.md
```
The Markdown report is written to the managed report path. When `--out` is
provided, the managed report is also copied to that path.
## Run Identifiers
Run IDs are based on generation time plus report ID, such as:
```text
20260529T100000.123456789Z_daily_today
```
Managed artifact filenames use the RunID so repeated runs for the same valid
date do not overwrite each other.
## Metadata
Each Daily generation writes metadata that links:
- RunID
- report ID and prompt ID
- generation time and valid period
- source location, source hashes, and source warnings
- briefing snapshot path
- prompt input data package path
- preflight output path
- rendered report path
## Recent Changes
When a prior comparable Daily briefing snapshot exists for the same valid local
date, the app compares structured briefing data before writing the prompt input
data package. Meaningful changes are included under `recentChanges.items`.
When no prior comparable snapshot exists, or no configured threshold is crossed,
the Recent Changes list is empty.
## Recovery
If render preflight exits nonzero after producing a result, the captured stdout,
stderr, exit code, and command are still written to the preflight artifact, and
metadata is still written for inspection.
If `scriptorium run` exits nonzero after writing a report, the generated report
and metadata remain available for inspection. Exit code `2` is still returned as
an error because it indicates validation failed, even if report output exists.
The application does not currently implement resume, cleanup, archive, or
remote storage behavior.