067-node-live-repeat-runs
Node binding: live repeat runs over host backends (amends 006, 027, 043 and 063)
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
depends on
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
- 067: Node binding: live repeat runs over host backends (amends 006, 027, 043 and 063)
- 1. Purpose
- 2. Territory
- 2.1 Binding principles
- 3. Behavior
- 3.1 What changes for 063's commands
- 3.2 The entry point
- 3.3 Host backend cost declarations
- 3.4 The journal and the output directory are file paths
- 3.5 Authorization
- 3.6 Cancellation and shutdown
- 3.7 Probe, resume and rerun
- 3.8 Tests and conformance
- 3.9 Errors, declarations and position
- 3.10 What changes in specs 006, 027, 043 and 063
- 4. Out of scope
- 5. Observable negative cases
- Acceptance
- Verification
- Implementation record
- Decisions at approval
Frozen anchors
No frozen anchors declared.