Skip to content

Quest: Resume workflows with their Workspace, repositories, and Agent state #218

Description

@taras

Story

As a workflow author, I want xmd workflow to retain one provider-backed
Workspace with the run's journal, repositories, and Agent state, so supervised
procedures resume after interruption without reconstructing hidden filesystem or
transcript state.

Settled contract

PR #358 records the normative architecture in architecture.md and
specs/workflow-workspace-spec.md:

  • xmd run uses the caller's current environment and makes no restoration
    guarantee; xmd workflow owns one retained WorkflowRun and implicit root
    Workspace.
  • One SQLite database holds logically separate filtered journal, versioned DOFS,
    Repository/Worktree metadata, and Agent-session stores.
  • One expansion produces one effect and one Workspace transaction. Completed
    durable effects restore their results, ephemeral attachments rebuild the live
    Effection tree, and partial replay continues from the retained frontier.
  • Missing or corrupt authoritative Workspace state is unrecoverable rather than
    silently replaced.
  • Workflow Agents receive no Workspace materialization or additional
    directories. They request observations and propose mutations as constrained
    generated XMD executed by the host.
  • Prompt, Git-host, Issue, and other external effects reconcile stable identity
    at their owning provider boundary; they do not claim cross-system atomicity.
  • Public lifecycle operations remain host-neutral and preserve one executor
    authority.

This issue is the implementation umbrella. Child issues own executable
acceptance detail; this body owns the shared invariants and current closure map.

Current delivery state

The retained lifecycle, history, named Repository/Worktree composition, local
Git and Git-host effects, provider-neutral Issue and Fetch effects, ambient
authentication, authorized workflow component bundle, generated-XMD observation
and mutation admission, retained Agent sessions, durable answer delivery,
explicit ordinary-resume scheduling, adversarial composition, and end-to-end
certification are all implemented.

PR #181 contains the remaining integrated delivery. At exact head
e85479c33ce4c91d821e0eaf195150db374ae4a6 over base and merge base
6717e867c9467114e6b060620d5b18c87beb2c48, #299 recorded certification PASS.
All frozen commands passed, including both source and compiled entrypoints,
CF1-CF6, the 31-file owner matrix, Node and Bun WFH rows, typing,
publishability, and the frozen verification task.

The only remaining PR-local work is #292's truthful synchronization of the
living workflow and delivery records. #290's document proof, #301's complete
composition, and #300's explicit scheduling slice are implemented on PR #181;
those issues close with the PR rather than receiving another product pass.

Remaining order

  1. Implement Make the adversarial implementation workflow accurately describe its behavior #292 against the exact certified PR head and obtain Planner PASS
    on one focused feedback commit.
  2. Integrate that commit, refresh PR ✨ Compose and certify the supervised adversarial implementation workflow #181's title/body, and run the applicable
    delivery gate and required CI.
  3. Mark the PR ready, obtain required review, and merge.
  4. Close Test the adversarial planning workflow with shipped components #290, Deliver answers to suspended workflows for later resumption #300, Compose the supervised adversarial implementation workflow #301, Make the adversarial implementation workflow accurately describe its behavior #292, and this umbrella through the delivered merge.

No later hardening issue is inserted into this gate:

Cross-cutting invariants

  • WorkflowRun establishment and base pinning precede Workspace attachment.
  • Shared production modules use contextual APIs and contain no runtime or
    provider detection.
  • One authoritative host-owned DOFS connection serves a workflow database and
    serializes Workspace-local effects.
  • Security filtering occurs before journal insertion; co-located Workspace
    content is not automatically journal or training data.
  • Completed replay attaches no Workspace, Agent, process, Git-host, Issue, or
    Fetch provider.
  • Status, list, and history are read-only and cannot advance a run.
  • No required state exists only in a transcript, host path, provider handle,
    branch name, or Git sidecar ref.
  • External effects reconcile stable identity and never claim atomicity across
    SQLite and a provider.
  • Answer delivery records without executing. Manual and explicit trusted-host
    scheduling invoke the same ordinary resume path and executor lock. No watcher,
    delivery-to-resume wiring, unattended arbitration, or second executor ships.
  • An Agent reaches the Workspace only as data: it names source and XMD admits
    and executes it. Generated Git, Git-host, Issue, process, credential, and
    other external effects remain outside the admitted classes.

Completion

This umbrella closes when PR #181 merges after #292 synchronization and the
normal delivery gate. Transactional Worker Shell, portable adapter-level
no-tool enforcement, the ordinary host-filesystem race, and the unrelated
error-printing correction remain independent follow-ups.

Intentionally excluded

  • A public remote-host selector or deployed XMD service.
  • Worker Shell or Worker JavaScript in the initial topology.
  • Native subprocess execution, writable FUSE, bundled workerd, or Containers.
  • Watchers, automatic answer-to-resume wiring, and unattended iteration
    arbitration.
  • Human actor attestation.
  • Automatic ingestion or arbitrary scanning of Workspace files.
  • Recovery from deleted or corrupt authoritative Workspace state.
  • Rewinding external systems during a history fork.

Authoritative evidence

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

    questCoordinating story with dependency-ordered sub-issues

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions