Skip to content

Add a durable orchestration run manifest and deterministic resume command #8

Description

@tomvaillant

Problem

Splash orchestration state is spread across the conversation, accepted.json, report.json, generated artifacts, and implicit knowledge of which command ran last. After a restart, context compaction, terminal failure, or handoff to another journalist, there is no deterministic way to answer:

  • Which gate is this run at?
  • Which elements are accepted, produced, reviewed, approved, or delivered?
  • What is the next valid action?
  • Is the current report/artifact still the one that was reviewed?

The agent currently reconstructs this from prose and files, which is fragile and not auditable.

@rmdms

Suggested solution

Add a versioned run manifest and a deterministic resume command, for example:

bun skills/splash/scripts/resume.mjs exports/<slug>/run.json

The manifest should be the canonical orchestration ledger and contain no secrets. It should record:

  • Run ID, schema version, project/input paths, and hashes of article/data inputs.
  • Confirmed CADRAGE answers and per-element confirmed takeaways.
  • Accepted proposal IDs and hashes.
  • Per-element gate state: proposed, accepted, produced, reviewed, previewed, approved, delivered, blocked, or dropped.
  • Current artifact/report hashes, generation timestamps, and provenance links.
  • Structured review findings and overrides.
  • Requested deliverables and completed delivery artifacts.
  • Current gate plus the finite set of valid next actions.

Every gate command should update the manifest atomically after success. Failed commands should append a bounded failure event without advancing state. accepted.json and report.json can remain pipeline artifacts, but the run manifest owns orchestration progress and points to their exact versions.

resume should validate hashes/provenance, print a concise journalist-facing status, and emit the exact next command(s). It must never infer completion from conversation text alone.

Acceptance criteria

  • Closing and reopening a run resumes at the same gate with the same valid next actions.
  • Multi-element runs track each element independently without dropping unfinished work.
  • A newer artifact, stale report, or changed accepted spec is detected and cannot inherit prior review/approval.
  • Manifest updates are atomic and recover safely after interruption.
  • No API keys, tokens, article secrets, or full credentials enter the manifest.
  • Tests cover every gate transition, invalid transitions, crash recovery, stale provenance, schema migration, and multi-element resume.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions