From 8abbb26206d71f1a34fbfd0e10a617cf7d1e1b77 Mon Sep 17 00:00:00 2001 From: Relayflow Date: Sun, 4 Oct 2026 06:58:59 +0000 Subject: [PATCH 1/3] fix(cli): support GitLab repositories in flows deploy --- docs/CLOUD.md | 19 +- evidence/gitlab-deploy/full-suite.txt | 4173 ++++++++++++++++++ packages/sdk/src/cli-commands.ts | 2 +- packages/sdk/src/cli.ts | 2 +- packages/sdk/src/cli/cloud-deploy.ts | 12 +- packages/sdk/src/cloud-deploy.ts | 63 +- packages/sdk/src/cloud-versions.ts | 4 +- packages/sdk/src/flow-requirements.ts | 9 +- packages/sdk/src/index.ts | 2 +- packages/sdk/tests/cloud-deploy.test.ts | 123 +- packages/sdk/tests/relay-cli-surface.test.ts | 10 + 11 files changed, 4380 insertions(+), 39 deletions(-) create mode 100644 evidence/gitlab-deploy/full-suite.txt diff --git a/docs/CLOUD.md b/docs/CLOUD.md index 20f1a8473..697096f30 100644 --- a/docs/CLOUD.md +++ b/docs/CLOUD.md @@ -537,10 +537,15 @@ flows deploy issue-triage.flow.ts \ --repo AgentWorkforce/flows \ --on github:labels=agent \ --approver khaliqgant +flows deploy issue-triage.flow.ts --repo gitlab:group/sub/project --on gitlab:labels=agent --approver khaliqgant flows deployments flows undeploy ``` +`--repo owner/name` (or `github:owner/name`) targets GitHub. Use +`gitlab:group/sub/project` or `https://gitlab.com/group/sub/project.git` for +GitLab, including nested namespaces. GitHub HTTP(S) URLs remain supported. + Optional flags: `--agents claude,codex`, `--name "Issue triage"`, `--draft`, `--no-connect`, `--json`, and further `--on` sources. @@ -574,7 +579,7 @@ on `f.human`, finish on the version they started with. deploy wizard: `POST /api/v1/flows/deploy` stores one self-contained authored source and creates a proactive listener whose watch rules match the chosen ticket sources. There is no webhook to register. The workspace's GitHub App -installation (or Slack, Linear, Jira or Shortcut connection) is the ingress; +installation (or GitLab, Slack, Linear, Jira or Shortcut connection) is the ingress; Cloud ingests events into the workspace's relayfile projection and the listener's rules match them there. The digest form, `flows deploy @sha256:… --to file://…`, is unchanged; the positional @@ -589,9 +594,12 @@ decides which form is meant. `team` matches the team's name or its key. A Linear `events` is `issues` (the default — `issue.create`), `assigned` — `AppUserNotification.issueAssignedToYou`, issues assigned to the connected app user, so assigning a ticket delegates it — -or `all` for both. A GitHub source without -`repository` is -scoped to `--repo`. `events` is `issues` (the default: `issues.opened` and +or `all` for both. A GitHub source without `repository` is scoped to a GitHub +`--repo` target; +a GitLab target requires an explicit `--on github:repository=owner/name`. +A GitLab source without `project` is scoped to a GitLab target. With a GitHub +target, a GitLab source remains unscoped unless you supply `project`. +`events` is `issues` (the default: `issues.opened` and `issues.labeled`) or `pull_request` — `merge_request` for `gitlab` — which wakes on a pull request being opened, receiving commits, being reopened, or being reviewed; a pull-request run checks out the pull request's own head and receives @@ -633,7 +641,8 @@ SDK; the same function reads a compiled YAML spec, where a helper step such as `tools.relayfile` mounts in the header, `f.` use in the default body (recognised exactly as helper preflight recognises it), provider triggers (`.on(github.issues())`), the `--on` sources and the deploy target (every -launched run lands in `--repo`, so GitHub is always required), the `cli:` of +launched run lands in `--repo`, so the target's GitHub or GitLab integration +is required), the `cli:` of each `f.agent`/`f.llm` call in the default body (else the nearest `flows.json` `cli`, else `claude`), and `tools.mcp`. Handler bodies are not statically scanned for requirements. Authored input never selects an extension handler: diff --git a/evidence/gitlab-deploy/full-suite.txt b/evidence/gitlab-deploy/full-suite.txt new file mode 100644 index 000000000..82dd20e6a --- /dev/null +++ b/evidence/gitlab-deploy/full-suite.txt @@ -0,0 +1,4173 @@ + + RUN v2.1.9 /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk + + ❯ tests/live-kernel.test.ts (32 tests | 32 skipped) 5ms + ✓ tests/preflight.test.ts (70 tests) 144ms + ✓ tests/cloud-read.test.ts (46 tests) 50ms + ✓ tests/cli.test.ts (71 tests) 3110ms + ✓ flows check CLI > binds a checked relative wrapper to the flow directory for worker execution 545ms + ✓ flows check CLI > resolves a bare PATH-resolved claude with no declared model, in an isolated PATH 492ms + ✓ flows run/resume CLI over the journal protocol > follows a worker wait past a locally expired lease until the daemon settles it 1043ms + ✓ tests/cloud-live.test.ts (55 tests) 2056ms + ✓ argv and wiring > routes both live invocations through runCli, and refuses a missing run id 2005ms + ❯ tests/hosted-extension-isolation.test.ts (22 tests | 14 failed) 292ms + × hosted extension capability isolation > executes the exact capability-only handler for a queued receipt 9ms + → bubblewrap is unavailable + × hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt 3ms + → bubblewrap is unavailable + × hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization 4ms + → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + × hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic 3ms + → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + × hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists 204ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + × hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch 5ms + → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + × hosted extension capability isolation > refuses oversized Surface files through the bounded descriptor reader 7ms + → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } + × hosted extension capability isolation > shields verified Surface files before async settlement 4ms + → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + × hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child 3ms + → expected Error: bubblewrap is unavailable { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality + × hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs 7ms + → bubblewrap is unavailable + × hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation 3ms + → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } + × hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port 2ms + → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic 2ms + → bubblewrap is unavailable + × hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior 2ms + → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + ✓ tests/cloud-sync.test.ts (40 tests) 757ms + ✓ tests/observer-link.test.ts (44 tests) 167ms + ✓ tests/cloud-deploy.test.ts (100 tests) 1958ms + ✓ tests/authored-flow.test.ts (38 tests) 861ms + ✓ tests/plugin-extension.test.ts (94 tests) 425ms + ✓ tests/cloud-transcript-codex.test.ts (44 tests) 18ms + ✓ tests/worker-cli.test.ts (25 tests) 30552ms + ✓ registered CLI model defaults > passes the same priced Claude default to the real provider invocation 520ms + ✓ registered CLI model defaults > uses the explicitly supplied agent environment for the provider subprocess 510ms + ✓ registered CLI model defaults > dispatches canonical generic bytes with the preflight-proved adapter identity 494ms + ✓ direct transport lifecycle evidence > classifies only the exact Codex stdin lifecycle signature as retryable 492ms + ✓ direct transport lifecycle evidence > records a signal close separately from an ordinary nonzero exit 1082ms + ✓ direct transport lifecycle evidence > records a spawn error code without treating a missing executable as transient 433ms + ✓ direct transport lifecycle evidence > journals classified lifecycle evidence and reports crashed instead of generic worker_error 590ms + ✓ step discovery environment > names the run, step, attempt and an absolute data dir for a direct agent spawn 609ms + ✓ step discovery environment > exports none of the four without a data dir, even when the worker inherited them 475ms + ✓ wrapper discovery environment > sets the four names from the dispatch and still refuses ambient values and other secrets 508ms + ✓ wrapper discovery environment > exports none of the four to a wrapper without a data dir, even when the worker inherited them 480ms + ✓ custom wrapper execution identity > passes an explicit safe environment at identification and execution 504ms + ✓ custom wrapper execution identity > refuses a wrapper symlink retarget before delivering private values 501ms + ✓ custom wrapper execution identity > bounds wrapper execution after acknowledgement 562ms + ✓ custom wrapper execution identity > bounds captured wrapper output 444ms + ✓ custom wrapper execution identity > refuses a duplicate execute protocol frame 517ms + ✓ custom wrapper execution bounds are reader-owned > resolves when a conforming wrapper leaks a stdio pipe to a background helper 1896ms + ✓ custom wrapper execution bounds are reader-owned > resolves when the leaked helper inherits stderr only 1804ms + ✓ custom wrapper execution bounds are reader-owned > resolves when a wrapper leaks a stdio pipe and exits before identifying 3515ms + ✓ custom wrapper execution bounds are reader-owned > journals a completionReason at the default bound when a wrapper leaks a stdio pipe 11449ms + ✓ custom wrapper execution bounds are reader-owned > accepts an execute token and an over-8KiB payload flushed in one write 487ms + ✓ custom wrapper execution bounds are reader-owned > accepts the same over-8KiB payload whether or not it coalesces with the execute token 1638ms + ✓ custom wrapper execution bounds are reader-owned > still bounds an un-terminated handshake buffer and names the bound 524ms + ✓ delivers the journaled memory pack to the real wrapper and excludes its charge from completion usage 515ms + ✓ tests/flow-extension-compose.test.ts (33 tests) 6190ms + ✓ composing flow extensions onto a base flow > composes two extensions in declaration order, and the order is the lockfile order 505ms + ✓ composing flow extensions onto a base flow > flows check reports the composition and keeps the composed triggers deliverable 1059ms + ✓ composing flow extensions onto a base flow > flows check probes extension preflight before reporting the project healthy 305ms + ✓ composing flow extensions onto a base flow > uses extension permissions for hosted deploy preflight and the deploy body 301ms +(node:12358) ExperimentalWarning: SQLite is an experimental feature and might change at any time +(Use `node --trace-warnings ...` to show where the warning was created) + ✓ tests/cli-status.test.ts (27 tests) 1273ms + ✓ flows status > resolves the run with no arguments from inside a worker-spawned agent 1028ms + ✓ tests/run-state.test.ts (28 tests) 11ms + ✓ tests/cloud-run.test.ts (59 tests) 742ms + ✓ tests/agent-transcript.test.ts (29 tests) 297ms + ✓ tests/relay-cli-surface.test.ts (87 tests) 38ms + ✓ tests/babysitter-native-extension.test.ts (41 tests | 1 skipped) 1540ms + ✓ tests/shipped-source-worker-call-forms.test.ts (1 test) 16298ms + ✓ shipped-source worker call forms > fails closed for computed keys, assertions, binds, call, and apply 16298ms +(node:12628) [FLOWS_ROOT_LEASE_LOST] Warning: authored root run_id=root-run attempt=1: lease_conflict: attempt has no active worker lease. Waiting for the kernel to retry it. +(Use `node --trace-warnings ...` to show where the warning was created) + ✓ tests/authored-root.test.ts (22 tests) 462ms + ✓ tests/authored-completion-detail.test.ts (59 tests) 137ms + ✓ tests/stop-process-group.test.ts (11 tests) 14354ms + ✓ every stop reaches the process group, not just the direct child > exits the run after an execution-timeout stop 932ms + ✓ every stop reaches the process group, not just the direct child > exits the run after a protocol terminate stop 511ms + ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after a protocol terminate stop 1608ms + ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after an execution-timeout stop 1961ms + ✓ every stop reaches the process group, not just the direct child > holds the loop open long enough for the escalation to run 1093ms + ✓ every stop reaches the process group, not just the direct child > bounds forced-stop confirmation when a group remains unprovable 1019ms + ✓ a wrapper that exits with no execution deadline still drains > reports the wrapper result and reaps a grandchild holding its pipes 716ms + ✓ a wrapper that exits with no execution deadline still drains > reaps a SIGTERM-deaf grandchild holding its pipes 1851ms + ✓ a wrapper that exits with no execution deadline still drains > settles on its own deadline when an escaped holder withholds close 4338ms + ✓ tests/step-failure-diagnostic.test.ts (26 tests) 71ms + ✓ tests/shipped-source-model-provenance.test.ts (1 test) 117992ms + ✓ shipped-source model provenance > does not treat mutable aliases or incomplete named agents as pinned 117991ms + ✓ tests/mcp.test.ts (34 tests) 14078ms + ✓ MCP preflight and transports > flows check refuses an undeclared server with exit 2 and no daemon 883ms + ✓ MCP preflight and transports > flows check reports a refusing server and leaves no PID 886ms + ✓ MCP preflight and transports > kills a SIGTERM-resistant silent child after a parent-owned handshake deadline 1314ms + ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with inherit stdio before cleanup finishes 1091ms + ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with ignore stdio before cleanup finishes 2021ms + ✓ MCP preflight and transports > rejects close when forced group death remains unprovable 2067ms + ✓ MCP preflight and transports > cancels force escalation when close follows an exited child 1180ms + ✓ MCP preflight and transports > waits for child close when the transport cannot own a process group 1056ms + ✓ MCP preflight and transports > cancels force escalation for an already-closed child without a process group 1176ms + ✓ MCP preflight and transports > reports malformed connection configuration as config_invalid 908ms + ✓ authored MCP effects against the real kernel > reports a dropped tool connection as a failed CLI run 641ms + ❯ tests/hosted-extension-protocol.test.ts (27 tests | 8 failed) 40091ms + × hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary 7ms + → bubblewrap is unavailable + × hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls 6ms + → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls 3ms + → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls 3ms + → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles 10004ms + → hostile child did not invoke the adapter + × hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error 10004ms + → hostile child did not invoke the adapter + × hosted extension hostile protocol > waits for a pending adapter to resolve after a forged child error 10005ms + → hostile child did not invoke the adapter + × hosted extension hostile protocol > returns a typed adapter rejection even when the hostile child hangs 10005ms + → hostile child did not invoke the adapter + ✓ tests/step-attempt-history.test.ts (23 tests) 20ms + ✓ tests/daemon-lifecycle.test.ts (42 tests) 44ms + ❯ tests/authored-node-runtime.test.ts (16 tests | 16 skipped) 11ms + ✓ tests/artifact-gates.test.ts (27 tests) 244ms + ✓ tests/hosted-base-snapshot.test.ts (18 tests) 2013ms + ✓ hosted base private snapshot > stops streaming project entries at the shared count limit 1937ms + ✓ tests/close-pr-flow.test.ts (35 tests) 25392ms + ✓ close-pr journaled repair loop > reads an existing Bugbot finding, repairs in the same worktree, pushes and re-verifies before merging 3031ms + ✓ close-pr journaled repair loop > opens a PR and feeds failed CI logs into the repair agent 2694ms + ✓ close-pr journaled repair loop > pins the current generated model for codex when no override is supplied 7277ms + ✓ close-pr journaled repair loop > pins the current generated model for claude when no override is supplied 3969ms + ✓ close-pr journaled repair loop > parks after exactly three nonconverging repairs, with accumulated blockers 2711ms + ✓ close-pr journaled repair loop > can converge on the third repair 2756ms + ✓ close-pr journaled repair loop > executes the deterministic commit and force-push steps against a local Git remote, including a no-op repair 2729ms + ✓ tests/cloud-connect.test.ts (24 tests) 3228ms + ✓ hosted verbs connect before they submit > flows run --cloud submits once the prompt connected the integration 2146ms + ✓ tests/journal-client.test.ts (17 tests) 81ms + ✓ tests/verb-field-lint.test.ts (102 tests) 372ms + ✓ tests/shipped-source-flow-provenance-repairs.test.ts (1 test) 31153ms + ✓ shipped-source flow provenance repairs > audits repaired writer, alias, binding, and cyclic provenance forms 31152ms + ✓ tests/validate.test.ts (68 tests) 25ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/flow-executor-chain.test.ts (14 tests | 14 failed) 201ms + × flow executor LLM and output-binding chain > runs f.llm -> f.agent -> f.run with schema-verified journal output and the exact allowed model 20ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > runs a dollar-budgeted authored Claude agent with the same default used by preflight 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > fails invalid LLM output before the next step: not JSON 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > fails invalid LLM output before the next step: {"message":7} 27ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > retains tagged-template text output 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: null 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: [1,2] 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: "hello" 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > refuses a model outside flows.json before a run or adapter execution 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > runs the exact authored flagship f.llm -> f.agent -> f.run path through the durable CLI root 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > resumes an interrupted durable authored root without replaying completed flagship effects 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > passes a declarative verified value through an agent into a deterministic artifact 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > journals a missing optional field as a failure before the consuming command executes 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × flow executor LLM and output-binding chain > flows run consumes YAML bindings and resume reuses the original journal output 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/agent-relay-transport.test.ts (17 tests) 2297ms + ✓ Relay completion at the journal boundary > does not complete at readiness and journals exact output, receipt, and priced accounting 1009ms + ✓ Relay completion at the journal boundary > aborts polling on rejected renewal and never writes a stale completion 1003ms + ✓ tests/authored-node-result.test.ts (44 tests) 19ms + ✓ tests/bundle.test.ts (26 tests) 9116ms + ✓ immutable bundles > returns exit 2 naming a byte-flipped payload and refuses to reuse corruption 403ms + ✓ immutable bundles > verifies with --verify in any position and answers --json with one object 885ms + ✓ immutable bundles > refuses --out with --verify rather than ignoring the destination 408ms + ✓ immutable bundles > builds and verifies the canonical YAML fixture through the compiled CLI 1277ms + ✓ immutable bundles > emits the ephemeral warning on CLI stderr and uses the default output directory 819ms + ✓ immutable bundles > refuses build-provable CLI resolution errors without environment probes 421ms + ✓ immutable bundles > builds a standalone TS fixture twice with identical executable hashes 2390ms + ✓ immutable bundles > refuses to label installed dependency drift with lockfile pins 393ms + ✓ immutable bundles > refuses invalid CLI arguments %j 391ms + ✓ immutable bundles > refuses invalid CLI arguments "--out" 411ms + ✓ immutable bundles > refuses invalid CLI arguments "--verify" 390ms + ✓ immutable bundles > refuses invalid CLI arguments "--verify" 379ms + ✓ immutable bundles > refuses invalid CLI arguments "--out" 402ms + ✓ tests/tick-source.test.ts (33 tests) 30ms + ✓ tests/authored-step-graph.test.ts (25 tests) 827ms + ✓ the authored step DAG > does not walk a long-running step's own polling chain to find its dependents' edges 303ms + ✓ tests/cloud-mirror.test.ts (14 tests) 32ms + ✓ tests/pr-review-post.test.ts (21 tests) 2153ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (27 tests) 638ms + ✓ tests/step-failure-excerpt.test.ts (42 tests) 197ms + ✓ tests/authored-step-terminal-completion.test.ts (13 tests) 4880ms + ✓ readCompletedStepOutput on an adopted gated child whose gate has not started > refuses a producer success when the wait ends with the run still not terminal 2008ms + ✓ readCompletedStepOutput given a suspended known status (#441) > refuses a producer success while the child is still not terminal 2009ms + ✓ tests/cloud-mirror-step.test.ts (17 tests) 29ms +(node:17633) ExperimentalWarning: SQLite is an experimental feature and might change at any time +(Use `node --trace-warnings ...` to show where the warning was created) + ❯ tests/authored-flow-slack.test.ts (7 tests | 5 failed) 152ms + × authored Slack helper effects > snapshots structured posts into the journal and delivers the same Block Kit body 6ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × authored Slack helper effects > journals exactly one effect with the authored params and typed receipt, without network 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × authored Slack helper effects > replays after SIGKILL before confirm with the same token and one successful completion 2ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × authored Slack helper effects > replays after SIGKILL before complete with the same token and one successful completion 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × authored Slack helper effects > writes two files for two calls and supports dm, reply, and react 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + ✓ tests/cli-replay.test.ts (38 tests) 1305ms + ✓ flows replay > --json is byte-identical across two CLI invocations (diff) 869ms + ✓ tests/wrapper-execution-duration.test.ts (7 tests) 10886ms + ✓ keeps the handshake deadline independent of the removed execution deadline 10050ms + ✓ still lets a lease abort stop an unlimited wrapper before it produces output 512ms + ✓ tests/tick-runner.test.ts (22 tests) 2371ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms fractional as an invocation error 394ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms exponent notation as an invocation error 398ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms hex as an invocation error 387ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms trailing text as an invocation error 386ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms empty as an invocation error 391ms + ✓ CLI argument parsing refuses coercion rather than accepting it > accepts an exact integer and proceeds past parsing 386ms + ✓ tests/authored-step-index.test.ts (17 tests) 17ms + ✓ tests/authored-agent-artifacts.test.ts (5 tests) 332ms + ❯ tests/direct-input.test.ts (6 tests | 6 skipped) 4ms + ✓ tests/worker-transcript.test.ts (9 tests) 881ms + ✓ tests/gate-contract.test.ts (20 tests) 144ms +Stopped: a Linear ticket must carry its identifier (like TECH-42) so the pull request can link back. +Stopped: a Linear ticket must carry its identifier (like TECH-42) so the pull request can link back. +Stopped: invalid pull-request metadata (duplicate-linear-closing-reference). No branch was pushed and no pull request was opened. +Stopped: invalid pull-request metadata (duplicate-linear-closing-reference). No branch was pushed and no pull request was opened. +Stopped: invalid pull-request metadata (duplicate-github-closing-reference). No branch was pushed and no pull request was opened. +Stopped: invalid pull-request metadata (malformed-review-scope). No branch was pushed and no pull request was opened. +Stopped: invalid pull-request metadata (malformed-review-scope). No branch was pushed and no pull request was opened. +Stopped: could not read the reviewed head commit. Nothing was pushed. +Stopped: could not read the reviewed head commit. Nothing was pushed. +Stopped: could not read the reviewed head commit. Nothing was pushed. + ✓ tests/canonical-software-factory.test.ts (25 tests) 742ms + ✓ tests/authored-human.test.ts (13 tests) 88ms + ✓ tests/cloud-schedule.test.ts (17 tests) 5635ms + ✓ schedule lowering > marks a non-grid cron as Cloud-only rather than approximating it, with a silence budget from its own cadence 3089ms + ✓ flows check prints declared schedules > shows the lowering for a fixed interval and the Cloud-only note for a real cron 2005ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-run-failure-evidence.test.ts (9 tests | 5 failed) 74ms + × a failing f.run through the live kernel > reports the command that failed and what it printed 20ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a failing f.run through the live kernel > names the failing case from the middle of a real test run 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a failing f.run through the live kernel > carries the same facts structurally, not only rendered into the message 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a failing f.run through the live kernel > keeps the evidence when the failure is relabelled as a timeout 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × the child index after the process that wrote it is gone > still names every child, with its own run id, after a daemon restart 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/cli-hn-monitor.test.ts (16 tests) 94ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/agent-artifacts-live.test.ts (5 tests | 5 failed) 68ms + × agent artifacts and gates through the built CLI, a real daemon and the local agent > journals the files the agent wrote, including under a dot-directory, and every artifact gate passes on that journal 17ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run when the artifact_exists gate names a file the agent did not write 13ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run with the author reason when a predicate gate returns false, journaling the verdict 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × review follow-ups > applies a predicate gate on a helper step too, and journals its verdict 13ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × review follow-ups > records predicate verdicts on the root run so a resume reuses them instead of re-running the closure 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ✓ tests/spec-parity.test.ts (43 tests) 481ms + ✓ tests/authored-activity.test.ts (16 tests) 107ms + ✓ tests/named-gate-diagnostics.test.ts (17 tests) 528ms + ✓ tests/run-projection.test.ts (13 tests) 11ms + ✓ tests/worker-cli-result-exit.test.ts (7 tests) 34887ms + ✓ a Claude agent step completes on its result, not only on process exit > settles a hung, successful run within the grace and stops its whole tree 32615ms + ✓ a Claude agent step completes on its result, not only on process exit > maps an error result on a hung run to a failed exit 31611ms + ✓ a Claude agent step completes on its result, not only on process exit > leaves a hang before any result to the existing stops 32016ms + ✓ an agent tree does not outlive the process that spawned it > kills the agent group when the run process is terminated by SIGTERM 777ms + ✓ an agent tree does not outlive the process that spawned it > removes a wrapper alias on host exit after group death stays unprovable 1410ms + ✓ tests/daemon-lifecycle-live.test.ts (9 tests) 6809ms + ✓ flows run against a data dir with no daemon (§6 test 7) > cold start spawns exactly one daemon, the run succeeds, and the daemon outlives the CLI 475ms + ✓ flows run against a data dir with no daemon (§6 test 7) > polls, bounded, for a daemon that holds the lock before it binds 1390ms + ✓ flows run against a data dir with no daemon (§6 test 7) > attaches to a serving daemon that has not published a connection file 522ms + ✓ flows run against a data dir with no daemon (§6 test 7) > a second run attaches to the daemon the first one started, spawning nothing 888ms + ✓ flows run against a data dir with no daemon (§6 test 7) > detects a stale connection file left by a hard kill and starts a fresh daemon 962ms + ✓ concurrent invocations against one empty data dir (§6 test 15) > ends with exactly one daemon owning the socket, and both runs succeed 1148ms + ✓ refusals from a spawn that cannot produce a daemon > names relayflowd_not_found rather than falling through to PATH 413ms + ✓ refusals from a spawn that cannot produce a daemon > names daemon_start_failed and quotes the daemon log when startup dies 481ms + ✓ refusals from a spawn that cannot produce a daemon > refuses a daemon speaking another protocol version instead of binding over it 527ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/agent-transcript-live.test.ts (4 tests | 4 failed) 73ms + × the transcript digest through the built CLI, a real daemon and the local agent > preserves structured agent failure details and its completed root index 18ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × the transcript digest through the built CLI, a real daemon and the local agent > preserves structured llm failure details and its completed root index 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × the transcript digest through the built CLI, a real daemon and the local agent > journals the digest in trajectory_tail on a successful agent step and writes the file it points at 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × the transcript digest through the built CLI, a real daemon and the local agent > on a failed agent step, names the failure and the transcript in the terminal diagnostic, redacted 30ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ✓ tests/wrapper-exit-drain.test.ts (9 tests) 3263ms + ✓ reports a signalled wrapper death while a pipe is held, with its output intact 381ms + ✓ lets a lease abort outrank a successful exit still being drained 539ms + ✓ does not let a later drain overwrite abort while group confirmation is pending 649ms + ✓ tests/resume-local-agent.test.ts (8 tests) 13ms +(node:19805) Warning: Transcript tail for run-9/analyze attempt 1 (stdout) could not be written; the step continues without it: EACCES: permission denied, mkdir '/tmp/transcript-tail-Z23mxe/runs/run-9/steps' +(Use `node --trace-warnings ...` to show where the warning was created) + ✓ tests/transcript-tail.test.ts (11 tests) 1395ms + ✓ direct agent spawn > tees stdout and stderr into tail files that name the dispatch 543ms + ✓ direct agent spawn > completes the step when the tail directory cannot be created 571ms + ✓ tests/advisory-outcome.test.ts (23 tests) 87ms + ✓ tests/shipped-source-cubic-regressions.test.ts (5 tests) 12003ms + ✓ shipped-source adversarial provenance regressions > retains callable writes through member mutation, spreads, this, holes, and alternate receivers 6635ms + ✓ shipped-source adversarial provenance regressions > does not manufacture intrinsic writes or comma-left callables 2409ms + ✓ shipped-source adversarial provenance regressions > treats constructor and implicit-this receiver escapes as possible worker writes 578ms + ✓ shipped-source adversarial provenance regressions > maps pure helper parameters and refuses mutations or conditional assignments as proofs 1761ms + ✓ shipped-source adversarial provenance regressions > does not apply later alias assignments retroactively to copied values 619ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/agent-cwd-live.test.ts (4 tests | 4 failed) 55ms + × agents drive two checkouts under one run root > runs each CLI in its declared directory, and the run is not refused as an unknown field 18ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × agents drive two checkouts under one run root > gates on an artifact path relative to the agent directory 14ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × a declaration this contract cannot honour is refused at its own edge > refuses a path that climbs out of the run root without starting a run at all 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × a declaration this contract cannot honour is refused at its own edge > fails the step with the reason when the directory is not there, rather than running somewhere else 11ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ tests/authored-helpers.test.ts (6 tests | 5 failed) 24ms + × lowers the named acceptance helpers and Slack to confirmed journal effects 6ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × runs every available provider through the real kernel and resumes completed effects without a second write 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × replays after SIGKILL before confirm with the same token and one successful completion 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × replays after SIGKILL before complete with the same token and one successful completion 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × journals provider failure with worker_error and never confirms the effect 1ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + ✓ tests/cloud-mirror-session.test.ts (12 tests) 13ms + ✓ tests/agent-cwd.test.ts (53 tests) 71ms + ✓ tests/authored-flow-operation.test.ts (24 tests) 582ms + ✓ tests/budget-attribution.test.ts (10 tests) 10ms + ✓ tests/helper-reference.test.ts (30 tests) 23ms + ❯ tests/cloud-mirror-live.test.ts (3 tests | 3 skipped) + ✓ tests/pty-sidechannel.test.ts (14 tests) 8949ms + ✓ view attach preserves worker completion and marks only drive 1067ms + ✓ drive attach preserves worker completion and marks only drive 571ms + ✓ passthrough attach preserves worker completion and marks only drive 1002ms + ✓ none attach preserves worker completion and marks only drive 1041ms + ✓ none subscriber lets an unattended CLI read EOF 614ms + ✓ view subscriber lets an unattended CLI read EOF 568ms + ✓ passthrough subscriber lets an unattended CLI read EOF 591ms + ✓ incomplete subscriber lets an unattended CLI read EOF 530ms + ✓ unattended Codex receives closed stdin before startup instead of entering its additional-input lifecycle 661ms + ✓ ends driven stdin when the last drive peer disconnects after spawn 580ms + ✓ rejects drive after EOF without marking human intervention 866ms + ✓ delivers all drive bytes in order across child stdin backpressure 823ms + ✓ tests/flow-requirements.test.ts (14 tests) 845ms + ✓ flows check prints REQUIRES > names the helper, the harness and the mcp server of an authored flow 594ms + ✓ tests/backlog-picker.test.ts (14 tests) 42ms + ✓ tests/plugin-store-bounds.test.ts (11 tests) 91ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/local-agent-live.test.ts (7 tests | 7 failed) 100ms + × built CLI local agent against a real daemon > dispatches through the wrapper and keeps --json stdout report-shaped 18ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × built CLI local agent against a real daemon > runs beyond the initial 30-second lease without a second invocation 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × built CLI local agent against a real daemon > renders actual agent completion in text output 11ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × built CLI local agent against a real daemon > returns a failed run when the agent process fails 15ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × built CLI local agent against a real daemon > prints a remedy that runs the parked authored flow to completion 12ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × built CLI local agent against a real daemon > prints a remedy that runs, for a run started from an input file too long to be one 16ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × built CLI local agent against a real daemon > refuses a workspace it cannot pin before invoking the agent 14ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ✓ tests/classify-outcome.test.ts (11 tests) 5923ms + ✓ classifyOutcome > gives up and reports when a running run never becomes classifiable 2009ms + ✓ the remedy on a worker park > follows a step through a retry backoff longer than the unclassified bound 3003ms + ✓ the remedy on a worker park > follows a run.start outcome that is already running on a retried attempt 503ms + ❯ tests/cloud-mirror-live.test.ts (3 tests | 3 skipped) 10009ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-completion-recovery.test.ts (5 tests | 5 failed) 65ms + × reuses the committed detail after the redaction environment rotates 19ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × commits the verdict once, and a clean re-execution reads it back 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × recovers a committed verdict when a no-detail retry follows a pre-marker loss 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × reuses the admitted marker when a no-detail retry follows a post-marker loss 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × leaves a one-argument done() writing nothing to the verdict stream 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/backlog-picker-flow.test.ts (6 tests) 298ms + ✓ tests/hosted-extension-protocol-intrinsics.test.ts (6 tests) 13ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/budget-unmetered-live.test.ts (4 tests | 4 failed) 57ms + × unmetered budget spend through the live kernel > runs an unpriced step under a dollar budget without tripping it, journaling unknown dollars 17ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × unmetered budget spend through the live kernel > journals an unpriced claude step's reported cost beside unchanged metered usage, and the verdict is unchanged 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × unmetered budget spend through the live kernel > still counts an unpriced step toward a token budget 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × unmetered budget spend through the live kernel > accrues a priced step and stops the run when it crosses the dollar budget 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/preflight-permissions-unenforced.test.ts (17 tests) 527ms + ✓ an authored TypeScript body is out of reach, and spec.ts says so > checks clean on a .flow.ts whose body declares permissions 479ms + ✓ tests/hosted-extension-routing.test.ts (7 tests) 8ms + ✓ tests/webhook.test.ts (9 tests) 839ms + ✓ webhook ingress > checks TS declarations against flows.json without invoking handlers 766ms + ✓ tests/redact.test.ts (54 tests) 10ms + ✓ tests/stuck-run-triage.test.ts (22 tests) 3114ms + ✓ stuck-run-triage shell text > collects tails with no GNU timeout on PATH, as on a stock macOS 3074ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-advisory-run-live.test.ts (16 tests | 8 failed) 114ms + × a recorded nonzero f.run through the live kernel > resolves to the journaled exit code instead of ending the flow 19ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > resolves a green command through the same policy 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > leaves the default fatal and still resolving to the stdout string 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > still fails a timeout, which recorded no exit code to report 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > still fails a declared named gate on a recorded step whose producer succeeded 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > still fails a declared named gate on a default step whose producer succeeded 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > hands a predicate gate the recorded result, not the stdout string 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a recorded nonzero f.run through the live kernel > refuses a policy value the kernel enum does not name, before journaling anything 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/cli-probe.test.ts (17 tests) 1905ms + ✓ tests/cli-watch.test.ts (10 tests) 16519ms + ✓ flows check --watch > rechecks syntax errors, clears once, and returns the last refusal on Ctrl-C 1366ms + ✓ flows check --watch > streams JSON lines without ANSI, recovers after atomic saves, and exits zero after repair 1893ms + ✓ flows check --watch > coalesces 20 concurrent saves into at most two rechecks 1890ms + ✓ flows check --watch > watches transitive relative use imports, cycles, and nearest config changes 2452ms + ✓ flows check --watch > refreshes the import graph and notices missing imports being created 2448ms + ✓ flows check --watch > reloads authored TypeScript instead of reusing the first imported definition 1842ms + ✓ flows check --watch > detects a nearer config appearing and falls back after it is deleted 1922ms + ✓ flows check --watch > keeps watching after the target is deleted and recreated 1925ms + ✓ flows check --watch > queues changes during a slow check without overlapping checks 778ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/human-live.test.ts (3 tests | 3 failed) 49ms + × f.human against a real daemon > parks with the question, refuses wrong answers, records one, and resumes to success 21ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × f.human against a real daemon > a "no" is a value the body branches on: declined, exit 0, no effect 15ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + × f.human against a real daemon > refuses to answer a run the daemon does not know 13ms + → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ✓ tests/check-worker-surface.test.ts (11 tests) 88ms + ✓ tests/authored-step-failed.test.ts (10 tests) 39ms +(node:22107) ExperimentalWarning: SQLite is an experimental feature and might change at any time +(Use `node --trace-warnings ...` to show where the warning was created) + ✓ tests/authored-status-detail.test.ts (20 tests) 72ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-parallel-agents.test.ts (8 tests | 8 failed) 104ms + × authored steps under local workers with capacity > runs more concurrent f.llm calls than the worker holds side by side, never more than its capacity 17ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > completes more concurrent f.agent calls than the worker holds: the overflow waits for a slot instead of parking 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > runs agents in distinct working directories side by side (the kernel carries cwd) 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > serializes agents whose cwd is a symlink alias of the same directory 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > serializes agents whose cwd is a directory nested inside the other 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > never starts queued agents once the body has failed 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > never starts a queued agent when the agent holding the only slot fails 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored steps under local workers with capacity > parks the overflow when the body is not told the capacity (the defect this closes) 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/budget-preflight.test.ts (25 tests) 16ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-retried-child-resume-live.test.ts (2 tests | 2 failed) 32ms + × an authored step whose child run retried an attempt > resumes after a kill mid-step and reads the terminal completion, not the crashed one 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × an authored step whose child run retried an attempt > reads the terminal completion with no daemon restart or flows resume, when a worker died mid-attempt 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/shipped-source-flow-header-provenance.test.ts (1 test) 2652ms + ✓ shipped-source flow header provenance > fails closed for unsafe authored and declarative headers 2651ms + ✓ tests/provider-trigger-contract.test.ts (7 tests) 823ms + ✓ provider trigger contract > accepts one subscription from each of five providers and refuses a bogus event on any of them 480ms + ✓ provider trigger contract > fails `flows check` before deployment and passes once the event is real 337ms + ✓ tests/work-package-consumer.test.ts (13 tests) 129ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/yaml-local-agent-live.test.ts (9 tests | 9 failed) 116ms + × YAML --local-agent through the built CLI and real daemon > runs with the checked step CLI and model and journals done 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > runs with the checked named CLI and model and journals done 15ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > runs with the checked project CLI and model and journals done 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > still parks without --local-agent 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > resumes a parked spec run with --local-agent instead of parking identically again 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > parks a second time with a different message when the attached worker is not eligible 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > reports the agent process failure 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML --local-agent through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/helpers-fanout.test.ts (96 tests) 161ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-step-graph-live.test.ts (1 test | 1 failed) 18ms + × the authored step DAG through the live kernel > carries labels and predecessors on every index record and journal step, ids unchanged 17ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/named-gate-journal.test.ts (5 tests | 5 failed) 71ms + × a lowered subprocess_gate journals the gate command's streams > keeps both tails on a FAILING gate, the case the operator has nothing else for 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a lowered subprocess_gate journals the gate command's streams > keeps both tails on a PASSING gate, so a gate that passed for the wrong reason is inspectable 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a lowered subprocess_gate journals the gate command's streams > journals the diagnostic when the gate never reached the command 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a lowered subprocess_gate journals the gate command's streams > persists what the gate printed before a timeout killed it 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × a gate on an agent step > journals the command's streams and surfaces them in the authored failure 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/generate-triggers.test.ts (7 tests) 1058ms + ✓ discovers new adapters, preserves exact event names, and prefers adapter-local mappings 330ms + ✓ tests/local-agent-remedy.test.ts (16 tests) 17ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-detail-live.test.ts (3 tests | 3 failed) 44ms + × carries done("step_failed", { detail }) into the report, the journal and flows status 17ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × reports a detail a caller sliced through an emoji, instead of hanging on it 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × leaves a one-argument done("step_failed") reporting exactly as it always did 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/yaml-helpers.test.ts (34 tests) 68ms + ✓ tests/direct-run-failure.test.ts (12 tests) 18ms + ✓ tests/authored-agent-permissions.test.ts (27 tests) 898ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/worker-lease-drift-live.test.ts (3 tests | 3 failed) 51ms + × worker lease under clock skew between worker and daemon > holds the lease when the worker clock runs 45s ahead of the daemon 24ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × worker lease under clock skew between worker and daemon > renews before the daemon deadline when the worker clock runs 75s behind the daemon 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × attempt accounting after a lost worker > does not report attempt=2/1 when the first attempt died uncharged 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ tests/live-event-activities.test.ts (2 tests | 2 failed) 5ms + × runs surface f.on through the local daemon event path and journals its buffered wake 4ms + → relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd + × survives SIGKILL after stream.appended and delivers the frame once after daemon restart 1ms + → relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd + ✓ tests/software-garden-babysitter-composition.test.ts (6 tests | 2 skipped) 46ms + ✓ tests/worker-lease.test.ts (7 tests) 19ms + ✓ tests/worker-lease-lost.test.ts (17 tests) 24ms + ✓ tests/webhook-hardening.test.ts (11 tests) 59ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-probe-cache.test.ts (5 tests | 5 failed) 71ms + × authored run CLI probe cache > nine calls have no expired attempts at capacity 1 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored run CLI probe cache > nine calls have no expired attempts at capacity 4 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored run CLI probe cache > does not serialize nine starts behind nine probes, and probes again on a new run 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored run CLI probe cache > caches probe failures while refusing all nine calls 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored run CLI probe cache > shares probe results across agent calls too 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/yaml-declared-streams-live.test.ts (8 tests | 8 failed) 106ms + × YAML declared streams through the built CLI and real daemon > runs with the checked step CLI and model and journals done 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > runs with the checked named CLI and model and journals done 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > runs with the checked project CLI and model and journals done 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > still parks without --local-agent 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > reports the agent process failure 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > resumes the journaled stream declarations after the input YAML changes 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × YAML declared streams through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/human-to.test.ts (8 tests) 13ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-dispatch-live.test.ts (2 tests | 2 failed) 33ms + × durable child flow dispatch > runs a declared child in the parent DAG and replays it without repeating effects 19ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × durable child flow dispatch > lowers a named gate attached to the dispatch receipt 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ tests/plugin-loader.test.ts (9 tests | 1 failed) 2170ms + × journals plugin effect input and receipt through the daemon 2041ms + → journal client: connect failed: connect ENOENT /tmp/relayflowd-4a13addfaf96.sock +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/step-lease.test.ts (36 tests | 4 failed) 98ms + × f.run leases against the live kernel > enforces 10000 ms for 'sleep 5; printf ok' 19ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × f.run leases against the live kernel > enforces 40000 ms for 'sleep 31; printf ok' 14ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × f.run leases against the live kernel > enforces 30000 ms for 'sleep 31; printf ok' 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × f.run leases against the live kernel > enforces 100 ms for 'sleep 5' 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/deploy.test.ts (11 tests) 5415ms + ✓ flows deploy file buckets > publishes the full signed layout byte-for-byte and redeploys as a noop 853ms + ✓ flows deploy file buckets > answers --json with one object per outcome 857ms + ✓ flows deploy file buckets > reports a refusal as JSON under --json 399ms + ✓ flows deploy file buckets > refuses a missing local bundle before creating the bucket 390ms + ✓ flows deploy file buckets > refuses an unreachable bucket before copying 417ms + ✓ flows deploy file buckets > refuses an unwritable bucket 414ms + ✓ flows deploy file buckets > refuses local tampering of spec.canonical.json 389ms + ✓ flows deploy file buckets > refuses local tampering of identity.json 418ms + ✓ flows deploy file buckets > refuses asset bundles instead of using daemon-relative files 417ms + ✓ flows deploy file buckets > never labels a corrupt existing deployment as a noop 824ms + ✓ tests/bin.test.ts (12 tests) 6056ms + ✓ built flows binary > prints the installed SDK version for --version 382ms + ✓ built flows binary > prints the installed SDK version for -V 396ms + ✓ built flows binary > keeps version flags strict when extra arguments are supplied 396ms + ✓ built flows binary > prints the installed SDK version from the standalone binary for --version 983ms + ✓ built flows binary > prints the installed SDK version from the standalone binary for -V 966ms + ✓ built flows binary > refuses through a symlink to the built artifact 401ms + ✓ built flows binary > refuses through a symlinked directory component 409ms + ✓ built flows binary > classifies a signal-terminated auth probe as probe_failed 924ms + ✓ built flows binary > classifies an unavailable PATH resolver as probe_failed 397ms + ✓ built flows binary > does not describe a present non-executable CLI as missing 402ms + ✓ built flows binary > runs one auth probe for three steps sharing a flow CLI 397ms + ✓ tests/babysitter-catalog-export.test.ts (14 tests) 771ms + ✓ Babysitter catalog artifact export > CLI refuses an existing output and leaves no file on validation failure 627ms + ✓ tests/communication.test.ts (10 tests) 13ms + ✓ tests/communication-review.test.ts (6 tests) 337ms + ✓ tests/transport-evidence-bounds.test.ts (7 tests) 10ms + ✓ tests/typed-output.test.ts (14 tests) 199ms + ❯ tests/webhook-live.test.ts (6 tests | 6 failed) 62741ms + × executes and deduplicates 'app_mention' only for its provider and matching payload 10483ms + → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × executes and deduplicates 'reaction_added' only for its provider and matching payload 10451ms + → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × executes and deduplicates 'pull_request' only for its provider and matching payload 10487ms + → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × flows serve-webhook writes JSON before the daemon starts, then journals and archives exactly once 10457ms + → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × replays a dropped file after SIGKILL before spawn 10428ms + → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × resumes the same journal after SIGKILL after spawn and before acknowledgement 10435ms + → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ❯ tests/effect-channel.test.ts (5 tests | 4 failed) 11ms + × journals one post across interruption before none 4ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × journals one post across interruption before record 0ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × journals one post across interruption before confirm 0ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + × journals one post across interruption before complete 0ms + → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + ✓ tests/worker-slots.test.ts (8 tests) 7ms + ✓ tests/json-schema-bound.test.ts (71 tests) 2371ms + ✓ JSON Schema termination bound > walks a deep schema with an explicit stack rather than recursion 1953ms + ✓ tests/communication-worker.test.ts (17 tests) 1711ms + ✓ tests/cloud-mirror-transport.test.ts (5 tests) 10ms + ✓ tests/mcp-lifecycle.test.ts (4 tests) 12ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-parallel-llm.test.ts (6 tests | 6 failed) 83ms + × parallel llm capacity 1 > deduplicates concurrent preflight probes 17ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × parallel llm capacity 1 > completes nine calls without expired child leases during slow preflight 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × parallel llm capacity 1 > keeps the durable root lease alive across two cold models 15ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × parallel llm capacity 4 > deduplicates concurrent preflight probes 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × parallel llm capacity 4 > completes nine calls without expired child leases during slow preflight 11ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × parallel llm capacity 4 > keeps the durable root lease alive across two cold models 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/model-selection.test.ts (10 tests) 17ms + ✓ tests/f-memory.test.ts (7 tests) 838ms + ✓ tests/relayflowd-path.test.ts (10 tests) 5ms + ✓ tests/agent-artifacts.test.ts (9 tests) 16ms + ✓ tests/authored-plugin-effect.test.ts (6 tests) 72ms + ✓ tests/hosted-hardening.test.ts (11 tests) 14ms + ✓ tests/local-dev-ux.test.ts (8 tests) 23ms + ✓ tests/authored-preflight.test.ts (5 tests) 229ms + ✓ tests/deterministic-llm.test.ts (5 tests) 63ms + ↓ tests/relay-cli-surface-live.test.ts (3 tests | 3 skipped) + ✓ tests/authored-declined.test.ts (13 tests) 53ms + ✓ tests/resume-failure.test.ts (2 tests) 5ms + ✓ tests/dependency-validation.test.ts (6 tests) 717ms + ✓ dependency validation > accepts a valid 10,000-step reverse chain through every direct public boundary 397ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/worker-lease-lost-live.test.ts (3 tests | 3 failed) 45ms + × reports journal success after completion rejects with lease_conflict 19ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × reports journal success after completion rejects with run_terminal 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × reports journal success when a renewal rejects after completion landed 12ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/authored-hooks.test.ts (5 tests) 7ms + ✓ tests/input-binding.test.ts (12 tests) 208ms + ✓ tests/yaml-helper-effect.test.ts (4 tests) 75ms + ✓ tests/cloud-mirror-ledger.test.ts (7 tests) 1315ms + ✓ the mirror ledger > keeps the newest entries when the count cap bites 1302ms + ✓ tests/scope-preflight.test.ts (6 tests) 10ms + ✓ tests/run-from-digest.test.ts (6 tests) 4946ms + ✓ flows run digest input > submits the sealed canonical spec through the normal journal path without checkout 469ms + ✓ flows run digest input > uses a verified cache hit even after the bucket is removed 443ms + ✓ flows run digest input > resolves deploy.bucket from flows.json and honors explicit override 1272ms + ✓ flows run digest input > refuses an unconfigured bucket 825ms + ✓ flows run digest input > refuses tampered spec.canonical.json before creating run data 988ms + ✓ flows run digest input > refuses tampered identity.json before creating run data 949ms + ✓ tests/build-gate.test.ts (3 tests) 1250ms + ✓ flows build gates on flows check green (#318) > refuses a flow with an unresolvable named-agent CLI and leaves no artifacts 414ms + ✓ flows build gates on flows check green (#318) > --json emits one CheckReport object on stdout on refusal, exits 2, no artifacts 412ms + ✓ flows build gates on flows check green (#318) > builds the bundle on success (regression: gate must not block valid flows) 423ms + ✓ tests/scope-compiler.test.ts (25 tests) 11ms + ✓ tests/shipped-source-models.test.ts (2 tests) 35521ms + ✓ first-party shipped source model pins > gives every TypeScript agent and LLM an explicit supported pair or a pinned named-agent declaration 35479ms + ✓ tests/hn-poller.test.ts (6 tests) 7ms + ✓ tests/worker-cli-abort.test.ts (3 tests) 3884ms + ✓ stops claude and its process group when lease ownership is lost 1389ms + ✓ stops wrapper.mjs and its process group when lease ownership is lost 1443ms + ✓ fails closed when abort cannot prove the process group is gone 1051ms + ✓ tests/authored-step-failed-exit.test.ts (3 tests) 9ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/retried-step-failure.test.ts (1 test | 1 failed) 21ms + × a retried step failing differently through the live kernel > reports both attempts and says the evidence differs 20ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/dir-watcher-poller.test.ts (6 tests) 4ms + ✓ tests/subscription-report.test.ts (8 tests) 5ms + ✓ tests/plugin-add.test.ts (7 tests) 1397ms + ✓ typechecks the augmented verb and rejects unknown namespaces 1084ms + ✓ tests/model-pricing.test.ts (10 tests) 7ms + ❯ tests/yaml-helper-live.test.ts (1 test | 1 failed) 19ms + × runs compiled YAML helpers through the built CLI and kernel effect journal 18ms + → error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +: expected 1 to be +0 // Object.is equality + ❯ tests/provider-trigger-executor.test.ts (4 tests | 3 failed) 16ms + × the kernel executes compiled 'app_mention' subscriptions with provider isolation and durable dedupe 9ms + → spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × the kernel executes compiled 'reaction_added' subscriptions with provider isolation and durable dedupe 2ms + → spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + × the kernel executes compiled 'pull_request' subscriptions with provider isolation and durable dedupe 2ms + → spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ✓ tests/journal-client-completion.test.ts (6 tests) 103ms + ✓ tests/authored-use-loader.test.ts (6 tests) 819ms + ✓ tests/wrapper-artifacts-cwd.test.ts (2 tests) 80ms + ✓ tests/hello-deterministic.test.ts (5 tests) 18ms + ✓ tests/worker-lease-sweep.test.ts (4 tests) 18ms + ✓ tests/transcript-tail-close.test.ts (2 tests) 1518ms + ✓ a stalled transcript-tail close > does not hold the spawn open past its bounded window 750ms + ✓ a stalled tail close beside a transcript that finished > still journals the transcript pointer 767ms + ✓ tests/transcript-exclusion-timeout.test.ts (1 test) 285ms + ✓ tests/cli-adapter.test.ts (4 tests) 5ms + ✓ tests/work-package-validator.test.ts (7 tests) 5ms + ✓ tests/communication-mixed-resume.test.ts (1 test) 173ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/authored-declined-live.test.ts (1 test | 1 failed) 18ms + × runs an input guard and resumes its completed declined root without repeated effects 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/activity-preflight.test.ts (10 tests) 23ms + ✓ tests/cli-answer.test.ts (15 tests) 9ms + ✓ tests/agent-relay-hardening.test.ts (12 tests) 13ms + ✓ tests/communication-preflight.test.ts (13 tests) 37ms + ✓ tests/bundle-preflight.test.ts (4 tests) 967ms + ✓ bundle execution preflight > ignores surrounding cache configuration on a verified cache hit 487ms + ✓ bundle execution preflight > uses the built alias for a nameless flow even in a digest-only cache directory 462ms + ↓ tests/real-cli-adapters.test.ts (3 tests | 3 skipped) + ✓ tests/memoization.test.ts (57 tests) 66ms + ✓ tests/local-agent-environment.test.ts (8 tests) 6ms + ✓ tests/fs-descriptor.test.ts (1 test) 5ms + ✓ tests/parse-json-output.test.ts (7 tests) 3ms + ✓ tests/reported-cost.test.ts (4 tests) 3ms + ✓ tests/journal-client-subscriptions.test.ts (1 test) 8ms + ✓ tests/authored-model-probe-kinds.test.ts (2 tests) 196ms + ✓ tests/communication-environment-preflight.test.ts (6 tests) 4ms +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + ❯ tests/budget-authored-live.test.ts (2 tests | 2 failed) 32ms + × authored budgets through the live kernel > retains the first completion and journals refusal of the next authored step 18ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + × authored budgets through the live kernel > permits done after the last valid step crosses the limit 13ms + → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ✓ tests/shipped-source-call-array-forwarding.test.ts (1 test) 3338ms + ✓ shipped-source call-array forwarding > maps rest indexes and nested same-helper actuals for workers and flows 3337ms + ✓ tests/authored-surface-authority.test.ts (2 tests) 15ms + ✓ tests/slack-writeback.test.ts (1 test) 258ms + ✓ tests/adapters/claude.test.ts (7 tests) 5ms + ✓ tests/adapters/codex.test.ts (7 tests) 4ms + ✓ tests/worker-cli-cwd.test.ts (2 tests) 363ms + ✓ runAgentCli — cwd propagation (flows#357) > omits cwd when not provided (inherits parent cwd) 357ms + ✓ tests/slack-block-kit.test.ts (5 tests) 15ms + ✓ tests/communication-history.test.ts (1 test) 4ms + ✓ tests/resume-worker-lease.test.ts (2 tests) 4ms + ✓ tests/adapters/registry.test.ts (4 tests) 4ms + ✓ tests/shipped-source-parameter-provenance.test.ts (1 test) 1960ms + ✓ shipped-source parameter provenance > keeps caller-supplied identifier and destructured keys unknown 1959ms + ✓ tests/direct-run-worker-lease.test.ts (2 tests) 8ms + ✓ tests/authored-declined-report.test.ts (6 tests) 7ms + ✓ tests/promise-ancestry.test.ts (2 tests) 318ms + ✓ reachableTargets > handles more than 32 targets and a chain too deep for recursion 315ms + ✓ tests/communication-refusal.test.ts (1 test) 13ms + ✓ tests/agent-cwd-validation.test.ts (2 tests) 408ms + ✓ declarative agent cwd > is refused by `flows check` on a YAML flow before anything runs 404ms + ✓ tests/cli-cloud-mirror-flag.test.ts (4 tests) 3ms + ✓ tests/catalog-plugins.test.ts (2 tests) 3ms + ✓ tests/check-command-cwd.test.ts (1 test) 14ms + ✓ tests/communication-lazy.test.ts (1 test) 5ms + ✓ tests/cli-progress-wait.test.ts (2 tests) 4ms + ✓ tests/bundle-transport.test.ts (20 tests) 2625ms + ✓ digest references > accepts and deploys the build output for hello 475ms + ✓ digest references > accepts and deploys the build output for Hello 408ms + ✓ digest references > accepts and deploys the build output for hello.world 407ms + ✓ digest references > accepts and deploys the build output for hello_world 454ms + ✓ digest references > accepts and deploys the build output for 123 448ms + ✓ digest references > accepts and deploys the build output for A_b.c-1 432ms + ↓ tests/run-digest-live.test.ts (1 test | 1 skipped) + ✓ tests/placement.test.ts (54 tests) 19ms + ✓ tests/canonical-tree.test.ts (1 test) 2ms + ✓ tests/preflight-run-cache.test.ts (1 test) 7ms + ✓ tests/local-agent-stream-selection.test.ts (1 test) 6ms + ✓ tests/communication-tools.test.ts (1 test) 72ms + ✓ tests/authored-admission.test.ts (2 tests) 3ms + ✓ tests/memory.test.ts (18 tests) 8ms + ✓ tests/worker-platform.test.ts (1 test) 3ms +node:internal/modules/run_main:107 + triggerUncaughtException( + ^ + +AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: + +2 !== 4 + + at expectPark (file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:58:10) + at file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:63:3 { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: 2, + expected: 4, + operator: 'strictEqual', + diff: 'simple' +} + +Node.js v25.6.0 + ❯ tests/event-await-cli.test.ts (1 test | 1 failed) 619ms + × parks, restarts, and replays two event wakes through the actual CLI 619ms + → Command failed: /usr/local/share/nvm/versions/node/v25.6.0/bin/node /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs /home/daytona/.relayflow-v2-supervisor/durable/repository +node:internal/modules/run_main:107 + triggerUncaughtException( + ^ + +AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: + +2 !== 4 + + at expectPark (file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:58:10) + at file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:63:3 { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: 2, + expected: 4, + operator: 'strictEqual', + diff: 'simple' +} + +Node.js v25.6.0 + + ✓ tests/run-digest.test.ts (4 tests) 1681ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {invalid json 436ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{}} 406ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":123}} 422ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":""}} 416ms + +⎯⎯⎯⎯⎯⎯ Failed Suites 4 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-node-runtime.test.ts [ tests/authored-node-runtime.test.ts ] +AssertionError: expected '1.3.6' to be '1.4.0' // Object.is equality + +Expected: "1.4.0" +Received: "1.3.6" + + ❯ tests/authored-node-runtime.test.ts:18:77 + 16| + 17| beforeAll(() => { + 18| expect(spawnSync(bun, ['--version'], { encoding: 'utf8' }).stdout.tr… + | ^ + 19| expect(existsSync(daemon), 'build the current kernel or set RELAYFLO… + 20| stage = mkdtempSync(join(tmpdir(), 'authored-standalone-build-')); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/177]⎯ + + FAIL tests/cloud-mirror-live.test.ts [ tests/cloud-mirror-live.test.ts ] +AssertionError: relayflowd at /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd — build it with (cd kernel && ../ops/cargo.sh build): expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ tests/cloud-mirror-live.test.ts:77:118 + 75| + 76| beforeAll(async () => { + 77| expect(existsSync(RELAYFLOWD), `relayflowd at ${RELAYFLOWD} — build … + | ^ + 78| expect(existsSync(BUILT_CLI), `built CLI at ${BUILT_CLI} — build it … + 79| + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/177]⎯ + + FAIL tests/cloud-mirror-live.test.ts [ tests/cloud-mirror-live.test.ts ] +Error: Hook timed out in 10000ms. +If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout". +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/177]⎯ + + FAIL tests/direct-input.test.ts [ tests/direct-input.test.ts ] +Error: relayflowd is not executable at /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd + ❯ requireExecutable tests/direct-input.test.ts:319:11 + 317| accessSync(path, constants.X_OK); + 318| } catch { + 319| throw new Error(`${label} is not executable at ${path}`); + | ^ + 320| } + 321| } + ❯ tests/direct-input.test.ts:32:3 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/177]⎯ + + FAIL tests/live-kernel.test.ts [ tests/live-kernel.test.ts ] +Error: LIVE_KERNEL_MISSING: RELAYFLOWD_BIN does not name an executable file: /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd. Build it with: (cd kernel && ../ops/cargo.sh build) + ❯ requireExecutable tests/live-kernel.test.ts:1876:11 + 1874| accessSync(path, constants.X_OK); + 1875| } catch { + 1876| throw new Error( + | ^ + 1877| `LIVE_KERNEL_MISSING: ${source} does not name an executable file… + 1878| ); + ❯ tests/live-kernel.test.ts:74:3 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/177]⎯ + +⎯⎯⎯⎯⎯⎯ Failed Tests 172 ⎯⎯⎯⎯⎯⎯ + + FAIL tests/agent-artifacts-live.test.ts > agent artifacts and gates through the built CLI, a real daemon and the local agent > journals the files the agent wrote, including under a dot-directory, and every artifact gate passes on that journal +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 + 29| })).target_directory, 'debug', 'relayflowd'); + 30| } catch (cause) { + 31| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 32| } + 33| } + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:122:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:122:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18966, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/177]⎯ + + FAIL tests/agent-artifacts-live.test.ts > agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run when the artifact_exists gate names a file the agent did not write +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 + 29| })).target_directory, 'debug', 'relayflowd'); + 30| } catch (cause) { + 31| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 32| } + 33| } + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:169:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:169:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18977, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/177]⎯ + + FAIL tests/agent-artifacts-live.test.ts > agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run with the author reason when a predicate gate returns false, journaling the verdict +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 + 29| })).target_directory, 'debug', 'relayflowd'); + 30| } catch (cause) { + 31| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 32| } + 33| } + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:186:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:186:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18988, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/177]⎯ + + FAIL tests/agent-artifacts-live.test.ts > review follow-ups > applies a predicate gate on a helper step too, and journals its verdict +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 + 29| })).target_directory, 'debug', 'relayflowd'); + 30| } catch (cause) { + 31| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 32| } + 33| } + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:208:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:208:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18999, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/177]⎯ + + FAIL tests/agent-artifacts-live.test.ts > review follow-ups > records predicate verdicts on the root run so a resume reuses them instead of re-running the closure +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 + 29| })).target_directory, 'debug', 'relayflowd'); + 30| } catch (cause) { + 31| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 32| } + 33| } + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:221:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 + ❯ fixture tests/agent-artifacts-live.test.ts:52:22 + ❯ tests/agent-artifacts-live.test.ts:221:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19010, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/177]⎯ + + FAIL tests/agent-cwd-live.test.ts > agents drive two checkouts under one run root > runs each CLI in its declared directory, and the run is not refused as an unknown field +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 + 37| })).target_directory, 'debug', 'relayflowd'); + 38| } catch (cause) { + 39| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 40| } + 41| } + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:133:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:133:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19996, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/177]⎯ + + FAIL tests/agent-cwd-live.test.ts > agents drive two checkouts under one run root > gates on an artifact path relative to the agent directory +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 + 37| })).target_directory, 'debug', 'relayflowd'); + 38| } catch (cause) { + 39| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 40| } + 41| } + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:171:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:171:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20013, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/177]⎯ + + FAIL tests/agent-cwd-live.test.ts > a declaration this contract cannot honour is refused at its own edge > refuses a path that climbs out of the run root without starting a run at all +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 + 37| })).target_directory, 'debug', 'relayflowd'); + 38| } catch (cause) { + 39| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 40| } + 41| } + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:182:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:182:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20028, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/177]⎯ + + FAIL tests/agent-cwd-live.test.ts > a declaration this contract cannot honour is refused at its own edge > fails the step with the reason when the directory is not there, rather than running somewhere else +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 + 37| })).target_directory, 'debug', 'relayflowd'); + 38| } catch (cause) { + 39| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 40| } + 41| } + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:200:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 + ❯ fixture tests/agent-cwd-live.test.ts:64:22 + ❯ tests/agent-cwd-live.test.ts:200:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20039, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/177]⎯ + + FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > preserves structured agent failure details and its completed root index + FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > preserves structured llm failure details and its completed root index +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-transcript-live.test.ts:34:11 + 32| })).target_directory, 'debug', 'relayflowd'); + 33| } catch (cause) { + 34| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 35| } + 36| } + ❯ fixture tests/agent-transcript-live.test.ts:59:22 + ❯ tests/agent-transcript-live.test.ts:130:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-transcript-live.test.ts:28:28 + ❯ fixture tests/agent-transcript-live.test.ts:59:22 + ❯ tests/agent-transcript-live.test.ts:130:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19590, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/177]⎯ + + FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > journals the digest in trajectory_tail on a successful agent step and writes the file it points at +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-transcript-live.test.ts:34:11 + 32| })).target_directory, 'debug', 'relayflowd'); + 33| } catch (cause) { + 34| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 35| } + 36| } + ❯ fixture tests/agent-transcript-live.test.ts:59:22 + ❯ tests/agent-transcript-live.test.ts:154:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-transcript-live.test.ts:28:28 + ❯ fixture tests/agent-transcript-live.test.ts:59:22 + ❯ tests/agent-transcript-live.test.ts:154:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19612, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/177]⎯ + + FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > on a failed agent step, names the failure and the transcript in the terminal diagnostic, redacted +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/agent-transcript-live.test.ts:34:11 + 32| })).target_directory, 'debug', 'relayflowd'); + 33| } catch (cause) { + 34| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 35| } + 36| } + ❯ fixture tests/agent-transcript-live.test.ts:59:22 + ❯ tests/agent-transcript-live.test.ts:190:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/agent-transcript-live.test.ts:28:28 + ❯ fixture tests/agent-transcript-live.test.ts:59:22 + ❯ tests/agent-transcript-live.test.ts:190:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19623, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > resolves to the journaled exit code instead of ending the flow +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:23:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > resolves a green command through the same policy +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:59:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > leaves the default fatal and still resolving to the stdout string +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:77:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > still fails a timeout, which recorded no exit code to report +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:95:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > still fails a declared named gate on a recorded step whose producer succeeded + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > still fails a declared named gate on a default step whose producer succeeded +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:121:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > hands a predicate gate the recorded result, not the stdout string +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:149:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/177]⎯ + + FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > refuses a policy value the kernel enum does not name, before journaling anything +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-advisory-run-live.test.ts:166:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[24/177]⎯ + + FAIL tests/authored-completion-recovery.test.ts > reuses the committed detail after the redaction environment rotates +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-completion-recovery.test.ts:81:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[25/177]⎯ + + FAIL tests/authored-completion-recovery.test.ts > commits the verdict once, and a clean re-execution reads it back +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-completion-recovery.test.ts:121:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[26/177]⎯ + + FAIL tests/authored-completion-recovery.test.ts > recovers a committed verdict when a no-detail retry follows a pre-marker loss +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-completion-recovery.test.ts:154:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[27/177]⎯ + + FAIL tests/authored-completion-recovery.test.ts > reuses the admitted marker when a no-detail retry follows a post-marker loss +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-completion-recovery.test.ts:195:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[28/177]⎯ + + FAIL tests/authored-completion-recovery.test.ts > leaves a one-argument done() writing nothing to the verdict stream +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-completion-recovery.test.ts:223:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[29/177]⎯ + + FAIL tests/authored-declined-live.test.ts > runs an input guard and resumes its completed declined root without repeated effects +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-declined-live.test.ts:9:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[30/177]⎯ + + FAIL tests/authored-detail-live.test.ts > carries done("step_failed", { detail }) into the report, the journal and flows status +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-detail-live.test.ts:21:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[31/177]⎯ + + FAIL tests/authored-detail-live.test.ts > reports a detail a caller sliced through an emoji, instead of hanging on it +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-detail-live.test.ts:93:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[32/177]⎯ + + FAIL tests/authored-detail-live.test.ts > leaves a one-argument done("step_failed") reporting exactly as it always did +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-detail-live.test.ts:113:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[33/177]⎯ + + FAIL tests/authored-dispatch-live.test.ts > durable child flow dispatch > runs a declared child in the parent DAG and replays it without repeating effects +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-dispatch-live.test.ts:17:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[34/177]⎯ + + FAIL tests/authored-dispatch-live.test.ts > durable child flow dispatch > lowers a named gate attached to the dispatch receipt +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-dispatch-live.test.ts:113:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[35/177]⎯ + + FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > snapshots structured posts into the journal and delivers the same Block Kit body +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-flow-slack.test.ts:48:67 + 46| + 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 50| children.push(daemon); + ❯ tests/authored-flow-slack.test.ts:73:30 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[36/177]⎯ + + FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > journals exactly one effect with the authored params and typed receipt, without network +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-flow-slack.test.ts:48:67 + 46| + 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 50| children.push(daemon); + ❯ tests/authored-flow-slack.test.ts:104:30 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[37/177]⎯ + + FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > replays after SIGKILL before confirm with the same token and one successful completion + FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > replays after SIGKILL before complete with the same token and one successful completion +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-flow-slack.test.ts:48:67 + 46| + 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 50| children.push(daemon); + ❯ tests/authored-flow-slack.test.ts:165:25 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[38/177]⎯ + + FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > writes two files for two calls and supports dm, reply, and react +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-flow-slack.test.ts:48:67 + 46| + 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 50| children.push(daemon); + ❯ tests/authored-flow-slack.test.ts:216:30 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[39/177]⎯ + + FAIL tests/authored-helpers.test.ts > lowers the named acceptance helpers and Slack to confirmed journal effects +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-helpers.test.ts:50:67 + 48| + 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 52| children.push(daemon); + ❯ tests/authored-helpers.test.ts:70:28 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[40/177]⎯ + + FAIL tests/authored-helpers.test.ts > runs every available provider through the real kernel and resumes completed effects without a second write +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-helpers.test.ts:50:67 + 48| + 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 52| children.push(daemon); + ❯ tests/authored-helpers.test.ts:91:28 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[41/177]⎯ + + FAIL tests/authored-helpers.test.ts > replays after SIGKILL before confirm with the same token and one successful completion + FAIL tests/authored-helpers.test.ts > replays after SIGKILL before complete with the same token and one successful completion +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-helpers.test.ts:50:67 + 48| + 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 52| children.push(daemon); + ❯ tests/authored-helpers.test.ts:130:25 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[42/177]⎯ + + FAIL tests/authored-helpers.test.ts > journals provider failure with worker_error and never confirms the effect +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ start tests/authored-helpers.test.ts:50:67 + 48| + 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… + 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… + 52| children.push(daemon); + ❯ tests/authored-helpers.test.ts:181:57 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[43/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > runs more concurrent f.llm calls than the worker holds side by side, never more than its capacity +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:72:57 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[44/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > completes more concurrent f.agent calls than the worker holds: the overflow waits for a slot instead of parking +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:82:46 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[45/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > runs agents in distinct working directories side by side (the kernel carries cwd) +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:94:57 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[46/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > serializes agents whose cwd is a symlink alias of the same directory + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > serializes agents whose cwd is a directory nested inside the other +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:122:57 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[47/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > never starts queued agents once the body has failed +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:138:57 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[48/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > never starts a queued agent when the agent holding the only slot fails +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:158:57 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[49/177]⎯ + + FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > parks the overflow when the body is not told the capacity (the defect this closes) +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 + ❯ tests/authored-parallel-agents.test.ts:167:46 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[50/177]⎯ + + FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 1 > deduplicates concurrent preflight probes + FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 4 > deduplicates concurrent preflight probes +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/authored-parallel-llm.test.ts:16:19 + ❯ tests/authored-parallel-llm.test.ts:81:24 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[51/177]⎯ + + FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 1 > completes nine calls without expired child leases during slow preflight + FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 4 > completes nine calls without expired child leases during slow preflight +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/authored-parallel-llm.test.ts:16:19 + ❯ tests/authored-parallel-llm.test.ts:93:24 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[52/177]⎯ + + FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 1 > keeps the durable root lease alive across two cold models + FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 4 > keeps the durable root lease alive across two cold models +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/authored-parallel-llm.test.ts:16:19 + ❯ tests/authored-parallel-llm.test.ts:106:24 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[53/177]⎯ + + FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > nine calls have no expired attempts at capacity 1 + FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > nine calls have no expired attempts at capacity 4 +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 + ❯ tests/authored-probe-cache.test.ts:76:64 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[54/177]⎯ + + FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > does not serialize nine starts behind nine probes, and probes again on a new run +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 + ❯ tests/authored-probe-cache.test.ts:96:45 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[55/177]⎯ + + FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > caches probe failures while refusing all nine calls +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 + ❯ tests/authored-probe-cache.test.ts:111:54 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[56/177]⎯ + + FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > shares probe results across agent calls too +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 + ❯ tests/authored-probe-cache.test.ts:129:54 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/177]⎯ + + FAIL tests/authored-retried-child-resume-live.test.ts > an authored step whose child run retried an attempt > resumes after a kill mid-step and reads the terminal completion, not the crashed one +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-retried-child-resume-live.test.ts:45:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/177]⎯ + + FAIL tests/authored-retried-child-resume-live.test.ts > an authored step whose child run retried an attempt > reads the terminal completion with no daemon restart or flows resume, when a worker died mid-attempt +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-retried-child-resume-live.test.ts:105:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[59/177]⎯ + + FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > reports the command that failed and what it printed +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-run-failure-evidence.test.ts:39:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[60/177]⎯ + + FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > names the failing case from the middle of a real test run +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-run-failure-evidence.test.ts:92:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[61/177]⎯ + + FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > carries the same facts structurally, not only rendered into the message +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-run-failure-evidence.test.ts:130:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[62/177]⎯ + + FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > keeps the evidence when the failure is relabelled as a timeout +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-run-failure-evidence.test.ts:154:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[63/177]⎯ + + FAIL tests/authored-run-failure-evidence.test.ts > the child index after the process that wrote it is gone > still names every child, with its own run id, after a daemon restart +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-run-failure-evidence.test.ts:229:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[64/177]⎯ + + FAIL tests/authored-step-graph-live.test.ts > the authored step DAG through the live kernel > carries labels and predecessors on every index record and journal step, ids unchanged +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/authored-step-graph-live.test.ts:51:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[65/177]⎯ + + FAIL tests/budget-authored-live.test.ts > authored budgets through the live kernel > retains the first completion and journals refusal of the next authored step +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/budget-authored-live.test.ts:11:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[66/177]⎯ + + FAIL tests/budget-authored-live.test.ts > authored budgets through the live kernel > permits done after the last valid step crosses the limit +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/budget-authored-live.test.ts:31:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[67/177]⎯ + + FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > runs an unpriced step under a dollar budget without tripping it, journaling unknown dollars +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/budget-unmetered-live.test.ts:28:19 + ❯ tests/budget-unmetered-live.test.ts:50:49 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[68/177]⎯ + + FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > journals an unpriced claude step's reported cost beside unchanged metered usage, and the verdict is unchanged +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/budget-unmetered-live.test.ts:28:19 + ❯ tests/budget-unmetered-live.test.ts:95:49 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[69/177]⎯ + + FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > still counts an unpriced step toward a token budget +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/budget-unmetered-live.test.ts:28:19 + ❯ tests/budget-unmetered-live.test.ts:133:49 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[70/177]⎯ + + FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > accrues a priced step and stops the run when it crosses the dollar budget +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/budget-unmetered-live.test.ts:28:19 + ❯ tests/budget-unmetered-live.test.ts:145:49 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[71/177]⎯ + + FAIL tests/effect-channel.test.ts > journals one post across interruption before none + FAIL tests/effect-channel.test.ts > journals one post across interruption before record + FAIL tests/effect-channel.test.ts > journals one post across interruption before confirm + FAIL tests/effect-channel.test.ts > journals one post across interruption before complete +AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ tests/effect-channel.test.ts:63:67 + 61| + 62| it.each(['none', 'record', 'confirm', 'complete'] as const)('journals … + 63| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… + | ^ + 64| const dir = mkdtempSync(join(tmpdir(), 'channel-effect-')); director… + 65| let active = await start(dir); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[72/177]⎯ + + FAIL tests/event-await-cli.test.ts > parks, restarts, and replays two event wakes through the actual CLI +Error: Command failed: /usr/local/share/nvm/versions/node/v25.6.0/bin/node /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs /home/daytona/.relayflow-v2-supervisor/durable/repository +node:internal/modules/run_main:107 + triggerUncaughtException( + ^ + +AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: + +2 !== 4 + + at expectPark (file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:58:10) + at file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:63:3 { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: 2, + expected: 4, + operator: 'strictEqual', + diff: 'simple' +} + +Node.js v25.6.0 + + ❯ expectPark tests/fixtures/event-await-cli-probe.mjs:58:10 + ❯ tests/event-await-cli.test.ts:9:18 + 7| + 8| it('parks, restarts, and replays two event wakes through the actual CL… + 9| const output = execFileSync(process.execPath, [resolve(here, 'fixtur… + | ^ + 10| resolve(here, '../../..')], { encoding: 'utf8', timeout: 90_000 }); + 11| expect(output).toContain('E2E_PASS:'); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[73/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > runs f.llm -> f.agent -> f.run with schema-verified journal output and the exact allowed model +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:45:56 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[74/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > runs a dollar-budgeted authored Claude agent with the same default used by preflight +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:70:56 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[75/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > fails invalid LLM output before the next step: not JSON + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > fails invalid LLM output before the next step: {"message":7} +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:108:56 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[76/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > retains tagged-template text output +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:129:39 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[77/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: null + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: [1,2] + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: "hello" +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:142:39 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[78/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > refuses a model outside flows.json before a run or adapter execution +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:150:39 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[79/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > runs the exact authored flagship f.llm -> f.agent -> f.run path through the durable CLI root +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/flow-executor-chain.test.ts:159:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[80/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > resumes an interrupted durable authored root without replaying completed flagship effects +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/flow-executor-chain.test.ts:184:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[81/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > passes a declarative verified value through an agent into a deterministic artifact +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:229:46 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[82/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > journals a missing optional field as a failure before the consuming command executes +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ setup tests/flow-executor-chain.test.ts:26:19 + ❯ tests/flow-executor-chain.test.ts:249:39 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[83/177]⎯ + + FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > flows run consumes YAML bindings and resume reuses the original journal output +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/flow-executor-chain.test.ts:267:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[84/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a queued receipt + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt +Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + 501| + 502| function unsupported(message: string): never { + 503| throw new PluginError('plugin_unsupported', message); + | ^ + 504| } + 505| + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:221:26 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[85/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization +AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + ❯ tests/hosted-extension-isolation.test.ts:283:11 + 281| input: descriptor(), + 282| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… + 283| })).resolves.toEqual({ completionReason: 'success', capability… + | ^ + 284| } finally { + 285| process.execPath = originalExecPath; + +Caused by: Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:277:22 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[86/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic +AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + ❯ tests/hosted-extension-isolation.test.ts:373:11 + 371| input: descriptor('delivery-options'), + 372| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… + 373| })).resolves.toEqual({ completionReason: 'success', capability… + | ^ + 374| } finally { + 375| Buffer.prototype.toString = bufferToString; + +Caused by: Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:367:22 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[87/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + ❯ tests/hosted-extension-isolation.test.ts:431:7 + 429| return { receiptId: 'receipt-1', status: 'queued' }; + 430| } }, + 431| })).resolves.toEqual({ completionReason: 'success', capabilityCall… + | ^ + 432| expect(calls).toBe(1); + 433| expect(readFileSync(join(installed.directory, 'babysitter.flow.ts'… + +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): /tmp/hosted-bwrap-wrapper-i4QbgW/bwrap-wrapper:20 +if (child.error) throw child.error; + ^ + +Error: spawnSync /usr/bin/bwrap ENOENT + at Object.spawnSync (node:internal/child_process:1103:20) + at spawnSync (node:child_process:911:24) + at Object. (/tmp/hosted-bwrap-wrapper-i4QbgW/bwrap-wrapper:19:15) + at Module._compile (node:internal/modules/cjs/loader:1809:14) + at Object..js (node:internal/modules/cjs/loader:1940:10) + at Module.load (node:internal/modules/cjs/loader:1530:32) + at Module._load (node:internal/modules/cjs/loader:1332:12) + at wrapModuleLoad (node:internal/modules/cjs/loader:255:19) + at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5) + at node:internal/main/run_main_module:33:47 { + errno: -2, + code: 'ENOENT', + syscall: 'spawnSync /usr/bin/bwrap', + path: '/usr/bin/bwrap', + spawnargs: [ + '--unshare-all', + '--die-with-parent', + '--new-session', + '--clearenv', + '--cap-drop', + 'ALL', + '--dir', + '/usr', + '--ro-bind', + '/usr/lib', + '/usr/lib', + '--ro-bind', + '/usr/lib64', + '/usr/lib64', + '--ro-bind', + '/usr/lib', + '/lib', + '--ro-bind', + '/usr/lib64', + '/lib64', + '--proc', + '/proc', + '--dev', + '/dev', + '--tmpfs', + '/tmp', + '--dir', + '/runtime', + '--dir', + '/extension', + '--dir', + '/extension/node_modules', + '--dir', + '/extension/node_modules/@relayflows', + '--dir', + '/extension/node_modules/@relayflows/surface', + '--dir', + '/extension/node_modules/@relayflows/surface/dist', + '--dir', + '/extension/node_modules/@relayflows/surface/dist/helpers', + '--dir', + '/extension/node_modules/@relayflows/surface/dist/triggers', + '--dir', + '/extension/src', + '--perms', + '0500', + '--ro-bind-data', + '4', + '/runtime/node', + '--perms', + '0400', + '--ro-bind-data', + '5', + '/runtime/runner.mjs', + '--perms', + '0400', + '--ro-bind-data', + '6', + '/extension/node_modules/@relayflows/surface/package.json', + '--perms', + '0400', + '--ro-bind-data', + '7', + '/extension/node_modules/@relayflows/surface/index.js', + '--perms', + '0400', + '--ro-bind-data', + '8', + '/extension/node_modules/@relayflows/surface/runtime.js', + '--perms', + '0400', + '--ro-bind-data', + '9', + '/extension/node_modules/@relayflows/surface/dist/flow.js', + '--perms', + '0400', + '--ro-bind-data', + '10', + '/extension/node_modules/@relayflows/surface/dist/helpers/providers.js', + '--perms', + '0400', + '--ro-bind-data', + '11', + '/extension/node_modules/@relayflows/surface/dist/provider-trigger.js', + '--perms', + '0400', + '--ro-bind-data', + '12', + '/extension/node_modules/@relayflows/surface/dist/schedule.js', + '--perms', + '0400', + '--ro-bind-data', + '13', + '/extension/node_modules/@relayflows/surface/dist/triggers.js', + '--perms', + '0400', + '--ro-bind-data', + '14', + '/extension/node_modules/@relayflows/surface/dist/triggers/github.js', + '--perms', + ... 27 more items + ] +} + +Node.js v25.6.0 + + ❯ Object. ../../../../../../../tmp/hosted-bwrap-wrapper-i4QbgW/bwrap-wrapper:19:15 + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[88/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch +AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + ❯ tests/hosted-extension-isolation.test.ts:456:7 + 454| return { receiptId: 'receipt-1', status: 'queued' }; + 455| } }, + 456| })).resolves.toEqual({ completionReason: 'success', capabilityCall… + | ^ + 457| expect(calls).toBe(1); + 458| expect(readFileSync(join(surfaceRoot, 'dist/flow.js'), 'utf8')).to… + +Caused by: Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:443:18 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[89/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > refuses oversized Surface files through the bounded descriptor reader +AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } + +- Expected ++ Received + +- Object { ++ PluginError { + "code": "plugin_unsupported", +- "message": StringContaining "cannot read pinned Surface runtime flow.js", + } + + ❯ tests/hosted-extension-isolation.test.ts:489:5 + 487| }); + 488| let calls = 0; + 489| await expect(runVerifiedNativeExtensionSandbox({ + | ^ + 490| artifact: await artifact(), + 491| manifest: validateFlowExtensionManifest(manifest()), + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[90/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > shields verified Surface files before async settlement +AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + ❯ tests/hosted-extension-isolation.test.ts:532:9 + 530| surfaceRoot, + 531| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-1'… + 532| })).resolves.toEqual({ completionReason: 'success', capabilityCa… + | ^ + 533| } finally { + 534| if (previous === undefined) delete (Array.prototype as { then?: … + +Caused by: Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:525:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[91/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child +AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality + +- Expected ++ Received + +- [Error: private Cloud policy detail] ++ [Error: bubblewrap is unavailable] + + ❯ tests/hosted-extension-isolation.test.ts:560:5 + 558| provider: 'github', eventType: 'pull_request.labeled', deliveryI… + 559| }); + 560| await expect(runVerifiedNativeExtensionSandbox({ + | ^ + 561| artifact: await artifact(source), manifest: validateFlowExtensio… + 562| babysitterTurn: { queue: async () => { throw refusal; } }, + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[92/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs +Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + 501| + 502| function unsupported(message: string): never { + 503| throw new PluginError('plugin_unsupported', message); + | ^ + 504| } + 505| + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:624:13 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[93/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation +AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } + +- Expected ++ Received + +- Object { ++ PluginError { + "code": "plugin_unsupported", +- "message": StringMatching /(?:Failed to allocate memory|Array buffer allocation failed)/u, + } + + ❯ tests/hosted-extension-isolation.test.ts:646:5 + 644| }); + 645| let calls = 0; + 646| await expect(runVerifiedNativeExtensionSandbox({ + | ^ + 647| artifact: installed, + 648| manifest: validateFlowExtensionManifest(manifest()), + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[94/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port +AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } + +- Expected ++ Received + +- Object { +- "code": "plugin_event_unroutable", ++ PluginError { ++ "code": "plugin_unsupported", + } + + ❯ tests/hosted-extension-isolation.test.ts:675:5 + 673| }); + 674| let calls = 0; + 675| await expect(runVerifiedNativeExtensionSandbox({ + | ^ + 676| artifact: await artifact(source), manifest: validateFlowExtensio… + 677| babysitterTurn: { queue: async () => { calls += 1; return { rece… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[95/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic +Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + 501| + 502| function unsupported(message: string): never { + 503| throw new PluginError('plugin_unsupported', message); + | ^ + 504| } + 505| + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:745:22 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[96/177]⎯ + + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior +AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving + ❯ tests/hosted-extension-isolation.test.ts:788:11 + 786| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… + 787| timeoutMs: 3_000, + 788| })).resolves.toEqual({ completionReason: 'success', capability… + | ^ + 789| } finally { + 790| if (previous === undefined) delete (Object.prototype as { toJS… + +Caused by: Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-isolation.test.ts:781:22 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[97/177]⎯ + + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary +Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + 501| + 502| function unsupported(message: string): never { + 503| throw new PluginError('plugin_unsupported', message); + | ^ + 504| } + 505| + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-protocol.test.ts:326:24 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[98/177]⎯ + + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls +AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } + +- Expected ++ Received + +- Object { +- "code": "plugin_event_unroutable", ++ PluginError { ++ "code": "plugin_unsupported", + } + + ❯ tests/hosted-extension-protocol.test.ts:447:5 + 445| ])('rejects an import-time %s frame with zero adapter calls', async … + 446| let calls = 0; + 447| await expect(runVerifiedNativeExtensionSandbox({ + | ^ + 448| artifact: await artifact(hostileImport([frame, { type: 'error', … + 449| manifest: validateFlowExtensionManifest(manifest()), dispatch: d… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[99/177]⎯ + + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > waits for a pending adapter to resolve after a forged child error + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > returns a typed adapter rejection even when the hostile child hangs +Error: hostile child did not invoke the adapter + ❯ Timeout._onTimeout tests/hosted-extension-protocol.test.ts:135:45 + 133| async function waitForInvocation(invoked: Promise): Promise((resolve, reject) => { + 135| const timeout = setTimeout(() => reject(new Error('hostile child d… + | ^ + 136| void invoked.then(() => { clearTimeout(timeout); resolve(); }, rej… + 137| }); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[100/177]⎯ + + FAIL tests/human-live.test.ts > f.human against a real daemon > parks with the question, refuses wrong answers, records one, and resumes to success +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/human-live.test.ts:22:11 + 20| })).target_directory, 'debug', 'relayflowd'); + 21| } catch (cause) { + 22| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 23| } + 24| } + ❯ fixture tests/human-live.test.ts:42:22 + ❯ tests/human-live.test.ts:81:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/human-live.test.ts:16:28 + ❯ fixture tests/human-live.test.ts:42:22 + ❯ tests/human-live.test.ts:81:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 22015, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[101/177]⎯ + + FAIL tests/human-live.test.ts > f.human against a real daemon > a "no" is a value the body branches on: declined, exit 0, no effect +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/human-live.test.ts:22:11 + 20| })).target_directory, 'debug', 'relayflowd'); + 21| } catch (cause) { + 22| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 23| } + 24| } + ❯ fixture tests/human-live.test.ts:42:22 + ❯ tests/human-live.test.ts:144:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/human-live.test.ts:16:28 + ❯ fixture tests/human-live.test.ts:42:22 + ❯ tests/human-live.test.ts:144:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 22026, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[102/177]⎯ + + FAIL tests/human-live.test.ts > f.human against a real daemon > refuses to answer a run the daemon does not know +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/human-live.test.ts:22:11 + 20| })).target_directory, 'debug', 'relayflowd'); + 21| } catch (cause) { + 22| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 23| } + 24| } + ❯ fixture tests/human-live.test.ts:42:22 + ❯ tests/human-live.test.ts:164:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/human-live.test.ts:16:28 + ❯ fixture tests/human-live.test.ts:42:22 + ❯ tests/human-live.test.ts:164:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 22037, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[103/177]⎯ + + FAIL tests/live-event-activities.test.ts > runs surface f.on through the local daemon event path and journals its buffered wake +Error: relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd + ❯ startDaemon tests/live-event-activities.test.ts:121:38 + 119| + 120| async function startDaemon(dataDir: string): Promise { + 121| if (!existsSync(RELAYFLOWD)) throw new Error(`relayflowd binary is m… + | ^ + 122| const daemon = spawn(RELAYFLOWD, ['--data-dir', dataDir, 'serve'], {… + 123| daemons.push(daemon); + ❯ tests/live-event-activities.test.ts:39:9 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[104/177]⎯ + + FAIL tests/live-event-activities.test.ts > survives SIGKILL after stream.appended and delivers the frame once after daemon restart +Error: relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd + ❯ startDaemon tests/live-event-activities.test.ts:121:38 + 119| + 120| async function startDaemon(dataDir: string): Promise { + 121| if (!existsSync(RELAYFLOWD)) throw new Error(`relayflowd binary is m… + | ^ + 122| const daemon = spawn(RELAYFLOWD, ['--data-dir', dataDir, 'serve'], {… + 123| daemons.push(daemon); + ❯ tests/live-event-activities.test.ts:88:29 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[105/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > dispatches through the wrapper and keeps --json stdout report-shaped +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:85:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:85:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20385, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[106/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > runs beyond the initial 30-second lease without a second invocation +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:93:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:93:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20396, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[107/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > renders actual agent completion in text output +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:100:20 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:100:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20407, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[108/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > returns a failed run when the agent process fails +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:105:20 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:105:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20418, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[109/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > prints a remedy that runs the parked authored flow to completion +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:122:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:122:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20429, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[110/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > prints a remedy that runs, for a run started from an input file too long to be one +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:160:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:160:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20440, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[111/177]⎯ + + FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > refuses a workspace it cannot pin before invoking the agent +Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. + ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 + 21| })).target_directory, 'debug', 'relayflowd'); + 22| } catch (cause) { + 23| throw new Error('Live CLI tests require npm run test:prep or an ex… + | ^ + 24| } + 25| } + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:191:15 + +Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 + ❯ fixture tests/local-agent-live.test.ts:42:22 + ❯ tests/local-agent-live.test.ts:191:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20451, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[112/177]⎯ + + FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > keeps both tails on a FAILING gate, the case the operator has nothing else for +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/named-gate-journal.test.ts:51:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[113/177]⎯ + + FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > keeps both tails on a PASSING gate, so a gate that passed for the wrong reason is inspectable +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/named-gate-journal.test.ts:68:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[114/177]⎯ + + FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > journals the diagnostic when the gate never reached the command +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/named-gate-journal.test.ts:85:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[115/177]⎯ + + FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > persists what the gate printed before a timeout killed it +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/named-gate-journal.test.ts:107:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[116/177]⎯ + + FAIL tests/named-gate-journal.test.ts > a gate on an agent step > journals the command's streams and surfaces them in the authored failure +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/named-gate-journal.test.ts:132:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[117/177]⎯ + + FAIL tests/plugin-loader.test.ts > journals plugin effect input and receipt through the daemon +Error: journal client: connect failed: connect ENOENT /tmp/relayflowd-4a13addfaf96.sock + ❯ Socket.onError src/journal-client.ts:105:16 + 103| socket.removeAllListeners(); + 104| this.failAll(err); + 105| reject(new Error(`journal client: connect failed: ${err.messag… + | ^ + 106| }; + 107| socket.once('error', onError); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[118/177]⎯ + + FAIL tests/provider-trigger-executor.test.ts > the kernel executes compiled 'app_mention' subscriptions with provider isolation and durable dedupe + FAIL tests/provider-trigger-executor.test.ts > the kernel executes compiled 'reaction_added' subscriptions with provider isolation and durable dedupe + FAIL tests/provider-trigger-executor.test.ts > the kernel executes compiled 'pull_request' subscriptions with provider isolation and durable dedupe +Error: spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ❯ submit tests/provider-trigger-executor.test.ts:43:89 + 41| steps: [{ id: 'effect', type: 'deterministic', command: `printf ac… + 42| })))); + 43| const submit = (envelope: unknown, key: string, executor = source.na… + | ^ + 44| '--data-dir', dir, 'run', spec, '--event', JSON.stringify({ type: … + 45| ], { encoding: 'utf8', stdio: 'pipe' })) as { matched: boolean; dedu… + ❯ tests/provider-trigger-executor.test.ts:50:12 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[119/177]⎯ + + FAIL tests/retried-step-failure.test.ts > a retried step failing differently through the live kernel > reports both attempts and says the evidence differs +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/retried-step-failure.test.ts:26:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[120/177]⎯ + + FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 10000 ms for 'sleep 5; printf ok' + FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 40000 ms for 'sleep 31; printf ok' + FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 30000 ms for 'sleep 31; printf ok' + FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 100 ms for 'sleep 5' +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/step-lease.test.ts:102:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[121/177]⎯ + + FAIL tests/webhook-live.test.ts > executes and deduplicates 'app_mention' only for its provider and matching payload + FAIL tests/webhook-live.test.ts > executes and deduplicates 'reaction_added' only for its provider and matching payload + FAIL tests/webhook-live.test.ts > executes and deduplicates 'pull_request' only for its provider and matching payload +Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ❯ until tests/webhook-live.test.ts:39:9 + 37| const deadline = Date.now() + 10_000; + 38| while (Date.now() < deadline) { if (await predicate()) return; await… + 39| throw new Error(`webhook integration timed out: ${detail()}`); + | ^ + 40| } + 41| async function daemon(dir: string): Promise { + ❯ daemon tests/webhook-live.test.ts:43:3 + ❯ tests/webhook-live.test.ts:100:3 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[122/177]⎯ + + FAIL tests/webhook-live.test.ts > flows serve-webhook writes JSON before the daemon starts, then journals and archives exactly once +Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ❯ until tests/webhook-live.test.ts:39:9 + 37| const deadline = Date.now() + 10_000; + 38| while (Date.now() < deadline) { if (await predicate()) return; await… + 39| throw new Error(`webhook integration timed out: ${detail()}`); + | ^ + 40| } + 41| async function daemon(dir: string): Promise { + ❯ daemon tests/webhook-live.test.ts:43:3 + ❯ tests/webhook-live.test.ts:121:3 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[123/177]⎯ + + FAIL tests/webhook-live.test.ts > replays a dropped file after SIGKILL before spawn +Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ❯ until tests/webhook-live.test.ts:39:9 + 37| const deadline = Date.now() + 10_000; + 38| while (Date.now() < deadline) { if (await predicate()) return; await… + 39| throw new Error(`webhook integration timed out: ${detail()}`); + | ^ + 40| } + 41| async function daemon(dir: string): Promise { + ❯ daemon tests/webhook-live.test.ts:43:3 + ❯ tests/webhook-live.test.ts:137:17 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[124/177]⎯ + + FAIL tests/webhook-live.test.ts > resumes the same journal after SIGKILL after spawn and before acknowledgement +Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT + ❯ until tests/webhook-live.test.ts:39:9 + 37| const deadline = Date.now() + 10_000; + 38| while (Date.now() < deadline) { if (await predicate()) return; await… + 39| throw new Error(`webhook integration timed out: ${detail()}`); + | ^ + 40| } + 41| async function daemon(dir: string): Promise { + ❯ daemon tests/webhook-live.test.ts:43:3 + ❯ tests/webhook-live.test.ts:150:17 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[125/177]⎯ + + FAIL tests/worker-lease-drift-live.test.ts > worker lease under clock skew between worker and daemon > holds the lease when the worker clock runs 45s ahead of the daemon +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ leasedAgentRun tests/worker-lease-drift-live.test.ts:39:21 + ❯ tests/worker-lease-drift-live.test.ts:73:56 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[126/177]⎯ + + FAIL tests/worker-lease-drift-live.test.ts > worker lease under clock skew between worker and daemon > renews before the daemon deadline when the worker clock runs 75s behind the daemon +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ leasedAgentRun tests/worker-lease-drift-live.test.ts:39:21 + ❯ tests/worker-lease-drift-live.test.ts:84:56 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[127/177]⎯ + + FAIL tests/worker-lease-drift-live.test.ts > attempt accounting after a lost worker > does not report attempt=2/1 when the first attempt died uncharged +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/worker-lease-drift-live.test.ts:103:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[128/177]⎯ + + FAIL tests/worker-lease-lost-live.test.ts > reports journal success after completion rejects with lease_conflict + FAIL tests/worker-lease-lost-live.test.ts > reports journal success after completion rejects with run_terminal +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/worker-lease-lost-live.test.ts:14:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[129/177]⎯ + + FAIL tests/worker-lease-lost-live.test.ts > reports journal success when a renewal rejects after completion landed +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 + 12| const calls = join(root, 'calls.jsonl'); + 13| const flowPath = join(root, 'chain.flow.ts'); + 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… + | ^ + 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/worker-lease-lost-live.test.ts:55:19 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[130/177]⎯ + + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked step CLI and model and journals done + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked named CLI and model and journals done + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked flow CLI and model and journals done + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked project CLI and model and journals done +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-declared-streams-live.test.ts:61:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[131/177]⎯ + + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > still parks without --local-agent +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-declared-streams-live.test.ts:93:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[132/177]⎯ + + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > reports the agent process failure +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-declared-streams-live.test.ts:100:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[133/177]⎯ + + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > resumes the journaled stream declarations after the input YAML changes +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-declared-streams-live.test.ts:106:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[134/177]⎯ + + FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-declared-streams-live.test.ts:125:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[135/177]⎯ + + FAIL tests/yaml-helper-live.test.ts > runs compiled YAML helpers through the built CLI and kernel effect journal +AssertionError: error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +: expected 1 to be +0 // Object.is equality + +- Expected ++ Received + +- 0 ++ 1 + + ❯ tests/yaml-helper-live.test.ts:48:46 + 46| const metadata = spawnSync('sh', [resolve('../../ops/cargo.sh'), '… + 47| { cwd: resolve('../../kernel'), encoding: 'utf8' }); + 48| expect(metadata.status, metadata.stderr).toBe(0); + | ^ + 49| binary = join(JSON.parse(metadata.stdout).target_directory, 'debug… + 50| } + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[136/177]⎯ + + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked step CLI and model and journals done + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked named CLI and model and journals done + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked flow CLI and model and journals done + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked project CLI and model and journals done +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-local-agent-live.test.ts:73:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[137/177]⎯ + + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > still parks without --local-agent +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-local-agent-live.test.ts:95:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[138/177]⎯ + + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > resumes a parked spec run with --local-agent instead of parking identically again +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-local-agent-live.test.ts:112:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[139/177]⎯ + + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > parks a second time with a different message when the attached worker is not eligible +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-local-agent-live.test.ts:137:15 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[140/177]⎯ + + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > reports the agent process failure +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-local-agent-live.test.ts:152:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[141/177]⎯ + + FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin +Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline +error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. +help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + + ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 + 25| + 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… + 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… + | ^ + 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… + 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… + ❯ tests/yaml-local-agent-live.test.ts:158:20 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[142/177]⎯ + +⎯⎯⎯⎯⎯⎯ Unhandled Errors ⎯⎯⎯⎯⎯⎯ + +Vitest caught 3 unhandled errors during the test run. +This might cause false positive tests. Resolve unhandled errors to make sure your tests are not affected. + +⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯ +Error: bubblewrap is unavailable + ❯ unsupported src/hosted-extension-sandbox.ts:503:9 + 501| + 502| function unsupported(message: string): never { + 503| throw new PluginError('plugin_unsupported', message); + | ^ + 504| } + 505| + ❯ executable src/hosted-extension-sandbox.ts:484:18 + ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 + ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 + ❯ tests/hosted-extension-protocol.test.ts:471:17 + ❯ node_modules/@vitest/runner/dist/index.js:533:5 + ❯ runTest node_modules/@vitest/runner/dist/index.js:1056:11 + ❯ runSuite node_modules/@vitest/runner/dist/index.js:1205:15 + ❯ runSuite node_modules/@vitest/runner/dist/index.js:1205:15 + ❯ runFiles node_modules/@vitest/runner/dist/index.js:1262:5 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +This error originated in "tests/hosted-extension-protocol.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running. +The latest test that might've caused the error is "rejects two forged calls after the authoritative first outcome settles". It might mean one of the following: +- The error was thrown, while Vitest was running this test. +- If the error occurred after the test had been completed, this was the last documented test before it was thrown. + +⎯⎯⎯⎯⎯ Uncaught Exception ⎯⎯⎯⎯⎯ +Error: spawn /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd ENOENT + ❯ Process.ChildProcess._handle.onexit node:internal/child_process:285:19 + ❯ onErrorNT node:internal/child_process:483:16 + ❯ processTicksAndRejections node:internal/process/task_queues:90:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'spawn /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd', path: '/home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd', spawnargs: [ '--data-dir', '/tmp/plugin-load-eR6Dgo/data', 'serve' ] } +This error originated in "tests/plugin-loader.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running. +The latest test that might've caused the error is "journals plugin effect input and receipt through the daemon". It might mean one of the following: +- The error was thrown, while Vitest was running this test. +- If the error occurred after the test had been completed, this was the last documented test before it was thrown. + +⎯⎯⎯⎯⎯⎯ Unhandled Error ⎯⎯⎯⎯⎯⎯⎯ +Error: Worker exited unexpectedly + ❯ ChildProcess.onUnexpectedExit node_modules/tinypool/dist/index.js:118:30 + ❯ ChildProcess.emit node:events:520:22 + ❯ ChildProcess._handle.onexit node:internal/child_process:293:12 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ + + Test Files 41 failed | 199 passed | 3 skipped (244) + Tests 172 failed | 3542 passed | 67 skipped (3782) + Errors 3 errors + Start at 06:47:58 + Duration 576.59s (transform 5.35s, setup 1.14s, collect 66.12s, tests 625.57s, environment 31ms, prepare 9.91s) + diff --git a/packages/sdk/src/cli-commands.ts b/packages/sdk/src/cli-commands.ts index 001c51d96..75a3a0fbd 100644 --- a/packages/sdk/src/cli-commands.ts +++ b/packages/sdk/src/cli-commands.ts @@ -156,7 +156,7 @@ export const CLI_VERBS = [ args: [{ name: 'flow', description: 'flow.ts for a hosted listener, or @sha256: for a bundle', required: true }], options: [ { flags: '--to ', description: 'Destination file bucket for a sealed bundle' }, - { flags: '--repo ', description: 'Repository the hosted listener watches' }, + { flags: '--repo ', description: 'Target repository: owner/name or github:owner/name for GitHub; gitlab:group/project (subgroups allowed) or a github.com/gitlab.com HTTP(S) URL' }, { flags: '--on ', description: 'Trigger source, as [:key=value,...]; repeatable' }, { flags: '--approver ', description: 'Handle delivered to every launched run as input.approver' }, { flags: '--agents ', description: 'Agent harnesses to allow, as claude[,codex]' }, diff --git a/packages/sdk/src/cli.ts b/packages/sdk/src/cli.ts index b1cf680b2..7989f596e 100644 --- a/packages/sdk/src/cli.ts +++ b/packages/sdk/src/cli.ts @@ -125,7 +125,7 @@ const USAGE = [ 'flows plugin update [--json] [--yes] [--to ] []', 'flows build [--out ] ', 'flows build --verify ', - 'flows deploy --repo --on [:key=value,...] [--on ...] --approver [--agents claude[,codex]] [--name ] [--draft] [--plugin ] [--no-connect] [--json]', + 'flows deploy --repo --on [:key=value,...] [--on ...] --approver [--agents claude[,codex]] [--name ] [--draft] [--plugin ] [--no-connect] [--json]', 'flows deploy --flow [--plugin ] [--no-connect] [--json]', 'flows deployments [--json]', 'flows versions [--json] ', diff --git a/packages/sdk/src/cli/cloud-deploy.ts b/packages/sdk/src/cli/cloud-deploy.ts index 60971ee52..59adb509e 100644 --- a/packages/sdk/src/cli/cloud-deploy.ts +++ b/packages/sdk/src/cli/cloud-deploy.ts @@ -1,7 +1,7 @@ import { CloudFlowError } from '../cloud-http.js'; import { deployToCloud, listCloudDeployments, parseAgentHarnesses, parseRepository, parseTriggerSource, undeployFromCloud, - type FlowTriggerSource, + type DeployRepository, type FlowTriggerSource, } from '../cloud-deploy.js'; import { describeFlowRequirements } from '../flow-requirements.js'; import { describeVersionChange } from '../cloud-versions-wire.js'; @@ -27,7 +27,7 @@ export interface CloudDeployArgs { } /** - * `flows deploy --repo --on [:k=v,…] [--on …] + * `flows deploy --repo --on [:k=v,…] [--on …] * --approver [--name ] [--agents ] [--draft] [--no-connect] [--json]` * `flows deploy --flow [--plugin ] [--no-connect] [--json]` * @@ -102,6 +102,10 @@ export function parseCloudDeployArgs(args: readonly string[]): CloudDeployArgs | return { command: 'cloud-deploy', value, flow, repo, on, approver, name, agents, draft, noConnect, json, plugins }; } +function describeRepository(repo: DeployRepository): string { + return `${repo.host === 'gitlab' ? 'gitlab:' : ''}${repo.owner}/${repo.name}`; +} + function describeSource(source: FlowTriggerSource): string { const settings = Object.entries(source.settings).map(([k, v]) => `${k}=${v}`).join(' '); return settings ? `${source.provider} ${settings}` : source.provider; @@ -140,7 +144,7 @@ export async function runCloudDeployCli(args: CloudDeployArgs, io: CliIo): Promi io.stdout(`${deployment.status === 'draft' ? 'SAVED' : 'DEPLOYED'} ${deployment.agentId} ${deployment.status}` + (deployment.version === undefined ? '' : ` · ${describeVersionChange(deployment.version)}`)); io.stdout(` flow: ${deployment.name} (${args.value}, sha256 ${deployment.sourceSha256.slice(0, 12)})`); - io.stdout(` repository: ${deployment.repository.owner}/${deployment.repository.name}`); + io.stdout(` repository: ${describeRepository(deployment.repository)}`); for (const source of deployment.sources) io.stdout(` on: ${describeSource(source)}`); const requires = describeFlowRequirements(deployment.requirements); if (requires) io.stdout(` requires: ${requires}`); @@ -175,7 +179,7 @@ export async function runCloudDeploymentsCli({ json }: { json: boolean }, io: Cl return 0; } for (const d of deployments) { - const repo = d.repository ? ` ${d.repository.owner}/${d.repository.name}` : ''; + const repo = d.repository ? ` ${describeRepository(d.repository)}` : ''; io.stdout(`${d.agentId} ${d.status} ${JSON.stringify(d.name)}${repo}`); for (const source of d.sources) io.stdout(` on: ${describeSource(source)}`); } diff --git a/packages/sdk/src/cloud-deploy.ts b/packages/sdk/src/cloud-deploy.ts index 31bfb38f7..54b27b33c 100644 --- a/packages/sdk/src/cloud-deploy.ts +++ b/packages/sdk/src/cloud-deploy.ts @@ -45,6 +45,16 @@ const MAX_SOURCE_BYTES = 256_000; const MAX_SETTING_LENGTH = 500; const REPO_OWNER = /^[A-Za-z0-9-]{1,39}$/u; const REPO_NAME = /^[A-Za-z0-9_.-]{1,100}$/u; +// Client-side shape check: unlike REPO_NAME, GitLab segments cannot start with . or -. +const GITLAB_SEGMENT = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,99}$/u; +// Client-side bound: one root group plus 20 subgroup levels; Cloud remains authoritative. +const GITLAB_NAMESPACE_DEPTH = 21; + +export interface DeployRepository { + owner: string; + name: string; + host?: 'gitlab'; +} export interface FlowTriggerSource { provider: FlowTriggerProvider; @@ -53,7 +63,7 @@ export interface FlowTriggerSource { export interface DeployToCloudInput { path: string; - repository: { owner: string; name: string }; + repository: DeployRepository; sources: FlowTriggerSource[]; /** The `f.human` approver handle every launched run receives as `input.approver`. */ approver: string; @@ -98,7 +108,7 @@ export interface CloudDeployment { agentId: string; name: string; status: string; - repository: { owner: string; name: string }; + repository: DeployRepository; sources: FlowTriggerSource[]; sourceSha256: string; /** What the source declared it needs; the harnesses became `inputs.agents` unless `agents` was given. */ @@ -109,12 +119,23 @@ export interface CloudDeployment { version?: CloudFlowVersionChange; } -export function parseRepository(value: string): { owner: string; name: string } { - const [owner, name, extra] = value.replace(/^https?:\/\/github\.com\//iu, '').replace(/\.git$/iu, '').split('/'); - if (!owner || !name || extra !== undefined || !REPO_OWNER.test(owner) || !REPO_NAME.test(name)) { - throw new CloudFlowError('invalid_input', `Expected --repo /, got "${value}".`); +export function parseRepository(value: string): DeployRepository { + const prefix = /^(github|gitlab):/iu.exec(value); + const path = prefix ? value.slice(prefix[0].length) : value; + const url = /^https?:\/\/(github|gitlab)\.com\//iu.exec(path); + const host = (prefix?.[1] ?? url?.[1] ?? 'github').toLowerCase(); + const parts = (url ? path.slice(url[0].length) : path).replace(/\.git$/iu, '').split('/'); + const name = parts.at(-1)!; + const owner = parts.slice(0, -1).join('/'); + const valid = host === 'gitlab' + ? parts.length >= 2 && parts.length <= GITLAB_NAMESPACE_DEPTH + 1 && parts.every(p => GITLAB_SEGMENT.test(p)) + : parts.length === 2 && REPO_OWNER.test(owner) && REPO_NAME.test(name); + if (!valid || (url && url[1]!.toLowerCase() !== host)) { + throw new CloudFlowError('invalid_input', + `Expected --repo (GitHub) or gitlab: (up to ${GITLAB_NAMESPACE_DEPTH} namespace segments), ` + + `or a github.com/gitlab.com HTTP(S) project URL, got "${value}".`); } - return { owner, name }; + return { owner, name, ...(host === 'gitlab' ? { host: 'gitlab' as const } : {}) }; } /** `github`, `github:labels=agent,contains=urgent`, `slack:channel=#eng`. */ @@ -233,11 +254,21 @@ export async function deployToCloud( if (!approver) throw new CloudFlowError('invalid_input', '--approver must name who approves f.human questions.'); const name = (input.name ?? definition.name).trim(); if (!name || name.length > 100) throw new CloudFlowError('invalid_input', 'Deployment name must be 1-100 characters.'); - // A GitHub source scoped to nothing would wake on every repository the - // installation covers; default it to the deployment's own repository. - const sources = input.sources.map(s => s.provider === 'github' && s.settings['repository'] === undefined - ? { ...s, settings: { ...s.settings, repository: `${input.repository.owner}/${input.repository.name}` } } - : s); + // Scope same-host sources to the target rather than waking on every project. + const target = `${input.repository.owner}/${input.repository.name}`; + const sources = input.sources.map(s => { + if (s.provider === 'github' && s.settings['repository'] === undefined) { + if (input.repository.host === 'gitlab') { + throw new CloudFlowError('invalid_input', + 'A GitLab target needs an explicit --on github:repository=owner/name for a GitHub source.'); + } + return { ...s, settings: { ...s.settings, repository: target } }; + } + if (s.provider === 'gitlab' && s.settings['project'] === undefined && input.repository.host === 'gitlab') { + return { ...s, settings: { ...s.settings, project: target } }; + } + return s; + }); options.signal?.throwIfAborted(); const whoami = await cloudRequest('/api/v1/auth/whoami', options); @@ -245,8 +276,7 @@ export async function deployToCloud( if (workspace === undefined || typeof workspace.id !== 'string' || !workspace.id) { throw new CloudFlowError('invalid_response', 'Cloud did not report a current workspace for this credential.'); } - // Every launched run lands in the deployment's repository, so GitHub is - // required even when no GitHub source wakes it. + // Every launched run needs the target's host, even when another provider wakes it. const requirements = mergeFlowExtensionRequirements( flowRequirements(definition, { sources, repository: input.repository, ...(projectCli === undefined ? {} : { projectCli }), @@ -307,7 +337,7 @@ export interface CloudDeploymentSummary { agentId: string; name: string; status: string; - repository?: { owner: string; name: string }; + repository?: DeployRepository; sources: FlowTriggerSource[]; createdAt?: string; updatedAt?: string; @@ -323,7 +353,8 @@ export async function listCloudDeployments(options: CloudConnectionOptions = {}) throw new CloudFlowError('invalid_response', 'Cloud returned a malformed deployment row.'); } const repository = isCloudRecord(row.repository) && typeof row.repository.owner === 'string' - && typeof row.repository.name === 'string' ? { owner: row.repository.owner, name: row.repository.name } : undefined; + && typeof row.repository.name === 'string' ? { owner: row.repository.owner, name: row.repository.name, + ...(row.repository.host === 'gitlab' ? { host: 'gitlab' as const } : {}) } : undefined; const sources = Array.isArray(row.sources) ? row.sources.flatMap((s): FlowTriggerSource[] => isCloudRecord(s) && typeof s.provider === 'string' && (FLOW_TRIGGER_PROVIDERS as readonly string[]).includes(s.provider) ? [{ provider: s.provider as FlowTriggerProvider, diff --git a/packages/sdk/src/cloud-versions.ts b/packages/sdk/src/cloud-versions.ts index 4af98098b..39ebe81ae 100644 --- a/packages/sdk/src/cloud-versions.ts +++ b/packages/sdk/src/cloud-versions.ts @@ -4,7 +4,7 @@ import { CloudFlowError, cloudFetch, cloudRequest, isCloudRecord, type CloudConnectionOptions, } from './cloud-http.js'; import { - FLOW_AGENT_HARNESSES, listCloudDeployments, loadDeploySource, type FlowTriggerSource, + FLOW_AGENT_HARNESSES, listCloudDeployments, loadDeploySource, type DeployRepository, type FlowTriggerSource, } from './cloud-deploy.js'; import { parseVersion, parseVersionChange, type CloudFlowVersion, type CloudFlowVersionChange, @@ -25,7 +25,7 @@ export interface CloudListener { agentId: string; name: string; status: string; - repository: { owner: string; name: string; host?: 'gitlab' }; + repository: DeployRepository; sources: FlowTriggerSource[]; activeVersion: CloudFlowVersion | null; versions: CloudFlowVersion[]; diff --git a/packages/sdk/src/flow-requirements.ts b/packages/sdk/src/flow-requirements.ts index 1f381a62e..59f33cffa 100644 --- a/packages/sdk/src/flow-requirements.ts +++ b/packages/sdk/src/flow-requirements.ts @@ -51,8 +51,8 @@ export interface FlowRequirements { export interface FlowRequirementsContext { /** Trigger sources the deployment listens on (`--on`, or the wizard's chosen sources). */ sources?: readonly { provider: string }[]; - /** Set when the deployment targets a repository: every launched run needs GitHub. */ - repository?: boolean | { owner: string; name: string }; + /** Set when the deployment targets a repository: every launched run needs its host (true means GitHub). */ + repository?: boolean | { owner: string; name: string; host?: 'gitlab' }; /** The nearest `flows.json` `cli`, when one applies. */ projectCli?: string; } @@ -180,7 +180,10 @@ export function flowRequirements( for (const source of context.sources ?? []) { declare({ provider: source.provider, from: 'source', detail: `--on ${source.provider}` }); } - if (context.repository) declare({ provider: 'github', from: 'source', detail: 'deploy target' }); + if (context.repository) { + const provider = typeof context.repository === 'object' && context.repository.host === 'gitlab' ? 'gitlab' : 'github'; + declare({ provider, from: 'source', detail: 'deploy target' }); + } const uses = [...harnessUses.values()]; return { diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 4a214d610..50909fa8b 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -107,7 +107,7 @@ export { export { prepareCloudSubmission, cloudSubmissionBody, type CloudSubmission } from './cloud-run.js'; export { deployToCloud, listCloudDeployments, undeployFromCloud, parseRepository, parseTriggerSource, FLOW_TRIGGER_PROVIDERS, - type DeployToCloudInput, type CloudDeployment, type CloudDeploymentSummary, type FlowTriggerSource, type FlowTriggerProvider, + type DeployRepository, type DeployToCloudInput, type CloudDeployment, type CloudDeploymentSummary, type FlowTriggerSource, type FlowTriggerProvider, } from './cloud-deploy.js'; export { ensureIntegrationsConnected, integrationConnected, providerLabel, diff --git a/packages/sdk/tests/cloud-deploy.test.ts b/packages/sdk/tests/cloud-deploy.test.ts index 74e0ccbcb..ad973551e 100644 --- a/packages/sdk/tests/cloud-deploy.test.ts +++ b/packages/sdk/tests/cloud-deploy.test.ts @@ -82,12 +82,35 @@ describe('trigger source and repository parsing', () => { expect(() => parseTriggerSource(value)).toThrow(expect.objectContaining({ code: 'invalid_input' })); }); - it('accepts owner/name and GitHub URLs, refusing anything else', () => { - expect(parseRepository('AgentWorkforce/flows')).toEqual({ owner: 'AgentWorkforce', name: 'flows' }); - expect(parseRepository('https://github.com/AgentWorkforce/flows.git')).toEqual({ owner: 'AgentWorkforce', name: 'flows' }); - for (const bad of ['flows', 'a/b/c', 'bad owner/x', '']) { - expect(() => parseRepository(bad)).toThrow(expect.objectContaining({ code: 'invalid_input' })); - } + it.each([ + ['AgentWorkforce/flows', { owner: 'AgentWorkforce', name: 'flows' }], + ['https://github.com/AgentWorkforce/flows.git', { owner: 'AgentWorkforce', name: 'flows' }], + ['github:owner/name', { owner: 'owner', name: 'name' }], + ['http://github.com/o/r', { owner: 'o', name: 'r' }], + ['gitlab/myrepo', { owner: 'gitlab', name: 'myrepo' }], + ['github/docs', { owner: 'github', name: 'docs' }], + ['gitlab:group/project', { owner: 'group', name: 'project', host: 'gitlab' }], + ['gitlab:group/sub/project', { owner: 'group/sub', name: 'project', host: 'gitlab' }], + ['https://gitlab.com/group/sub/project.git', { owner: 'group/sub', name: 'project', host: 'gitlab' }], + ['http://GITLAB.com/g/p', { owner: 'g', name: 'p', host: 'gitlab' }], + ['GITLAB:g/p', { owner: 'g', name: 'p', host: 'gitlab' }], + ['gitlab:https://gitlab.com/g/p', { owner: 'g', name: 'p', host: 'gitlab' }], + [`gitlab:${Array(21).fill('g').join('/')}/p`, { owner: Array(21).fill('g').join('/'), name: 'p', host: 'gitlab' }], + ])('parses repository %s', (value, expected) => { + expect(parseRepository(value)).toStrictEqual(expected); + }); + + it.each(['flows', 'a/b/c', 'bad owner/x', '', 'gitlab:project', 'gitlab:', + 'gitlab:a//b', 'gitlab:bad segment/p', 'gitlab:.leading/p', 'gitlab:-leading/p', + `gitlab:${Array(22).fill('g').join('/')}/p`, `gitlab:${'g'.repeat(101)}/p`, + 'https://gitlab.com/group', 'gitlab:https://github.com/o/r', 'github:https://gitlab.com/g/p', + 'https://gitlab.example.com/g/p', 'git@gitlab.com:g/p.git', 'gitlab:g/p/', + ])('refuses repository %s', (value) => { + expect(() => parseRepository(value)).toThrow(expect.objectContaining({ code: 'invalid_input' })); + }); + + it('omits the host key for GitHub', () => { + expect('host' in parseRepository('owner/name')).toBe(false); }); }); @@ -124,6 +147,7 @@ describe('deployToCloud', () => { ], requirements: { integrations: ['github', 'slack'], harnesses: [], mcp: [] }, }); + expect(body.repository).toStrictEqual({ owner: 'AgentWorkforce', name: 'flows' }); expect(body.handoffId).toMatch(/^flows-cli-[a-f0-9]{16}$/u); expect(body.source).toContain("flow<{ issue: { title: string }; approver: string }>('issue-triage'"); expect(body.extensions).toBeUndefined(); @@ -132,6 +156,50 @@ describe('deployToCloud', () => { expect(deployment.sourceSha256).toMatch(/^[a-f0-9]{64}$/u); }); + it.each([ + ['gitlab:labels=x', ['gitlab (--on gitlab)']], + ['linear:team=ENG', ['linear (--on linear)', 'gitlab (deploy target)']], + ])('requires the GitLab target integration with %s', async (trigger, details) => { + const path = await authoredFlow(); + const calls = cloud({ + '/api/v1/auth/whoami': () => WHOAMI, + '/api/v1/flows/deploy': () => ({ status: 201, body: { agentId: 'a', status: 'listening' } }), + }); + const repository = parseRepository('gitlab:group/sub/web'); + const deployment = await deployToCloud({ path, repository, sources: [parseTriggerSource(trigger)], approver: 'k' }); + const body = calls.at(-1)!.body as Record; + expect(body.repository).toStrictEqual({ owner: 'group/sub', name: 'web', host: 'gitlab' }); + const providers = trigger.startsWith('gitlab') ? ['gitlab'] : ['linear', 'gitlab']; + expect(body.requirements).toStrictEqual({ integrations: providers, harnesses: [], mcp: [] }); + expect(calls.map(c => c.path)).toEqual([ + '/api/v1/auth/whoami', ...providers.map(p => `/api/v1/workspaces/ws-1/integrations/${p}/status`), '/api/v1/flows/deploy', + ]); + expect(deployment.requirements.integrations.map(i => `${i.provider} (${i.detail})`)).toEqual(details); + if (trigger.startsWith('gitlab')) { + expect(body.sources).toStrictEqual([{ provider: 'gitlab', settings: { labels: 'x', project: 'group/sub/web' } }]); + } + }); + + it('refuses an unscoped GitHub source for a GitLab target before HTTP', async () => { + const path = await authoredFlow(); + const calls = cloud({}); + await expect(deployToCloud({ path, repository: parseRepository('gitlab:g/p'), sources: [parseTriggerSource('github')], approver: 'k' })) + .rejects.toMatchObject({ code: 'invalid_input', message: expect.stringContaining('--on github:repository=owner/name') }); + expect(calls).toEqual([]); + }); + + it.each([ + ['gitlab:g/p', 'github:repository=other/repo', { repository: 'other/repo' }], + ['gitlab:g/p', 'gitlab:project=other/project', { project: 'other/project' }], + ['o/r', 'gitlab', {}], + ])('preserves explicit or cross-host source scope for %s %s', async (repo, trigger, settings) => { + const path = await authoredFlow(); + cloud({ '/api/v1/auth/whoami': () => WHOAMI, + '/api/v1/flows/deploy': () => ({ status: 201, body: { agentId: 'a', status: 'listening' } }) }); + const result = await deployToCloud({ path, repository: parseRepository(repo), sources: [parseTriggerSource(trigger)], approver: 'k' }); + expect(result.sources[0]!.settings).toStrictEqual(settings); + }); + it('refuses a declared harness Cloud cannot run instead of substituting Claude, unless --agents says so', async () => { const dir = await tempDir('cloud-deploy-gemini-'); await symlink(join(process.cwd(), 'node_modules'), join(dir, 'node_modules'), 'dir'); @@ -212,6 +280,29 @@ describe('flows deploy / flows deployments', () => { expect(out).toContainEqual(' on: github labels=agent repository=AgentWorkforce/flows'); }); + it.each([false, true])('deploys and lists GitLab repositories (json=%s)', async (json) => { + const path = await authoredFlow(); + const repository = { owner: 'group/sub', name: 'web', host: 'gitlab' }; + cloud({ + '/api/v1/auth/whoami': () => WHOAMI, + '/api/v1/flows/deploy': () => ({ status: 201, body: { agentId: 'a', status: 'listening' } }), + '/api/v1/agents/flow-deployments': () => ({ deployments: [{ agentId: 'a', name: 'Garden', status: 'listening', repository, sources: [] }] }), + }); + const out: string[] = []; + const io = { stdout: (line: string) => out.push(line), stderr: (line: string) => out.push(`ERR ${line}`) }; + const flags = json ? ['--json'] : []; + expect(await runCli(['deploy', path, '--repo', 'gitlab:group/sub/web', '--on', 'gitlab:labels=x', '--approver', 'k', ...flags], io), out.join('\n')).toBe(0); + if (json) expect(JSON.parse(out[0]!).repository).toStrictEqual(repository); + else { + expect(out).toContain(' repository: gitlab:group/sub/web'); + expect(out).toContain(' requires: gitlab (--on gitlab)'); + } + out.length = 0; + expect(await runCli(['deployments', ...flags], io)).toBe(0); + if (json) expect(JSON.parse(out[0]!).deployments[0].repository).toStrictEqual(repository); + else expect(out).toEqual(['a listening "Garden" gitlab:group/sub/web']); + }); + it('passes --agents and --draft through, and names a structured refusal', async () => { const path = await authoredFlow('drafted'); const calls = cloud({ @@ -401,6 +492,26 @@ describe('flow versions (cloud#4115)', () => { expect(calls.some(call => call.path === '/api/v1/flows/deploy')).toBe(false); }); + it('updates a GitLab listener without adding a target integration requirement', async () => { + const path = await authoredFlow(); + const calls = cloud({ + [`/api/v1/flows/listeners/${LISTENER}`]: () => ({ ...LISTENER_DETAIL, listener: { + ...LISTENER_DETAIL.listener, repository: { owner: 'group/sub', name: 'web', host: 'gitlab' }, + sources: [{ provider: 'linear', settings: { team: 'ENG' } }], + } }), + '/api/v1/auth/whoami': () => WHOAMI, + [`/api/v1/flows/listeners/${LISTENER}/versions`]: () => ({ listenerId: LISTENER, status: 'listening', + version: { versionId: 'v4', version: 4, previousVersion: 3, change: 'created' } }), + }); + const { out, io: cliIo } = io(); + expect(await runCli(['deploy', path, '--flow', LISTENER], cliIo), out.join('\n')).toBe(0); + const post = calls.find(c => c.method === 'POST')!; + expect(Object.keys(post.body as object).sort()).toEqual(['requirements', 'source', 'workspaceId']); + expect(post.body).toMatchObject({ requirements: { integrations: ['linear'] } }); + expect(calls.filter(c => c.path.includes('/integrations/')).map(c => c.path)) + .toEqual(['/api/v1/workspaces/ws-1/integrations/linear/status']); + }); + it('takes a listener id directly and says when the active version went down', async () => { const path = await authoredFlow('garden'); const calls = cloud({ diff --git a/packages/sdk/tests/relay-cli-surface.test.ts b/packages/sdk/tests/relay-cli-surface.test.ts index 95f12139b..cbb9b27d5 100644 --- a/packages/sdk/tests/relay-cli-surface.test.ts +++ b/packages/sdk/tests/relay-cli-surface.test.ts @@ -93,6 +93,7 @@ const INVOCATIONS: readonly { verb: string; argv: readonly string[]; variant: Pa '--plugin', 'github:o/r@main#path', '--no-connect', '--json'], variant: 'cloud-deploy', }, + { verb: 'deploy', argv: ['deploy', 'review.flow.ts', '--repo', 'gitlab:group/sub/project', '--on', 'gitlab', '--approver', 'someone'], variant: 'cloud-deploy' }, // The update form: the source becomes the next version of an existing flow. { verb: 'deploy', argv: ['deploy', 'review.flow.ts', '--flow', 'review-listener'], variant: 'cloud-deploy' }, { @@ -281,6 +282,15 @@ describe('relay-cli surface: drift between `commands` and `run`', () => { const surface = createRelayCliSurface(); const declaredTopLevel = surface.commands.map((command) => command.name); + it('documents both repository hosts and the explicit prefixes in deploy help', () => { + const repo = CLI_VERBS.find(verb => verb.name === 'deploy')!.options! + .find(option => option.flags.startsWith('--repo '))!; + expect(repo.flags).toBe('--repo '); + expect(repo.description).toContain('github:owner/name'); + expect(repo.description).toContain('gitlab:group/project'); + expect(repo.description).toContain('github.com/gitlab.com HTTP(S) URL'); + }); + it('declares exactly the verbs the parser dispatches', () => { // Both sides read CLI_VERBS, so this pins the projection rather than a // second list: `commands` must lose nothing on its way to the host. From 1345c39875172c3a9af88d3ad7a7a6eff10034f1 Mon Sep 17 00:00:00 2001 From: Relayflow Date: Sun, 4 Oct 2026 07:41:40 +0000 Subject: [PATCH 2/3] docs(cloud-deploy): name GitLab in the ingress comment; recapture evidence The module comment still listed only the GitHub App installation and the Slack/Linear/Jira/Shortcut connections as possible ingresses, which is now wrong: a GitLab connection is one too. Replace evidence/gitlab-deploy/ with captures that reproduce. The committed full-suite.txt was a transcript from before check.sh pinned bun to 1.4.0 and ended "41 failed | 172 failed" with no README, so a reviewer opening the evidence for a passing change saw 172 failures. It is now the SDK suite section of the current run, alongside: - typecheck.txt tsc source + tests, exit=0 - targeted.txt the three touched files, 201/201 - mutation-host-propagation.txt revert the `host` spread -> 12 failures, restore -> 100 pass; sha256 recorded either side of the restore - environment.txt the probes behind all 31 suite failures - README.md what each file is, and what is NOT covered (no live Cloud deploy) The 31 remaining full-suite failures are environmental and unrelated: 24 need a usable bubblewrap (apparmor_restrict_unprivileged_userns=1, and the sysctl CI relaxes is refused by the sysbox FUSE /proc/sys), 7 need a checkout with no CommonJS ancestor package.json. No test was skipped, weakened or edited. Co-Authored-By: Claude Opus 5 --- evidence/gitlab-deploy/README.md | 54 + evidence/gitlab-deploy/environment.txt | 19 + evidence/gitlab-deploy/full-suite.txt | 4835 ++++------------- .../mutation-host-propagation.txt | 46 + evidence/gitlab-deploy/targeted.txt | 15 + evidence/gitlab-deploy/typecheck.txt | 11 + packages/sdk/src/cloud-deploy.ts | 9 +- 7 files changed, 1079 insertions(+), 3910 deletions(-) create mode 100644 evidence/gitlab-deploy/README.md create mode 100644 evidence/gitlab-deploy/environment.txt create mode 100644 evidence/gitlab-deploy/mutation-host-propagation.txt create mode 100644 evidence/gitlab-deploy/targeted.txt create mode 100644 evidence/gitlab-deploy/typecheck.txt diff --git a/evidence/gitlab-deploy/README.md b/evidence/gitlab-deploy/README.md new file mode 100644 index 000000000..432a37d04 --- /dev/null +++ b/evidence/gitlab-deploy/README.md @@ -0,0 +1,54 @@ +# `flows deploy --repo` targeting a GitLab project (cloud#3801) + +`flows deploy --repo --on gitlab:…` was refused with +`flow_repository_unapproved`: the CLI sent `repository` with no `host`, so Cloud +read every target as GitHub. `--repo` now names a host explicitly and sends +`{ owner, name, host: 'gitlab' }` for a GitLab project; bare `owner/name` still +means GitHub. + +## What is captured here + +| File | Command | Result | +| --- | --- | --- | +| `typecheck.txt` | `npm run typecheck` + `npm run typecheck:tests` | clean, `exit=0` | +| `targeted.txt` | `vitest run tests/cloud-deploy.test.ts tests/relay-cli-surface.test.ts tests/flow-requirements.test.ts` | `201 passed (201)` | +| `mutation-host-propagation.txt` | revert the `host` spread, run, restore, re-run | `12 failed` → restore → `100 passed` | +| `full-suite.txt` | the `SDK suite` section of `.relayflow/check.sh` | `31 failed \| 3747 passed \| 4 skipped` | +| `environment.txt` | the probes behind every one of those 31 failures | both causes reproduce | + +`mutation-host-propagation.txt` is mutation verification in the strict sense: +it reverts exactly the `host: 'gitlab'` spread in `parseRepository`, captures +the 12 failures, restores the line, and re-runs to capture the 100 passes. The +file records `sha256sum` of the source before the mutation and after the +restore; the two digests match, so the restore was byte-for-byte. + +## The 31 full-suite failures are environmental, not this change + +None of them is in a file this change touches, and both causes are machine +properties reproduced in `environment.txt`: + +- **24 failures** (`hosted-extension-isolation`, `hosted-extension-protocol`, + `software-garden-babysitter-composition`, `babysitter-native-extension`) need + a usable bubblewrap. `/usr/bin/bwrap` is installed but + `kernel.apparmor_restrict_unprivileged_userns=1`, and the `sysctl -w` that CI + performs is refused here even under passwordless root because `/proc/sys` is a + sysbox FUSE mount. Those tests gate on `existsSync('/usr/bin/bwrap')`, so a + present-but-unusable bwrap fails where it would otherwise skip. Widening that + guard would weaken the isolation tests that are the point of those files, so + it was not done. +- **7 failures** in `live-kernel.test.ts` need a checkout with no CommonJS + ancestor `package.json`. The `testdata/preflight/` fixtures are deliberately + extensionless ES modules; this checkout sits under `/home/daytona`, whose + `package.json` declares `"type": "commonjs"`, which disables module-syntax + detection and makes the fixture exit 0 having run nothing. CI checks out at + `/home/runner/work//` with no such ancestor. + +Both are recorded in `.relayflow/repair-notes.md` with the shadow-`package.json` +experiment that isolates the second cause. + +## Scope this evidence does not cover + +No run was made against live Cloud: that needs a workspace credential with a +GitLab connection, which this machine does not have. The request body is pinned +by assertion on the captured `POST /api/v1/flows/deploy` body in +`tests/cloud-deploy.test.ts`, not by a live deploy. diff --git a/evidence/gitlab-deploy/environment.txt b/evidence/gitlab-deploy/environment.txt new file mode 100644 index 000000000..036bfaa1f --- /dev/null +++ b/evidence/gitlab-deploy/environment.txt @@ -0,0 +1,19 @@ +$ /usr/bin/bwrap --ro-bind / / --unshare-net --dev /dev /bin/true +bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted +exit=1 + +$ cat /proc/sys/kernel/apparmor_restrict_unprivileged_userns +1 + +$ sudo -n sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 +sysctl: permission denied on key "kernel.apparmor_restrict_unprivileged_userns" + +$ mount | grep " /proc/sys " +sysboxfs on /proc/sys type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other) + +--- the live-kernel cause: an ancestor package.json pins CommonJS --- +$ sed -n /\"type\"/p /home/daytona/package.json + "type": "commonjs", + +$ printf "" | node testdata/preflight/analyze-story-stub-cli --relayflows-adapter-v1 +exit=0 (ES-module fixture silently ran nothing as CommonJS) diff --git a/evidence/gitlab-deploy/full-suite.txt b/evidence/gitlab-deploy/full-suite.txt index 82dd20e6a..eecb0dd33 100644 --- a/evidence/gitlab-deploy/full-suite.txt +++ b/evidence/gitlab-deploy/full-suite.txt @@ -1,316 +1,305 @@ +$ bash .relayflow/check.sh # SDK suite section (cloud-runtime-artifact.yml) +# captured verbatim from the check.sh run on this machine + +=== SDK suite === + +> @relayflows/sdk@2.0.39 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json + + +> @relayflows/sdk@2.0.39 build +> tsc && node scripts/make-cli-executable.mjs + + +> @relayflows/sdk@2.0.39 typecheck:tests +> tsc -p tsconfig.tests.json + RUN v2.1.9 /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk - ❯ tests/live-kernel.test.ts (32 tests | 32 skipped) 5ms - ✓ tests/preflight.test.ts (70 tests) 144ms +stdout | tests/live-kernel.test.ts +LIVE_KERNEL relayflowd=/home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/release/relayflowd +LIVE_KERNEL flows=/home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/dist/cli.js + + ✓ tests/preflight.test.ts (70 tests) 129ms + ✓ tests/cli.test.ts (71 tests) 3041ms + ✓ flows check CLI > binds a checked relative wrapper to the flow directory for worker execution 556ms + ✓ flows check CLI > resolves a bare PATH-resolved claude with no declared model, in an isolated PATH 457ms + ✓ flows run/resume CLI over the journal protocol > follows a worker wait past a locally expired lease until the daemon settles it 1045ms ✓ tests/cloud-read.test.ts (46 tests) 50ms - ✓ tests/cli.test.ts (71 tests) 3110ms - ✓ flows check CLI > binds a checked relative wrapper to the flow directory for worker execution 545ms - ✓ flows check CLI > resolves a bare PATH-resolved claude with no declared model, in an isolated PATH 492ms - ✓ flows run/resume CLI over the journal protocol > follows a worker wait past a locally expired lease until the daemon settles it 1043ms - ✓ tests/cloud-live.test.ts (55 tests) 2056ms - ✓ argv and wiring > routes both live invocations through runCli, and refuses a missing run id 2005ms - ❯ tests/hosted-extension-isolation.test.ts (22 tests | 14 failed) 292ms - × hosted extension capability isolation > executes the exact capability-only handler for a queued receipt 9ms - → bubblewrap is unavailable - × hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt 3ms - → bubblewrap is unavailable - × hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization 4ms - → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving - × hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic 3ms - → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving - × hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists 204ms +stderr | tests/live-kernel.test.ts > built flows CLI against live relayflowd > hn-monitor analyze-story reaches done through the real Claude analyzer CLI +LIVE_ANALYZER_UNAVAILABLE: "/home/daytona/.relayflow-v2-supervisor/durable/repository/testdata/preflight/analyze-story-claude-cli" does not identify as relayflows-agent-cli-v1 — SKIPPING. This skip is diagnostics, not gate-2 acceptance evidence. + +stdout | tests/live-kernel.test.ts > surface resume after a real daemon kill > resumes a three-step run with each successful completion exactly once +LIVE_KERNEL kill -9 pid=75031 run=01M42WYBN9E1J5A7NZ480EDPK3 while step=two state=Running + + ❯ tests/live-kernel.test.ts (32 tests | 7 failed | 1 skipped) 55842ms + ✓ built flows CLI against live relayflowd > twenty-six-step reuses 25 durable completions after editing the failed final step 1928ms + ✓ built flows CLI against live relayflowd > runs rung (a), parks rung (b), and keeps JSON report-shaped 2843ms + ✓ built flows CLI against live relayflowd > allows a deterministic run to exceed the bounded request timeout 32483ms + ✓ built flows CLI against live relayflowd > follows a live worker dispatch through flows run 572ms + ✓ built flows CLI against live relayflowd > runs an agent CLI end to end through the SDK worker 546ms + ✓ built flows CLI against live relayflowd > f.agent lowers to a real agent step and dispatches through a live worker 699ms + ✓ built flows CLI against live relayflowd > can always get a parked run to a late-attaching worker 5552ms + ✓ built flows CLI against live relayflowd > reports a real manual-recovery NeedsHuman state as parked 468ms + × built flows CLI against live relayflowd > runs hn-monitor analyze-story end-to-end via a stub agent CLI (gate 2 clause 2 demo) 716ms + → expected { …(12) } to match object { output: { …(3) }, …(1) } +(22 matching properties omitted from actual) + × built flows CLI against live relayflowd > hn-monitor analyze-story FAILS verification when the CLI omits required schema fields 515ms + → expected { …(12) } to match object { …(3) } +(21 matching properties omitted from actual) + × built flows CLI against live relayflowd > agent step preserves the CliResult wrapper as output when the CLI emits non-JSON text 610ms + → expected null not to be null + × built flows CLI against live relayflowd > AgentWorker exposes wake_context to the CLI via RELAYFLOW_WAKE_CONTEXT env var (real analyzer prerequisite) 600ms + → Cannot read properties of null (reading 'story_title') + × built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_WAKE_CONTEXT UNSET when the run has no wake_context (undefined-vs-null pin) 572ms + → Cannot read properties of null (reading 'env_present') + ✓ built flows CLI against live relayflowd > AgentWorker passes a declared model to an identified wrapper as RELAYFLOW_MODEL 683ms + ✓ built flows CLI against live relayflowd > AgentWorker refuses a nonconforming journal-submitted wrapper before exposing RELAYFLOW_MODEL 585ms + ✓ built flows CLI against live relayflowd > AgentWorker executes the raw claude adapter with its real model flag 587ms + ✓ built flows CLI against live relayflowd > AgentWorker executes the raw codex adapter with its real model flag 549ms + × built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_MODEL UNSET when the step declares no model 663ms + → Cannot read properties of null (reading 'story_title') + ✓ built flows CLI against live relayflowd > preflights before journaling and names an unreachable socket 847ms + ✓ built flows CLI against live relayflowd > starts exactly one daemon when two runs race for one empty data dir 591ms + ✓ subprocess_gate output capture against live relayflowd > journals the gate command output and reports both tails 977ms + ✓ surface resume after a real daemon kill > resumes a three-step run with each successful completion exactly once 1038ms + × a relayflow can be scheduled: tick source against live relayflowd > a tick spawns a real run whose step reports the SCHEDULED instant 607ms + → expected null to deeply equal { schedule_id: 'heartbeat-1m', …(3) } + ✓ tests/cloud-live.test.ts (55 tests) 2057ms + ✓ argv and wiring > routes both live invocations through runCli, and refuses a missing run id 2004ms + ❯ tests/hosted-extension-isolation.test.ts (22 tests | 13 failed) 3873ms + × hosted extension capability isolation > executes the exact capability-only handler for a queued receipt 218ms + → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + × hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt 221ms + → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + × hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization 232ms → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - × hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch 5ms - → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving - × hosted extension capability isolation > refuses oversized Surface files through the bounded descriptor reader 7ms - → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } - × hosted extension capability isolation > shields verified Surface files before async settlement 4ms - → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving - × hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child 3ms - → expected Error: bubblewrap is unavailable { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality - × hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs 7ms - → bubblewrap is unavailable - × hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation 3ms - → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } - × hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port 2ms - → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic 2ms - → bubblewrap is unavailable - × hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior 2ms - → promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving - ✓ tests/cloud-sync.test.ts (40 tests) 757ms - ✓ tests/observer-link.test.ts (44 tests) 167ms - ✓ tests/cloud-deploy.test.ts (100 tests) 1958ms - ✓ tests/authored-flow.test.ts (38 tests) 861ms - ✓ tests/plugin-extension.test.ts (94 tests) 425ms - ✓ tests/cloud-transcript-codex.test.ts (44 tests) 18ms - ✓ tests/worker-cli.test.ts (25 tests) 30552ms - ✓ registered CLI model defaults > passes the same priced Claude default to the real provider invocation 520ms - ✓ registered CLI model defaults > uses the explicitly supplied agent environment for the provider subprocess 510ms - ✓ registered CLI model defaults > dispatches canonical generic bytes with the preflight-proved adapter identity 494ms - ✓ direct transport lifecycle evidence > classifies only the exact Codex stdin lifecycle signature as retryable 492ms - ✓ direct transport lifecycle evidence > records a signal close separately from an ordinary nonzero exit 1082ms - ✓ direct transport lifecycle evidence > records a spawn error code without treating a missing executable as transient 433ms - ✓ direct transport lifecycle evidence > journals classified lifecycle evidence and reports crashed instead of generic worker_error 590ms - ✓ step discovery environment > names the run, step, attempt and an absolute data dir for a direct agent spawn 609ms - ✓ step discovery environment > exports none of the four without a data dir, even when the worker inherited them 475ms - ✓ wrapper discovery environment > sets the four names from the dispatch and still refuses ambient values and other secrets 508ms - ✓ wrapper discovery environment > exports none of the four to a wrapper without a data dir, even when the worker inherited them 480ms - ✓ custom wrapper execution identity > passes an explicit safe environment at identification and execution 504ms - ✓ custom wrapper execution identity > refuses a wrapper symlink retarget before delivering private values 501ms - ✓ custom wrapper execution identity > bounds wrapper execution after acknowledgement 562ms - ✓ custom wrapper execution identity > bounds captured wrapper output 444ms - ✓ custom wrapper execution identity > refuses a duplicate execute protocol frame 517ms - ✓ custom wrapper execution bounds are reader-owned > resolves when a conforming wrapper leaks a stdio pipe to a background helper 1896ms - ✓ custom wrapper execution bounds are reader-owned > resolves when the leaked helper inherits stderr only 1804ms - ✓ custom wrapper execution bounds are reader-owned > resolves when a wrapper leaks a stdio pipe and exits before identifying 3515ms - ✓ custom wrapper execution bounds are reader-owned > journals a completionReason at the default bound when a wrapper leaks a stdio pipe 11449ms - ✓ custom wrapper execution bounds are reader-owned > accepts an execute token and an over-8KiB payload flushed in one write 487ms - ✓ custom wrapper execution bounds are reader-owned > accepts the same over-8KiB payload whether or not it coalesces with the execute token 1638ms - ✓ custom wrapper execution bounds are reader-owned > still bounds an un-terminated handshake buffer and names the bound 524ms - ✓ delivers the journaled memory pack to the real wrapper and excludes its charge from completion usage 515ms - ✓ tests/flow-extension-compose.test.ts (33 tests) 6190ms - ✓ composing flow extensions onto a base flow > composes two extensions in declaration order, and the order is the lockfile order 505ms - ✓ composing flow extensions onto a base flow > flows check reports the composition and keeps the composed triggers deliverable 1059ms - ✓ composing flow extensions onto a base flow > flows check probes extension preflight before reporting the project healthy 305ms - ✓ composing flow extensions onto a base flow > uses extension permissions for hosted deploy preflight and the deploy body 301ms -(node:12358) ExperimentalWarning: SQLite is an experimental feature and might change at any time + × hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic 227ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + × hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists 245ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + × hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch 215ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + × hosted extension capability isolation > shields verified Surface files before async settlement 223ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + × hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child 211ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality + × hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs 223ms + → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + × hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation 218ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_unsupported', …(1) } + × hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port 221ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic 216ms + → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + × hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior 230ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + ✓ hosted extension capability isolation > fails closed when the handler omits or repeats the single capability call 644ms + ✓ tests/cloud-sync.test.ts (40 tests) 908ms + ✓ tests/observer-link.test.ts (44 tests) 174ms + ✓ tests/cloud-deploy.test.ts (100 tests) 2307ms + ✓ tests/authored-flow.test.ts (38 tests) 828ms + ✓ tests/plugin-extension.test.ts (94 tests) 463ms + ✓ tests/cloud-transcript-codex.test.ts (44 tests) 21ms + ✓ tests/worker-cli.test.ts (25 tests) 31085ms + ✓ registered CLI model defaults > passes the same priced Claude default to the real provider invocation 493ms + ✓ registered CLI model defaults > uses the explicitly supplied agent environment for the provider subprocess 426ms + ✓ registered CLI model defaults > dispatches canonical generic bytes with the preflight-proved adapter identity 445ms + ✓ direct transport lifecycle evidence > classifies only the exact Codex stdin lifecycle signature as retryable 428ms + ✓ direct transport lifecycle evidence > records a signal close separately from an ordinary nonzero exit 1038ms + ✓ direct transport lifecycle evidence > records a spawn error code without treating a missing executable as transient 421ms + ✓ direct transport lifecycle evidence > journals classified lifecycle evidence and reports crashed instead of generic worker_error 626ms + ✓ step discovery environment > names the run, step, attempt and an absolute data dir for a direct agent spawn 692ms + ✓ step discovery environment > exports none of the four without a data dir, even when the worker inherited them 589ms + ✓ wrapper discovery environment > sets the four names from the dispatch and still refuses ambient values and other secrets 569ms + ✓ wrapper discovery environment > exports none of the four to a wrapper without a data dir, even when the worker inherited them 519ms + ✓ custom wrapper execution identity > passes an explicit safe environment at identification and execution 565ms + ✓ custom wrapper execution identity > refuses a wrapper symlink retarget before delivering private values 545ms + ✓ custom wrapper execution identity > bounds wrapper execution after acknowledgement 607ms + ✓ custom wrapper execution identity > bounds captured wrapper output 467ms + ✓ custom wrapper execution identity > refuses a duplicate execute protocol frame 548ms + ✓ custom wrapper execution bounds are reader-owned > resolves when a conforming wrapper leaks a stdio pipe to a background helper 1887ms + ✓ custom wrapper execution bounds are reader-owned > resolves when the leaked helper inherits stderr only 1764ms + ✓ custom wrapper execution bounds are reader-owned > resolves when a wrapper leaks a stdio pipe and exits before identifying 3533ms + ✓ custom wrapper execution bounds are reader-owned > journals a completionReason at the default bound when a wrapper leaks a stdio pipe 11593ms + ✓ custom wrapper execution bounds are reader-owned > accepts an execute token and an over-8KiB payload flushed in one write 568ms + ✓ custom wrapper execution bounds are reader-owned > accepts the same over-8KiB payload whether or not it coalesces with the execute token 1707ms + ✓ custom wrapper execution bounds are reader-owned > still bounds an un-terminated handshake buffer and names the bound 530ms + ✓ delivers the journaled memory pack to the real wrapper and excludes its charge from completion usage 522ms + ✓ tests/shipped-source-model-provenance.test.ts (1 test) 99985ms + ✓ shipped-source model provenance > does not treat mutable aliases or incomplete named agents as pinned 99984ms +(node:76166) ExperimentalWarning: SQLite is an experimental feature and might change at any time (Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/cli-status.test.ts (27 tests) 1273ms - ✓ flows status > resolves the run with no arguments from inside a worker-spawned agent 1028ms + ✓ tests/cli-status.test.ts (27 tests) 1252ms + ✓ flows status > resolves the run with no arguments from inside a worker-spawned agent 1010ms ✓ tests/run-state.test.ts (28 tests) 11ms - ✓ tests/cloud-run.test.ts (59 tests) 742ms - ✓ tests/agent-transcript.test.ts (29 tests) 297ms + ✓ tests/cloud-run.test.ts (59 tests) 748ms ✓ tests/relay-cli-surface.test.ts (87 tests) 38ms - ✓ tests/babysitter-native-extension.test.ts (41 tests | 1 skipped) 1540ms - ✓ tests/shipped-source-worker-call-forms.test.ts (1 test) 16298ms - ✓ shipped-source worker call forms > fails closed for computed keys, assertions, binds, call, and apply 16298ms -(node:12628) [FLOWS_ROOT_LEASE_LOST] Warning: authored root run_id=root-run attempt=1: lease_conflict: attempt has no active worker lease. Waiting for the kernel to retry it. + ✓ tests/flow-extension-compose.test.ts (33 tests) 6607ms + ✓ composing flow extensions onto a base flow > composes two extensions in declaration order, and the order is the lockfile order 549ms + ✓ composing flow extensions onto a base flow > flows check reports the composition and keeps the composed triggers deliverable 1094ms + ✓ composing flow extensions onto a base flow > flows check probes extension preflight before reporting the project healthy 303ms + ✓ composing flow extensions onto a base flow > uses extension permissions for hosted deploy preflight and the deploy body 324ms + ✓ tests/agent-transcript.test.ts (29 tests) 272ms + ❯ tests/babysitter-native-extension.test.ts (41 tests | 1 failed) 2222ms + × native Babysitter extension > runs the exact published 2.0.26 native bytes in the isolated capability path 305ms + → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + ✓ native Babysitter extension > checks the reviewed base pin with captured hash methods 341ms + ✓ native Babysitter extension > checks the reviewed base pin with the captured hash factory 351ms +(node:76365) [FLOWS_ROOT_LEASE_LOST] Warning: authored root run_id=root-run attempt=1: lease_conflict: attempt has no active worker lease. Waiting for the kernel to retry it. (Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/authored-root.test.ts (22 tests) 462ms - ✓ tests/authored-completion-detail.test.ts (59 tests) 137ms - ✓ tests/stop-process-group.test.ts (11 tests) 14354ms - ✓ every stop reaches the process group, not just the direct child > exits the run after an execution-timeout stop 932ms - ✓ every stop reaches the process group, not just the direct child > exits the run after a protocol terminate stop 511ms - ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after a protocol terminate stop 1608ms - ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after an execution-timeout stop 1961ms - ✓ every stop reaches the process group, not just the direct child > holds the loop open long enough for the escalation to run 1093ms - ✓ every stop reaches the process group, not just the direct child > bounds forced-stop confirmation when a group remains unprovable 1019ms - ✓ a wrapper that exits with no execution deadline still drains > reports the wrapper result and reaps a grandchild holding its pipes 716ms - ✓ a wrapper that exits with no execution deadline still drains > reaps a SIGTERM-deaf grandchild holding its pipes 1851ms + ✓ tests/authored-root.test.ts (22 tests) 421ms + ✓ tests/authored-completion-detail.test.ts (59 tests) 152ms + ✓ tests/shipped-source-worker-call-forms.test.ts (1 test) 16577ms + ✓ shipped-source worker call forms > fails closed for computed keys, assertions, binds, call, and apply 16576ms + ✓ tests/step-failure-diagnostic.test.ts (26 tests) 70ms + ✓ tests/stop-process-group.test.ts (11 tests) 14715ms + ✓ every stop reaches the process group, not just the direct child > exits the run after an execution-timeout stop 1072ms + ✓ every stop reaches the process group, not just the direct child > exits the run after a protocol terminate stop 537ms + ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after a protocol terminate stop 1582ms + ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after an execution-timeout stop 2051ms + ✓ every stop reaches the process group, not just the direct child > holds the loop open long enough for the escalation to run 1097ms + ✓ every stop reaches the process group, not just the direct child > bounds forced-stop confirmation when a group remains unprovable 1012ms + ✓ a wrapper that exits with no execution deadline still drains > reports the wrapper result and reaps a grandchild holding its pipes 805ms + ✓ a wrapper that exits with no execution deadline still drains > reaps a SIGTERM-deaf grandchild holding its pipes 1895ms ✓ a wrapper that exits with no execution deadline still drains > settles on its own deadline when an escaped holder withholds close 4338ms - ✓ tests/step-failure-diagnostic.test.ts (26 tests) 71ms - ✓ tests/shipped-source-model-provenance.test.ts (1 test) 117992ms - ✓ shipped-source model provenance > does not treat mutable aliases or incomplete named agents as pinned 117991ms - ✓ tests/mcp.test.ts (34 tests) 14078ms - ✓ MCP preflight and transports > flows check refuses an undeclared server with exit 2 and no daemon 883ms - ✓ MCP preflight and transports > flows check reports a refusing server and leaves no PID 886ms + ✓ tests/mcp.test.ts (34 tests) 14205ms + ✓ MCP preflight and transports > flows check refuses an undeclared server with exit 2 and no daemon 871ms + ✓ MCP preflight and transports > flows check reports a refusing server and leaves no PID 953ms ✓ MCP preflight and transports > kills a SIGTERM-resistant silent child after a parent-owned handshake deadline 1314ms - ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with inherit stdio before cleanup finishes 1091ms - ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with ignore stdio before cleanup finishes 2021ms - ✓ MCP preflight and transports > rejects close when forced group death remains unprovable 2067ms + ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with inherit stdio before cleanup finishes 1066ms + ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with ignore stdio before cleanup finishes 2024ms + ✓ MCP preflight and transports > rejects close when forced group death remains unprovable 2071ms ✓ MCP preflight and transports > cancels force escalation when close follows an exited child 1180ms - ✓ MCP preflight and transports > waits for child close when the transport cannot own a process group 1056ms - ✓ MCP preflight and transports > cancels force escalation for an already-closed child without a process group 1176ms - ✓ MCP preflight and transports > reports malformed connection configuration as config_invalid 908ms - ✓ authored MCP effects against the real kernel > reports a dropped tool connection as a failed CLI run 641ms - ❯ tests/hosted-extension-protocol.test.ts (27 tests | 8 failed) 40091ms - × hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary 7ms - → bubblewrap is unavailable - × hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls 6ms - → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls 3ms - → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls 3ms - → expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles 10004ms + ✓ MCP preflight and transports > waits for child close when the transport cannot own a process group 1054ms + ✓ MCP preflight and transports > cancels force escalation for an already-closed child without a process group 1175ms + ✓ MCP preflight and transports > reports malformed connection configuration as config_invalid 921ms + ✓ authored MCP effects against the real kernel > reports a dropped tool connection as a failed CLI run 677ms + ✓ tests/step-attempt-history.test.ts (23 tests) 18ms + ✓ tests/daemon-lifecycle.test.ts (42 tests) 40ms + ✓ tests/close-pr-flow.test.ts (35 tests) 19168ms + ✓ close-pr journaled repair loop > reads an existing Bugbot finding, repairs in the same worktree, pushes and re-verifies before merging 3026ms + ✓ close-pr journaled repair loop > opens a PR and feeds failed CI logs into the repair agent 2574ms + ✓ close-pr journaled repair loop > pins the current generated model for codex when no override is supplied 4392ms + ✓ close-pr journaled repair loop > pins the current generated model for claude when no override is supplied 996ms + ✓ close-pr journaled repair loop > parks after exactly three nonconverging repairs, with accumulated blockers 2768ms + ✓ close-pr journaled repair loop > can converge on the third repair 2590ms + ✓ close-pr journaled repair loop > executes the deterministic commit and force-push steps against a local Git remote, including a no-op repair 2597ms + ❯ tests/hosted-extension-protocol.test.ts (27 tests | 8 failed) 41958ms + × hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary 235ms + → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + × hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls 224ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls 220ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls 211ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } + × hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles 10140ms → hostile child did not invoke the adapter - × hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error 10004ms + × hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error 10151ms → hostile child did not invoke the adapter - × hosted extension hostile protocol > waits for a pending adapter to resolve after a forged child error 10005ms + × hosted extension hostile protocol > waits for a pending adapter to resolve after a forged child error 10141ms → hostile child did not invoke the adapter - × hosted extension hostile protocol > returns a typed adapter rejection even when the hostile child hangs 10005ms + × hosted extension hostile protocol > returns a typed adapter rejection even when the hostile child hangs 10141ms → hostile child did not invoke the adapter - ✓ tests/step-attempt-history.test.ts (23 tests) 20ms - ✓ tests/daemon-lifecycle.test.ts (42 tests) 44ms - ❯ tests/authored-node-runtime.test.ts (16 tests | 16 skipped) 11ms - ✓ tests/artifact-gates.test.ts (27 tests) 244ms - ✓ tests/hosted-base-snapshot.test.ts (18 tests) 2013ms - ✓ hosted base private snapshot > stops streaming project entries at the shared count limit 1937ms - ✓ tests/close-pr-flow.test.ts (35 tests) 25392ms - ✓ close-pr journaled repair loop > reads an existing Bugbot finding, repairs in the same worktree, pushes and re-verifies before merging 3031ms - ✓ close-pr journaled repair loop > opens a PR and feeds failed CI logs into the repair agent 2694ms - ✓ close-pr journaled repair loop > pins the current generated model for codex when no override is supplied 7277ms - ✓ close-pr journaled repair loop > pins the current generated model for claude when no override is supplied 3969ms - ✓ close-pr journaled repair loop > parks after exactly three nonconverging repairs, with accumulated blockers 2711ms - ✓ close-pr journaled repair loop > can converge on the third repair 2756ms - ✓ close-pr journaled repair loop > executes the deterministic commit and force-push steps against a local Git remote, including a no-op repair 2729ms - ✓ tests/cloud-connect.test.ts (24 tests) 3228ms - ✓ hosted verbs connect before they submit > flows run --cloud submits once the prompt connected the integration 2146ms - ✓ tests/journal-client.test.ts (17 tests) 81ms - ✓ tests/verb-field-lint.test.ts (102 tests) 372ms - ✓ tests/shipped-source-flow-provenance-repairs.test.ts (1 test) 31153ms - ✓ shipped-source flow provenance repairs > audits repaired writer, alias, binding, and cyclic provenance forms 31152ms - ✓ tests/validate.test.ts (68 tests) 25ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/flow-executor-chain.test.ts (14 tests | 14 failed) 201ms - × flow executor LLM and output-binding chain > runs f.llm -> f.agent -> f.run with schema-verified journal output and the exact allowed model 20ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > runs a dollar-budgeted authored Claude agent with the same default used by preflight 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > fails invalid LLM output before the next step: not JSON 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > fails invalid LLM output before the next step: {"message":7} 27ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > retains tagged-template text output 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: null 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: [1,2] 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: "hello" 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > refuses a model outside flows.json before a run or adapter execution 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > runs the exact authored flagship f.llm -> f.agent -> f.run path through the durable CLI root 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > resumes an interrupted durable authored root without replaying completed flagship effects 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > passes a declarative verified value through an agent into a deterministic artifact 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > journals a missing optional field as a failure before the consuming command executes 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × flow executor LLM and output-binding chain > flows run consumes YAML bindings and resume reuses the original journal output 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/agent-relay-transport.test.ts (17 tests) 2297ms - ✓ Relay completion at the journal boundary > does not complete at readiness and journals exact output, receipt, and priced accounting 1009ms - ✓ Relay completion at the journal boundary > aborts polling on rejected renewal and never writes a stale completion 1003ms + ✓ tests/artifact-gates.test.ts (27 tests) 245ms + ✓ tests/hosted-base-snapshot.test.ts (18 tests) 2073ms + ✓ hosted base private snapshot > stops streaming project entries at the shared count limit 1991ms + ✓ tests/shipped-source-flow-provenance-repairs.test.ts (1 test) 31665ms + ✓ shipped-source flow provenance repairs > audits repaired writer, alias, binding, and cyclic provenance forms 31665ms + ✓ tests/cloud-connect.test.ts (24 tests) 3182ms + ✓ hosted verbs connect before they submit > flows run --cloud submits once the prompt connected the integration 2175ms + ✓ tests/journal-client.test.ts (17 tests) 82ms + ✓ tests/verb-field-lint.test.ts (102 tests) 345ms + ✓ tests/authored-node-runtime.test.ts (16 tests) 50697ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > serializes the immutable prepared binding facts through the Node and CLI boundary 1989ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > suppresses the loader warning while preserving authored experimental warnings 2071ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > awaits agent plus three run steps and resumes without repeating effects 2930ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > accepts a predicate-gated flow: the `.gate` child is journaled, verified, and not counted as an authored step 3202ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > resumes a run killed mid-step: the retried child passes the durable result verifier 3597ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > parks an f.human across the IPC boundary, answers it, and resumes the Node body with the answer 4476ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent SIGKILL and replays completed children before success 3895ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent SIGTERM and replays completed children before success 3825ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent blocked-SIGKILL and replays completed children before success 4129ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent SIGKILL and replays completed children before declined 3881ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses unawaited rather than reporting terminal success 2152ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses manual then rather than reporting terminal success 2402ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > dispatches the captured child graph even when the source changes before execution 2188ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > rejects a forged result frame without durable completion 1994ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses missing Node before body effects or root admission 1115ms + ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses an old Node candidate before body effects 1131ms + ✓ tests/validate.test.ts (68 tests) 24ms + ✓ tests/bundle.test.ts (26 tests) 9627ms + ✓ immutable bundles > returns exit 2 naming a byte-flipped payload and refuses to reuse corruption 398ms + ✓ immutable bundles > verifies with --verify in any position and answers --json with one object 826ms + ✓ immutable bundles > refuses --out with --verify rather than ignoring the destination 397ms + ✓ immutable bundles > builds and verifies the canonical YAML fixture through the compiled CLI 1350ms + ✓ immutable bundles > emits the ephemeral warning on CLI stderr and uses the default output directory 832ms + ✓ immutable bundles > refuses build-provable CLI resolution errors without environment probes 419ms + ✓ immutable bundles > builds a standalone TS fixture twice with identical executable hashes 2770ms + ✓ immutable bundles > refuses to label installed dependency drift with lockfile pins 402ms + ✓ immutable bundles > refuses invalid CLI arguments %j 404ms + ✓ immutable bundles > refuses invalid CLI arguments "--out" 434ms + ✓ immutable bundles > refuses invalid CLI arguments "--verify" 399ms + ✓ immutable bundles > refuses invalid CLI arguments "--verify" 414ms + ✓ immutable bundles > refuses invalid CLI arguments "--out" 413ms + ✓ tests/agent-relay-transport.test.ts (17 tests) 2294ms + ✓ Relay completion at the journal boundary > does not complete at readiness and journals exact output, receipt, and priced accounting 1012ms + ✓ Relay completion at the journal boundary > aborts polling on rejected renewal and never writes a stale completion 1002ms ✓ tests/authored-node-result.test.ts (44 tests) 19ms - ✓ tests/bundle.test.ts (26 tests) 9116ms - ✓ immutable bundles > returns exit 2 naming a byte-flipped payload and refuses to reuse corruption 403ms - ✓ immutable bundles > verifies with --verify in any position and answers --json with one object 885ms - ✓ immutable bundles > refuses --out with --verify rather than ignoring the destination 408ms - ✓ immutable bundles > builds and verifies the canonical YAML fixture through the compiled CLI 1277ms - ✓ immutable bundles > emits the ephemeral warning on CLI stderr and uses the default output directory 819ms - ✓ immutable bundles > refuses build-provable CLI resolution errors without environment probes 421ms - ✓ immutable bundles > builds a standalone TS fixture twice with identical executable hashes 2390ms - ✓ immutable bundles > refuses to label installed dependency drift with lockfile pins 393ms - ✓ immutable bundles > refuses invalid CLI arguments %j 391ms - ✓ immutable bundles > refuses invalid CLI arguments "--out" 411ms - ✓ immutable bundles > refuses invalid CLI arguments "--verify" 390ms - ✓ immutable bundles > refuses invalid CLI arguments "--verify" 379ms - ✓ immutable bundles > refuses invalid CLI arguments "--out" 402ms - ✓ tests/tick-source.test.ts (33 tests) 30ms - ✓ tests/authored-step-graph.test.ts (25 tests) 827ms - ✓ the authored step DAG > does not walk a long-running step's own polling chain to find its dependents' edges 303ms - ✓ tests/cloud-mirror.test.ts (14 tests) 32ms - ✓ tests/pr-review-post.test.ts (21 tests) 2153ms - ✓ tests/authored-flow-lifecycle-executor.test.ts (27 tests) 638ms - ✓ tests/step-failure-excerpt.test.ts (42 tests) 197ms - ✓ tests/authored-step-terminal-completion.test.ts (13 tests) 4880ms - ✓ readCompletedStepOutput on an adopted gated child whose gate has not started > refuses a producer success when the wait ends with the run still not terminal 2008ms - ✓ readCompletedStepOutput given a suspended known status (#441) > refuses a producer success while the child is still not terminal 2009ms - ✓ tests/cloud-mirror-step.test.ts (17 tests) 29ms -(node:17633) ExperimentalWarning: SQLite is an experimental feature and might change at any time + ✓ tests/tick-source.test.ts (33 tests) 20ms + ✓ tests/flow-executor-chain.test.ts (14 tests) 10221ms + ✓ flow executor LLM and output-binding chain > runs f.llm -> f.agent -> f.run with schema-verified journal output and the exact allowed model 1043ms + ✓ flow executor LLM and output-binding chain > runs a dollar-budgeted authored Claude agent with the same default used by preflight 754ms + ✓ flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: null 305ms + ✓ flow executor LLM and output-binding chain > runs the exact authored flagship f.llm -> f.agent -> f.run path through the durable CLI root 1488ms + ✓ flow executor LLM and output-binding chain > resumes an interrupted durable authored root without replaying completed flagship effects 3225ms + ✓ flow executor LLM and output-binding chain > passes a declarative verified value through an agent into a deterministic artifact 854ms + ✓ flow executor LLM and output-binding chain > flows run consumes YAML bindings and resume reuses the original journal output 1005ms + ✓ tests/authored-step-graph.test.ts (25 tests) 886ms + ✓ the authored step DAG > does not walk a long-running step's own polling chain to find its dependents' edges 337ms + ✓ tests/cloud-mirror.test.ts (14 tests) 33ms + ✓ tests/authored-step-terminal-completion.test.ts (13 tests) 4882ms + ✓ readCompletedStepOutput on an adopted gated child whose gate has not started > refuses a producer success when the wait ends with the run still not terminal 2006ms + ✓ readCompletedStepOutput given a suspended known status (#441) > refuses a producer success while the child is still not terminal 2007ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (27 tests) 594ms + ✓ tests/step-failure-excerpt.test.ts (42 tests) 190ms + ✓ tests/pr-review-post.test.ts (21 tests) 2038ms +(node:83327) ExperimentalWarning: SQLite is an experimental feature and might change at any time (Use `node --trace-warnings ...` to show where the warning was created) - ❯ tests/authored-flow-slack.test.ts (7 tests | 5 failed) 152ms - × authored Slack helper effects > snapshots structured posts into the journal and delivers the same Block Kit body 6ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × authored Slack helper effects > journals exactly one effect with the authored params and typed receipt, without network 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × authored Slack helper effects > replays after SIGKILL before confirm with the same token and one successful completion 2ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × authored Slack helper effects > replays after SIGKILL before complete with the same token and one successful completion 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × authored Slack helper effects > writes two files for two calls and supports dm, reply, and react 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - ✓ tests/cli-replay.test.ts (38 tests) 1305ms - ✓ flows replay > --json is byte-identical across two CLI invocations (diff) 869ms - ✓ tests/wrapper-execution-duration.test.ts (7 tests) 10886ms - ✓ keeps the handshake deadline independent of the removed execution deadline 10050ms - ✓ still lets a lease abort stop an unlimited wrapper before it produces output 512ms - ✓ tests/tick-runner.test.ts (22 tests) 2371ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms fractional as an invocation error 394ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms exponent notation as an invocation error 398ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms hex as an invocation error 387ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms trailing text as an invocation error 386ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms empty as an invocation error 391ms - ✓ CLI argument parsing refuses coercion rather than accepting it > accepts an exact integer and proceeds past parsing 386ms - ✓ tests/authored-step-index.test.ts (17 tests) 17ms - ✓ tests/authored-agent-artifacts.test.ts (5 tests) 332ms - ❯ tests/direct-input.test.ts (6 tests | 6 skipped) 4ms - ✓ tests/worker-transcript.test.ts (9 tests) 881ms - ✓ tests/gate-contract.test.ts (20 tests) 144ms + ✓ tests/cloud-mirror-step.test.ts (17 tests) 15ms + ✓ tests/cli-replay.test.ts (38 tests) 1235ms + ✓ flows replay > --json is byte-identical across two CLI invocations (diff) 857ms + ✓ tests/authored-flow-slack.test.ts (7 tests) 1788ms + ✓ authored Slack helper effects > replays after SIGKILL before confirm with the same token and one successful completion 558ms + ✓ authored Slack helper effects > replays after SIGKILL before complete with the same token and one successful completion 626ms + ✓ tests/wrapper-execution-duration.test.ts (7 tests) 10876ms + ✓ keeps the handshake deadline independent of the removed execution deadline 10058ms + ✓ still lets a lease abort stop an unlimited wrapper before it produces output 511ms + ✓ tests/tick-runner.test.ts (22 tests) 2447ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms fractional as an invocation error 401ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms exponent notation as an invocation error 400ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms hex as an invocation error 397ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms trailing text as an invocation error 408ms + ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms empty as an invocation error 401ms + ✓ CLI argument parsing refuses coercion rather than accepting it > accepts an exact integer and proceeds past parsing 408ms + ✓ tests/authored-step-index.test.ts (17 tests) 19ms + ✓ tests/authored-agent-artifacts.test.ts (5 tests) 339ms + ✓ tests/direct-input.test.ts (6 tests) 6477ms + ✓ direct .flow.ts input through the built CLI and live runtime > returns exit 3 for an authored human handoff and persists its outcome 593ms + ✓ direct .flow.ts input through the built CLI and live runtime > returns exit 1 for an authored step_failed verdict and persists its outcome 738ms + ✓ direct .flow.ts input through the built CLI and live runtime > executes inline and file JSON input through relayflowd 2595ms + ✓ direct .flow.ts input through the built CLI and live runtime > refuses missing and malformed input before contacting relayflowd 1658ms + ✓ direct .flow.ts input through the built CLI and live runtime > does not run the authored body before daemon availability 493ms + ✓ direct .flow.ts input through the built CLI and live runtime > refuses oversized file input before contacting relayflowd 399ms + ✓ tests/worker-transcript.test.ts (9 tests) 894ms + ✓ tests/gate-contract.test.ts (20 tests) 156ms Stopped: a Linear ticket must carry its identifier (like TECH-42) so the pull request can link back. Stopped: a Linear ticket must carry its identifier (like TECH-42) so the pull request can link back. Stopped: invalid pull-request metadata (duplicate-linear-closing-reference). No branch was pushed and no pull request was opened. @@ -321,2627 +310,468 @@ Stopped: invalid pull-request metadata (malformed-review-scope). No branch was p Stopped: could not read the reviewed head commit. Nothing was pushed. Stopped: could not read the reviewed head commit. Nothing was pushed. Stopped: could not read the reviewed head commit. Nothing was pushed. - ✓ tests/canonical-software-factory.test.ts (25 tests) 742ms - ✓ tests/authored-human.test.ts (13 tests) 88ms - ✓ tests/cloud-schedule.test.ts (17 tests) 5635ms - ✓ schedule lowering > marks a non-grid cron as Cloud-only rather than approximating it, with a silence budget from its own cadence 3089ms - ✓ flows check prints declared schedules > shows the lowering for a fixed interval and the Cloud-only note for a real cron 2005ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-run-failure-evidence.test.ts (9 tests | 5 failed) 74ms - × a failing f.run through the live kernel > reports the command that failed and what it printed 20ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a failing f.run through the live kernel > names the failing case from the middle of a real test run 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a failing f.run through the live kernel > carries the same facts structurally, not only rendered into the message 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a failing f.run through the live kernel > keeps the evidence when the failure is relabelled as a timeout 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × the child index after the process that wrote it is gone > still names every child, with its own run id, after a daemon restart 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/cli-hn-monitor.test.ts (16 tests) 94ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/agent-artifacts-live.test.ts (5 tests | 5 failed) 68ms - × agent artifacts and gates through the built CLI, a real daemon and the local agent > journals the files the agent wrote, including under a dot-directory, and every artifact gate passes on that journal 17ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run when the artifact_exists gate names a file the agent did not write 13ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run with the author reason when a predicate gate returns false, journaling the verdict 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × review follow-ups > applies a predicate gate on a helper step too, and journals its verdict 13ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × review follow-ups > records predicate verdicts on the root run so a resume reuses them instead of re-running the closure 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ✓ tests/spec-parity.test.ts (43 tests) 481ms - ✓ tests/authored-activity.test.ts (16 tests) 107ms - ✓ tests/named-gate-diagnostics.test.ts (17 tests) 528ms - ✓ tests/run-projection.test.ts (13 tests) 11ms - ✓ tests/worker-cli-result-exit.test.ts (7 tests) 34887ms - ✓ a Claude agent step completes on its result, not only on process exit > settles a hung, successful run within the grace and stops its whole tree 32615ms - ✓ a Claude agent step completes on its result, not only on process exit > maps an error result on a hung run to a failed exit 31611ms - ✓ a Claude agent step completes on its result, not only on process exit > leaves a hang before any result to the existing stops 32016ms - ✓ an agent tree does not outlive the process that spawned it > kills the agent group when the run process is terminated by SIGTERM 777ms - ✓ an agent tree does not outlive the process that spawned it > removes a wrapper alias on host exit after group death stays unprovable 1410ms - ✓ tests/daemon-lifecycle-live.test.ts (9 tests) 6809ms - ✓ flows run against a data dir with no daemon (§6 test 7) > cold start spawns exactly one daemon, the run succeeds, and the daemon outlives the CLI 475ms - ✓ flows run against a data dir with no daemon (§6 test 7) > polls, bounded, for a daemon that holds the lock before it binds 1390ms - ✓ flows run against a data dir with no daemon (§6 test 7) > attaches to a serving daemon that has not published a connection file 522ms - ✓ flows run against a data dir with no daemon (§6 test 7) > a second run attaches to the daemon the first one started, spawning nothing 888ms - ✓ flows run against a data dir with no daemon (§6 test 7) > detects a stale connection file left by a hard kill and starts a fresh daemon 962ms - ✓ concurrent invocations against one empty data dir (§6 test 15) > ends with exactly one daemon owning the socket, and both runs succeed 1148ms - ✓ refusals from a spawn that cannot produce a daemon > names relayflowd_not_found rather than falling through to PATH 413ms - ✓ refusals from a spawn that cannot produce a daemon > names daemon_start_failed and quotes the daemon log when startup dies 481ms - ✓ refusals from a spawn that cannot produce a daemon > refuses a daemon speaking another protocol version instead of binding over it 527ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/agent-transcript-live.test.ts (4 tests | 4 failed) 73ms - × the transcript digest through the built CLI, a real daemon and the local agent > preserves structured agent failure details and its completed root index 18ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × the transcript digest through the built CLI, a real daemon and the local agent > preserves structured llm failure details and its completed root index 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × the transcript digest through the built CLI, a real daemon and the local agent > journals the digest in trajectory_tail on a successful agent step and writes the file it points at 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × the transcript digest through the built CLI, a real daemon and the local agent > on a failed agent step, names the failure and the transcript in the terminal diagnostic, redacted 30ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ✓ tests/wrapper-exit-drain.test.ts (9 tests) 3263ms - ✓ reports a signalled wrapper death while a pipe is held, with its output intact 381ms - ✓ lets a lease abort outrank a successful exit still being drained 539ms - ✓ does not let a later drain overwrite abort while group confirmation is pending 649ms - ✓ tests/resume-local-agent.test.ts (8 tests) 13ms -(node:19805) Warning: Transcript tail for run-9/analyze attempt 1 (stdout) could not be written; the step continues without it: EACCES: permission denied, mkdir '/tmp/transcript-tail-Z23mxe/runs/run-9/steps' + ✓ tests/canonical-software-factory.test.ts (25 tests) 737ms + ✓ tests/authored-human.test.ts (13 tests) 97ms + ✓ tests/cloud-schedule.test.ts (17 tests) 4491ms + ✓ schedule lowering > marks a non-grid cron as Cloud-only rather than approximating it, with a silence budget from its own cadence 1884ms + ✓ flows check prints declared schedules > shows the lowering for a fixed interval and the Cloud-only note for a real cron 2021ms + ✓ tests/authored-run-failure-evidence.test.ts (9 tests) 885ms + ✓ the child index after the process that wrote it is gone > still names every child, with its own run id, after a daemon restart 535ms + ✓ tests/cli-hn-monitor.test.ts (16 tests) 96ms + ✓ tests/worker-cli-result-exit.test.ts (7 tests) 34841ms + ✓ a Claude agent step completes on its result, not only on process exit > settles a hung, successful run within the grace and stops its whole tree 32617ms + ✓ a Claude agent step completes on its result, not only on process exit > maps an error result on a hung run to a failed exit 31617ms + ✓ a Claude agent step completes on its result, not only on process exit > leaves a hang before any result to the existing stops 32018ms + ✓ an agent tree does not outlive the process that spawned it > kills the agent group when the run process is terminated by SIGTERM 796ms + ✓ an agent tree does not outlive the process that spawned it > removes a wrapper alias on host exit after group death stays unprovable 1338ms + ✓ tests/spec-parity.test.ts (43 tests) 584ms + ✓ tests/agent-artifacts-live.test.ts (5 tests) 4306ms + ✓ agent artifacts and gates through the built CLI, a real daemon and the local agent > journals the files the agent wrote, including under a dot-directory, and every artifact gate passes on that journal 1089ms + ✓ agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run when the artifact_exists gate names a file the agent did not write 861ms + ✓ agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run with the author reason when a predicate gate returns false, journaling the verdict 780ms + ✓ review follow-ups > applies a predicate gate on a helper step too, and journals its verdict 841ms + ✓ review follow-ups > records predicate verdicts on the root run so a resume reuses them instead of re-running the closure 734ms + ✓ tests/authored-activity.test.ts (16 tests) 108ms + ✓ tests/named-gate-diagnostics.test.ts (17 tests) 514ms + ✓ tests/run-projection.test.ts (13 tests) 12ms + ✓ tests/daemon-lifecycle-live.test.ts (9 tests) 7382ms + ✓ flows run against a data dir with no daemon (§6 test 7) > cold start spawns exactly one daemon, the run succeeds, and the daemon outlives the CLI 514ms + ✓ flows run against a data dir with no daemon (§6 test 7) > polls, bounded, for a daemon that holds the lock before it binds 1516ms + ✓ flows run against a data dir with no daemon (§6 test 7) > attaches to a serving daemon that has not published a connection file 565ms + ✓ flows run against a data dir with no daemon (§6 test 7) > a second run attaches to the daemon the first one started, spawning nothing 937ms + ✓ flows run against a data dir with no daemon (§6 test 7) > detects a stale connection file left by a hard kill and starts a fresh daemon 1061ms + ✓ concurrent invocations against one empty data dir (§6 test 15) > ends with exactly one daemon owning the socket, and both runs succeed 1296ms + ✓ refusals from a spawn that cannot produce a daemon > names relayflowd_not_found rather than falling through to PATH 465ms + ✓ refusals from a spawn that cannot produce a daemon > names daemon_start_failed and quotes the daemon log when startup dies 516ms + ✓ refusals from a spawn that cannot produce a daemon > refuses a daemon speaking another protocol version instead of binding over it 512ms + ✓ tests/agent-transcript-live.test.ts (4 tests) 3571ms + ✓ the transcript digest through the built CLI, a real daemon and the local agent > preserves structured agent failure details and its completed root index 925ms + ✓ the transcript digest through the built CLI, a real daemon and the local agent > preserves structured llm failure details and its completed root index 871ms + ✓ the transcript digest through the built CLI, a real daemon and the local agent > journals the digest in trajectory_tail on a successful agent step and writes the file it points at 920ms + ✓ the transcript digest through the built CLI, a real daemon and the local agent > on a failed agent step, names the failure and the transcript in the terminal diagnostic, redacted 854ms + ✓ tests/shipped-source-cubic-regressions.test.ts (5 tests) 12517ms + ✓ shipped-source adversarial provenance regressions > retains callable writes through member mutation, spreads, this, holes, and alternate receivers 7058ms + ✓ shipped-source adversarial provenance regressions > does not manufacture intrinsic writes or comma-left callables 2377ms + ✓ shipped-source adversarial provenance regressions > treats constructor and implicit-this receiver escapes as possible worker writes 645ms + ✓ shipped-source adversarial provenance regressions > maps pure helper parameters and refuses mutations or conditional assignments as proofs 1811ms + ✓ shipped-source adversarial provenance regressions > does not apply later alias assignments retroactively to copied values 625ms + ✓ tests/resume-local-agent.test.ts (8 tests) 14ms + ✓ tests/wrapper-exit-drain.test.ts (9 tests) 3268ms + ✓ reports a signalled wrapper death while a pipe is held, with its output intact 385ms + ✓ lets a lease abort outrank a successful exit still being drained 554ms + ✓ does not let a later drain overwrite abort while group confirmation is pending 632ms +(node:86200) Warning: Transcript tail for run-9/analyze attempt 1 (stdout) could not be written; the step continues without it: EACCES: permission denied, mkdir '/tmp/transcript-tail-s2J9yY/runs/run-9/steps' (Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/transcript-tail.test.ts (11 tests) 1395ms - ✓ direct agent spawn > tees stdout and stderr into tail files that name the dispatch 543ms - ✓ direct agent spawn > completes the step when the tail directory cannot be created 571ms - ✓ tests/advisory-outcome.test.ts (23 tests) 87ms - ✓ tests/shipped-source-cubic-regressions.test.ts (5 tests) 12003ms - ✓ shipped-source adversarial provenance regressions > retains callable writes through member mutation, spreads, this, holes, and alternate receivers 6635ms - ✓ shipped-source adversarial provenance regressions > does not manufacture intrinsic writes or comma-left callables 2409ms - ✓ shipped-source adversarial provenance regressions > treats constructor and implicit-this receiver escapes as possible worker writes 578ms - ✓ shipped-source adversarial provenance regressions > maps pure helper parameters and refuses mutations or conditional assignments as proofs 1761ms - ✓ shipped-source adversarial provenance regressions > does not apply later alias assignments retroactively to copied values 619ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/agent-cwd-live.test.ts (4 tests | 4 failed) 55ms - × agents drive two checkouts under one run root > runs each CLI in its declared directory, and the run is not refused as an unknown field 18ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × agents drive two checkouts under one run root > gates on an artifact path relative to the agent directory 14ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × a declaration this contract cannot honour is refused at its own edge > refuses a path that climbs out of the run root without starting a run at all 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × a declaration this contract cannot honour is refused at its own edge > fails the step with the reason when the directory is not there, rather than running somewhere else 11ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ tests/authored-helpers.test.ts (6 tests | 5 failed) 24ms - × lowers the named acceptance helpers and Slack to confirmed journal effects 6ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × runs every available provider through the real kernel and resumes completed effects without a second write 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × replays after SIGKILL before confirm with the same token and one successful completion 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × replays after SIGKILL before complete with the same token and one successful completion 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × journals provider failure with worker_error and never confirms the effect 1ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + ✓ tests/transcript-tail.test.ts (11 tests) 1313ms + ✓ direct agent spawn > tees stdout and stderr into tail files that name the dispatch 562ms + ✓ direct agent spawn > completes the step when the tail directory cannot be created 464ms + ✓ tests/advisory-outcome.test.ts (23 tests) 78ms + ✓ tests/agent-cwd-live.test.ts (4 tests) 3008ms + ✓ agents drive two checkouts under one run root > runs each CLI in its declared directory, and the run is not refused as an unknown field 921ms + ✓ agents drive two checkouts under one run root > gates on an artifact path relative to the agent directory 783ms + ✓ a declaration this contract cannot honour is refused at its own edge > refuses a path that climbs out of the run root without starting a run at all 610ms + ✓ a declaration this contract cannot honour is refused at its own edge > fails the step with the reason when the directory is not there, rather than running somewhere else 693ms + ✓ tests/authored-helpers.test.ts (6 tests) 2719ms + ✓ runs every available provider through the real kernel and resumes completed effects without a second write 1321ms + ✓ replays after SIGKILL before confirm with the same token and one successful completion 530ms + ✓ replays after SIGKILL before complete with the same token and one successful completion 520ms ✓ tests/cloud-mirror-session.test.ts (12 tests) 13ms - ✓ tests/agent-cwd.test.ts (53 tests) 71ms - ✓ tests/authored-flow-operation.test.ts (24 tests) 582ms - ✓ tests/budget-attribution.test.ts (10 tests) 10ms - ✓ tests/helper-reference.test.ts (30 tests) 23ms - ❯ tests/cloud-mirror-live.test.ts (3 tests | 3 skipped) - ✓ tests/pty-sidechannel.test.ts (14 tests) 8949ms - ✓ view attach preserves worker completion and marks only drive 1067ms - ✓ drive attach preserves worker completion and marks only drive 571ms - ✓ passthrough attach preserves worker completion and marks only drive 1002ms - ✓ none attach preserves worker completion and marks only drive 1041ms - ✓ none subscriber lets an unattended CLI read EOF 614ms - ✓ view subscriber lets an unattended CLI read EOF 568ms - ✓ passthrough subscriber lets an unattended CLI read EOF 591ms - ✓ incomplete subscriber lets an unattended CLI read EOF 530ms - ✓ unattended Codex receives closed stdin before startup instead of entering its additional-input lifecycle 661ms - ✓ ends driven stdin when the last drive peer disconnects after spawn 580ms - ✓ rejects drive after EOF without marking human intervention 866ms - ✓ delivers all drive bytes in order across child stdin backpressure 823ms - ✓ tests/flow-requirements.test.ts (14 tests) 845ms - ✓ flows check prints REQUIRES > names the helper, the harness and the mcp server of an authored flow 594ms - ✓ tests/backlog-picker.test.ts (14 tests) 42ms - ✓ tests/plugin-store-bounds.test.ts (11 tests) 91ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/local-agent-live.test.ts (7 tests | 7 failed) 100ms - × built CLI local agent against a real daemon > dispatches through the wrapper and keeps --json stdout report-shaped 18ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × built CLI local agent against a real daemon > runs beyond the initial 30-second lease without a second invocation 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × built CLI local agent against a real daemon > renders actual agent completion in text output 11ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × built CLI local agent against a real daemon > returns a failed run when the agent process fails 15ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × built CLI local agent against a real daemon > prints a remedy that runs the parked authored flow to completion 12ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × built CLI local agent against a real daemon > prints a remedy that runs, for a run started from an input file too long to be one 16ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × built CLI local agent against a real daemon > refuses a workspace it cannot pin before invoking the agent 14ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ✓ tests/classify-outcome.test.ts (11 tests) 5923ms + ✓ tests/agent-cwd.test.ts (53 tests) 50ms + ✓ tests/authored-flow-operation.test.ts (24 tests) 532ms + ✓ tests/budget-attribution.test.ts (10 tests) 12ms + ✓ tests/helper-reference.test.ts (30 tests) 24ms + ✓ tests/pty-sidechannel.test.ts (14 tests) 9328ms + ✓ view attach preserves worker completion and marks only drive 1008ms + ✓ drive attach preserves worker completion and marks only drive 554ms + ✓ passthrough attach preserves worker completion and marks only drive 1004ms + ✓ none attach preserves worker completion and marks only drive 986ms + ✓ none subscriber lets an unattended CLI read EOF 641ms + ✓ view subscriber lets an unattended CLI read EOF 620ms + ✓ passthrough subscriber lets an unattended CLI read EOF 547ms + ✓ incomplete subscriber lets an unattended CLI read EOF 613ms + ✓ unattended Codex receives closed stdin before startup instead of entering its additional-input lifecycle 701ms + ✓ ends driven stdin when the last drive peer disconnects after spawn 670ms + ✓ rejects drive after EOF without marking human intervention 987ms + ✓ delivers all drive bytes in order across child stdin backpressure 959ms + ✓ tests/flow-requirements.test.ts (14 tests) 900ms + ✓ flows check prints REQUIRES > names the helper, the harness and the mcp server of an authored flow 647ms + ✓ tests/backlog-picker.test.ts (14 tests) 44ms + ✓ tests/plugin-store-bounds.test.ts (11 tests) 100ms + ✓ tests/cloud-mirror-live.test.ts (3 tests) 2842ms + ✓ a local run on the Cloud dashboard > registers, publishes its steps and its log, and reports terminal last 561ms + ✓ a local run on the Cloud dashboard > sends nothing at all unless it is asked to 1366ms + ✓ a local run on the Cloud dashboard > publishes a composed authored flow as one connected dashboard DAG 810ms + ✓ tests/classify-outcome.test.ts (11 tests) 5926ms ✓ classifyOutcome > gives up and reports when a running run never becomes classifiable 2009ms - ✓ the remedy on a worker park > follows a step through a retry backoff longer than the unclassified bound 3003ms - ✓ the remedy on a worker park > follows a run.start outcome that is already running on a retried attempt 503ms - ❯ tests/cloud-mirror-live.test.ts (3 tests | 3 skipped) 10009ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-completion-recovery.test.ts (5 tests | 5 failed) 65ms - × reuses the committed detail after the redaction environment rotates 19ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × commits the verdict once, and a clean re-execution reads it back 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × recovers a committed verdict when a no-detail retry follows a pre-marker loss 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × reuses the admitted marker when a no-detail retry follows a post-marker loss 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × leaves a one-argument done() writing nothing to the verdict stream 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/backlog-picker-flow.test.ts (6 tests) 298ms - ✓ tests/hosted-extension-protocol-intrinsics.test.ts (6 tests) 13ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/budget-unmetered-live.test.ts (4 tests | 4 failed) 57ms - × unmetered budget spend through the live kernel > runs an unpriced step under a dollar budget without tripping it, journaling unknown dollars 17ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × unmetered budget spend through the live kernel > journals an unpriced claude step's reported cost beside unchanged metered usage, and the verdict is unchanged 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × unmetered budget spend through the live kernel > still counts an unpriced step toward a token budget 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × unmetered budget spend through the live kernel > accrues a priced step and stops the run when it crosses the dollar budget 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/preflight-permissions-unenforced.test.ts (17 tests) 527ms - ✓ an authored TypeScript body is out of reach, and spec.ts says so > checks clean on a .flow.ts whose body declares permissions 479ms + ✓ the remedy on a worker park > follows a step through a retry backoff longer than the unclassified bound 3005ms + ✓ the remedy on a worker park > follows a run.start outcome that is already running on a retried attempt 502ms + ✓ tests/authored-completion-recovery.test.ts (5 tests) 461ms + ✓ tests/backlog-picker-flow.test.ts (6 tests) 266ms + ✓ tests/hosted-extension-protocol-intrinsics.test.ts (6 tests) 12ms + ✓ tests/preflight-permissions-unenforced.test.ts (17 tests) 546ms + ✓ an authored TypeScript body is out of reach, and spec.ts says so > checks clean on a .flow.ts whose body declares permissions 498ms + ✓ tests/budget-unmetered-live.test.ts (4 tests) 1327ms + ✓ unmetered budget spend through the live kernel > runs an unpriced step under a dollar budget without tripping it, journaling unknown dollars 406ms + ✓ unmetered budget spend through the live kernel > journals an unpriced claude step's reported cost beside unchanged metered usage, and the verdict is unchanged 347ms + ✓ unmetered budget spend through the live kernel > still counts an unpriced step toward a token budget 301ms + ✓ tests/stuck-run-triage.test.ts (22 tests) 3108ms + ✓ stuck-run-triage shell text > collects tails with no GNU timeout on PATH, as on a stock macOS 3065ms ✓ tests/hosted-extension-routing.test.ts (7 tests) 8ms - ✓ tests/webhook.test.ts (9 tests) 839ms - ✓ webhook ingress > checks TS declarations against flows.json without invoking handlers 766ms + ✓ tests/webhook.test.ts (9 tests) 786ms + ✓ webhook ingress > checks TS declarations against flows.json without invoking handlers 701ms ✓ tests/redact.test.ts (54 tests) 10ms - ✓ tests/stuck-run-triage.test.ts (22 tests) 3114ms - ✓ stuck-run-triage shell text > collects tails with no GNU timeout on PATH, as on a stock macOS 3074ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-advisory-run-live.test.ts (16 tests | 8 failed) 114ms - × a recorded nonzero f.run through the live kernel > resolves to the journaled exit code instead of ending the flow 19ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > resolves a green command through the same policy 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > leaves the default fatal and still resolving to the stdout string 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > still fails a timeout, which recorded no exit code to report 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > still fails a declared named gate on a recorded step whose producer succeeded 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > still fails a declared named gate on a default step whose producer succeeded 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > hands a predicate gate the recorded result, not the stdout string 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a recorded nonzero f.run through the live kernel > refuses a policy value the kernel enum does not name, before journaling anything 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/cli-probe.test.ts (17 tests) 1905ms - ✓ tests/cli-watch.test.ts (10 tests) 16519ms - ✓ flows check --watch > rechecks syntax errors, clears once, and returns the last refusal on Ctrl-C 1366ms - ✓ flows check --watch > streams JSON lines without ANSI, recovers after atomic saves, and exits zero after repair 1893ms - ✓ flows check --watch > coalesces 20 concurrent saves into at most two rechecks 1890ms - ✓ flows check --watch > watches transitive relative use imports, cycles, and nearest config changes 2452ms - ✓ flows check --watch > refreshes the import graph and notices missing imports being created 2448ms - ✓ flows check --watch > reloads authored TypeScript instead of reusing the first imported definition 1842ms - ✓ flows check --watch > detects a nearer config appearing and falls back after it is deleted 1922ms - ✓ flows check --watch > keeps watching after the target is deleted and recreated 1925ms - ✓ flows check --watch > queues changes during a slow check without overlapping checks 778ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/human-live.test.ts (3 tests | 3 failed) 49ms - × f.human against a real daemon > parks with the question, refuses wrong answers, records one, and resumes to success 21ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × f.human against a real daemon > a "no" is a value the body branches on: declined, exit 0, no effect 15ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - × f.human against a real daemon > refuses to answer a run the daemon does not know 13ms - → Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ✓ tests/check-worker-surface.test.ts (11 tests) 88ms - ✓ tests/authored-step-failed.test.ts (10 tests) 39ms -(node:22107) ExperimentalWarning: SQLite is an experimental feature and might change at any time + ✓ tests/cli-probe.test.ts (17 tests) 1835ms + ✓ tests/authored-advisory-run-live.test.ts (16 tests) 697ms + ✓ tests/webhook-live.test.ts (6 tests) 9822ms + ✓ executes and deduplicates 'app_mention' only for its provider and matching payload 1480ms + ✓ executes and deduplicates 'reaction_added' only for its provider and matching payload 1473ms + ✓ executes and deduplicates 'pull_request' only for its provider and matching payload 1474ms + ✓ flows serve-webhook writes JSON before the daemon starts, then journals and archives exactly once 1459ms + ✓ replays a dropped file after SIGKILL before spawn 473ms + ✓ resumes the same journal after SIGKILL after spawn and before acknowledgement 3463ms + ✓ tests/local-agent-live.test.ts (7 tests) 42019ms + ✓ built CLI local agent against a real daemon > dispatches through the wrapper and keeps --json stdout report-shaped 774ms + ✓ built CLI local agent against a real daemon > runs beyond the initial 30-second lease without a second invocation 35832ms + ✓ built CLI local agent against a real daemon > renders actual agent completion in text output 750ms + ✓ built CLI local agent against a real daemon > returns a failed run when the agent process fails 784ms + ✓ built CLI local agent against a real daemon > prints a remedy that runs the parked authored flow to completion 1423ms + ✓ built CLI local agent against a real daemon > prints a remedy that runs, for a run started from an input file too long to be one 1838ms + ✓ built CLI local agent against a real daemon > refuses a workspace it cannot pin before invoking the agent 618ms + ✓ tests/cli-watch.test.ts (10 tests) 17299ms + ✓ flows check --watch > rechecks syntax errors, clears once, and returns the last refusal on Ctrl-C 1393ms + ✓ flows check --watch > streams JSON lines without ANSI, recovers after atomic saves, and exits zero after repair 1969ms + ✓ flows check --watch > coalesces 20 concurrent saves into at most two rechecks 1970ms + ✓ flows check --watch > watches transitive relative use imports, cycles, and nearest config changes 2488ms + ✓ flows check --watch > refreshes the import graph and notices missing imports being created 2551ms + ✓ flows check --watch > reloads authored TypeScript instead of reusing the first imported definition 1950ms + ✓ flows check --watch > detects a nearer config appearing and falls back after it is deleted 2192ms + ✓ flows check --watch > keeps watching after the target is deleted and recreated 2006ms + ✓ flows check --watch > queues changes during a slow check without overlapping checks 775ms + ✓ tests/human-live.test.ts (3 tests) 6800ms + ✓ f.human against a real daemon > parks with the question, refuses wrong answers, records one, and resumes to success 4145ms + ✓ f.human against a real daemon > a "no" is a value the body branches on: declined, exit 0, no effect 1599ms + ✓ f.human against a real daemon > refuses to answer a run the daemon does not know 1054ms + ✓ tests/check-worker-surface.test.ts (11 tests) 87ms +(node:89545) ExperimentalWarning: SQLite is an experimental feature and might change at any time (Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/authored-status-detail.test.ts (20 tests) 72ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-parallel-agents.test.ts (8 tests | 8 failed) 104ms - × authored steps under local workers with capacity > runs more concurrent f.llm calls than the worker holds side by side, never more than its capacity 17ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > completes more concurrent f.agent calls than the worker holds: the overflow waits for a slot instead of parking 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > runs agents in distinct working directories side by side (the kernel carries cwd) 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > serializes agents whose cwd is a symlink alias of the same directory 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > serializes agents whose cwd is a directory nested inside the other 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > never starts queued agents once the body has failed 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > never starts a queued agent when the agent holding the only slot fails 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored steps under local workers with capacity > parks the overflow when the body is not told the capacity (the defect this closes) 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/budget-preflight.test.ts (25 tests) 16ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-retried-child-resume-live.test.ts (2 tests | 2 failed) 32ms - × an authored step whose child run retried an attempt > resumes after a kill mid-step and reads the terminal completion, not the crashed one 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × an authored step whose child run retried an attempt > reads the terminal completion with no daemon restart or flows resume, when a worker died mid-attempt 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/shipped-source-flow-header-provenance.test.ts (1 test) 2652ms - ✓ shipped-source flow header provenance > fails closed for unsafe authored and declarative headers 2651ms - ✓ tests/provider-trigger-contract.test.ts (7 tests) 823ms - ✓ provider trigger contract > accepts one subscription from each of five providers and refuses a bogus event on any of them 480ms - ✓ provider trigger contract > fails `flows check` before deployment and passes once the event is real 337ms - ✓ tests/work-package-consumer.test.ts (13 tests) 129ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/yaml-local-agent-live.test.ts (9 tests | 9 failed) 116ms - × YAML --local-agent through the built CLI and real daemon > runs with the checked step CLI and model and journals done 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > runs with the checked named CLI and model and journals done 15ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > runs with the checked project CLI and model and journals done 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > still parks without --local-agent 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > resumes a parked spec run with --local-agent instead of parking identically again 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > parks a second time with a different message when the attached worker is not eligible 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > reports the agent process failure 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML --local-agent through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/helpers-fanout.test.ts (96 tests) 161ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-step-graph-live.test.ts (1 test | 1 failed) 18ms - × the authored step DAG through the live kernel > carries labels and predecessors on every index record and journal step, ids unchanged 17ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/named-gate-journal.test.ts (5 tests | 5 failed) 71ms - × a lowered subprocess_gate journals the gate command's streams > keeps both tails on a FAILING gate, the case the operator has nothing else for 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a lowered subprocess_gate journals the gate command's streams > keeps both tails on a PASSING gate, so a gate that passed for the wrong reason is inspectable 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a lowered subprocess_gate journals the gate command's streams > journals the diagnostic when the gate never reached the command 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a lowered subprocess_gate journals the gate command's streams > persists what the gate printed before a timeout killed it 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × a gate on an agent step > journals the command's streams and surfaces them in the authored failure 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/generate-triggers.test.ts (7 tests) 1058ms - ✓ discovers new adapters, preserves exact event names, and prefers adapter-local mappings 330ms - ✓ tests/local-agent-remedy.test.ts (16 tests) 17ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-detail-live.test.ts (3 tests | 3 failed) 44ms - × carries done("step_failed", { detail }) into the report, the journal and flows status 17ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × reports a detail a caller sliced through an emoji, instead of hanging on it 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × leaves a one-argument done("step_failed") reporting exactly as it always did 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/yaml-helpers.test.ts (34 tests) 68ms - ✓ tests/direct-run-failure.test.ts (12 tests) 18ms - ✓ tests/authored-agent-permissions.test.ts (27 tests) 898ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/worker-lease-drift-live.test.ts (3 tests | 3 failed) 51ms - × worker lease under clock skew between worker and daemon > holds the lease when the worker clock runs 45s ahead of the daemon 24ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × worker lease under clock skew between worker and daemon > renews before the daemon deadline when the worker clock runs 75s behind the daemon 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × attempt accounting after a lost worker > does not report attempt=2/1 when the first attempt died uncharged 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ tests/live-event-activities.test.ts (2 tests | 2 failed) 5ms - × runs surface f.on through the local daemon event path and journals its buffered wake 4ms - → relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd - × survives SIGKILL after stream.appended and delivers the frame once after daemon restart 1ms - → relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd - ✓ tests/software-garden-babysitter-composition.test.ts (6 tests | 2 skipped) 46ms - ✓ tests/worker-lease.test.ts (7 tests) 19ms - ✓ tests/worker-lease-lost.test.ts (17 tests) 24ms - ✓ tests/webhook-hardening.test.ts (11 tests) 59ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-probe-cache.test.ts (5 tests | 5 failed) 71ms - × authored run CLI probe cache > nine calls have no expired attempts at capacity 1 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored run CLI probe cache > nine calls have no expired attempts at capacity 4 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored run CLI probe cache > does not serialize nine starts behind nine probes, and probes again on a new run 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored run CLI probe cache > caches probe failures while refusing all nine calls 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored run CLI probe cache > shares probe results across agent calls too 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/yaml-declared-streams-live.test.ts (8 tests | 8 failed) 106ms - × YAML declared streams through the built CLI and real daemon > runs with the checked step CLI and model and journals done 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > runs with the checked named CLI and model and journals done 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > runs with the checked project CLI and model and journals done 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > still parks without --local-agent 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > reports the agent process failure 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > resumes the journaled stream declarations after the input YAML changes 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × YAML declared streams through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/human-to.test.ts (8 tests) 13ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-dispatch-live.test.ts (2 tests | 2 failed) 33ms - × durable child flow dispatch > runs a declared child in the parent DAG and replays it without repeating effects 19ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × durable child flow dispatch > lowers a named gate attached to the dispatch receipt 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ tests/plugin-loader.test.ts (9 tests | 1 failed) 2170ms - × journals plugin effect input and receipt through the daemon 2041ms - → journal client: connect failed: connect ENOENT /tmp/relayflowd-4a13addfaf96.sock -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/step-lease.test.ts (36 tests | 4 failed) 98ms - × f.run leases against the live kernel > enforces 10000 ms for 'sleep 5; printf ok' 19ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × f.run leases against the live kernel > enforces 40000 ms for 'sleep 31; printf ok' 14ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × f.run leases against the live kernel > enforces 30000 ms for 'sleep 31; printf ok' 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × f.run leases against the live kernel > enforces 100 ms for 'sleep 5' 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/deploy.test.ts (11 tests) 5415ms - ✓ flows deploy file buckets > publishes the full signed layout byte-for-byte and redeploys as a noop 853ms - ✓ flows deploy file buckets > answers --json with one object per outcome 857ms - ✓ flows deploy file buckets > reports a refusal as JSON under --json 399ms - ✓ flows deploy file buckets > refuses a missing local bundle before creating the bucket 390ms - ✓ flows deploy file buckets > refuses an unreachable bucket before copying 417ms - ✓ flows deploy file buckets > refuses an unwritable bucket 414ms - ✓ flows deploy file buckets > refuses local tampering of spec.canonical.json 389ms - ✓ flows deploy file buckets > refuses local tampering of identity.json 418ms - ✓ flows deploy file buckets > refuses asset bundles instead of using daemon-relative files 417ms - ✓ flows deploy file buckets > never labels a corrupt existing deployment as a noop 824ms - ✓ tests/bin.test.ts (12 tests) 6056ms - ✓ built flows binary > prints the installed SDK version for --version 382ms - ✓ built flows binary > prints the installed SDK version for -V 396ms - ✓ built flows binary > keeps version flags strict when extra arguments are supplied 396ms - ✓ built flows binary > prints the installed SDK version from the standalone binary for --version 983ms - ✓ built flows binary > prints the installed SDK version from the standalone binary for -V 966ms - ✓ built flows binary > refuses through a symlink to the built artifact 401ms + ✓ tests/authored-status-detail.test.ts (20 tests) 81ms + ✓ tests/authored-step-failed.test.ts (10 tests) 53ms + ✓ tests/budget-preflight.test.ts (25 tests) 18ms + ✓ tests/authored-retried-child-resume-live.test.ts (2 tests) 1385ms + ✓ an authored step whose child run retried an attempt > resumes after a kill mid-step and reads the terminal completion, not the crashed one 1270ms + ✓ tests/shipped-source-flow-header-provenance.test.ts (1 test) 2617ms + ✓ shipped-source flow header provenance > fails closed for unsafe authored and declarative headers 2616ms + ✓ tests/provider-trigger-contract.test.ts (7 tests) 818ms + ✓ provider trigger contract > accepts one subscription from each of five providers and refuses a bogus event on any of them 495ms + ✓ provider trigger contract > fails `flows check` before deployment and passes once the event is real 318ms + ✓ tests/work-package-consumer.test.ts (13 tests) 115ms + ✓ tests/authored-parallel-agents.test.ts (8 tests) 9056ms + ✓ authored steps under local workers with capacity > runs more concurrent f.llm calls than the worker holds side by side, never more than its capacity 1112ms + ✓ authored steps under local workers with capacity > completes more concurrent f.agent calls than the worker holds: the overflow waits for a slot instead of parking 1484ms + ✓ authored steps under local workers with capacity > runs agents in distinct working directories side by side (the kernel carries cwd) 631ms + ✓ authored steps under local workers with capacity > serializes agents whose cwd is a symlink alias of the same directory 1024ms + ✓ authored steps under local workers with capacity > serializes agents whose cwd is a directory nested inside the other 1046ms + ✓ authored steps under local workers with capacity > never starts queued agents once the body has failed 1577ms + ✓ authored steps under local workers with capacity > never starts a queued agent when the agent holding the only slot fails 1592ms + ✓ authored steps under local workers with capacity > parks the overflow when the body is not told the capacity (the defect this closes) 588ms + ✓ tests/helpers-fanout.test.ts (96 tests) 173ms +(node:90322) ExperimentalWarning: SQLite is an experimental feature and might change at any time +(Use `node --trace-warnings ...` to show where the warning was created) + ✓ tests/authored-step-graph-live.test.ts (1 test) 878ms + ✓ the authored step DAG through the live kernel > carries labels and predecessors on every index record and journal step, ids unchanged 877ms + ✓ tests/yaml-local-agent-live.test.ts (9 tests) 6155ms + ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked step CLI and model and journals done 606ms + ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked named CLI and model and journals done 604ms + ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 613ms + ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked project CLI and model and journals done 608ms + ✓ YAML --local-agent through the built CLI and real daemon > still parks without --local-agent 568ms + ✓ YAML --local-agent through the built CLI and real daemon > resumes a parked spec run with --local-agent instead of parking identically again 1037ms + ✓ YAML --local-agent through the built CLI and real daemon > parks a second time with a different message when the attached worker is not eligible 972ms + ✓ YAML --local-agent through the built CLI and real daemon > reports the agent process failure 608ms + ✓ YAML --local-agent through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 537ms + ✓ tests/named-gate-journal.test.ts (5 tests) 1735ms + ✓ a lowered subprocess_gate journals the gate command's streams > persists what the gate printed before a timeout killed it 800ms + ✓ a gate on an agent step > journals the command's streams and surfaces them in the authored failure 703ms + ✓ tests/local-agent-remedy.test.ts (16 tests) 14ms + ✓ tests/generate-triggers.test.ts (7 tests) 1223ms + ✓ discovers new adapters, preserves exact event names, and prefers adapter-local mappings 350ms + ✓ tests/yaml-helpers.test.ts (34 tests) 65ms + ✓ tests/direct-run-failure.test.ts (12 tests) 26ms + ✓ tests/authored-agent-permissions.test.ts (27 tests) 910ms + ✓ tests/authored-detail-live.test.ts (3 tests) 3769ms + ✓ carries done("step_failed", { detail }) into the report, the journal and flows status 2143ms + ✓ reports a detail a caller sliced through an emoji, instead of hanging on it 601ms + ✓ leaves a one-argument done("step_failed") reporting exactly as it always did 1024ms + ✓ tests/live-event-activities.test.ts (2 tests) 195ms + ❯ tests/software-garden-babysitter-composition.test.ts (6 tests | 2 failed) 517ms + × canonical Software Garden + Babysitter composition > executes the pinned composition and preserves queued/duplicate replay receipts 235ms + → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + × canonical Software Garden + Babysitter composition > propagates capability denial without a retry or fallback 234ms + → expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: live babysit label is absent // Object.is equality + ✓ tests/worker-lease.test.ts (7 tests) 13ms + ✓ tests/worker-lease-lost.test.ts (17 tests) 17ms + ✓ tests/webhook-hardening.test.ts (11 tests) 60ms + ✓ tests/authored-probe-cache.test.ts (5 tests) 21215ms + ✓ authored run CLI probe cache > nine calls have no expired attempts at capacity 1 7417ms + ✓ authored run CLI probe cache > nine calls have no expired attempts at capacity 4 5454ms + ✓ authored run CLI probe cache > does not serialize nine starts behind nine probes, and probes again on a new run 6667ms + ✓ authored run CLI probe cache > caches probe failures while refusing all nine calls 401ms + ✓ authored run CLI probe cache > shares probe results across agent calls too 1275ms + ✓ tests/yaml-declared-streams-live.test.ts (8 tests) 5193ms + ✓ YAML declared streams through the built CLI and real daemon > runs with the checked step CLI and model and journals done 635ms + ✓ YAML declared streams through the built CLI and real daemon > runs with the checked named CLI and model and journals done 614ms + ✓ YAML declared streams through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 622ms + ✓ YAML declared streams through the built CLI and real daemon > runs with the checked project CLI and model and journals done 607ms + ✓ YAML declared streams through the built CLI and real daemon > still parks without --local-agent 560ms + ✓ YAML declared streams through the built CLI and real daemon > reports the agent process failure 602ms + ✓ YAML declared streams through the built CLI and real daemon > resumes the journaled stream declarations after the input YAML changes 1015ms + ✓ YAML declared streams through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 538ms + ✓ tests/human-to.test.ts (8 tests) 12ms +(node:92376) ExperimentalWarning: SQLite is an experimental feature and might change at any time +(Use `node --trace-warnings ...` to show where the warning was created) + ✓ tests/authored-dispatch-live.test.ts (2 tests) 2459ms + ✓ durable child flow dispatch > runs a declared child in the parent DAG and replays it without repeating effects 1682ms + ✓ durable child flow dispatch > lowers a named gate attached to the dispatch receipt 775ms + ✓ tests/plugin-loader.test.ts (9 tests) 171ms + ✓ tests/worker-lease-drift-live.test.ts (3 tests) 36167ms + ✓ worker lease under clock skew between worker and daemon > renews before the daemon deadline when the worker clock runs 75s behind the daemon 36053ms + ✓ tests/deploy.test.ts (11 tests) 5539ms + ✓ flows deploy file buckets > publishes the full signed layout byte-for-byte and redeploys as a noop 881ms + ✓ flows deploy file buckets > answers --json with one object per outcome 839ms + ✓ flows deploy file buckets > reports a refusal as JSON under --json 411ms + ✓ flows deploy file buckets > refuses a missing local bundle before creating the bucket 413ms + ✓ flows deploy file buckets > refuses an unreachable bucket before copying 422ms + ✓ flows deploy file buckets > refuses an unwritable bucket 435ms + ✓ flows deploy file buckets > refuses local tampering of spec.canonical.json 428ms + ✓ flows deploy file buckets > refuses local tampering of identity.json 392ms + ✓ flows deploy file buckets > refuses asset bundles instead of using daemon-relative files 412ms + ✓ flows deploy file buckets > never labels a corrupt existing deployment as a noop 867ms + ✓ tests/bin.test.ts (12 tests) 5534ms + ✓ built flows binary > prints the installed SDK version for --version 407ms + ✓ built flows binary > prints the installed SDK version for -V 399ms + ✓ built flows binary > keeps version flags strict when extra arguments are supplied 395ms + ✓ built flows binary > prints the installed SDK version from the standalone binary for --version 885ms + ✓ built flows binary > prints the installed SDK version from the standalone binary for -V 844ms + ✓ built flows binary > refuses through a symlink to the built artifact 417ms ✓ built flows binary > refuses through a symlinked directory component 409ms - ✓ built flows binary > classifies a signal-terminated auth probe as probe_failed 924ms - ✓ built flows binary > classifies an unavailable PATH resolver as probe_failed 397ms - ✓ built flows binary > does not describe a present non-executable CLI as missing 402ms - ✓ built flows binary > runs one auth probe for three steps sharing a flow CLI 397ms - ✓ tests/babysitter-catalog-export.test.ts (14 tests) 771ms - ✓ Babysitter catalog artifact export > CLI refuses an existing output and leaves no file on validation failure 627ms + ✓ built flows binary > classifies a signal-terminated auth probe as probe_failed 509ms + ✓ built flows binary > classifies an unavailable PATH resolver as probe_failed 423ms + ✓ built flows binary > does not describe a present non-executable CLI as missing 405ms + ✓ built flows binary > runs one auth probe for three steps sharing a flow CLI 436ms + ✓ tests/babysitter-catalog-export.test.ts (14 tests) 836ms + ✓ Babysitter catalog artifact export > CLI refuses an existing output and leaves no file on validation failure 673ms ✓ tests/communication.test.ts (10 tests) 13ms - ✓ tests/communication-review.test.ts (6 tests) 337ms - ✓ tests/transport-evidence-bounds.test.ts (7 tests) 10ms - ✓ tests/typed-output.test.ts (14 tests) 199ms - ❯ tests/webhook-live.test.ts (6 tests | 6 failed) 62741ms - × executes and deduplicates 'app_mention' only for its provider and matching payload 10483ms - → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × executes and deduplicates 'reaction_added' only for its provider and matching payload 10451ms - → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × executes and deduplicates 'pull_request' only for its provider and matching payload 10487ms - → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × flows serve-webhook writes JSON before the daemon starts, then journals and archives exactly once 10457ms - → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × replays a dropped file after SIGKILL before spawn 10428ms - → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × resumes the same journal after SIGKILL after spawn and before acknowledgement 10435ms - → webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ❯ tests/effect-channel.test.ts (5 tests | 4 failed) 11ms - × journals one post across interruption before none 4ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × journals one post across interruption before record 0ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × journals one post across interruption before confirm 0ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - × journals one post across interruption before complete 0ms - → Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality + ✓ tests/communication-review.test.ts (6 tests) 335ms + ✓ tests/transport-evidence-bounds.test.ts (7 tests) 9ms + ✓ tests/typed-output.test.ts (14 tests) 195ms + ✓ tests/shipped-source-models.test.ts (2 tests) 33411ms + ✓ first-party shipped source model pins > gives every TypeScript agent and LLM an explicit supported pair or a pinned named-agent declaration 33369ms + ✓ tests/effect-channel.test.ts (5 tests) 326ms ✓ tests/worker-slots.test.ts (8 tests) 7ms - ✓ tests/json-schema-bound.test.ts (71 tests) 2371ms - ✓ JSON Schema termination bound > walks a deep schema with an explicit stack rather than recursion 1953ms - ✓ tests/communication-worker.test.ts (17 tests) 1711ms - ✓ tests/cloud-mirror-transport.test.ts (5 tests) 10ms - ✓ tests/mcp-lifecycle.test.ts (4 tests) 12ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-parallel-llm.test.ts (6 tests | 6 failed) 83ms - × parallel llm capacity 1 > deduplicates concurrent preflight probes 17ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × parallel llm capacity 1 > completes nine calls without expired child leases during slow preflight 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × parallel llm capacity 1 > keeps the durable root lease alive across two cold models 15ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × parallel llm capacity 4 > deduplicates concurrent preflight probes 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × parallel llm capacity 4 > completes nine calls without expired child leases during slow preflight 11ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × parallel llm capacity 4 > keeps the durable root lease alive across two cold models 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - + ✓ tests/json-schema-bound.test.ts (71 tests) 2302ms + ✓ JSON Schema termination bound > walks a deep schema with an explicit stack rather than recursion 1851ms + ✓ tests/communication-worker.test.ts (17 tests) 1719ms + ✓ tests/cloud-mirror-transport.test.ts (5 tests) 7ms + ✓ tests/mcp-lifecycle.test.ts (4 tests) 13ms + ✓ tests/step-lease.test.ts (36 tests) 66422ms + ✓ f.run leases against the live kernel > enforces 10000 ms for 'sleep 5; printf ok' 5064ms + ✓ f.run leases against the live kernel > enforces 40000 ms for 'sleep 31; printf ok' 31070ms + ✓ f.run leases against the live kernel > enforces 30000 ms for 'sleep 31; printf ok' 30100ms ✓ tests/model-selection.test.ts (10 tests) 17ms - ✓ tests/f-memory.test.ts (7 tests) 838ms + ✓ tests/f-memory.test.ts (7 tests) 883ms ✓ tests/relayflowd-path.test.ts (10 tests) 5ms - ✓ tests/agent-artifacts.test.ts (9 tests) 16ms - ✓ tests/authored-plugin-effect.test.ts (6 tests) 72ms - ✓ tests/hosted-hardening.test.ts (11 tests) 14ms - ✓ tests/local-dev-ux.test.ts (8 tests) 23ms - ✓ tests/authored-preflight.test.ts (5 tests) 229ms - ✓ tests/deterministic-llm.test.ts (5 tests) 63ms - ↓ tests/relay-cli-surface-live.test.ts (3 tests | 3 skipped) - ✓ tests/authored-declined.test.ts (13 tests) 53ms + ✓ tests/agent-artifacts.test.ts (9 tests) 17ms + ✓ tests/authored-plugin-effect.test.ts (6 tests) 58ms + ✓ tests/hosted-hardening.test.ts (11 tests) 15ms + ✓ tests/local-dev-ux.test.ts (8 tests) 18ms + ✓ tests/authored-preflight.test.ts (5 tests) 222ms + ✓ tests/deterministic-llm.test.ts (5 tests) 52ms + ✓ tests/relay-cli-surface-live.test.ts (3 tests) 413ms + ✓ tests/authored-declined.test.ts (13 tests) 57ms ✓ tests/resume-failure.test.ts (2 tests) 5ms - ✓ tests/dependency-validation.test.ts (6 tests) 717ms - ✓ dependency validation > accepts a valid 10,000-step reverse chain through every direct public boundary 397ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/worker-lease-lost-live.test.ts (3 tests | 3 failed) 45ms - × reports journal success after completion rejects with lease_conflict 19ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × reports journal success after completion rejects with run_terminal 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × reports journal success when a renewal rejects after completion landed 12ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/authored-hooks.test.ts (5 tests) 7ms - ✓ tests/input-binding.test.ts (12 tests) 208ms - ✓ tests/yaml-helper-effect.test.ts (4 tests) 75ms - ✓ tests/cloud-mirror-ledger.test.ts (7 tests) 1315ms - ✓ the mirror ledger > keeps the newest entries when the count cap bites 1302ms + ✓ tests/dependency-validation.test.ts (6 tests) 744ms + ✓ dependency validation > accepts a valid 10,000-step reverse chain through every direct public boundary 409ms + ✓ tests/worker-lease-lost-live.test.ts (3 tests) 800ms + ✓ tests/authored-hooks.test.ts (5 tests) 5ms + ✓ tests/input-binding.test.ts (12 tests) 223ms + ✓ tests/yaml-helper-effect.test.ts (4 tests) 74ms + ✓ tests/cloud-mirror-ledger.test.ts (7 tests) 1170ms + ✓ the mirror ledger > keeps the newest entries when the count cap bites 1156ms ✓ tests/scope-preflight.test.ts (6 tests) 10ms - ✓ tests/run-from-digest.test.ts (6 tests) 4946ms - ✓ flows run digest input > submits the sealed canonical spec through the normal journal path without checkout 469ms - ✓ flows run digest input > uses a verified cache hit even after the bucket is removed 443ms - ✓ flows run digest input > resolves deploy.bucket from flows.json and honors explicit override 1272ms - ✓ flows run digest input > refuses an unconfigured bucket 825ms - ✓ flows run digest input > refuses tampered spec.canonical.json before creating run data 988ms - ✓ flows run digest input > refuses tampered identity.json before creating run data 949ms - ✓ tests/build-gate.test.ts (3 tests) 1250ms - ✓ flows build gates on flows check green (#318) > refuses a flow with an unresolvable named-agent CLI and leaves no artifacts 414ms - ✓ flows build gates on flows check green (#318) > --json emits one CheckReport object on stdout on refusal, exits 2, no artifacts 412ms - ✓ flows build gates on flows check green (#318) > builds the bundle on success (regression: gate must not block valid flows) 423ms - ✓ tests/scope-compiler.test.ts (25 tests) 11ms - ✓ tests/shipped-source-models.test.ts (2 tests) 35521ms - ✓ first-party shipped source model pins > gives every TypeScript agent and LLM an explicit supported pair or a pinned named-agent declaration 35479ms - ✓ tests/hn-poller.test.ts (6 tests) 7ms - ✓ tests/worker-cli-abort.test.ts (3 tests) 3884ms - ✓ stops claude and its process group when lease ownership is lost 1389ms - ✓ stops wrapper.mjs and its process group when lease ownership is lost 1443ms - ✓ fails closed when abort cannot prove the process group is gone 1051ms - ✓ tests/authored-step-failed-exit.test.ts (3 tests) 9ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/retried-step-failure.test.ts (1 test | 1 failed) 21ms - × a retried step failing differently through the live kernel > reports both attempts and says the evidence differs 20ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/dir-watcher-poller.test.ts (6 tests) 4ms - ✓ tests/subscription-report.test.ts (8 tests) 5ms - ✓ tests/plugin-add.test.ts (7 tests) 1397ms - ✓ typechecks the augmented verb and rejects unknown namespaces 1084ms - ✓ tests/model-pricing.test.ts (10 tests) 7ms - ❯ tests/yaml-helper-live.test.ts (1 test | 1 failed) 19ms - × runs compiled YAML helpers through the built CLI and kernel effect journal 18ms - → error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -: expected 1 to be +0 // Object.is equality - ❯ tests/provider-trigger-executor.test.ts (4 tests | 3 failed) 16ms - × the kernel executes compiled 'app_mention' subscriptions with provider isolation and durable dedupe 9ms - → spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × the kernel executes compiled 'reaction_added' subscriptions with provider isolation and durable dedupe 2ms - → spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - × the kernel executes compiled 'pull_request' subscriptions with provider isolation and durable dedupe 2ms - → spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ✓ tests/journal-client-completion.test.ts (6 tests) 103ms - ✓ tests/authored-use-loader.test.ts (6 tests) 819ms - ✓ tests/wrapper-artifacts-cwd.test.ts (2 tests) 80ms - ✓ tests/hello-deterministic.test.ts (5 tests) 18ms - ✓ tests/worker-lease-sweep.test.ts (4 tests) 18ms - ✓ tests/transcript-tail-close.test.ts (2 tests) 1518ms - ✓ a stalled transcript-tail close > does not hold the spawn open past its bounded window 750ms - ✓ a stalled tail close beside a transcript that finished > still journals the transcript pointer 767ms - ✓ tests/transcript-exclusion-timeout.test.ts (1 test) 285ms - ✓ tests/cli-adapter.test.ts (4 tests) 5ms - ✓ tests/work-package-validator.test.ts (7 tests) 5ms - ✓ tests/communication-mixed-resume.test.ts (1 test) 173ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/authored-declined-live.test.ts (1 test | 1 failed) 18ms - × runs an input guard and resumes its completed declined root without repeated effects 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/activity-preflight.test.ts (10 tests) 23ms - ✓ tests/cli-answer.test.ts (15 tests) 9ms - ✓ tests/agent-relay-hardening.test.ts (12 tests) 13ms - ✓ tests/communication-preflight.test.ts (13 tests) 37ms - ✓ tests/bundle-preflight.test.ts (4 tests) 967ms - ✓ bundle execution preflight > ignores surrounding cache configuration on a verified cache hit 487ms - ✓ bundle execution preflight > uses the built alias for a nameless flow even in a digest-only cache directory 462ms - ↓ tests/real-cli-adapters.test.ts (3 tests | 3 skipped) - ✓ tests/memoization.test.ts (57 tests) 66ms - ✓ tests/local-agent-environment.test.ts (8 tests) 6ms - ✓ tests/fs-descriptor.test.ts (1 test) 5ms - ✓ tests/parse-json-output.test.ts (7 tests) 3ms - ✓ tests/reported-cost.test.ts (4 tests) 3ms - ✓ tests/journal-client-subscriptions.test.ts (1 test) 8ms - ✓ tests/authored-model-probe-kinds.test.ts (2 tests) 196ms - ✓ tests/communication-environment-preflight.test.ts (6 tests) 4ms -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - ❯ tests/budget-authored-live.test.ts (2 tests | 2 failed) 32ms - × authored budgets through the live kernel > retains the first completion and journals refusal of the next authored step 18ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - × authored budgets through the live kernel > permits done after the last valid step crosses the limit 13ms - → Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ✓ tests/shipped-source-call-array-forwarding.test.ts (1 test) 3338ms - ✓ shipped-source call-array forwarding > maps rest indexes and nested same-helper actuals for workers and flows 3337ms - ✓ tests/authored-surface-authority.test.ts (2 tests) 15ms - ✓ tests/slack-writeback.test.ts (1 test) 258ms - ✓ tests/adapters/claude.test.ts (7 tests) 5ms - ✓ tests/adapters/codex.test.ts (7 tests) 4ms - ✓ tests/worker-cli-cwd.test.ts (2 tests) 363ms - ✓ runAgentCli — cwd propagation (flows#357) > omits cwd when not provided (inherits parent cwd) 357ms - ✓ tests/slack-block-kit.test.ts (5 tests) 15ms - ✓ tests/communication-history.test.ts (1 test) 4ms - ✓ tests/resume-worker-lease.test.ts (2 tests) 4ms - ✓ tests/adapters/registry.test.ts (4 tests) 4ms - ✓ tests/shipped-source-parameter-provenance.test.ts (1 test) 1960ms - ✓ shipped-source parameter provenance > keeps caller-supplied identifier and destructured keys unknown 1959ms - ✓ tests/direct-run-worker-lease.test.ts (2 tests) 8ms - ✓ tests/authored-declined-report.test.ts (6 tests) 7ms - ✓ tests/promise-ancestry.test.ts (2 tests) 318ms - ✓ reachableTargets > handles more than 32 targets and a chain too deep for recursion 315ms - ✓ tests/communication-refusal.test.ts (1 test) 13ms - ✓ tests/agent-cwd-validation.test.ts (2 tests) 408ms - ✓ declarative agent cwd > is refused by `flows check` on a YAML flow before anything runs 404ms - ✓ tests/cli-cloud-mirror-flag.test.ts (4 tests) 3ms - ✓ tests/catalog-plugins.test.ts (2 tests) 3ms - ✓ tests/check-command-cwd.test.ts (1 test) 14ms - ✓ tests/communication-lazy.test.ts (1 test) 5ms - ✓ tests/cli-progress-wait.test.ts (2 tests) 4ms - ✓ tests/bundle-transport.test.ts (20 tests) 2625ms - ✓ digest references > accepts and deploys the build output for hello 475ms - ✓ digest references > accepts and deploys the build output for Hello 408ms - ✓ digest references > accepts and deploys the build output for hello.world 407ms - ✓ digest references > accepts and deploys the build output for hello_world 454ms - ✓ digest references > accepts and deploys the build output for 123 448ms - ✓ digest references > accepts and deploys the build output for A_b.c-1 432ms - ↓ tests/run-digest-live.test.ts (1 test | 1 skipped) - ✓ tests/placement.test.ts (54 tests) 19ms - ✓ tests/canonical-tree.test.ts (1 test) 2ms - ✓ tests/preflight-run-cache.test.ts (1 test) 7ms - ✓ tests/local-agent-stream-selection.test.ts (1 test) 6ms - ✓ tests/communication-tools.test.ts (1 test) 72ms - ✓ tests/authored-admission.test.ts (2 tests) 3ms - ✓ tests/memory.test.ts (18 tests) 8ms - ✓ tests/worker-platform.test.ts (1 test) 3ms -node:internal/modules/run_main:107 - triggerUncaughtException( - ^ - -AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: - -2 !== 4 - - at expectPark (file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:58:10) - at file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:63:3 { - generatedMessage: true, - code: 'ERR_ASSERTION', - actual: 2, - expected: 4, - operator: 'strictEqual', - diff: 'simple' -} - -Node.js v25.6.0 - ❯ tests/event-await-cli.test.ts (1 test | 1 failed) 619ms - × parks, restarts, and replays two event wakes through the actual CLI 619ms - → Command failed: /usr/local/share/nvm/versions/node/v25.6.0/bin/node /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs /home/daytona/.relayflow-v2-supervisor/durable/repository -node:internal/modules/run_main:107 - triggerUncaughtException( - ^ - -AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: - -2 !== 4 - - at expectPark (file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:58:10) - at file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:63:3 { - generatedMessage: true, - code: 'ERR_ASSERTION', - actual: 2, - expected: 4, - operator: 'strictEqual', - diff: 'simple' -} - -Node.js v25.6.0 - - ✓ tests/run-digest.test.ts (4 tests) 1681ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {invalid json 436ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{}} 406ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":123}} 422ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":""}} 416ms - -⎯⎯⎯⎯⎯⎯ Failed Suites 4 ⎯⎯⎯⎯⎯⎯⎯ - - FAIL tests/authored-node-runtime.test.ts [ tests/authored-node-runtime.test.ts ] -AssertionError: expected '1.3.6' to be '1.4.0' // Object.is equality - -Expected: "1.4.0" -Received: "1.3.6" - - ❯ tests/authored-node-runtime.test.ts:18:77 - 16| - 17| beforeAll(() => { - 18| expect(spawnSync(bun, ['--version'], { encoding: 'utf8' }).stdout.tr… - | ^ - 19| expect(existsSync(daemon), 'build the current kernel or set RELAYFLO… - 20| stage = mkdtempSync(join(tmpdir(), 'authored-standalone-build-')); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/177]⎯ - - FAIL tests/cloud-mirror-live.test.ts [ tests/cloud-mirror-live.test.ts ] -AssertionError: relayflowd at /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd — build it with (cd kernel && ../ops/cargo.sh build): expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ tests/cloud-mirror-live.test.ts:77:118 - 75| - 76| beforeAll(async () => { - 77| expect(existsSync(RELAYFLOWD), `relayflowd at ${RELAYFLOWD} — build … - | ^ - 78| expect(existsSync(BUILT_CLI), `built CLI at ${BUILT_CLI} — build it … - 79| - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/177]⎯ - - FAIL tests/cloud-mirror-live.test.ts [ tests/cloud-mirror-live.test.ts ] -Error: Hook timed out in 10000ms. -If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout". -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/177]⎯ - - FAIL tests/direct-input.test.ts [ tests/direct-input.test.ts ] -Error: relayflowd is not executable at /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd - ❯ requireExecutable tests/direct-input.test.ts:319:11 - 317| accessSync(path, constants.X_OK); - 318| } catch { - 319| throw new Error(`${label} is not executable at ${path}`); - | ^ - 320| } - 321| } - ❯ tests/direct-input.test.ts:32:3 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/177]⎯ - - FAIL tests/live-kernel.test.ts [ tests/live-kernel.test.ts ] -Error: LIVE_KERNEL_MISSING: RELAYFLOWD_BIN does not name an executable file: /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd. Build it with: (cd kernel && ../ops/cargo.sh build) - ❯ requireExecutable tests/live-kernel.test.ts:1876:11 - 1874| accessSync(path, constants.X_OK); - 1875| } catch { - 1876| throw new Error( - | ^ - 1877| `LIVE_KERNEL_MISSING: ${source} does not name an executable file… - 1878| ); - ❯ tests/live-kernel.test.ts:74:3 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/177]⎯ - -⎯⎯⎯⎯⎯⎯ Failed Tests 172 ⎯⎯⎯⎯⎯⎯ - - FAIL tests/agent-artifacts-live.test.ts > agent artifacts and gates through the built CLI, a real daemon and the local agent > journals the files the agent wrote, including under a dot-directory, and every artifact gate passes on that journal -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 - 29| })).target_directory, 'debug', 'relayflowd'); - 30| } catch (cause) { - 31| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 32| } - 33| } - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:122:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:122:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18966, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/177]⎯ - - FAIL tests/agent-artifacts-live.test.ts > agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run when the artifact_exists gate names a file the agent did not write -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 - 29| })).target_directory, 'debug', 'relayflowd'); - 30| } catch (cause) { - 31| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 32| } - 33| } - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:169:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:169:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18977, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/177]⎯ - - FAIL tests/agent-artifacts-live.test.ts > agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run with the author reason when a predicate gate returns false, journaling the verdict -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 - 29| })).target_directory, 'debug', 'relayflowd'); - 30| } catch (cause) { - 31| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 32| } - 33| } - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:186:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:186:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18988, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/177]⎯ - - FAIL tests/agent-artifacts-live.test.ts > review follow-ups > applies a predicate gate on a helper step too, and journals its verdict -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 - 29| })).target_directory, 'debug', 'relayflowd'); - 30| } catch (cause) { - 31| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 32| } - 33| } - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:208:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:208:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 18999, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/177]⎯ - - FAIL tests/agent-artifacts-live.test.ts > review follow-ups > records predicate verdicts on the root run so a resume reuses them instead of re-running the closure -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:31:11 - 29| })).target_directory, 'debug', 'relayflowd'); - 30| } catch (cause) { - 31| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 32| } - 33| } - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:221:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-artifacts-live.test.ts:25:28 - ❯ fixture tests/agent-artifacts-live.test.ts:52:22 - ❯ tests/agent-artifacts-live.test.ts:221:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19010, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/177]⎯ - - FAIL tests/agent-cwd-live.test.ts > agents drive two checkouts under one run root > runs each CLI in its declared directory, and the run is not refused as an unknown field -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 - 37| })).target_directory, 'debug', 'relayflowd'); - 38| } catch (cause) { - 39| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 40| } - 41| } - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:133:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:133:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19996, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/177]⎯ - - FAIL tests/agent-cwd-live.test.ts > agents drive two checkouts under one run root > gates on an artifact path relative to the agent directory -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 - 37| })).target_directory, 'debug', 'relayflowd'); - 38| } catch (cause) { - 39| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 40| } - 41| } - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:171:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:171:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20013, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/177]⎯ - - FAIL tests/agent-cwd-live.test.ts > a declaration this contract cannot honour is refused at its own edge > refuses a path that climbs out of the run root without starting a run at all -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 - 37| })).target_directory, 'debug', 'relayflowd'); - 38| } catch (cause) { - 39| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 40| } - 41| } - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:182:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:182:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20028, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/177]⎯ - - FAIL tests/agent-cwd-live.test.ts > a declaration this contract cannot honour is refused at its own edge > fails the step with the reason when the directory is not there, rather than running somewhere else -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-cwd-live.test.ts:39:11 - 37| })).target_directory, 'debug', 'relayflowd'); - 38| } catch (cause) { - 39| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 40| } - 41| } - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:200:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-cwd-live.test.ts:33:28 - ❯ fixture tests/agent-cwd-live.test.ts:64:22 - ❯ tests/agent-cwd-live.test.ts:200:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20039, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/177]⎯ - - FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > preserves structured agent failure details and its completed root index - FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > preserves structured llm failure details and its completed root index -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-transcript-live.test.ts:34:11 - 32| })).target_directory, 'debug', 'relayflowd'); - 33| } catch (cause) { - 34| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 35| } - 36| } - ❯ fixture tests/agent-transcript-live.test.ts:59:22 - ❯ tests/agent-transcript-live.test.ts:130:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-transcript-live.test.ts:28:28 - ❯ fixture tests/agent-transcript-live.test.ts:59:22 - ❯ tests/agent-transcript-live.test.ts:130:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19590, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/177]⎯ - - FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > journals the digest in trajectory_tail on a successful agent step and writes the file it points at -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-transcript-live.test.ts:34:11 - 32| })).target_directory, 'debug', 'relayflowd'); - 33| } catch (cause) { - 34| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 35| } - 36| } - ❯ fixture tests/agent-transcript-live.test.ts:59:22 - ❯ tests/agent-transcript-live.test.ts:154:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-transcript-live.test.ts:28:28 - ❯ fixture tests/agent-transcript-live.test.ts:59:22 - ❯ tests/agent-transcript-live.test.ts:154:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19612, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/177]⎯ - - FAIL tests/agent-transcript-live.test.ts > the transcript digest through the built CLI, a real daemon and the local agent > on a failed agent step, names the failure and the transcript in the terminal diagnostic, redacted -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/agent-transcript-live.test.ts:34:11 - 32| })).target_directory, 'debug', 'relayflowd'); - 33| } catch (cause) { - 34| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 35| } - 36| } - ❯ fixture tests/agent-transcript-live.test.ts:59:22 - ❯ tests/agent-transcript-live.test.ts:190:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/agent-transcript-live.test.ts:28:28 - ❯ fixture tests/agent-transcript-live.test.ts:59:22 - ❯ tests/agent-transcript-live.test.ts:190:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 19623, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > resolves to the journaled exit code instead of ending the flow -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:23:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > resolves a green command through the same policy -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:59:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > leaves the default fatal and still resolving to the stdout string -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:77:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > still fails a timeout, which recorded no exit code to report -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:95:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > still fails a declared named gate on a recorded step whose producer succeeded - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > still fails a declared named gate on a default step whose producer succeeded -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:121:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > hands a predicate gate the recorded result, not the stdout string -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:149:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/177]⎯ - - FAIL tests/authored-advisory-run-live.test.ts > a recorded nonzero f.run through the live kernel > refuses a policy value the kernel enum does not name, before journaling anything -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-advisory-run-live.test.ts:166:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[24/177]⎯ - - FAIL tests/authored-completion-recovery.test.ts > reuses the committed detail after the redaction environment rotates -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-completion-recovery.test.ts:81:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[25/177]⎯ - - FAIL tests/authored-completion-recovery.test.ts > commits the verdict once, and a clean re-execution reads it back -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-completion-recovery.test.ts:121:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[26/177]⎯ - - FAIL tests/authored-completion-recovery.test.ts > recovers a committed verdict when a no-detail retry follows a pre-marker loss -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-completion-recovery.test.ts:154:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[27/177]⎯ - - FAIL tests/authored-completion-recovery.test.ts > reuses the admitted marker when a no-detail retry follows a post-marker loss -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-completion-recovery.test.ts:195:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[28/177]⎯ - - FAIL tests/authored-completion-recovery.test.ts > leaves a one-argument done() writing nothing to the verdict stream -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-completion-recovery.test.ts:223:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[29/177]⎯ - - FAIL tests/authored-declined-live.test.ts > runs an input guard and resumes its completed declined root without repeated effects -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-declined-live.test.ts:9:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[30/177]⎯ - - FAIL tests/authored-detail-live.test.ts > carries done("step_failed", { detail }) into the report, the journal and flows status -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-detail-live.test.ts:21:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[31/177]⎯ - - FAIL tests/authored-detail-live.test.ts > reports a detail a caller sliced through an emoji, instead of hanging on it -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-detail-live.test.ts:93:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[32/177]⎯ - - FAIL tests/authored-detail-live.test.ts > leaves a one-argument done("step_failed") reporting exactly as it always did -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-detail-live.test.ts:113:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[33/177]⎯ - - FAIL tests/authored-dispatch-live.test.ts > durable child flow dispatch > runs a declared child in the parent DAG and replays it without repeating effects -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-dispatch-live.test.ts:17:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[34/177]⎯ - - FAIL tests/authored-dispatch-live.test.ts > durable child flow dispatch > lowers a named gate attached to the dispatch receipt -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-dispatch-live.test.ts:113:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[35/177]⎯ - - FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > snapshots structured posts into the journal and delivers the same Block Kit body -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-flow-slack.test.ts:48:67 - 46| - 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 50| children.push(daemon); - ❯ tests/authored-flow-slack.test.ts:73:30 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[36/177]⎯ - - FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > journals exactly one effect with the authored params and typed receipt, without network -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-flow-slack.test.ts:48:67 - 46| - 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 50| children.push(daemon); - ❯ tests/authored-flow-slack.test.ts:104:30 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[37/177]⎯ - - FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > replays after SIGKILL before confirm with the same token and one successful completion - FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > replays after SIGKILL before complete with the same token and one successful completion -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-flow-slack.test.ts:48:67 - 46| - 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 50| children.push(daemon); - ❯ tests/authored-flow-slack.test.ts:165:25 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[38/177]⎯ - - FAIL tests/authored-flow-slack.test.ts > authored Slack helper effects > writes two files for two calls and supports dm, reply, and react -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-flow-slack.test.ts:48:67 - 46| - 47| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 48| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 49| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 50| children.push(daemon); - ❯ tests/authored-flow-slack.test.ts:216:30 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[39/177]⎯ - - FAIL tests/authored-helpers.test.ts > lowers the named acceptance helpers and Slack to confirmed journal effects -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-helpers.test.ts:50:67 - 48| - 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 52| children.push(daemon); - ❯ tests/authored-helpers.test.ts:70:28 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[40/177]⎯ - - FAIL tests/authored-helpers.test.ts > runs every available provider through the real kernel and resumes completed effects without a second write -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-helpers.test.ts:50:67 - 48| - 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 52| children.push(daemon); - ❯ tests/authored-helpers.test.ts:91:28 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[41/177]⎯ - - FAIL tests/authored-helpers.test.ts > replays after SIGKILL before confirm with the same token and one successful completion - FAIL tests/authored-helpers.test.ts > replays after SIGKILL before complete with the same token and one successful completion -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-helpers.test.ts:50:67 - 48| - 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 52| children.push(daemon); - ❯ tests/authored-helpers.test.ts:130:25 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[42/177]⎯ - - FAIL tests/authored-helpers.test.ts > journals provider failure with worker_error and never confirms the effect -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ start tests/authored-helpers.test.ts:50:67 - 48| - 49| async function start(dataDir: string): Promise<{ daemon: ChildProcess;… - 50| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 51| const daemon = spawn(binary, ['--data-dir', dataDir, 'serve'], { std… - 52| children.push(daemon); - ❯ tests/authored-helpers.test.ts:181:57 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[43/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > runs more concurrent f.llm calls than the worker holds side by side, never more than its capacity -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:72:57 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[44/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > completes more concurrent f.agent calls than the worker holds: the overflow waits for a slot instead of parking -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:82:46 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[45/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > runs agents in distinct working directories side by side (the kernel carries cwd) -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:94:57 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[46/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > serializes agents whose cwd is a symlink alias of the same directory - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > serializes agents whose cwd is a directory nested inside the other -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:122:57 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[47/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > never starts queued agents once the body has failed -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:138:57 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[48/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > never starts a queued agent when the agent holding the only slot fails -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:158:57 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[49/177]⎯ - - FAIL tests/authored-parallel-agents.test.ts > authored steps under local workers with capacity > parks the overflow when the body is not told the capacity (the defect this closes) -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowAgents tests/authored-parallel-agents.test.ts:19:19 - ❯ tests/authored-parallel-agents.test.ts:167:46 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[50/177]⎯ - - FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 1 > deduplicates concurrent preflight probes - FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 4 > deduplicates concurrent preflight probes -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/authored-parallel-llm.test.ts:16:19 - ❯ tests/authored-parallel-llm.test.ts:81:24 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[51/177]⎯ - - FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 1 > completes nine calls without expired child leases during slow preflight - FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 4 > completes nine calls without expired child leases during slow preflight -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/authored-parallel-llm.test.ts:16:19 - ❯ tests/authored-parallel-llm.test.ts:93:24 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[52/177]⎯ - - FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 1 > keeps the durable root lease alive across two cold models - FAIL tests/authored-parallel-llm.test.ts > parallel llm capacity 4 > keeps the durable root lease alive across two cold models -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/authored-parallel-llm.test.ts:16:19 - ❯ tests/authored-parallel-llm.test.ts:106:24 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[53/177]⎯ - - FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > nine calls have no expired attempts at capacity 1 - FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > nine calls have no expired attempts at capacity 4 -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 - ❯ tests/authored-probe-cache.test.ts:76:64 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[54/177]⎯ - - FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > does not serialize nine starts behind nine probes, and probes again on a new run -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 - ❯ tests/authored-probe-cache.test.ts:96:45 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[55/177]⎯ - - FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > caches probe failures while refusing all nine calls -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 - ❯ tests/authored-probe-cache.test.ts:111:54 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[56/177]⎯ - - FAIL tests/authored-probe-cache.test.ts > authored run CLI probe cache > shares probe results across agent calls too -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ slowProbe tests/authored-probe-cache.test.ts:20:19 - ❯ tests/authored-probe-cache.test.ts:129:54 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/177]⎯ - - FAIL tests/authored-retried-child-resume-live.test.ts > an authored step whose child run retried an attempt > resumes after a kill mid-step and reads the terminal completion, not the crashed one -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-retried-child-resume-live.test.ts:45:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/177]⎯ - - FAIL tests/authored-retried-child-resume-live.test.ts > an authored step whose child run retried an attempt > reads the terminal completion with no daemon restart or flows resume, when a worker died mid-attempt -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-retried-child-resume-live.test.ts:105:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[59/177]⎯ - - FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > reports the command that failed and what it printed -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-run-failure-evidence.test.ts:39:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[60/177]⎯ - - FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > names the failing case from the middle of a real test run -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-run-failure-evidence.test.ts:92:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[61/177]⎯ - - FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > carries the same facts structurally, not only rendered into the message -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-run-failure-evidence.test.ts:130:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[62/177]⎯ - - FAIL tests/authored-run-failure-evidence.test.ts > a failing f.run through the live kernel > keeps the evidence when the failure is relabelled as a timeout -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-run-failure-evidence.test.ts:154:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[63/177]⎯ - - FAIL tests/authored-run-failure-evidence.test.ts > the child index after the process that wrote it is gone > still names every child, with its own run id, after a daemon restart -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-run-failure-evidence.test.ts:229:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[64/177]⎯ - - FAIL tests/authored-step-graph-live.test.ts > the authored step DAG through the live kernel > carries labels and predecessors on every index record and journal step, ids unchanged -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/authored-step-graph-live.test.ts:51:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[65/177]⎯ - - FAIL tests/budget-authored-live.test.ts > authored budgets through the live kernel > retains the first completion and journals refusal of the next authored step -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/budget-authored-live.test.ts:11:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[66/177]⎯ - - FAIL tests/budget-authored-live.test.ts > authored budgets through the live kernel > permits done after the last valid step crosses the limit -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/budget-authored-live.test.ts:31:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[67/177]⎯ - - FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > runs an unpriced step under a dollar budget without tripping it, journaling unknown dollars -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/budget-unmetered-live.test.ts:28:19 - ❯ tests/budget-unmetered-live.test.ts:50:49 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[68/177]⎯ - - FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > journals an unpriced claude step's reported cost beside unchanged metered usage, and the verdict is unchanged -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/budget-unmetered-live.test.ts:28:19 - ❯ tests/budget-unmetered-live.test.ts:95:49 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[69/177]⎯ - - FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > still counts an unpriced step toward a token budget -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/budget-unmetered-live.test.ts:28:19 - ❯ tests/budget-unmetered-live.test.ts:133:49 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[70/177]⎯ - - FAIL tests/budget-unmetered-live.test.ts > unmetered budget spend through the live kernel > accrues a priced step and stops the run when it crosses the dollar budget -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/budget-unmetered-live.test.ts:28:19 - ❯ tests/budget-unmetered-live.test.ts:145:49 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[71/177]⎯ - - FAIL tests/effect-channel.test.ts > journals one post across interruption before none - FAIL tests/effect-channel.test.ts > journals one post across interruption before record - FAIL tests/effect-channel.test.ts > journals one post across interruption before confirm - FAIL tests/effect-channel.test.ts > journals one post across interruption before complete -AssertionError: Build relayflowd first: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd: expected false to be true // Object.is equality - -- Expected -+ Received - -- true -+ false - - ❯ tests/effect-channel.test.ts:63:67 - 61| - 62| it.each(['none', 'record', 'confirm', 'complete'] as const)('journals … - 63| expect(existsSync(binary), `Build relayflowd first: ${binary}`).toBe… - | ^ - 64| const dir = mkdtempSync(join(tmpdir(), 'channel-effect-')); director… - 65| let active = await start(dir); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[72/177]⎯ - - FAIL tests/event-await-cli.test.ts > parks, restarts, and replays two event wakes through the actual CLI -Error: Command failed: /usr/local/share/nvm/versions/node/v25.6.0/bin/node /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs /home/daytona/.relayflow-v2-supervisor/durable/repository -node:internal/modules/run_main:107 - triggerUncaughtException( - ^ - -AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: - -2 !== 4 - - at expectPark (file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:58:10) - at file:///home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/tests/fixtures/event-await-cli-probe.mjs:63:3 { - generatedMessage: true, - code: 'ERR_ASSERTION', - actual: 2, - expected: 4, - operator: 'strictEqual', - diff: 'simple' -} - -Node.js v25.6.0 - - ❯ expectPark tests/fixtures/event-await-cli-probe.mjs:58:10 - ❯ tests/event-await-cli.test.ts:9:18 - 7| - 8| it('parks, restarts, and replays two event wakes through the actual CL… - 9| const output = execFileSync(process.execPath, [resolve(here, 'fixtur… - | ^ - 10| resolve(here, '../../..')], { encoding: 'utf8', timeout: 90_000 }); - 11| expect(output).toContain('E2E_PASS:'); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[73/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > runs f.llm -> f.agent -> f.run with schema-verified journal output and the exact allowed model -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:45:56 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[74/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > runs a dollar-budgeted authored Claude agent with the same default used by preflight -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:70:56 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[75/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > fails invalid LLM output before the next step: not JSON - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > fails invalid LLM output before the next step: {"message":7} -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:108:56 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[76/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > retains tagged-template text output -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:129:39 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[77/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: null - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: [1,2] - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: "hello" -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:142:39 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[78/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > refuses a model outside flows.json before a run or adapter execution -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:150:39 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[79/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > runs the exact authored flagship f.llm -> f.agent -> f.run path through the durable CLI root -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/flow-executor-chain.test.ts:159:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[80/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > resumes an interrupted durable authored root without replaying completed flagship effects -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/flow-executor-chain.test.ts:184:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[81/177]⎯ - - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > passes a declarative verified value through an agent into a deterministic artifact -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:229:46 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[82/177]⎯ + ✓ tests/run-from-digest.test.ts (6 tests) 4723ms + ✓ flows run digest input > submits the sealed canonical spec through the normal journal path without checkout 480ms + ✓ flows run digest input > uses a verified cache hit even after the bucket is removed 448ms + ✓ flows run digest input > resolves deploy.bucket from flows.json and honors explicit override 1280ms + ✓ flows run digest input > refuses an unconfigured bucket 839ms + ✓ flows run digest input > refuses tampered spec.canonical.json before creating run data 838ms + ✓ flows run digest input > refuses tampered identity.json before creating run data 837ms + ✓ tests/build-gate.test.ts (3 tests) 1226ms + ✓ flows build gates on flows check green (#318) > refuses a flow with an unresolvable named-agent CLI and leaves no artifacts 406ms + ✓ flows build gates on flows check green (#318) > --json emits one CheckReport object on stdout on refusal, exits 2, no artifacts 398ms + ✓ flows build gates on flows check green (#318) > builds the bundle on success (regression: gate must not block valid flows) 421ms + ✓ tests/scope-compiler.test.ts (25 tests) 12ms + ✓ tests/worker-cli-abort.test.ts (3 tests) 3854ms + ✓ stops claude and its process group when lease ownership is lost 1362ms + ✓ stops wrapper.mjs and its process group when lease ownership is lost 1461ms + ✓ fails closed when abort cannot prove the process group is gone 1030ms + ✓ tests/hn-poller.test.ts (6 tests) 7ms + ✓ tests/plugin-add.test.ts (7 tests) 1212ms + ✓ typechecks the augmented verb and rejects unknown namespaces 912ms + ✓ tests/authored-step-failed-exit.test.ts (3 tests) 8ms + ✓ tests/retried-step-failure.test.ts (1 test) 597ms + ✓ a retried step failing differently through the live kernel > reports both attempts and says the evidence differs 596ms + ✓ tests/dir-watcher-poller.test.ts (6 tests) 5ms + ✓ tests/subscription-report.test.ts (8 tests) 5ms + ✓ tests/model-pricing.test.ts (10 tests) 5ms + ✓ tests/authored-use-loader.test.ts (6 tests) 885ms + ✓ tests/yaml-helper-live.test.ts (1 test) 950ms + ✓ runs compiled YAML helpers through the built CLI and kernel effect journal 949ms + ✓ tests/provider-trigger-executor.test.ts (4 tests) 163ms + ✓ tests/journal-client-completion.test.ts (6 tests) 104ms + ✓ tests/transcript-tail-close.test.ts (2 tests) 1529ms + ✓ a stalled transcript-tail close > does not hold the spawn open past its bounded window 719ms + ✓ a stalled tail close beside a transcript that finished > still journals the transcript pointer 809ms + ✓ tests/wrapper-artifacts-cwd.test.ts (2 tests) 79ms + ✓ tests/hello-deterministic.test.ts (5 tests) 18ms + ✓ tests/worker-lease-sweep.test.ts (4 tests) 16ms + ✓ tests/transcript-exclusion-timeout.test.ts (1 test) 294ms + ✓ tests/cli-adapter.test.ts (4 tests) 6ms + ✓ tests/communication-mixed-resume.test.ts (1 test) 187ms + ✓ tests/work-package-validator.test.ts (7 tests) 5ms + ✓ tests/activity-preflight.test.ts (10 tests) 21ms + ✓ tests/authored-declined-live.test.ts (1 test) 1638ms + ✓ runs an input guard and resumes its completed declined root without repeated effects 1638ms + ✓ tests/cli-answer.test.ts (15 tests) 9ms + ✓ tests/bundle-preflight.test.ts (4 tests) 966ms + ✓ bundle execution preflight > ignores surrounding cache configuration on a verified cache hit 473ms + ✓ bundle execution preflight > uses the built alias for a nameless flow even in a digest-only cache directory 457ms + ✓ tests/agent-relay-hardening.test.ts (12 tests) 12ms + ✓ tests/communication-preflight.test.ts (13 tests) 36ms + ↓ tests/real-cli-adapters.test.ts (3 tests | 3 skipped) + ✓ tests/memoization.test.ts (57 tests) 57ms + ✓ tests/shipped-source-call-array-forwarding.test.ts (1 test) 2866ms + ✓ shipped-source call-array forwarding > maps rest indexes and nested same-helper actuals for workers and flows 2865ms + ✓ tests/local-agent-environment.test.ts (8 tests) 8ms + ✓ tests/fs-descriptor.test.ts (1 test) 9ms + ✓ tests/parse-json-output.test.ts (7 tests) 3ms + ✓ tests/reported-cost.test.ts (4 tests) 3ms + ✓ tests/journal-client-subscriptions.test.ts (1 test) 9ms + ✓ tests/authored-model-probe-kinds.test.ts (2 tests) 162ms + ✓ tests/communication-environment-preflight.test.ts (6 tests) 4ms + ✓ tests/budget-authored-live.test.ts (2 tests) 145ms + ✓ tests/slack-writeback.test.ts (1 test) 257ms + ✓ tests/authored-surface-authority.test.ts (2 tests) 17ms + ✓ tests/adapters/claude.test.ts (7 tests) 4ms + ✓ tests/worker-cli-cwd.test.ts (2 tests) 513ms + ✓ runAgentCli — cwd propagation (flows#357) > omits cwd when not provided (inherits parent cwd) 507ms + ✓ tests/adapters/codex.test.ts (7 tests) 4ms + ✓ tests/shipped-source-parameter-provenance.test.ts (1 test) 1775ms + ✓ shipped-source parameter provenance > keeps caller-supplied identifier and destructured keys unknown 1774ms + ✓ tests/slack-block-kit.test.ts (5 tests) 17ms + ✓ tests/communication-history.test.ts (1 test) 3ms + ✓ tests/resume-worker-lease.test.ts (2 tests) 4ms + ✓ tests/adapters/registry.test.ts (4 tests) 5ms + ✓ tests/direct-run-worker-lease.test.ts (2 tests) 7ms + ✓ tests/authored-declined-report.test.ts (6 tests) 8ms + ✓ tests/promise-ancestry.test.ts (2 tests) 278ms + ✓ tests/agent-cwd-validation.test.ts (2 tests) 408ms + ✓ declarative agent cwd > is refused by `flows check` on a YAML flow before anything runs 404ms + ✓ tests/communication-refusal.test.ts (1 test) 13ms + ✓ tests/bundle-transport.test.ts (20 tests) 2659ms + ✓ digest references > accepts and deploys the build output for hello 437ms + ✓ digest references > accepts and deploys the build output for Hello 450ms + ✓ digest references > accepts and deploys the build output for hello.world 468ms + ✓ digest references > accepts and deploys the build output for hello_world 434ms + ✓ digest references > accepts and deploys the build output for 123 433ms + ✓ digest references > accepts and deploys the build output for A_b.c-1 432ms + ✓ tests/cli-cloud-mirror-flag.test.ts (4 tests) 3ms + ✓ tests/catalog-plugins.test.ts (2 tests) 3ms + ✓ tests/check-command-cwd.test.ts (1 test) 13ms + ✓ tests/communication-lazy.test.ts (1 test) 6ms + ✓ tests/cli-progress-wait.test.ts (2 tests) 4ms + ✓ tests/run-digest-live.test.ts (1 test) 917ms + ✓ executes a deployed digest on the real kernel after deleting the authoring tree 916ms + ✓ tests/placement.test.ts (54 tests) 17ms + ✓ tests/preflight-run-cache.test.ts (1 test) 5ms + ✓ tests/canonical-tree.test.ts (1 test) 2ms + ✓ tests/local-agent-stream-selection.test.ts (1 test) 5ms + ✓ tests/run-digest.test.ts (4 tests) 1664ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {invalid json 422ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{}} 428ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":123}} 407ms + ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":""}} 406ms + ✓ tests/communication-tools.test.ts (1 test) 69ms + ✓ tests/authored-admission.test.ts (2 tests) 3ms + ✓ tests/memory.test.ts (18 tests) 8ms + ✓ tests/worker-platform.test.ts (1 test) 3ms + ✓ tests/event-await-cli.test.ts (1 test) 12545ms + ✓ parks, restarts, and replays two event wakes through the actual CLI 12544ms + ✓ tests/authored-parallel-llm.test.ts (6 tests) 115001ms + ✓ parallel llm capacity 1 > deduplicates concurrent preflight probes 2887ms + ✓ parallel llm capacity 1 > completes nine calls without expired child leases during slow preflight 8942ms + ✓ parallel llm capacity 1 > keeps the durable root lease alive across two cold models 47906ms + ✓ parallel llm capacity 4 > deduplicates concurrent preflight probes 1412ms + ✓ parallel llm capacity 4 > completes nine calls without expired child leases during slow preflight 7368ms + ✓ parallel llm capacity 4 > keeps the durable root lease alive across two cold models 46486ms + ✓ tests/shipped-source-worker-invocations.test.ts (1 test) 687650ms + ✓ shipped-source worker invocation resolution > fails closed across direct, extracted, bound, mutable, and escaped callables 687649ms + +⎯⎯⎯⎯⎯⎯ Failed Tests 31 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/babysitter-native-extension.test.ts > native Babysitter extension > runs the exact published 2.0.26 native bytes in the isolated capability path +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving + ❯ tests/babysitter-native-extension.test.ts:153:7 + 151| return { receiptId: `bst_${'a'.repeat(64)}`, status: 'queued' … + 152| } }, + 153| })).resolves.toEqual({ completionReason: 'success', capabilityCall… + | ^ + 154| expect(calls).toEqual([{ delivery: { + 155| deliveryId: 'gh-delivery-7', provider: 'github', eventType: 'pul… - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > journals a missing optional field as a failure before the consuming command executes -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ setup tests/flow-executor-chain.test.ts:26:19 - ❯ tests/flow-executor-chain.test.ts:249:39 + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[83/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ +Serialized Error: { code: 'plugin_unsupported' } +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/31]⎯ - FAIL tests/flow-executor-chain.test.ts > flow executor LLM and output-binding chain > flows run consumes YAML bindings and resume reuses the original journal output -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a queued receipt + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary + FAIL tests/software-garden-babysitter-composition.test.ts > canonical Software Garden + Babysitter composition > executes the pinned composition and preserves queued/duplicate replay receipts +Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/flow-executor-chain.test.ts:267:21 + ❯ refuse src/hosted-extension-protocol.ts:135:21 + 133| : new PluginError('plugin_unsupported', 'Hosted capability rejec… + 134| const refuse = (message: string) => { + 135| const error = new PluginError('plugin_unsupported', message); + | ^ + 136| CHILD_PROCESS_KILL(child, 'SIGKILL'); + 137| if (capabilityState === 'pending') { + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[84/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/31]⎯ - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a queued receipt FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt -Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - 501| - 502| function unsupported(message: string): never { - 503| throw new PluginError('plugin_unsupported', message); - | ^ - 504| } - 505| - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:221:26 + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs + FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic +Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[85/177]⎯ + ❯ refuse src/hosted-extension-protocol.ts:135:21 + 133| : new PluginError('plugin_unsupported', 'Hosted capability rejec… + 134| const refuse = (message: string) => { + 135| const error = new PluginError('plugin_unsupported', message); + | ^ + 136| CHILD_PROCESS_KILL(child, 'SIGKILL'); + 137| if (capabilityState === 'pending') { + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization -AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving ❯ tests/hosted-extension-isolation.test.ts:283:11 281| input: descriptor(), 282| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… @@ -2950,19 +780,17 @@ AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' 284| } finally { 285| process.execPath = originalExecPath; -Caused by: Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:277:22 +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[86/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic -AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving ❯ tests/hosted-extension-isolation.test.ts:373:11 371| input: descriptor('delivery-options'), 372| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… @@ -2971,16 +799,14 @@ AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' 374| } finally { 375| Buffer.prototype.toString = bufferToString; -Caused by: Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:367:22 +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[87/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving @@ -2992,142 +818,17 @@ AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { 432| expect(calls).toBe(1); 433| expect(readFileSync(join(installed.directory, 'babysitter.flow.ts'… -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): /tmp/hosted-bwrap-wrapper-i4QbgW/bwrap-wrapper:20 -if (child.error) throw child.error; - ^ - -Error: spawnSync /usr/bin/bwrap ENOENT - at Object.spawnSync (node:internal/child_process:1103:20) - at spawnSync (node:child_process:911:24) - at Object. (/tmp/hosted-bwrap-wrapper-i4QbgW/bwrap-wrapper:19:15) - at Module._compile (node:internal/modules/cjs/loader:1809:14) - at Object..js (node:internal/modules/cjs/loader:1940:10) - at Module.load (node:internal/modules/cjs/loader:1530:32) - at Module._load (node:internal/modules/cjs/loader:1332:12) - at wrapModuleLoad (node:internal/modules/cjs/loader:255:19) - at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5) - at node:internal/main/run_main_module:33:47 { - errno: -2, - code: 'ENOENT', - syscall: 'spawnSync /usr/bin/bwrap', - path: '/usr/bin/bwrap', - spawnargs: [ - '--unshare-all', - '--die-with-parent', - '--new-session', - '--clearenv', - '--cap-drop', - 'ALL', - '--dir', - '/usr', - '--ro-bind', - '/usr/lib', - '/usr/lib', - '--ro-bind', - '/usr/lib64', - '/usr/lib64', - '--ro-bind', - '/usr/lib', - '/lib', - '--ro-bind', - '/usr/lib64', - '/lib64', - '--proc', - '/proc', - '--dev', - '/dev', - '--tmpfs', - '/tmp', - '--dir', - '/runtime', - '--dir', - '/extension', - '--dir', - '/extension/node_modules', - '--dir', - '/extension/node_modules/@relayflows', - '--dir', - '/extension/node_modules/@relayflows/surface', - '--dir', - '/extension/node_modules/@relayflows/surface/dist', - '--dir', - '/extension/node_modules/@relayflows/surface/dist/helpers', - '--dir', - '/extension/node_modules/@relayflows/surface/dist/triggers', - '--dir', - '/extension/src', - '--perms', - '0500', - '--ro-bind-data', - '4', - '/runtime/node', - '--perms', - '0400', - '--ro-bind-data', - '5', - '/runtime/runner.mjs', - '--perms', - '0400', - '--ro-bind-data', - '6', - '/extension/node_modules/@relayflows/surface/package.json', - '--perms', - '0400', - '--ro-bind-data', - '7', - '/extension/node_modules/@relayflows/surface/index.js', - '--perms', - '0400', - '--ro-bind-data', - '8', - '/extension/node_modules/@relayflows/surface/runtime.js', - '--perms', - '0400', - '--ro-bind-data', - '9', - '/extension/node_modules/@relayflows/surface/dist/flow.js', - '--perms', - '0400', - '--ro-bind-data', - '10', - '/extension/node_modules/@relayflows/surface/dist/helpers/providers.js', - '--perms', - '0400', - '--ro-bind-data', - '11', - '/extension/node_modules/@relayflows/surface/dist/provider-trigger.js', - '--perms', - '0400', - '--ro-bind-data', - '12', - '/extension/node_modules/@relayflows/surface/dist/schedule.js', - '--perms', - '0400', - '--ro-bind-data', - '13', - '/extension/node_modules/@relayflows/surface/dist/triggers.js', - '--perms', - '0400', - '--ro-bind-data', - '14', - '/extension/node_modules/@relayflows/surface/dist/triggers/github.js', - '--perms', - ... 27 more items - ] -} - -Node.js v25.6.0 +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - ❯ Object. ../../../../../../../tmp/hosted-bwrap-wrapper-i4QbgW/bwrap-wrapper:19:15 ❯ refuse src/hosted-extension-protocol.ts:135:21 ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[88/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch -AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving ❯ tests/hosted-extension-isolation.test.ts:456:7 454| return { receiptId: 'receipt-1', status: 'queued' }; 455| } }, @@ -3136,41 +837,17 @@ AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' 457| expect(calls).toBe(1); 458| expect(readFileSync(join(surfaceRoot, 'dist/flow.js'), 'utf8')).to… -Caused by: Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:443:18 +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[89/177]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > refuses oversized Surface files through the bounded descriptor reader -AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } - -- Expected -+ Received - -- Object { -+ PluginError { - "code": "plugin_unsupported", -- "message": StringContaining "cannot read pinned Surface runtime flow.js", - } - - ❯ tests/hosted-extension-isolation.test.ts:489:5 - 487| }); - 488| let calls = 0; - 489| await expect(runVerifiedNativeExtensionSandbox({ - | ^ - 490| artifact: await artifact(), - 491| manifest: validateFlowExtensionManifest(manifest()), - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[90/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > shields verified Surface files before async settlement -AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving ❯ tests/hosted-extension-isolation.test.ts:532:9 530| surfaceRoot, 531| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-1'… @@ -3179,25 +856,24 @@ AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' 533| } finally { 534| if (previous === undefined) delete (Array.prototype as { then?: … -Caused by: Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:525:20 +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[91/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child -AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality +AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality - Expected + Received - [Error: private Cloud policy detail] -+ [Error: bubblewrap is unavailable] ++ [Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted ++ ] ❯ tests/hosted-extension-isolation.test.ts:560:5 558| provider: 'github', eventType: 'pull_request.labeled', deliveryI… @@ -3207,26 +883,10 @@ AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to be 561| artifact: await artifact(source), manifest: validateFlowExtensio… 562| babysitterTurn: { queue: async () => { throw refusal; } }, -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[92/177]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs -Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - 501| - 502| function unsupported(message: string): never { - 503| throw new PluginError('plugin_unsupported', message); - | ^ - 504| } - 505| - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:624:13 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[93/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation -AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_unsupported', …(1) } +AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_unsupported', …(1) } - Expected + Received @@ -3245,10 +905,10 @@ AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to mat 647| artifact: installed, 648| manifest: validateFlowExtensionManifest(manifest()), -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[94/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port -AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } +AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - Expected + Received @@ -3267,26 +927,10 @@ AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to mat 676| artifact: await artifact(source), manifest: validateFlowExtensio… 677| babysitterTurn: { queue: async () => { calls += 1; return { rece… -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[95/177]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic -Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - 501| - 502| function unsupported(message: string): never { - 503| throw new PluginError('plugin_unsupported', message); - | ^ - 504| } - 505| - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:745:22 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[96/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/31]⎯ FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior -AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' }" instead of resolving +AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving ❯ tests/hosted-extension-isolation.test.ts:788:11 786| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… 787| timeoutMs: 3_000, @@ -3295,37 +939,40 @@ AssertionError: promise rejected "Error: bubblewrap is unavailable { code: '…' 789| } finally { 790| if (previous === undefined) delete (Object.prototype as { toJS… -Caused by: Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-isolation.test.ts:781:22 +Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + ❯ refuse src/hosted-extension-protocol.ts:135:21 + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[97/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/31]⎯ - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary -Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - 501| - 502| function unsupported(message: string): never { - 503| throw new PluginError('plugin_unsupported', message); - | ^ - 504| } - 505| - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-protocol.test.ts:326:24 + FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls +AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[98/177]⎯ +- Expected ++ Received + +- Object { +- "code": "plugin_event_unroutable", ++ PluginError { ++ "code": "plugin_unsupported", + } + + ❯ tests/hosted-extension-protocol.test.ts:447:5 + 445| ])('rejects an import-time %s frame with zero adapter calls', async … + 446| let calls = 0; + 447| await expect(runVerifiedNativeExtensionSandbox({ + | ^ + 448| artifact: await artifact(hostileImport([frame, { type: 'error', … + 449| manifest: validateFlowExtensionManifest(manifest()), dispatch: d… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/31]⎯ - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls -AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to match object { code: 'plugin_event_unroutable' } +AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - Expected + Received @@ -3344,7 +991,7 @@ AssertionError: expected Error: bubblewrap is unavailable { code: '…' } to mat 448| artifact: await artifact(hostileImport([frame, { type: 'error', … 449| manifest: validateFlowExtensionManifest(manifest()), dispatch: d… -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[99/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/31]⎯ FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error @@ -3359,783 +1006,179 @@ Error: hostile child did not invoke the adapter 136| void invoked.then(() => { clearTimeout(timeout); resolve(); }, rej… 137| }); -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[100/177]⎯ - - FAIL tests/human-live.test.ts > f.human against a real daemon > parks with the question, refuses wrong answers, records one, and resumes to success -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/human-live.test.ts:22:11 - 20| })).target_directory, 'debug', 'relayflowd'); - 21| } catch (cause) { - 22| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 23| } - 24| } - ❯ fixture tests/human-live.test.ts:42:22 - ❯ tests/human-live.test.ts:81:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/human-live.test.ts:16:28 - ❯ fixture tests/human-live.test.ts:42:22 - ❯ tests/human-live.test.ts:81:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 22015, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[101/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/31]⎯ - FAIL tests/human-live.test.ts > f.human against a real daemon > a "no" is a value the body branches on: declined, exit 0, no effect -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/human-live.test.ts:22:11 - 20| })).target_directory, 'debug', 'relayflowd'); - 21| } catch (cause) { - 22| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 23| } - 24| } - ❯ fixture tests/human-live.test.ts:42:22 - ❯ tests/human-live.test.ts:144:15 + FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > runs hn-monitor analyze-story end-to-end via a stub agent CLI (gate 2 clause 2 demo) +AssertionError: expected { …(12) } to match object { output: { …(3) }, …(1) } +(22 matching properties omitted from actual) -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +- Expected ++ Received - ❯ resolveDaemon tests/human-live.test.ts:16:28 - ❯ fixture tests/human-live.test.ts:42:22 - ❯ tests/human-live.test.ts:144:15 + Object { +- "output": Object { +- "reasoning": "stub agent runtime — deterministic output for gate-2 clause-2 demo", +- "relevance_score": 5, +- "story_title": "stub", +- }, ++ "output": null, + "verification": Object { +- "gate": "json_schema", +- "verdict": "pass", ++ "gate": "execution", ++ "verdict": "fail", + }, + } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 22026, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[102/177]⎯ + ❯ tests/live-kernel.test.ts:657:36 + 655| && (entry as { step_id?: string }).step_id === 'analyze-story', + 656| ) as { payload: { output: unknown; verification: unknown } } | und… + 657| expect(stepCompleted?.payload).toMatchObject({ + | ^ + 658| output: { + 659| story_title: 'stub', - FAIL tests/human-live.test.ts > f.human against a real daemon > refuses to answer a run the daemon does not know -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/human-live.test.ts:22:11 - 20| })).target_directory, 'debug', 'relayflowd'); - 21| } catch (cause) { - 22| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 23| } - 24| } - ❯ fixture tests/human-live.test.ts:42:22 - ❯ tests/human-live.test.ts:164:15 +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/31]⎯ -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. + FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > hn-monitor analyze-story FAILS verification when the CLI omits required schema fields +AssertionError: expected { …(12) } to match object { …(3) } +(21 matching properties omitted from actual) - ❯ resolveDaemon tests/human-live.test.ts:16:28 - ❯ fixture tests/human-live.test.ts:42:22 - ❯ tests/human-live.test.ts:164:15 +- Expected ++ Received -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 22037, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[103/177]⎯ + Object { +- "completionReason": "retries_exhausted", ++ "completionReason": "worker_error", + "output": null, + "verification": Object { +- "gate": "json_schema", ++ "gate": "execution", + "verdict": "fail", + }, + } - FAIL tests/live-event-activities.test.ts > runs surface f.on through the local daemon event path and journals its buffered wake -Error: relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd - ❯ startDaemon tests/live-event-activities.test.ts:121:38 - 119| - 120| async function startDaemon(dataDir: string): Promise { - 121| if (!existsSync(RELAYFLOWD)) throw new Error(`relayflowd binary is m… + ❯ tests/live-kernel.test.ts:752:36 + 750| // its verification record names the json_schema rejection. The re… + 751| // parsed value is nulled before the completion is persisted. + 752| expect(stepCompleted?.payload).toMatchObject({ + | ^ + 753| completionReason: 'retries_exhausted', + 754| output: null, + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/31]⎯ + + FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > agent step preserves the CliResult wrapper as output when the CLI emits non-JSON text +AssertionError: expected null not to be null + ❯ tests/live-kernel.test.ts:823:24 + 821| // here (parseJsonOutput returned null on non-JSON stdout) and + 822| // these assertions would all fail. + 823| expect(output).not.toBeNull(); + | ^ + 824| expect(output.exit_code).toBe(0); + 825| expect(output.stdout_tail).toContain('looked at the story'); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/31]⎯ + + FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > AgentWorker exposes wake_context to the CLI via RELAYFLOW_WAKE_CONTEXT env var (real analyzer prerequisite) +TypeError: Cannot read properties of null (reading 'story_title') + ❯ tests/live-kernel.test.ts:891:42 + 889| ) as { payload: { output: { story_title: string; reasoning: string… + 890| expect(stepCompleted).toBeDefined(); + 891| expect(stepCompleted!.payload.output.story_title).toBe(`echoed:${s… + | ^ + 892| expect(stepCompleted!.payload.output.reasoning).toContain(String(s… + 893| + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/31]⎯ + + FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_WAKE_CONTEXT UNSET when the run has no wake_context (undefined-vs-null pin) +TypeError: Cannot read properties of null (reading 'env_present') + ❯ tests/live-kernel.test.ts:958:38 + 956| ) as { payload: { output: { env_present: boolean } } } | undefined; + 957| expect(completed).toBeDefined(); + 958| expect(completed!.payload.output.env_present).toBe(false); | ^ - 122| const daemon = spawn(RELAYFLOWD, ['--data-dir', dataDir, 'serve'], {… - 123| daemons.push(daemon); - ❯ tests/live-event-activities.test.ts:39:9 + 959| + 960| delete process.env.RELAYFLOW_WAKE_CONTEXT; -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[104/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/31]⎯ - FAIL tests/live-event-activities.test.ts > survives SIGKILL after stream.appended and delivers the frame once after daemon restart -Error: relayflowd binary is missing: /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd - ❯ startDaemon tests/live-event-activities.test.ts:121:38 - 119| - 120| async function startDaemon(dataDir: string): Promise { - 121| if (!existsSync(RELAYFLOWD)) throw new Error(`relayflowd binary is m… + FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_MODEL UNSET when the step declares no model +TypeError: Cannot read properties of null (reading 'story_title') + ❯ tests/live-kernel.test.ts:1194:38 + 1192| expect(completed).toBeDefined(); + 1193| // UNSET, not EMPTY and not the leaked parent value. + 1194| expect(completed!.payload.output.story_title).toBe('model:UNSET'); | ^ - 122| const daemon = spawn(RELAYFLOWD, ['--data-dir', dataDir, 'serve'], {… - 123| daemons.push(daemon); - ❯ tests/live-event-activities.test.ts:88:29 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[105/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > dispatches through the wrapper and keeps --json stdout report-shaped -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:85:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:85:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20385, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[106/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > runs beyond the initial 30-second lease without a second invocation -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:93:15 + 1195| + 1196| delete process.env.RELAYFLOW_MODEL; -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/31]⎯ - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:93:15 + FAIL tests/live-kernel.test.ts > a relayflow can be scheduled: tick source against live relayflowd > a tick spawns a real run whose step reports the SCHEDULED instant +AssertionError: expected null to deeply equal { schedule_id: 'heartbeat-1m', …(3) } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20396, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[107/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > renders actual agent completion in text output -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:100:20 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:100:20 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20407, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[108/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > returns a failed run when the agent process fails -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:105:20 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:105:20 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20418, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[109/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > prints a remedy that runs the parked authored flow to completion -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:122:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:122:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20429, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[110/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > prints a remedy that runs, for a run started from an input file too long to be one -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:160:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:160:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20440, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[111/177]⎯ - - FAIL tests/local-agent-live.test.ts > built CLI local agent against a real daemon > refuses a workspace it cannot pin before invoking the agent -Error: Live CLI tests require npm run test:prep or an explicit RELAYFLOWD_BIN. - ❯ resolveDaemon tests/local-agent-live.test.ts:23:11 - 21| })).target_directory, 'debug', 'relayflowd'); - 22| } catch (cause) { - 23| throw new Error('Live CLI tests require npm run test:prep or an ex… - | ^ - 24| } - 25| } - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:191:15 - -Caused by: Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ resolveDaemon tests/local-agent-live.test.ts:17:28 - ❯ fixture tests/local-agent-live.test.ts:42:22 - ❯ tests/local-agent-live.test.ts:191:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { status: 1, signal: null, output: [ null, '', 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' ], pid: 20451, stdout: '', stderr: 'error: rustup could not choose a version of cargo to run, because one wasn\'t specified explicitly, and no default is configured.\nhelp: run \'rustup default stable\' to download the latest stable release of Rust and set it as your default toolchain.\n' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[112/177]⎯ - - FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > keeps both tails on a FAILING gate, the case the operator has nothing else for -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/named-gate-journal.test.ts:51:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[113/177]⎯ - - FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > keeps both tails on a PASSING gate, so a gate that passed for the wrong reason is inspectable -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/named-gate-journal.test.ts:68:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[114/177]⎯ - - FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > journals the diagnostic when the gate never reached the command -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/named-gate-journal.test.ts:85:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[115/177]⎯ - - FAIL tests/named-gate-journal.test.ts > a lowered subprocess_gate journals the gate command's streams > persists what the gate printed before a timeout killed it -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/named-gate-journal.test.ts:107:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[116/177]⎯ - - FAIL tests/named-gate-journal.test.ts > a gate on an agent step > journals the command's streams and surfaces them in the authored failure -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/named-gate-journal.test.ts:132:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[117/177]⎯ - - FAIL tests/plugin-loader.test.ts > journals plugin effect input and receipt through the daemon -Error: journal client: connect failed: connect ENOENT /tmp/relayflowd-4a13addfaf96.sock - ❯ Socket.onError src/journal-client.ts:105:16 - 103| socket.removeAllListeners(); - 104| this.failAll(err); - 105| reject(new Error(`journal client: connect failed: ${err.messag… - | ^ - 106| }; - 107| socket.once('error', onError); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[118/177]⎯ - - FAIL tests/provider-trigger-executor.test.ts > the kernel executes compiled 'app_mention' subscriptions with provider isolation and durable dedupe - FAIL tests/provider-trigger-executor.test.ts > the kernel executes compiled 'reaction_added' subscriptions with provider isolation and durable dedupe - FAIL tests/provider-trigger-executor.test.ts > the kernel executes compiled 'pull_request' subscriptions with provider isolation and durable dedupe -Error: spawnSync /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ❯ submit tests/provider-trigger-executor.test.ts:43:89 - 41| steps: [{ id: 'effect', type: 'deterministic', command: `printf ac… - 42| })))); - 43| const submit = (envelope: unknown, key: string, executor = source.na… - | ^ - 44| '--data-dir', dir, 'run', spec, '--event', JSON.stringify({ type: … - 45| ], { encoding: 'utf8', stdio: 'pipe' })) as { matched: boolean; dedu… - ❯ tests/provider-trigger-executor.test.ts:50:12 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[119/177]⎯ - - FAIL tests/retried-step-failure.test.ts > a retried step failing differently through the live kernel > reports both attempts and says the evidence differs -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/retried-step-failure.test.ts:26:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[120/177]⎯ - - FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 10000 ms for 'sleep 5; printf ok' - FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 40000 ms for 'sleep 31; printf ok' - FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 30000 ms for 'sleep 31; printf ok' - FAIL tests/step-lease.test.ts > f.run leases against the live kernel > enforces 100 ms for 'sleep 5' -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/step-lease.test.ts:102:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[121/177]⎯ - - FAIL tests/webhook-live.test.ts > executes and deduplicates 'app_mention' only for its provider and matching payload - FAIL tests/webhook-live.test.ts > executes and deduplicates 'reaction_added' only for its provider and matching payload - FAIL tests/webhook-live.test.ts > executes and deduplicates 'pull_request' only for its provider and matching payload -Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ❯ until tests/webhook-live.test.ts:39:9 - 37| const deadline = Date.now() + 10_000; - 38| while (Date.now() < deadline) { if (await predicate()) return; await… - 39| throw new Error(`webhook integration timed out: ${detail()}`); - | ^ - 40| } - 41| async function daemon(dir: string): Promise { - ❯ daemon tests/webhook-live.test.ts:43:3 - ❯ tests/webhook-live.test.ts:100:3 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[122/177]⎯ - - FAIL tests/webhook-live.test.ts > flows serve-webhook writes JSON before the daemon starts, then journals and archives exactly once -Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ❯ until tests/webhook-live.test.ts:39:9 - 37| const deadline = Date.now() + 10_000; - 38| while (Date.now() < deadline) { if (await predicate()) return; await… - 39| throw new Error(`webhook integration timed out: ${detail()}`); - | ^ - 40| } - 41| async function daemon(dir: string): Promise { - ❯ daemon tests/webhook-live.test.ts:43:3 - ❯ tests/webhook-live.test.ts:121:3 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[123/177]⎯ - - FAIL tests/webhook-live.test.ts > replays a dropped file after SIGKILL before spawn -Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ❯ until tests/webhook-live.test.ts:39:9 - 37| const deadline = Date.now() + 10_000; - 38| while (Date.now() < deadline) { if (await predicate()) return; await… - 39| throw new Error(`webhook integration timed out: ${detail()}`); - | ^ - 40| } - 41| async function daemon(dir: string): Promise { - ❯ daemon tests/webhook-live.test.ts:43:3 - ❯ tests/webhook-live.test.ts:137:17 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[124/177]⎯ - - FAIL tests/webhook-live.test.ts > resumes the same journal after SIGKILL after spawn and before acknowledgement -Error: webhook integration timed out: spawn /home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/debug/relayflowd ENOENT - ❯ until tests/webhook-live.test.ts:39:9 - 37| const deadline = Date.now() + 10_000; - 38| while (Date.now() < deadline) { if (await predicate()) return; await… - 39| throw new Error(`webhook integration timed out: ${detail()}`); - | ^ - 40| } - 41| async function daemon(dir: string): Promise { - ❯ daemon tests/webhook-live.test.ts:43:3 - ❯ tests/webhook-live.test.ts:150:17 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[125/177]⎯ - - FAIL tests/worker-lease-drift-live.test.ts > worker lease under clock skew between worker and daemon > holds the lease when the worker clock runs 45s ahead of the daemon -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ leasedAgentRun tests/worker-lease-drift-live.test.ts:39:21 - ❯ tests/worker-lease-drift-live.test.ts:73:56 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[126/177]⎯ - - FAIL tests/worker-lease-drift-live.test.ts > worker lease under clock skew between worker and daemon > renews before the daemon deadline when the worker clock runs 75s behind the daemon -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ leasedAgentRun tests/worker-lease-drift-live.test.ts:39:21 - ❯ tests/worker-lease-drift-live.test.ts:84:56 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[127/177]⎯ - - FAIL tests/worker-lease-drift-live.test.ts > attempt accounting after a lost worker > does not report attempt=2/1 when the first attempt died uncharged -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/worker-lease-drift-live.test.ts:103:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[128/177]⎯ - - FAIL tests/worker-lease-lost-live.test.ts > reports journal success after completion rejects with lease_conflict - FAIL tests/worker-lease-lost-live.test.ts > reports journal success after completion rejects with run_terminal -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/worker-lease-lost-live.test.ts:14:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[129/177]⎯ - - FAIL tests/worker-lease-lost-live.test.ts > reports journal success when a renewal rejects after completion landed -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ Module.chainFixture tests/flow-chain-fixture.ts:14:64 - 12| const calls = join(root, 'calls.jsonl'); - 13| const flowPath = join(root, 'chain.flow.ts'); - 14| const binary = process.env.RELAYFLOWD_BIN ?? join(JSON.parse(execFil… - | ^ - 15| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 16| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/worker-lease-lost-live.test.ts:55:19 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[130/177]⎯ - - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked step CLI and model and journals done - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked named CLI and model and journals done - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked flow CLI and model and journals done - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > runs with the checked project CLI and model and journals done -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-declared-streams-live.test.ts:61:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[131/177]⎯ - - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > still parks without --local-agent -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-declared-streams-live.test.ts:93:20 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[132/177]⎯ - - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > reports the agent process failure -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-declared-streams-live.test.ts:100:20 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[133/177]⎯ - - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > resumes the journaled stream declarations after the input YAML changes -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-declared-streams-live.test.ts:106:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[134/177]⎯ +- Expected: +Object { + "lag_ms": 43000, + "schedule_id": "heartbeat-1m", + "scheduled_for_ms": 1764000000000, + "slot": 29400000, +} - FAIL tests/yaml-declared-streams-live.test.ts > YAML declared streams through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. ++ Received: +null - ❯ fixture tests/yaml-declared-streams-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-declared-streams-live.test.ts:125:20 + ❯ tests/live-kernel.test.ts:1739:39 + 1737| // The bound: the run reports the grid instant and its own lag, so… + 1738| // backfilled run can tell it is running for a slot from the past. + 1739| expect(completed!.payload.output).toEqual({ + | ^ + 1740| schedule_id: 'heartbeat-1m', + 1741| slot: 29_400_000, -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[135/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/31]⎯ - FAIL tests/yaml-helper-live.test.ts > runs compiled YAML helpers through the built CLI and kernel effect journal -AssertionError: error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. -: expected 1 to be +0 // Object.is equality + FAIL tests/software-garden-babysitter-composition.test.ts > canonical Software Garden + Babysitter composition > propagates capability denial without a retry or fallback +AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: live babysit label is absent // Object.is equality - Expected + Received -- 0 -+ 1 +- [Error: live babysit label is absent] ++ [Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted ++ ] - ❯ tests/yaml-helper-live.test.ts:48:46 - 46| const metadata = spawnSync('sh', [resolve('../../ops/cargo.sh'), '… - 47| { cwd: resolve('../../kernel'), encoding: 'utf8' }); - 48| expect(metadata.status, metadata.stderr).toBe(0); - | ^ - 49| binary = join(JSON.parse(metadata.stdout).target_directory, 'debug… - 50| } - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[136/177]⎯ - - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked step CLI and model and journals done - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked named CLI and model and journals done - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked flow CLI and model and journals done - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > runs with the checked project CLI and model and journals done -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-local-agent-live.test.ts:73:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[137/177]⎯ - - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > still parks without --local-agent -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-local-agent-live.test.ts:95:20 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[138/177]⎯ - - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > resumes a parked spec run with --local-agent instead of parking identically again -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-local-agent-live.test.ts:112:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[139/177]⎯ - - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > parks a second time with a different message when the attached worker is not eligible -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-local-agent-live.test.ts:137:15 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[140/177]⎯ - - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > reports the agent process failure -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-local-agent-live.test.ts:152:20 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[141/177]⎯ - - FAIL tests/yaml-local-agent-live.test.ts > YAML --local-agent through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin -Error: Command failed: sh /home/daytona/.relayflow-v2-supervisor/durable/repository/ops/cargo.sh metadata --format-version=1 --no-deps --locked --offline -error: rustup could not choose a version of cargo to run, because one wasn't specified explicitly, and no default is configured. -help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain. - - ❯ fixture tests/yaml-local-agent-live.test.ts:27:71 - 25| - 26| function fixture(source: 'step' | 'named' | 'flow' | 'project' = 'step… - 27| const relayflowd = process.env['RELAYFLOWD_BIN'] ?? join(JSON.parse(… - | ^ - 28| resolve('../../ops/cargo.sh'), 'metadata', '--format-version=1', '… - 29| ], { cwd: resolve('../../kernel'), encoding: 'utf8' })).target_direc… - ❯ tests/yaml-local-agent-live.test.ts:158:20 + ❯ tests/software-garden-babysitter-composition.test.ts:139:7 + 137| const refusal = new Error('live babysit label is absent'); + 138| let calls = 0; + 139| await expect(runHostedSoftwareGardenBabysitter({ + | ^ + 140| flowPath: installed.flowPath, + 141| dispatch: dispatch(), -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[142/177]⎯ +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/31]⎯ ⎯⎯⎯⎯⎯⎯ Unhandled Errors ⎯⎯⎯⎯⎯⎯ -Vitest caught 3 unhandled errors during the test run. +Vitest caught 1 unhandled error during the test run. This might cause false positive tests. Resolve unhandled errors to make sure your tests are not affected. ⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯ -Error: bubblewrap is unavailable - ❯ unsupported src/hosted-extension-sandbox.ts:503:9 - 501| - 502| function unsupported(message: string): never { - 503| throw new PluginError('plugin_unsupported', message); - | ^ - 504| } - 505| - ❯ executable src/hosted-extension-sandbox.ts:484:18 - ❯ Module.runHostedExtensionSandbox src/hosted-extension-sandbox.ts:176:17 - ❯ Module.runVerifiedNativeExtensionSandbox src/hosted-extension-isolation.ts:209:16 - ❯ tests/hosted-extension-protocol.test.ts:471:17 - ❯ node_modules/@vitest/runner/dist/index.js:533:5 - ❯ runTest node_modules/@vitest/runner/dist/index.js:1056:11 - ❯ runSuite node_modules/@vitest/runner/dist/index.js:1205:15 - ❯ runSuite node_modules/@vitest/runner/dist/index.js:1205:15 - ❯ runFiles node_modules/@vitest/runner/dist/index.js:1262:5 +Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted + + ❯ refuse src/hosted-extension-protocol.ts:135:21 + 133| : new PluginError('plugin_unsupported', 'Hosted capability rejec… + 134| const refuse = (message: string) => { + 135| const error = new PluginError('plugin_unsupported', message); + | ^ + 136| CHILD_PROCESS_KILL(child, 'SIGKILL'); + 137| if (capabilityState === 'pending') { + ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 + ❯ ChildProcess.emit node:events:520:22 + ❯ maybeClose node:internal/child_process:1084:16 + ❯ Process.ChildProcess._handle.onexit node:internal/child_process:304:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'plugin_unsupported' } @@ -4143,31 +1186,11 @@ This error originated in "tests/hosted-extension-protocol.test.ts" test file. It The latest test that might've caused the error is "rejects two forged calls after the authoritative first outcome settles". It might mean one of the following: - The error was thrown, while Vitest was running this test. - If the error occurred after the test had been completed, this was the last documented test before it was thrown. - -⎯⎯⎯⎯⎯ Uncaught Exception ⎯⎯⎯⎯⎯ -Error: spawn /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd ENOENT - ❯ Process.ChildProcess._handle.onexit node:internal/child_process:285:19 - ❯ onErrorNT node:internal/child_process:483:16 - ❯ processTicksAndRejections node:internal/process/task_queues:90:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'spawn /home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd', path: '/home/daytona/.relayflows-toolchain/target/2962130851/debug/relayflowd', spawnargs: [ '--data-dir', '/tmp/plugin-load-eR6Dgo/data', 'serve' ] } -This error originated in "tests/plugin-loader.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running. -The latest test that might've caused the error is "journals plugin effect input and receipt through the daemon". It might mean one of the following: -- The error was thrown, while Vitest was running this test. -- If the error occurred after the test had been completed, this was the last documented test before it was thrown. - -⎯⎯⎯⎯⎯⎯ Unhandled Error ⎯⎯⎯⎯⎯⎯⎯ -Error: Worker exited unexpectedly - ❯ ChildProcess.onUnexpectedExit node_modules/tinypool/dist/index.js:118:30 - ❯ ChildProcess.emit node:events:520:22 - ❯ ChildProcess._handle.onexit node:internal/child_process:293:12 - ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ - Test Files 41 failed | 199 passed | 3 skipped (244) - Tests 172 failed | 3542 passed | 67 skipped (3782) - Errors 3 errors - Start at 06:47:58 - Duration 576.59s (transform 5.35s, setup 1.14s, collect 66.12s, tests 625.57s, environment 31ms, prepare 9.91s) + Test Files 5 failed | 238 passed | 1 skipped (244) + Tests 31 failed | 3747 passed | 4 skipped (3782) + Errors 1 error + Start at 07:26:09 + Duration 688.83s (transform 6.18s, setup 1.13s, collect 71.27s, tests 1710.29s, environment 31ms, prepare 9.69s) diff --git a/evidence/gitlab-deploy/mutation-host-propagation.txt b/evidence/gitlab-deploy/mutation-host-propagation.txt new file mode 100644 index 000000000..bb2ccf432 --- /dev/null +++ b/evidence/gitlab-deploy/mutation-host-propagation.txt @@ -0,0 +1,46 @@ +Mutation verification of the `host` propagation in `parseRepository` +(packages/sdk/src/cloud-deploy.ts). The change under test is the final +return, which attaches `host: 'gitlab'` only for a GitLab target: + + return { owner, name, ...(host === 'gitlab' ? { host: 'gitlab' as const } : {}) }; + +Step 1 — revert it to the pre-change `return { owner, name };`: +2cc34891dc35e1866f1e88a3653039215fe92c263c73791ea9edec9868b4bb55 packages/sdk/src/cloud-deploy.ts +$ sed -n 139p packages/sdk/src/cloud-deploy.ts + return { owner, name }; + +Step 2 — the suite fails: +$ cd packages/sdk && ./node_modules/.bin/vitest run tests/cloud-deploy.test.ts + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:group/project +AssertionError: expected { owner: 'group', name: 'project' } to strictly equal { owner: 'group', …(2) } + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:group/sub/project + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository https://gitlab.com/group/sub/project.git +AssertionError: expected { owner: 'group/sub', name: 'project' } to strictly equal { owner: 'group/sub', …(2) } + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository http://GITLAB.com/g/p + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository GITLAB:g/p + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:https://gitlab.com/g/p +AssertionError: expected { owner: 'g', name: 'p' } to strictly equal { owner: 'g', name: 'p', …(1) } + FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/p +AssertionError: expected { …(2) } to strictly equal { …(3) } + FAIL tests/cloud-deploy.test.ts > deployToCloud > requires the GitLab target integration with gitlab:labels=x + FAIL tests/cloud-deploy.test.ts > deployToCloud > requires the GitLab target integration with linear:team=ENG +AssertionError: expected { owner: 'group/sub', name: 'web' } to strictly equal { owner: 'group/sub', …(2) } + FAIL tests/cloud-deploy.test.ts > deployToCloud > refuses an unscoped GitHub source for a GitLab target before HTTP +AssertionError: expected CloudFlowError: Cloud request failed with… { …(4) } to match object { code: 'invalid_input', …(1) } + FAIL tests/cloud-deploy.test.ts > flows deploy / flows deployments > deploys and lists GitLab repositories (json=false) +AssertionError: expected [ 'DEPLOYED a listening', …(5) ] to include ' repository: gitlab:group/sub/web' + FAIL tests/cloud-deploy.test.ts > flows deploy / flows deployments > deploys and lists GitLab repositories (json=true) +AssertionError: expected { owner: 'group/sub', name: 'web' } to strictly equal { owner: 'group/sub', …(2) } + Test Files 1 failed (1) + Tests 12 failed | 88 passed (100) + +Step 3 — restore the change byte-for-byte: +$ git diff --quiet packages/sdk/src/cloud-deploy.ts (vs the pre-mutation file) +identical to pre-mutation copy +2cc34891dc35e1866f1e88a3653039215fe92c263c73791ea9edec9868b4bb55 packages/sdk/src/cloud-deploy.ts + +Step 4 — the suite passes again: +$ cd packages/sdk && ./node_modules/.bin/vitest run tests/cloud-deploy.test.ts + ✓ tests/cloud-deploy.test.ts (100 tests) 2716ms + Test Files 1 passed (1) + Tests 100 passed (100) diff --git a/evidence/gitlab-deploy/targeted.txt b/evidence/gitlab-deploy/targeted.txt new file mode 100644 index 000000000..5c29e983c --- /dev/null +++ b/evidence/gitlab-deploy/targeted.txt @@ -0,0 +1,15 @@ +$ cd packages/sdk && RELAYFLOWD_BIN=../../kernel/target/release/relayflowd RELAYFLOWS_ALLOW_ANALYZER_SKIP=1 \ + ./node_modules/.bin/vitest run tests/cloud-deploy.test.ts tests/relay-cli-surface.test.ts tests/flow-requirements.test.ts + + RUN v2.1.9 /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk + + ✓ tests/relay-cli-surface.test.ts (87 tests) 44ms + ✓ tests/flow-requirements.test.ts (14 tests) 1096ms + ✓ flows check prints REQUIRES > names the helper, the harness and the mcp server of an authored flow 819ms + ✓ tests/cloud-deploy.test.ts (100 tests) 2822ms + + Test Files 3 passed (3) + Tests 201 passed (201) + Start at 07:39:55 + Duration 5.26s (transform 1.76s, setup 43ms, collect 6.70s, tests 3.96s, environment 0ms, prepare 150ms) + diff --git a/evidence/gitlab-deploy/typecheck.txt b/evidence/gitlab-deploy/typecheck.txt new file mode 100644 index 000000000..3815f95e1 --- /dev/null +++ b/evidence/gitlab-deploy/typecheck.txt @@ -0,0 +1,11 @@ +$ cd packages/sdk +$ npm run typecheck && npm run typecheck:tests + +> @relayflows/sdk@2.0.39 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json + + +> @relayflows/sdk@2.0.39 typecheck:tests +> tsc -p tsconfig.tests.json + +exit=0 diff --git a/packages/sdk/src/cloud-deploy.ts b/packages/sdk/src/cloud-deploy.ts index 54b27b33c..941fddaaf 100644 --- a/packages/sdk/src/cloud-deploy.ts +++ b/packages/sdk/src/cloud-deploy.ts @@ -18,10 +18,11 @@ import { parseVersionChange, type CloudFlowVersionChange } from './cloud-version * deploy wizard. `POST /api/v1/flows/deploy` stores one self-contained * authored source and creates a proactive listener whose watch rules match * the chosen ticket sources on the workspace's relayfile projections. There - * is no webhook to register: the GitHub App installation (or Slack/Linear/ - * Jira/Shortcut connection) is the ingress, and each matching ticket launches - * a run of the stored source with `{ approver, issue, event }` as its input, - * inside a fresh branch of the deployment's repository. + * is no webhook to register: the GitHub App installation (or the GitLab, + * Slack, Linear, Jira or Shortcut connection) is the ingress, and each + * matching ticket launches a run of the stored source with + * `{ approver, issue, event }` as its input, inside a fresh branch of the + * deployment's repository. */ export const FLOW_TRIGGER_PROVIDERS = ['github', 'gitlab', 'linear', 'jira', 'shortcut', 'slack'] as const; From 02170be4fd15fee6d8ecb11e93293b7ed3b8fc5d Mon Sep 17 00:00:00 2001 From: khaliqgant Date: Sun, 4 Oct 2026 01:27:39 -0700 Subject: [PATCH 3/3] fix(cli): match Cloud's GitLab coordinate validator; drop evidence files parseRepository now mirrors isValidFlowRepositoryCoordinates from AgentWorkforce/cloud packages/web/lib/flows/flow-repository.ts: at most 20 owner (namespace) segments, a 255-character owner, segments and project name led by a letter or digit, and no trailing ., .git or .atom. Boundary cases are pinned on both sides. The evidence/gitlab-deploy transcripts were working artifacts and are removed. Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/CLOUD.md | 5 +- evidence/gitlab-deploy/README.md | 54 - evidence/gitlab-deploy/environment.txt | 19 - evidence/gitlab-deploy/full-suite.txt | 1196 ----------------- .../mutation-host-propagation.txt | 46 - evidence/gitlab-deploy/targeted.txt | 15 - evidence/gitlab-deploy/typecheck.txt | 11 - packages/sdk/src/cloud-deploy.ts | 22 +- packages/sdk/tests/cloud-deploy.test.ts | 40 +- 9 files changed, 58 insertions(+), 1350 deletions(-) delete mode 100644 evidence/gitlab-deploy/README.md delete mode 100644 evidence/gitlab-deploy/environment.txt delete mode 100644 evidence/gitlab-deploy/full-suite.txt delete mode 100644 evidence/gitlab-deploy/mutation-host-propagation.txt delete mode 100644 evidence/gitlab-deploy/targeted.txt delete mode 100644 evidence/gitlab-deploy/typecheck.txt diff --git a/docs/CLOUD.md b/docs/CLOUD.md index 697096f30..ff834127f 100644 --- a/docs/CLOUD.md +++ b/docs/CLOUD.md @@ -544,7 +544,10 @@ flows undeploy `--repo owner/name` (or `github:owner/name`) targets GitHub. Use `gitlab:group/sub/project` or `https://gitlab.com/group/sub/project.git` for -GitLab, including nested namespaces. GitHub HTTP(S) URLs remain supported. +GitLab, including nested namespaces. GitHub HTTP(S) URLs remain supported. The CLI applies Cloud's GitLab +shape check before deploying: the namespace is at most 20 segments and 255 +characters, and each segment and the project name starts with a letter or +digit and does not end in `.`, `.git` or `.atom`. Optional flags: `--agents claude,codex`, `--name "Issue triage"`, `--draft`, `--no-connect`, `--json`, and further `--on` sources. diff --git a/evidence/gitlab-deploy/README.md b/evidence/gitlab-deploy/README.md deleted file mode 100644 index 432a37d04..000000000 --- a/evidence/gitlab-deploy/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# `flows deploy --repo` targeting a GitLab project (cloud#3801) - -`flows deploy --repo --on gitlab:…` was refused with -`flow_repository_unapproved`: the CLI sent `repository` with no `host`, so Cloud -read every target as GitHub. `--repo` now names a host explicitly and sends -`{ owner, name, host: 'gitlab' }` for a GitLab project; bare `owner/name` still -means GitHub. - -## What is captured here - -| File | Command | Result | -| --- | --- | --- | -| `typecheck.txt` | `npm run typecheck` + `npm run typecheck:tests` | clean, `exit=0` | -| `targeted.txt` | `vitest run tests/cloud-deploy.test.ts tests/relay-cli-surface.test.ts tests/flow-requirements.test.ts` | `201 passed (201)` | -| `mutation-host-propagation.txt` | revert the `host` spread, run, restore, re-run | `12 failed` → restore → `100 passed` | -| `full-suite.txt` | the `SDK suite` section of `.relayflow/check.sh` | `31 failed \| 3747 passed \| 4 skipped` | -| `environment.txt` | the probes behind every one of those 31 failures | both causes reproduce | - -`mutation-host-propagation.txt` is mutation verification in the strict sense: -it reverts exactly the `host: 'gitlab'` spread in `parseRepository`, captures -the 12 failures, restores the line, and re-runs to capture the 100 passes. The -file records `sha256sum` of the source before the mutation and after the -restore; the two digests match, so the restore was byte-for-byte. - -## The 31 full-suite failures are environmental, not this change - -None of them is in a file this change touches, and both causes are machine -properties reproduced in `environment.txt`: - -- **24 failures** (`hosted-extension-isolation`, `hosted-extension-protocol`, - `software-garden-babysitter-composition`, `babysitter-native-extension`) need - a usable bubblewrap. `/usr/bin/bwrap` is installed but - `kernel.apparmor_restrict_unprivileged_userns=1`, and the `sysctl -w` that CI - performs is refused here even under passwordless root because `/proc/sys` is a - sysbox FUSE mount. Those tests gate on `existsSync('/usr/bin/bwrap')`, so a - present-but-unusable bwrap fails where it would otherwise skip. Widening that - guard would weaken the isolation tests that are the point of those files, so - it was not done. -- **7 failures** in `live-kernel.test.ts` need a checkout with no CommonJS - ancestor `package.json`. The `testdata/preflight/` fixtures are deliberately - extensionless ES modules; this checkout sits under `/home/daytona`, whose - `package.json` declares `"type": "commonjs"`, which disables module-syntax - detection and makes the fixture exit 0 having run nothing. CI checks out at - `/home/runner/work//` with no such ancestor. - -Both are recorded in `.relayflow/repair-notes.md` with the shadow-`package.json` -experiment that isolates the second cause. - -## Scope this evidence does not cover - -No run was made against live Cloud: that needs a workspace credential with a -GitLab connection, which this machine does not have. The request body is pinned -by assertion on the captured `POST /api/v1/flows/deploy` body in -`tests/cloud-deploy.test.ts`, not by a live deploy. diff --git a/evidence/gitlab-deploy/environment.txt b/evidence/gitlab-deploy/environment.txt deleted file mode 100644 index 036bfaa1f..000000000 --- a/evidence/gitlab-deploy/environment.txt +++ /dev/null @@ -1,19 +0,0 @@ -$ /usr/bin/bwrap --ro-bind / / --unshare-net --dev /dev /bin/true -bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted -exit=1 - -$ cat /proc/sys/kernel/apparmor_restrict_unprivileged_userns -1 - -$ sudo -n sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 -sysctl: permission denied on key "kernel.apparmor_restrict_unprivileged_userns" - -$ mount | grep " /proc/sys " -sysboxfs on /proc/sys type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other) - ---- the live-kernel cause: an ancestor package.json pins CommonJS --- -$ sed -n /\"type\"/p /home/daytona/package.json - "type": "commonjs", - -$ printf "" | node testdata/preflight/analyze-story-stub-cli --relayflows-adapter-v1 -exit=0 (ES-module fixture silently ran nothing as CommonJS) diff --git a/evidence/gitlab-deploy/full-suite.txt b/evidence/gitlab-deploy/full-suite.txt deleted file mode 100644 index eecb0dd33..000000000 --- a/evidence/gitlab-deploy/full-suite.txt +++ /dev/null @@ -1,1196 +0,0 @@ -$ bash .relayflow/check.sh # SDK suite section (cloud-runtime-artifact.yml) -# captured verbatim from the check.sh run on this machine - -=== SDK suite === - -> @relayflows/sdk@2.0.39 typecheck -> tsc --noEmit && tsc -p tsconfig.type-tests.json - - -> @relayflows/sdk@2.0.39 build -> tsc && node scripts/make-cli-executable.mjs - - -> @relayflows/sdk@2.0.39 typecheck:tests -> tsc -p tsconfig.tests.json - - - RUN v2.1.9 /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk - -stdout | tests/live-kernel.test.ts -LIVE_KERNEL relayflowd=/home/daytona/.relayflow-v2-supervisor/durable/repository/kernel/target/release/relayflowd -LIVE_KERNEL flows=/home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk/dist/cli.js - - ✓ tests/preflight.test.ts (70 tests) 129ms - ✓ tests/cli.test.ts (71 tests) 3041ms - ✓ flows check CLI > binds a checked relative wrapper to the flow directory for worker execution 556ms - ✓ flows check CLI > resolves a bare PATH-resolved claude with no declared model, in an isolated PATH 457ms - ✓ flows run/resume CLI over the journal protocol > follows a worker wait past a locally expired lease until the daemon settles it 1045ms - ✓ tests/cloud-read.test.ts (46 tests) 50ms -stderr | tests/live-kernel.test.ts > built flows CLI against live relayflowd > hn-monitor analyze-story reaches done through the real Claude analyzer CLI -LIVE_ANALYZER_UNAVAILABLE: "/home/daytona/.relayflow-v2-supervisor/durable/repository/testdata/preflight/analyze-story-claude-cli" does not identify as relayflows-agent-cli-v1 — SKIPPING. This skip is diagnostics, not gate-2 acceptance evidence. - -stdout | tests/live-kernel.test.ts > surface resume after a real daemon kill > resumes a three-step run with each successful completion exactly once -LIVE_KERNEL kill -9 pid=75031 run=01M42WYBN9E1J5A7NZ480EDPK3 while step=two state=Running - - ❯ tests/live-kernel.test.ts (32 tests | 7 failed | 1 skipped) 55842ms - ✓ built flows CLI against live relayflowd > twenty-six-step reuses 25 durable completions after editing the failed final step 1928ms - ✓ built flows CLI against live relayflowd > runs rung (a), parks rung (b), and keeps JSON report-shaped 2843ms - ✓ built flows CLI against live relayflowd > allows a deterministic run to exceed the bounded request timeout 32483ms - ✓ built flows CLI against live relayflowd > follows a live worker dispatch through flows run 572ms - ✓ built flows CLI against live relayflowd > runs an agent CLI end to end through the SDK worker 546ms - ✓ built flows CLI against live relayflowd > f.agent lowers to a real agent step and dispatches through a live worker 699ms - ✓ built flows CLI against live relayflowd > can always get a parked run to a late-attaching worker 5552ms - ✓ built flows CLI against live relayflowd > reports a real manual-recovery NeedsHuman state as parked 468ms - × built flows CLI against live relayflowd > runs hn-monitor analyze-story end-to-end via a stub agent CLI (gate 2 clause 2 demo) 716ms - → expected { …(12) } to match object { output: { …(3) }, …(1) } -(22 matching properties omitted from actual) - × built flows CLI against live relayflowd > hn-monitor analyze-story FAILS verification when the CLI omits required schema fields 515ms - → expected { …(12) } to match object { …(3) } -(21 matching properties omitted from actual) - × built flows CLI against live relayflowd > agent step preserves the CliResult wrapper as output when the CLI emits non-JSON text 610ms - → expected null not to be null - × built flows CLI against live relayflowd > AgentWorker exposes wake_context to the CLI via RELAYFLOW_WAKE_CONTEXT env var (real analyzer prerequisite) 600ms - → Cannot read properties of null (reading 'story_title') - × built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_WAKE_CONTEXT UNSET when the run has no wake_context (undefined-vs-null pin) 572ms - → Cannot read properties of null (reading 'env_present') - ✓ built flows CLI against live relayflowd > AgentWorker passes a declared model to an identified wrapper as RELAYFLOW_MODEL 683ms - ✓ built flows CLI against live relayflowd > AgentWorker refuses a nonconforming journal-submitted wrapper before exposing RELAYFLOW_MODEL 585ms - ✓ built flows CLI against live relayflowd > AgentWorker executes the raw claude adapter with its real model flag 587ms - ✓ built flows CLI against live relayflowd > AgentWorker executes the raw codex adapter with its real model flag 549ms - × built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_MODEL UNSET when the step declares no model 663ms - → Cannot read properties of null (reading 'story_title') - ✓ built flows CLI against live relayflowd > preflights before journaling and names an unreachable socket 847ms - ✓ built flows CLI against live relayflowd > starts exactly one daemon when two runs race for one empty data dir 591ms - ✓ subprocess_gate output capture against live relayflowd > journals the gate command output and reports both tails 977ms - ✓ surface resume after a real daemon kill > resumes a three-step run with each successful completion exactly once 1038ms - × a relayflow can be scheduled: tick source against live relayflowd > a tick spawns a real run whose step reports the SCHEDULED instant 607ms - → expected null to deeply equal { schedule_id: 'heartbeat-1m', …(3) } - ✓ tests/cloud-live.test.ts (55 tests) 2057ms - ✓ argv and wiring > routes both live invocations through runCli, and refuses a missing run id 2004ms - ❯ tests/hosted-extension-isolation.test.ts (22 tests | 13 failed) 3873ms - × hosted extension capability isolation > executes the exact capability-only handler for a queued receipt 218ms - → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - × hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt 221ms - → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - × hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization 232ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - × hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic 227ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - × hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists 245ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - × hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch 215ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - × hosted extension capability isolation > shields verified Surface files before async settlement 223ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - × hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child 211ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality - × hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs 223ms - → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - × hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation 218ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_unsupported', …(1) } - × hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port 221ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic 216ms - → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - × hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior 230ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ✓ hosted extension capability isolation > fails closed when the handler omits or repeats the single capability call 644ms - ✓ tests/cloud-sync.test.ts (40 tests) 908ms - ✓ tests/observer-link.test.ts (44 tests) 174ms - ✓ tests/cloud-deploy.test.ts (100 tests) 2307ms - ✓ tests/authored-flow.test.ts (38 tests) 828ms - ✓ tests/plugin-extension.test.ts (94 tests) 463ms - ✓ tests/cloud-transcript-codex.test.ts (44 tests) 21ms - ✓ tests/worker-cli.test.ts (25 tests) 31085ms - ✓ registered CLI model defaults > passes the same priced Claude default to the real provider invocation 493ms - ✓ registered CLI model defaults > uses the explicitly supplied agent environment for the provider subprocess 426ms - ✓ registered CLI model defaults > dispatches canonical generic bytes with the preflight-proved adapter identity 445ms - ✓ direct transport lifecycle evidence > classifies only the exact Codex stdin lifecycle signature as retryable 428ms - ✓ direct transport lifecycle evidence > records a signal close separately from an ordinary nonzero exit 1038ms - ✓ direct transport lifecycle evidence > records a spawn error code without treating a missing executable as transient 421ms - ✓ direct transport lifecycle evidence > journals classified lifecycle evidence and reports crashed instead of generic worker_error 626ms - ✓ step discovery environment > names the run, step, attempt and an absolute data dir for a direct agent spawn 692ms - ✓ step discovery environment > exports none of the four without a data dir, even when the worker inherited them 589ms - ✓ wrapper discovery environment > sets the four names from the dispatch and still refuses ambient values and other secrets 569ms - ✓ wrapper discovery environment > exports none of the four to a wrapper without a data dir, even when the worker inherited them 519ms - ✓ custom wrapper execution identity > passes an explicit safe environment at identification and execution 565ms - ✓ custom wrapper execution identity > refuses a wrapper symlink retarget before delivering private values 545ms - ✓ custom wrapper execution identity > bounds wrapper execution after acknowledgement 607ms - ✓ custom wrapper execution identity > bounds captured wrapper output 467ms - ✓ custom wrapper execution identity > refuses a duplicate execute protocol frame 548ms - ✓ custom wrapper execution bounds are reader-owned > resolves when a conforming wrapper leaks a stdio pipe to a background helper 1887ms - ✓ custom wrapper execution bounds are reader-owned > resolves when the leaked helper inherits stderr only 1764ms - ✓ custom wrapper execution bounds are reader-owned > resolves when a wrapper leaks a stdio pipe and exits before identifying 3533ms - ✓ custom wrapper execution bounds are reader-owned > journals a completionReason at the default bound when a wrapper leaks a stdio pipe 11593ms - ✓ custom wrapper execution bounds are reader-owned > accepts an execute token and an over-8KiB payload flushed in one write 568ms - ✓ custom wrapper execution bounds are reader-owned > accepts the same over-8KiB payload whether or not it coalesces with the execute token 1707ms - ✓ custom wrapper execution bounds are reader-owned > still bounds an un-terminated handshake buffer and names the bound 530ms - ✓ delivers the journaled memory pack to the real wrapper and excludes its charge from completion usage 522ms - ✓ tests/shipped-source-model-provenance.test.ts (1 test) 99985ms - ✓ shipped-source model provenance > does not treat mutable aliases or incomplete named agents as pinned 99984ms -(node:76166) ExperimentalWarning: SQLite is an experimental feature and might change at any time -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/cli-status.test.ts (27 tests) 1252ms - ✓ flows status > resolves the run with no arguments from inside a worker-spawned agent 1010ms - ✓ tests/run-state.test.ts (28 tests) 11ms - ✓ tests/cloud-run.test.ts (59 tests) 748ms - ✓ tests/relay-cli-surface.test.ts (87 tests) 38ms - ✓ tests/flow-extension-compose.test.ts (33 tests) 6607ms - ✓ composing flow extensions onto a base flow > composes two extensions in declaration order, and the order is the lockfile order 549ms - ✓ composing flow extensions onto a base flow > flows check reports the composition and keeps the composed triggers deliverable 1094ms - ✓ composing flow extensions onto a base flow > flows check probes extension preflight before reporting the project healthy 303ms - ✓ composing flow extensions onto a base flow > uses extension permissions for hosted deploy preflight and the deploy body 324ms - ✓ tests/agent-transcript.test.ts (29 tests) 272ms - ❯ tests/babysitter-native-extension.test.ts (41 tests | 1 failed) 2222ms - × native Babysitter extension > runs the exact published 2.0.26 native bytes in the isolated capability path 305ms - → promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ✓ native Babysitter extension > checks the reviewed base pin with captured hash methods 341ms - ✓ native Babysitter extension > checks the reviewed base pin with the captured hash factory 351ms -(node:76365) [FLOWS_ROOT_LEASE_LOST] Warning: authored root run_id=root-run attempt=1: lease_conflict: attempt has no active worker lease. Waiting for the kernel to retry it. -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/authored-root.test.ts (22 tests) 421ms - ✓ tests/authored-completion-detail.test.ts (59 tests) 152ms - ✓ tests/shipped-source-worker-call-forms.test.ts (1 test) 16577ms - ✓ shipped-source worker call forms > fails closed for computed keys, assertions, binds, call, and apply 16576ms - ✓ tests/step-failure-diagnostic.test.ts (26 tests) 70ms - ✓ tests/stop-process-group.test.ts (11 tests) 14715ms - ✓ every stop reaches the process group, not just the direct child > exits the run after an execution-timeout stop 1072ms - ✓ every stop reaches the process group, not just the direct child > exits the run after a protocol terminate stop 537ms - ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after a protocol terminate stop 1582ms - ✓ every stop reaches the process group, not just the direct child > kills a SIGTERM-deaf grandchild after an execution-timeout stop 2051ms - ✓ every stop reaches the process group, not just the direct child > holds the loop open long enough for the escalation to run 1097ms - ✓ every stop reaches the process group, not just the direct child > bounds forced-stop confirmation when a group remains unprovable 1012ms - ✓ a wrapper that exits with no execution deadline still drains > reports the wrapper result and reaps a grandchild holding its pipes 805ms - ✓ a wrapper that exits with no execution deadline still drains > reaps a SIGTERM-deaf grandchild holding its pipes 1895ms - ✓ a wrapper that exits with no execution deadline still drains > settles on its own deadline when an escaped holder withholds close 4338ms - ✓ tests/mcp.test.ts (34 tests) 14205ms - ✓ MCP preflight and transports > flows check refuses an undeclared server with exit 2 and no daemon 871ms - ✓ MCP preflight and transports > flows check reports a refusing server and leaves no PID 953ms - ✓ MCP preflight and transports > kills a SIGTERM-resistant silent child after a parent-owned handshake deadline 1314ms - ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with inherit stdio before cleanup finishes 1066ms - ✓ MCP preflight and transports > reaps a SIGTERM-resistant descendant with ignore stdio before cleanup finishes 2024ms - ✓ MCP preflight and transports > rejects close when forced group death remains unprovable 2071ms - ✓ MCP preflight and transports > cancels force escalation when close follows an exited child 1180ms - ✓ MCP preflight and transports > waits for child close when the transport cannot own a process group 1054ms - ✓ MCP preflight and transports > cancels force escalation for an already-closed child without a process group 1175ms - ✓ MCP preflight and transports > reports malformed connection configuration as config_invalid 921ms - ✓ authored MCP effects against the real kernel > reports a dropped tool connection as a failed CLI run 677ms - ✓ tests/step-attempt-history.test.ts (23 tests) 18ms - ✓ tests/daemon-lifecycle.test.ts (42 tests) 40ms - ✓ tests/close-pr-flow.test.ts (35 tests) 19168ms - ✓ close-pr journaled repair loop > reads an existing Bugbot finding, repairs in the same worktree, pushes and re-verifies before merging 3026ms - ✓ close-pr journaled repair loop > opens a PR and feeds failed CI logs into the repair agent 2574ms - ✓ close-pr journaled repair loop > pins the current generated model for codex when no override is supplied 4392ms - ✓ close-pr journaled repair loop > pins the current generated model for claude when no override is supplied 996ms - ✓ close-pr journaled repair loop > parks after exactly three nonconverging repairs, with accumulated blockers 2768ms - ✓ close-pr journaled repair loop > can converge on the third repair 2590ms - ✓ close-pr journaled repair loop > executes the deterministic commit and force-push steps against a local Git remote, including a no-op repair 2597ms - ❯ tests/hosted-extension-protocol.test.ts (27 tests | 8 failed) 41958ms - × hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary 235ms - → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - × hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls 224ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls 220ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls 211ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - × hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles 10140ms - → hostile child did not invoke the adapter - × hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error 10151ms - → hostile child did not invoke the adapter - × hosted extension hostile protocol > waits for a pending adapter to resolve after a forged child error 10141ms - → hostile child did not invoke the adapter - × hosted extension hostile protocol > returns a typed adapter rejection even when the hostile child hangs 10141ms - → hostile child did not invoke the adapter - ✓ tests/artifact-gates.test.ts (27 tests) 245ms - ✓ tests/hosted-base-snapshot.test.ts (18 tests) 2073ms - ✓ hosted base private snapshot > stops streaming project entries at the shared count limit 1991ms - ✓ tests/shipped-source-flow-provenance-repairs.test.ts (1 test) 31665ms - ✓ shipped-source flow provenance repairs > audits repaired writer, alias, binding, and cyclic provenance forms 31665ms - ✓ tests/cloud-connect.test.ts (24 tests) 3182ms - ✓ hosted verbs connect before they submit > flows run --cloud submits once the prompt connected the integration 2175ms - ✓ tests/journal-client.test.ts (17 tests) 82ms - ✓ tests/verb-field-lint.test.ts (102 tests) 345ms - ✓ tests/authored-node-runtime.test.ts (16 tests) 50697ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > serializes the immutable prepared binding facts through the Node and CLI boundary 1989ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > suppresses the loader warning while preserving authored experimental warnings 2071ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > awaits agent plus three run steps and resumes without repeating effects 2930ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > accepts a predicate-gated flow: the `.gate` child is journaled, verified, and not counted as an authored step 3202ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > resumes a run killed mid-step: the retried child passes the durable result verifier 3597ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > parks an f.human across the IPC boundary, answers it, and resumes the Node body with the answer 4476ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent SIGKILL and replays completed children before success 3895ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent SIGTERM and replays completed children before success 3825ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent blocked-SIGKILL and replays completed children before success 4129ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > stops on parent SIGKILL and replays completed children before declined 3881ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses unawaited rather than reporting terminal success 2152ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses manual then rather than reporting terminal success 2402ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > dispatches the captured child graph even when the source changes before execution 2188ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > rejects a forged result frame without durable completion 1994ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses missing Node before body effects or root admission 1115ms - ✓ Bun 1.4.0 standalone → native Node authored lifecycle > refuses an old Node candidate before body effects 1131ms - ✓ tests/validate.test.ts (68 tests) 24ms - ✓ tests/bundle.test.ts (26 tests) 9627ms - ✓ immutable bundles > returns exit 2 naming a byte-flipped payload and refuses to reuse corruption 398ms - ✓ immutable bundles > verifies with --verify in any position and answers --json with one object 826ms - ✓ immutable bundles > refuses --out with --verify rather than ignoring the destination 397ms - ✓ immutable bundles > builds and verifies the canonical YAML fixture through the compiled CLI 1350ms - ✓ immutable bundles > emits the ephemeral warning on CLI stderr and uses the default output directory 832ms - ✓ immutable bundles > refuses build-provable CLI resolution errors without environment probes 419ms - ✓ immutable bundles > builds a standalone TS fixture twice with identical executable hashes 2770ms - ✓ immutable bundles > refuses to label installed dependency drift with lockfile pins 402ms - ✓ immutable bundles > refuses invalid CLI arguments %j 404ms - ✓ immutable bundles > refuses invalid CLI arguments "--out" 434ms - ✓ immutable bundles > refuses invalid CLI arguments "--verify" 399ms - ✓ immutable bundles > refuses invalid CLI arguments "--verify" 414ms - ✓ immutable bundles > refuses invalid CLI arguments "--out" 413ms - ✓ tests/agent-relay-transport.test.ts (17 tests) 2294ms - ✓ Relay completion at the journal boundary > does not complete at readiness and journals exact output, receipt, and priced accounting 1012ms - ✓ Relay completion at the journal boundary > aborts polling on rejected renewal and never writes a stale completion 1002ms - ✓ tests/authored-node-result.test.ts (44 tests) 19ms - ✓ tests/tick-source.test.ts (33 tests) 20ms - ✓ tests/flow-executor-chain.test.ts (14 tests) 10221ms - ✓ flow executor LLM and output-binding chain > runs f.llm -> f.agent -> f.run with schema-verified journal output and the exact allowed model 1043ms - ✓ flow executor LLM and output-binding chain > runs a dollar-budgeted authored Claude agent with the same default used by preflight 754ms - ✓ flow executor LLM and output-binding chain > preserves JSON values without promoting them to process wrappers: null 305ms - ✓ flow executor LLM and output-binding chain > runs the exact authored flagship f.llm -> f.agent -> f.run path through the durable CLI root 1488ms - ✓ flow executor LLM and output-binding chain > resumes an interrupted durable authored root without replaying completed flagship effects 3225ms - ✓ flow executor LLM and output-binding chain > passes a declarative verified value through an agent into a deterministic artifact 854ms - ✓ flow executor LLM and output-binding chain > flows run consumes YAML bindings and resume reuses the original journal output 1005ms - ✓ tests/authored-step-graph.test.ts (25 tests) 886ms - ✓ the authored step DAG > does not walk a long-running step's own polling chain to find its dependents' edges 337ms - ✓ tests/cloud-mirror.test.ts (14 tests) 33ms - ✓ tests/authored-step-terminal-completion.test.ts (13 tests) 4882ms - ✓ readCompletedStepOutput on an adopted gated child whose gate has not started > refuses a producer success when the wait ends with the run still not terminal 2006ms - ✓ readCompletedStepOutput given a suspended known status (#441) > refuses a producer success while the child is still not terminal 2007ms - ✓ tests/authored-flow-lifecycle-executor.test.ts (27 tests) 594ms - ✓ tests/step-failure-excerpt.test.ts (42 tests) 190ms - ✓ tests/pr-review-post.test.ts (21 tests) 2038ms -(node:83327) ExperimentalWarning: SQLite is an experimental feature and might change at any time -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/cloud-mirror-step.test.ts (17 tests) 15ms - ✓ tests/cli-replay.test.ts (38 tests) 1235ms - ✓ flows replay > --json is byte-identical across two CLI invocations (diff) 857ms - ✓ tests/authored-flow-slack.test.ts (7 tests) 1788ms - ✓ authored Slack helper effects > replays after SIGKILL before confirm with the same token and one successful completion 558ms - ✓ authored Slack helper effects > replays after SIGKILL before complete with the same token and one successful completion 626ms - ✓ tests/wrapper-execution-duration.test.ts (7 tests) 10876ms - ✓ keeps the handshake deadline independent of the removed execution deadline 10058ms - ✓ still lets a lease abort stop an unlimited wrapper before it produces output 511ms - ✓ tests/tick-runner.test.ts (22 tests) 2447ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms fractional as an invocation error 401ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms exponent notation as an invocation error 400ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms hex as an invocation error 397ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms trailing text as an invocation error 408ms - ✓ CLI argument parsing refuses coercion rather than accepting it > refuses --interval-ms empty as an invocation error 401ms - ✓ CLI argument parsing refuses coercion rather than accepting it > accepts an exact integer and proceeds past parsing 408ms - ✓ tests/authored-step-index.test.ts (17 tests) 19ms - ✓ tests/authored-agent-artifacts.test.ts (5 tests) 339ms - ✓ tests/direct-input.test.ts (6 tests) 6477ms - ✓ direct .flow.ts input through the built CLI and live runtime > returns exit 3 for an authored human handoff and persists its outcome 593ms - ✓ direct .flow.ts input through the built CLI and live runtime > returns exit 1 for an authored step_failed verdict and persists its outcome 738ms - ✓ direct .flow.ts input through the built CLI and live runtime > executes inline and file JSON input through relayflowd 2595ms - ✓ direct .flow.ts input through the built CLI and live runtime > refuses missing and malformed input before contacting relayflowd 1658ms - ✓ direct .flow.ts input through the built CLI and live runtime > does not run the authored body before daemon availability 493ms - ✓ direct .flow.ts input through the built CLI and live runtime > refuses oversized file input before contacting relayflowd 399ms - ✓ tests/worker-transcript.test.ts (9 tests) 894ms - ✓ tests/gate-contract.test.ts (20 tests) 156ms -Stopped: a Linear ticket must carry its identifier (like TECH-42) so the pull request can link back. -Stopped: a Linear ticket must carry its identifier (like TECH-42) so the pull request can link back. -Stopped: invalid pull-request metadata (duplicate-linear-closing-reference). No branch was pushed and no pull request was opened. -Stopped: invalid pull-request metadata (duplicate-linear-closing-reference). No branch was pushed and no pull request was opened. -Stopped: invalid pull-request metadata (duplicate-github-closing-reference). No branch was pushed and no pull request was opened. -Stopped: invalid pull-request metadata (malformed-review-scope). No branch was pushed and no pull request was opened. -Stopped: invalid pull-request metadata (malformed-review-scope). No branch was pushed and no pull request was opened. -Stopped: could not read the reviewed head commit. Nothing was pushed. -Stopped: could not read the reviewed head commit. Nothing was pushed. -Stopped: could not read the reviewed head commit. Nothing was pushed. - ✓ tests/canonical-software-factory.test.ts (25 tests) 737ms - ✓ tests/authored-human.test.ts (13 tests) 97ms - ✓ tests/cloud-schedule.test.ts (17 tests) 4491ms - ✓ schedule lowering > marks a non-grid cron as Cloud-only rather than approximating it, with a silence budget from its own cadence 1884ms - ✓ flows check prints declared schedules > shows the lowering for a fixed interval and the Cloud-only note for a real cron 2021ms - ✓ tests/authored-run-failure-evidence.test.ts (9 tests) 885ms - ✓ the child index after the process that wrote it is gone > still names every child, with its own run id, after a daemon restart 535ms - ✓ tests/cli-hn-monitor.test.ts (16 tests) 96ms - ✓ tests/worker-cli-result-exit.test.ts (7 tests) 34841ms - ✓ a Claude agent step completes on its result, not only on process exit > settles a hung, successful run within the grace and stops its whole tree 32617ms - ✓ a Claude agent step completes on its result, not only on process exit > maps an error result on a hung run to a failed exit 31617ms - ✓ a Claude agent step completes on its result, not only on process exit > leaves a hang before any result to the existing stops 32018ms - ✓ an agent tree does not outlive the process that spawned it > kills the agent group when the run process is terminated by SIGTERM 796ms - ✓ an agent tree does not outlive the process that spawned it > removes a wrapper alias on host exit after group death stays unprovable 1338ms - ✓ tests/spec-parity.test.ts (43 tests) 584ms - ✓ tests/agent-artifacts-live.test.ts (5 tests) 4306ms - ✓ agent artifacts and gates through the built CLI, a real daemon and the local agent > journals the files the agent wrote, including under a dot-directory, and every artifact gate passes on that journal 1089ms - ✓ agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run when the artifact_exists gate names a file the agent did not write 861ms - ✓ agent artifacts and gates through the built CLI, a real daemon and the local agent > fails the run with the author reason when a predicate gate returns false, journaling the verdict 780ms - ✓ review follow-ups > applies a predicate gate on a helper step too, and journals its verdict 841ms - ✓ review follow-ups > records predicate verdicts on the root run so a resume reuses them instead of re-running the closure 734ms - ✓ tests/authored-activity.test.ts (16 tests) 108ms - ✓ tests/named-gate-diagnostics.test.ts (17 tests) 514ms - ✓ tests/run-projection.test.ts (13 tests) 12ms - ✓ tests/daemon-lifecycle-live.test.ts (9 tests) 7382ms - ✓ flows run against a data dir with no daemon (§6 test 7) > cold start spawns exactly one daemon, the run succeeds, and the daemon outlives the CLI 514ms - ✓ flows run against a data dir with no daemon (§6 test 7) > polls, bounded, for a daemon that holds the lock before it binds 1516ms - ✓ flows run against a data dir with no daemon (§6 test 7) > attaches to a serving daemon that has not published a connection file 565ms - ✓ flows run against a data dir with no daemon (§6 test 7) > a second run attaches to the daemon the first one started, spawning nothing 937ms - ✓ flows run against a data dir with no daemon (§6 test 7) > detects a stale connection file left by a hard kill and starts a fresh daemon 1061ms - ✓ concurrent invocations against one empty data dir (§6 test 15) > ends with exactly one daemon owning the socket, and both runs succeed 1296ms - ✓ refusals from a spawn that cannot produce a daemon > names relayflowd_not_found rather than falling through to PATH 465ms - ✓ refusals from a spawn that cannot produce a daemon > names daemon_start_failed and quotes the daemon log when startup dies 516ms - ✓ refusals from a spawn that cannot produce a daemon > refuses a daemon speaking another protocol version instead of binding over it 512ms - ✓ tests/agent-transcript-live.test.ts (4 tests) 3571ms - ✓ the transcript digest through the built CLI, a real daemon and the local agent > preserves structured agent failure details and its completed root index 925ms - ✓ the transcript digest through the built CLI, a real daemon and the local agent > preserves structured llm failure details and its completed root index 871ms - ✓ the transcript digest through the built CLI, a real daemon and the local agent > journals the digest in trajectory_tail on a successful agent step and writes the file it points at 920ms - ✓ the transcript digest through the built CLI, a real daemon and the local agent > on a failed agent step, names the failure and the transcript in the terminal diagnostic, redacted 854ms - ✓ tests/shipped-source-cubic-regressions.test.ts (5 tests) 12517ms - ✓ shipped-source adversarial provenance regressions > retains callable writes through member mutation, spreads, this, holes, and alternate receivers 7058ms - ✓ shipped-source adversarial provenance regressions > does not manufacture intrinsic writes or comma-left callables 2377ms - ✓ shipped-source adversarial provenance regressions > treats constructor and implicit-this receiver escapes as possible worker writes 645ms - ✓ shipped-source adversarial provenance regressions > maps pure helper parameters and refuses mutations or conditional assignments as proofs 1811ms - ✓ shipped-source adversarial provenance regressions > does not apply later alias assignments retroactively to copied values 625ms - ✓ tests/resume-local-agent.test.ts (8 tests) 14ms - ✓ tests/wrapper-exit-drain.test.ts (9 tests) 3268ms - ✓ reports a signalled wrapper death while a pipe is held, with its output intact 385ms - ✓ lets a lease abort outrank a successful exit still being drained 554ms - ✓ does not let a later drain overwrite abort while group confirmation is pending 632ms -(node:86200) Warning: Transcript tail for run-9/analyze attempt 1 (stdout) could not be written; the step continues without it: EACCES: permission denied, mkdir '/tmp/transcript-tail-s2J9yY/runs/run-9/steps' -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/transcript-tail.test.ts (11 tests) 1313ms - ✓ direct agent spawn > tees stdout and stderr into tail files that name the dispatch 562ms - ✓ direct agent spawn > completes the step when the tail directory cannot be created 464ms - ✓ tests/advisory-outcome.test.ts (23 tests) 78ms - ✓ tests/agent-cwd-live.test.ts (4 tests) 3008ms - ✓ agents drive two checkouts under one run root > runs each CLI in its declared directory, and the run is not refused as an unknown field 921ms - ✓ agents drive two checkouts under one run root > gates on an artifact path relative to the agent directory 783ms - ✓ a declaration this contract cannot honour is refused at its own edge > refuses a path that climbs out of the run root without starting a run at all 610ms - ✓ a declaration this contract cannot honour is refused at its own edge > fails the step with the reason when the directory is not there, rather than running somewhere else 693ms - ✓ tests/authored-helpers.test.ts (6 tests) 2719ms - ✓ runs every available provider through the real kernel and resumes completed effects without a second write 1321ms - ✓ replays after SIGKILL before confirm with the same token and one successful completion 530ms - ✓ replays after SIGKILL before complete with the same token and one successful completion 520ms - ✓ tests/cloud-mirror-session.test.ts (12 tests) 13ms - ✓ tests/agent-cwd.test.ts (53 tests) 50ms - ✓ tests/authored-flow-operation.test.ts (24 tests) 532ms - ✓ tests/budget-attribution.test.ts (10 tests) 12ms - ✓ tests/helper-reference.test.ts (30 tests) 24ms - ✓ tests/pty-sidechannel.test.ts (14 tests) 9328ms - ✓ view attach preserves worker completion and marks only drive 1008ms - ✓ drive attach preserves worker completion and marks only drive 554ms - ✓ passthrough attach preserves worker completion and marks only drive 1004ms - ✓ none attach preserves worker completion and marks only drive 986ms - ✓ none subscriber lets an unattended CLI read EOF 641ms - ✓ view subscriber lets an unattended CLI read EOF 620ms - ✓ passthrough subscriber lets an unattended CLI read EOF 547ms - ✓ incomplete subscriber lets an unattended CLI read EOF 613ms - ✓ unattended Codex receives closed stdin before startup instead of entering its additional-input lifecycle 701ms - ✓ ends driven stdin when the last drive peer disconnects after spawn 670ms - ✓ rejects drive after EOF without marking human intervention 987ms - ✓ delivers all drive bytes in order across child stdin backpressure 959ms - ✓ tests/flow-requirements.test.ts (14 tests) 900ms - ✓ flows check prints REQUIRES > names the helper, the harness and the mcp server of an authored flow 647ms - ✓ tests/backlog-picker.test.ts (14 tests) 44ms - ✓ tests/plugin-store-bounds.test.ts (11 tests) 100ms - ✓ tests/cloud-mirror-live.test.ts (3 tests) 2842ms - ✓ a local run on the Cloud dashboard > registers, publishes its steps and its log, and reports terminal last 561ms - ✓ a local run on the Cloud dashboard > sends nothing at all unless it is asked to 1366ms - ✓ a local run on the Cloud dashboard > publishes a composed authored flow as one connected dashboard DAG 810ms - ✓ tests/classify-outcome.test.ts (11 tests) 5926ms - ✓ classifyOutcome > gives up and reports when a running run never becomes classifiable 2009ms - ✓ the remedy on a worker park > follows a step through a retry backoff longer than the unclassified bound 3005ms - ✓ the remedy on a worker park > follows a run.start outcome that is already running on a retried attempt 502ms - ✓ tests/authored-completion-recovery.test.ts (5 tests) 461ms - ✓ tests/backlog-picker-flow.test.ts (6 tests) 266ms - ✓ tests/hosted-extension-protocol-intrinsics.test.ts (6 tests) 12ms - ✓ tests/preflight-permissions-unenforced.test.ts (17 tests) 546ms - ✓ an authored TypeScript body is out of reach, and spec.ts says so > checks clean on a .flow.ts whose body declares permissions 498ms - ✓ tests/budget-unmetered-live.test.ts (4 tests) 1327ms - ✓ unmetered budget spend through the live kernel > runs an unpriced step under a dollar budget without tripping it, journaling unknown dollars 406ms - ✓ unmetered budget spend through the live kernel > journals an unpriced claude step's reported cost beside unchanged metered usage, and the verdict is unchanged 347ms - ✓ unmetered budget spend through the live kernel > still counts an unpriced step toward a token budget 301ms - ✓ tests/stuck-run-triage.test.ts (22 tests) 3108ms - ✓ stuck-run-triage shell text > collects tails with no GNU timeout on PATH, as on a stock macOS 3065ms - ✓ tests/hosted-extension-routing.test.ts (7 tests) 8ms - ✓ tests/webhook.test.ts (9 tests) 786ms - ✓ webhook ingress > checks TS declarations against flows.json without invoking handlers 701ms - ✓ tests/redact.test.ts (54 tests) 10ms - ✓ tests/cli-probe.test.ts (17 tests) 1835ms - ✓ tests/authored-advisory-run-live.test.ts (16 tests) 697ms - ✓ tests/webhook-live.test.ts (6 tests) 9822ms - ✓ executes and deduplicates 'app_mention' only for its provider and matching payload 1480ms - ✓ executes and deduplicates 'reaction_added' only for its provider and matching payload 1473ms - ✓ executes and deduplicates 'pull_request' only for its provider and matching payload 1474ms - ✓ flows serve-webhook writes JSON before the daemon starts, then journals and archives exactly once 1459ms - ✓ replays a dropped file after SIGKILL before spawn 473ms - ✓ resumes the same journal after SIGKILL after spawn and before acknowledgement 3463ms - ✓ tests/local-agent-live.test.ts (7 tests) 42019ms - ✓ built CLI local agent against a real daemon > dispatches through the wrapper and keeps --json stdout report-shaped 774ms - ✓ built CLI local agent against a real daemon > runs beyond the initial 30-second lease without a second invocation 35832ms - ✓ built CLI local agent against a real daemon > renders actual agent completion in text output 750ms - ✓ built CLI local agent against a real daemon > returns a failed run when the agent process fails 784ms - ✓ built CLI local agent against a real daemon > prints a remedy that runs the parked authored flow to completion 1423ms - ✓ built CLI local agent against a real daemon > prints a remedy that runs, for a run started from an input file too long to be one 1838ms - ✓ built CLI local agent against a real daemon > refuses a workspace it cannot pin before invoking the agent 618ms - ✓ tests/cli-watch.test.ts (10 tests) 17299ms - ✓ flows check --watch > rechecks syntax errors, clears once, and returns the last refusal on Ctrl-C 1393ms - ✓ flows check --watch > streams JSON lines without ANSI, recovers after atomic saves, and exits zero after repair 1969ms - ✓ flows check --watch > coalesces 20 concurrent saves into at most two rechecks 1970ms - ✓ flows check --watch > watches transitive relative use imports, cycles, and nearest config changes 2488ms - ✓ flows check --watch > refreshes the import graph and notices missing imports being created 2551ms - ✓ flows check --watch > reloads authored TypeScript instead of reusing the first imported definition 1950ms - ✓ flows check --watch > detects a nearer config appearing and falls back after it is deleted 2192ms - ✓ flows check --watch > keeps watching after the target is deleted and recreated 2006ms - ✓ flows check --watch > queues changes during a slow check without overlapping checks 775ms - ✓ tests/human-live.test.ts (3 tests) 6800ms - ✓ f.human against a real daemon > parks with the question, refuses wrong answers, records one, and resumes to success 4145ms - ✓ f.human against a real daemon > a "no" is a value the body branches on: declined, exit 0, no effect 1599ms - ✓ f.human against a real daemon > refuses to answer a run the daemon does not know 1054ms - ✓ tests/check-worker-surface.test.ts (11 tests) 87ms -(node:89545) ExperimentalWarning: SQLite is an experimental feature and might change at any time -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/authored-status-detail.test.ts (20 tests) 81ms - ✓ tests/authored-step-failed.test.ts (10 tests) 53ms - ✓ tests/budget-preflight.test.ts (25 tests) 18ms - ✓ tests/authored-retried-child-resume-live.test.ts (2 tests) 1385ms - ✓ an authored step whose child run retried an attempt > resumes after a kill mid-step and reads the terminal completion, not the crashed one 1270ms - ✓ tests/shipped-source-flow-header-provenance.test.ts (1 test) 2617ms - ✓ shipped-source flow header provenance > fails closed for unsafe authored and declarative headers 2616ms - ✓ tests/provider-trigger-contract.test.ts (7 tests) 818ms - ✓ provider trigger contract > accepts one subscription from each of five providers and refuses a bogus event on any of them 495ms - ✓ provider trigger contract > fails `flows check` before deployment and passes once the event is real 318ms - ✓ tests/work-package-consumer.test.ts (13 tests) 115ms - ✓ tests/authored-parallel-agents.test.ts (8 tests) 9056ms - ✓ authored steps under local workers with capacity > runs more concurrent f.llm calls than the worker holds side by side, never more than its capacity 1112ms - ✓ authored steps under local workers with capacity > completes more concurrent f.agent calls than the worker holds: the overflow waits for a slot instead of parking 1484ms - ✓ authored steps under local workers with capacity > runs agents in distinct working directories side by side (the kernel carries cwd) 631ms - ✓ authored steps under local workers with capacity > serializes agents whose cwd is a symlink alias of the same directory 1024ms - ✓ authored steps under local workers with capacity > serializes agents whose cwd is a directory nested inside the other 1046ms - ✓ authored steps under local workers with capacity > never starts queued agents once the body has failed 1577ms - ✓ authored steps under local workers with capacity > never starts a queued agent when the agent holding the only slot fails 1592ms - ✓ authored steps under local workers with capacity > parks the overflow when the body is not told the capacity (the defect this closes) 588ms - ✓ tests/helpers-fanout.test.ts (96 tests) 173ms -(node:90322) ExperimentalWarning: SQLite is an experimental feature and might change at any time -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/authored-step-graph-live.test.ts (1 test) 878ms - ✓ the authored step DAG through the live kernel > carries labels and predecessors on every index record and journal step, ids unchanged 877ms - ✓ tests/yaml-local-agent-live.test.ts (9 tests) 6155ms - ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked step CLI and model and journals done 606ms - ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked named CLI and model and journals done 604ms - ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 613ms - ✓ YAML --local-agent through the built CLI and real daemon > runs with the checked project CLI and model and journals done 608ms - ✓ YAML --local-agent through the built CLI and real daemon > still parks without --local-agent 568ms - ✓ YAML --local-agent through the built CLI and real daemon > resumes a parked spec run with --local-agent instead of parking identically again 1037ms - ✓ YAML --local-agent through the built CLI and real daemon > parks a second time with a different message when the attached worker is not eligible 972ms - ✓ YAML --local-agent through the built CLI and real daemon > reports the agent process failure 608ms - ✓ YAML --local-agent through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 537ms - ✓ tests/named-gate-journal.test.ts (5 tests) 1735ms - ✓ a lowered subprocess_gate journals the gate command's streams > persists what the gate printed before a timeout killed it 800ms - ✓ a gate on an agent step > journals the command's streams and surfaces them in the authored failure 703ms - ✓ tests/local-agent-remedy.test.ts (16 tests) 14ms - ✓ tests/generate-triggers.test.ts (7 tests) 1223ms - ✓ discovers new adapters, preserves exact event names, and prefers adapter-local mappings 350ms - ✓ tests/yaml-helpers.test.ts (34 tests) 65ms - ✓ tests/direct-run-failure.test.ts (12 tests) 26ms - ✓ tests/authored-agent-permissions.test.ts (27 tests) 910ms - ✓ tests/authored-detail-live.test.ts (3 tests) 3769ms - ✓ carries done("step_failed", { detail }) into the report, the journal and flows status 2143ms - ✓ reports a detail a caller sliced through an emoji, instead of hanging on it 601ms - ✓ leaves a one-argument done("step_failed") reporting exactly as it always did 1024ms - ✓ tests/live-event-activities.test.ts (2 tests) 195ms - ❯ tests/software-garden-babysitter-composition.test.ts (6 tests | 2 failed) 517ms - × canonical Software Garden + Babysitter composition > executes the pinned composition and preserves queued/duplicate replay receipts 235ms - → Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - × canonical Software Garden + Babysitter composition > propagates capability denial without a retry or fallback 234ms - → expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: live babysit label is absent // Object.is equality - ✓ tests/worker-lease.test.ts (7 tests) 13ms - ✓ tests/worker-lease-lost.test.ts (17 tests) 17ms - ✓ tests/webhook-hardening.test.ts (11 tests) 60ms - ✓ tests/authored-probe-cache.test.ts (5 tests) 21215ms - ✓ authored run CLI probe cache > nine calls have no expired attempts at capacity 1 7417ms - ✓ authored run CLI probe cache > nine calls have no expired attempts at capacity 4 5454ms - ✓ authored run CLI probe cache > does not serialize nine starts behind nine probes, and probes again on a new run 6667ms - ✓ authored run CLI probe cache > caches probe failures while refusing all nine calls 401ms - ✓ authored run CLI probe cache > shares probe results across agent calls too 1275ms - ✓ tests/yaml-declared-streams-live.test.ts (8 tests) 5193ms - ✓ YAML declared streams through the built CLI and real daemon > runs with the checked step CLI and model and journals done 635ms - ✓ YAML declared streams through the built CLI and real daemon > runs with the checked named CLI and model and journals done 614ms - ✓ YAML declared streams through the built CLI and real daemon > runs with the checked flow CLI and model and journals done 622ms - ✓ YAML declared streams through the built CLI and real daemon > runs with the checked project CLI and model and journals done 607ms - ✓ YAML declared streams through the built CLI and real daemon > still parks without --local-agent 560ms - ✓ YAML declared streams through the built CLI and real daemon > reports the agent process failure 602ms - ✓ YAML declared streams through the built CLI and real daemon > resumes the journaled stream declarations after the input YAML changes 1015ms - ✓ YAML declared streams through the built CLI and real daemon > preserves declared workspace surfaces that the local worker cannot pin 538ms - ✓ tests/human-to.test.ts (8 tests) 12ms -(node:92376) ExperimentalWarning: SQLite is an experimental feature and might change at any time -(Use `node --trace-warnings ...` to show where the warning was created) - ✓ tests/authored-dispatch-live.test.ts (2 tests) 2459ms - ✓ durable child flow dispatch > runs a declared child in the parent DAG and replays it without repeating effects 1682ms - ✓ durable child flow dispatch > lowers a named gate attached to the dispatch receipt 775ms - ✓ tests/plugin-loader.test.ts (9 tests) 171ms - ✓ tests/worker-lease-drift-live.test.ts (3 tests) 36167ms - ✓ worker lease under clock skew between worker and daemon > renews before the daemon deadline when the worker clock runs 75s behind the daemon 36053ms - ✓ tests/deploy.test.ts (11 tests) 5539ms - ✓ flows deploy file buckets > publishes the full signed layout byte-for-byte and redeploys as a noop 881ms - ✓ flows deploy file buckets > answers --json with one object per outcome 839ms - ✓ flows deploy file buckets > reports a refusal as JSON under --json 411ms - ✓ flows deploy file buckets > refuses a missing local bundle before creating the bucket 413ms - ✓ flows deploy file buckets > refuses an unreachable bucket before copying 422ms - ✓ flows deploy file buckets > refuses an unwritable bucket 435ms - ✓ flows deploy file buckets > refuses local tampering of spec.canonical.json 428ms - ✓ flows deploy file buckets > refuses local tampering of identity.json 392ms - ✓ flows deploy file buckets > refuses asset bundles instead of using daemon-relative files 412ms - ✓ flows deploy file buckets > never labels a corrupt existing deployment as a noop 867ms - ✓ tests/bin.test.ts (12 tests) 5534ms - ✓ built flows binary > prints the installed SDK version for --version 407ms - ✓ built flows binary > prints the installed SDK version for -V 399ms - ✓ built flows binary > keeps version flags strict when extra arguments are supplied 395ms - ✓ built flows binary > prints the installed SDK version from the standalone binary for --version 885ms - ✓ built flows binary > prints the installed SDK version from the standalone binary for -V 844ms - ✓ built flows binary > refuses through a symlink to the built artifact 417ms - ✓ built flows binary > refuses through a symlinked directory component 409ms - ✓ built flows binary > classifies a signal-terminated auth probe as probe_failed 509ms - ✓ built flows binary > classifies an unavailable PATH resolver as probe_failed 423ms - ✓ built flows binary > does not describe a present non-executable CLI as missing 405ms - ✓ built flows binary > runs one auth probe for three steps sharing a flow CLI 436ms - ✓ tests/babysitter-catalog-export.test.ts (14 tests) 836ms - ✓ Babysitter catalog artifact export > CLI refuses an existing output and leaves no file on validation failure 673ms - ✓ tests/communication.test.ts (10 tests) 13ms - ✓ tests/communication-review.test.ts (6 tests) 335ms - ✓ tests/transport-evidence-bounds.test.ts (7 tests) 9ms - ✓ tests/typed-output.test.ts (14 tests) 195ms - ✓ tests/shipped-source-models.test.ts (2 tests) 33411ms - ✓ first-party shipped source model pins > gives every TypeScript agent and LLM an explicit supported pair or a pinned named-agent declaration 33369ms - ✓ tests/effect-channel.test.ts (5 tests) 326ms - ✓ tests/worker-slots.test.ts (8 tests) 7ms - ✓ tests/json-schema-bound.test.ts (71 tests) 2302ms - ✓ JSON Schema termination bound > walks a deep schema with an explicit stack rather than recursion 1851ms - ✓ tests/communication-worker.test.ts (17 tests) 1719ms - ✓ tests/cloud-mirror-transport.test.ts (5 tests) 7ms - ✓ tests/mcp-lifecycle.test.ts (4 tests) 13ms - ✓ tests/step-lease.test.ts (36 tests) 66422ms - ✓ f.run leases against the live kernel > enforces 10000 ms for 'sleep 5; printf ok' 5064ms - ✓ f.run leases against the live kernel > enforces 40000 ms for 'sleep 31; printf ok' 31070ms - ✓ f.run leases against the live kernel > enforces 30000 ms for 'sleep 31; printf ok' 30100ms - ✓ tests/model-selection.test.ts (10 tests) 17ms - ✓ tests/f-memory.test.ts (7 tests) 883ms - ✓ tests/relayflowd-path.test.ts (10 tests) 5ms - ✓ tests/agent-artifacts.test.ts (9 tests) 17ms - ✓ tests/authored-plugin-effect.test.ts (6 tests) 58ms - ✓ tests/hosted-hardening.test.ts (11 tests) 15ms - ✓ tests/local-dev-ux.test.ts (8 tests) 18ms - ✓ tests/authored-preflight.test.ts (5 tests) 222ms - ✓ tests/deterministic-llm.test.ts (5 tests) 52ms - ✓ tests/relay-cli-surface-live.test.ts (3 tests) 413ms - ✓ tests/authored-declined.test.ts (13 tests) 57ms - ✓ tests/resume-failure.test.ts (2 tests) 5ms - ✓ tests/dependency-validation.test.ts (6 tests) 744ms - ✓ dependency validation > accepts a valid 10,000-step reverse chain through every direct public boundary 409ms - ✓ tests/worker-lease-lost-live.test.ts (3 tests) 800ms - ✓ tests/authored-hooks.test.ts (5 tests) 5ms - ✓ tests/input-binding.test.ts (12 tests) 223ms - ✓ tests/yaml-helper-effect.test.ts (4 tests) 74ms - ✓ tests/cloud-mirror-ledger.test.ts (7 tests) 1170ms - ✓ the mirror ledger > keeps the newest entries when the count cap bites 1156ms - ✓ tests/scope-preflight.test.ts (6 tests) 10ms - ✓ tests/run-from-digest.test.ts (6 tests) 4723ms - ✓ flows run digest input > submits the sealed canonical spec through the normal journal path without checkout 480ms - ✓ flows run digest input > uses a verified cache hit even after the bucket is removed 448ms - ✓ flows run digest input > resolves deploy.bucket from flows.json and honors explicit override 1280ms - ✓ flows run digest input > refuses an unconfigured bucket 839ms - ✓ flows run digest input > refuses tampered spec.canonical.json before creating run data 838ms - ✓ flows run digest input > refuses tampered identity.json before creating run data 837ms - ✓ tests/build-gate.test.ts (3 tests) 1226ms - ✓ flows build gates on flows check green (#318) > refuses a flow with an unresolvable named-agent CLI and leaves no artifacts 406ms - ✓ flows build gates on flows check green (#318) > --json emits one CheckReport object on stdout on refusal, exits 2, no artifacts 398ms - ✓ flows build gates on flows check green (#318) > builds the bundle on success (regression: gate must not block valid flows) 421ms - ✓ tests/scope-compiler.test.ts (25 tests) 12ms - ✓ tests/worker-cli-abort.test.ts (3 tests) 3854ms - ✓ stops claude and its process group when lease ownership is lost 1362ms - ✓ stops wrapper.mjs and its process group when lease ownership is lost 1461ms - ✓ fails closed when abort cannot prove the process group is gone 1030ms - ✓ tests/hn-poller.test.ts (6 tests) 7ms - ✓ tests/plugin-add.test.ts (7 tests) 1212ms - ✓ typechecks the augmented verb and rejects unknown namespaces 912ms - ✓ tests/authored-step-failed-exit.test.ts (3 tests) 8ms - ✓ tests/retried-step-failure.test.ts (1 test) 597ms - ✓ a retried step failing differently through the live kernel > reports both attempts and says the evidence differs 596ms - ✓ tests/dir-watcher-poller.test.ts (6 tests) 5ms - ✓ tests/subscription-report.test.ts (8 tests) 5ms - ✓ tests/model-pricing.test.ts (10 tests) 5ms - ✓ tests/authored-use-loader.test.ts (6 tests) 885ms - ✓ tests/yaml-helper-live.test.ts (1 test) 950ms - ✓ runs compiled YAML helpers through the built CLI and kernel effect journal 949ms - ✓ tests/provider-trigger-executor.test.ts (4 tests) 163ms - ✓ tests/journal-client-completion.test.ts (6 tests) 104ms - ✓ tests/transcript-tail-close.test.ts (2 tests) 1529ms - ✓ a stalled transcript-tail close > does not hold the spawn open past its bounded window 719ms - ✓ a stalled tail close beside a transcript that finished > still journals the transcript pointer 809ms - ✓ tests/wrapper-artifacts-cwd.test.ts (2 tests) 79ms - ✓ tests/hello-deterministic.test.ts (5 tests) 18ms - ✓ tests/worker-lease-sweep.test.ts (4 tests) 16ms - ✓ tests/transcript-exclusion-timeout.test.ts (1 test) 294ms - ✓ tests/cli-adapter.test.ts (4 tests) 6ms - ✓ tests/communication-mixed-resume.test.ts (1 test) 187ms - ✓ tests/work-package-validator.test.ts (7 tests) 5ms - ✓ tests/activity-preflight.test.ts (10 tests) 21ms - ✓ tests/authored-declined-live.test.ts (1 test) 1638ms - ✓ runs an input guard and resumes its completed declined root without repeated effects 1638ms - ✓ tests/cli-answer.test.ts (15 tests) 9ms - ✓ tests/bundle-preflight.test.ts (4 tests) 966ms - ✓ bundle execution preflight > ignores surrounding cache configuration on a verified cache hit 473ms - ✓ bundle execution preflight > uses the built alias for a nameless flow even in a digest-only cache directory 457ms - ✓ tests/agent-relay-hardening.test.ts (12 tests) 12ms - ✓ tests/communication-preflight.test.ts (13 tests) 36ms - ↓ tests/real-cli-adapters.test.ts (3 tests | 3 skipped) - ✓ tests/memoization.test.ts (57 tests) 57ms - ✓ tests/shipped-source-call-array-forwarding.test.ts (1 test) 2866ms - ✓ shipped-source call-array forwarding > maps rest indexes and nested same-helper actuals for workers and flows 2865ms - ✓ tests/local-agent-environment.test.ts (8 tests) 8ms - ✓ tests/fs-descriptor.test.ts (1 test) 9ms - ✓ tests/parse-json-output.test.ts (7 tests) 3ms - ✓ tests/reported-cost.test.ts (4 tests) 3ms - ✓ tests/journal-client-subscriptions.test.ts (1 test) 9ms - ✓ tests/authored-model-probe-kinds.test.ts (2 tests) 162ms - ✓ tests/communication-environment-preflight.test.ts (6 tests) 4ms - ✓ tests/budget-authored-live.test.ts (2 tests) 145ms - ✓ tests/slack-writeback.test.ts (1 test) 257ms - ✓ tests/authored-surface-authority.test.ts (2 tests) 17ms - ✓ tests/adapters/claude.test.ts (7 tests) 4ms - ✓ tests/worker-cli-cwd.test.ts (2 tests) 513ms - ✓ runAgentCli — cwd propagation (flows#357) > omits cwd when not provided (inherits parent cwd) 507ms - ✓ tests/adapters/codex.test.ts (7 tests) 4ms - ✓ tests/shipped-source-parameter-provenance.test.ts (1 test) 1775ms - ✓ shipped-source parameter provenance > keeps caller-supplied identifier and destructured keys unknown 1774ms - ✓ tests/slack-block-kit.test.ts (5 tests) 17ms - ✓ tests/communication-history.test.ts (1 test) 3ms - ✓ tests/resume-worker-lease.test.ts (2 tests) 4ms - ✓ tests/adapters/registry.test.ts (4 tests) 5ms - ✓ tests/direct-run-worker-lease.test.ts (2 tests) 7ms - ✓ tests/authored-declined-report.test.ts (6 tests) 8ms - ✓ tests/promise-ancestry.test.ts (2 tests) 278ms - ✓ tests/agent-cwd-validation.test.ts (2 tests) 408ms - ✓ declarative agent cwd > is refused by `flows check` on a YAML flow before anything runs 404ms - ✓ tests/communication-refusal.test.ts (1 test) 13ms - ✓ tests/bundle-transport.test.ts (20 tests) 2659ms - ✓ digest references > accepts and deploys the build output for hello 437ms - ✓ digest references > accepts and deploys the build output for Hello 450ms - ✓ digest references > accepts and deploys the build output for hello.world 468ms - ✓ digest references > accepts and deploys the build output for hello_world 434ms - ✓ digest references > accepts and deploys the build output for 123 433ms - ✓ digest references > accepts and deploys the build output for A_b.c-1 432ms - ✓ tests/cli-cloud-mirror-flag.test.ts (4 tests) 3ms - ✓ tests/catalog-plugins.test.ts (2 tests) 3ms - ✓ tests/check-command-cwd.test.ts (1 test) 13ms - ✓ tests/communication-lazy.test.ts (1 test) 6ms - ✓ tests/cli-progress-wait.test.ts (2 tests) 4ms - ✓ tests/run-digest-live.test.ts (1 test) 917ms - ✓ executes a deployed digest on the real kernel after deleting the authoring tree 916ms - ✓ tests/placement.test.ts (54 tests) 17ms - ✓ tests/preflight-run-cache.test.ts (1 test) 5ms - ✓ tests/canonical-tree.test.ts (1 test) 2ms - ✓ tests/local-agent-stream-selection.test.ts (1 test) 5ms - ✓ tests/run-digest.test.ts (4 tests) 1664ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {invalid json 422ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{}} 428ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":123}} 407ms - ✓ digest run configuration refusals > reports config_invalid before fetching or starting a run for {"deploy":{"bucket":""}} 406ms - ✓ tests/communication-tools.test.ts (1 test) 69ms - ✓ tests/authored-admission.test.ts (2 tests) 3ms - ✓ tests/memory.test.ts (18 tests) 8ms - ✓ tests/worker-platform.test.ts (1 test) 3ms - ✓ tests/event-await-cli.test.ts (1 test) 12545ms - ✓ parks, restarts, and replays two event wakes through the actual CLI 12544ms - ✓ tests/authored-parallel-llm.test.ts (6 tests) 115001ms - ✓ parallel llm capacity 1 > deduplicates concurrent preflight probes 2887ms - ✓ parallel llm capacity 1 > completes nine calls without expired child leases during slow preflight 8942ms - ✓ parallel llm capacity 1 > keeps the durable root lease alive across two cold models 47906ms - ✓ parallel llm capacity 4 > deduplicates concurrent preflight probes 1412ms - ✓ parallel llm capacity 4 > completes nine calls without expired child leases during slow preflight 7368ms - ✓ parallel llm capacity 4 > keeps the durable root lease alive across two cold models 46486ms - ✓ tests/shipped-source-worker-invocations.test.ts (1 test) 687650ms - ✓ shipped-source worker invocation resolution > fails closed across direct, extracted, bound, mutable, and escaped callables 687649ms - -⎯⎯⎯⎯⎯⎯ Failed Tests 31 ⎯⎯⎯⎯⎯⎯⎯ - - FAIL tests/babysitter-native-extension.test.ts > native Babysitter extension > runs the exact published 2.0.26 native bytes in the isolated capability path -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/babysitter-native-extension.test.ts:153:7 - 151| return { receiptId: `bst_${'a'.repeat(64)}`, status: 'queued' … - 152| } }, - 153| })).resolves.toEqual({ completionReason: 'success', capabilityCall… - | ^ - 154| expect(calls).toEqual([{ delivery: { - 155| deliveryId: 'gh-delivery-7', provider: 'github', eventType: 'pul… - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a queued receipt - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > uses captured JSON intrinsics for the complete parent boundary - FAIL tests/software-garden-babysitter-composition.test.ts > canonical Software Garden + Babysitter composition > executes the pinned composition and preserves queued/duplicate replay receipts -Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - 133| : new PluginError('plugin_unsupported', 'Hosted capability rejec… - 134| const refuse = (message: string) => { - 135| const error = new PluginError('plugin_unsupported', message); - | ^ - 136| CHILD_PROCESS_KILL(child, 'SIGKILL'); - 137| if (capabilityState === 'pending') { - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > executes the exact capability-only handler for a duplicate receipt - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > denies ambient credentials, host files, writes, network, subprocesses, and undeclared context verbs - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > constructs adapter authority with the captured freeze intrinsic -Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - 133| : new PluginError('plugin_unsupported', 'Hosted capability rejec… - 134| const refuse = (message: string) => { - 135| const error = new PluginError('plugin_unsupported', message); - | ^ - 136| CHILD_PROCESS_KILL(child, 'SIGKILL'); - 137| if (capabilityState === 'pending') { - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > launches through the captured process primitive after builtin export synchronization -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/hosted-extension-isolation.test.ts:283:11 - 281| input: descriptor(), - 282| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… - 283| })).resolves.toEqual({ completionReason: 'success', capability… - | ^ - 284| } finally { - 285| process.execPath = originalExecPath; - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > ignores inherited launcher overrides and decodes manifests with the captured Buffer intrinsic -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/hosted-extension-isolation.test.ts:373:11 - 371| input: descriptor('delivery-options'), - 372| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… - 373| })).resolves.toEqual({ completionReason: 'success', capability… - | ^ - 374| } finally { - 375| Buffer.prototype.toString = bufferToString; - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > streams verified bytes when the live store is replaced and no writable staging path exists -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/hosted-extension-isolation.test.ts:431:7 - 429| return { receiptId: 'receipt-1', status: 'queued' }; - 430| } }, - 431| })).resolves.toEqual({ completionReason: 'success', capabilityCall… - | ^ - 432| expect(calls).toBe(1); - 433| expect(readFileSync(join(installed.directory, 'babysitter.flow.ts'… - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > mounts pinned private Surface bytes when the live package changes before launch -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/hosted-extension-isolation.test.ts:456:7 - 454| return { receiptId: 'receipt-1', status: 'queued' }; - 455| } }, - 456| })).resolves.toEqual({ completionReason: 'success', capabilityCall… - | ^ - 457| expect(calls).toBe(1); - 458| expect(readFileSync(join(surfaceRoot, 'dist/flow.js'), 'utf8')).to… - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > shields verified Surface files before async settlement -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/hosted-extension-isolation.test.ts:532:9 - 530| surfaceRoot, - 531| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-1'… - 532| })).resolves.toEqual({ completionReason: 'success', capabilityCa… - | ^ - 533| } finally { - 534| if (previous === undefined) delete (Array.prototype as { then?: … - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > preserves a typed host refusal while disclosing only a fixed marker to the child -AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: private Cloud policy detail { code: '…' } // Object.is equality - -- Expected -+ Received - -- [Error: private Cloud policy detail] -+ [Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted -+ ] - - ❯ tests/hosted-extension-isolation.test.ts:560:5 - 558| provider: 'github', eventType: 'pull_request.labeled', deliveryI… - 559| }); - 560| await expect(runVerifiedNativeExtensionSandbox({ - | ^ - 561| artifact: await artifact(source), manifest: validateFlowExtensio… - 562| babysitterTurn: { queue: async () => { throw refusal; } }, - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > enforces OS address-space and data bounds on native Buffer allocation -AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_unsupported', …(1) } - -- Expected -+ Received - -- Object { -+ PluginError { - "code": "plugin_unsupported", -- "message": StringMatching /(?:Failed to allocate memory|Array buffer allocation failed)/u, - } - - ❯ tests/hosted-extension-isolation.test.ts:646:5 - 644| }); - 645| let calls = 0; - 646| await expect(runVerifiedNativeExtensionSandbox({ - | ^ - 647| artifact: installed, - 648| manifest: validateFlowExtensionManifest(manifest()), - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > blocks extra handler fields and authority-bearing receipt fields at the parent port -AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - -- Expected -+ Received - -- Object { -- "code": "plugin_event_unroutable", -+ PluginError { -+ "code": "plugin_unsupported", - } - - ❯ tests/hosted-extension-isolation.test.ts:675:5 - 673| }); - 674| let calls = 0; - 675| await expect(runVerifiedNativeExtensionSandbox({ - | ^ - 676| artifact: await artifact(source), manifest: validateFlowExtensio… - 677| babysitterTurn: { queue: async () => { calls += 1; return { rece… - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/31]⎯ - - FAIL tests/hosted-extension-isolation.test.ts > hosted extension capability isolation > writes the Surface manifest and protocol without inherited toJSON behavior -AssertionError: promise rejected "Error: Hosted extension sandbox exited wi… { code: '…' }" instead of resolving - ❯ tests/hosted-extension-isolation.test.ts:788:11 - 786| babysitterTurn: { queue: async () => ({ receiptId: 'receipt-… - 787| timeoutMs: 3_000, - 788| })).resolves.toEqual({ completionReason: 'success', capability… - | ^ - 789| } finally { - 790| if (previous === undefined) delete (Object.prototype as { toJS… - -Caused by: Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/31]⎯ - - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different PR frame with zero adapter calls -AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - -- Expected -+ Received - -- Object { -- "code": "plugin_event_unroutable", -+ PluginError { -+ "code": "plugin_unsupported", - } - - ❯ tests/hosted-extension-protocol.test.ts:447:5 - 445| ])('rejects an import-time %s frame with zero adapter calls', async … - 446| let calls = 0; - 447| await expect(runVerifiedNativeExtensionSandbox({ - | ^ - 448| artifact: await artifact(hostileImport([frame, { type: 'error', … - 449| manifest: validateFlowExtensionManifest(manifest()), dispatch: d… - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/31]⎯ - - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different delivery frame with zero adapter calls - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects an import-time different event frame with zero adapter calls -AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to match object { code: 'plugin_event_unroutable' } - -- Expected -+ Received - -- Object { -- "code": "plugin_event_unroutable", -+ PluginError { -+ "code": "plugin_unsupported", - } - - ❯ tests/hosted-extension-protocol.test.ts:447:5 - 445| ])('rejects an import-time %s frame with zero adapter calls', async … - 446| let calls = 0; - 447| await expect(runVerifiedNativeExtensionSandbox({ - | ^ - 448| artifact: await artifact(hostileImport([frame, { type: 'error', … - 449| manifest: validateFlowExtensionManifest(manifest()), dispatch: d… - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/31]⎯ - - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > rejects two forged calls after the authoritative first outcome settles - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > waits for a pending adapter to reject after a forged child error - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > waits for a pending adapter to resolve after a forged child error - FAIL tests/hosted-extension-protocol.test.ts > hosted extension hostile protocol > returns a typed adapter rejection even when the hostile child hangs -Error: hostile child did not invoke the adapter - ❯ Timeout._onTimeout tests/hosted-extension-protocol.test.ts:135:45 - 133| async function waitForInvocation(invoked: Promise): Promise((resolve, reject) => { - 135| const timeout = setTimeout(() => reject(new Error('hostile child d… - | ^ - 136| void invoked.then(() => { clearTimeout(timeout); resolve(); }, rej… - 137| }); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/31]⎯ - - FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > runs hn-monitor analyze-story end-to-end via a stub agent CLI (gate 2 clause 2 demo) -AssertionError: expected { …(12) } to match object { output: { …(3) }, …(1) } -(22 matching properties omitted from actual) - -- Expected -+ Received - - Object { -- "output": Object { -- "reasoning": "stub agent runtime — deterministic output for gate-2 clause-2 demo", -- "relevance_score": 5, -- "story_title": "stub", -- }, -+ "output": null, - "verification": Object { -- "gate": "json_schema", -- "verdict": "pass", -+ "gate": "execution", -+ "verdict": "fail", - }, - } - - ❯ tests/live-kernel.test.ts:657:36 - 655| && (entry as { step_id?: string }).step_id === 'analyze-story', - 656| ) as { payload: { output: unknown; verification: unknown } } | und… - 657| expect(stepCompleted?.payload).toMatchObject({ - | ^ - 658| output: { - 659| story_title: 'stub', - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/31]⎯ - - FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > hn-monitor analyze-story FAILS verification when the CLI omits required schema fields -AssertionError: expected { …(12) } to match object { …(3) } -(21 matching properties omitted from actual) - -- Expected -+ Received - - Object { -- "completionReason": "retries_exhausted", -+ "completionReason": "worker_error", - "output": null, - "verification": Object { -- "gate": "json_schema", -+ "gate": "execution", - "verdict": "fail", - }, - } - - ❯ tests/live-kernel.test.ts:752:36 - 750| // its verification record names the json_schema rejection. The re… - 751| // parsed value is nulled before the completion is persisted. - 752| expect(stepCompleted?.payload).toMatchObject({ - | ^ - 753| completionReason: 'retries_exhausted', - 754| output: null, - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/31]⎯ - - FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > agent step preserves the CliResult wrapper as output when the CLI emits non-JSON text -AssertionError: expected null not to be null - ❯ tests/live-kernel.test.ts:823:24 - 821| // here (parseJsonOutput returned null on non-JSON stdout) and - 822| // these assertions would all fail. - 823| expect(output).not.toBeNull(); - | ^ - 824| expect(output.exit_code).toBe(0); - 825| expect(output.stdout_tail).toContain('looked at the story'); - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/31]⎯ - - FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > AgentWorker exposes wake_context to the CLI via RELAYFLOW_WAKE_CONTEXT env var (real analyzer prerequisite) -TypeError: Cannot read properties of null (reading 'story_title') - ❯ tests/live-kernel.test.ts:891:42 - 889| ) as { payload: { output: { story_title: string; reasoning: string… - 890| expect(stepCompleted).toBeDefined(); - 891| expect(stepCompleted!.payload.output.story_title).toBe(`echoed:${s… - | ^ - 892| expect(stepCompleted!.payload.output.reasoning).toContain(String(s… - 893| - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/31]⎯ - - FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_WAKE_CONTEXT UNSET when the run has no wake_context (undefined-vs-null pin) -TypeError: Cannot read properties of null (reading 'env_present') - ❯ tests/live-kernel.test.ts:958:38 - 956| ) as { payload: { output: { env_present: boolean } } } | undefined; - 957| expect(completed).toBeDefined(); - 958| expect(completed!.payload.output.env_present).toBe(false); - | ^ - 959| - 960| delete process.env.RELAYFLOW_WAKE_CONTEXT; - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/31]⎯ - - FAIL tests/live-kernel.test.ts > built flows CLI against live relayflowd > AgentWorker leaves RELAYFLOW_MODEL UNSET when the step declares no model -TypeError: Cannot read properties of null (reading 'story_title') - ❯ tests/live-kernel.test.ts:1194:38 - 1192| expect(completed).toBeDefined(); - 1193| // UNSET, not EMPTY and not the leaked parent value. - 1194| expect(completed!.payload.output.story_title).toBe('model:UNSET'); - | ^ - 1195| - 1196| delete process.env.RELAYFLOW_MODEL; - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/31]⎯ - - FAIL tests/live-kernel.test.ts > a relayflow can be scheduled: tick source against live relayflowd > a tick spawns a real run whose step reports the SCHEDULED instant -AssertionError: expected null to deeply equal { schedule_id: 'heartbeat-1m', …(3) } - -- Expected: -Object { - "lag_ms": 43000, - "schedule_id": "heartbeat-1m", - "scheduled_for_ms": 1764000000000, - "slot": 29400000, -} - -+ Received: -null - - ❯ tests/live-kernel.test.ts:1739:39 - 1737| // The bound: the run reports the grid instant and its own lag, so… - 1738| // backfilled run can tell it is running for a slot from the past. - 1739| expect(completed!.payload.output).toEqual({ - | ^ - 1740| schedule_id: 'heartbeat-1m', - 1741| slot: 29_400_000, - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/31]⎯ - - FAIL tests/software-garden-babysitter-composition.test.ts > canonical Software Garden + Babysitter composition > propagates capability denial without a retry or fallback -AssertionError: expected Error: Hosted extension sandbox exited wi… { code: '…' } to be Error: live babysit label is absent // Object.is equality - -- Expected -+ Received - -- [Error: live babysit label is absent] -+ [Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted -+ ] - - ❯ tests/software-garden-babysitter-composition.test.ts:139:7 - 137| const refusal = new Error('live babysit label is absent'); - 138| let calls = 0; - 139| await expect(runHostedSoftwareGardenBabysitter({ - | ^ - 140| flowPath: installed.flowPath, - 141| dispatch: dispatch(), - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/31]⎯ - -⎯⎯⎯⎯⎯⎯ Unhandled Errors ⎯⎯⎯⎯⎯⎯ - -Vitest caught 1 unhandled error during the test run. -This might cause false positive tests. Resolve unhandled errors to make sure your tests are not affected. - -⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯ -Error: Hosted extension sandbox exited without a valid completion (exit 1): bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted - - ❯ refuse src/hosted-extension-protocol.ts:135:21 - 133| : new PluginError('plugin_unsupported', 'Hosted capability rejec… - 134| const refuse = (message: string) => { - 135| const error = new PluginError('plugin_unsupported', message); - | ^ - 136| CHILD_PROCESS_KILL(child, 'SIGKILL'); - 137| if (capabilityState === 'pending') { - ❯ ChildProcess. src/hosted-extension-protocol.ts:234:21 - ❯ ChildProcess.emit node:events:520:22 - ❯ maybeClose node:internal/child_process:1084:16 - ❯ Process.ChildProcess._handle.onexit node:internal/child_process:304:5 - -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ -Serialized Error: { code: 'plugin_unsupported' } -This error originated in "tests/hosted-extension-protocol.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running. -The latest test that might've caused the error is "rejects two forged calls after the authoritative first outcome settles". It might mean one of the following: -- The error was thrown, while Vitest was running this test. -- If the error occurred after the test had been completed, this was the last documented test before it was thrown. -⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ - - Test Files 5 failed | 238 passed | 1 skipped (244) - Tests 31 failed | 3747 passed | 4 skipped (3782) - Errors 1 error - Start at 07:26:09 - Duration 688.83s (transform 6.18s, setup 1.13s, collect 71.27s, tests 1710.29s, environment 31ms, prepare 9.69s) - diff --git a/evidence/gitlab-deploy/mutation-host-propagation.txt b/evidence/gitlab-deploy/mutation-host-propagation.txt deleted file mode 100644 index bb2ccf432..000000000 --- a/evidence/gitlab-deploy/mutation-host-propagation.txt +++ /dev/null @@ -1,46 +0,0 @@ -Mutation verification of the `host` propagation in `parseRepository` -(packages/sdk/src/cloud-deploy.ts). The change under test is the final -return, which attaches `host: 'gitlab'` only for a GitLab target: - - return { owner, name, ...(host === 'gitlab' ? { host: 'gitlab' as const } : {}) }; - -Step 1 — revert it to the pre-change `return { owner, name };`: -2cc34891dc35e1866f1e88a3653039215fe92c263c73791ea9edec9868b4bb55 packages/sdk/src/cloud-deploy.ts -$ sed -n 139p packages/sdk/src/cloud-deploy.ts - return { owner, name }; - -Step 2 — the suite fails: -$ cd packages/sdk && ./node_modules/.bin/vitest run tests/cloud-deploy.test.ts - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:group/project -AssertionError: expected { owner: 'group', name: 'project' } to strictly equal { owner: 'group', …(2) } - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:group/sub/project - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository https://gitlab.com/group/sub/project.git -AssertionError: expected { owner: 'group/sub', name: 'project' } to strictly equal { owner: 'group/sub', …(2) } - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository http://GITLAB.com/g/p - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository GITLAB:g/p - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:https://gitlab.com/g/p -AssertionError: expected { owner: 'g', name: 'p' } to strictly equal { owner: 'g', name: 'p', …(1) } - FAIL tests/cloud-deploy.test.ts > trigger source and repository parsing > parses repository gitlab:g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/g/p -AssertionError: expected { …(2) } to strictly equal { …(3) } - FAIL tests/cloud-deploy.test.ts > deployToCloud > requires the GitLab target integration with gitlab:labels=x - FAIL tests/cloud-deploy.test.ts > deployToCloud > requires the GitLab target integration with linear:team=ENG -AssertionError: expected { owner: 'group/sub', name: 'web' } to strictly equal { owner: 'group/sub', …(2) } - FAIL tests/cloud-deploy.test.ts > deployToCloud > refuses an unscoped GitHub source for a GitLab target before HTTP -AssertionError: expected CloudFlowError: Cloud request failed with… { …(4) } to match object { code: 'invalid_input', …(1) } - FAIL tests/cloud-deploy.test.ts > flows deploy / flows deployments > deploys and lists GitLab repositories (json=false) -AssertionError: expected [ 'DEPLOYED a listening', …(5) ] to include ' repository: gitlab:group/sub/web' - FAIL tests/cloud-deploy.test.ts > flows deploy / flows deployments > deploys and lists GitLab repositories (json=true) -AssertionError: expected { owner: 'group/sub', name: 'web' } to strictly equal { owner: 'group/sub', …(2) } - Test Files 1 failed (1) - Tests 12 failed | 88 passed (100) - -Step 3 — restore the change byte-for-byte: -$ git diff --quiet packages/sdk/src/cloud-deploy.ts (vs the pre-mutation file) -identical to pre-mutation copy -2cc34891dc35e1866f1e88a3653039215fe92c263c73791ea9edec9868b4bb55 packages/sdk/src/cloud-deploy.ts - -Step 4 — the suite passes again: -$ cd packages/sdk && ./node_modules/.bin/vitest run tests/cloud-deploy.test.ts - ✓ tests/cloud-deploy.test.ts (100 tests) 2716ms - Test Files 1 passed (1) - Tests 100 passed (100) diff --git a/evidence/gitlab-deploy/targeted.txt b/evidence/gitlab-deploy/targeted.txt deleted file mode 100644 index 5c29e983c..000000000 --- a/evidence/gitlab-deploy/targeted.txt +++ /dev/null @@ -1,15 +0,0 @@ -$ cd packages/sdk && RELAYFLOWD_BIN=../../kernel/target/release/relayflowd RELAYFLOWS_ALLOW_ANALYZER_SKIP=1 \ - ./node_modules/.bin/vitest run tests/cloud-deploy.test.ts tests/relay-cli-surface.test.ts tests/flow-requirements.test.ts - - RUN v2.1.9 /home/daytona/.relayflow-v2-supervisor/durable/repository/packages/sdk - - ✓ tests/relay-cli-surface.test.ts (87 tests) 44ms - ✓ tests/flow-requirements.test.ts (14 tests) 1096ms - ✓ flows check prints REQUIRES > names the helper, the harness and the mcp server of an authored flow 819ms - ✓ tests/cloud-deploy.test.ts (100 tests) 2822ms - - Test Files 3 passed (3) - Tests 201 passed (201) - Start at 07:39:55 - Duration 5.26s (transform 1.76s, setup 43ms, collect 6.70s, tests 3.96s, environment 0ms, prepare 150ms) - diff --git a/evidence/gitlab-deploy/typecheck.txt b/evidence/gitlab-deploy/typecheck.txt deleted file mode 100644 index 3815f95e1..000000000 --- a/evidence/gitlab-deploy/typecheck.txt +++ /dev/null @@ -1,11 +0,0 @@ -$ cd packages/sdk -$ npm run typecheck && npm run typecheck:tests - -> @relayflows/sdk@2.0.39 typecheck -> tsc --noEmit && tsc -p tsconfig.type-tests.json - - -> @relayflows/sdk@2.0.39 typecheck:tests -> tsc -p tsconfig.tests.json - -exit=0 diff --git a/packages/sdk/src/cloud-deploy.ts b/packages/sdk/src/cloud-deploy.ts index 941fddaaf..267edc615 100644 --- a/packages/sdk/src/cloud-deploy.ts +++ b/packages/sdk/src/cloud-deploy.ts @@ -46,10 +46,19 @@ const MAX_SOURCE_BYTES = 256_000; const MAX_SETTING_LENGTH = 500; const REPO_OWNER = /^[A-Za-z0-9-]{1,39}$/u; const REPO_NAME = /^[A-Za-z0-9_.-]{1,100}$/u; -// Client-side shape check: unlike REPO_NAME, GitLab segments cannot start with . or -. -const GITLAB_SEGMENT = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,99}$/u; -// Client-side bound: one root group plus 20 subgroup levels; Cloud remains authoritative. -const GITLAB_NAMESPACE_DEPTH = 21; +// GitLab coordinates mirror Cloud's isValidFlowRepositoryCoordinates +// (AgentWorkforce/cloud packages/web/lib/flows/flow-repository.ts): the owner +// is the namespace path, at most 255 characters and 20 segments (the root +// group counts; the project name does not), and every owner segment and the +// project name match GITLAB_SEGMENT without a trailing ., .git or .atom. +const GITLAB_SEGMENT = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,99}$/u; +const GITLAB_OWNER_SEGMENTS = 20; +const GITLAB_OWNER_LENGTH = 255; + +function validGitlabSegment(segment: string): boolean { + return GITLAB_SEGMENT.test(segment) + && !segment.endsWith('.') && !segment.endsWith('.git') && !segment.endsWith('.atom'); +} export interface DeployRepository { owner: string; @@ -129,11 +138,12 @@ export function parseRepository(value: string): DeployRepository { const name = parts.at(-1)!; const owner = parts.slice(0, -1).join('/'); const valid = host === 'gitlab' - ? parts.length >= 2 && parts.length <= GITLAB_NAMESPACE_DEPTH + 1 && parts.every(p => GITLAB_SEGMENT.test(p)) + ? parts.length >= 2 && parts.length - 1 <= GITLAB_OWNER_SEGMENTS + && owner.length <= GITLAB_OWNER_LENGTH && parts.every(validGitlabSegment) : parts.length === 2 && REPO_OWNER.test(owner) && REPO_NAME.test(name); if (!valid || (url && url[1]!.toLowerCase() !== host)) { throw new CloudFlowError('invalid_input', - `Expected --repo (GitHub) or gitlab: (up to ${GITLAB_NAMESPACE_DEPTH} namespace segments), ` + `Expected --repo (GitHub) or gitlab: (up to ${GITLAB_OWNER_SEGMENTS} namespace segments), ` + `or a github.com/gitlab.com HTTP(S) project URL, got "${value}".`); } return { owner, name, ...(host === 'gitlab' ? { host: 'gitlab' as const } : {}) }; diff --git a/packages/sdk/tests/cloud-deploy.test.ts b/packages/sdk/tests/cloud-deploy.test.ts index ad973551e..a1c4cdbb6 100644 --- a/packages/sdk/tests/cloud-deploy.test.ts +++ b/packages/sdk/tests/cloud-deploy.test.ts @@ -95,20 +95,56 @@ describe('trigger source and repository parsing', () => { ['http://GITLAB.com/g/p', { owner: 'g', name: 'p', host: 'gitlab' }], ['GITLAB:g/p', { owner: 'g', name: 'p', host: 'gitlab' }], ['gitlab:https://gitlab.com/g/p', { owner: 'g', name: 'p', host: 'gitlab' }], - [`gitlab:${Array(21).fill('g').join('/')}/p`, { owner: Array(21).fill('g').join('/'), name: 'p', host: 'gitlab' }], ])('parses repository %s', (value, expected) => { expect(parseRepository(value)).toStrictEqual(expected); }); it.each(['flows', 'a/b/c', 'bad owner/x', '', 'gitlab:project', 'gitlab:', 'gitlab:a//b', 'gitlab:bad segment/p', 'gitlab:.leading/p', 'gitlab:-leading/p', - `gitlab:${Array(22).fill('g').join('/')}/p`, `gitlab:${'g'.repeat(101)}/p`, + `gitlab:${'g'.repeat(101)}/p`, 'https://gitlab.com/group', 'gitlab:https://github.com/o/r', 'github:https://gitlab.com/g/p', 'https://gitlab.example.com/g/p', 'git@gitlab.com:g/p.git', 'gitlab:g/p/', ])('refuses repository %s', (value) => { expect(() => parseRepository(value)).toThrow(expect.objectContaining({ code: 'invalid_input' })); }); + // Cloud's isValidFlowRepositoryCoordinates (AgentWorkforce/cloud + // packages/web/lib/flows/flow-repository.ts), pinned at each boundary. + describe('GitLab coordinates match Cloud', () => { + const owner = (segments: number) => Array(segments).fill('g').join('/'); + // 100 + 1 + 100 + 1 + 53 = 255 characters. + const longOwner = (length: number) => `${'a'.repeat(100)}/${'b'.repeat(100)}/${'c'.repeat(length - 202)}`; + + it.each([ + ['20 owner segments', `gitlab:${owner(20)}/p`, owner(20), 'p'], + ['a 255-character owner', `gitlab:${longOwner(255)}/p`, longOwner(255), 'p'], + ['100-character segments', `gitlab:${'g'.repeat(100)}/${'p'.repeat(100)}`, 'g'.repeat(100), 'p'.repeat(100)], + ['a digit-led segment', 'gitlab:9g/0p', '9g', '0p'], + ['inner dots, dashes and underscores', 'gitlab:g.x-y_z/p.atomic', 'g.x-y_z', 'p.atomic'], + ['a stripped .git URL suffix', 'gitlab:g/p.git', 'g', 'p'], + ])('accepts %s', (_case, value, expectedOwner, expectedName) => { + expect(parseRepository(value)).toStrictEqual({ owner: expectedOwner, name: expectedName, host: 'gitlab' }); + }); + + it.each([ + ['21 owner segments', `gitlab:${owner(21)}/p`], + ['a 256-character owner', `gitlab:${longOwner(256)}/p`], + ['a 101-character name', `gitlab:g/${'p'.repeat(101)}`], + ['an underscore-led owner segment', 'gitlab:_g/p'], + ['an underscore-led name', 'gitlab:g/_p'], + ['a dot-led name', 'gitlab:g/.p'], + ['a dash-led name', 'gitlab:g/-p'], + ['an owner segment ending in .', 'gitlab:g./p'], + ['an owner segment ending in .git', 'gitlab:g/s.git/p'], + ['an owner segment ending in .atom', 'gitlab:g.atom/p'], + ['a name ending in .', 'gitlab:g/p.'], + ['a name ending in .git', 'gitlab:g/p.git.git'], + ['a name ending in .atom', 'gitlab:g/p.atom'], + ])('refuses %s', (_case, value) => { + expect(() => parseRepository(value)).toThrow(expect.objectContaining({ code: 'invalid_input' })); + }); + }); + it('omits the host key for GitHub', () => { expect('host' in parseRepository('owner/name')).toBe(false); });