Skip to content

Route executable-operation Actions through scheduler-owned Ticks #687

Description

@flyingrobots

Claim

A canonical executable-operation Action uses Echo’s ordinary WAL-backed submission and Lane/head inbox lifecycle. The runtime owner admits the exact installed package and invocation, then the scheduler privately evaluates a canonical Action batch at one exact basis and commits one atomic Tick with durable per-Action outcomes. Applications and host adapters never invoke the evaluator or commit prepared patches.

Required RED

An Echo-owned fixture submits two independent canonical executable-operation Action envelopes through submit_intent_with_runtime_wal_ack(...), stages them under runtime-owned admission, and currently cannot obtain one scheduler-owned Tick because executable operations still use the public singleton prepare_echo_operation_v1(...) / commit_prepared_echo_operation_v1(...) lifecycle.

Acceptance witnesses

  • Action acceptance is committed to the runtime WAL before acknowledgement.
  • A crash after acceptance but before Tick restores the Action as pending and recoverable.
  • Runtime-owned admission resolves the exact installed package and stages the Action in the normal Lane/head inbox.
  • Only the scheduler invokes bounded private evaluation.
  • Two independent executable-operation Actions selected at one exact basis produce one atomic Tick and two per-Action outcomes.
  • Evaluation obstruction, footprint rejection, Tick construction failure, and WAL persistence failure expose no partial state.
  • A typed evaluation obstruction contributes no hidden mutation.
  • The decided Tick is WAL-durable before frontier and Receipt publication.
  • Fresh-host recovery reconstructs accepted Actions, their exact Tick, state, per-Action outcomes, and Receipts without evaluating again.
  • Direct prepare_echo_operation_v1(...) / commit_prepared_echo_operation_v1(...) access is internal, test-only, or explicitly transitional.

Durable shape

canonical Edict-authored Action envelope
→ WAL-committed accepted submission
→ recoverable pending Action
→ runtime-owned installed-package/invocation admission
→ normal Lane/head inbox
→ scheduler selection at one exact basis
→ bounded private evaluation during Tick construction
→ one atomic Tick plus per-Action outcomes
→ WAL-committed decided Tick
→ frontier and Receipts published

Scope

  • Echo-owned test fixtures only; no production Graft fixture or handwritten production package.
  • Reuse the existing private evaluator and installed package registry.
  • Preserve provider-v1 and generated native-contract compatibility paths.
  • Preserve existing executable program/package/invocation canonical bytes and identities.
  • Add the smallest append-only WAL and recovery shape needed for one Tick with multiple executable Action outcomes.

Non-goals

  • Edict compiler/package emission;
  • Graft or Jedit application semantics;
  • git-warp migration;
  • a new executable program profile;
  • external effects, callbacks, WASM providers, or native application handlers;
  • arbitrary cross-head atomicity beyond the existing SuperTick law.

Architectural decision

Amend ADR 0023 so PreparedEchoOperationV1 is scheduler-internal evidence. Private evaluation remains valid only inside construction of a scheduler-owned Tick; it is not a second public application lifecycle.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions