Reconcile internal stateless documentation
This commit is contained in:
@@ -1,48 +1,24 @@
|
||||
# Application Orchestration Internals
|
||||
|
||||
`internal/app` owns top-level generation, batch, collection, inspection, and
|
||||
notification ordering after the CLI has parsed arguments and loaded configuration.
|
||||
`internal/app` owns stateless report generation, batch execution, atomic output publication, and notification coordination after `internal/cli` has parsed arguments and loaded configuration. The user contract is owned by the [CLI reference](../cli.md) and [operations guide](../operations.md).
|
||||
|
||||
## Generation
|
||||
## Single-Report Flow
|
||||
|
||||
`GenerateDetailed` resolves one of the four report definitions, initializes an
|
||||
optional debug root, and inspects the exact Promptkit prompt/profile before it
|
||||
collects weather or writes managed state. A configured global profile selects
|
||||
every report in the action; otherwise the exact prompt selects its default
|
||||
logical profile. Inspection keeps only the selected profile ID and effective
|
||||
backend/model needed by the project-owned execution contract. It then builds facts and modules,
|
||||
saves the YAML data package, persists preparation metadata from the executor
|
||||
callback, executes the prepared prompt, saves execution provenance and raw
|
||||
output, validates generated text, renders Markdown, and optionally copies or
|
||||
notifies from the managed report.
|
||||
`GenerateDetailed` resolves the requested report and output destination, then initializes an optional explicit debug writer. It validates the exact Promptkit prompt and selected profile before collecting weather data. The resolved profile, backend, and model are carried in the active result.
|
||||
|
||||
After a completed prompt run, each successfully written downstream artifact is
|
||||
atomically added to the execution record before the corresponding metadata
|
||||
rewrite. Later failures therefore leave the original Promptkit outcome and its
|
||||
last durable set of reached paths inspectable.
|
||||
The workflow builds facts, a module snapshot, briefing metadata, and the YAML prompt package in memory. It executes Promptkit, validates the returned generated text, builds a render context, and renders Markdown. `fileutil` atomically writes the completed Markdown to the selected output path. Only after that write succeeds does single-report notification run.
|
||||
|
||||
Failure results retain all safe paths reached so far. Validation rejection
|
||||
persists raw output and execution provenance but does not render a report.
|
||||
Failures return an active partial result with safe identity, profile, warning, validation, debug, and output information when available. A failure before publication leaves an existing destination unchanged. A notification failure retains the newly published output.
|
||||
|
||||
## Batches
|
||||
|
||||
`RunBatchDetailed` constructs a single debug writer and uses the request's
|
||||
single executor. Before collection it inspects Today, Tomorrow, and Daily for
|
||||
morning, or Tomorrow and Daily for evening, deduplicating inspection of a
|
||||
shared selected profile. It then collects once, plans eligible Daily dates, and calls the
|
||||
same prompt-generation core sequentially for each planned report. Per-report
|
||||
notification is suppressed; a failed report does not stop later reports.
|
||||
`RunBatchDetailed` captures one output directory, creates at most one explicit debug writer, and uses one executor. Before collection it validates the prompt and profile candidates for the selected batch. It collects once, calculates the data-dependent plan, and invokes the same generation core sequentially for each planned report.
|
||||
|
||||
Batch notification is skipped when disabled or when any report failed.
|
||||
Successful notification uses the completed managed report paths only. Batch
|
||||
items retain preparation, execution, and optional debug paths when reached.
|
||||
Each item has an independent result. A failed item does not stop later items; successful items retain their published output paths. Per-report notification is suppressed during a batch. Batch notification runs only after every planned report has published successfully. It is skipped when any item failed.
|
||||
|
||||
## Inspection And Boundaries
|
||||
## Boundaries And Verification
|
||||
|
||||
Inspection loads persisted state only. It does not collect weather, invoke
|
||||
Promptkit, or upload reports. The app coordinates project-owned contracts but
|
||||
does not parse flags, load YAML, implement transport, construct provider SDKs,
|
||||
or define report-period policy.
|
||||
The package does not parse flags, load YAML, implement transport, construct provider SDKs, or define report-period policy. Prompt, profile, weather, and Distributor implementations remain behind project-owned contracts.
|
||||
|
||||
Focused checks:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user