# Weatherreporter v0.10.0 Weatherreporter `v0.10.0` makes report execution stateless, adds stable weather-specific Promptkit profiles, and turns every successful generation into one atomic operator-owned Markdown output. ## Summary - Ordinary generation no longer creates or depends on a managed workspace, historical run artifacts, metadata, receipts, or prior snapshots. - `generate` and `run` now publish directly to operator-selected paths, with useful current-directory defaults when output flags are omitted. - Local Recent Changes comparison and the historical `inspect` command family have been removed. - Promptkit `v0.5.0` and three embedded logical profiles provide a stable model ladder with complete file- or directory-based overrides. - Prompt input and generated-text contracts have been tightened, and output, cancellation, batch preflight, notification, and partial-failure behavior have focused offline coverage. ## Compatibility This pre-`v1` minor release intentionally breaks CLI, configuration, prompt-input, action-summary, and workspace contracts from `v0.9.0`. - The `workspace:` and `recent_change:` configuration sections are no longer supported. Strict configuration loading rejects them. - The `inspect reports`, `inspect metadata`, `inspect modules`, `inspect data-package`, `inspect prior`, and `inspect sources` commands have been removed. Weatherreporter no longer reads V1 or V2 run metadata or other historical workspace artifacts. - Every successful `generate` writes exactly one Markdown file. Without `--out`, Daily writes `daily-YYYY-MM-DD.md` and Today, Tomorrow, and Hourly write `today.md`, `tomorrow.md`, and `hourly.md` in the invocation's current directory. `--out` selects that file rather than creating an extra copy of a separately managed report. - `run` writes selected outputs beneath the current directory unless `--out-dir` selects another directory. Successful items remain available when another batch item fails. - Action summaries no longer expose managed report, metadata, snapshot, data package, prompt preparation, prompt execution, generated-text, render-context, or notification-receipt paths. They retain the final `outputPath`, optional `llmDebugPath`, safe effective profile/backend/model details, validation, warnings, notification status, and safe errors. - Batch report items no longer contain per-report notification fields. Batch notification is represented once at the top level. The `total`, `succeeded`, and `failed` counters describe reports only, so notification failure can produce a failed action while `failed` remains `0`. - The prompt data package advances from `weatherreporter.data_package.v3` to `weatherreporter.data_package.v4` and removes `recent_changes`. All four embedded prompts advance from `1.1.0` to `2.0.0`. - Generated-text schemas now require string-valued `precipitation_timing`; the model returns an empty string when there is no timing text. The unused `confidence` field has been removed and is rejected as an unknown field. Existing operator-owned Markdown files remain valid. Existing workspace trees are ignored rather than migrated or deleted. Distributor continues to receive the completed Markdown report, but its source is now the selected operator output rather than a managed report copy. ## Upgrade Before replacing `v0.9.0`: 1. Remove `workspace:` and `recent_change:` from configuration files. 2. Give scheduled commands a predictable working directory or explicit `--out` or `--out-dir` destination. Confirm that these selected files may be atomically replaced on later successful runs. 3. Remove historical `inspect` invocations and update action-summary consumers to use `outputPath` and the remaining active-workflow fields. 4. Decide whether old workspace contents have any external retention value. Weatherreporter no longer reads them; after review, they may be removed manually using the narrowly scoped procedure in the operations guide. 5. Review Promptkit profile selection and credentials. Hourly defaults to `weather-light`; Daily, Today, and Tomorrow default to `weather-balanced`. A configured `promptkit.profile` still overrides every report in one action. The embedded logical profiles are: | Profile | OpenRouter model | Default use | | --- | --- | --- | | `weather-light` | `deepseek/deepseek-v4-flash` | Hourly | | `weather-balanced` | `~google/gemini-flash-latest` | Daily, Today, Tomorrow | | `weather-deep` | `~anthropic/claude-sonnet-latest` | Explicit selection | Override a complete same-ID definition through `promptkit.profile_file` or `promptkit.profile_dir` to use different models or a local OpenAI-compatible endpoint. Definitions are replaced rather than field-merged, and a malformed matching override fails instead of silently falling back. See the [CLI reference](../cli.md), [configuration reference](../config.md), [operations guide](../operations.md), and [Promptkit integration](../integrations/promptkit.md) for the exact current contracts. ## Changes ### Stateless Execution And Operator-Owned Outputs - Removed local forecast-change comparison, prior-snapshot selection, durable module and prompt artifacts, managed reports, metadata compatibility, run discovery, notification receipts, and the complete `internal/state` subsystem. - Added an Accepted architecture decision recording the stateless transformation pipeline and operator-owned output boundary. - Kept weather, facts, modules, prompt input, generated text, and render context in memory during ordinary execution. - Made output publication atomic and ensured cancellation or deadline expiry observed before publication leaves an existing destination unchanged. - Added complete batch-destination preflight before the first report prompt, so a structural collision cannot leave an unreported partial batch. - Preserved successful outputs after report or Distributor failure. Batch notification runs only after every selected report succeeds. ### Promptkit Profiles And Prompt Contracts - Upgraded Promptkit from `v0.4.0` to `v0.5.0`. - Added embedded `weather-light`, `weather-balanced`, and `weather-deep` profiles and mapped each exact prompt to its logical default. - Added embedded-profile fallback after configured `profile_file` or `profile_dir` lookup, allowing operators to replace a logical profile without changing report definitions. - Added a maintained local-endpoint example for replacing `weather-light`. - Advanced the four prompt definitions to `2.0.0` and the curated data package to v4 after removing Recent Changes. - Required `precipitation_timing`, normalized whitespace-only timing to an empty string, and removed the unused confidence value. ### CLI, Reliability, Documentation, And Testing - Simplified action summaries to active workflow identity, output, model, validation, warning, debug, notification, and safe error information. - Made batch counters report-only while retaining failed action status and non-zero exit behavior for batch notification failure. - Kept prompt and profile inspection ahead of weather collection and validated every batch candidate before collecting once. - Replaced state-oriented workflow fixtures with focused generation, batch, output, cancellation, profile-resolution, Distributor, and CLI coverage. - Reconciled user, operator, integration, internal, policy, and ADR documentation around the implemented stateless architecture and removed completed temporary roadmaps.