# 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/ .briefing.json .metadata.json data-packages/ daily/ YYYY-MM-DD/ .data_package.json preflight/ daily/ YYYY-MM-DD/ .render.json reports/ daily/ .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 ## 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.