Artifact bundle
Every orchestration attempt writes a bundle of durable artifacts under
.lumenflow/artifacts/orchestration/<INIT-ID>/attempt-<N>/. The bundle is
what lets humans, local agents, and compatible remote orchestration surfaces
resume the same initiative without trading emails or screenshots.
Directory layout
Section titled “Directory layout”Attempts are monotonic — once an attempt-N directory exists, the next
invocation writes attempt-(N+1). The attempt number maps 1:1 to the
launch_attempt field every receipt records.
plan.json — the dependency graph
Section titled “plan.json — the dependency graph”logical_waveis the dependency distance from a root. It does not change unless the graph changes.planned_waveis the orchestrator’s launch grouping — normally equal tological_wavebut a single planned wave can contain multiple logical waves if capacity or lane limits cluster them.
launch.json — durable handoff receipts
Section titled “launch.json — durable handoff receipts”Every handoff becomes a row in launch.json. Emitting a handoff is not
launching a worker — it just records that the orchestrator prepared
the artifact. Downstream evidence (worktree, delegation pickup, stamp)
is what promotes a WU past handoff_emitted.
status.json — reconciled initiative state
Section titled “status.json — reconciled initiative state”This file is the machine-readable truth. Every CLI / MCP / remote surface
renders a projection of it. The schema is enforced by the
control-plane SDK via
parseOrchestrationStatusDocument().
handoffs/ — per-WU bootstrap payloads
Section titled “handoffs/ — per-WU bootstrap payloads”One file per emitted handoff. The file extension reflects the
handoff_format:
.xmlfor Claude Code (Task invocations)..mdfor Codex / Gemini / generic markdown clients.
These files are the durable handoff source for launch-mode orchestration:
orchestrate:initiative -cand continuous mode print the file paths by default instead of inlining the payload bodies.--print-handoffsreplays the stored artifact content inline for manual copy/paste.- Supported clients receive the same load-bearing handoff contract as
wu:brief; orchestration reads from the stored artifact instead of assembling a second prompt shape for stdout.
Humans can copy these into their agent manually; cloud launchers ship them over the wire automatically.
Logical wave vs launch attempt
Section titled “Logical wave vs launch attempt”Two orthogonal concepts that people used to conflate:
logical_wave | launch_attempt | |
|---|---|---|
| Changes when… | The dependency graph changes. | Every time you invoke orchestrate:initiative -c. |
| Source of truth | The initiative’s WU YAML deps. | The next free attempt-N dir. |
| Filename usage | Field inside plan / launch / status. | The directory name itself. |
| Meaning | ”This WU is in wave 2 of the DAG." | "This is the 3rd time we tried to launch.” |
Older manifests under .lumenflow/artifacts/waves/ used wave-N to
mean both. INIT-056 retired that path; every new orchestration attempt
writes a bundle under orchestration/<INIT>/attempt-N/ instead.
Related
Section titled “Related”- Lifecycle — which phase writes what.
- Control-plane SDK —
OrchestrationPlanDocument,OrchestrationLaunchDocument,OrchestrationStatusDocumenttypes + parsers.