Skip to content

Quest: Export workflow runs as portable .xmd files #599

Description

@taras

Quest outcome

Export a workflow run as an immutable .xmd file that can leave CI, be
inspected on another machine, and become the source of a separate local run.

CI workflow run ──export──> build-failure.xmd
                              ├──inspect──> same recorded evidence
                              └──fork─────> new independent local run

The file never becomes the original live run. It cannot resume, answer, cancel,
delete, or otherwise advance that run.

Example

A CI workflow fails after changing its Workspace and exchanging several turns
with an Agent.

The CI host exports build-failure.xmd. A developer downloads that one file and
can:

  1. inspect the workflow's status and history without executing it;
  2. inspect the committed Workspace and exact workflow definition associated
    with that history;
  3. see whether each recorded Agent conversation can be continued elsewhere; and
  4. create a new local run from a selected checkpoint.

Creating the local run copies the selected workflow history and Workspace. It
does not modify or depend on the CI run.

When the selected history includes a portable Agent conversation, the
destination provider creates a separate conversation containing exactly the
turns through that checkpoint. Importing it executes no Prompt and produces no
new model response. Live Agent work becomes possible only after the new
workflow run has been committed successfully.

What the artifact contains

The artifact contains the complete XMD-owned evidence needed to understand and
fork the selected committed state:

  • the run record and committed journal history;
  • the selected event and Workspace state, called the artifact's frontier;
  • every Workspace byte and the associated Repository and Worktree records;
  • the root Markdown and component sources the workflow used, preserved together
    as its authenticated definition; and
  • a portability result for every recorded Agent session, plus an opaque provider
    bundle when that conversation can be reproduced through the selected
    checkpoint.

The artifact does not contain destination credentials, host paths, live
provider stores, executor locks, SQLite sidecars, open transactions, or other
authority belonging to the machine that exported it.

Stable public boundary

.xmd and the artifact's semantic format are public. SQLite is only the private
encoding used by format V1.

The artifact's identity comes from the workflow evidence it represents, not its
filename, location, or incidental SQLite layout. Copying or renaming the file
does not change that identity.

Readers open the file read-only and validate the complete container, manifest,
contents, and derived identity before returning any information. A malformed,
unsupported, or modified artifact returns no partial status, history, Workspace,
or Agent-portability result.

Export

Export takes the source run's executor lock before selecting the committed
frontier. This prevents the run from advancing while the artifact is assembled.

The output path receives the complete artifact atomically or remains unchanged.
Export never replaces an existing file and never changes the source run,
journal, Workspace, or provider state.

The command reports both:

  • a semantic artifact identity for the evidence represented; and
  • a SHA-256 digest for the exact file bytes transferred or published by CI.

Inspection

Artifact status and history use the existing workflow inspection commands with
an explicit artifact path.

Inspection:

  • executes no document;
  • starts no Agent or external provider;
  • materializes no live Workspace;
  • reads no workflow definition from Git;
  • writes no journal, migration, or sidecar; and
  • gives the same semantic result after the file is copied, renamed, or mounted
    read-only.

An artifact path is not a local workflow-run ID, and a directory of downloaded
artifacts does not become the local run registry.

Continue by forking

Continuation always creates a separate workflow run that can resume
independently, with a new identity.

The fork copies the selected journal prefix, Workspace state, and workflow
definition. It shares no writable state, lock, or provider-owned directory with
the artifact or source run.

The new run records its lineage:

  • artifact identity;
  • source run identity;
  • selected event; and
  • selected Workspace root.

Two artifacts containing different evidence cannot reuse one destination run
merely because they claim the same source run or checkpoint.

Agent conversation portability

Every Agent Prompt records the provider checkpoint needed to identify the exact
conversation prefix it produced.

For a portable conversation:

  1. the artifact carries a confidential, opaque provider bundle;
  2. the destination supplies its own authentication;
  3. a qualified provider creates a separate conversation containing exactly the
    turns through the recorded checkpoint, with no Prompt during import;
  4. the provider publishes the new conversation state and asserts its identity;
  5. XMD commits the new workflow-run mapping; and
  6. only then may the new run execute another Prompt.

Provider storage and XMD's workflow database cannot be committed as one
transaction. Recovery therefore identifies which side completed and either
finishes the same mapping or refuses conflicting state. It never creates a
second conversation silently.

A provider that cannot reproduce the exact prefix remains unsupported and
fails closed.

Provider support

  • Codex qualifies through App Server conversation forking at an exact recorded
    turn, without executing another turn.
  • Claude checkpoint transport is useful, but the currently proven command form
    executes a Prompt. Claude remains unsupported for this capability unless Provide a supported no-turn Claude exact-prefix Agent bundle lifecycle #626
    proves a supported no-turn path.
  • ACP session forking copies only the conversation head and does not satisfy an
    arbitrary exact-checkpoint request.

Delivered foundations

These stories remain complete. Agent-aware portability continues through the
remaining dependent stories.

Remaining blocking stories

Delivery order

  1. Complete Finalize XMD artifact V1 with Agent portability evidence #621.
  2. Complete Add the trusted Agent bundle lifecycle with Codex exact-prefix support #624 after Finalize XMD artifact V1 with Agent portability evidence #621 and the delivered Retain provider checkpoint tokens for workflow Agent Prompts #622.
  3. Complete Amend workflow artifact export with Agent bundle capture #625 after Finalize XMD artifact V1 with Agent portability evidence #621, Retain provider checkpoint tokens for workflow Agent Prompts #622, and Add the trusted Agent bundle lifecycle with Codex exact-prefix support #624.
  4. Complete Amend artifact inspection with intrinsic Agent forkability #623 after Finalize XMD artifact V1 with Agent portability evidence #621. It may proceed alongside Add the trusted Agent bundle lifecycle with Codex exact-prefix support #624 and Amend workflow artifact export with Agent bundle capture #625.
  5. Complete Fork an XMD artifact into independent workflow history #603 after all four prerequisite stories.

#626 may add supported no-turn Claude portability afterward. It does not block
this Quest.

Completion

The Quest is complete when:

  • one immutable artifact preserves the complete selected workflow evidence;
  • inspection works anywhere without execution authority;
  • every Agent session has a complete portability result;
  • portable Agent conversations can be recreated through an exact checkpoint
    without another model turn;
  • continuation creates an independent run and provider state;
  • conflicting identities refuse rather than reuse unrelated state;
  • interrupted provider/database publication recovers deterministically; and
  • all remaining blocking stories are delivered.

Authoritative contract

  • specs/xmd-artifact-spec.md
  • specs/workflow-workspace-spec.md
  • the workflow Agent sections of specs/executable-mdx-spec.md
  • architecture.md
  • plans/xmd-portable-artifact-quest.md

The specifications own the detailed structural and evidence matrices. Child
stories implement that contract rather than choosing different product
behavior.

Out of scope

  • Publishing or uploading artifacts from CI.
  • Signed provenance, retention policy, final-digest attestation, and redacted
    reports.
  • Treating the artifact as authority to control the source run.
  • Carrying destination credentials or provider launch configuration.
  • Carrying live provider stores, locks, indexes, or ACPX queue state.
  • Converting or migrating artifacts between semantic format versions.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestquestCoordinating story with dependency-ordered sub-issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions