Skip to content

Use Platform agent-runtime as Maestro's durable run ledger #72

Description

@haasonsaas

From the Maestro/platform integration review using gh on 2026-04-22.

Reviewed heads:

  • ae6e88a
  • evalops/platform@7b003938349939052f90ae41241599993a7c06c9

Problem

Maestro has rich local/session telemetry and hosted session state, while Platform has agentruntime.v1 durable runs with steps, checkpoints, waits, costs, leases, and run events. Platform tracks the generic primitive in evalops/platform#671, but Maestro does not yet have a concrete adoption issue for using that ledger.

Scope

  • Add an optional Platform agent-runtime client/config path beside the existing Platform client helpers.
  • When enabled, create or attach an AgentRun for each Maestro session/run using stable workspace/team/session identifiers.
  • Record turn lifecycle as AgentRunStep and checkpoint records, including model/provider, tool calls, token/cost data, and failure state.
  • Map approval pauses and human-in-the-loop decisions to WaitRun / ResumeRun without blocking local-only operation.
  • Correlate AgentRun IDs onto emitted maestro.* CloudEvents, meter payloads, audit context, and headless protocol output where relevant.
  • Preserve TUI/web/headless behavior when Platform agent-runtime is unavailable.

Acceptance Criteria

  • A Platform-backed smoke path can start a Maestro session, record at least one turn step plus cost/checkpoint data, pause/resume on an approval wait, and complete or fail the AgentRun.
  • Local/offline Maestro sessions continue to work with no Platform env vars.
  • Docs/env examples explain the feature flag and identity/correlation fields.
  • Tests cover the disabled path, mocked Platform success path, and Platform unavailable/fallback behavior.

Related: evalops/platform#671, evalops/platform#765, evalops/platform#762, evalops/platform#763.


Runtime Parity / Conformance Links

Use #85 as the protocol-level acceptance bar: lifecycle, subscribe/events/messages/heartbeat/disconnect, viewer/controller roles, permission request/response, utility operations, workspace-root enforcement, cursor replay/reset, and drain/resume behavior should match across the current TypeScript web/headless bridge and the target Rust runtime.

Metadata

Metadata

Assignees

No one assigned

    Labels

    architecture-reviewCross-service architecture review requestedenhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions