067-node-live-repeat-runs

Node binding: live repeat runs over host backends (amends 006, 027, 043 and 063)

Lifecycle approvedImplementation pendingVerification unknownQualification unknown

An amendment of approved specs 063 (3.9), 027 (3.3, 3.7) and 043 (section 2, 3.2.2, 3.5.1, 3.11.4, 3.13), for release 0.6.0 (#539), ratified by the owner on 2026-11-06 (A-86). A Node host whose model backends are TypeScript `DecisionBackend`s (027 3.6) cannot run fresh repeat runs of its plans through Rustev: the binding's repeat commands refuse the `live` source (063 3.9.4), and `rustev eval live` links only the rules backend (043 3.13.2). So the host keeps its own harness, outside Rustev's spend journal and caps. This spec adds `engine.liveRun`, an asynchronous method over `rustev_live::run` with the CLI's inputs, the engine's registered host backends and the same documents as `rustev eval live`, all or none for the final files. The journal is a file path the binding opens under 043 3.5's lock and durability rules, and no attempt is sent before its full worst-case exposure is durably reserved. A host backend's exposure is the cost model and bound it already declares (027 3.6.1); an `unknown` model is refused. Probe-only, resume and rerun-interrupted are 043's; an `AbortSignal` or `shutdown` ends the run `interrupted` with every reserved, unsettled attempt kept as liability. The cumulative cap holds per journal file, so CI must persist the file; a journal created by a run records an id and creation time, and the run report names them, so a fresh journal is visible, never silent. Tests use scripted host backends only; CI makes no live or paid call. This fulfills 043 section 2's "the Node binding exposes it in its own spec".

Read the full pinned specification ↗

Relationships

Claimed units

  • extends
    {
      "nature": "amending",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "integrations/rustev-node/"
      }
    }
  • extends
    {
      "nature": "amending",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-surface/"
      }
    }
  • extends
    {
      "nature": "amending",
      "spec": "006-cli-surface",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-cli/"
      }
    }
  • extends
    {
      "nature": "amending",
      "spec": "043-live-re-execution-at-scale",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-live/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "tools/rustev-conformance/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-public-api-and-release-family",
      "unit": {
        "kind": "directory",
        "path": "tools/rustev-release/"
      }
    }

Source headings

  1. 067: Node binding: live repeat runs over host backends (amends 006, 027, 043 and 063)
  2. 1. Purpose
  3. 2. Territory
  4. 2.1 Binding principles
  5. 3. Behavior
  6. 3.1 What changes for 063's commands
  7. 3.2 The entry point
  8. 3.3 Host backend cost declarations
  9. 3.4 The journal and the output directory are file paths
  10. 3.5 Authorization
  11. 3.6 Cancellation and shutdown
  12. 3.7 Probe, resume and rerun
  13. 3.8 Tests and conformance
  14. 3.9 Errors, declarations and position
  15. 3.10 What changes in specs 006, 027, 043 and 063
  16. 4. Out of scope
  17. 5. Observable negative cases
  18. Acceptance
  19. Verification
  20. Implementation record
  21. Decisions at approval

Frozen anchors

No frozen anchors declared.