# Weatherreporter v0.9.0 Weatherreporter `v0.9.0` replaces its external Scriptorium execution path with an in-process Promptkit integration and makes prompt preparation, execution, validation, and failure artifacts first-class parts of each report run. ## Summary - Promptkit `v0.4.0` now executes all generated text for Daily, Today, Tomorrow, and Hourly reports. - The four exact-version prompts and their JSON Schemas are embedded in the Weatherreporter binary. - Prompt preparation and execution have separate durable, redacted provenance records, while sensitive prompt debugging is explicit and stored outside the managed workspace. - Weather API collection now performs a warmup request and retries transient transport, read, and selected HTTP failures. - Release binaries now report their embedded version and are published with checksums through a guarded Woodpecker pipeline. ## Compatibility This pre-`v1` minor release contains intentional configuration, CLI, and artifact changes that require review when upgrading from `v0.8.0`. - The `scriptorium:` configuration section is no longer supported. A file that contains it fails with a migration error instead of silently ignoring it. Use `promptkit:` configuration instead. - The previously exposed but unfinished three-day, weekend, and storm report surfaces have been removed. Supported report IDs and `generate` commands are `daily`, `today`, `tomorrow`, and `hourly`. The retired `storm_id` Distributor template variable is also no longer accepted. - Generate and batch result items now expose `preparationPath` and `executionPath` instead of the Scriptorium-oriented `preflightPath` and `generatedTextResultPath`. An opt-in prompt capture may also add `llmDebugPath`. - New runs write `weatherreporter.metadata.v2`, which records Promptkit preparation and execution paths. Inspection and prior-run lookup continue to read existing `weatherreporter.metadata.v1` records. - The built-in `weather_api.precision` default changed from `1` to `0`. Configurations that explicitly set a value retain that value. - Report prose may differ because the embedded prompt corpus, structured output path, alert presentation, and SPC background context have changed. The documented Go version remains 1.26. Distributor integration remains at `v0.5.0`. Existing managed workspaces do not require conversion. ## Upgrade Replace the old Scriptorium block in the Weatherreporter configuration. The smallest equivalent Promptkit block is: ```yaml promptkit: timeout: 2m ``` The embedded prompts default to the Promptkit `gemini-flash-latest` profile. Ensure that the selected profile's credential environment variable is present, or configure `promptkit.profile`, an external `profile_file` or `profile_dir`, or the optional `promptkit.local` backend. Direct per-request API keys are not supported by Weatherreporter. Before upgrading automation or downstream processing: 1. remove any `three-day`, `weekend`, or `storm` command, report override, and `storm_id` template usage; 2. update consumers of action-summary JSON to use the new preparation and execution path fields; 3. decide whether to retain the new precision default or explicitly configure the previous value; and 4. preserve the existing workspace if historical V1 runs must remain inspectable. Scriptorium, its executable configuration, and its external prompt corpus are no longer needed by Weatherreporter. See the [configuration reference](../config.md), [CLI reference](../cli.md), and [Promptkit integration](../integrations/promptkit.md) for the current contracts. ## Changes ### Prompt Execution And Artifacts - Added a project-owned Promptkit adapter with exact prompt and profile inspection, prepare-once execution, error classification, and bounded execution timeouts. - Embedded version `1.0.0` of the Daily, Today, Tomorrow, and Hourly prompts and their private generated-text schemas. - Added durable preparation and execution receipts with prompt, profile, backend, model, hashes, timings, validation status, classified failures, and paths to every artifact reached during the run. Credentials, endpoints, rendered messages, request parameters, and generated content are excluded from these managed records. - Added `--llm-debug-dir` for explicitly requested content-rich diagnostics. Debug output must use an absolute path outside the managed workspace and is written with restrictive filesystem permissions. - Preflight now validates each exact prompt and selected profile before weather collection. Batch execution validates every candidate first, collects once, and retains independent report progress and failure artifacts. See the [operations guide](../operations.md) for artifact layout, inspection, debug handling, and recovery. ### Weather Collection And Report Content - Added a `/conditions/current` warmup before source collection and automatic retry for transient transport and response-read failures and HTTP `408`, `429`, `500`, `502`, `503`, and `504` responses. - Changed the default upstream precision query value to `0`. - Added embedded background definitions for recognized SPC categorical, tornado, wind, and hail outlook products. - Made the Alert Digest more concise: alert descriptions are omitted, and an SPC-only digest is rendered only for Enhanced, Moderate, or High categorical risk. - Removed duplicated alert detail from the prompt-facing metadata module; the alert digest remains its single prompt-facing owner. See the [Weather API integration](../integrations/weatherapi.md) for the request, retry, and response contract. ### CLI, Documentation, Testing, And Releases - Added `weatherreporter --version`; tagged binaries report `v0.9.0`, while ordinary local builds report `development`. - Reworked CLI summaries and inspection coverage around the Promptkit artifact lifecycle and retained partial-result behavior. - Reorganized contributor, policy, user, operator, integration, template, and internal documentation around explicit canonical owners. - Added focused single-report, batch, CLI, Promptkit adapter, durable-state, and artifact-path coverage while simplifying orchestration internals. - Added guarded tag validation and reproducible release builds for Linux, macOS, and Windows on `amd64` and `arm64`, with SHA-256 checksums and changelog-backed Gitea releases.