diff --git a/.github/workflows/cloud-runtime-artifact.yml b/.github/workflows/cloud-runtime-artifact.yml index 279f626b5..2029e4d46 100644 --- a/.github/workflows/cloud-runtime-artifact.yml +++ b/.github/workflows/cloud-runtime-artifact.yml @@ -194,8 +194,12 @@ jobs: # npm pack in this test invokes prepare and rewrites SDK dist even # with --ignore-scripts. Run it after the built-CLI readers so every # test still gates without a concurrent partial rebuild. + # Watch tests spawn a fresh CLI for each report and keep five-second + # case deadlines. Run them apart from the concurrent live-test pool. RELAYFLOWD_BIN="$GITHUB_WORKSPACE/kernel/target/release/relayflowd" \ - ./node_modules/.bin/vitest run --exclude tests/cli-package-gate.test.ts + ./node_modules/.bin/vitest run tests/cli-watch.test.ts + RELAYFLOWD_BIN="$GITHUB_WORKSPACE/kernel/target/release/relayflowd" \ + ./node_modules/.bin/vitest run --exclude tests/cli-package-gate.test.ts --exclude tests/cli-watch.test.ts RELAYFLOWD_BIN="$GITHUB_WORKSPACE/kernel/target/release/relayflowd" \ ./node_modules/.bin/vitest run tests/cli-package-gate.test.ts diff --git a/docs/SURFACE.md b/docs/SURFACE.md index 354f89a94..c143e224b 100644 --- a/docs/SURFACE.md +++ b/docs/SURFACE.md @@ -957,47 +957,106 @@ concurrent flow closes. - *Behaviour:* the replacement delegates to the intrinsic and is specified to behave identically. A non-iterable argument is handed straight through, so `Promise.all(5)` and `Promise.all(null)` return the same rejected promises the - intrinsic returns; `name` and `length` match. If `Promise.all` has already been - replaced by something else, the flow refuses to start rather than fighting over - the intrinsic. + intrinsic returns; `name` and `length` match. A replacement after the observer + is installed violates the authored lifecycle contract. A process that starts + with a Promise preload uses the existing serial scheduler for new roots. If a process-wide intrinsic replacement is unacceptable in your deployment, do not run authored TypeScript bodies in that process; the declarative YAML path does not install it. -### `f.run` on the local daemon: one at a time, in the run's environment - -Two properties of `f.run` on a local `relayflowd` surprise people. Both are how -the current kernel works, not promises of the Surface. - -**Within one run, `f.run` steps run one after another.** `Promise.all` over two -`f.run('sleep 2')` steps takes about 4s, not 2s. The SDK starts both steps at -once, but the body talks to the daemon over a single connection. The daemon -handles each connection's requests in order (`kernel/relayflowd/src/server.rs`), -and the request that starts a deterministic step returns only after the -command exits (`engine/drive.rs` → `exec_det.rs`). A declared `budget` also -queues operations in order (`authored-budget.ts`). `Promise.all` stays correct -authoring: results come back in declaration order, and the steps will overlap -once the kernel dispatches in parallel. +### `f.run` on the local daemon: concurrent children, in the run's environment + +Two properties of `f.run` on a local `relayflowd` are useful to know. + +**Certified `Promise.all` groups of `f.run` steps overlap.** A direct +`Promise.all` over two `f.run('sleep 2')` steps takes about 2s of step time. +The root records its execution mode before its body runs. Parallel mode is +selected only for a narrow source grammar: awaited `Promise.all` groups of +direct `f.run` calls, and locally declared async branches made only of awaited +`f.run` calls or direct run groups. Every branch must contain a direct `f.run`. +The entry module must import `{ flow }` directly from `@relayflows/surface` and +pass the body arrow literally to `export default flow('name', async f => {...})`. +The entry +has no other top-level statements in parallel mode. Re-exports, +local flow factories, and imported flow definitions use serial mode, because +their body's Promise binding cannot be certified from the entry file. Other +imports also use serial mode because they may alter Promise before the body +starts. The defining module must leave the intrinsic `Promise` and +`globalThis.Promise` unshadowed; a module that binds either name uses serial +mode. An authored process started with a `--import`, `--require`, or loader +preload, or with an already replaced Promise or Array iterator intrinsic, also +admits new roots in serial mode. Generated arrays such as `Array.from` use serial +mode. Branches may not mutate shared values, await timers or other promises, +or call `f.done`; completion belongs at the end of +the root body. The check is conservative: an unrecognized source form uses +serial mode even when its author knows it would be safe. In parallel mode, +each deterministic child uses its own journal connection because the +daemon handles requests on one connection in order and `run.start` returns +only after its command exits. An authored body admits at most eight +deterministic children at once; additional calls wait for a slot. `Promise.all` +returns results in declaration order while each continuation receives its +result as soon as that child completes. Follow-up ids inside a certified +concurrent region use causal predecessor identities for replay. + +Other bodies keep the established serial `f.run` scheduler and `kind-N` step +ids. This includes `Promise.race`, `Promise.any`, eager background work, +timers, closure-shared promises or mutable results, other `f.*` effects, +dispatched flows, and a declared `budget`. +Those bodies continue to run; the fallback only changes whether their +deterministic child commands overlap. A step whose source cannot be +certified also uses serial mode. The mode is immutable for the root's lifetime. + +Each child's admission key comes from the root run and step id. Each child has +its own journal; the root's child index records completion facts as they arrive, and +readers match them by step id and run id. +In parallel mode, if the bounded causal walk cannot identify a follow-up's +full predecessor frontier, the frontier passes through an unregistered promise +aggregate, a Promise constructor, method, or combinator has been replaced, a +non-run effect appears, or a new initial child +appears after the body's first turn, the root fails before admitting that +effect rather than issuing an ambiguous replay key. Once this happens, no +later child is admitted. The failure remains a root failure even when authored +code catches the immediate exception. Children already in flight finish and +are journaled before the root reports that failure; the root may therefore +take as long as its slowest admitted child to fail. +The same refusal applies if a fulfilled `Promise.all` or settled +`Promise.allSettled` still has a pending recorded member, which means the join +did not actually wait for its declared branches. + +If one concurrent `f.run` fails, the authored body fails and its waiting +siblings are cancelled before admission. Children already admitted can finish +their own journal work; their outcomes cannot turn the failed body into a +success. A child in a separate `f.dispatch` body follows that body's own +failure and capacity rules. + +**Upgrade from 2.0.50 or 2.0.51:** roots admitted before execution modes were journaled +resume in serial compatibility mode, preserving their `kind-N` step ids +and shared connection. Completed child effects remain bound to their original +admission keys, including follow-ups after a `Promise.all` join. +New parallel roots carry a distinct root kind. A 2.0.50 or 2.0.51 CLI refuses one on +rollback, leaving it resumable by this or a newer CLI rather than replaying +parallel follow-ups with old `run-N` identities. New serial roots retain the +original root kind and serial IDs. An active pinned parallel root resumed in a +process with a Node preload or altered Promise or Array iterator intrinsic is +refused before dispatch and remains resumable in a clean process. A completed +root reports its journaled result without dispatching new work. What runs concurrently today: - `f.agent` and `f.llm` steps, up to `--agent-capacity`. They run in worker processes, not in the daemon's request path. -- Separate `flows run` invocations. Each has its own connection to the daemon, - so their `f.run` steps overlap. For parallel shell work, start the lanes as - separate runs. +- Separate `flows run` invocations. Their steps overlap as well. - Inside one step, a command that waits on its own background jobs, such as `f.run('a & b & wait')`. A single `f.run` cannot start a background job and return before it finishes: the step waits on the command's output pipes. -`f.dispatch` children share their parent body's connection, so they are -serialized too. +`f.dispatch` roots currently use serial `f.run` scheduling. **`f.run` gets the environment of the `flows run` that started the run, but the daemon's working directory.** Every `flows run` on a data dir attaches to the same `relayflowd`, which spawns the shell steps. The CLI sends its -`process.env` with the run, and that run's steps are spawned with exactly +`process.env` with each child run, and that run's steps are spawned with exactly that environment, plus `FLOWS_INPUT` and `RELAYFLOW_MEMORY`. Two runs on one daemon each see their own variables. `flows resume` sends the resuming CLI's environment, which replaces the run's from then on. diff --git a/evidence/native-parallel-ci-2026-10-18/README.md b/evidence/native-parallel-ci-2026-10-18/README.md new file mode 100644 index 000000000..03e6ee7b1 --- /dev/null +++ b/evidence/native-parallel-ci-2026-10-18/README.md @@ -0,0 +1,78 @@ +# #667 Linux artifact CI follow-up + +The `linux-x64-artifact` job at `63c9994d` failed one serial-only live test +with `run_admission_conflict` and four `flows check --watch` tests with their +5-second test timeouts. The full job log is in GitHub Actions run +`39043415569`, job `117427280321`. + +## Serial arguments-alias test + +The arguments-alias LLM fixture is certified **serial** before it is killed. +Its old assertion required every resumed run to exit zero, even though the +serial scheduler can report the existing #674 `run_admission_conflict` when +concurrent branches resume in a different order; this also occurs on +2.0.50/2.0.51. The revised test still requires serial mode, one L and one R +effect, at most one Z effect, and exactly two LLM requests. A nonzero resume +may only be exit 1 with `run_admission_conflict`. No parallel-mode expectation +changed. Its child CLI timeout is now 90 seconds so a slow macOS host does +not produce a null exit status after the fixture's former 30-second limit. + +`npm run typecheck:tests` passed. A focused six-repetition macOS run reached +the test's 240-second limit; it did not provide a result for the revised +assertions. The new Linux CI run is the required rerun of that live fixture. + +## Watch timeout comparison + +The watch test and its direct implementation files are byte-identical at +`origin/main` (`5de41849`, Flows 2.0.51) and this PR head. The comparison +included `cli-watch.ts`, `dir-watcher-poller.ts`, `cli/check.ts`, +`cli/check-typescript.ts`, and `cli-watch.test.ts`; `git diff --name-only` +returned no paths and both test blobs are `b43c7966f32a9369fcf0bb0bd57d19aa73f490a3`. + +In an isolated main worktree, a focused rerun of the four CI timeout cases +timed out on the transitive-import and missing-import cases at 5 seconds; +the nearer-config and delete/recreate cases passed. A branch rerun of all 11 +watch tests passed nine and timed out on two cases. Raising only Vitest's +outer test timeout to 20 seconds still left two failures at the test's inner +5-second `expect.poll` deadline. The changing cases and unchanged watch code +show a pre-existing timing sensitivity, outside the parallel scheduler. +Watch code and assertions were left untouched. + +Local comparison commands used Node 26.11.1 and Bun 1.4.2 on macOS: + +```sh +git diff --name-only origin/main HEAD -- packages/sdk/tests/cli-watch.test.ts packages/sdk/src/cli-watch.ts packages/sdk/src/dir-watcher-poller.ts packages/sdk/src/cli/check.ts packages/sdk/src/cli/check-typescript.ts +(cd ../main-control/packages/sdk && npx vitest run tests/cli-watch.test.ts -t 'watches transitive|refreshes the import graph|detects a nearer config|keeps watching after') +(cd flows-parallel/packages/sdk && npx vitest run tests/cli-watch.test.ts --testTimeout=20000) +``` + +The adjacent logs are the local main and branch reruns. GitHub Actions uses +Node 22.23.3 and Bun 1.4.0, so the new CI job remains the Linux check. + +## Same-workflow main control and startup diagnosis + +The same `linux-x64-artifact` workflow was dispatched on main `5de41849` as +[run 39094544639](https://github.com/AgentWorkforce/flows/actions/runs/39094544639). +Its `Test SDK and type-level authoring contracts` step passed, including all +11 `cli-watch.test.ts` cases (23.9 seconds for that file), and the full +workflow concluded successfully. +This makes the four timeout failures on #667's +[run 39084034162](https://github.com/AgentWorkforce/flows/actions/runs/39084034162) +specific to that full-suite execution, despite unchanged watch source/tests. + +The parallel scheduler introduced eager TypeScript parser imports through +`authored-root.ts` and `authored-flow-executor.ts`. Eight alternating local +one-shot YAML checks measured warm median startup of 299 ms at the old #667 +head versus 197 ms for published 2.0.51. With those two imports deferred to +authored run admission/execution, the same paired check measured 189 ms versus +191 ms for published 2.0.51. The parser still uses the startup snapshot of +`Function.prototype.toString`, and both Promise/Array intrinsics are rechecked +after each async import before parallel admission or body execution. + +The four failing watch cases spawn a fresh check CLI for each report and keep +five-second outer case deadlines. Running the existing 11 watch tests in their +own Vitest invocation passed 11/11 in 10.9 seconds, with each affected case +under 1.7 seconds. The local test script and Linux artifact workflow now run +that file separately from concurrent live-test workers; the test cases and +their deadlines are unchanged. Focused parser, parallel overlap, queued-child +failure, and crash/resume tests passed after the deferred-import change. diff --git a/evidence/native-parallel-ci-2026-10-18/arguments-alias-macos.log b/evidence/native-parallel-ci-2026-10-18/arguments-alias-macos.log new file mode 100644 index 000000000..c7a59b2ef --- /dev/null +++ b/evidence/native-parallel-ci-2026-10-18/arguments-alias-macos.log @@ -0,0 +1,19 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-run-live.test.ts (42 tests | 1 failed | 41 skipped) 240108ms + × parallel authored deterministic steps > keeps an arguments-alias LLM body serial without replay across six resumes 240092ms + → Test timed out in 240000ms. +If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > keeps an arguments-alias LLM body serial without replay across six resumes +Error: Test timed out in 240000ms. +If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 41 skipped (42) + Start at 02:40:57 + Duration 281.32s (transform 6.95s, setup 725ms, collect 39.17s, tests 240.11s, environment 0ms, prepare 817ms) diff --git a/evidence/native-parallel-ci-2026-10-18/branch-watch.log b/evidence/native-parallel-ci-2026-10-18/branch-watch.log new file mode 100644 index 000000000..a9af1b4a1 --- /dev/null +++ b/evidence/native-parallel-ci-2026-10-18/branch-watch.log @@ -0,0 +1,65 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/cli-watch.test.ts (11 tests | 2 failed) 31898ms + × flows check --watch > forwards required daemon validation through watch despite the offline test environment 5257ms + → Matcher did not succeed in 5000ms + ✓ flows check --watch > rechecks syntax errors, clears once, and returns the last refusal on Ctrl-C 3514ms + ✓ flows check --watch > streams JSON lines without ANSI, recovers after atomic saves, and exits zero after repair 2100ms + ✓ flows check --watch > coalesces 20 concurrent saves into at most two rechecks 2090ms + ✓ flows check --watch > watches transitive relative use imports, cycles, and nearest config changes 2693ms + ✓ flows check --watch > refreshes the import graph and notices missing imports being created 2343ms + ✓ flows check --watch > reloads authored TypeScript instead of reusing the first imported definition 4437ms + × flows check --watch > detects a nearer config appearing and falls back after it is deleted 6338ms + → Matcher did not succeed in 5000ms + ✓ flows check --watch > keeps watching after the target is deleted and recreated 2144ms + ✓ flows check --watch > queues changes during a slow check without overlapping checks 782ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 2 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/cli-watch.test.ts > flows check --watch > forwards required daemon validation through watch despite the offline test environment +Error: Matcher did not succeed in 5000ms + ❯ until tests/cli-watch.test.ts:59:65 + 57| + 58| async function until(predicate: () => boolean): Promise { + 59| await expect.poll(predicate, { timeout: 5000, interval: 20 }).toBe(t… + | ^ + 60| } + 61| + ❯ tests/cli-watch.test.ts:78:11 + +Caused by: AssertionError: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/2]⎯ + + FAIL tests/cli-watch.test.ts > flows check --watch > detects a nearer config appearing and falls back after it is deleted +Error: Matcher did not succeed in 5000ms + ❯ until tests/cli-watch.test.ts:59:65 + 57| + 58| async function until(predicate: () => boolean): Promise { + 59| await expect.poll(predicate, { timeout: 5000, interval: 20 }).toBe(t… + | ^ + 60| } + 61| + ❯ tests/cli-watch.test.ts:181:11 + +Caused by: AssertionError: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/2]⎯ + + Test Files 1 failed (1) + Tests 2 failed | 9 passed (11) + Start at 02:39:22 + Duration 82.70s (transform 9.71s, setup 303ms, collect 49.59s, tests 31.90s, environment 0ms, prepare 398ms) diff --git a/evidence/native-parallel-ci-2026-10-18/main-watch.log b/evidence/native-parallel-ci-2026-10-18/main-watch.log new file mode 100644 index 000000000..e86ebfe1a --- /dev/null +++ b/evidence/native-parallel-ci-2026-10-18/main-watch.log @@ -0,0 +1,25 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/main-control/packages/sdk + + ❯ tests/cli-watch.test.ts (11 tests | 2 failed | 7 skipped) 13410ms + × flows check --watch > watches transitive relative use imports, cycles, and nearest config changes 5025ms + → Test timed out in 5000ms. +If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". + × flows check --watch > refreshes the import graph and notices missing imports being created 5041ms + → Test timed out in 5000ms. +If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". + ✓ flows check --watch > detects a nearer config appearing and falls back after it is deleted 1684ms + ✓ flows check --watch > keeps watching after the target is deleted and recreated 1582ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 2 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/cli-watch.test.ts > flows check --watch > watches transitive relative use imports, cycles, and nearest config changes + FAIL tests/cli-watch.test.ts > flows check --watch > refreshes the import graph and notices missing imports being created +Error: Test timed out in 5000ms. +If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/2]⎯ + + Test Files 1 failed (1) + Tests 2 failed | 2 passed | 7 skipped (11) + Start at 02:36:12 + Duration 49.80s (transform 7.16s, setup 377ms, collect 35.52s, tests 13.41s, environment 0ms, prepare 236ms) diff --git a/evidence/native-parallel-review5/.gitattributes b/evidence/native-parallel-review5/.gitattributes new file mode 100644 index 000000000..23cdbfe7e --- /dev/null +++ b/evidence/native-parallel-review5/.gitattributes @@ -0,0 +1 @@ +*.log -whitespace diff --git a/evidence/native-parallel-review5/Dockerfile b/evidence/native-parallel-review5/Dockerfile new file mode 100644 index 000000000..2692f33a0 --- /dev/null +++ b/evidence/native-parallel-review5/Dockerfile @@ -0,0 +1,7 @@ +FROM node:22-trixie +RUN mkdir -p /bench && cd /bench && npm install --ignore-scripts \ + @relayflows/sdk@2.0.51 @relayflows/surface@2.0.51 \ + @relayflows/runtime-linux-x64@2.0.51 bluebird@3.7.2 +COPY dist/ /bench/node_modules/@relayflows/sdk/dist/ +COPY replay.mjs /bench/replay.mjs +WORKDIR /bench diff --git a/evidence/native-parallel-review5/Dockerfile.upgrade b/evidence/native-parallel-review5/Dockerfile.upgrade new file mode 100644 index 000000000..ea1931342 --- /dev/null +++ b/evidence/native-parallel-review5/Dockerfile.upgrade @@ -0,0 +1,8 @@ +FROM node:22-trixie +RUN mkdir -p /bench && cd /bench && npm install --ignore-scripts \ + @relayflows/sdk@2.0.51 @relayflows/surface@2.0.51 \ + @relayflows/runtime-linux-x64@2.0.51 bluebird@3.7.2 +COPY dist/ /bench/sdk-head/dist/ +COPY package.json /bench/sdk-head/package.json +COPY upgrade.mjs /bench/upgrade.mjs +WORKDIR /bench diff --git a/evidence/native-parallel-review5/build-typecheck.log b/evidence/native-parallel-review5/build-typecheck.log new file mode 100644 index 000000000..57900cf0c --- /dev/null +++ b/evidence/native-parallel-review5/build-typecheck.log @@ -0,0 +1,12 @@ + +> @relayflows/sdk@2.0.51 build +> tsc && node scripts/make-cli-executable.mjs + + +> @relayflows/sdk@2.0.51 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json + + +> @relayflows/sdk@2.0.51 typecheck:tests +> tsc -p tsconfig.tests.json + diff --git a/evidence/native-parallel-review5/linux-replay.log b/evidence/native-parallel-review5/linux-replay.log new file mode 100644 index 000000000..94f1efe7b --- /dev/null +++ b/evidence/native-parallel-review5/linux-replay.log @@ -0,0 +1,61 @@ +{"case":"A1","index":0,"rootRunId":"01M52Z24188HRQ7JQCS671H78N","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":1,"rootRunId":"01M52Z27JP7MQWFN9RZKSQ9AFZ","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":2,"rootRunId":"01M52Z2B1M774PFFJ5FQGM57VS","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":3,"rootRunId":"01M52Z2EE408TFR696QA5CM5B6","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":4,"rootRunId":"01M52Z2HY0GQYS8V6BWV6DP2FE","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":5,"rootRunId":"01M52Z2NASHW0HHNEZGCYG0YC4","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":0,"rootRunId":"01M52Z2RRJKTBM9NP63ZG0J888","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":1,"rootRunId":"01M52Z2VWCD75TSHAEYQ9ARN2J","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":2,"rootRunId":"01M52Z2YXBSNG24ZE0N9D7FS6V","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":3,"rootRunId":"01M52Z31XV3SRPQJH8XJBR4QBS","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":4,"rootRunId":"01M52Z35288ES8K22BM1P8H4KF","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":5,"rootRunId":"01M52Z387NTGMM45NG78GHG1A7","before":"LR","after":"LRZ","resumed":true} +{"case":"N2","index":0,"rootRunId":"01M52Z3B7BHF1DMRWNEP3C33HC","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":1,"rootRunId":"01M52Z3EN6R4CJF36MYJJTVX7Y","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":2,"rootRunId":"01M52Z3J0Q87QTBZ867EF5NTQ6","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":3,"rootRunId":"01M52Z3NC58NNW7JJ2DHXZJKRK","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":4,"rootRunId":"01M52Z3RTQC39C0N6JR84AEK67","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":5,"rootRunId":"01M52Z3W5BVD9DQXG5H53C85D8","before":"abc","after":"Zabc","resumed":true} +{"case":"C1e","index":0,"rootRunId":"01M52Z3ZGNSJC6WXKMM2B303RS","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":1,"rootRunId":"01M52Z432F9TVKCVYE16XNX0QD","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":2,"rootRunId":"01M52Z46JPMYDDHS0S0X895DM8","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":3,"rootRunId":"01M52Z4A5BJPHG42T8X66J9C3M","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":4,"rootRunId":"01M52Z4DPRJSG4BF2X7WFR5SDK","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":5,"rootRunId":"01M52Z4H9ED4S0Q29SZP3V3DB7","before":"XY","after":"XYZ","resumed":true} +{"case":"G1","index":0,"rootRunId":"01M52Z4MT6WH3E5FPHXAFWSWDY","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":1,"rootRunId":"01M52Z4RBZRWBAG7BPZRZ57HDM","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":2,"rootRunId":"01M52Z4VPQ9NHKJHHF2N2HJMB9","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":3,"rootRunId":"01M52Z4Z0J85B30KAHRZYG420C","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":4,"rootRunId":"01M52Z52D0ZVHTHXY0PNA8TH9G","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":5,"rootRunId":"01M52Z55T3S2J6YGEMRESKF71Z","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":0,"rootRunId":"01M52Z595CWXFA4Z6Y7X0DGSDM","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":1,"rootRunId":"01M52Z5CPKCCK8K24JA0NZ8EX9","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":2,"rootRunId":"01M52Z5G30553F6KA4JWB33XG4","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":3,"rootRunId":"01M52Z5KE9ZHMJ2DGCJF1KJWAJ","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":4,"rootRunId":"01M52Z5PTZG0WJDAC2G3Z5B0B1","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":5,"rootRunId":"01M52Z5T9MT2KYZBYW4Z60DC4X","before":"ABG","after":"ABGZ","resumed":true} +{"case":"I1","index":0,"rootRunId":"01M52Z5XP46VMR070SFWZRE6D1","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":1,"rootRunId":"01M52Z618D7GKVK72YEH2XQ8ED","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":2,"rootRunId":"01M52Z64SEKY66ETXZ4PEJA2EQ","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":3,"rootRunId":"01M52Z6877CC252SRTQX16JYFD","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":4,"rootRunId":"01M52Z6BT84DNG6MB4X9H2H722","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":5,"rootRunId":"01M52Z6F6RER3S149QYWK2E9K5","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"H1","index":0,"rootRunId":"01M52Z6JHXPZGWR44PKXJDR6YV","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":1,"rootRunId":"01M52Z6Q6XW0C9NXXZZYX55PQ0","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":2,"rootRunId":"01M52Z6VMKH6VXKF8605SP7A9B","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":3,"rootRunId":"01M52Z7073M1HHHNBMTDBH22H2","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":4,"rootRunId":"01M52Z74ME3ZQCVE0DS3PQE1AX","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":5,"rootRunId":"01M52Z794GBJ38T9GFY6EP3GN6","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":0,"rootRunId":"01M52Z7DMZDHYJ469KD4EABFNS","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":1,"rootRunId":"01M52Z7J6DSYR0393Z5X4EDYHP","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":2,"rootRunId":"01M52Z7PS6CC2NHZZ8QB6B1XDA","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":3,"rootRunId":"01M52Z7VF519075R0A72KQK558","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":4,"rootRunId":"01M52Z805KZAEZ6BHW3XCY3AV9","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":5,"rootRunId":"01M52Z84PK0GRSRW6JRGSJ7EE9","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":0,"rootRunId":"01M52Z89B48FYSMXG0PMRKNAQE","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":1,"rootRunId":"01M52Z8DP1R7HGG5MFVVJW4DJ9","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":2,"rootRunId":"01M52Z8J4RSW82WT7HFMVGK0YM","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":3,"rootRunId":"01M52Z8PJAHYT1ZR9S0HH2KAW3","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":4,"rootRunId":"01M52Z8TYKFW3T401A5JKQRZBZ","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":5,"rootRunId":"01M52Z8Z6669FGMS9EMXMKWNNQ","before":"LR","after":"LRZ","resumed":true} +{"done":true,"cases":10,"repetitions":6} diff --git a/evidence/native-parallel-review5/linux-upgrade.log b/evidence/native-parallel-review5/linux-upgrade.log new file mode 100644 index 000000000..7e663ef4f --- /dev/null +++ b/evidence/native-parallel-review5/linux-upgrade.log @@ -0,0 +1,19 @@ +{"case":"A1","index":0,"rootRunId":"01M52Z994B7Q02KTZ88MKF4H4M","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":1,"rootRunId":"01M52Z9CDX02GYWDFD94BEWCED","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":2,"rootRunId":"01M52Z9FQQ6SP192FSP8M69TNZ","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":3,"rootRunId":"01M52Z9K112J5M1KKNB6MPBCTN","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":4,"rootRunId":"01M52Z9PA5GK2BYXEB91C1E9R5","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":5,"rootRunId":"01M52Z9SNJMCGTJ9CYB82DJGBX","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":0,"rootRunId":"01M52Z9WY3TT83QFTAWXVC6114","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":1,"rootRunId":"01M52Z9ZGZWVJZT06QS70S8KPS","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":2,"rootRunId":"01M52ZA250X66HQM4CJ9MZCDG5","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":3,"rootRunId":"01M52ZA4T6FCSJG5X2XHQ92M1D","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":4,"rootRunId":"01M52ZA7EG0SBM90W3XA7WAG9C","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":5,"rootRunId":"01M52ZAA35R4MDFFYZG3TBRN4G","before":"LR","after":"LRZ","resumed":true} +{"case":"N2","index":0,"rootRunId":"01M52ZACR9EAWN597XZA94VPSP","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":1,"rootRunId":"01M52ZAGCG5EVZTZY848BMSN87","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":2,"rootRunId":"01M52ZAM18HCFFGQMEJB06GVAV","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":3,"rootRunId":"01M52ZAQSFXK4G2VWT5SYJGY2E","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":4,"rootRunId":"01M52ZAVESXFHV8W82ZZAK4N19","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":5,"rootRunId":"01M52ZAZ3DPV83PEM13MA6AW1M","before":"abc","after":"Zabc","resumed":true} +{"done":true,"cases":3,"repetitions":6} diff --git a/evidence/native-parallel-review5/mac-2051-compat.log b/evidence/native-parallel-review5/mac-2051-compat.log new file mode 100644 index 000000000..48a8c26b6 --- /dev/null +++ b/evidence/native-parallel-review5/mac-2051-compat.log @@ -0,0 +1,17 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-run-live.test.ts (37 tests | 30 skipped) 10330ms + ✓ parallel authored deterministic steps > resumes a sequential 2.0.50 run without replaying completed effects 1595ms + ✓ parallel authored deterministic steps > refuses a parallel v2 root under 2.0.50 and lets the new CLI resume it 1353ms + ✓ parallel authored deterministic steps > resumes 2.0.50 consecutive Promise.all groups after run-4 without replay 1249ms + ✓ parallel authored deterministic steps > resumes 2.0.50 consecutive Promise.all groups after run-5 without replay 1324ms + ✓ parallel authored deterministic steps > resumes 2.0.50 A1 nested joins without replay 2047ms + ✓ parallel authored deterministic steps > resumes 2.0.50 B1 chain beside join without replay 1371ms + ✓ parallel authored deterministic steps > resumes 2.0.50 N2 independent dependents without replay 1392ms + + Test Files 1 passed (1) + Tests 7 passed | 30 skipped (37) + Start at 20:19:00 + Duration 11.43s (transform 419ms, setup 8ms, collect 891ms, tests 10.33s, environment 0ms, prepare 49ms) + diff --git a/evidence/native-parallel-review5/mac-focused.log b/evidence/native-parallel-review5/mac-focused.log new file mode 100644 index 000000000..d0a3c0f3c --- /dev/null +++ b/evidence/native-parallel-review5/mac-focused.log @@ -0,0 +1,59 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (7 tests) 19ms + ✓ tests/journal-client-step-env.test.ts (8 tests) 10ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (34 tests) 540ms + ✓ tests/authored-step-secrets-live.test.ts (2 tests) 1547ms + ✓ an authored shell child sees a delivered token only when its own f.run grants it 871ms + ✓ parallel authored shell children keep their own secret grants 675ms +stdout | tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > overlaps two sleep 2 commands started in Promise.all +parallel sleep 2 elapsed: 2002 ms + +stdout | tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > starts a fast branch dependent before a slow sibling completes +fast dependent started after: 1064 ms + + ✓ tests/authored-parallel-run-live.test.ts (37 tests) 186214ms + ✓ parallel authored deterministic steps > overlaps two sleep 2 commands started in Promise.all 2915ms + ✓ parallel authored deterministic steps > starts a fast branch dependent before a slow sibling completes 3661ms + ✓ parallel authored deterministic steps > keeps declaration order when the later child finishes first 2661ms + ✓ parallel authored deterministic steps > admits at most eight deterministic children at once 2066ms + ✓ parallel authored deterministic steps > does not admit a queued child after a sibling fails 2293ms + ✓ parallel authored deterministic steps > replays a completed peer and resumes an unfinished peer after a crash 2435ms + ✓ parallel authored deterministic steps > replays follow-up steps in parallel branches after a crash 3431ms + ✓ parallel authored deterministic steps > does not replay a completed effect after a crash: 'two branches that each join two runs' 2386ms + ✓ parallel authored deterministic steps > does not replay a completed effect after a crash: 'a chain beside a branch with a join' 2444ms + ✓ parallel authored deterministic steps > resumes a sequential 2.0.50 run without replaying completed effects 1661ms + ✓ parallel authored deterministic steps > refuses a parallel v2 root under 2.0.50 and lets the new CLI resume it 1467ms + ✓ parallel authored deterministic steps > keeps a 'race' flow running on serial fallback without replay 2296ms + ✓ parallel authored deterministic steps > keeps a 'any' flow running on serial fallback without replay 2293ms + ✓ parallel authored deterministic steps > keeps a 'eager' flow running on serial fallback without replay 2068ms + ✓ parallel authored deterministic steps > resumes 'llm' branches without replaying completed effects 2246ms + ✓ parallel authored deterministic steps > resumes 'agent' branches without replaying completed effects 2083ms + ✓ parallel authored deterministic steps > resumes 'dispatch' branches without replaying completed effects 1901ms + ✓ parallel authored deterministic steps > resumes 2.0.50 consecutive Promise.all groups after run-4 without replay 1241ms + ✓ parallel authored deterministic steps > resumes 2.0.50 consecutive Promise.all groups after run-5 without replay 1339ms + ✓ parallel authored deterministic steps > keeps 'closure-shared readiness' serial and replays no completed effect 7972ms + ✓ parallel authored deterministic steps > keeps 'shared completion-order array' serial and replays no completed effect 7749ms + ✓ parallel authored deterministic steps > keeps 'deep non-step joins with a swallowed …' serial and replays no completed effect 8198ms + ✓ parallel authored deterministic steps > keeps done inside a branch on the established serial scheduler 8470ms + ✓ parallel authored deterministic steps > retains the base failure when a branch completes before its sibling continues 6649ms + ✓ parallel authored deterministic steps > keeps an arguments-alias LLM body serial across six resumes 12255ms + ✓ parallel authored deterministic steps > keeps 'bound module Promise' serial without replay across six resumes 10485ms + ✓ parallel authored deterministic steps > keeps 'hand-written module Promise' serial without replay across six resumes 9280ms + ✓ parallel authored deterministic steps > keeps 'module Promise class' serial without replay across six resumes 8950ms + ✓ parallel authored deterministic steps > keeps 'module Promise Native branches' serial without replay across six resumes 9834ms + ✓ parallel authored deterministic steps > keeps 'imported Bluebird Promise Native bran…' serial without replay across six resumes 9759ms + ✓ parallel authored deterministic steps > keeps 'empty async branches' serial without replay across six resumes 7014ms + ✓ parallel authored deterministic steps > keeps a Bluebird group of direct f.run calls serial across six resumes 7724ms + ✓ parallel authored deterministic steps > does not replay a completed effect after 'imported timer helper' reorder 12408ms + ✓ parallel authored deterministic steps > does not replay a completed effect after 'for-await timer' reorder 11365ms + ✓ parallel authored deterministic steps > resumes 2.0.50 A1 nested joins without replay 2517ms + ✓ parallel authored deterministic steps > resumes 2.0.50 B1 chain beside join without replay 1350ms + ✓ parallel authored deterministic steps > resumes 2.0.50 N2 independent dependents without replay 1349ms + + Test Files 5 passed (5) + Tests 88 passed (88) + Start at 20:15:47 + Duration 187.19s (transform 559ms, setup 64ms, collect 2.75s, tests 188.33s, environment 0ms, prepare 197ms) + diff --git a/evidence/native-parallel-review5/mutation-backstop-fail.log b/evidence/native-parallel-review5/mutation-backstop-fail.log new file mode 100644 index 000000000..0b7b57f67 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-backstop-fail.log @@ -0,0 +1,33 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (34 tests | 1 failed | 33 skipped) 16ms + × authored flow lifecycle through the journal executor > refuses a parallel follow-up through an unobserved Promise.all 14ms + → expected [Function] to throw error matching /unregistered aggregate/u but got 'unawaited_step: flow "parallel-unobse…' + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > refuses a parallel follow-up through an unobserved Promise.all +AssertionError: expected [Function] to throw error matching /unregistered aggregate/u but got 'unawaited_step: flow "parallel-unobse…' + +- Expected: +/unregistered aggregate/u + ++ Received: +"unawaited_step: flow \"parallel-unobserved-aggregate\" returned with unawaited steps: run-1 (f.run)" + + ❯ tests/authored-flow-lifecycle-executor.test.ts:108:5 + 106| it('refuses a parallel follow-up through an unobserved Promise.all',… + 107| const startedBefore = startedSpecs.length; + 108| await expect(execute(flow('parallel-unobserved-aggregate', async f… + | ^ + 109| await unobservedAll([f.run('printf A'), f.run('printf B')]); + 110| await f.run('printf X'); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 33 skipped (34) + Start at 20:15:25 + Duration 986ms (transform 323ms, setup 9ms, collect 788ms, tests 16ms, environment 0ms, prepare 32ms) + diff --git a/evidence/native-parallel-review5/mutation-backstop-pass.log b/evidence/native-parallel-review5/mutation-backstop-pass.log new file mode 100644 index 000000000..4fb21ac59 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-backstop-pass.log @@ -0,0 +1,10 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (34 tests | 33 skipped) 11ms + + Test Files 1 passed (1) + Tests 1 passed | 33 skipped (34) + Start at 20:15:32 + Duration 1.30s (transform 326ms, setup 10ms, collect 1.07s, tests 11ms, environment 0ms, prepare 66ms) + diff --git a/evidence/native-parallel-review5/mutation-f1-fail.log b/evidence/native-parallel-review5/mutation-f1-fail.log new file mode 100644 index 000000000..8ca711f83 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-f1-fail.log @@ -0,0 +1,33 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (7 tests | 1 failed | 6 skipped) 7ms + × parallel run admission > requires the module Promise binding to be the intrinsic 6ms + → const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };: expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > requires the module Promise binding to be the intrinsic +AssertionError: const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:125:72 + 123| `const intrinsic = globalThis; intrinsic.Promise = replacement;`, + 124| `global.Promise = replacement;`, + 125| ]) expect(eligible(candidate, `${prefix}\n${definition}`), prefix)… + | ^ + 126| expect(eligible(candidate, + 127| `export default (Promise.all = replacement, flow('probe', ${Func… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 6 skipped (7) + Start at 20:14:48 + Duration 560ms (transform 29ms, setup 27ms, collect 193ms, tests 7ms, environment 0ms, prepare 114ms) + diff --git a/evidence/native-parallel-review5/mutation-f1-pass.log b/evidence/native-parallel-review5/mutation-f1-pass.log new file mode 100644 index 000000000..c8e658f78 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-f1-pass.log @@ -0,0 +1,10 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (7 tests | 6 skipped) 8ms + + Test Files 1 passed (1) + Tests 1 passed | 6 skipped (7) + Start at 20:14:55 + Duration 428ms (transform 31ms, setup 11ms, collect 206ms, tests 8ms, environment 0ms, prepare 38ms) + diff --git a/evidence/native-parallel-review5/mutation-f2-fail.log b/evidence/native-parallel-review5/mutation-f2-fail.log new file mode 100644 index 000000000..0c1f053a7 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-f2-fail.log @@ -0,0 +1,33 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (7 tests | 1 failed | 6 skipped) 8ms + × parallel run admission > keeps groups with empty async branches serial 7ms + → expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > keeps groups with empty async branches serial +AssertionError: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:137:11 + 135| await f.run('X'); + 136| f.done('success'); + 137| }`))).toBe(false); + | ^ + 138| expect(eligible(body(`async f => { + 139| const work = async () => { await f.run('A'); }; + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 6 skipped (7) + Start at 20:15:00 + Duration 435ms (transform 20ms, setup 21ms, collect 196ms, tests 8ms, environment 0ms, prepare 46ms) + diff --git a/evidence/native-parallel-review5/mutation-f2-pass.log b/evidence/native-parallel-review5/mutation-f2-pass.log new file mode 100644 index 000000000..ebb84e744 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-f2-pass.log @@ -0,0 +1,10 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (7 tests | 6 skipped) 7ms + + Test Files 1 passed (1) + Tests 1 passed | 6 skipped (7) + Start at 20:15:03 + Duration 435ms (transform 23ms, setup 8ms, collect 188ms, tests 7ms, environment 0ms, prepare 63ms) + diff --git a/evidence/native-parallel-review5/mutation-f4-fail.log b/evidence/native-parallel-review5/mutation-f4-fail.log new file mode 100644 index 000000000..563a58ab3 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-f4-fail.log @@ -0,0 +1,33 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (34 tests | 1 failed | 33 skipped) 15ms + × authored flow lifecycle through the journal executor > refuses later admissions after a caught parallel violation 13ms + → expected [ { version: '0.1.0', …(2) } ] to have a length of +0 but got 1 + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > refuses later admissions after a caught parallel violation +AssertionError: expected [ { version: '0.1.0', …(2) } ] to have a length of +0 but got 1 + +- Expected ++ Received + +- 0 ++ 1 + + ❯ tests/authored-flow-lifecycle-executor.test.ts:103:26 + 101| f.done('success'); + 102| }), { executionMode: 'parallel' })).rejects.toMatchObject({ code: … + 103| expect(startedSpecs).toHaveLength(startedBefore); + | ^ + 104| }); + 105| + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 33 skipped (34) + Start at 20:15:12 + Duration 1.46s (transform 426ms, setup 9ms, collect 1.26s, tests 15ms, environment 0ms, prepare 29ms) + diff --git a/evidence/native-parallel-review5/mutation-f4-pass.log b/evidence/native-parallel-review5/mutation-f4-pass.log new file mode 100644 index 000000000..f9fc28bb9 --- /dev/null +++ b/evidence/native-parallel-review5/mutation-f4-pass.log @@ -0,0 +1,10 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (34 tests | 33 skipped) 11ms + + Test Files 1 passed (1) + Tests 1 passed | 33 skipped (34) + Start at 20:15:19 + Duration 1.29s (transform 405ms, setup 9ms, collect 1.08s, tests 11ms, environment 0ms, prepare 33ms) + diff --git a/evidence/native-parallel-review5/replay.mjs b/evidence/native-parallel-review5/replay.mjs new file mode 100644 index 000000000..6a029bc4b --- /dev/null +++ b/evidence/native-parallel-review5/replay.mjs @@ -0,0 +1,159 @@ +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; + +const bin = '/bench/node_modules/.bin/flows'; +const daemonBin = '/bench/node_modules/@relayflows/runtime-linux-x64/bin/relayflowd'; +const cases = [ + { name: 'A1', expected: 'LR', body: ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'B1', expected: 'LR', body: ` + const left = async () => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'N2', expected: 'abc', body: ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.3; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);` }, + { name: 'C1e', expected: 'XY', body: ` + const background = (async () => { await f.run('printf X >> effects'); })(); + await new Promise(resolve => setTimeout(resolve, 300)); + await f.run('printf Y >> effects'); + await background;` }, + { name: 'G1', expected: 'ABG', body: ` + await Promise.race([f.run('printf A >> effects'), f.run('sleep 0.3; printf B >> effects')]); + await f.run('printf G >> effects');` }, + { name: 'ANY', expected: 'ABG', body: ` + await Promise.any([f.run('printf A >> effects'), f.run('sleep 0.3; printf B >> effects')]); + await f.run('printf G >> effects');` }, + { name: 'I1', expected: 'LRxy', header: `, { use: ['./child.flow.ts'] }`, + childSource: `import { flow } from '@relayflows/surface'; +export default flow('child', async (f, input) => { + await Promise.all([f.run('printf first'), f.run('printf second')]); + await f.run('printf ' + input.token + ' >> effects'); + f.done('success'); +});\n`, body: ` + const left = async () => { await f.dispatch('child', { token: 'x' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.dispatch('child', { token: 'y' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, + { name: 'H1', expected: 'LR', wrapperCalls: 2, body: ` + const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] }; + const left = async () => { await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, + { name: 'K4', expected: 'LR', wrapperCalls: 2, functionExpression: true, body: ` + const g = arguments[0]; + const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] }; + const left = async () => { await g.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await g.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, + { name: 'H2', expected: 'LR', wrapperCalls: 2, body: ` + const left = async () => { await f.agent('left', { task: 'left', model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.agent('right', { task: 'right', model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, +]; +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); +function start(args, root, env) { + const child = spawn(bin, args, { cwd: root, env, stdio: ['ignore', 'pipe', 'pipe'] }); + let output = ''; + child.stdout.on('data', chunk => { output += chunk; }); + child.stderr.on('data', chunk => { output += chunk; }); + const closed = new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal, output }))); + return { child, closed, get output() { return output; } }; +} +function stopDaemon(data) { + const connection = path.join(data, 'connection.json'); + if (!fs.existsSync(connection)) return; + const pid = JSON.parse(fs.readFileSync(connection, 'utf8')).pid; + try { process.kill(pid, 'SIGKILL'); } catch (error) { + if (error.code !== 'ESRCH') throw error; + } +} +async function one(test, index) { + const root = fs.mkdtempSync('/bench/replay-verify-'); + const data = path.join(root, 'data'); + const flow = path.join(root, 'test.flow.ts'); + if (test.childSource) fs.writeFileSync(path.join(root, 'child.flow.ts'), test.childSource); + if (test.wrapperCalls) { + fs.writeFileSync(path.join(root, 'adapter.mjs'), `#!/usr/bin/env node +import fs from 'node:fs'; +if (process.argv[2] === 'auth') process.exit(0); +if (process.argv[2] === '--relayflows-adapter-v1') { + process.stdout.write('relayflows-agent-cli-v1\\n'); + let input = ''; + for await (const chunk of process.stdin) input += chunk; + if (input.trim() === '') process.exit(0); + const request = JSON.parse(input); + if (request.protocol !== 'relayflows-agent-cli-v1') process.exit(2); + process.stdout.write('relayflows-agent-cli-v1-execute\\n'); + fs.appendFileSync('calls', 'x'); + process.stdout.write('{"message":"ok"}'); +}\n`, { mode: 0o755 }); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ cli: path.join(root, 'adapter.mjs'), models: ['test-model'] })); + } + fs.writeFileSync(flow, `import { flow } from '@relayflows/surface'; +export default flow('replay-${test.name}'${test.header ?? ''}, ${test.functionExpression ? 'async function(f)' : 'async f =>'} {${test.body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +});\n`); + const env = { ...process.env, PATH: `/bench/node_modules/.bin:/usr/local/bin:/usr/bin:/bin`, + HOME: root, TMPDIR: '/tmp', XDG_RUNTIME_DIR: '/tmp', RELAYFLOWD_BIN: daemonBin }; + let original; + try { + original = start(['run', '--json', '--no-observer-link', ...(test.wrapperCalls ? ['--local-agent'] : []), + '--data-dir', data, flow, '--input', '{}'], root, env); + const deadline = Date.now() + 60_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (original.child.exitCode !== null) throw new Error(`${test.name} run exited early: ${original.output}`); + if (Date.now() > deadline) throw new Error(`${test.name} never reached stall: ${original.output}`); + await sleep(25); + } + const before = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (before !== test.expected) throw new Error(`${test.name} before=${before} expected=${test.expected}`); + if (test.wrapperCalls && fs.readFileSync(path.join(root, 'calls'), 'utf8').length !== test.wrapperCalls) + throw new Error(`${test.name} wrapper call count before resume was not ${test.wrapperCalls}`); + const rootRunId = fs.readdirSync(path.join(data, 'runs')).filter(name => name.endsWith('.sqlite3')).sort()[0].slice(0, -8); + original.child.kill('SIGKILL'); + await original.closed; + stopDaemon(data); + fs.writeFileSync(path.join(root, 'release'), ''); + const resumed = start(['resume', '--json', '--no-observer-link', ...(test.wrapperCalls ? ['--local-agent'] : []), + '--data-dir', data, rootRunId], root, env); + const timeout = setTimeout(() => resumed.child.kill('SIGKILL'), 120_000); + timeout.unref(); + const result = await resumed.closed; + clearTimeout(timeout); + if (result.code !== 0) throw new Error(`${test.name} resume failed: ${result.output}`); + const after = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (after !== [...test.expected, 'Z'].sort().join('')) throw new Error(`${test.name} replay: before=${before} after=${after}`); + if (test.wrapperCalls && fs.readFileSync(path.join(root, 'calls'), 'utf8').length !== test.wrapperCalls) + throw new Error(`${test.name} replayed an LLM or agent call`); + console.log(JSON.stringify({ case: test.name, index, rootRunId, before, after, resumed: true })); + } finally { + if (original?.child.exitCode === null && original.child.signalCode === null) original.child.kill('SIGKILL'); + stopDaemon(data); + fs.rmSync(root, { recursive: true, force: true }); + } +} +const repetitions = Number(process.env.REPETITIONS ?? '6'); +const selection = process.env.CASE?.split(','); +const selected = cases.filter(test => selection === undefined || selection.includes(test.name)); +for (const test of selected) for (let index = 0; index < repetitions; index++) await one(test, index); +console.log(JSON.stringify({ done: true, cases: selected.length, repetitions })); diff --git a/evidence/native-parallel-review5/upgrade.mjs b/evidence/native-parallel-review5/upgrade.mjs new file mode 100644 index 000000000..b8622be42 --- /dev/null +++ b/evidence/native-parallel-review5/upgrade.mjs @@ -0,0 +1,99 @@ +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; + +const oldBin = '/bench/node_modules/@relayflows/sdk/dist/cli.js'; +const headBin = '/bench/sdk-head/dist/cli.js'; +const daemonBin = '/bench/node_modules/@relayflows/runtime-linux-x64/bin/relayflowd'; +const cases = [ + { name: 'A1', expected: 'LR', body: ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'B1', expected: 'LR', body: ` + const left = async () => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'N2', expected: 'abc', body: ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.3; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);` }, +]; +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); +function start(bin, args, root, env) { + const child = spawn(process.execPath, [bin, ...args], { cwd: root, env, stdio: ['ignore', 'pipe', 'pipe'] }); + let output = ''; + child.stdout.on('data', chunk => { output += chunk; }); + child.stderr.on('data', chunk => { output += chunk; }); + const closed = new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal, output }))); + return { child, closed, get output() { return output; } }; +} +function stopDaemon(data) { + const connection = path.join(data, 'connection.json'); + if (!fs.existsSync(connection)) return; + const pid = JSON.parse(fs.readFileSync(connection, 'utf8')).pid; + try { process.kill(pid, 'SIGKILL'); } catch (error) { + if (error.code !== 'ESRCH') throw error; + } +} +async function one(test, index) { + const root = fs.mkdtempSync('/bench/replay-verify-'); + const data = path.join(root, 'data'); + const flow = path.join(root, 'test.flow.ts'); + fs.writeFileSync(flow, `import { flow } from '@relayflows/surface'; +export default flow('replay-${test.name}', async f => {${test.body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +});\n`); + const env = { ...process.env, PATH: `/bench/node_modules/.bin:/usr/local/bin:/usr/bin:/bin`, + HOME: root, TMPDIR: '/tmp', XDG_RUNTIME_DIR: '/tmp', RELAYFLOWD_BIN: daemonBin }; + let original; + try { + original = start(oldBin, ['run', '--json', '--no-observer-link', '--data-dir', data, flow, '--input', '{}'], root, env); + const deadline = Date.now() + 60_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (original.child.exitCode !== null) throw new Error(`${test.name} run exited early: ${original.output}`); + if (Date.now() > deadline) throw new Error(`${test.name} never reached stall: ${original.output}`); + await sleep(25); + } + const before = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (before !== test.expected) throw new Error(`${test.name} before=${before} expected=${test.expected}`); + const rootRunId = fs.readdirSync(path.join(data, 'runs')).filter(name => name.endsWith('.sqlite3')).sort()[0].slice(0, -8); + original.child.kill('SIGKILL'); + await original.closed; + stopDaemon(data); + fs.writeFileSync(path.join(root, 'release'), ''); + const resumed = start(headBin, ['resume', '--json', '--no-observer-link', '--data-dir', data, rootRunId], root, env); + const timeout = setTimeout(() => resumed.child.kill('SIGKILL'), 120_000); + timeout.unref(); + const result = await resumed.closed; + clearTimeout(timeout); + if (result.code !== 0) throw new Error(`${test.name} resume failed: ${result.output}`); + const after = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (after !== [...test.expected, 'Z'].sort().join('')) throw new Error(`${test.name} replay: before=${before} after=${after}`); + console.log(JSON.stringify({ case: test.name, index, rootRunId, before, after, resumed: true })); + } finally { + if (original?.child.exitCode === null && original.child.signalCode === null) original.child.kill('SIGKILL'); + stopDaemon(data); + fs.rmSync(root, { recursive: true, force: true }); + } +} +const repetitions = Number(process.env.REPETITIONS ?? '6'); +const selected = cases.filter(test => process.env.CASE === undefined || test.name === process.env.CASE); +for (const test of selected) for (let index = 0; index < repetitions; index++) await one(test, index); +console.log(JSON.stringify({ done: true, cases: selected.length, repetitions })); diff --git a/evidence/native-parallel-review5/verification.md b/evidence/native-parallel-review5/verification.md new file mode 100644 index 000000000..77a68ee7a --- /dev/null +++ b/evidence/native-parallel-review5/verification.md @@ -0,0 +1,77 @@ +# Parallel `f.run` review #5 verification + +Base: `origin/main` at `5de41849` (Flows 2.0.51). The branch remained draft while these checks ran. All commands below used the rebased branch source; the Linux images copied the built `packages/sdk/dist` with a matching SHA-256 for `authored-parallel-eligibility.js` (`682ca6b984deaaaa23e916655688566d841821bc0622b676092abfe92f545634`). + +## Build and focused Mac run + +From `packages/sdk`: + +```sh +npm run build +npm run typecheck +npm run typecheck:tests +RELAYFLOWD_BIN=/Users/khaliqgant/.relayflows-toolchain/target/ms-step-secrets/debug/relayflowd \ +RELAYFLOWS_PREVIOUS_CLI='/Volumes/Paris Drive/AgentWorkforce/ms-sandboxes/native-selfhosted-measure-2026-10-16/node_modules/@relayflows/sdk/dist/cli.js' \ +npx vitest run tests/authored-parallel-run-live.test.ts tests/authored-step-secrets-live.test.ts tests/authored-parallel-eligibility.test.ts tests/authored-flow-lifecycle-executor.test.ts tests/journal-client-step-env.test.ts +``` + +Captured output: [build-typecheck.log](build-typecheck.log), [mac-focused.log](mac-focused.log). The final lines were: + +```text +Test Files 5 passed (5) + Tests 88 passed (88) +``` + +The live suite includes six crash/resume repetitions each for P1, P1h, P1c, P1n, P1bn, P1b, and P2. It asserts serial mode and one copy of every completed effect. The secret test asserts parallel mode, a granted child receives the delivered token, and its ungranted sibling does not. The loopback test asserts an isolated peer refuses a withheld grant before `run.start`. + +## Published 2.0.51 compatibility + +The test names still say “2.0.50”, but this command supplied the published 2.0.51 CLI as the previous version: + +```sh +RELAYFLOWD_BIN=/Users/khaliqgant/.relayflows-toolchain/target/ms-step-secrets/debug/relayflowd \ +RELAYFLOWS_PREVIOUS_CLI='/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/prior-2051/node_modules/@relayflows/sdk/dist/cli.js' \ +npx vitest run tests/authored-parallel-run-live.test.ts -t '2.0.50' +``` + +Captured output: [mac-2051-compat.log](mac-2051-compat.log). + +```text +Test Files 1 passed (1) + Tests 7 passed | 30 skipped (37) +``` + +The selected cases cover previous-version resume after `run-4` and `run-5`, A1/B1/N2 legacy roots, and rollback refusal for a new parallel root followed by successful head resume. + +## Linux x64 crash and upgrade runs + +The image installed published `@relayflows/sdk`, `@relayflows/surface`, and `@relayflows/runtime-linux-x64` at 2.0.51, then copied the branch's built SDK `dist`. Commands from the worker workspace: + +```sh +docker build --platform linux/amd64 -t ms-flows-parallel:review5 -f Dockerfile . +docker run --rm --platform linux/amd64 --init -e REPETITIONS=6 ms-flows-parallel:review5 node /bench/replay.mjs +docker build --platform linux/amd64 -t ms-flows-parallel:review5-upgrade -f Dockerfile.upgrade . +docker run --rm --platform linux/amd64 --init -e REPETITIONS=6 ms-flows-parallel:review5-upgrade node /bench/upgrade.mjs +``` + +The build context was `swarm/ms-flows-parallel/docker-review5`, with the branch's `packages/sdk/dist` and `package.json` copied in. The exact [Dockerfile](Dockerfile), [upgrade Dockerfile](Dockerfile.upgrade), [replay harness](replay.mjs), and [upgrade harness](upgrade.mjs) are copied here. Captured output: [linux-replay.log](linux-replay.log), [linux-upgrade.log](linux-upgrade.log). Their final lines were: + +```text +{"done":true,"cases":10,"repetitions":6} +{"done":true,"cases":3,"repetitions":6} +``` + +The first matrix covers A1, B1, N2, eager work, race, any, dispatch, LLM, arguments-alias LLM, and agent branches (60/60); the second resumes 2.0.51 A1/B1/N2 roots under the branch (18/18). Each log records the effect letters before and after resume and fails the command on an extra effect or provider call. + +## Mutation checks + +Each check changed one production guard, ran its focused test, restored the source from a saved copy, verified the original SHA-256, and reran the same test. The exact test commands and captured outputs are below. `authored-parallel-eligibility.ts` restored to `94b2a8025319c42f86a6efb3436a71323e65491a3b44b415c9f15f1b16e411a1`; `authored-flow-executor.ts` restored to `c72b093a48111fea56615df35f9a695039e57ab00bc9c94d905fdcb13e6e50ce`. + +| Guard temporarily changed | Command from `packages/sdk` | Captured failure and restored pass | +|---|---|---| +| Module-source check changed to `if (false && !moduleUsesIntrinsicPromise(moduleSource))` | `npx vitest run tests/authored-parallel-eligibility.test.ts -t 'requires the module Promise binding'` | [fail](mutation-f1-fail.log): `expected true to be false`; [pass](mutation-f1-pass.log): `1 passed` | +| Branch check changed from `return valid && runs > before` to `return valid` | `npx vitest run tests/authored-parallel-eligibility.test.ts -t 'keeps groups with empty async branches serial'` | [fail](mutation-f2-fail.log): `expected true to be false`; [pass](mutation-f2-pass.log): `1 passed` | +| Removed `if (parallelViolation !== undefined) throw parallelViolation` | `npx vitest run tests/authored-flow-lifecycle-executor.test.ts -t 'refuses later admissions after a caught parallel violation'` | [fail](mutation-f4-fail.log): one child admitted after refusal; [pass](mutation-f4-pass.log): `1 passed` | +| Removed the `predecessors.unregisteredAggregate` refusal | `npx vitest run tests/authored-flow-lifecycle-executor.test.ts -t 'refuses a parallel follow-up through an unobserved Promise.all'` | [fail](mutation-backstop-fail.log): refusal changed to `unawaited_step`; [pass](mutation-backstop-pass.log): `1 passed` | + +The pre-existing serial LLM completion-order conflict, reproduced on released 2.0.50 and 2.0.51, is tracked separately in [#674](https://github.com/AgentWorkforce/flows/issues/674). diff --git a/evidence/native-parallel-review6/Dockerfile.upgrade-2050 b/evidence/native-parallel-review6/Dockerfile.upgrade-2050 new file mode 100644 index 000000000..1fc72495c --- /dev/null +++ b/evidence/native-parallel-review6/Dockerfile.upgrade-2050 @@ -0,0 +1,8 @@ +FROM node:22-trixie +RUN mkdir -p /bench && cd /bench && npm install --ignore-scripts \ + @relayflows/sdk@2.0.50 @relayflows/surface@2.0.50 \ + @relayflows/runtime-linux-x64@2.0.50 bluebird@3.7.2 +COPY dist/ /bench/sdk-head/dist/ +COPY package.json /bench/sdk-head/package.json +COPY upgrade.mjs /bench/upgrade.mjs +WORKDIR /bench diff --git a/evidence/native-parallel-review6/linux-forced-guard.log b/evidence/native-parallel-review6/linux-forced-guard.log new file mode 100644 index 000000000..e9ac3af65 --- /dev/null +++ b/evidence/native-parallel-review6/linux-forced-guard.log @@ -0,0 +1,7 @@ +{"name":"Q5w","index":0,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q5w","index":1,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q5w","index":2,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q5w","index":3,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q5w","index":4,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q5w","index":5,"mode":"parallel","result":"failed_closed","effects":""} +{"done":true,"cases":["Q5w"],"repetitions":6,"mutation":"forced_guard","replays":0} diff --git a/evidence/native-parallel-review6/linux-forced-no-guard.log b/evidence/native-parallel-review6/linux-forced-no-guard.log new file mode 100644 index 000000000..eb2afe86b --- /dev/null +++ b/evidence/native-parallel-review6/linux-forced-no-guard.log @@ -0,0 +1,7 @@ +{"name":"Q5w","index":0,"mode":"parallel","result":"replayed_under_mutation","before":"X","after":"XXZ"} +{"name":"Q5w","index":1,"mode":"parallel","result":"no_replay_this_timing","before":"X","after":"XZ"} +{"name":"Q5w","index":2,"mode":"parallel","result":"replayed_under_mutation","before":"X","after":"XXZ"} +{"name":"Q5w","index":3,"mode":"parallel","result":"no_replay_this_timing","before":"X","after":"XZ"} +{"name":"Q5w","index":4,"mode":"parallel","result":"no_replay_this_timing","before":"X","after":"XZ"} +{"name":"Q5w","index":5,"mode":"parallel","result":"replayed_under_mutation","before":"X","after":"XXZ"} +{"done":true,"cases":["Q5w"],"repetitions":6,"mutation":"forced_no_guard","replays":3} diff --git a/evidence/native-parallel-review6/linux-native-overlap.log b/evidence/native-parallel-review6/linux-native-overlap.log new file mode 100644 index 000000000..93a31c9a5 --- /dev/null +++ b/evidence/native-parallel-review6/linux-native-overlap.log @@ -0,0 +1,22 @@ +{"side":"base","index":0,"cliMs":3128,"bodyMs":1559,"routeStartSpreadMs":736,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":0,"cliMs":2540,"bodyMs":561,"routeStartSpreadMs":13,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":1,"cliMs":3232,"bodyMs":1613,"routeStartSpreadMs":748,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":1,"cliMs":3119,"bodyMs":639,"routeStartSpreadMs":3,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":2,"cliMs":3243,"bodyMs":1625,"routeStartSpreadMs":751,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":2,"cliMs":3986,"bodyMs":748,"routeStartSpreadMs":5,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":3,"cliMs":3285,"bodyMs":1740,"routeStartSpreadMs":790,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":3,"cliMs":2444,"bodyMs":614,"routeStartSpreadMs":12,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":4,"cliMs":2940,"bodyMs":1664,"routeStartSpreadMs":767,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":4,"cliMs":2360,"bodyMs":577,"routeStartSpreadMs":2,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":5,"cliMs":2873,"bodyMs":1611,"routeStartSpreadMs":771,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":5,"cliMs":2237,"bodyMs":576,"routeStartSpreadMs":3,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":6,"cliMs":2862,"bodyMs":1675,"routeStartSpreadMs":746,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":6,"cliMs":2357,"bodyMs":527,"routeStartSpreadMs":11,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":7,"cliMs":2864,"bodyMs":1529,"routeStartSpreadMs":731,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":7,"cliMs":2363,"bodyMs":554,"routeStartSpreadMs":6,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":8,"cliMs":2818,"bodyMs":1581,"routeStartSpreadMs":730,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":8,"cliMs":2471,"bodyMs":562,"routeStartSpreadMs":11,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","index":9,"cliMs":2799,"bodyMs":1531,"routeStartSpreadMs":725,"routeOverlap":false,"dependentOverlap":false} +{"side":"head","index":9,"cliMs":2202,"bodyMs":553,"routeStartSpreadMs":7,"routeOverlap":true,"dependentOverlap":true} +{"side":"base","summary":{"cliP50Ms":2873,"cliP95Ms":3285,"bodyP50Ms":1611,"routeStartSpreadP50Ms":746,"routeOverlap":0,"dependentOverlap":0}} +{"side":"head","summary":{"cliP50Ms":2363,"cliP95Ms":3986,"bodyP50Ms":562,"routeStartSpreadP50Ms":6,"routeOverlap":10,"dependentOverlap":10}} diff --git a/evidence/native-parallel-review6/linux-prior-replay.log b/evidence/native-parallel-review6/linux-prior-replay.log new file mode 100644 index 000000000..9c0bc55d8 --- /dev/null +++ b/evidence/native-parallel-review6/linux-prior-replay.log @@ -0,0 +1,61 @@ +{"case":"A1","index":0,"rootRunId":"01M530Z6KBR62RCG59KZ6RQ5D0","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":1,"rootRunId":"01M530Z9YHSJ329A0V0528G4AR","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":2,"rootRunId":"01M530ZDB66XHM4J1TH34D68KT","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":3,"rootRunId":"01M530ZGQWYKN456A7AYBZ9MZQ","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":4,"rootRunId":"01M530ZM2DRJ5V8QCQRX4ZW42A","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":5,"rootRunId":"01M530ZQDS7AWEZCDJCPWJSZVD","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":0,"rootRunId":"01M530ZTSE3ZMA7H1FWX00KXMM","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":1,"rootRunId":"01M530ZXVJ5F079792J5W5PD4W","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":2,"rootRunId":"01M531011PBQQPP31X3XPB516S","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":3,"rootRunId":"01M5310459Z1JWV5MM69VATV27","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":4,"rootRunId":"01M531077MVQAGVE52QYJBPV8B","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":5,"rootRunId":"01M5310ADJ8M3JBTWKCB9AKJRC","before":"LR","after":"LRZ","resumed":true} +{"case":"N2","index":0,"rootRunId":"01M5310DR6BBE4SQ6QG9N0WDNQ","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":1,"rootRunId":"01M5310H5FCJBKE3G38P2453G7","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":2,"rootRunId":"01M5310MPMA3A8ZZPEHR9Z2A8E","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":3,"rootRunId":"01M5310R32DG627DS61JP6SPHG","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":4,"rootRunId":"01M5310VEA2WMRGE3AMHKHZPX0","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":5,"rootRunId":"01M5310YWHKWBY0A57Y5JCFEFQ","before":"abc","after":"Zabc","resumed":true} +{"case":"C1e","index":0,"rootRunId":"01M53112C9TZX0E8PENGYE8TRZ","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":1,"rootRunId":"01M53115ZVQCD9VBY7QDXV27QK","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":2,"rootRunId":"01M53119MJ9X7FZNQ8VSMCGVZW","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":3,"rootRunId":"01M5311D6GM61T29B0W7QSQVV9","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":4,"rootRunId":"01M5311GV9M7VYFDTD3JHQYGGN","before":"XY","after":"XYZ","resumed":true} +{"case":"C1e","index":5,"rootRunId":"01M5311MDYVXR0VABQVR2PT6ES","before":"XY","after":"XYZ","resumed":true} +{"case":"G1","index":0,"rootRunId":"01M5311QXEG409GC6QJR3TT0ST","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":1,"rootRunId":"01M5311V8DXBSAKXJ16ZJJX1MM","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":2,"rootRunId":"01M5311YH7JC4RZ9W0XZGTP5VM","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":3,"rootRunId":"01M53121S4EGWHX4YZV10QSJR7","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":4,"rootRunId":"01M531254NTZ3H3F9206D3AYS9","before":"ABG","after":"ABGZ","resumed":true} +{"case":"G1","index":5,"rootRunId":"01M53128CX9D5VXGTDRM32DA2J","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":0,"rootRunId":"01M5312BM10RKD05G8XDP1SEFF","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":1,"rootRunId":"01M5312EYGS2FBZWCJR49XM1NQ","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":2,"rootRunId":"01M5312J7DQR1JN48K31KV3N1R","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":3,"rootRunId":"01M5312NFZ1KCWC9ZJD2Y6TQZ6","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":4,"rootRunId":"01M5312RSZVEKX6VQX9P4FBP3J","before":"ABG","after":"ABGZ","resumed":true} +{"case":"ANY","index":5,"rootRunId":"01M5312W5C6DN72AVH0KG6MQ8K","before":"ABG","after":"ABGZ","resumed":true} +{"case":"I1","index":0,"rootRunId":"01M5312ZJBEWBYVXAK3NVY5BQD","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":1,"rootRunId":"01M5313324M9K272Z1Y3ECGCJ6","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":2,"rootRunId":"01M53136K3CRZSQVRSST7BQ865","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":3,"rootRunId":"01M5313A2KH0W0VH3JH7PRPHEB","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":4,"rootRunId":"01M5313DJGZG18FY7KSWSPFVNV","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"I1","index":5,"rootRunId":"01M5313H8B6XMD0XC2C0KD271A","before":"LRxy","after":"LRZxy","resumed":true} +{"case":"H1","index":0,"rootRunId":"01M5313MMCEXD6JG7C2TVPHD8J","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":1,"rootRunId":"01M5313S6R519H7AN3XFZGYG4N","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":2,"rootRunId":"01M5313XWRG05PC2A42JJJPKR8","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":3,"rootRunId":"01M53142DD1W79KE0V9V7QHNW3","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":4,"rootRunId":"01M53146ZMG1N84QV08NWCSNKQ","before":"LR","after":"LRZ","resumed":true} +{"case":"H1","index":5,"rootRunId":"01M5314BKG4CMG4T31XV67N4YX","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":0,"rootRunId":"01M5314GB9GTVKXYY8VE2NG4SK","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":1,"rootRunId":"01M5314MXATN7R14ZQFXX6A3Z3","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":2,"rootRunId":"01M5314SH7SBYGWVMWKFX1B0JW","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":3,"rootRunId":"01M5314Y4CTD1ZKXDTDX0Y0VGF","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":4,"rootRunId":"01M53152P6MGC5AKKC6WQW0PRH","before":"LR","after":"LRZ","resumed":true} +{"case":"K4","index":5,"rootRunId":"01M531574NCFXZPTAS53D38Q8Q","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":0,"rootRunId":"01M5315BKQC4KR9KYKR1C97S1V","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":1,"rootRunId":"01M5315FVDZ6KMTP7NVP7KE2XP","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":2,"rootRunId":"01M5315M2WXFZFGJE5FA40Y411","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":3,"rootRunId":"01M5315RD9TZVR5RV5RT2545JF","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":4,"rootRunId":"01M5315WMPMWEZSQ394FPRB06N","before":"LR","after":"LRZ","resumed":true} +{"case":"H2","index":5,"rootRunId":"01M53160YCCRHT3XG4NWHGNJY2","before":"LR","after":"LRZ","resumed":true} +{"done":true,"cases":10,"repetitions":6} diff --git a/evidence/native-parallel-review6/linux-review5-exact.log b/evidence/native-parallel-review6/linux-review5-exact.log new file mode 100644 index 000000000..9e4ffa0a7 --- /dev/null +++ b/evidence/native-parallel-review6/linux-review5-exact.log @@ -0,0 +1,43 @@ +{"name":"Q5","index":0,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5","index":1,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5","index":2,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5","index":3,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5","index":4,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5","index":5,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5n","index":0,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5n","index":1,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5n","index":2,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5n","index":3,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5n","index":4,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5n","index":5,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5h","index":0,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5h","index":1,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5h","index":2,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5h","index":3,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5h","index":4,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5h","index":5,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5w","index":0,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5w","index":1,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5w","index":2,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5w","index":3,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5w","index":4,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5w","index":5,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5wn","index":0,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5wn","index":1,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5wn","index":2,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5wn","index":3,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5wn","index":4,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5wn","index":5,"mode":"serial","result":"resumed","before":"abcX","after":"abcXZ"} +{"name":"Q5wh","index":0,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5wh","index":1,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5wh","index":2,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5wh","index":3,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5wh","index":4,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q5wh","index":5,"mode":"serial","result":"resumed","before":"X","after":"XZ"} +{"name":"Q6Pw","index":0,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q6Pw","index":1,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q6Pw","index":2,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q6Pw","index":3,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q6Pw","index":4,"mode":"parallel","result":"failed_closed","effects":""} +{"name":"Q6Pw","index":5,"mode":"parallel","result":"failed_closed","effects":""} +{"done":true,"cases":["Q5","Q5n","Q5h","Q5w","Q5wn","Q5wh","Q6Pw"],"repetitions":6,"replays":0} diff --git a/evidence/native-parallel-review6/linux-rollback-2050.log b/evidence/native-parallel-review6/linux-rollback-2050.log new file mode 100644 index 000000000..85fcb6eef --- /dev/null +++ b/evidence/native-parallel-review6/linux-rollback-2050.log @@ -0,0 +1,7 @@ +{"index":0,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":1,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":2,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":3,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":4,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":5,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"done":true,"repetitions":6} diff --git a/evidence/native-parallel-review6/linux-rollback-2051.log b/evidence/native-parallel-review6/linux-rollback-2051.log new file mode 100644 index 000000000..85fcb6eef --- /dev/null +++ b/evidence/native-parallel-review6/linux-rollback-2051.log @@ -0,0 +1,7 @@ +{"index":0,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":1,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":2,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":3,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":4,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"index":5,"oldExit":1,"oldDiagnostic":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: a","before":"abc","afterOld":"abc","after":"Zabc","resumed":true} +{"done":true,"repetitions":6} diff --git a/evidence/native-parallel-review6/linux-upgrade-2050.log b/evidence/native-parallel-review6/linux-upgrade-2050.log new file mode 100644 index 000000000..c061a78fd --- /dev/null +++ b/evidence/native-parallel-review6/linux-upgrade-2050.log @@ -0,0 +1,19 @@ +{"case":"A1","index":0,"rootRunId":"01M531Y50BK7K16VXCKM28REZN","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":1,"rootRunId":"01M531Y8GSHPTG66P45484YPY5","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":2,"rootRunId":"01M531YC1G5G11M1DVA04S5P59","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":3,"rootRunId":"01M531YFZ04BZKMSCWTZ9H1SPA","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":4,"rootRunId":"01M531YM6JSWEJB400HKX1HG0J","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":5,"rootRunId":"01M531YQVXEEVE4CHK99F3XRQK","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":0,"rootRunId":"01M531YWCBEFN4C6HJN3JV6527","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":1,"rootRunId":"01M531Z0RRFQP9V7CWHC20CEXF","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":2,"rootRunId":"01M531Z5SND74F5JWVY0NQRCAM","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":3,"rootRunId":"01M531ZBFT7QPHF2EQE2PY5HD0","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":4,"rootRunId":"01M531ZN0ETZESMC9WDC90TC4Y","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":5,"rootRunId":"01M531ZXWK1C5PSPBGFNX4GYMW","before":"LR","after":"LRZ","resumed":true} +{"case":"N2","index":0,"rootRunId":"01M53207AZXJNV6TK7MXBG20PC","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":1,"rootRunId":"01M5320N4V6CA9CBPSA9MT1G6X","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":2,"rootRunId":"01M5320Z5Z5G67X00194NQX7SH","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":3,"rootRunId":"01M53215BV5DC0WWHX6VYQAGQX","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":4,"rootRunId":"01M5321D6ZAE7KTM1REG11BWM7","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":5,"rootRunId":"01M5321HE5HN8KEYD97EHYQRCM","before":"abc","after":"Zabc","resumed":true} +{"done":true,"cases":3,"repetitions":6} diff --git a/evidence/native-parallel-review6/linux-upgrade-2051.log b/evidence/native-parallel-review6/linux-upgrade-2051.log new file mode 100644 index 000000000..526fe2bad --- /dev/null +++ b/evidence/native-parallel-review6/linux-upgrade-2051.log @@ -0,0 +1,19 @@ +{"case":"A1","index":0,"rootRunId":"01M531VAQ6G0RXRSZ29Q3DCWND","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":1,"rootRunId":"01M531VEDTB65E6JMK8YXWGP7E","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":2,"rootRunId":"01M531VHYJKHPKXFS0PJ53JH1M","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":3,"rootRunId":"01M531VNESK7VXYMTCNNZB7B9B","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":4,"rootRunId":"01M531VS1YTG1D1XEXPK8Z5Z9G","before":"LR","after":"LRZ","resumed":true} +{"case":"A1","index":5,"rootRunId":"01M531VWGZW944PM6J6DG01V00","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":0,"rootRunId":"01M531W01E1B3B6VH3HRP6Y0FT","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":1,"rootRunId":"01M531W35104P3XW9KZ4MBBP12","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":2,"rootRunId":"01M531W63QP7881HP9TAPCT4RK","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":3,"rootRunId":"01M531W948Q14HFJWY8X72XE2R","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":4,"rootRunId":"01M531WC7GV51PEEHKAPGXVD04","before":"LR","after":"LRZ","resumed":true} +{"case":"B1","index":5,"rootRunId":"01M531WF9WZCFQBR8YGVGGHBJC","before":"LR","after":"LRZ","resumed":true} +{"case":"N2","index":0,"rootRunId":"01M531WJ73JAPSF082MFXZ9SHP","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":1,"rootRunId":"01M531WP069PG4C93D2FTEYR31","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":2,"rootRunId":"01M531WSRFR5G6QJWB38TZ2F81","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":3,"rootRunId":"01M531WXGYZ29BBXZKDR8X59JW","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":4,"rootRunId":"01M531X194KAHHX8070K44X5HK","before":"abc","after":"Zabc","resumed":true} +{"case":"N2","index":5,"rootRunId":"01M531X50900RS2TCVWTX2BYV3","before":"abc","after":"Zabc","resumed":true} +{"done":true,"cases":3,"repetitions":6} diff --git a/evidence/native-parallel-review6/mac-final-live.log b/evidence/native-parallel-review6/mac-final-live.log new file mode 100644 index 000000000..79dc3e13d --- /dev/null +++ b/evidence/native-parallel-review6/mac-final-live.log @@ -0,0 +1,79 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (8 tests) 25ms + ✓ tests/journal-client-step-env.test.ts (8 tests) 14ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (42 tests) 883ms + ✓ authored flow lifecycle through the journal executor > closes an already queued ninth child as soon as a violation is caught 311ms + ✓ tests/authored-step-secrets-live.test.ts (2 tests) 5897ms + ✓ an authored shell child sees a delivered token only when its own f.run grants it 4709ms + ✓ parallel authored shell children keep their own secret grants 1187ms +stdout | tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > overlaps two sleep 2 commands started in Promise.all +parallel sleep 2 elapsed: 2004 ms + +stdout | tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > starts a fast branch dependent before a slow sibling completes +fast dependent started after: 1336 ms + + ❯ tests/authored-parallel-run-live.test.ts (41 tests | 1 failed) 586043ms + ✓ parallel authored deterministic steps > keeps a re-exported body serial after a first step and reuses completed effects on resume 6970ms + ✓ parallel authored deterministic steps > keeps a re-exported body serial with the group first and reuses completed effects on resume 2789ms + ✓ parallel authored deterministic steps > refuses an imported Promise.all patch before admitting another parallel effect 1214ms + ✓ parallel authored deterministic steps > fails closed on the reviewer imported patch during a prior step 1073ms + ✓ parallel authored deterministic steps > overlaps two sleep 2 commands started in Promise.all 5439ms + ✓ parallel authored deterministic steps > starts a fast branch dependent before a slow sibling completes 6985ms + ✓ parallel authored deterministic steps > keeps declaration order when the later child finishes first 3795ms + ✓ parallel authored deterministic steps > admits at most eight deterministic children at once 2960ms + ✓ parallel authored deterministic steps > does not admit a queued child after a sibling fails 2765ms + ✓ parallel authored deterministic steps > replays a completed peer and resumes an unfinished peer after a crash 3538ms + ✓ parallel authored deterministic steps > replays follow-up steps in parallel branches after a crash 5281ms + ✓ parallel authored deterministic steps > does not replay a completed effect after a crash: 'two branches that each join two runs' 4475ms + ✓ parallel authored deterministic steps > does not replay a completed effect after a crash: 'a chain beside a branch with a join' 2594ms + ✓ parallel authored deterministic steps > resumes a sequential 2.0.50 run without replaying completed effects 2317ms + ✓ parallel authored deterministic steps > refuses a parallel v2 root under 2.0.50 and lets the new CLI resume it 1684ms + ✓ parallel authored deterministic steps > keeps a 'race' flow running on serial fallback without replay 2362ms + ✓ parallel authored deterministic steps > keeps a 'any' flow running on serial fallback without replay 2757ms + ✓ parallel authored deterministic steps > keeps a 'eager' flow running on serial fallback without replay 2219ms + ✓ parallel authored deterministic steps > resumes 'llm' branches without replaying completed effects 2648ms + ✓ parallel authored deterministic steps > resumes 'agent' branches without replaying completed effects 2886ms + ✓ parallel authored deterministic steps > resumes 'dispatch' branches without replaying completed effects 2303ms + ✓ parallel authored deterministic steps > resumes 2.0.50 consecutive Promise.all groups after run-4 without replay 1907ms + ✓ parallel authored deterministic steps > resumes 2.0.50 consecutive Promise.all groups after run-5 without replay 1498ms + ✓ parallel authored deterministic steps > keeps 'closure-shared readiness' serial and replays no completed effect 9605ms + ✓ parallel authored deterministic steps > keeps 'shared completion-order array' serial and replays no completed effect 11683ms + ✓ parallel authored deterministic steps > keeps 'deep non-step joins with a swallowed …' serial and replays no completed effect 8616ms + ✓ parallel authored deterministic steps > keeps done inside a branch on the established serial scheduler 7416ms + ✓ parallel authored deterministic steps > retains the base failure when a branch completes before its sibling continues 14023ms + ✓ parallel authored deterministic steps > keeps an arguments-alias LLM body serial across six resumes 60335ms + ✓ parallel authored deterministic steps > keeps 'bound module Promise' serial without replay across six resumes 17850ms + ✓ parallel authored deterministic steps > keeps 'hand-written module Promise' serial without replay across six resumes 13482ms + ✓ parallel authored deterministic steps > keeps 'module Promise class' serial without replay across six resumes 17216ms + ✓ parallel authored deterministic steps > keeps 'module Promise Native branches' serial without replay across six resumes 17299ms + ✓ parallel authored deterministic steps > keeps 'imported Bluebird Promise Native bran…' serial without replay across six resumes 89118ms + ✓ parallel authored deterministic steps > keeps 'empty async branches' serial without replay across six resumes 16611ms + ✓ parallel authored deterministic steps > keeps a Bluebird group of direct f.run calls serial across six resumes 15255ms + × parallel authored deterministic steps > does not replay a completed effect after 'imported timer helper' reorder 66087ms + → expected [ +0, 1 ] to include null + ✓ parallel authored deterministic steps > does not replay a completed effect after 'for-await timer' reorder 29218ms + ✓ parallel authored deterministic steps > resumes 2.0.50 A1 nested joins without replay 56221ms + ✓ parallel authored deterministic steps > resumes 2.0.50 B1 chain beside join without replay 38283ms + ✓ parallel authored deterministic steps > resumes 2.0.50 N2 independent dependents without replay 25253ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > does not replay a completed effect after 'imported timer helper' reorder +AssertionError: expected [ +0, 1 ] to include null + ❯ tests/authored-parallel-run-live.test.ts:1044:22 + 1042| writeFileSync(`${fixture.root}/release`, ''); + 1043| const resumed = fixture.invoke('resume', '--no-observer-link', '… + 1044| expect([0, 1]).toContain(resumed.status); + | ^ + 1045| const effects = [...readFileSync(`${fixture.root}/effects`, 'utf… + 1046| for (const effect of ['A', 'B', 'C', 'L']) expect(effects.filter… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed | 4 passed (5) + Tests 1 failed | 100 passed (101) + Start at 21:22:04 + Duration 590.93s (transform 2.64s, setup 105ms, collect 14.58s, tests 592.86s, environment 0ms, prepare 617ms) + diff --git a/evidence/native-parallel-review6/mac-imported-timer-isolated.log b/evidence/native-parallel-review6/mac-imported-timer-isolated.log new file mode 100644 index 000000000..d8cdff90b --- /dev/null +++ b/evidence/native-parallel-review6/mac-imported-timer-isolated.log @@ -0,0 +1,10 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-run-live.test.ts > parallel authored deterministic steps > does not replay a completed effect after 'imported timer helper' reorder 175131ms + + Test Files 1 passed (1) + Tests 1 passed | 40 skipped (41) + Start at 21:32:08 + Duration 199.47s (transform 4.58s, setup 15ms, collect 23.90s, tests 175.13s, environment 0ms, prepare 165ms) + diff --git a/evidence/native-parallel-review6/native-overlap.mjs b/evidence/native-parallel-review6/native-overlap.mjs new file mode 100644 index 000000000..eacd8de00 --- /dev/null +++ b/evidence/native-parallel-review6/native-overlap.mjs @@ -0,0 +1,81 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; + +const base = '/bench/node_modules/@relayflows/sdk/dist/cli.js'; +const head = '/bench/sdk-head/dist/cli.js'; +const daemon = '/bench/node_modules/@relayflows/runtime-linux-x64/bin/relayflowd'; +const samples = { base: [], head: [] }; + +function percentile(values, p) { + const sorted = [...values].sort((a, b) => a - b); + return sorted[Math.min(sorted.length - 1, Math.ceil(p * sorted.length) - 1)]; +} + +async function one(side, index) { + const root = fs.mkdtempSync('/bench/native-overlap-'); + const data = path.join(root, 'data'); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync('/bench/node_modules', path.join(root, 'node_modules')); + const branch = label => `const ${label} = async () => { + await f.run('date +%s%3N > ${label}-start; sleep 0.3; date +%s%3N > ${label}-end'); + await f.run('date +%s%3N > ${label}-dependent-start; sleep 0.1; date +%s%3N > ${label}-dependent-end'); + };`; + fs.writeFileSync(path.join(root, 'native.flow.ts'), `import { flow } from '@relayflows/surface'; +export default flow('native-overlap', async f => { + ${['a', 'b', 'c'].map(branch).join('\n')} + await Promise.all([a(), b(), c()]); + f.done('success'); +});\n`); + const cli = side === 'head' ? head : base; + const started = Date.now(); + try { + const child = spawn(process.execPath, [cli, 'run', '--no-observer-link', '--json', '--data-dir', data, + path.join(root, 'native.flow.ts'), '--input', '{}'], { + cwd: root, env: { ...process.env, RELAYFLOWD_BIN: daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let output = ''; + child.stdout.on('data', data => { output += data; }); + child.stderr.on('data', data => { output += data; }); + const result = await new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal }))); + const cliMs = Date.now() - started; + if (result.code !== 0) throw new Error(`${side} run failed: ${output}`); + const read = name => Number(fs.readFileSync(path.join(root, name), 'utf8').trim()); + const routes = ['a', 'b', 'c'].map(label => ({ start: read(`${label}-start`), end: read(`${label}-end`) })); + const dependents = ['a', 'b', 'c'].map(label => ({ + start: read(`${label}-dependent-start`), end: read(`${label}-dependent-end`), + })); + const routeStartSpreadMs = Math.max(...routes.map(span => span.start)) - Math.min(...routes.map(span => span.start)); + const routeOverlap = Math.max(...routes.map(span => span.start)) < Math.min(...routes.map(span => span.end)); + const dependentOverlap = Math.max(...dependents.map(span => span.start)) + < Math.min(...dependents.map(span => span.end)); + const bodyMs = Math.max(...dependents.map(span => span.end)) - Math.min(...routes.map(span => span.start)); + const sample = { side, index, cliMs, bodyMs, routeStartSpreadMs, routeOverlap, dependentOverlap }; + samples[side].push(sample); + console.log(JSON.stringify(sample)); + } finally { + const connection = path.join(data, 'connection.json'); + if (fs.existsSync(connection)) { + const pid = JSON.parse(fs.readFileSync(connection, 'utf8')).pid; + try { process.kill(pid, 'SIGKILL'); } + catch (error) { if (error.code !== 'ESRCH') throw error; } + } + fs.rmSync(root, { recursive: true, force: true }); + } +} + +for (let index = 0; index < 10; index++) { + await one('base', index); + await one('head', index); +} +for (const side of ['base', 'head']) { + const values = samples[side]; + console.log(JSON.stringify({ side, summary: { + cliP50Ms: percentile(values.map(value => value.cliMs), 0.5), + cliP95Ms: percentile(values.map(value => value.cliMs), 0.95), + bodyP50Ms: percentile(values.map(value => value.bodyMs), 0.5), + routeStartSpreadP50Ms: percentile(values.map(value => value.routeStartSpreadMs), 0.5), + routeOverlap: values.filter(value => value.routeOverlap).length, + dependentOverlap: values.filter(value => value.dependentOverlap).length, + } })); +} diff --git a/evidence/native-parallel-review6/review5-exact.mjs b/evidence/native-parallel-review6/review5-exact.mjs new file mode 100644 index 000000000..382102ae4 --- /dev/null +++ b/evidence/native-parallel-review6/review5-exact.mjs @@ -0,0 +1,195 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { execFileSync, spawn } from 'node:child_process'; + +// Source blocks are loaded from the copied reviewer brief byte for byte. +const brief = fs.readFileSync('/bench/review5-fixtures.md', 'utf8'); +const names = ['Q5', 'Q5n', 'Q5h', 'Q5w', 'Q5wn', 'Q5wh', 'Q6Pw']; +const delays = [0, 60, 130, 220, 330, 450]; +const bin = '/bench/node_modules/.bin/flows'; +const daemon = '/bench/node_modules/@relayflows/runtime-linux-x64/bin/relayflowd'; +const mutation = process.env.REVIEW5_MUTATION; +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + +function mutateDist() { + if (mutation === undefined) return; + const dist = '/bench/node_modules/@relayflows/sdk/dist'; + const eligibilityPath = path.join(dist, 'authored-parallel-eligibility.js'); + const eligibility = fs.readFileSync(eligibilityPath, 'utf8'); + const forced = eligibility.replace('export function parallelRunEligible(body, moduleSource) {', + 'export function parallelRunEligible(body, moduleSource) { return true;'); + if (forced === eligibility) throw new Error('eligibility mutation did not match'); + fs.writeFileSync(eligibilityPath, forced); + if (mutation !== 'forced_no_guard') return; + const graphPath = path.join(dist, 'authored-promise-graph.js'); + const graph = fs.readFileSync(graphPath, 'utf8'); + const disabled = graph.replace(/hasUnobservedJoinShape\(asyncId\) \{[\s\S]*?\n \}/u, + 'hasUnobservedJoinShape(asyncId) { return false; }'); + if (disabled === graph) throw new Error('guard mutation did not match'); + fs.writeFileSync(graphPath, disabled); +} + +function sourceBlocks(name) { + const section = brief.split(/^## /mu).find(part => part.startsWith(`${name} (`)); + if (section === undefined) throw new Error(`missing reviewer source for ${name}`); + const blocks = [...section.matchAll(/```(?:ts|js)\n([\s\S]*?)```/gu)].map(match => match[1]); + if (blocks.length !== 2) throw new Error(`${name}: expected two exact source blocks, got ${blocks.length}`); + return blocks; +} + +function start(args, root) { + const child = spawn(process.execPath, [bin, ...args], { + cwd: root, env: { ...process.env, RELAYFLOWD_BIN: daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let output = ''; + child.stdout.on('data', data => { output += data; }); + child.stderr.on('data', data => { output += data; }); + return { + child, + closed: new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal }))), + get output() { return output; }, + }; +} + +function killSweep(root) { + const connection = path.join(root, 'data/connection.json'); + const targets = new Set(); + if (fs.existsSync(connection)) targets.add(JSON.parse(fs.readFileSync(connection, 'utf8')).pid); + for (const item of fs.readdirSync('/proc')) { + if (!/^\d+$/u.test(item)) continue; + const pid = Number(item); + if (pid === process.pid) continue; + try { + const cwd = fs.readlinkSync(`/proc/${pid}/cwd`); + const cmdline = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8'); + if (cwd.startsWith(root) || cmdline.includes(root)) targets.add(pid); + } catch { /* process exited during the sweep */ } + } + for (const pid of targets) { + try { process.kill(pid, 'SIGKILL'); } + catch (error) { if (error.code !== 'ESRCH') throw error; } + } +} + +const sql = `import sqlite3,json,sys +db=sqlite3.connect(sys.argv[1]) +row=db.execute("select payload from entries where entry_type='run.spawned' order by seq limit 1").fetchone() +count=db.execute("select count(*) from entries where entry_type='step.completed'").fetchone()[0] +print(json.dumps({'spawned':json.loads(row[0]) if row else None,'completed':count}))`; +function readJournal(file) { + return JSON.parse(execFileSync('python3', ['-c', sql, file], { encoding: 'utf8' })); +} +function spawnedSpec(spawned) { + return spawned?.spec ?? spawned?.payload?.spec ?? spawned?.run?.spec; +} +function journals(root) { + const files = fs.readdirSync(path.join(root, 'data/runs')).filter(name => name.endsWith('.sqlite3')).sort(); + return files.map(file => { + const runId = file.slice(0, -8); + return { runId, ...readJournal(path.join(root, 'data/runs', file)) }; + }); +} +function assertNoJournalReplay(records, rootId) { + const seen = new Map(); + for (const record of records) { + if (record.runId === rootId) continue; + const step = spawnedSpec(record.spawned)?.steps?.[0]; + if (step?.command === undefined) continue; + const earlier = seen.get(step.command); + if (earlier !== undefined && earlier.id !== step.id && (earlier.completed > 0 || record.completed > 0)) + throw new Error(`journal replay: ${step.command}: ${earlier.id} -> ${step.id}`); + seen.set(step.command, { id: step.id, completed: record.completed }); + } +} + +async function one(name, index) { + const root = fs.mkdtempSync(`/bench/review5-${name}-`); + const data = path.join(root, 'data'); + const [entrySource, otherSource] = sourceBlocks(name); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync('/bench/node_modules', path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ + cli: path.join(root, 'adapter.mjs'), models: ['test-model'], + })); + fs.writeFileSync(path.join(root, 'adapter.mjs'), '#!/usr/bin/env node\nprocess.exit(0);\n', { mode: 0o755 }); + fs.writeFileSync(path.join(root, 'chain.flow.ts'), entrySource); + if (name === 'Q6Pw') { + fs.mkdirSync(path.join(root, 'lib')); + fs.writeFileSync(path.join(root, 'lib/patch.mjs'), otherSource); + } else fs.writeFileSync(path.join(root, 'impl.ts'), otherSource); + let original; + try { + original = start(['run', '--no-observer-link', '--json', '--data-dir', data, + path.join(root, 'chain.flow.ts'), '--input', '{}'], root); + const deadline = Date.now() + 90_000; + let freshFailure; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (original.child.exitCode !== null || original.child.signalCode !== null) { + freshFailure = await original.closed; + break; + } + if (Date.now() >= deadline) throw new Error(`${name} fresh stall timeout: ${original.output}`); + await sleep(15); + } + if (freshFailure !== undefined) { + if ((name !== 'Q6Pw' && !(name === 'Q5w' && mutation === 'forced_guard')) || freshFailure.code === 0) + throw new Error(`${name} base-working fresh run failed: ${original.output}`); + const effects = fs.existsSync(path.join(root, 'effects')) + ? fs.readFileSync(path.join(root, 'effects'), 'utf8') : ''; + if (effects.includes('X')) throw new Error(`${name} admitted completed X before refusal: ${effects}`); + const records = journals(root); + const rootRecord = records.find(record => spawnedSpec(record.spawned)?.steps?.[0]?.id === 'authored-root'); + if (rootRecord === undefined) throw new Error(`${name} has no authored root`); + const mode = JSON.parse(spawnedSpec(rootRecord.spawned).steps[0].instruction).executionMode; + if (mode !== 'parallel') throw new Error(`${name} expected parallel mode, got ${mode}`); + assertNoJournalReplay(records, rootRecord.runId); + console.log(JSON.stringify({ name, index, mode, result: 'failed_closed', effects })); + return; + } + await sleep(delays[index]); + original.child.kill('SIGKILL'); + await Promise.race([original.closed, sleep(2_000).then(() => { throw new Error('CLI did not exit after SIGKILL'); })]); + killSweep(root); + await sleep(100); + killSweep(root); + fs.writeFileSync(path.join(root, 'release'), ''); + const before = fs.readFileSync(path.join(root, 'effects'), 'utf8'); + const recordsBefore = journals(root); + const rootRecord = recordsBefore.find(record => spawnedSpec(record.spawned)?.steps?.[0]?.id === 'authored-root'); + if (rootRecord === undefined) throw new Error(`${name} has no authored root`); + const mode = JSON.parse(spawnedSpec(rootRecord.spawned).steps[0].instruction).executionMode; + if (name.startsWith('Q5') && mode !== (mutation === undefined ? 'serial' : 'parallel')) + throw new Error(`${name} unexpected mode ${mode}`); + const resumed = start(['resume', '--no-observer-link', '--json', '--data-dir', data, rootRecord.runId], root); + const timer = setTimeout(() => resumed.child.kill('SIGKILL'), 150_000); + const result = await resumed.closed; + clearTimeout(timer); + if (result.code !== 0) throw new Error(`${name} resume failed: ${resumed.output}`); + const after = fs.readFileSync(path.join(root, 'effects'), 'utf8'); + const expected = name.includes('n') || name === 'Q6Pw' ? 'abcXZ' : 'XZ'; + if (mutation === 'forced_no_guard' && name === 'Q5w') { + const replayed = (after.match(/X/gu) ?? []).length > 1; + if (!['XZ', 'XXZ'].includes(after)) throw new Error(`unexpected mutation effects: ${after}`); + console.log(JSON.stringify({ name, index, mode, + result: replayed ? 'replayed_under_mutation' : 'no_replay_this_timing', before, after })); + return replayed; + } + if (after.split('').sort().join('') !== expected.split('').sort().join('')) + throw new Error(`${name} effects replay: before=${before}, after=${after}, expected=${expected}`); + assertNoJournalReplay(journals(root), rootRecord.runId); + console.log(JSON.stringify({ name, index, mode, result: 'resumed', before, after })); + } finally { + if (original?.child.exitCode === null && original.child.signalCode === null) original.child.kill('SIGKILL'); + killSweep(root); + fs.rmSync(root, { recursive: true, force: true }); + } +} + +const requested = process.env.CASE?.split(','); +mutateDist(); +let replays = 0; +for (const name of names.filter(value => requested === undefined || requested.includes(value))) { + for (let index = 0; index < 6; index++) if (await one(name, index) === true) replays++; +} +if (mutation === 'forced_no_guard' && replays === 0) throw new Error('disabled guard did not expose the replay'); +console.log(JSON.stringify({ done: true, cases: requested ?? names, repetitions: 6, mutation, replays })); diff --git a/evidence/native-parallel-review6/review5-fixtures.md b/evidence/native-parallel-review6/review5-fixtures.md new file mode 100644 index 000000000..b86e1b8fa --- /dev/null +++ b/evidence/native-parallel-review6/review5-fixtures.md @@ -0,0 +1,250 @@ +# #667 review 5: exact fixtures for Q5, Q5n, Q5h, Q5w, Q5wn, Q5wh, Q6Pw + +These are byte-for-byte expansions of the scenario generator I ran (`scenarios.mjs`/`h.mjs`, reconstructed from the review-5 transcript, where the generator source appears verbatim). I am not aware of any byte I cannot vouch for. The only things that differ per run are the absolute fixture directory (``) and the stdout of the commands. + +Head under test: `78e7d1fcc0bf58ade55b13c68c347c312b7f85f5`. + +## Environment as run + +- Docker `node:22-trixie` (Node v22.23.3), started with `--init`, x86_64 Linux VM on Docker Desktop. +- **Kernel:** `relayflowd` built in the container from flows `5de41849` (main, v2.0.51; head's kernel is byte-identical) with `cargo build -p relayflowd` (dev profile). Binary: `/w/target-main/debug/relayflowd`. The 2.0.50 runs used a kernel built the same way from `da6eeb3f`. +- **Head CLI:** `packages/sdk` at head, `npm ci && npm run build`, CLI `/w/head/packages/sdk/dist/cli.js`, node_modules `/w/head/packages/sdk/node_modules` (`@relayflows/surface` 2.0.51). Built `dist/authored-parallel-eligibility.js` SHA-256 `682ca6b984deaaaa23e916655688566d841821bc0622b676092abfe92f545634`. +- **Base CLI:** the same build from `5de41849`. The 2.0.50 runs used `npm install @relayflows/sdk@2.0.50` and its `dist/cli.js`. +- `sqlite3` CLI was installed for the journal read-back. +- Up to 3 fixtures ran concurrently (harness `--conc=3`), alongside other scenario batches. + +## Files common to every fixture (`` is the fixture root) + +`/package.json`: +```json +{"type":"module"} +``` + +`/node_modules` is a symlink to the CLI side's node_modules (head: `/w/head/packages/sdk/node_modules`). The symlink lives in a scratch fixture directory, not a worktree. + +`/flows.json` (written by the harness, not used by these shell-only flows): +```json +{"cli":"/adapter.mjs","models":["test-model"]} +``` + +`/adapter.mjs`, chmod 755, never invoked by these flows (`calls.jsonl` stayed empty): +```js +#!/usr/bin/env node +import { receiveWrapperRequest } from '/w/head/testdata/preflight/wrapper-session.mjs'; +import { appendFileSync } from 'node:fs'; +if (process.argv[2] === 'auth') process.exit(0); +const request = await receiveWrapperRequest(); +if (request) { + appendFileSync("/calls.jsonl", JSON.stringify({ instruction: request.instruction.split('\n')[0] }) + '\n'); + process.stdout.write("{\"message\":\"hello from llm\"}"); +} +``` + +## Q5 (re-export chain, group in the first turn) + +`/chain.flow.ts`: +```ts +export { default } from './impl.ts'; +``` + +`/impl.ts`: +```ts +import { flow } from '@relayflows/surface'; +const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) }; +export default flow('q5', async f => { + await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +## Q5n (re-export chain, Native shape, group in the first turn) + +`/chain.flow.ts`: +```ts +export { default } from './impl.ts'; +``` + +`/impl.ts`: +```ts +import { flow } from '@relayflows/surface'; +const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) }; +export default flow('q5n', async f => { + const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +## Q5h (re-export chain, hand-written all, group in the first turn) + +`/chain.flow.ts`: +```ts +export { default } from './impl.ts'; +``` + +`/impl.ts`: +```ts +import { flow } from '@relayflows/surface'; +const Promise = { all: (xs) => new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.resolve(x).then(v => { out[i] = v; if (--n === 0) res(out); }, rej)); }) }; +export default flow('q5h', async f => { + await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +## Q5w (re-export chain, group after a first step), the 6/6 replay + +`/chain.flow.ts`: +```ts +export { default } from './impl.ts'; +``` + +`/impl.ts`: +```ts +import { flow } from '@relayflows/surface'; +const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) }; +export default flow('q5w', async f => { + await f.run('sleep 0.2; printf W'); + await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +## Q5wn (re-export chain, Native shape, group after a first step) + +`/chain.flow.ts`: +```ts +export { default } from './impl.ts'; +``` + +`/impl.ts`: +```ts +import { flow } from '@relayflows/surface'; +const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) }; +export default flow('q5wn', async f => { + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +## Q5wh (re-export chain, hand-written all, group after a first step) + +`/chain.flow.ts`: +```ts +export { default } from './impl.ts'; +``` + +`/impl.ts`: +```ts +import { flow } from '@relayflows/surface'; +const Promise = { all: (xs) => new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.resolve(x).then(v => { out[i] = v; if (--n === 0) res(out); }, rej)); }) }; +export default flow('q5wh', async f => { + await f.run('sleep 0.2; printf W'); + await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +## Q6Pw (imported module patches Promise.all after the observer is installed) + +`/chain.flow.ts`: +```ts +import { flow } from '@relayflows/surface'; +import './lib/patch.mjs'; +export default flow('q6Pw', async f => { + await f.run('sleep 0.3; printf W'); + const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +``` + +`/lib/patch.mjs`: +```js +const I = Function('return this')()['Pro' + 'mise']; +const intrinsicAll = I.all; +const t = setInterval(() => { if (I.all !== intrinsicAll) { clearInterval(t); I.all = function all(xs) { return intrinsicAll.call(I, xs); }; } }, 2); +t.unref(); +``` + +## Driver steps (identical for every scenario above) + +For repetition `i` in 0..5, with `DELAYS = [0, 60, 130, 220, 330, 450]`: + +1. **Create the fixture.** `rm -rf ; mkdir -p ` and write the files above. `` was `/w/runs//--`. +2. **Start the run asynchronously** with cwd `` and env = the container env plus `RELAYFLOWD_BIN=`: + ```sh + node run --no-observer-link --json --data-dir /data /chain.flow.ts --input '{}' + ``` + There was no `--local-agent` flag. The CLI starts the daemon itself. +3. **Wait for the stall.** Poll every 15 ms for `/stalled`, up to 90 s, or until the CLI exits. + - If the CLI exits first, the run is a fresh-run outcome: record its exit code and diagnostics (this is where Q5/Q5n/Q5h stop at head). +4. **Kill.** Once `stalled` exists: + - Sleep `DELAYS[i]` ms, then SIGKILL the CLI and wait up to 2 s for it to exit. + - SIGKILL the daemon pid read from `/data/connection.json`, plus every process whose `/proc//cwd` starts with `` or whose `/proc//cmdline` contains ``. This catches the `sleep 120` shell. + - Sleep 100 ms and repeat that whole kill sweep once. +5. **Release.** Create an empty `/release`. +6. **Find the root run id.** List `/data/runs/*.sqlite3` sorted by name (ULID). For each, read `select payload from entries where entry_type='run.spawned' order by seq limit 1`. The root is the first one whose `spec.steps[0].id === 'authored-root'`. The same read gave the mode (`JSON.parse(spec.steps[0].instruction).executionMode`). +7. **Resume synchronously,** same cwd and env, 150 s timeout: + ```sh + node resume --no-observer-link --json --data-dir /data + ``` +8. **Clean up.** Repeat the kill sweep from step 4, then read the results. + +Start and resume used the same side: head/head, main/main, or 2.0.50/2.0.50. + +## Assertions + +- **Effects:** read `/effects`. Only the shell commands that append to `effects` count; W/A/B/C print to stdout only. +- **Replay (primary):** any letter appears more than once. +- **Replay (journal cross-check):** + - For every child run (each non-root `*.sqlite3`), take the first `run.spawned` `spec.steps[0].command` and its step id. + - Count `step.completed` entries with `select count(*) from entries where entry_type='step.completed'`. + - A replay is flagged when the same command appears under two different step ids and at least one of them completed. +- **Pass:** the resume exits 0 and neither replay check fires. +- **Expected effects.** Head printed the same letters, in branch completion order such as `bcaXZ`. + + | Scenario | Effects with no replay | + |---|---| + | Q5, Q5h, Q5w, Q5wh | `XZ` | + | Q5n, Q5wn, Q6Pw | `abcXZ` | + +- **Observed at head:** + + | Scenario | Result | + |---|---| + | Q5w | `XXZ` 6/6, resume exit 0. Journal: `printf X >> effects` admitted as `run-after-caf9…-1` on the first run and `run-after-2477…-1` on resume. | + | Q5wn | `bcaXXZ` 5/6, resume exit 0 | + | Q5wh | `XXZ` 5/6, resume exit 0 | + | Q6Pw | `bcaXXZ` 5/6, resume exit 0 | + | Q5, Q5n, Q5h | no stall; the fresh `run` exits 1 with `diagnostics[].kind = "step_failed"` and the message `cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate`. Q5n had already appended `bca`. | + + Base 2.0.51 passed all seven 6/6. 2.0.50 passed Q5w and Q5wn 6/6 (the others were not run on 2.0.50). + +## Notes for reproducing + +- **Q6Pw timing:** this scenario depends on the patch landing during the 0.3 s `W` step on the first run, and the resume's memoized `W` reaching the group before the 2 ms interval fires. I saw 5/6 replays with the delays above under concurrency 3. +- **Q6Pw without `W`:** Q6P, the same patch with no first step, passes 6/6, because the group is called in the first turn before the patch. +- **Replay rates:** the re-export replays (Q5w/Q5wn/Q5wh) depend only on which member settles last on resume versus the first run. They do not depend on the kill delay. diff --git a/evidence/native-parallel-review6/rollback.mjs b/evidence/native-parallel-review6/rollback.mjs new file mode 100644 index 000000000..75fc7581d --- /dev/null +++ b/evidence/native-parallel-review6/rollback.mjs @@ -0,0 +1,82 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; + +const head = '/bench/sdk-head/dist/cli.js'; +const old = '/bench/node_modules/@relayflows/sdk/dist/cli.js'; +const daemon = '/bench/node_modules/@relayflows/runtime-linux-x64/bin/relayflowd'; +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + +function start(cli, args, root) { + const child = spawn(process.execPath, [cli, ...args], { + cwd: root, env: { ...process.env, RELAYFLOWD_BIN: daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let output = ''; + child.stdout.on('data', value => { output += value; }); + child.stderr.on('data', value => { output += value; }); + return { child, closed: new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal }))), + get output() { return output; } }; +} + +function stopDaemon(data) { + const connection = path.join(data, 'connection.json'); + if (!fs.existsSync(connection)) return; + const pid = JSON.parse(fs.readFileSync(connection, 'utf8')).pid; + try { process.kill(pid, 'SIGKILL'); } + catch (error) { if (error.code !== 'ESRCH') throw error; } +} + +async function one(index) { + const root = fs.mkdtempSync('/bench/rollback-'); + const data = path.join(root, 'data'); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync('/bench/node_modules', path.join(root, 'node_modules')); + const flow = path.join(root, 'rollback.flow.ts'); + fs.writeFileSync(flow, `import { flow } from '@relayflows/surface'; +export default flow('rollback-parallel', async f => { + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.3; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +});\n`); + let initial; + try { + initial = start(head, ['run', '--no-observer-link', '--json', '--data-dir', data, flow, '--input', '{}'], root); + const deadline = Date.now() + 60_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (initial.child.exitCode !== null || initial.child.signalCode !== null) + throw new Error(`head run failed before stall: ${initial.output}`); + if (Date.now() >= deadline) throw new Error(`head stall timeout: ${initial.output}`); + await sleep(25); + } + const before = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (before !== 'abc') throw new Error(`head effects before rollback: ${before}`); + const rootRunId = fs.readdirSync(path.join(data, 'runs')).filter(name => name.endsWith('.sqlite3')).sort()[0].slice(0, -8); + initial.child.kill('SIGKILL'); + await initial.closed; + stopDaemon(data); + fs.writeFileSync(path.join(root, 'release'), ''); + const refused = start(old, ['resume', '--no-observer-link', '--json', '--data-dir', data, rootRunId], root); + const oldResult = await refused.closed; + if (oldResult.code === 0) throw new Error(`old CLI resumed parallel root: ${refused.output}`); + const afterOld = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (afterOld !== before) throw new Error(`old CLI replayed effects: ${before} -> ${afterOld}`); + stopDaemon(data); + const resumed = start(head, ['resume', '--no-observer-link', '--json', '--data-dir', data, rootRunId], root); + const newResult = await resumed.closed; + if (newResult.code !== 0) throw new Error(`head failed to resume after rollback refusal: ${resumed.output}`); + const after = fs.readFileSync(path.join(root, 'effects'), 'utf8').split('').sort().join(''); + if (after !== 'Zabc') throw new Error(`head replayed effects after rollback refusal: ${after}`); + console.log(JSON.stringify({ index, oldExit: oldResult.code, oldDiagnostic: refused.output.slice(0, 300), + before, afterOld, after, resumed: true })); + } finally { + if (initial?.child.exitCode === null && initial.child.signalCode === null) initial.child.kill('SIGKILL'); + stopDaemon(data); + fs.rmSync(root, { recursive: true, force: true }); + } +} + +for (let index = 0; index < 6; index++) await one(index); +console.log(JSON.stringify({ done: true, repetitions: 6 })); diff --git a/evidence/native-parallel-review6/verification.md b/evidence/native-parallel-review6/verification.md new file mode 100644 index 000000000..68208a3c0 --- /dev/null +++ b/evidence/native-parallel-review6/verification.md @@ -0,0 +1,51 @@ +# #667 review 5 repair verification + +Candidate source is based on `78e7d1fcc0bf58ade55b13c68c347c312b7f85f5` (2.0.51). The rebuilt SDK's `dist/authored-flow-lifecycle.js` SHA-256 is `933e84fab3c8bc86a40b4799f2b33edee58c75a252a40eb5d4a7d8f6e33e65d2`; eligibility, promise graph and step graph digests are respectively `575d20380baf2f258bd8efa4cb05da2769c7e0c8c9727329f2acd94dcc3921ae`, `4a8bb1a1142fe2650c82b46e77a3d8ea5d6a8ab4b3cb32a527ed1b15228b9d55`, and `c039cfc347cb1a5134b0eae206f9869d7bed7f8c1c950f83a82290ed55e1c436`. The final Linux x64 image is `ms-flows-parallel:review6-final` (`sha256:fd469694f2e49c733bea8375891b88b6bc15b2c6e7dd3c5726784cdfcb35417e`). + +## Reviewer fixtures + +The copied [reviewer fixture brief](review5-fixtures.md) has SHA-256 `6a38c9c39bf448032b114d973201dd42a9d33fc1cbcea6bfd728e7f538f76688`, identical to `~/relay-briefs/ms-flows-parallel-667-review5-fixtures.md`. [review5-exact.mjs](review5-exact.mjs) reads its seven flow and patch source blocks directly. It uses the reviewer's six kill delays `[0, 60, 130, 220, 330, 450]` ms, two process sweeps, root detection from `run.spawned`, and both effect-file and child-journal replay checks. The shell-only fixture's unused adapter is a stub; all flow and patch source blocks are copied verbatim. Journal SQL is run through Python's `sqlite3` module instead of the `sqlite3` CLI. The daemon is the published 2.0.51 Linux x64 binary rather than the reviewer's locally built dev-profile binary. + +```sh +docker run --rm --platform linux/amd64 --init \ + -v "$PWD/evidence/native-parallel-review6/review5-exact.mjs:/bench/review5-exact.mjs:ro" \ + -v "$PWD/evidence/native-parallel-review6/review5-fixtures.md:/bench/review5-fixtures.md:ro" \ + ms-flows-parallel:review6-final node /bench/review5-exact.mjs +``` + +[Final fixture output](linux-review5-exact.log): Q5, Q5n, Q5h, Q5w, Q5wn and Q5wh each resumed 6/6 in serial mode with no duplicate effect or command admitted under a second step ID. Q6Pw failed closed before X in parallel mode 6/6. The Q5 cases remain runnable on fresh starts; the earlier first-turn failure did not recur. + +## Runtime guard mutation + +With only the source eligibility gate forced open, the exact Q5w source fails before X on all six fresh runs ([guard output](linux-forced-guard.log)). With the same forced eligibility and only `hasUnobservedJoinShape()` disabled in the compiled SDK, X was appended twice in 3/6 crash-and-resume runs ([mutation output](linux-forced-no-guard.log)). Both runs used the final image. This mutation changes neither the fixture nor the observer identity check. + +```sh +docker run --rm --platform linux/amd64 --init -e CASE=Q5w -e REVIEW5_MUTATION=forced_guard \ + -v "$PWD/evidence/native-parallel-review6/review5-exact.mjs:/bench/review5-exact.mjs:ro" \ + -v "$PWD/evidence/native-parallel-review6/review5-fixtures.md:/bench/review5-fixtures.md:ro" \ + ms-flows-parallel:review6-final node /bench/review5-exact.mjs +docker run --rm --platform linux/amd64 --init -e CASE=Q5w -e REVIEW5_MUTATION=forced_no_guard \ + -v "$PWD/evidence/native-parallel-review6/review5-exact.mjs:/bench/review5-exact.mjs:ro" \ + -v "$PWD/evidence/native-parallel-review6/review5-fixtures.md:/bench/review5-fixtures.md:ro" \ + ms-flows-parallel:review6-final node /bench/review5-exact.mjs +``` + +## Compatibility and overlap + +- [Prior replay matrix](linux-prior-replay.log): A1, B1, N2, C1e, G1, ANY, I1, H1, K4, H2 each resumed 6/6 without duplicate effects on the candidate before the final narrowing of the observer identity check. +- [2.0.51 → candidate](linux-upgrade-2051.log) and [2.0.50 → candidate](linux-upgrade-2050.log): A1, B1, N2 each resumed 6/6 with no duplicate effects. The only source change after these runs narrowed the observer check from all four intrinsic combinators to `all` and `allSettled`. +- [Candidate → 2.0.51 → candidate](linux-rollback-2051.log) and [candidate → 2.0.50 → candidate](linux-rollback-2050.log): old CLI refused a parallel v2 root 6/6 with `malformed authority metadata`, effects stayed `abc`, then candidate resumed to `Zabc` 6/6. These runs preceded the same observer-check narrowing. +- [Paired Native overlap](linux-native-overlap.log): ten alternating 2.0.51 base and candidate runs, three 300 ms routes each with a 100 ms dependent. Base route and dependent overlap were 0/10; candidate both 10/10. Body p50 was 1611 ms base and 562 ms candidate; route start spread p50 was 746 ms base and 6 ms candidate. The host was shared, so absolute CLI latency is less stable than the overlap and body-time result. This run preceded the same observer-check narrowing. + +Local SDK checks after the final source edit: + +```sh +cd packages/sdk +npm run typecheck:tests +npm run typecheck +npx vitest run tests/authored-flow-lifecycle-executor.test.ts tests/authored-parallel-eligibility.test.ts tests/authored-step-graph.test.ts --reporter=dot +``` + +All 75 focused tests passed, including forced late joins, observer replacement, direct branch dependents and immediate closure of a queued ninth child. The broader authored parallel live suite passed 33 tests (7 published-CLI-dependent tests skipped) before the observer-check narrowing. Its new reviewer Q6Pw and re-export cases also passed in a targeted Mac rerun. + +The [final Mac live run](mac-final-live.log) passed 100 of 101 tests. All new Q5/Q6, secret, Native overlap, legacy-upgrade, rollback, and prior replay cases passed. One six-repeat imported-timer helper test got `status: null` from the fixture's 30-second synchronous CLI timeout during resume. It [passed all six repetitions when rerun alone](mac-imported-timer-isolated.log), taking 175 seconds total. The full-run timeout remains a test reliability concern; the Linux prior replay matrix passed this shape 6/6 and the final exact reviewer matrix passed 42/42. diff --git a/evidence/native-parallel-review7/COMMANDS.md b/evidence/native-parallel-review7/COMMANDS.md new file mode 100644 index 000000000..85233ca33 --- /dev/null +++ b/evidence/native-parallel-review7/COMMANDS.md @@ -0,0 +1,59 @@ +# Commands and captured output + +These are the literal verification commands, run from the flows worktree root. +The named `ms-flows-parallel-r7` volume held the native arm64 daemon, SDK +builds, reviewer generators, and harness at `/bench`; `review6-exact.mjs` +created and removed each fixture in that volume. Every command's complete +stdout and stderr is in the named log file. + +```sh +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=R1,R1w,R1wn,R2w,R3w,R3,R4w,R1c,R5n node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-r-all.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=Q5,Q5n,Q5h,Q5w,Q5wn,Q5wh,Q6Pw node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-q.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=E1factory,E2helper,E3dyn,E4json,E4jsonuse,E5ns node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-e.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=P1,P1h,P1c,P1n,P1bn,P2,C1e,G1,H1,H2,K4,I1,K2b,K3,K5b,K13b node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-prior-all.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=A1,B1,N2 node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-native.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=K1 -e EXPECT_BASE_FAILURE=1 node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-k1-head.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=K1 -e EXPECT_BASE_FAILURE=1 -e BASELINE=1 -e FIRST_BIN=/bench/sdk-base-2051/dist/cli.js -e RESUME_BIN=/bench/sdk-base-2051/dist/cli.js node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-k1-base2051.log 2>&1 +``` + +The upgrade and rollback commands used the published npm SDKs. The 2.0.50 +side used `relayflowd2050` built from `da6eeb3f`; the 2.0.51 side used this +branch's kernel, which matches the published kernel for these cases. + +```sh +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e FIRST_DAEMON_BIN=/bench/relayflowd2050 -e RESUME_DAEMON_BIN=/bench/relayflowd -e FIRST_BIN=/bench/p2050/node_modules/@relayflows/sdk/dist/cli.js -e FIXTURE_NODE_MODULES=/bench/p2050/node_modules -e CASE=UCI4,UCI5,UA1,UB1,UN2 -e BASELINE=1 node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-upgrade2050.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=UCI4,UCI5,UA1,UB1,UN2 -e BASELINE=1 -e FIRST_BIN=/bench/sdk-base-2051/dist/cli.js node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-upgrade2051.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e RESUME_DAEMON_BIN=/bench/relayflowd2050 -e FINAL_DAEMON_BIN=/bench/relayflowd -e RESUME_BIN=/bench/p2050/node_modules/@relayflows/sdk/dist/cli.js -e FINAL_BIN=/bench/node_modules/@relayflows/sdk/dist/cli.js -e CASE=RBCI4,RBCI5,RBA1,RBB1,RBN2 -e EXPECT_ROLLBACK_REFUSAL=1 node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-rollback2050.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e CASE=RBCI4,RBCI5,RBA1,RBB1,RBN2 -e EXPECT_ROLLBACK_REFUSAL=1 -e RESUME_BIN=/bench/sdk-base-2051/dist/cli.js -e FINAL_BIN=/bench/node_modules/@relayflows/sdk/dist/cli.js node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-rollback2051.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench node:22-trixie node /bench/cases/timing.mjs > evidence/native-parallel-review7/arm-volume-timing.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/bench -e RELAYFLOWD_BIN=/bench/relayflowd -e FORCE_ELIGIBLE=1 -e CASE=FRrace,FRany,FRnestrace,FRdefer,FRthen,FRcatch,FRwrap,FRsettled,FRset,FRgen,FRthenagg,FRfinally,FRiter,FRmicro node:22-trixie node /bench/cases/review6-exact.mjs > evidence/native-parallel-review7/arm-volume-forced.log 2>&1 +``` + +The forced command modified only the staged SDK dist. After it exited, +`authored-parallel-eligibility.js` was restored from the pristine `sdk-head` +copy and compared with `cmp`. + +Mutation commands and complete fail/pass output are captured by: + +```sh +bash evidence/native-parallel-review7/mutation-proof.sh > evidence/native-parallel-review7/mutation-proof.log 2>&1 +``` + +Final SDK checks ran from `packages/sdk` after the mutations were restored: + +```sh +npm run build > ../../evidence/native-parallel-review7/sdk-build.log 2>&1 +npm run typecheck > ../../evidence/native-parallel-review7/sdk-typecheck.log 2>&1 +npm run typecheck:tests > ../../evidence/native-parallel-review7/sdk-typecheck-tests.log 2>&1 +npx vitest run tests/authored-parallel-body.test.ts tests/authored-parallel-eligibility.test.ts tests/authored-step-graph.test.ts tests/authored-flow-lifecycle-executor.test.ts tests/authored-step-secrets.test.ts tests/communication-feature-secret-scoping.test.ts tests/worker-feature-secret-scoping.test.ts > ../../evidence/native-parallel-review7/sdk-focused-unit.log 2>&1 +RELAYFLOWD_BIN="$HOME/.relayflows-toolchain/target/ms-step-secrets/debug/relayflowd" npx vitest run tests/authored-step-secrets-live.test.ts > ../../evidence/native-parallel-review7/sdk-secrets-live.log 2>&1 +npm ci > ../../evidence/native-parallel-review7/sdk-npm-ci.log 2>&1 +{ ls -ld node_modules node_modules/@relayflows/surface; node -p "require.resolve('@relayflows/surface')"; node -p "require('node:fs').realpathSync('node_modules/@relayflows/surface')"; } > ../../evidence/native-parallel-review7/workspace-resolution.log 2>&1 +``` + +The built source and the staged Docker SDK were compared from the worktree root: + +```sh +shasum -a 256 packages/sdk/dist/authored-parallel-eligibility.js packages/sdk/dist/authored-parallel-body.js packages/sdk/dist/authored-flow-lifecycle.js packages/sdk/dist/authored-step-graph.js > evidence/native-parallel-review7/sdk-dist-hashes.log +docker run --rm --platform linux/arm64 -v ms-flows-parallel-r7:/bench node:22-trixie sha256sum /bench/sdk-head/dist/authored-parallel-eligibility.js /bench/sdk-head/dist/authored-parallel-body.js /bench/sdk-head/dist/authored-flow-lifecycle.js /bench/sdk-head/dist/authored-step-graph.js >> evidence/native-parallel-review7/sdk-dist-hashes.log +``` diff --git a/evidence/native-parallel-review7/README.md b/evidence/native-parallel-review7/README.md new file mode 100644 index 000000000..433f6378a --- /dev/null +++ b/evidence/native-parallel-review7/README.md @@ -0,0 +1,95 @@ +# Review 6 replay evidence for #667 + +The candidate is based on flows 2.0.51. The arm64 runs used `node:22-trixie` and +`relayflowd` built from this branch's kernel. Published SDKs 2.0.50 and 2.0.51 +came from npm; the 2.0.50 daemon was built from `da6eeb3f`. The harness, +dependencies, fixtures, and journals lived in a named Docker volume. Each +matrix ran in one container at a time, with six kill offsets (0–450 ms). + +`s.mjs` and `s2.mjs` preserve the reviewer's scenario generators. The review +did not preserve an R5n generator block, so `review6-exact.mjs` reconstructs +its entry from the reported source and uses the reported patch module exactly. +The harness checks effect uniqueness, completed run identities, execution mode, +and refusal before new effects for rollback. It scopes identical commands in +separate dispatched child flows by dispatch id. +`COMMANDS.md` records each literal Docker command; the log files below are the +complete captured stdout and stderr for those commands. +The original log bytes are also in `raw-logs.tar.gz`; the browsable `.log` +files differ only by normalized trailing blank lines so `git diff --check` +passes. + +| Matrix | Result | Log | +| --- | ---: | --- | +| R1/R1w/R1wn/R2w/R3/R3w/R4w/R1c/R5n | 54/54 clean, serial | `arm-volume-r-all.log` | +| Q5/Q5n/Q5h/Q5w/Q5wn/Q5wh/Q6Pw | 42/42 clean, serial | `arm-volume-q.log` | +| E1–E5 entry variants | 36/36 clean, serial | `arm-volume-e.log` | +| Prior P/C/G/H/K/I variants | 96/96 clean, serial | `arm-volume-prior-all.log` | +| A1/B1/N2 | 18/18 clean, parallel | `arm-volume-native.log` | +| 2.0.50 → candidate, CI4/CI5/A1/B1/N2 | 30/30 clean | `arm-volume-upgrade2050.log` | +| 2.0.51 → candidate, same shapes | 30/30 clean | `arm-volume-upgrade2051.log` | +| Candidate → 2.0.50, same shapes | 30/30 safe rollback | `arm-volume-rollback2050.log` | +| Candidate → 2.0.51, same shapes | 30/30 safe rollback | `arm-volume-rollback2051.log` | +| Forced eligibility, all 14 FR variants | 84/84 failed closed, zero effects | `arm-volume-forced.log` | + +K1 is a known base failure: candidate and published 2.0.51 both report +`run_admission_conflict` in 6/6 sweeps with effects `ABLC` and no duplicates +(`arm-volume-k1-head.log`, `arm-volume-k1-base2051.log`). Q6Pw, which failed +on fresh runs in review 6, now uses serial mode and completes 6/6. + +The forced run applied the reviewer's `parallelRunEligible` return-true mutation +to the built SDK. The separate execution-time body certificate rejected every +unsupported shape before admitting an effect. The pristine built file was +restored and byte-compared afterward. +The final local build matches the staged Docker build for the eligibility, +body, lifecycle, and step-graph modules byte-for-byte (`sdk-dist-hashes.log`). + +## Native timing + +`timing.mjs` runs three 300 ms routes, each with a 100 ms dependent, then a +join. It alternates published 2.0.51 and candidate runs in ten warm pairs, +after one warm-up of each. Journal `at_ms` values measure body and route spans; +wall time measures the CLI. See `arm-volume-timing.log` for all samples. + +| Metric | Published 2.0.51 | Candidate | +| --- | ---: | ---: | +| Body p50 / p95 | 1,379 / 1,400 ms | 463 / 499 ms | +| CLI p50 / p95 | 1,848 / 1,900 ms | 1,125 / 1,153 ms | +| Route start spread p50 | 662 ms | 5 ms | +| Route overlap | 0/10 | 10/10 | +| Dependent overlap | 0/10 | 10/10 | + +## Focused checks + +- `npm run build`, `npm run typecheck`, and `npm run typecheck:tests` passed + (`sdk-build.log`, `sdk-typecheck.log`, `sdk-typecheck-tests.log`). +- Seven focused Vitest files passed, 87 tests total, including the structural + frontier, source identity, and Promise-intrinsic assertions + (`sdk-focused-unit.log`). +- `authored-step-secrets-live.test.ts` passed both local-daemon tests, including + different grants in parallel shell children (`sdk-secrets-live.log`). +- A real `npm ci` completed in the SDK worktree. `node_modules` and its Surface + package are directories, and Surface resolves inside this worktree + (`sdk-npm-ci.log`, `workspace-resolution.log`). + +Four temporary source mutations were tested with the literal command +`bash evidence/native-parallel-review7/mutation-proof.sh > evidence/native-parallel-review7/mutation-proof.log 2>&1`. +The script captures each failing assertion, restores the source byte-for-byte +(`cmp` and SHA-256), and captures a passing rerun. `mutation-proof.log` has the +commands, hashes, and complete output. + +| Removed guard | Selected test result | Log | +| --- | --- | --- | +| User-built join refusal in `AuthoredStepGraph` | 1 failure: user-built join was trusted | `mut-f1-fail.log`, `mut-f1-pass.log` | +| Direct Surface import requirement | 1 failure: entry identity | `mut-f2-binding-fail.log`, `mut-f2-binding-pass.log` | +| Exact exported body comparison | 1 failure: entry identity | `mut-f2-body-fail.log`, `mut-f2-body-pass.log` | +| `Promise.resolve` identity check | 1 failure: replacement went undetected | `mut-f3-fail.log`, `mut-f3-pass.log` | + +The entry identity test uses the actual body with a missing or local Surface +binding, as well as a decoy body with a direct import. The step-graph test +distinguishes a user-built join from a certified branch call. The intrinsic +test replaces every Promise method plus the constructor. The forced FR matrix +checks the execution-time certificate independently of entry eligibility. + +An earlier attempt bind-mounted fixtures from the USB Paris Drive and Docker +Desktop became unresponsive after 31 clean R sweeps. The complete matrices +above use a named volume and did not repeat that host failure. diff --git a/evidence/native-parallel-review7/arm-volume-e.log b/evidence/native-parallel-review7/arm-volume-e.log new file mode 100644 index 000000000..29e075da2 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-e.log @@ -0,0 +1,37 @@ +{"case":"E1factory","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E1factory","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E1factory","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E1factory","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E1factory","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E1factory","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E2helper","index":0,"mode":"serial","outcome":"resumed","before":"ba","after":"baZ"} +{"case":"E2helper","index":1,"mode":"serial","outcome":"resumed","before":"ba","after":"baZ"} +{"case":"E2helper","index":2,"mode":"serial","outcome":"resumed","before":"ba","after":"baZ"} +{"case":"E2helper","index":3,"mode":"serial","outcome":"resumed","before":"ba","after":"baZ"} +{"case":"E2helper","index":4,"mode":"serial","outcome":"resumed","before":"ba","after":"baZ"} +{"case":"E2helper","index":5,"mode":"serial","outcome":"resumed","before":"ba","after":"baZ"} +{"case":"E3dyn","index":0,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E3dyn","index":1,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E3dyn","index":2,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E3dyn","index":3,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E3dyn","index":4,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E3dyn","index":5,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E4json","index":0,"mode":"serial","outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"E4json","index":1,"mode":"serial","outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"E4json","index":2,"mode":"serial","outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"E4json","index":3,"mode":"serial","outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"E4json","index":4,"mode":"serial","outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"E4json","index":5,"mode":"serial","outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"E4jsonuse","index":0,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E4jsonuse","index":1,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E4jsonuse","index":2,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E4jsonuse","index":3,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E4jsonuse","index":4,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E4jsonuse","index":5,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"E5ns","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E5ns","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E5ns","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E5ns","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E5ns","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"E5ns","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"done":true,"cases":["E1factory","E2helper","E3dyn","E4json","E4jsonuse","E5ns"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-forced.log b/evidence/native-parallel-review7/arm-volume-forced.log new file mode 100644 index 000000000..1e19f1889 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-forced.log @@ -0,0 +1,85 @@ +{"case":"FRrace","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRrace","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRrace","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRrace","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRrace","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRrace","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRany","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRany","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRany","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRany","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRany","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRany","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRnestrace","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRnestrace","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRnestrace","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRnestrace","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRnestrace","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRnestrace","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRdefer","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRdefer","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRdefer","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRdefer","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRdefer","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRdefer","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthen","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthen","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthen","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthen","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthen","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthen","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRsettled","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRsettled","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRsettled","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRsettled","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRsettled","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRsettled","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRset","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRset","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRset","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRset","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRset","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRset","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRgen","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRgen","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRgen","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRgen","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRgen","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRgen","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthenagg","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthenagg","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthenagg","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthenagg","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthenagg","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRthenagg","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRmicro","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRmicro","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRmicro","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRmicro","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRmicro","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRmicro","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRcatch","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRcatch","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRcatch","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRcatch","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRcatch","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRcatch","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRfinally","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRfinally","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRfinally","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRfinally","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRfinally","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRfinally","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRiter","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRiter","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRiter","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRiter","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRiter","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRiter","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRwrap","index":0,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRwrap","index":1,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRwrap","index":2,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRwrap","index":3,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRwrap","index":4,"mode":"parallel","outcome":"failed_closed","effects":""} +{"case":"FRwrap","index":5,"mode":"parallel","outcome":"failed_closed","effects":""} +{"done":true,"cases":["FRrace","FRany","FRnestrace","FRdefer","FRthen","FRcatch","FRwrap","FRsettled","FRset","FRgen","FRthenagg","FRfinally","FRiter","FRmicro"],"repetitions":6,"forced":true} diff --git a/evidence/native-parallel-review7/arm-volume-k1-base2051.log b/evidence/native-parallel-review7/arm-volume-k1-base2051.log new file mode 100644 index 000000000..12c6f8544 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-k1-base2051.log @@ -0,0 +1,7 @@ +{"case":"K1","index":0,"outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":1,"outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":2,"outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":3,"outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":4,"outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":5,"outcome":"base_failure","effects":"ABLC"} +{"done":true,"cases":["K1"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-k1-head.log b/evidence/native-parallel-review7/arm-volume-k1-head.log new file mode 100644 index 000000000..116be6010 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-k1-head.log @@ -0,0 +1,7 @@ +{"case":"K1","index":0,"mode":"serial","outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":1,"mode":"serial","outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":2,"mode":"serial","outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":3,"mode":"serial","outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":4,"mode":"serial","outcome":"base_failure","effects":"ABLC"} +{"case":"K1","index":5,"mode":"serial","outcome":"base_failure","effects":"ABLC"} +{"done":true,"cases":["K1"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-native.log b/evidence/native-parallel-review7/arm-volume-native.log new file mode 100644 index 000000000..811400165 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-native.log @@ -0,0 +1,19 @@ +{"case":"A1","index":0,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"A1","index":1,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"A1","index":2,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"A1","index":3,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"A1","index":4,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"A1","index":5,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"B1","index":0,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"B1","index":1,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"B1","index":2,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"B1","index":3,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"B1","index":4,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"B1","index":5,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"N2","index":0,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"N2","index":1,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"N2","index":2,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"N2","index":3,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"N2","index":4,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"N2","index":5,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"done":true,"cases":["A1","B1","N2"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-prior-all.log b/evidence/native-parallel-review7/arm-volume-prior-all.log new file mode 100644 index 000000000..37f32e787 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-prior-all.log @@ -0,0 +1,97 @@ +{"case":"P1","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1h","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1h","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1h","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1h","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1h","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1h","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1c","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1c","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1c","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1c","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1c","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1c","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P1n","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1n","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1n","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1n","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1n","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1n","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1bn","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1bn","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1bn","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1bn","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1bn","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P1bn","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"P2","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P2","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P2","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P2","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P2","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"P2","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"C1e","index":0,"mode":"serial","outcome":"resumed","before":"XY","after":"XYZ"} +{"case":"C1e","index":1,"mode":"serial","outcome":"resumed","before":"XY","after":"XYZ"} +{"case":"C1e","index":2,"mode":"serial","outcome":"resumed","before":"XY","after":"XYZ"} +{"case":"C1e","index":3,"mode":"serial","outcome":"resumed","before":"XY","after":"XYZ"} +{"case":"C1e","index":4,"mode":"serial","outcome":"resumed","before":"XY","after":"XYZ"} +{"case":"C1e","index":5,"mode":"serial","outcome":"resumed","before":"XY","after":"XYZ"} +{"case":"G1","index":0,"mode":"serial","outcome":"resumed","before":"ABG","after":"ABGZ"} +{"case":"G1","index":1,"mode":"serial","outcome":"resumed","before":"ABG","after":"ABGZ"} +{"case":"G1","index":2,"mode":"serial","outcome":"resumed","before":"ABG","after":"ABGZ"} +{"case":"G1","index":3,"mode":"serial","outcome":"resumed","before":"ABG","after":"ABGZ"} +{"case":"G1","index":4,"mode":"serial","outcome":"resumed","before":"ABG","after":"ABGZ"} +{"case":"G1","index":5,"mode":"serial","outcome":"resumed","before":"ABG","after":"ABGZ"} +{"case":"H1","index":0,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H1","index":1,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H1","index":2,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H1","index":3,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H1","index":4,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H1","index":5,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H2","index":0,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H2","index":1,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H2","index":2,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H2","index":3,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H2","index":4,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"H2","index":5,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"K4","index":0,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"K4","index":1,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"K4","index":2,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"K4","index":3,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"K4","index":4,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"K4","index":5,"mode":"serial","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"I1","index":0,"mode":"serial","outcome":"resumed","before":"xyLR","after":"xyLRZ"} +{"case":"I1","index":1,"mode":"serial","outcome":"resumed","before":"xyLR","after":"xyLRZ"} +{"case":"I1","index":2,"mode":"serial","outcome":"resumed","before":"xyLR","after":"xyLRZ"} +{"case":"I1","index":3,"mode":"serial","outcome":"resumed","before":"xyLR","after":"xyLRZ"} +{"case":"I1","index":4,"mode":"serial","outcome":"resumed","before":"xyLR","after":"xyLRZ"} +{"case":"I1","index":5,"mode":"serial","outcome":"resumed","before":"xyLR","after":"xyLRZ"} +{"case":"K2b","index":0,"mode":"serial","outcome":"resumed","before":"ABC","after":"ABCZ"} +{"case":"K2b","index":1,"mode":"serial","outcome":"resumed","before":"ABC","after":"ABCZ"} +{"case":"K2b","index":2,"mode":"serial","outcome":"resumed","before":"ABC","after":"ABCZ"} +{"case":"K2b","index":3,"mode":"serial","outcome":"resumed","before":"ABC","after":"ABCZ"} +{"case":"K2b","index":4,"mode":"serial","outcome":"resumed","before":"ABC","after":"ABCZ"} +{"case":"K2b","index":5,"mode":"serial","outcome":"resumed","before":"ABC","after":"ABCZ"} +{"case":"K3","index":0,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"K3","index":1,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"K3","index":2,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"K3","index":3,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"K3","index":4,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"K3","index":5,"mode":"serial","outcome":"resumed","before":"ab","after":"abZ"} +{"case":"K5b","index":0,"mode":"serial","outcome":"resumed","before":"AB","after":"ABZ"} +{"case":"K5b","index":1,"mode":"serial","outcome":"resumed","before":"AB","after":"ABZ"} +{"case":"K5b","index":2,"mode":"serial","outcome":"resumed","before":"AB","after":"ABZ"} +{"case":"K5b","index":3,"mode":"serial","outcome":"resumed","before":"AB","after":"ABZ"} +{"case":"K5b","index":4,"mode":"serial","outcome":"resumed","before":"AB","after":"ABZ"} +{"case":"K5b","index":5,"mode":"serial","outcome":"resumed","before":"AB","after":"ABZ"} +{"case":"K13b","index":0,"mode":"serial","outcome":"resumed","before":"BAC","after":"BACZ"} +{"case":"K13b","index":1,"mode":"serial","outcome":"resumed","before":"BAC","after":"BACZ"} +{"case":"K13b","index":2,"mode":"serial","outcome":"resumed","before":"BAC","after":"BACZ"} +{"case":"K13b","index":3,"mode":"serial","outcome":"resumed","before":"BAC","after":"BACZ"} +{"case":"K13b","index":4,"mode":"serial","outcome":"resumed","before":"BAC","after":"BACZ"} +{"case":"K13b","index":5,"mode":"serial","outcome":"resumed","before":"BAC","after":"BACZ"} +{"done":true,"cases":["P1","P1h","P1c","P1n","P1bn","P2","C1e","G1","H1","H2","K4","I1","K2b","K3","K5b","K13b"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-q.log b/evidence/native-parallel-review7/arm-volume-q.log new file mode 100644 index 000000000..fc5784a31 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-q.log @@ -0,0 +1,43 @@ +{"case":"Q5","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5n","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5n","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5n","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5n","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5n","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5n","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5h","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5h","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5h","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5h","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5h","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5h","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5w","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5w","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5w","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5w","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5w","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5w","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5wn","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5wn","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5wn","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5wn","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5wn","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5wn","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q5wh","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5wh","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5wh","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5wh","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5wh","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q5wh","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"Q6Pw","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q6Pw","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q6Pw","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q6Pw","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q6Pw","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"Q6Pw","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"done":true,"cases":["Q5","Q5n","Q5h","Q5w","Q5wn","Q5wh","Q6Pw"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-r-all.log b/evidence/native-parallel-review7/arm-volume-r-all.log new file mode 100644 index 000000000..dec5af413 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-r-all.log @@ -0,0 +1,55 @@ +{"case":"R1","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1w","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1w","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1w","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1w","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1w","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1w","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1wn","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R1wn","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R1wn","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R1wn","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R1wn","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R1wn","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R2w","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R2w","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R2w","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R2w","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R2w","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R2w","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3w","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3w","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3w","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3w","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3w","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3w","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R3","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R4w","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R4w","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R4w","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R4w","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R4w","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R4w","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1c","index":0,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1c","index":1,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1c","index":2,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1c","index":3,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1c","index":4,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R1c","index":5,"mode":"serial","outcome":"resumed","before":"X","after":"XZ"} +{"case":"R5n","index":0,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R5n","index":1,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R5n","index":2,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R5n","index":3,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R5n","index":4,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"case":"R5n","index":5,"mode":"serial","outcome":"resumed","before":"abcX","after":"abcXZ"} +{"done":true,"cases":["R1","R1w","R1wn","R2w","R3w","R3","R4w","R1c","R5n"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-rollback2050.log b/evidence/native-parallel-review7/arm-volume-rollback2050.log new file mode 100644 index 000000000..4e964c483 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-rollback2050.log @@ -0,0 +1,31 @@ +{"case":"RBCI4","index":0,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":1,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":2,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":3,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":4,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":5,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI5","index":0,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":1,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":2,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":3,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":4,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":5,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBA1","index":0,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBA1","index":1,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBA1","index":2,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBA1","index":3,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBA1","index":4,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBA1","index":5,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBB1","index":0,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":1,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":2,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":3,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":4,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":5,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBN2","index":0,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":1,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":2,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":3,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":4,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":5,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"done":true,"cases":["RBCI4","RBCI5","RBA1","RBB1","RBN2"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-rollback2051.log b/evidence/native-parallel-review7/arm-volume-rollback2051.log new file mode 100644 index 000000000..300308e8f --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-rollback2051.log @@ -0,0 +1,31 @@ +{"case":"RBCI4","index":0,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":1,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":2,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":3,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":4,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI4","index":5,"mode":"serial","outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"RBCI5","index":0,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":1,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":2,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":3,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":4,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBCI5","index":5,"mode":"serial","outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"RBA1","index":0,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBA1","index":1,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBA1","index":2,"mode":"parallel","outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"RBA1","index":3,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBA1","index":4,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBA1","index":5,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":0,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":1,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":2,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":3,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":4,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBB1","index":5,"mode":"parallel","outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"RBN2","index":0,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":1,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":2,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":3,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":4,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"case":"RBN2","index":5,"mode":"parallel","outcome":"resumed","before":"bca","after":"bcaZ"} +{"done":true,"cases":["RBCI4","RBCI5","RBA1","RBB1","RBN2"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-timing.log b/evidence/native-parallel-review7/arm-volume-timing.log new file mode 100644 index 000000000..b48d89263 --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-timing.log @@ -0,0 +1,22 @@ +{"kind":"base","number":0,"cliMs":1848.125501,"bodyMs":1379,"routeSpreadMs":665,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"head","number":0,"cliMs":1146.583584,"bodyMs":457,"routeSpreadMs":5,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"head","number":1,"cliMs":1144.3790010000002,"bodyMs":455,"routeSpreadMs":10,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"base","number":1,"cliMs":1848.0953340000005,"bodyMs":1370,"routeSpreadMs":652,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"base","number":2,"cliMs":1821.3622930000001,"bodyMs":1370,"routeSpreadMs":651,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"head","number":2,"cliMs":1131.4559169999993,"bodyMs":464,"routeSpreadMs":5,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"head","number":3,"cliMs":1152.8909999999996,"bodyMs":467,"routeSpreadMs":10,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"base","number":3,"cliMs":1872.0480009999992,"bodyMs":1392,"routeSpreadMs":676,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"base","number":4,"cliMs":1842.1947930000006,"bodyMs":1366,"routeSpreadMs":661,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"head","number":4,"cliMs":1124.7279589999998,"bodyMs":453,"routeSpreadMs":2,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"head","number":5,"cliMs":1137.3512499999997,"bodyMs":499,"routeSpreadMs":10,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"base","number":5,"cliMs":1900.317626,"bodyMs":1400,"routeSpreadMs":668,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"base","number":6,"cliMs":1872.781375999999,"bodyMs":1395,"routeSpreadMs":667,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"head","number":6,"cliMs":1110.0066680000018,"bodyMs":463,"routeSpreadMs":4,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"head","number":7,"cliMs":1110.932251000002,"bodyMs":457,"routeSpreadMs":5,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"base","number":7,"cliMs":1817.4431250000016,"bodyMs":1346,"routeSpreadMs":648,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"base","number":8,"cliMs":1889.8511259999977,"bodyMs":1393,"routeSpreadMs":662,"routesOverlap":false,"dependentsOverlap":false} +{"kind":"head","number":8,"cliMs":1106.0038339999992,"bodyMs":466,"routeSpreadMs":7,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"head","number":9,"cliMs":1107.6074169999993,"bodyMs":470,"routeSpreadMs":3,"routesOverlap":true,"dependentsOverlap":true} +{"kind":"base","number":9,"cliMs":1877.2865009999987,"bodyMs":1392,"routeSpreadMs":665,"routesOverlap":false,"dependentsOverlap":false} +{"summary":"base","samples":10,"cliP50Ms":1848.125501,"cliP95Ms":1900.317626,"bodyP50Ms":1379,"bodyP95Ms":1400,"routeSpreadP50Ms":662,"routesOverlap":0,"dependentsOverlap":0} +{"summary":"head","samples":10,"cliP50Ms":1124.7279589999998,"cliP95Ms":1152.8909999999996,"bodyP50Ms":463,"bodyP95Ms":499,"routeSpreadP50Ms":5,"routesOverlap":10,"dependentsOverlap":10} diff --git a/evidence/native-parallel-review7/arm-volume-upgrade2050.log b/evidence/native-parallel-review7/arm-volume-upgrade2050.log new file mode 100644 index 000000000..65d290acd --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-upgrade2050.log @@ -0,0 +1,31 @@ +{"case":"UCI4","index":0,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":1,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":2,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":3,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":4,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":5,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI5","index":0,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":1,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":2,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":3,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":4,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":5,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UA1","index":0,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":1,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":2,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":3,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":4,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":5,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UB1","index":0,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":1,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":2,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":3,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":4,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":5,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UN2","index":0,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":1,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":2,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":3,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":4,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":5,"outcome":"resumed","before":"abc","after":"abcZ"} +{"done":true,"cases":["UCI4","UCI5","UA1","UB1","UN2"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/arm-volume-upgrade2051.log b/evidence/native-parallel-review7/arm-volume-upgrade2051.log new file mode 100644 index 000000000..65d290acd --- /dev/null +++ b/evidence/native-parallel-review7/arm-volume-upgrade2051.log @@ -0,0 +1,31 @@ +{"case":"UCI4","index":0,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":1,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":2,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":3,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":4,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI4","index":5,"outcome":"resumed","before":"abcd","after":"abcdyegZ"} +{"case":"UCI5","index":0,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":1,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":2,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":3,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":4,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UCI5","index":5,"outcome":"resumed","before":"abcde","after":"abcdeyghZ"} +{"case":"UA1","index":0,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":1,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":2,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":3,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":4,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UA1","index":5,"outcome":"resumed","before":"LR","after":"LRZ"} +{"case":"UB1","index":0,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":1,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":2,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":3,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":4,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UB1","index":5,"outcome":"resumed","before":"RL","after":"RLZ"} +{"case":"UN2","index":0,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":1,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":2,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":3,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":4,"outcome":"resumed","before":"abc","after":"abcZ"} +{"case":"UN2","index":5,"outcome":"resumed","before":"abc","after":"abcZ"} +{"done":true,"cases":["UCI4","UCI5","UA1","UB1","UN2"],"repetitions":6,"forced":false} diff --git a/evidence/native-parallel-review7/mut-f1-fail.log b/evidence/native-parallel-review7/mut-f1-fail.log new file mode 100644 index 000000000..ac6f4afd7 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f1-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-step-graph.test.ts (27 tests | 1 failed | 26 skipped) 4ms + × the authored step DAG > does not trust a user-built join merely because it is a combinator member 3ms + → expected false to be true // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-step-graph.test.ts > the authored step DAG > does not trust a user-built join merely because it is a combinator member +AssertionError: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ tests/authored-step-graph.test.ts:88:59 + 86| const graph = new AuthoredStepGraph(id => id === 3 ? [2] : [], und… + 87| graph.registerAggregate(1, Promise.resolve(), 'all', [2]); + 88| expect(graph.predecessorsAt(3).unregisteredAggregate).toBe(true); + | ^ + 89| const certified = new AuthoredStepGraph(id => id === 3 ? [2] : [],… + 90| certified.registerAggregate(1, Promise.resolve(), 'all', [2]); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 26 skipped (27) + Start at 23:49:49 + Duration 348ms (transform 69ms, setup 10ms, collect 68ms, tests 4ms, environment 0ms, prepare 70ms) diff --git a/evidence/native-parallel-review7/mut-f1-pass.log b/evidence/native-parallel-review7/mut-f1-pass.log new file mode 100644 index 000000000..e1178a3d3 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f1-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-step-graph.test.ts (27 tests | 26 skipped) 1ms + + Test Files 1 passed (1) + Tests 1 passed | 26 skipped (27) + Start at 23:49:49 + Duration 359ms (transform 47ms, setup 11ms, collect 52ms, tests 1ms, environment 0ms, prepare 101ms) diff --git a/evidence/native-parallel-review7/mut-f2-binding-fail.log b/evidence/native-parallel-review7/mut-f2-binding-fail.log new file mode 100644 index 000000000..924d689d8 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f2-binding-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (9 tests | 1 failed | 8 skipped) 8ms + × parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding 8ms + → expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding +AssertionError: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:152:40 + 150| expect(eligible(candidate, `import { flow } from './wrap.ts'; ${de… + 151| expect(eligible(candidate, `import { flow } from '@relayflows/surf… + 152| expect(eligible(candidate, exact)).toBe(false); + | ^ + 153| expect(eligible(candidate, `const flow = () => impl; ${exact}`)).t… + 154| expect(eligible(candidate, `import { flow } from './wrap.ts'; ${ex… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 8 skipped (9) + Start at 23:49:50 + Duration 670ms (transform 25ms, setup 9ms, collect 424ms, tests 8ms, environment 0ms, prepare 41ms) diff --git a/evidence/native-parallel-review7/mut-f2-binding-pass.log b/evidence/native-parallel-review7/mut-f2-binding-pass.log new file mode 100644 index 000000000..e1abe7243 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f2-binding-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (9 tests | 8 skipped) 7ms + + Test Files 1 passed (1) + Tests 1 passed | 8 skipped (9) + Start at 23:49:51 + Duration 517ms (transform 33ms, setup 11ms, collect 203ms, tests 7ms, environment 0ms, prepare 81ms) diff --git a/evidence/native-parallel-review7/mut-f2-body-fail.log b/evidence/native-parallel-review7/mut-f2-body-fail.log new file mode 100644 index 000000000..6971777e8 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f2-body-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (9 tests | 1 failed | 8 skipped) 30ms + × parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding 29ms + → expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding +AssertionError: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:151:89 + 149| expect(eligible(candidate, `const flow = () => impl; ${decoy}`)).t… + 150| expect(eligible(candidate, `import { flow } from './wrap.ts'; ${de… + 151| expect(eligible(candidate, `import { flow } from '@relayflows/surf… + | ^ + 152| expect(eligible(candidate, exact)).toBe(false); + 153| expect(eligible(candidate, `const flow = () => impl; ${exact}`)).t… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 8 skipped (9) + Start at 23:49:52 + Duration 510ms (transform 22ms, setup 8ms, collect 193ms, tests 30ms, environment 0ms, prepare 97ms) diff --git a/evidence/native-parallel-review7/mut-f2-body-pass.log b/evidence/native-parallel-review7/mut-f2-body-pass.log new file mode 100644 index 000000000..e5320c11c --- /dev/null +++ b/evidence/native-parallel-review7/mut-f2-body-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (9 tests | 8 skipped) 6ms + + Test Files 1 passed (1) + Tests 1 passed | 8 skipped (9) + Start at 23:49:53 + Duration 408ms (transform 26ms, setup 12ms, collect 196ms, tests 6ms, environment 0ms, prepare 37ms) diff --git a/evidence/native-parallel-review7/mut-f3-fail.log b/evidence/native-parallel-review7/mut-f3-fail.log new file mode 100644 index 000000000..7943fadf3 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f3-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (44 tests | 1 failed | 43 skipped) 5ms + × authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins 4ms + → resolve: expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins +AssertionError: resolve: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-flow-lifecycle-executor.test.ts:42:30 + 40| const detected = parallelPromiseIntrinsicsIntact(); + 41| target[name] = original; + 42| expect(detected, name).toBe(false); + | ^ + 43| } + 44| for (const name of ['then', 'catch', 'finally']) { + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 43 skipped (44) + Start at 23:49:54 + Duration 1.61s (transform 521ms, setup 9ms, collect 1.41s, tests 5ms, environment 0ms, prepare 36ms) diff --git a/evidence/native-parallel-review7/mut-f3-pass.log b/evidence/native-parallel-review7/mut-f3-pass.log new file mode 100644 index 000000000..97e3c52f8 --- /dev/null +++ b/evidence/native-parallel-review7/mut-f3-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (44 tests | 43 skipped) 3ms + + Test Files 1 passed (1) + Tests 1 passed | 43 skipped (44) + Start at 23:49:56 + Duration 1.28s (transform 410ms, setup 10ms, collect 1.04s, tests 3ms, environment 0ms, prepare 41ms) diff --git a/evidence/native-parallel-review7/mutation-proof.log b/evidence/native-parallel-review7/mutation-proof.log new file mode 100644 index 000000000..4d74d487c --- /dev/null +++ b/evidence/native-parallel-review7/mutation-proof.log @@ -0,0 +1,183 @@ +MUTATION f1 +COMMAND npx vitest run tests/authored-step-graph.test.ts -t does not trust a user-built join merely because it is a combinator member + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-step-graph.test.ts (27 tests | 1 failed | 26 skipped) 4ms + × the authored step DAG > does not trust a user-built join merely because it is a combinator member 3ms + → expected false to be true // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-step-graph.test.ts > the authored step DAG > does not trust a user-built join merely because it is a combinator member +AssertionError: expected false to be true // Object.is equality + +- Expected ++ Received + +- true ++ false + + ❯ tests/authored-step-graph.test.ts:88:59 + 86| const graph = new AuthoredStepGraph(id => id === 3 ? [2] : [], und… + 87| graph.registerAggregate(1, Promise.resolve(), 'all', [2]); + 88| expect(graph.predecessorsAt(3).unregisteredAggregate).toBe(true); + | ^ + 89| const certified = new AuthoredStepGraph(id => id === 3 ? [2] : [],… + 90| certified.registerAggregate(1, Promise.resolve(), 'all', [2]); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 26 skipped (27) + Start at 23:49:49 + Duration 348ms (transform 69ms, setup 10ms, collect 68ms, tests 4ms, environment 0ms, prepare 70ms) + +RESTORED f1 SHA256 138ba3e8259e4d084251b02257f70c12e394e91d51625a03344ccd9a9e60c050 + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-step-graph.test.ts (27 tests | 26 skipped) 1ms + + Test Files 1 passed (1) + Tests 1 passed | 26 skipped (27) + Start at 23:49:49 + Duration 359ms (transform 47ms, setup 11ms, collect 52ms, tests 1ms, environment 0ms, prepare 101ms) + +MUTATION f2-binding +COMMAND npx vitest run tests/authored-parallel-eligibility.test.ts -t requires the exported arrow to be the actual body from the direct Surface binding + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (9 tests | 1 failed | 8 skipped) 8ms + × parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding 8ms + → expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding +AssertionError: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:152:40 + 150| expect(eligible(candidate, `import { flow } from './wrap.ts'; ${de… + 151| expect(eligible(candidate, `import { flow } from '@relayflows/surf… + 152| expect(eligible(candidate, exact)).toBe(false); + | ^ + 153| expect(eligible(candidate, `const flow = () => impl; ${exact}`)).t… + 154| expect(eligible(candidate, `import { flow } from './wrap.ts'; ${ex… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 8 skipped (9) + Start at 23:49:50 + Duration 670ms (transform 25ms, setup 9ms, collect 424ms, tests 8ms, environment 0ms, prepare 41ms) + +RESTORED f2-binding SHA256 3802b56d109ae111bc774928669409951a33f830c3c2bc16575597df904b26d2 + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (9 tests | 8 skipped) 7ms + + Test Files 1 passed (1) + Tests 1 passed | 8 skipped (9) + Start at 23:49:51 + Duration 517ms (transform 33ms, setup 11ms, collect 203ms, tests 7ms, environment 0ms, prepare 81ms) + +MUTATION f2-body +COMMAND npx vitest run tests/authored-parallel-eligibility.test.ts -t requires the exported arrow to be the actual body from the direct Surface binding + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (9 tests | 1 failed | 8 skipped) 30ms + × parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding 29ms + → expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > requires the exported arrow to be the actual body from the direct Surface binding +AssertionError: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:151:89 + 149| expect(eligible(candidate, `const flow = () => impl; ${decoy}`)).t… + 150| expect(eligible(candidate, `import { flow } from './wrap.ts'; ${de… + 151| expect(eligible(candidate, `import { flow } from '@relayflows/surf… + | ^ + 152| expect(eligible(candidate, exact)).toBe(false); + 153| expect(eligible(candidate, `const flow = () => impl; ${exact}`)).t… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 8 skipped (9) + Start at 23:49:52 + Duration 510ms (transform 22ms, setup 8ms, collect 193ms, tests 30ms, environment 0ms, prepare 97ms) + +RESTORED f2-body SHA256 3802b56d109ae111bc774928669409951a33f830c3c2bc16575597df904b26d2 + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (9 tests | 8 skipped) 6ms + + Test Files 1 passed (1) + Tests 1 passed | 8 skipped (9) + Start at 23:49:53 + Duration 408ms (transform 26ms, setup 12ms, collect 196ms, tests 6ms, environment 0ms, prepare 37ms) + +MUTATION f3 +COMMAND npx vitest run tests/authored-flow-lifecycle-executor.test.ts -t detects replacement of every Promise primitive used by parallel joins + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (44 tests | 1 failed | 43 skipped) 5ms + × authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins 4ms + → resolve: expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins +AssertionError: resolve: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-flow-lifecycle-executor.test.ts:42:30 + 40| const detected = parallelPromiseIntrinsicsIntact(); + 41| target[name] = original; + 42| expect(detected, name).toBe(false); + | ^ + 43| } + 44| for (const name of ['then', 'catch', 'finally']) { + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 43 skipped (44) + Start at 23:49:54 + Duration 1.61s (transform 521ms, setup 9ms, collect 1.41s, tests 5ms, environment 0ms, prepare 36ms) + +RESTORED f3 SHA256 14a9237ea459a67ca3f514492d63776aea798f97d15a8ac4c31fd9c7c846ada4 + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (44 tests | 43 skipped) 3ms + + Test Files 1 passed (1) + Tests 1 passed | 43 skipped (44) + Start at 23:49:56 + Duration 1.28s (transform 410ms, setup 10ms, collect 1.04s, tests 3ms, environment 0ms, prepare 41ms) diff --git a/evidence/native-parallel-review7/mutation-proof.sh b/evidence/native-parallel-review7/mutation-proof.sh new file mode 100644 index 000000000..3c0669609 --- /dev/null +++ b/evidence/native-parallel-review7/mutation-proof.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +set -euo pipefail + +evidence_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +sdk_dir=$(cd "$evidence_dir/../../packages/sdk" && pwd) +cd "$sdk_dir" + +mutate_and_check() ( + set -euo pipefail + local label=$1 file=$2 original=$3 replacement=$4 expected=$5 + shift 5 + local backup before after failure_log pass_log + backup=$(mktemp) + cp "$file" "$backup" + trap 'cp "$backup" "$file"; rm -f "$backup"' EXIT + before=$(shasum -a 256 "$file" | awk '{print $1}') + failure_log="$evidence_dir/mut-$label-fail.log" + pass_log="$evidence_dir/mut-$label-pass.log" + + python3 - "$file" "$original" "$replacement" <<'PY' +from pathlib import Path +import sys +file, original, replacement = sys.argv[1:] +source = Path(file).read_text() +assert source.count(original) == 1, (file, original) +Path(file).write_text(source.replace(original, replacement)) +PY + + printf '%s\n' "MUTATION $label" "COMMAND npx vitest run $*" + if npx vitest run "$@" > "$failure_log" 2>&1; then + cat "$failure_log" + echo "ERROR: $label mutation did not fail" + exit 1 + fi + if ! rg -F "$expected" "$failure_log" >/dev/null; then + cat "$failure_log" + echo "ERROR: $label failed for a different reason" + exit 1 + fi + cat "$failure_log" + cp "$backup" "$file" + after=$(shasum -a 256 "$file" | awk '{print $1}') + test "$before" = "$after" + cmp "$backup" "$file" + printf '%s\n' "RESTORED $label SHA256 $after" + npx vitest run "$@" > "$pass_log" 2>&1 + cat "$pass_log" + trap - EXIT + rm -f "$backup" +) + +mutate_and_check f1 src/authored-step-graph.ts \ + '&& !this.registeredAggregates.has(current) && !this.certifiedMembers.has(current)' \ + '&& !this.registeredAggregates.has(current) && false' \ + 'expected false to be true' \ + tests/authored-step-graph.test.ts -t 'does not trust a user-built join merely because it is a combinator member' + +mutate_and_check f2-binding src/authored-parallel-eligibility.ts \ + 'return importsSurfaceFlow && definesDefaultBody && !unsafe;' \ + 'return definesDefaultBody && !unsafe;' \ + 'expected true to be false' \ + tests/authored-parallel-eligibility.test.ts -t 'requires the exported arrow to be the actual body from the direct Surface binding' + +mutate_and_check f2-body src/authored-parallel-eligibility.ts \ + 'if (args[args.length - 1]!.getText(file) !== bodySource) return false;' \ + '/* mutation: skip body identity */' \ + 'expected true to be false' \ + tests/authored-parallel-eligibility.test.ts -t 'requires the exported arrow to be the actual body from the direct Surface binding' + +mutate_and_check f3 src/authored-flow-lifecycle.ts \ + '|| Promise.resolve !== nativePromiseResolve || Promise.reject !== nativePromiseReject' \ + '|| Promise.reject !== nativePromiseReject' \ + 'resolve: expected true to be false' \ + tests/authored-flow-lifecycle-executor.test.ts -t 'detects replacement of every Promise primitive used by parallel joins' diff --git a/evidence/native-parallel-review7/raw-logs.tar.gz b/evidence/native-parallel-review7/raw-logs.tar.gz new file mode 100644 index 000000000..0576a5f03 Binary files /dev/null and b/evidence/native-parallel-review7/raw-logs.tar.gz differ diff --git a/evidence/native-parallel-review7/review6-exact.mjs b/evidence/native-parallel-review7/review6-exact.mjs new file mode 100644 index 000000000..a42e2871d --- /dev/null +++ b/evidence/native-parallel-review7/review6-exact.mjs @@ -0,0 +1,231 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { execFileSync, spawn } from 'node:child_process'; +import scenarios from './s2.mjs'; +import baseScenarios from './s.mjs'; +import { SURF, NAT, W2, TAIL5 } from './s.mjs'; + +// Review 6 reported R5n's entry shape and exact patch module, but its +// generator block was not preserved. Reconstruct the entry from the report. +const r5n = { name: 'R5n', files: { + 'chain.flow.ts': `${SURF}\nimport './lib/p.mjs';\nexport default flow('r5n', async f => {\n${W2}${NAT}${TAIL5}`, + 'lib/p.mjs': String.raw`const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = function (x) { + if (this !== I || !(x instanceof I) || !/at (Promise|Function)\.all /.test(new Error().stack)) return resolve.call(this, x); + if (gate === undefined) { let open; const g = new I(r => { open = r; }); g.open = open; gate = g; queueMicrotask(() => { gate = undefined; }); } + const g = gate; x.then(v => g.open(v), () => {}); return g; +}; +`, +} }; + +const bin = '/bench/node_modules/.bin/flows'; +const firstBin = process.env.FIRST_BIN ?? bin; +const resumeBin = process.env.RESUME_BIN ?? bin; +const finalBin = process.env.FINAL_BIN ?? resumeBin; +const daemon = process.env.RELAYFLOWD_BIN ?? '/bench/node_modules/@relayflows/runtime-linux-x64/bin/relayflowd'; +const firstDaemon = process.env.FIRST_DAEMON_BIN ?? daemon; +const resumeDaemon = process.env.RESUME_DAEMON_BIN ?? daemon; +const finalDaemon = process.env.FINAL_DAEMON_BIN ?? resumeDaemon; +const fixtureNodeModules = process.env.FIXTURE_NODE_MODULES ?? '/bench/node_modules'; +const selected = new Set((process.env.CASE ?? scenarios.map(s => s.name).join(',')).split(',')); +const forced = process.env.FORCE_ELIGIBLE === '1'; +const baseline = process.env.BASELINE === '1'; +const expectRefusal = process.env.EXPECT_ROLLBACK_REFUSAL === '1'; +const expectBaseFailure = process.env.EXPECT_BASE_FAILURE === '1'; +const parallelCases = new Set(['A1', 'B1', 'N2', 'RBA1', 'RBB1', 'RBN2']); +const delays = [0, 60, 130, 220, 330, 450]; +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + +if (forced) { + const file = '/bench/node_modules/@relayflows/sdk/dist/authored-parallel-eligibility.js'; + const source = fs.readFileSync(file, 'utf8'); + const changed = source.replace('export function parallelRunEligible(body, moduleSource) {', + 'export function parallelRunEligible(body, moduleSource) { return true;'); + if (changed === source) throw new Error('reviewer forced-eligibility mutation did not match'); + fs.writeFileSync(file, changed); +} + +function start(args, root, executable, daemonBin) { + const child = spawn(process.execPath, [executable, ...args], { + cwd: root, env: { ...process.env, RELAYFLOWD_BIN: daemonBin }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let output = ''; + child.stdout.on('data', data => { output += data; }); + child.stderr.on('data', data => { output += data; }); + return { + child, + closed: new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal }))), + get output() { return output; }, + }; +} + +function killSweep(root) { + const connection = path.join(root, 'data/connection.json'); + const targets = new Set(); + if (fs.existsSync(connection)) targets.add(JSON.parse(fs.readFileSync(connection, 'utf8')).pid); + for (const entry of fs.readdirSync('/proc')) { + if (!/^\d+$/u.test(entry)) continue; + const pid = Number(entry); + if (pid === process.pid) continue; + try { + const cwd = fs.readlinkSync(`/proc/${pid}/cwd`); + const command = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8'); + if (cwd.startsWith(root) || command.includes(root)) targets.add(pid); + } catch { /* The process exited during the scan. */ } + } + for (const pid of targets) { + try { process.kill(pid, 'SIGKILL'); } + catch (error) { if (error.code !== 'ESRCH') throw error; } + } +} + +const sql = `import sqlite3,json,sys +db=sqlite3.connect(sys.argv[1]) +spawn=db.execute("select payload from entries where entry_type='run.spawned' order by seq limit 1").fetchone() +done=db.execute("select count(*) from entries where entry_type='step.completed'").fetchone()[0] +print(json.dumps({'spawned':json.loads(spawn[0]) if spawn else None,'completed':done}))`; +function journals(root) { + const directory = path.join(root, 'data/runs'); + if (!fs.existsSync(directory)) return []; + return fs.readdirSync(directory).filter(file => file.endsWith('.sqlite3')).sort().map(file => ({ + runId: file.slice(0, -8), + ...JSON.parse(execFileSync('python3', ['-c', sql, path.join(directory, file)], { encoding: 'utf8' })), + })); +} +const spec = record => record?.spawned?.spec ?? record?.spawned?.payload?.spec ?? record?.spawned?.run?.spec; +function rootRecord(records) { + return records.find(record => spec(record)?.steps?.[0]?.id === 'authored-root'); +} +function assertNoReplay(records, rootId) { + const seen = new Map(); + for (const record of records) { + if (record.runId === rootId) continue; + const step = spec(record)?.steps?.[0]; + if (!step?.command || !(step.id.startsWith('run-') || step.id.includes('--run-'))) continue; + // A dispatched child is a separate flow invocation: two children may + // intentionally run the same command under different dispatch prefixes. + const namespace = step.id.includes('--') ? step.id.slice(0, step.id.lastIndexOf('--')) : ''; + const key = `${namespace}|${step.command}`; + const earlier = seen.get(key); + if (earlier && earlier.id !== step.id && (earlier.completed > 0 || record.completed > 0)) { + throw new Error(`journal replay: ${step.command}: ${earlier.id} -> ${step.id}`); + } + seen.set(key, { id: step.id, completed: record.completed }); + } +} + +async function one(scenario, index) { + const root = fs.mkdtempSync(`/bench/review7-${scenario.name}-`); + const data = path.join(root, 'data'); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync(fixtureNodeModules, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ + cli: path.join(root, 'adapter.mjs'), models: ['test-model'], + })); + fs.writeFileSync(path.join(root, 'adapter.mjs'), '#!/usr/bin/env node\nprocess.exit(0);\n', { mode: 0o755 }); + for (const [file, source] of Object.entries(scenario.files)) { + const target = path.join(root, file); + fs.mkdirSync(path.dirname(target), { recursive: true }); + fs.writeFileSync(target, source.replaceAll('', root)); + } + if (scenario.bluebird) { + const destination = path.join(root, 'bb'); + fs.cpSync('/bench/node_modules/bluebird/js/release', destination, { recursive: true }); + fs.writeFileSync(path.join(destination, 'package.json'), '{"type":"commonjs"}'); + } + let initial; + let passed = false; + try { + initial = start(['run', '--no-observer-link', '--json', ...(scenario.extraArgs ?? []), '--data-dir', data, + path.join(root, 'chain.flow.ts'), '--input', '{}'], root, firstBin, firstDaemon); + const deadline = Date.now() + 90_000; + let early; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (initial.child.exitCode !== null || initial.child.signalCode !== null) { + early = await initial.closed; + break; + } + if (Date.now() >= deadline) throw new Error(`fresh stall timeout: ${initial.output}`); + await sleep(15); + } + if (early) { + const effects = fs.existsSync(path.join(root, 'effects')) + ? fs.readFileSync(path.join(root, 'effects'), 'utf8') : ''; + const records = journals(root); + const rootRun = rootRecord(records); + const mode = rootRun ? JSON.parse(spec(rootRun).steps[0].instruction).executionMode : undefined; + if (expectBaseFailure && early.code !== 0 && /run_admission_conflict/u.test(initial.output) + && new Set(effects).size === effects.length) { + console.log(JSON.stringify({ case: scenario.name, index, mode, outcome: 'base_failure', effects })); + passed = true; + return; + } + if (!forced || !scenario.name.startsWith('FR') || early.code === 0 || effects !== '' || mode !== 'parallel') { + throw new Error(`base-working fresh run failed: mode=${mode}, effects=${effects}, exit=${early.code}: ${initial.output}`); + } + assertNoReplay(records, rootRun.runId); + console.log(JSON.stringify({ case: scenario.name, index, mode, outcome: 'failed_closed', effects })); + passed = true; + return; + } + await sleep(delays[index]); + initial.child.kill('SIGKILL'); + await Promise.race([initial.closed, sleep(2_000).then(() => { throw new Error('CLI kill timeout'); })]); + killSweep(root); + await sleep(100); + killSweep(root); + fs.writeFileSync(path.join(root, 'release'), ''); + const before = fs.existsSync(path.join(root, 'effects')) ? fs.readFileSync(path.join(root, 'effects'), 'utf8') : ''; + const records = journals(root); + const rootRun = rootRecord(records); + if (!rootRun) throw new Error('missing root journal'); + const mode = JSON.parse(spec(rootRun).steps[0].instruction).executionMode; + if (forced && mode !== 'parallel') throw new Error(`forced mode was ${mode}`); + const expectedMode = parallelCases.has(scenario.name) ? 'parallel' : 'serial'; + if (!forced && mode !== expectedMode && !(baseline && mode === undefined)) + throw new Error(`natural ${scenario.name} mode was ${mode}`); + const resumed = start(['resume', '--no-observer-link', '--json', ...(scenario.extraArgs ?? []), '--data-dir', data, + rootRun.runId], root, resumeBin, resumeDaemon); + const timeout = setTimeout(() => resumed.child.kill('SIGKILL'), 150_000); + const result = await resumed.closed; + clearTimeout(timeout); + if (expectRefusal && mode === 'parallel') { + if (result.code === 0 || !/malformed authority metadata|unsupported.*parallel|refus/iu.test(resumed.output)) { + throw new Error(`parallel rollback did not refuse: ${resumed.output}`); + } + const refusedEffects = fs.existsSync(path.join(root, 'effects')) + ? fs.readFileSync(path.join(root, 'effects'), 'utf8') : ''; + if (refusedEffects !== before) throw new Error(`rollback admitted an effect: ${before} -> ${refusedEffects}`); + const final = start(['resume', '--no-observer-link', '--json', ...(scenario.extraArgs ?? []), '--data-dir', data, + rootRun.runId], root, finalBin, finalDaemon); + const finalResult = await final.closed; + if (finalResult.code !== 0) throw new Error(`head could not resume after rollback refusal: ${final.output}`); + } else if (expectBaseFailure && result.code !== 0 + && /run_admission_conflict/u.test(resumed.output)) { + const effects = fs.existsSync(path.join(root, 'effects')) + ? fs.readFileSync(path.join(root, 'effects'), 'utf8') : ''; + if (new Set(effects).size !== effects.length) throw new Error(`effect replay before base failure: ${effects}`); + console.log(JSON.stringify({ case: scenario.name, index, mode, outcome: 'base_failure', effects })); + passed = true; + return; + } else if (result.code !== 0) throw new Error(`resume failed: ${resumed.output}`); + const after = fs.existsSync(path.join(root, 'effects')) ? fs.readFileSync(path.join(root, 'effects'), 'utf8') : ''; + if (after.length === 0 || !after.includes('Z') || new Set(after).size !== after.length) + throw new Error(`effect replay: before=${before}, after=${after}`); + assertNoReplay(journals(root), rootRun.runId); + console.log(JSON.stringify({ case: scenario.name, index, mode, outcome: 'resumed', before, after })); + passed = true; + } finally { + if (initial?.child.exitCode === null && initial.child.signalCode === null) initial.child.kill('SIGKILL'); + killSweep(root); + if (passed || process.env.KEEP_FAILURE !== '1') fs.rmSync(root, { recursive: true, force: true }); + else console.error(`preserved failed fixture: ${root}`); + } +} + +for (const scenario of [...scenarios, ...baseScenarios, r5n].filter(value => selected.has(value.name))) { + for (let index = 0; index < delays.length; index++) await one(scenario, index); +} +console.log(JSON.stringify({ done: true, cases: [...selected], repetitions: delays.length, forced })); diff --git a/evidence/native-parallel-review7/s.mjs b/evidence/native-parallel-review7/s.mjs new file mode 100644 index 000000000..1de1d721f --- /dev/null +++ b/evidence/native-parallel-review7/s.mjs @@ -0,0 +1,164 @@ +// Scenario definitions for review 6 of flows#667. +const STALL = ` await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success');`; +const SURF = `import { flow } from '@relayflows/surface';`; +const flowSrc = (name, body, { fnExpr = false, header = '', pre = '' } = {}) => `${SURF} +${pre}export default flow('${name}'${header}, ${fnExpr ? 'async function(f)' : 'async f =>'} {${body} +${STALL} +}); +`; +const ADAPTER = `#!/usr/bin/env node +import fs from 'node:fs'; +if (process.argv[2] === 'auth') process.exit(0); +if (process.argv[2] === '--relayflows-adapter-v1') { + process.stdout.write('relayflows-agent-cli-v1\\n'); + let input = ''; + for await (const chunk of process.stdin) input += chunk; + if (input.trim() === '') process.exit(0); + const request = JSON.parse(input); + if (request.protocol !== 'relayflows-agent-cli-v1') process.exit(2); + process.stdout.write('relayflows-agent-cli-v1-execute\\n'); + fs.appendFileSync('/calls', 'x'); + process.stdout.write('{"message":"ok"}'); +} +`; +const HS = [['head', 'head'], ['base', 'base']]; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); + +// ---- review-5 fixtures, verbatim ---- +const P_BIND = `const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };`; +const P_HAND = `const Promise = { all: (xs) => new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.resolve(x).then(v => { out[i] = v; if (--n === 0) res(out); }, rej)); }) };`; +const CHAIN = `export { default } from './impl.ts';\n`; +const TAIL5 = ` await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`; +const G3 = ` await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]);\n`; +const NAT = ` const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);\n`; +const impl = (name, P, body) => `${SURF}\n${P}\nexport default flow('${name}', async f => {\n${body}${TAIL5}`; +const W2 = ` await f.run('sleep 0.2; printf W');\n`; +add({ name: 'Q5', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5', P_BIND, G3) } }); +add({ name: 'Q5n', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5n', P_BIND, NAT) } }); +add({ name: 'Q5h', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5h', P_HAND, G3) } }); +add({ name: 'Q5w', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5w', P_BIND, W2 + G3) } }); +add({ name: 'Q5wn', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5wn', P_BIND, W2 + NAT) } }); +add({ name: 'Q5wh', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5wh', P_HAND, W2 + G3) } }); +add({ name: 'Q6Pw', files: { + 'chain.flow.ts': `${SURF}\nimport './lib/patch.mjs';\nexport default flow('q6Pw', async f => {\n await f.run('sleep 0.3; printf W');\n${NAT}${TAIL5}`, + 'lib/patch.mjs': `const I = Function('return this')()['Pro' + 'mise']; +const intrinsicAll = I.all; +const t = setInterval(() => { if (I.all !== intrinsicAll) { clearInterval(t); I.all = function all(xs) { return intrinsicAll.call(I, xs); }; } }, 2); +t.unref(); +` } }); + +// ---- P-series (review 4) ---- +add({ name: 'P1', files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('p1', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1h', files: { 'chain.flow.ts': `${SURF}\n${P_HAND}\nexport default flow('p1h', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1c', files: { 'chain.flow.ts': `${SURF}\nclass Promise extends globalThis.Promise { static all(xs) { return globalThis.Promise.all.call(globalThis.Promise, xs); } }\nexport default flow('p1c', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1n', files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('p1n', async f => {\n${NAT}${TAIL5}` } }); +add({ name: 'P1bn', files: { 'chain.flow.ts': `${SURF}\nimport Promise from './bb/bluebird.js';\nexport default flow('p1bn', async f => {\n${NAT}${TAIL5}` }, bluebird: true }); +add({ name: 'P2', files: { 'chain.flow.ts': flowSrc('p2', ` + const warm = async () => {}; + await Promise.all([warm(), warm()]); + await f.run('printf X >> effects');`) } }); + +// ---- prior matrix ---- +add({ name: 'A1', files: { 'chain.flow.ts': flowSrc('a1', ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'B1', files: { 'chain.flow.ts': flowSrc('b1', ` + const left = async () => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`) } }); +const N2 = ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);`; +add({ name: 'N2', files: { 'chain.flow.ts': flowSrc('n2', N2) } }); +add({ name: 'C1e', files: { 'chain.flow.ts': flowSrc('c1e', ` + const background = (async () => { await f.run('printf X >> effects'); })(); + await new Promise(resolve => setTimeout(resolve, 300)); + await f.run('printf Y >> effects'); + await background;`) } }); +add({ name: 'G1', files: { 'chain.flow.ts': flowSrc('g1', ` + await Promise.race([f.run('printf A >> effects'), f.run('sleep 0.3; printf B >> effects')]); + await f.run('printf G >> effects');`) } }); +const LLM_OUT = `const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] };`; +add({ name: 'H1', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('h1', ` + ${LLM_OUT} + const left = async () => { await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'H2', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('h2', ` + const left = async () => { await f.agent('left', { task: 'left', model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.agent('right', { task: 'right', model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'K4', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('k4', ` + const g = arguments[0]; + ${LLM_OUT} + const left = async () => { await g.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await g.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, { fnExpr: true }) } }); +add({ name: 'I1', files: { + 'child.flow.ts': `${SURF} +export default flow('child', async (f, input) => { + await Promise.all([f.run('printf first'), f.run('printf second')]); + await f.run('printf ' + input.token + ' >> effects'); + f.done('success'); +}); +`, + 'chain.flow.ts': flowSrc('i1', ` + const left = async () => { await f.dispatch('child', { token: 'x' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.dispatch('child', { token: 'y' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, { header: `, { use: ['./child.flow.ts'] }` }) } }); +add({ name: 'K1', files: { 'chain.flow.ts': flowSrc('k1', ` + const pause = () => sleep(300); + const late = async () => { await Promise.all([pause(), pause()]); await f.run('printf L >> effects'); }; + const fast = async () => { await f.run('sleep 0.2; printf A >> effects'); await f.run('sleep 0.2; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([fast(), late()]);`, { pre: `import { setTimeout as sleep } from 'node:timers/promises';\n` }) } }); +add({ name: 'K2b', files: { 'chain.flow.ts': flowSrc('k2b', ` + const a = async () => { await f.run('sleep 0.3; printf A >> effects'); signal(); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); signal(); }; + const c = async () => { await Promise.all([ready(), ready()]); await f.run('printf C >> effects'); }; + await Promise.all([a(), b(), c()]);`, { pre: `let signal; const first = new Promise(r => { signal = r; });\nconst ready = async () => { await first; };\n` }) } }); +add({ name: 'K3', files: { 'chain.flow.ts': flowSrc('k3', ` + const out = []; + const a = async () => { out.push(await f.run('sleep 0.3; printf a')); }; + const b = async () => { out.push(await f.run('sleep 0.1; printf b')); }; + await Promise.all([a(), b()]); + await f.run('printf ' + out.join('') + ' >> effects');`) }, expect: r => /^(ab|ba)Z$/.test(r.effects) }); +add({ name: 'K5b', files: { 'chain.flow.ts': flowSrc('k5b', ` + const tree = async (d) => { if (d === 0) return; await Promise.all([tree(d - 1), tree(d - 1)]); }; + await f.run('printf A >> effects'); + await tree(12); + try { await f.run('printf B >> effects'); } catch (e) { void e; }`) }, expect: r => r.effects.includes('B') }); +add({ name: 'K13b', files: { 'chain.flow.ts': `${SURF} +export default flow('k13b', async f => { + const b = async () => { await f.run('sleep 0.4; printf B >> effects'); await f.run('printf C >> effects'); }; + const a = async () => { await f.run('sleep 0.1; printf A >> effects'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); f.done('success'); }; + await Promise.all([b(), a()]); +}); +` } }); + +export default S; +export { STALL, SURF, flowSrc, ADAPTER, HS, P_BIND, P_HAND, CHAIN, TAIL5, G3, NAT, impl, W2, add }; diff --git a/evidence/native-parallel-review7/s2.mjs b/evidence/native-parallel-review7/s2.mjs new file mode 100644 index 000000000..79984a7ac --- /dev/null +++ b/evidence/native-parallel-review7/s2.mjs @@ -0,0 +1,181 @@ +// Review-6 attack scenarios. +import { STALL, SURF, flowSrc, HS, P_BIND, G3, NAT, TAIL5, W2, impl } from './s.mjs'; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); +const FORCED = [['forced', 'forced'], ['base', 'base']]; + +// ---------- entry-file rule bypass (natural, unforced) ---------- +// The entry defines `flow` locally; the screen sees `export default flow()`, +// but the loaded definition is impl.ts's, whose module scope binds Promise. +const BYPASS = `import impl from './impl.ts'; +const flow = (..._args: unknown[]) => impl; +export default flow('decoy', async f => { + await f.run('printf decoy'); +}); +`; +// A spec-exact Promise.all built only from registered combinators; its one +// unregistered join is a *member* of a registered all. +const P_WRAP = `const Promise = { all: (xs) => globalThis.Promise.all([new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.all([x]).then(([v]) => { out[i] = v; if (--n === 0) res(out); }, rej)); })]).then(([v]) => v) };`; +const P_RACE = `const Promise = { all: (xs) => globalThis.Promise.race(xs) };`; +add({ name: 'R1', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1', P_WRAP, G3) } }); +add({ name: 'R1w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1w', P_WRAP, W2 + G3) } }); +add({ name: 'R1wn', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1wn', P_WRAP, W2 + NAT) } }); +add({ name: 'R2w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r2w', P_RACE, W2 + G3) } }); +add({ name: 'R3w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r3w', P_BIND, W2 + G3) } }); +add({ name: 'R3', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r3', P_BIND, G3) } }); +// same bypass, `flow` imported from a local helper module +add({ name: 'R4w', files: { + 'chain.flow.ts': `import { flow } from './wrap.ts'; +export default flow('decoy', async f => { + await f.run('printf decoy'); +}); +`, + 'wrap.ts': `import impl from './impl.ts';\nexport const flow = (..._args: unknown[]) => impl;\n`, + 'impl.ts': impl('r4w', P_WRAP, W2 + G3) } }); +// Without the bypass the wrapped all is serial (control) +add({ name: 'R1c', files: { 'chain.flow.ts': `${SURF}\n${P_WRAP}\nexport default flow('r1c', async f => {\n${W2}${G3}${TAIL5}` } }); + +// ---------- runtime rule with eligibility forced on ---------- +const forced = (name, body, pre = '') => ({ name, sides: FORCED, files: { 'chain.flow.ts': flowSrc(name.toLowerCase(), body, { pre }) } }); +S.push(forced('FRrace', ` + await f.run('sleep 0.2; printf W'); + await Promise.race([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRany', ` + await f.run('sleep 0.2; printf W'); + await Promise.any([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRnestrace', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([Promise.race([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]), f.run('printf C')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRdefer', ` + await f.run('sleep 0.2; printf W'); + let signal; const first = new Promise(r => { signal = r; }); + const a = async () => { await f.run('sleep 0.3; printf A >> effects'); signal(); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); signal(); }; + const c = async () => { await Promise.all([first, f.run('printf c0')]); await f.run('printf C >> effects'); }; + await Promise.all([a(), b(), c()]);`)); +S.push(forced('FRthen', ` + await f.run('sleep 0.2; printf W'); + const sa = f.run('sleep 0.3; printf A'); + const th = { then: (r, j) => sa.then(r, j) }; + await Promise.all([th, f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRsettled', ` + await f.run('sleep 0.2; printf W'); + await Promise.allSettled([f.run('sleep 0.3; exit 3', { onNonZero: 'record' }), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRset', ` + await f.run('sleep 0.2; printf W'); + await Promise.all(new Set([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')])); + await f.run('printf X >> effects');`)); +S.push(forced('FRgen', ` + await f.run('sleep 0.2; printf W'); + function* g() { yield f.run('sleep 0.3; printf A'); yield f.run('sleep 0.1; printf B'); } + await Promise.all(g()); + await f.run('printf X >> effects');`)); +S.push(forced('FRthenagg', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]).then(v => v); + await f.run('printf X >> effects');`)); +S.push(forced('FRmicro', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); await new Promise(r => queueMicrotask(r)); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await new Promise(r => process.nextTick(r)); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await new Promise(r => setImmediate(r)); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects');`)); +S.push(forced('FRcatch', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.1; printf A'); throw new Error('a'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); throw new Error('b'); }; + try { await Promise.all([a(), b()]); } catch (e) { void e; } + await f.run('sleep 0.5; printf X >> effects');`)); +S.push(forced('FRfinally', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { try { await f.run('sleep 0.3; printf A'); } finally { await f.run('printf F >> effects'); } }; + const b = async () => { await f.run('sleep 0.1; printf B'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`)); +S.push(forced('FRiter', ` + await f.run('sleep 0.2; printf W'); + const ps = [f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]; + for await (const v of ps) { void v; } + await f.run('printf X >> effects');`)); +// forced wrapped-all directly in the entry (no bypass needed) +S.push({ name: 'FRwrap', sides: FORCED, files: { 'chain.flow.ts': `${SURF}\n${`const PW = ${P_WRAP.slice('const Promise = '.length).replace(/;$/, '')};`}\nexport default flow('frwrap', async f => {\n${W2} await PW.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]);\n${TAIL5}` } }); + +// ---------- entry-file rule probes (natural) ---------- +add({ name: 'E1factory', files: { 'chain.flow.ts': `${SURF} +const make = () => flow('e1', async f => { +${NAT}${TAIL5.replace(/\}\);\n$/, '});')} +export default make(); +` } }); +add({ name: 'E2helper', files: { + 'chain.flow.ts': flowSrc('e2', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await pause(); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`, { pre: `import { pause } from './helper.ts';\n` }), + 'helper.ts': `export const pause = async () => { await new Promise(r => setTimeout(r, 50)); };\n` } }); +add({ name: 'E3dyn', files: { + 'chain.flow.ts': flowSrc('e3', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await import('./helper.ts'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`), + 'helper.ts': `export const x = 1;\n` } }); +add({ name: 'E4json', files: { + 'chain.flow.ts': flowSrc('e4', N2body(), { pre: `import data from './d.json' with { type: 'json' };\nvoid data;\n` }), + 'd.json': `{"k":"v"}` } }); +add({ name: 'E4jsonuse', files: { + 'chain.flow.ts': flowSrc('e4u', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf ' + data.k + ' >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`, { pre: `import data from './d.json' with { type: 'json' };\n` }), + 'd.json': `{"k":"a"}` } }); +add({ name: 'E5ns', files: { 'chain.flow.ts': `${SURF} +import * as surface from '@relayflows/surface'; +export default surface.flow('e5', async f => { +${NAT}${TAIL5}` } }); +function N2body() { return ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);`; } + +// ---------- upgrade / rollback ---------- +const UP = [['p2050', 'head'], ['p2051', 'head']]; +const CI4 = flowSrc('ci4', ` + await f.run('printf a >> effects'); + await Promise.resolve(f.run('printf b >> effects')); + await Promise.all([f.run('printf c >> effects'), f.run('printf d >> effects')]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf y >> effects', { timeout: '5m' }); + await Promise.all([Promise.resolve(f.run('printf e >> effects')), Promise.resolve(f.run('printf g >> effects'))]);`); +const CI5 = flowSrc('ci5', ` + await f.run('printf a >> effects'); + await Promise.resolve(f.run('printf b >> effects')); + await Promise.all([f.run('printf c >> effects'), f.run('printf d >> effects')]); + await f.run('printf e >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf y >> effects', { timeout: '5m' }); + await Promise.all([Promise.resolve(f.run('printf g >> effects')), Promise.resolve(f.run('printf h >> effects'))]);`); +const A1b = ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`; +const B1b = ` + const left = async () => { await f.run('printf A'); await f.run('printf B'); await f.run('printf L >> effects'); }; + const right = async () => { await Promise.all([f.run('printf C'), f.run('printf D')]); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`; +for (const [n, src] of [['CI4', CI4], ['CI5', CI5], ['A1', flowSrc('a1', A1b)], ['B1', flowSrc('b1', B1b)], ['N2', flowSrc('n2', N2body())]]) { + S.push({ name: 'U' + n, sides: UP, files: { 'chain.flow.ts': src } }); + S.push({ name: 'RB' + n, sides: [['head', 'p2050'], ['head', 'p2051']], secondResume: 'head', + files: { 'chain.flow.ts': src } }); +} + +export default S; diff --git a/evidence/native-parallel-review7/sdk-build.log b/evidence/native-parallel-review7/sdk-build.log new file mode 100644 index 000000000..1647e84a1 --- /dev/null +++ b/evidence/native-parallel-review7/sdk-build.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 build +> tsc && node scripts/make-cli-executable.mjs diff --git a/evidence/native-parallel-review7/sdk-dist-hashes.log b/evidence/native-parallel-review7/sdk-dist-hashes.log new file mode 100644 index 000000000..3cee9e93b --- /dev/null +++ b/evidence/native-parallel-review7/sdk-dist-hashes.log @@ -0,0 +1,8 @@ +4f2f11a4ae67e3389eaf869b9fce97a74e17898ec7767153641fd6956767f2e5 packages/sdk/dist/authored-parallel-eligibility.js +28b2db372abff09f98e504ed3881dc02c2c8b858949213bef987150978f68d57 packages/sdk/dist/authored-parallel-body.js +d6938695ad30bbb46ee2b0d44f14ac079384f6fd3b35bb07f1549a05cca724c0 packages/sdk/dist/authored-flow-lifecycle.js +0ae20fb5ea97f98da49fd93ec933c6098e5d33a0bfa7835bbf491b0699504b0b packages/sdk/dist/authored-step-graph.js +4f2f11a4ae67e3389eaf869b9fce97a74e17898ec7767153641fd6956767f2e5 /bench/sdk-head/dist/authored-parallel-eligibility.js +28b2db372abff09f98e504ed3881dc02c2c8b858949213bef987150978f68d57 /bench/sdk-head/dist/authored-parallel-body.js +d6938695ad30bbb46ee2b0d44f14ac079384f6fd3b35bb07f1549a05cca724c0 /bench/sdk-head/dist/authored-flow-lifecycle.js +0ae20fb5ea97f98da49fd93ec933c6098e5d33a0bfa7835bbf491b0699504b0b /bench/sdk-head/dist/authored-step-graph.js diff --git a/evidence/native-parallel-review7/sdk-focused-unit.log b/evidence/native-parallel-review7/sdk-focused-unit.log new file mode 100644 index 000000000..7e50bb5ea --- /dev/null +++ b/evidence/native-parallel-review7/sdk-focused-unit.log @@ -0,0 +1,17 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-body.test.ts (3 tests) 8ms + ✓ tests/authored-parallel-eligibility.test.ts (9 tests) 19ms + ✓ tests/communication-feature-secret-scoping.test.ts (1 test) 29ms + ✓ tests/authored-step-graph.test.ts (27 tests) 559ms + ✓ tests/authored-step-secrets.test.ts (1 test) 14ms + ✓ tests/worker-feature-secret-scoping.test.ts (2 tests) 689ms + ✓ agent worker uses the negotiated daemon capability for its real child 357ms + ✓ llm worker uses the negotiated daemon capability for its real child 332ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (44 tests) 564ms + + Test Files 7 passed (7) + Tests 87 passed (87) + Start at 23:51:32 + Duration 4.33s (transform 1.93s, setup 106ms, collect 12.07s, tests 1.88s, environment 1ms, prepare 581ms) diff --git a/evidence/native-parallel-review7/sdk-npm-ci.log b/evidence/native-parallel-review7/sdk-npm-ci.log new file mode 100644 index 000000000..d0206fcd4 --- /dev/null +++ b/evidence/native-parallel-review7/sdk-npm-ci.log @@ -0,0 +1,16 @@ +npm warn deprecated whatwg-encoding@3.1.1: Use @exodus/bytes instead for a more spec-conformant and faster implementation + +added 195 packages, and audited 196 packages in 14s + +65 packages are looking for funding + run `npm fund` for details + +13 vulnerabilities (6 moderate, 4 high, 3 critical) + +To address issues that do not require attention, run: + npm audit fix + +To address all issues (including breaking changes), run: + npm audit fix --force + +Run `npm audit` for details. diff --git a/evidence/native-parallel-review7/sdk-secrets-live.log b/evidence/native-parallel-review7/sdk-secrets-live.log new file mode 100644 index 000000000..f3892a75a --- /dev/null +++ b/evidence/native-parallel-review7/sdk-secrets-live.log @@ -0,0 +1,11 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-step-secrets-live.test.ts (2 tests) 2696ms + ✓ an authored shell child sees a delivered token only when its own f.run grants it 1144ms + ✓ parallel authored shell children keep their own secret grants 1551ms + + Test Files 1 passed (1) + Tests 2 passed (2) + Start at 23:51:38 + Duration 3.90s (transform 396ms, setup 9ms, collect 985ms, tests 2.70s, environment 0ms, prepare 60ms) diff --git a/evidence/native-parallel-review7/sdk-typecheck-tests.log b/evidence/native-parallel-review7/sdk-typecheck-tests.log new file mode 100644 index 000000000..3b1c199e9 --- /dev/null +++ b/evidence/native-parallel-review7/sdk-typecheck-tests.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck:tests +> tsc -p tsconfig.tests.json diff --git a/evidence/native-parallel-review7/sdk-typecheck.log b/evidence/native-parallel-review7/sdk-typecheck.log new file mode 100644 index 000000000..b41e9a5e0 --- /dev/null +++ b/evidence/native-parallel-review7/sdk-typecheck.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json diff --git a/evidence/native-parallel-review7/timing.mjs b/evidence/native-parallel-review7/timing.mjs new file mode 100644 index 000000000..666ff2b6f --- /dev/null +++ b/evidence/native-parallel-review7/timing.mjs @@ -0,0 +1,96 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn, execFileSync } from 'node:child_process'; + +const head = '/bench/node_modules/@relayflows/sdk/dist/cli.js'; +const base = '/bench/sdk-base-2051/dist/cli.js'; +const daemon = '/bench/relayflowd'; +const source = `import { flow } from '@relayflows/surface'; +export default flow('native-timing', async f => { + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('sleep 0.1; printf a'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); await f.run('sleep 0.1; printf b'); }; + const c = async () => { await f.run('sleep 0.3; printf C'); await f.run('sleep 0.1; printf c'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf Z'); + f.done('success'); +}); +`; +const sql = `import sqlite3,json,sys,glob,os +out=[] +for file in glob.glob(sys.argv[1]+'/runs/*.sqlite3'): + c=sqlite3.connect(file) + rows=c.execute("select entry_type,at_ms,payload from entries where entry_type in ('run.spawned','step.attempt.started','step.completed') order by seq").fetchall() + spawn=next((json.loads(p) for t,_,p in rows if t=='run.spawned'),None) + spec=spawn.get('spec') if spawn else None + step=(spec or {}).get('steps',[{}])[0] + if not step.get('command'): continue + starts=[at for t,at,_ in rows if t=='step.attempt.started'] + dones=[at for t,at,_ in rows if t=='step.completed'] + if starts and dones: out.append({'command':step['command'],'start':starts[0],'done':dones[-1]}) +print(json.dumps(out))`; +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + +async function run(kind, number) { + const root = fs.mkdtempSync(`/bench/timing-${kind}-${number}-`); + const data = path.join(root, 'data'); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync('/bench/node_modules', path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'chain.flow.ts'), source); + const binary = kind === 'base' ? base : head; + const start = performance.now(); + const child = spawn(process.execPath, [binary, 'run', '--no-observer-link', '--json', + '--data-dir', data, path.join(root, 'chain.flow.ts'), '--input', '{}'], { + cwd: root, env: { ...process.env, RELAYFLOWD_BIN: daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let output = ''; + child.stdout.on('data', chunk => { output += chunk; }); + child.stderr.on('data', chunk => { output += chunk; }); + const result = await new Promise(resolve => child.once('close', (code, signal) => resolve({ code, signal }))); + const cliMs = performance.now() - start; + try { + if (result.code !== 0) throw new Error(`${kind} run failed: ${output}`); + const rows = JSON.parse(execFileSync('python3', ['-c', sql, data], { encoding: 'utf8' })); + const route = rows.filter(row => /^sleep 0\.3; printf [ABC]$/u.test(row.command)); + const dependent = rows.filter(row => /^sleep 0\.1; printf [abc]$/u.test(row.command)); + if (route.length !== 3 || dependent.length !== 3) throw new Error(`missing timing steps: ${JSON.stringify(rows)}`); + const routesOverlap = Math.max(...route.map(row => row.start)) < Math.min(...route.map(row => row.done)); + const dependentsOverlap = Math.max(...dependent.map(row => row.start)) < Math.min(...dependent.map(row => row.done)); + return { kind, number, cliMs, bodyMs: Math.max(...dependent.map(row => row.done)) + - Math.min(...route.map(row => row.start)), routeSpreadMs: Math.max(...route.map(row => row.start)) + - Math.min(...route.map(row => row.start)), routesOverlap, dependentsOverlap }; + } finally { + try { + const { pid } = JSON.parse(fs.readFileSync(path.join(data, 'connection.json'), 'utf8')); + process.kill(pid, 'SIGKILL'); + } catch { /* The daemon may already have exited. */ } + await sleep(30); + fs.rmSync(root, { recursive: true, force: true }); + } +} + +const results = []; +await run('base', -1); +await run('head', -1); +for (let number = 0; number < 10; number++) { + const order = number % 2 === 0 ? ['base', 'head'] : ['head', 'base']; + for (const kind of order) { + const result = await run(kind, number); + results.push(result); + console.log(JSON.stringify(result)); + } +} +const percentile = (values, p) => { + const ordered = values.toSorted((a, b) => a - b); + return ordered[Math.ceil(p * ordered.length) - 1]; +}; +for (const kind of ['base', 'head']) { + const set = results.filter(result => result.kind === kind); + console.log(JSON.stringify({ summary: kind, samples: set.length, + cliP50Ms: percentile(set.map(result => result.cliMs), 0.5), + cliP95Ms: percentile(set.map(result => result.cliMs), 0.95), + bodyP50Ms: percentile(set.map(result => result.bodyMs), 0.5), + bodyP95Ms: percentile(set.map(result => result.bodyMs), 0.95), + routeSpreadP50Ms: percentile(set.map(result => result.routeSpreadMs), 0.5), + routesOverlap: set.filter(result => result.routesOverlap).length, + dependentsOverlap: set.filter(result => result.dependentsOverlap).length })); +} diff --git a/evidence/native-parallel-review7/workspace-resolution.log b/evidence/native-parallel-review7/workspace-resolution.log new file mode 100644 index 000000000..06d7610a0 --- /dev/null +++ b/evidence/native-parallel-review7/workspace-resolution.log @@ -0,0 +1,4 @@ +drwxr-xr-x 174 khaliqgant staff 5950 Oct 16 23:53 node_modules +drwxr-xr-x 4 khaliqgant staff 238 Oct 16 23:53 node_modules/@relayflows/surface +/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/@relayflows/surface/dist/index.js +/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/@relayflows/surface diff --git a/evidence/native-parallel-review8/COMMANDS.md b/evidence/native-parallel-review8/COMMANDS.md new file mode 100644 index 000000000..8e4a70a30 --- /dev/null +++ b/evidence/native-parallel-review8/COMMANDS.md @@ -0,0 +1,66 @@ +# Literal verification commands + +Commands below were run from the Flows worktree root unless a section says +`packages/sdk`. Each redirection is to the complete stdout/stderr log in this +directory. The existing named volume was prepared by the previous +[review-6 evidence](../native-parallel-review7/COMMANDS.md): native arm64 +daemon, current-head and published-2.0.51 SDK builds, and published 2.0.50 +SDK/daemon. This run copied the rebuilt `packages/sdk/dist` and exact fixture +files into that volume with `docker cp`, then linked `/w/head/packages/sdk` to +the candidate copy and `/w/base/packages/sdk` to the published 2.0.51 copy. +The corrected `/w/p2051/node_modules/@relayflows/sdk` link points to +`/w/sdk-base-2051`; `published-2051-pin.log` records its hash and version. + +## Exact review-7 and prior fixtures + +```sh +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s7.mjs all --reps=6 --conc=3 --tag=r8s7head --sides=head:head > evidence/native-parallel-review8/h7-s7-head.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s7.mjs PL3sub,PL4ctor,SEC7 --reps=6 --conc=3 --tag=r8basefail --sides=base:base > evidence/native-parallel-review8/h7-base-fail-controls.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s2.mjs R1,R1w,R1wn,R2w,R3,R3w,R4w,R1c --reps=6 --conc=3 --tag=r8prior-r --sides=head:head > evidence/native-parallel-review8/h7-prior-r.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s4.mjs R5n --reps=6 --conc=3 --tag=r8prior-r5n --sides=head:head > evidence/native-parallel-review8/h7-prior-r5n.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s.mjs Q5,Q5n,Q5h,Q5w,Q5wn,Q5wh,Q6Pw --reps=6 --conc=3 --tag=r8prior-q --sides=head:head > evidence/native-parallel-review8/h7-prior-q.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s2.mjs E1factory,E2helper,E3dyn,E4json,E4jsonuse,E5ns --reps=6 --conc=3 --tag=r8prior-e --sides=head:head > evidence/native-parallel-review8/h7-prior-e.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s.mjs P1,P1h,P1c,P1n,P1bn,P2,C1e,G1,H1,H2,K4,I1,K2b,K3,K5b,K13b --reps=6 --conc=3 --tag=r8prior-p --sides=head:head > evidence/native-parallel-review8/h7-prior-p.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s.mjs I1 --reps=6 --conc=3 --tag=r8i1base --sides=base:base > evidence/native-parallel-review8/h7-i1-base-control.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s.mjs K1 --reps=6 --conc=3 --tag=r8k1 > evidence/native-parallel-review8/h7-k1-controls.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s.mjs A1,B1,N2 --reps=6 --conc=3 --tag=r8prior-native --sides=head:head > evidence/native-parallel-review8/h7-prior-native.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s2.mjs FRrace,FRany,FRnestrace,FRdefer,FRthen,FRsettled,FRset,FRgen,FRthenagg,FRmicro,FRcatch,FRfinally,FRiter,FRwrap --reps=6 --conc=3 --tag=r8prior-fr --sides=forced:forced > evidence/native-parallel-review8/h7-prior-fr.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s2.mjs FRrace,FRany,FRnestrace,FRdefer,FRthen,FRsettled,FRset,FRgen,FRthenagg,FRmicro,FRcatch,FRfinally,FRiter,FRwrap --reps=6 --conc=3 --tag=r8prior-deep --sides=deep:deep > evidence/native-parallel-review8/h7-prior-deep.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s3.mjs FB1,FB2,FB3,FB3c,FB4,FB6,FB7,FB8 --reps=6 --conc=3 --tag=r8prior-fb --sides=forced:forced > evidence/native-parallel-review8/h7-prior-fb.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s3.mjs S1,S2missing --reps=6 --conc=3 --tag=r8secrets-prior > evidence/native-parallel-review8/h7-prior-secrets.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s2.mjs UCI4,UCI5,UA1,UB1,UN2 --reps=6 --conc=3 --tag=r8upgrade-pinned > evidence/native-parallel-review8/h7-upgrade-pinned.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings h7.mjs s2.mjs RBCI4,RBCI5,RBA1,RBB1,RBN2 --reps=6 --conc=3 --tag=r8rollback-pinned > evidence/native-parallel-review8/h7-rollback-pinned.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node timing7.mjs 10 > evidence/native-parallel-review8/h7-timing.log 2>&1 +docker run --rm --init --platform linux/arm64 -v ms-flows-parallel-r7:/w -w /w/review8 node:22-trixie node --no-warnings probe.mjs > evidence/native-parallel-review8/h7-probe.log 2>&1 +``` + +The `forced` copy changes only `parallelRunEligible` to return true. The `deep` +copy additionally changes `parallelBodySyntaxEligible` to return true. Both +were scratch `dist` copies inside the volume; the worktree source and built +candidate were untouched. The F5 script makes its own scratch copy. + +## Mutation proofs and SDK checks + +```sh +python3 evidence/native-parallel-review8/mutation-proof.py > evidence/native-parallel-review8/mutation-proof.log 2>&1 +bash evidence/native-parallel-review8/f5-mutation-proof.sh > evidence/native-parallel-review8/f5-mutation-proof.log 2>&1 +``` + +The following commands ran from `packages/sdk`: + +```sh +npm run build > ../../evidence/native-parallel-review8/sdk-build.log 2>&1 +npm run typecheck > ../../evidence/native-parallel-review8/sdk-typecheck.log 2>&1 +npm run typecheck:tests > ../../evidence/native-parallel-review8/sdk-typecheck-tests.log 2>&1 +npx vitest run tests/authored-parallel-body.test.ts tests/authored-parallel-eligibility.test.ts tests/authored-step-graph.test.ts tests/authored-flow-lifecycle-executor.test.ts tests/authored-root.test.ts tests/authored-step-secrets.test.ts tests/communication-feature-secret-scoping.test.ts tests/worker-feature-secret-scoping.test.ts > ../../evidence/native-parallel-review8/sdk-focused-unit.log 2>&1 +RELAYFLOWD_BIN="$HOME/.relayflows-toolchain/target/ms-step-secrets/debug/relayflowd" npx vitest run tests/authored-step-secrets-live.test.ts > ../../evidence/native-parallel-review8/sdk-secrets-live.log 2>&1 +``` + +The final candidate and published-base identity checks ran from the worktree +root: + +```sh +shasum -a 256 packages/sdk/dist/authored-flow-executor.js packages/sdk/dist/authored-flow-lifecycle.js packages/sdk/dist/authored-parallel-body.js packages/sdk/dist/authored-parallel-eligibility.js > evidence/native-parallel-review8/sdk-dist-hashes.log +docker run --rm --platform linux/arm64 -v ms-flows-parallel-r7:/w node:22-trixie sha256sum /w/sdk-head/dist/authored-flow-executor.js /w/sdk-head/dist/authored-flow-lifecycle.js /w/sdk-head/dist/authored-parallel-body.js /w/sdk-head/dist/authored-parallel-eligibility.js >> evidence/native-parallel-review8/sdk-dist-hashes.log +docker run --rm --platform linux/arm64 -v ms-flows-parallel-r7:/w node:22-trixie sh -c 'sha256sum /w/p2051/node_modules/@relayflows/sdk/dist/authored-root.js /w/sdk-base-2051/dist/authored-root.js /w/sdk-head/dist/authored-root.js; node -p "require(\"/w/p2051/node_modules/@relayflows/sdk/package.json\").version"; node -p "require(\"/w/p2051/node_modules/@relayflows/surface/package.json\").version"' > evidence/native-parallel-review8/published-2051-pin.log 2>&1 +``` diff --git a/evidence/native-parallel-review8/README.md b/evidence/native-parallel-review8/README.md new file mode 100644 index 000000000..52af565b5 --- /dev/null +++ b/evidence/native-parallel-review8/README.md @@ -0,0 +1,96 @@ +# Review 7 repair evidence for #667 + +This bundle tests the six review-7 fixes on the SDK working tree above +`e3503c08`. The production source changes are SDK-only. The Linux arm64 +`relayflowd` in the named Docker volume is the prior branch build; the kernel +source is unchanged. The rebuilt candidate SDK `dist` in that volume matches +the final local build byte-for-byte for the four changed runtime modules +(`sdk-dist-hashes.log`). Published 2.0.50 and 2.0.51 SDKs and Surface packages +were used for compatibility checks. `published-2051-pin.log` shows that the +2.0.51 side differs from the candidate and matches the published base copy. + +All Docker runs used native arm64 `node:22-trixie`, one container at a time, +with fixtures and journals in the `ms-flows-parallel-r7` named volume. No Paris +Drive paths were bind-mounted. `COMMANDS.md` records the literal test commands +and names their complete captured stdout/stderr logs. `h7.mjs`, `s7.mjs`, +`probe.mjs`, and `timing7.mjs` are the reviewer's exact code fences from +`~/relay-briefs/ms-flows-parallel-667-review7-fixtures.md`. The prior `s.mjs`, +`s2.mjs`, `s3.mjs`, and `s4.mjs` are the review-6 generators, including its +recorded E1factory and rollback-expectation patch to `s2.mjs`. +`raw-logs.tar.gz` preserves the captured log bytes; the browsable `.log` files +have trailing whitespace and extra blank lines trimmed for `git diff --check`. + +## Review-7 fixes + +| Fix | Check and result | +| --- | --- | +| F1: parenthesized branch calls | The grammar and instrumenter share one unwrap helper. PAR1/PAR2 resumed 6/6 in parallel mode; `probe.mjs` reports two wrapped calls for each. | +| F2: certifier name capture | A body referencing `__certifyParallelBranch` uses serial mode. HY1/HY1s/HY2 completed 6/6 without duplicate effects. | +| F3: preloaded Promise patches | New roots use serial mode if native intrinsics or preload flags cannot be certified. PL1r5, PL2then, PL7mid, PL7neutral, PL6child, PL6late completed 6/6 in serial mode without replay. | +| F4: unknown combinator members | A member with no owned step or tracked promise id is refused before its `then` is read. Deep-forced FRthen failed before X in 6/6, with no replay. A proxy-thenable unit test proves its getter is not invoked. | +| F5: prompt root failure | The executor races the body against a violation signal. With only preload admission deliberately bypassed, PL7mid failed promptly in 6/6; removing the race hung until the shortened harness timeout, then byte-for-byte restoration restored prompt failure. | +| F6: species and constructor | The snapshot includes `Promise[Symbol.species]`, `Promise.prototype.constructor`, their descriptors, and `Function.prototype.toString`. Targeted tests catch each replacement. | + +The exact `s7.mjs` head matrix ran 27 scenarios × 6 kill offsets = 162 runs +(`h7-s7-head.log`). It reported no replay. Twenty-four scenarios met their +fixture expectation in all six runs. The remaining three—PL3sub, PL4ctor, +SEC7—had the **same code and effects on published 2.0.51** in the six-run +base controls (`h7-base-fail-controls.log`). PL3sub and PL4ctor write `abcXZ` +but exit 1 on both sides. SEC7 omits `RELAY_SECRET_ENV_NAMES`; its ungranted +children see the ambient token on both sides, so the reviewer's scoping +expectation fails. SEC7m, with the manifest, passed 6/6 in parallel mode with +only the granted children receiving the token. SEC7miss refused before a child. + +## Prior replay and compatibility gate + +| Matrix | Result | Log | +| --- | --- | --- | +| R1/R1w/R1wn/R2w/R3/R3w/R4w/R1c, plus R5n | 54/54 clean, serial | `h7-prior-r.log`, `h7-prior-r5n.log` | +| Q5/Q5n/Q5h/Q5w/Q5wn/Q5wh/Q6Pw | 42/42 clean, serial | `h7-prior-q.log` | +| E1factory/E2helper/E3dyn/E4json/E4jsonuse/E5ns | 36/36 clean, serial | `h7-prior-e.log` | +| P/C/G/H/K/I prior shapes | 90/96 pass the reviewer's checker; I1's six flags are identical on base | `h7-prior-p.log`, `h7-i1-base-control.log` | +| A1/B1/N2 | 18/18 clean, parallel | `h7-prior-native.log` | +| Forced eligibility FR ×14 | 84/84 failed closed before any effect, zero replay | `h7-prior-fr.log` | +| Deep-forced FR ×14 | 84/84 no replay; FRthen now refuses | `h7-prior-deep.log` | +| Forced FB guards | FB1/2/3/3c/4/6/8 meet their 6/6 expectations | `h7-prior-fb.log` | +| Published 2.0.50/2.0.51 → candidate, five shapes | 60/60 clean | `h7-upgrade-pinned.log` | +| Candidate → published 2.0.50/2.0.51, five shapes | 60/60 safe; 36 parallel refusals, 24 accepted serial roots | `h7-rollback-pinned.log` | +| Prior S1/S2missing secret cases, head and base | 24/24 match | `h7-prior-secrets.log` | + +I1's checker flags two identical dispatched child completion-marker commands +as a replay. Head and published base both finish `xyLRZ` 6/6 with no repeated +effect letter; the same false positive is documented by review 7. K1 is an +existing base failure: both head and base report `run_admission_conflict` +6/6, effects `ABLC`, no replay (`h7-k1-controls.log`). FB7 is an artificial +forced-eligibility case with a module-level Promise binding; it completes +`XZ` without replay, but the fixture expects refusal. Natural admission keeps +that source serial. For rollback, the reviewer's RBCI4/RBCI5 predicate expects +the old CLI to refuse, while these are serial v2 roots that the old CLIs +correctly accept; all 24 complete once with no replay. + +## Native overlap and focused checks + +The exact review-7 timing driver alternated ten warm head/base pairs. Three +300 ms routes each had a 100 ms dependent. Shell timestamps show body p50 +460 ms at head versus 1,376 ms on published base; CLI p50 was 1,128 versus +1,860 ms. Route start spread p50 was 5 versus 660 ms. Routes and dependents +overlapped in 10/10 head runs and 0/10 base runs (`h7-timing.log`). + +`npm run build`, `npm run typecheck`, `npm run typecheck:tests`, eight focused +Vitest files (130 tests), and both local-daemon secret live tests passed. The +source-faithful authored-root fixture retains its parallel expectation; a +separate synthetic-source fixture checks serial fallback. Logs are +`sdk-build.log`, `sdk-typecheck.log`, `sdk-typecheck-tests.log`, +`sdk-focused-unit.log`, and `sdk-secrets-live.log`. A real `npm ci` and +directory-based SDK dependencies were already recorded in the previous +[review-6 evidence](../native-parallel-review7/README.md). + +`mutation-proof.py` temporarily removed F1, F2, F3, F4, and F6 guards. Each +selected assertion failed, the original source was restored byte-for-byte +with a matching SHA-256, and the assertion passed. `mutation-proof.log` plus +the `mut-*-fail.log`/`mut-*-pass.log` files capture each command and output. +`f5-mutation-proof.sh` used a scratch SDK and a shortened copy of the exact +harness (`h7-f5.mjs`, changing only the SDK path and stall deadline): 6/6 +prompt failures before mutation, 1/1 timeout with the race removed, and 6/6 +prompt failures after restoring the compiled module byte-for-byte. Its logs +and matching hashes are in `f5-*.log` and `h7-f5-*.log`. diff --git a/evidence/native-parallel-review8/f5-mutated.log b/evidence/native-parallel-review8/f5-mutated.log new file mode 100644 index 000000000..f774509df --- /dev/null +++ b/evidence/native-parallel-review8/f5-mutated.log @@ -0,0 +1,2 @@ +561: await bodyPromise; +563: await bodyPromise; diff --git a/evidence/native-parallel-review8/f5-mutation-proof.log b/evidence/native-parallel-review8/f5-mutation-proof.log new file mode 100644 index 000000000..971712b9f --- /dev/null +++ b/evidence/native-parallel-review8/f5-mutation-proof.log @@ -0,0 +1,4 @@ +SUMMARY PL7mid deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY PL7mid deep>deep ok=0/1 replay=0 fresh=1 mode=parallel codes=timeout effects= +SUMMARY PL7mid deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +F5: 6/6 prompt failures before mutation, 1/1 timeout with race removed, 6/6 prompt failures after byte-for-byte restore diff --git a/evidence/native-parallel-review8/f5-mutation-proof.sh b/evidence/native-parallel-review8/f5-mutation-proof.sh new file mode 100644 index 000000000..d7d2e6a92 --- /dev/null +++ b/evidence/native-parallel-review8/f5-mutation-proof.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo_root=$(cd "$(dirname "$0")/../.." && pwd) +evidence_dir="$repo_root/evidence/native-parallel-review8" +volume=ms-flows-parallel-r7 +stage=ms-flows-parallel-f5-stage + +# Deep forcing isolates the executor's early-failure rule. Bypass only the +# preload admission gate in this scratch SDK so PL7mid pins parallel mode; +# keep its later intrinsic-integrity check intact. +docker run -d --rm --platform linux/arm64 -v "$volume:/w" --name "$stage" node:22-trixie sleep infinity > "$evidence_dir/f5-stage-id.log" +docker cp "$evidence_dir/h7-f5.mjs" "$stage:/w/review8/h7-f5.mjs" +docker exec "$stage" sh -c ' + rm -rf /w/deep-f5/packages/sdk + mkdir -p /w/deep-f5/packages + cp -a /w/deep/packages/sdk /w/deep-f5/packages/ + sed -i "s/function authoredProcessHasPreload() {/function authoredProcessHasPreload() { return false;/" /w/deep-f5/packages/sdk/dist/authored-flow-lifecycle.js + cp /w/deep-f5/packages/sdk/dist/authored-flow-executor.js /w/deep-f5/packages/sdk/dist/authored-flow-executor.js.pristine + sha256sum /w/deep-f5/packages/sdk/dist/authored-flow-executor.js +' > "$evidence_dir/f5-stage.log" +docker stop "$stage" > /dev/null + +run_case() { + local tag=$1 + local reps=$2 + local log=$3 + docker run --rm --init --platform linux/arm64 -v "$volume:/w" -w /w/review8 node:22-trixie \ + node --no-warnings h7-f5.mjs s7.mjs PL7mid --reps="$reps" --conc=3 --tag="$tag" --sides=deep:deep \ + > "$evidence_dir/$log" 2>&1 + rg '^SUMMARY' "$evidence_dir/$log" +} + +run_case r8f5-before 6 h7-f5-before.log +docker run --rm --platform linux/arm64 -v "$volume:/w" node:22-trixie sh -c ' + sed -i "s/await Promise.race(\[bodyPromise, parallelFailure\]);/await bodyPromise;/" /w/deep-f5/packages/sdk/dist/authored-flow-executor.js + ! cmp -s /w/deep-f5/packages/sdk/dist/authored-flow-executor.js.pristine /w/deep-f5/packages/sdk/dist/authored-flow-executor.js + ! grep -Fq "await Promise.race([bodyPromise, parallelFailure]);" /w/deep-f5/packages/sdk/dist/authored-flow-executor.js + grep -n "await bodyPromise;" /w/deep-f5/packages/sdk/dist/authored-flow-executor.js +' > "$evidence_dir/f5-mutated.log" +run_case r8f5-mutant 1 h7-f5-mutant.log +docker run --rm --platform linux/arm64 -v "$volume:/w" node:22-trixie sh -c ' + cp /w/deep-f5/packages/sdk/dist/authored-flow-executor.js.pristine /w/deep-f5/packages/sdk/dist/authored-flow-executor.js + cmp /w/deep-f5/packages/sdk/dist/authored-flow-executor.js.pristine /w/deep-f5/packages/sdk/dist/authored-flow-executor.js + sha256sum /w/deep-f5/packages/sdk/dist/authored-flow-executor.js +' > "$evidence_dir/f5-restored.log" +run_case r8f5-restored 6 h7-f5-restored.log + +python3 - "$evidence_dir" <<'PY' +from pathlib import Path +import json, sys +root=Path(sys.argv[1]) +def read(name): + return [json.loads(line) for line in (root/name).read_text().splitlines() if line.startswith('{')] +for name in ['h7-f5-before.log','h7-f5-restored.log']: + rows=read(name) + assert len(rows)==6 and all(row['fresh'] and row['code']==1 and row['mode']=='parallel' + and not row['replay'] for row in rows), name +rows=read('h7-f5-mutant.log') +assert len(rows)==1 and rows[0]['fresh'] and rows[0]['code']=='timeout', rows +assert (root/'f5-stage.log').read_text()==(root/'f5-restored.log').read_text() +print('F5: 6/6 prompt failures before mutation, 1/1 timeout with race removed, 6/6 prompt failures after byte-for-byte restore') +PY diff --git a/evidence/native-parallel-review8/f5-restored.log b/evidence/native-parallel-review8/f5-restored.log new file mode 100644 index 000000000..f77882bab --- /dev/null +++ b/evidence/native-parallel-review8/f5-restored.log @@ -0,0 +1 @@ +ecb110f1d229eb85433719e449299b3deb882157e8b751f1e8c896e6491ca0e8 /w/deep-f5/packages/sdk/dist/authored-flow-executor.js diff --git a/evidence/native-parallel-review8/f5-stage-id.log b/evidence/native-parallel-review8/f5-stage-id.log new file mode 100644 index 000000000..e53a61c36 --- /dev/null +++ b/evidence/native-parallel-review8/f5-stage-id.log @@ -0,0 +1 @@ +285026e4a6cf6a698b09f0c40af1ce8273dbddd6db9d8deedc4e4769ebe40af1 diff --git a/evidence/native-parallel-review8/f5-stage.log b/evidence/native-parallel-review8/f5-stage.log new file mode 100644 index 000000000..f77882bab --- /dev/null +++ b/evidence/native-parallel-review8/f5-stage.log @@ -0,0 +1 @@ +ecb110f1d229eb85433719e449299b3deb882157e8b751f1e8c896e6491ca0e8 /w/deep-f5/packages/sdk/dist/authored-flow-executor.js diff --git a/evidence/native-parallel-review8/h7-base-fail-controls.log b/evidence/native-parallel-review8/h7-base-fail-controls.log new file mode 100644 index 000000000..98e16a4f1 --- /dev/null +++ b/evidence/native-parallel-review8/h7-base-fail-controls.log @@ -0,0 +1,21 @@ +{"s":"PL3sub","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7GNRD7M2VAAVV6RS3Y28\",\"runId\":\"01M53E7GNRD7M2VAAVV6RS3Y28\",\"socketPath\":\"/tmp/relayflowd-cd96166d7234.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2191} +{"s":"PL3sub","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7GNRMVBVR8K4YN9KRJMZ\",\"runId\":\"01M53E7GNRMVBVR8K4YN9KRJMZ\",\"socketPath\":\"/tmp/relayflowd-f8b0c2021513.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2290} +{"s":"PL3sub","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7GNRXM20691J67V0JWGC\",\"runId\":\"01M53E7GNRXM20691J67V0JWGC\",\"socketPath\":\"/tmp/relayflowd-f03754cf63fc.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2359} +{"s":"PL3sub","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7JQH5AXRC7JCW83PEKNF\",\"runId\":\"01M53E7JQH5AXRC7JCW83PEKNF\",\"socketPath\":\"/tmp/relayflowd-62298b4f3242.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2315} +{"s":"PL3sub","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7JT6FX004S1W2K6N12P5\",\"runId\":\"01M53E7JT6FX004S1W2K6N12P5\",\"socketPath\":\"/tmp/relayflowd-6469cf058196.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2282} +{"s":"PL3sub","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7JW3A7RRVGF10P6EYDN5\",\"runId\":\"01M53E7JW3A7RRVGF10P6EYDN5\",\"socketPath\":\"/tmp/relayflowd-26f102a2f153.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2450} +{"s":"PL4ctor","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7MZ3G1DGGHA4N12AE6PD\",\"runId\":\"01M53E7MZ3G1DGGHA4N12AE6PD\",\"socketPath\":\"/tmp/relayflowd-1bd31f3ef7f4.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2042} +{"s":"PL4ctor","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7N165VY402CJYF1SM58B\",\"runId\":\"01M53E7N165VY402CJYF1SM58B\",\"socketPath\":\"/tmp/relayflowd-59e73643eac0.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2162} +{"s":"PL4ctor","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7N8Y53C9JNGHQZ8W1ACF\",\"runId\":\"01M53E7N8Y53C9JNGHQZ8W1ACF\",\"socketPath\":\"/tmp/relayflowd-9191dde4039c.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2212} +{"s":"PL4ctor","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7PZVXJFSPTCXAKJ1MVHZ\",\"runId\":\"01M53E7PZVXJFSPTCXAKJ1MVHZ\",\"socketPath\":\"/tmp/relayflowd-01b2e983feb8.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2256} +{"s":"PL4ctor","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7Q448T6Y9ZD2WKCMZEW3\",\"runId\":\"01M53E7Q448T6Y9ZD2WKCMZEW3\",\"socketPath\":\"/tmp/relayflowd-5328dbc0d32c.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2367} +{"s":"PL4ctor","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E7QE2AEBBC6WMV615CS7B\",\"runId\":\"01M53E7QE2AEBBC6WMV615CS7B\",\"socketPath\":\"/tmp/relayflowd-95fe9bc72acd.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2505} +{"s":"SEC7","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7S5E2SFESMVA2NHANGKT\",\"runId\":\"01M53E7S5E2SFESMVA2NHANGKT\",\"socketPath\":\"/tmp/relayflowd-52dab1affc31.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-0/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-0/u","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-0/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-0/u","run-7 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-0/l","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1860} +{"s":"SEC7","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7SEG0N6F6MTKY8W4MWQ2\",\"runId\":\"01M53E7SEG0N6F6MTKY8W4MWQ2\",\"socketPath\":\"/tmp/relayflowd-89173f56838a.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-1/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-1/u","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-1/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-1/u","run-7 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-1/l","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1903} +{"s":"SEC7","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7SVWX8ZY9TCZ1WT97NMD\",\"runId\":\"01M53E7SVWX8ZY9TCZ1WT97NMD\",\"socketPath\":\"/tmp/relayflowd-63f4ca2da891.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-2/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-2/u","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-2/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-2/u","run-7 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-2/l","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1968} +{"s":"SEC7","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7TZBACAYMKDMHAMZCGQF\",\"runId\":\"01M53E7TZBACAYMKDMHAMZCGQF\",\"socketPath\":\"/tmp/relayflowd-3fb153c2aeef.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-3/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-3/u","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-3/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-3/u","run-7 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-3/l","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2020} +{"s":"SEC7","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7VAXXHB4QFA8PAM0QF5Z\",\"runId\":\"01M53E7VAXXHB4QFA8PAM0QF5Z\",\"socketPath\":\"/tmp/relayflowd-44c855e8abeb.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-4/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-4/u","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-4/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-4/u","run-7 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-4/l","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2159} +{"s":"SEC7","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7VSN4KSWNGAD335875YP\",\"runId\":\"01M53E7VSN4KSWNGAD335875YP\",\"socketPath\":\"/tmp/relayflowd-39d474de9616.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-5/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-5/u","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-5/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-5/u","run-7 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8basefail/SEC7/base-base-5/l","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2274} +SUMMARY PL3sub base>base ok=0/6 replay=0 fresh=0 mode=absent codes=1 effects=abcXZ +SUMMARY PL4ctor base>base ok=0/6 replay=0 fresh=0 mode=absent codes=1 effects=abcXZ +SUMMARY SEC7 base>base ok=0/6 replay=0 fresh=0 mode=absent codes=0 effects=Z diff --git a/evidence/native-parallel-review8/h7-f5-before.log b/evidence/native-parallel-review8/h7-f5-before.log new file mode 100644 index 000000000..6ae2e75c3 --- /dev/null +++ b/evidence/native-parallel-review8/h7-f5-before.log @@ -0,0 +1,7 @@ +{"s":"PL7mid","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-before/PL7mid/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53ESF0J62RQ8ZC1P0KKSP7T\",\"socketPath\":\"/tmp/relayflowd-735b11945e9a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-before/PL7mid/deep-deep-0/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":994} +{"s":"PL7mid","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-before/PL7mid/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53ESF0S8Q9WCKK9H9KJ7HCW\",\"socketPath\":\"/tmp/relayflowd-13ed193b793b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-before/PL7mid/deep-deep-1/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":994} +{"s":"PL7mid","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-before/PL7mid/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53ESF0Y532PEH5CMZY1NZQ9\",\"socketPath\":\"/tmp/relayflowd-b8418666ff92.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-before/PL7mid/deep-deep-2/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":995} +{"s":"PL7mid","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-before/PL7mid/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53ESFZA221VYQS0TPFFW9YF\",\"socketPath\":\"/tmp/relayflowd-9fc962a89c56.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-before/PL7mid/deep-deep-3/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":968} +{"s":"PL7mid","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-before/PL7mid/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53ESFZJE9FNVSNA9HAJ12RK\",\"socketPath\":\"/tmp/relayflowd-ae0d4f7f4f4e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-before/PL7mid/deep-deep-4/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":967} +{"s":"PL7mid","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-before/PL7mid/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53ESFZAPF2R4G06V4ZHRSQH\",\"socketPath\":\"/tmp/relayflowd-0278964ab146.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-before/PL7mid/deep-deep-5/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":966} +SUMMARY PL7mid deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-f5-mutant.log b/evidence/native-parallel-review8/h7-f5-mutant.log new file mode 100644 index 000000000..9ce0ba6ab --- /dev/null +++ b/evidence/native-parallel-review8/h7-f5-mutant.log @@ -0,0 +1,2 @@ +{"s":"PL7mid","start":"deep","resume":"deep","i":0,"fresh":true,"code1":"timeout","code":"timeout","effects":"","effects1":"","out1":"","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-mutant/PL7mid/deep-deep-0/wstart; sleep 0.3; printf"],"letterDup":false,"replay":false,"ok":false,"ms":8018} +SUMMARY PL7mid deep>deep ok=0/1 replay=0 fresh=1 mode=parallel codes=timeout effects= diff --git a/evidence/native-parallel-review8/h7-f5-restored.log b/evidence/native-parallel-review8/h7-f5-restored.log new file mode 100644 index 000000000..a2c803991 --- /dev/null +++ b/evidence/native-parallel-review8/h7-f5-restored.log @@ -0,0 +1,7 @@ +{"s":"PL7mid","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-restored/PL7mid/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53ESSQ76FGCX0EJQRHBJF71\",\"socketPath\":\"/tmp/relayflowd-ee87f25a212e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-restored/PL7mid/deep-deep-0/wstart; sleep 0.3; prin"],"letterDup":false,"replay":false,"ok":false,"ms":1112} +{"s":"PL7mid","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-restored/PL7mid/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53ESSQ4JG1PK0Z80W8QHNG6\",\"socketPath\":\"/tmp/relayflowd-3f5191a2afe2.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-restored/PL7mid/deep-deep-1/wstart; sleep 0.3; prin"],"letterDup":false,"replay":false,"ok":false,"ms":1112} +{"s":"PL7mid","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-restored/PL7mid/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53ESSQ3WCAHDCE7H3WTG3QG\",\"socketPath\":\"/tmp/relayflowd-34cff2091e8c.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-restored/PL7mid/deep-deep-2/wstart; sleep 0.3; prin"],"letterDup":false,"replay":false,"ok":false,"ms":1112} +{"s":"PL7mid","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-restored/PL7mid/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53ESTQA2E52HPSCRDG2VG9S\",\"socketPath\":\"/tmp/relayflowd-5a0db1553f81.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-restored/PL7mid/deep-deep-3/wstart; sleep 0.3; prin"],"letterDup":false,"replay":false,"ok":false,"ms":996} +{"s":"PL7mid","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-restored/PL7mid/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53ESTQFAQ2ZEK6YJ9TN5WFQ\",\"socketPath\":\"/tmp/relayflowd-477b1f6e7401.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-restored/PL7mid/deep-deep-4/wstart; sleep 0.3; prin"],"letterDup":false,"replay":false,"ok":false,"ms":996} +{"s":"PL7mid","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"path\":\"/w/runs/r8f5-restored/PL7mid/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53ESTQJD05NZDQEFQS1C06A\",\"socketPath\":\"/tmp/relayflowd-1026362a8cc8.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8f5-restored/PL7mid/deep-deep-5/wstart; sleep 0.3; prin"],"letterDup":false,"replay":false,"ok":false,"ms":995} +SUMMARY PL7mid deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-f5.mjs b/evidence/native-parallel-review8/h7-f5.mjs new file mode 100644 index 000000000..55d918c88 --- /dev/null +++ b/evidence/native-parallel-review8/h7-f5.mjs @@ -0,0 +1,217 @@ +// Review-7 crash/resume harness for flows#667. Runs inside node:22-trixie. +// usage: node --no-warnings h7.mjs [--reps=6] [--conc=3] [--tag=x] [--sides=a:b/c:d] [--keep] +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; +import { createRequire } from 'node:module'; +import { DatabaseSync } from 'node:sqlite'; +globalThis.require = createRequire(import.meta.url); + +const args = process.argv.slice(2); +const opt = (k, d) => { const a = args.find(x => x.startsWith(`--${k}=`)); return a ? a.slice(k.length + 3) : d; }; +const file = args[0]; +const names = args[1]; +const reps = Number(opt('reps', '6')); +const conc = Number(opt('conc', '3')); +const tag = opt('tag', 't'); +const sidesOverride = opt('sides', undefined)?.split('/').map(p => p.split(':')); +const keep = args.includes('--keep'); +const DELAYS = [0, 60, 130, 220, 330, 450, 30, 180, 270, 400]; + +const SIDES = { + head: { cli: '/w/head/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + base: { cli: '/w/base/packages/sdk/dist/cli.js', nm: '/w/base/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + forced: { cli: '/w/forced/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + fix: { cli: '/w/fix/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + deep: { cli: '/w/deep-f5/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + p2050: { cli: '/w/p2050/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2050/node_modules', daemon: '/w/relayflowd-2050' }, + p2051: { cli: '/w/p2051/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2051/node_modules', daemon: '/w/relayflowd-main' }, +}; + +const sleep = ms => new Promise(r => setTimeout(r, ms)); +const read = p => { try { return fs.readFileSync(p, 'utf8'); } catch { return ''; } }; + +function start(side, argv, root, env = {}) { + const s = SIDES[side]; + const child = spawn(process.execPath, [s.cli, ...argv], { + cwd: root, env: { ...process.env, ...env, RELAYFLOWD_BIN: s.daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let out = ''; + child.stdout.on('data', d => { out += d; }); + child.stderr.on('data', d => { out += d; }); + return { child, closed: new Promise(r => child.once('close', (code, signal) => r({ code, signal }))), get out() { return out; } }; +} + +function sweep(root) { + const targets = new Set(); + try { targets.add(JSON.parse(read(path.join(root, 'data/connection.json'))).pid); } catch {} + for (const e of fs.readdirSync('/proc')) { + if (!/^\d+$/.test(e)) continue; + const pid = Number(e); + if (pid === process.pid) continue; + try { + const cwd = fs.readlinkSync(`/proc/${pid}/cwd`); + const cmd = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8'); + if (cwd === root || cwd.startsWith(root + '/') || cmd.includes(root)) targets.add(pid); + } catch {} + } + for (const pid of targets) { try { if (pid) process.kill(pid, 'SIGKILL'); } catch {} } +} + +function journals(root) { + const dir = path.join(root, 'data/runs'); + if (!fs.existsSync(dir)) return []; + return fs.readdirSync(dir).filter(f => f.endsWith('.sqlite3')).sort().map(f => { + let db; + try { db = new DatabaseSync(path.join(dir, f), { readOnly: true }); } catch { return { runId: f.slice(0, -8), step: undefined, completed: 0 }; } + try { + if (!db.prepare("select name from sqlite_master where type='table' and name='entries'").get()) return { runId: f.slice(0, -8), step: undefined, completed: 0 }; + const sp = db.prepare("select payload from entries where entry_type='run.spawned' order by seq limit 1").get(); + const done = db.prepare("select count(*) as n from entries where entry_type='step.completed'").get().n; + const payload = sp ? JSON.parse(sp.payload) : undefined; + const spec = payload?.spec ?? payload?.payload?.spec ?? payload?.run?.spec; + return { runId: f.slice(0, -8), step: spec?.steps?.[0], completed: Number(done) }; + } finally { db.close(); } + }); +} + +function rootOf(js) { return js.find(j => j.step?.id === 'authored-root'); } +function modeOf(r) { + try { const m = JSON.parse(r.step.instruction); return m.executionMode ?? (m.identityVersion ? 'v2?' : 'absent'); } catch { return 'unknown'; } +} + +function replayCheck(js, rootId, expected = {}) { + const seen = new Map(); + const ids = []; + let replay = false; + const dups = []; + for (const j of js) { + if (j.runId === rootId || !j.step) continue; + const st = j.step; + const cmd = st.command ?? st.instruction ?? ''; + ids.push(`${st.id} c=${j.completed} ${String(cmd).slice(0, 70)}`); + if (!st.command) continue; + const ns = st.id.includes('--') ? st.id.slice(0, st.id.lastIndexOf('--')) : ''; + const key = `${ns}|${st.command}`; + const prev = seen.get(key) ?? []; + prev.push({ id: st.id, completed: j.completed }); + seen.set(key, prev); + const distinct = new Set(prev.map(p => p.id)); + if (distinct.size > (expected[st.command] ?? 1) && prev.some(p => p.completed > 0)) { + replay = true; dups.push(`${st.command.slice(0, 50)}: ${[...distinct].join(' & ')}`); + } + } + return { replay, ids, dups }; +} + +async function one(sc, startSide, resumeSide, i) { + const root = `/w/runs/${tag}/${sc.name}/${startSide}-${resumeSide}-${i}`; + fs.rmSync(root, { recursive: true, force: true }); + fs.mkdirSync(root, { recursive: true }); + const nmSide = sc.nmSide ?? startSide; + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync(SIDES[nmSide].nm, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ cli: path.join(root, 'adapter.mjs'), models: ['test-model'] })); + fs.writeFileSync(path.join(root, 'adapter.mjs'), '#!/usr/bin/env node\nprocess.exit(0);\n', { mode: 0o755 }); + for (const [f, src] of Object.entries(sc.files)) { + const t = path.join(root, f); + fs.mkdirSync(path.dirname(t), { recursive: true }); + fs.writeFileSync(t, src.replaceAll('', root)); + if (f.endsWith('adapter.mjs')) fs.chmodSync(t, 0o755); + } + if (sc.bluebird) { + const d = path.join(root, 'bb'); + fs.cpSync('/w/head/packages/sdk/node_modules/bluebird/js/release', d, { recursive: true }); + fs.writeFileSync(path.join(d, 'package.json'), '{"type":"commonjs"}'); + } + const env = Object.fromEntries(Object.entries(sc.env ?? {}).map(([k, v]) => [k, String(v).replaceAll('', root)])); + const entry = path.join(root, sc.entry ?? 'chain.flow.ts'); + const res = { s: sc.name, start: startSide, resume: resumeSide, i }; + const t0 = Date.now(); + const first = start(startSide, ['run', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), entry, '--input', '{}'], root, env); + let early; + const deadline = Date.now() + 8_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (first.child.exitCode !== null || first.child.signalCode !== null) { early = await first.closed; break; } + if (Date.now() > deadline) { first.child.kill('SIGKILL'); early = { code: 'timeout' }; break; } + await sleep(15); + } + try { + if (early) { + res.fresh = true; res.code1 = early.code; res.code = early.code; + res.effects1 = res.effects = read(path.join(root, 'effects')); + res.out1 = first.out.slice(-600); + } else { + res.fresh = false; + await sleep(sc.delays?.[i] ?? DELAYS[i % DELAYS.length]); + first.child.kill('SIGKILL'); + await Promise.race([first.closed, sleep(2000)]); + sweep(root); await sleep(100); sweep(root); + res.code1 = 'killed'; + res.effects1 = read(path.join(root, 'effects')); + fs.writeFileSync(path.join(root, 'release'), ''); + const r0 = rootOf(journals(root)); + if (!r0) throw new Error('no root journal'); + const resumed = start(resumeSide, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env); + const to = setTimeout(() => resumed.child.kill('SIGKILL'), 150_000); + const rr = await resumed.closed; clearTimeout(to); + res.code = rr.code; res.out = resumed.out.slice(-600); + sweep(root); + if (sc.secondResume) { + res.effects0 = res.effects1; + res.effectsMid = read(path.join(root, 'effects')); + res.code1 = rr.code; res.effects1 = res.effectsMid; + const fin = start(sc.secondResume, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env); + const to2 = setTimeout(() => fin.child.kill('SIGKILL'), 150_000); + const fr = await fin.closed; clearTimeout(to2); + res.code = fr.code; res.out2 = fin.out.slice(-400); + sweep(root); + } + res.effects = read(path.join(root, 'effects')); + } + const js = journals(root); + const r = rootOf(js); + res.mode = r ? modeOf(r) : 'noroot'; + const rc = replayCheck(js, r?.runId, sc.expectedCounts); + res.journalReplay = rc.replay; res.dups = rc.dups; res.ids = rc.ids; + const letters = [...res.effects].filter(c => /[A-Za-z]/.test(c)); + res.letterDup = new Set(letters).size !== letters.length; + res.replay = res.journalReplay || (res.letterDup && !sc.allowDupLetters); + if (sc.extraCheck) Object.assign(res, sc.extraCheck(root)); + const okDefault = r => r.code === 0 && !r.replay && (sc.noZ || r.effects.includes('Z')); + res.ok = sc.okIf ? (sc.okIf(res) && !res.replay) : sc.expect ? (sc.expect(res) && !res.replay && res.code === 0) : okDefault(res); + } catch (e) { + res.error = String(e?.stack ?? e).slice(0, 400); res.ok = false; + } finally { + try { first.child.kill('SIGKILL'); } catch {} + sweep(root); + res.ms = Date.now() - t0; + if (!keep && res.ok) fs.rmSync(root, { recursive: true, force: true }); + } + return res; +} + +const mod = await import(path.resolve(file)); +let scen = mod.default; +if (names !== 'all') { const want = names.split(','); scen = want.map(n => { const s = scen.find(x => x.name === n); if (!s) throw new Error(`no scenario ${n}`); return s; }); } +const jobs = []; +for (const sc of scen) for (const [a, b] of (sidesOverride ?? sc.sides)) for (let i = 0; i < reps; i++) jobs.push([sc, a, b, i]); +const results = []; +let next = 0; +await Promise.all(Array.from({ length: conc }, async () => { + while (next < jobs.length) { + const [sc, a, b, i] = jobs[next++]; + const r = await one(sc, a, b, i); + results.push(r); + console.log(JSON.stringify(r)); + } +})); +const groups = new Map(); +for (const r of results) { + const k = `${r.s} ${r.start}>${r.resume}`; + const g = groups.get(k) ?? { ok: 0, n: 0, replay: 0, fresh: 0, modes: new Set(), effects: new Set(), codes: new Set() }; + g.n++; if (r.ok) g.ok++; if (r.replay) g.replay++; if (r.fresh) g.fresh++; + g.modes.add(r.mode); g.effects.add(r.effects); g.codes.add(String(r.code)); + groups.set(k, g); +} +for (const [k, g] of groups) console.log(`SUMMARY ${k} ok=${g.ok}/${g.n} replay=${g.replay} fresh=${g.fresh} mode=${[...g.modes]} codes=${[...g.codes]} effects=${[...g.effects].join('|')}`); diff --git a/evidence/native-parallel-review8/h7-i1-base-control.log b/evidence/native-parallel-review8/h7-i1-base-control.log new file mode 100644 index 000000000..3bdb4a456 --- /dev/null +++ b/evidence/native-parallel-review8/h7-i1-base-control.log @@ -0,0 +1,7 @@ +{"s":"I1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EVAMJABC8V2BW2CC00T7A\",\"runId\":\"01M53EVAMJABC8V2BW2CC00T7A\",\"socketPath\":\"/tmp/relayflowd-42eadcd31d74.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"absent","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1697} +{"s":"I1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EVAMJTK5N93666BCKYSSF\",\"runId\":\"01M53EVAMJTK5N93666BCKYSSF\",\"socketPath\":\"/tmp/relayflowd-8eeb85153538.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"absent","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1753} +{"s":"I1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EVAMJF1TNGD7PP7RPPYQE\",\"runId\":\"01M53EVAMJF1TNGD7PP7RPPYQE\",\"socketPath\":\"/tmp/relayflowd-c689795c2e00.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"absent","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1798} +{"s":"I1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EVC7EMW3S8SFG515R0BFP\",\"runId\":\"01M53EVC7EMW3S8SFG515R0BFP\",\"socketPath\":\"/tmp/relayflowd-df27ef2f9aad.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"absent","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1814} +{"s":"I1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EVC9C6D2F7KC65NTRF2TF\",\"runId\":\"01M53EVC9C6D2F7KC65NTRF2TF\",\"socketPath\":\"/tmp/relayflowd-0ab4b9e16ce0.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"absent","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1880} +{"s":"I1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EVCADF2KHTXK721NK10PB\",\"runId\":\"01M53EVCADF2KHTXK721NK10PB\",\"socketPath\":\"/tmp/relayflowd-57839275b68d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"absent","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1935} +SUMMARY I1 base>base ok=0/6 replay=6 fresh=0 mode=absent codes=0 effects=xyLRZ diff --git a/evidence/native-parallel-review8/h7-k1-controls.log b/evidence/native-parallel-review8/h7-k1-controls.log new file mode 100644 index 000000000..d6162c12b --- /dev/null +++ b/evidence/native-parallel-review8/h7-k1-controls.log @@ -0,0 +1,14 @@ +{"s":"K1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:d3a8731662dfe6ec3b5682c2add0b78da1db4dc5f3bef2bab1f371c9258cad27\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:d3a8731662dfe6ec3b5682c2add0b78da1db4dc5f3bef2bab1f371c9258cad27\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVR1DSMH5J56BS3B819MM\",\"runId\":\"01M53EVR1DSMH5J56BS3B819MM\",\"socketPath\":\"/tmp/relayflowd-6d1b87a43050.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2214} +{"s":"K1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:c441507bc27b39597b270180dfb3a24d3ce346f15c107e70b4ebe6f5a0be59ba\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:c441507bc27b39597b270180dfb3a24d3ce346f15c107e70b4ebe6f5a0be59ba\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVR1DB5Q4EDT2K3JVM35R\",\"runId\":\"01M53EVR1DB5Q4EDT2K3JVM35R\",\"socketPath\":\"/tmp/relayflowd-c533fc0cb3cd.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2238} +{"s":"K1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:77e61892638e8b94199af37b0a62dcd8347a1bddbaf5df3b6e923fdfde9a5e07\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:77e61892638e8b94199af37b0a62dcd8347a1bddbaf5df3b6e923fdfde9a5e07\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVR1DEYC5FG3GY7S8E50G\",\"runId\":\"01M53EVR1DEYC5FG3GY7S8E50G\",\"socketPath\":\"/tmp/relayflowd-db9341fe789c.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2284} +{"s":"K1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:64db3f8502ce572299ca4b8bc9e1a8f6de5f8b1dcebc0595652f6c0281350d5c\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:64db3f8502ce572299ca4b8bc9e1a8f6de5f8b1dcebc0595652f6c0281350d5c\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVT5AAYJEFN1MVAJ2CGQ8\",\"runId\":\"01M53EVT5AAYJEFN1MVAJ2CGQ8\",\"socketPath\":\"/tmp/relayflowd-ec23c6e9fc7a.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2437} +{"s":"K1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:666c6b2543b54f8005620f7df0bb938b0df767d4cb17e215600734d1d41229aa\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:666c6b2543b54f8005620f7df0bb938b0df767d4cb17e215600734d1d41229aa\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVT5PER9J9HAFRFGZAE4W\",\"runId\":\"01M53EVT5PER9J9HAFRFGZAE4W\",\"socketPath\":\"/tmp/relayflowd-fbd391c68375.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2458} +{"s":"K1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:1cd8486ed30cf452071f119ec4d429e77e0f03acd783e13c566746186afee436\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:1cd8486ed30cf452071f119ec4d429e77e0f03acd783e13c566746186afee436\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVT6YNFFZGK3KQ7RYNKYA\",\"runId\":\"01M53EVT6YNFFZGK3KQ7RYNKYA\",\"socketPath\":\"/tmp/relayflowd-253c8fd00343.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2549} +{"s":"K1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:52d8921ac3f2c5dacae4a0e957e3b4ed93e42faf65fb9d6554528ea6b2aa52ea\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:52d8921ac3f2c5dacae4a0e957e3b4ed93e42faf65fb9d6554528ea6b2aa52ea\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVWBDYW6DW6DSBF8VRP2R\",\"runId\":\"01M53EVWBDYW6DW6DSBF8VRP2R\",\"socketPath\":\"/tmp/relayflowd-95dbfd1955de.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1690} +{"s":"K1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:cd4550086384ec07c4ae26d8cd4d6e485fa3d94fbbcd3d34af9d5edf34511996\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:cd4550086384ec07c4ae26d8cd4d6e485fa3d94fbbcd3d34af9d5edf34511996\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVWCRZNT117E7VA3F50XJ\",\"runId\":\"01M53EVWCRZNT117E7VA3F50XJ\",\"socketPath\":\"/tmp/relayflowd-e1190b8952ae.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1738} +{"s":"K1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:5269b2ae08389a8e18feb82e5045ba2631966d95697ca2bf63929b7d39243549\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:5269b2ae08389a8e18feb82e5045ba2631966d95697ca2bf63929b7d39243549\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVWGKCQMYT1ZDK2X2KXCV\",\"runId\":\"01M53EVWGKCQMYT1ZDK2X2KXCV\",\"socketPath\":\"/tmp/relayflowd-bfed5f04dc16.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1817} +{"s":"K1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:e539002869f33587d781bc60e152d474a209342646268740b27b080fb6908a96\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:e539002869f33587d781bc60e152d474a209342646268740b27b080fb6908a96\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVXZRP9MMHG2GQ6K0W0H2\",\"runId\":\"01M53EVXZRP9MMHG2GQ6K0W0H2\",\"socketPath\":\"/tmp/relayflowd-e8af8ebc5b92.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1893} +{"s":"K1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:cf9be65499e45c7c2b2168e476ebf6d2900976f7fb62537f0ac8403039364b76\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:cf9be65499e45c7c2b2168e476ebf6d2900976f7fb62537f0ac8403039364b76\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVY2FN2FE3MWDWFXC7WK1\",\"runId\":\"01M53EVY2FN2FE3MWDWFXC7WK1\",\"socketPath\":\"/tmp/relayflowd-9afc57b8d771.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1999} +{"s":"K1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"ABLC","code":1,"out":"uthored-child:7e6cb395fc3ed06fcc1866bca1b12282625adc707e4ea59ca082b5ac8a612825\" is already bound to a different spec\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: run_admission_conflict: run admission key \\\"authored-child:7e6cb395fc3ed06fcc1866bca1b12282625adc707e4ea59ca082b5ac8a612825\\\" is already bound to a different spec\"}],\"rootRunId\":\"01M53EVY9S2QJ4KZ1CGDPH9317\",\"runId\":\"01M53EVY9S2QJ4KZ1CGDPH9317\",\"socketPath\":\"/tmp/relayflowd-2c00aec2462b.sock\",\"subscriptions\":[]}\n","effects":"ABLC","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.2; printf B >> effects","run-3 c=1 printf L >> effects","run-4 c=1 printf C >> effects","run-5 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2175} +SUMMARY K1 head>head ok=0/6 replay=0 fresh=0 mode=serial codes=1 effects=ABLC +SUMMARY K1 base>base ok=0/6 replay=0 fresh=0 mode=absent codes=1 effects=ABLC diff --git a/evidence/native-parallel-review8/h7-prior-deep.log b/evidence/native-parallel-review8/h7-prior-deep.log new file mode 100644 index 000000000..57b5dc99b --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-deep.log @@ -0,0 +1,98 @@ +{"s":"FRrace","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRrace/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EGK72KG3Z319B88JFGKXP\",\"socketPath\":\"/tmp/relayflowd-f36a21fe96e3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1251} +{"s":"FRrace","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRrace/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EGK6TC9TGPPM90S9N29NF\",\"socketPath\":\"/tmp/relayflowd-18bdd64632e3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1252} +{"s":"FRrace","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRrace/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EGK6ZX1QTJ7J9T34Q61C1\",\"socketPath\":\"/tmp/relayflowd-31021f129b29.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1257} +{"s":"FRrace","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRrace/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EGMDT4604D0Z0H634SAQH\",\"socketPath\":\"/tmp/relayflowd-ee641c068e79.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1215} +{"s":"FRrace","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRrace/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EGMDFZAQNE5N20PBQ2F23\",\"socketPath\":\"/tmp/relayflowd-7bc870aaafb6.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1215} +{"s":"FRrace","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRrace/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EGMDT1ZZGZV98TWT1M38F\",\"socketPath\":\"/tmp/relayflowd-ae024b8dd1f6.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1215} +{"s":"FRany","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRany/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EGNKNRE2JJ62AZDG125GF\",\"socketPath\":\"/tmp/relayflowd-7e12e3092731.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1192} +{"s":"FRany","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRany/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EGNK9BFBWYPYJ70T7YC1W\",\"socketPath\":\"/tmp/relayflowd-19dec5bc3716.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1192} +{"s":"FRany","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRany/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EGNKNB2MXG98KXMEZZCW7\",\"socketPath\":\"/tmp/relayflowd-3bf93246f4b6.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1212} +{"s":"FRany","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRany/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EGPS0SAB6HXA9K175TCGD\",\"socketPath\":\"/tmp/relayflowd-e6ead760a438.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1191} +{"s":"FRany","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRany/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EGPS0B7XAP5P1QQV49H49\",\"socketPath\":\"/tmp/relayflowd-224ebe34aca3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1210} +{"s":"FRany","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRany/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EGPRD5N421GVGDX2FE7XP\",\"socketPath\":\"/tmp/relayflowd-ec2c6651b358.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1211} +{"s":"FRnestrace","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRnestrace/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EGQY02QYRSZD7VQZYTDW2\",\"socketPath\":\"/tmp/relayflowd-6df53d5f9d57.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1211} +{"s":"FRnestrace","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRnestrace/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EGQYE5AR8Q4RV5F0GH582\",\"socketPath\":\"/tmp/relayflowd-661c63fd891d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1211} +{"s":"FRnestrace","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRnestrace/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EGQYEFSTGZZAC53KV5HJW\",\"socketPath\":\"/tmp/relayflowd-0504cc1db830.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1211} +{"s":"FRnestrace","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRnestrace/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EGS4PT4F5A5RSTW99A67Z\",\"socketPath\":\"/tmp/relayflowd-64cbd01c5160.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1230} +{"s":"FRnestrace","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRnestrace/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EGS4MKBM98KW7D8PMEKMF\",\"socketPath\":\"/tmp/relayflowd-da7996ec77f6.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1230} +{"s":"FRnestrace","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRnestrace/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EGS4QVY04V4XWYHWFE565\",\"socketPath\":\"/tmp/relayflowd-e436aca29b2b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1230} +{"s":"FRdefer","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"BA","effects1":"BA","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRdefer/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EGTBXZ2F3641QTXJ91YKQ\",\"socketPath\":\"/tmp/relayflowd-50ddced0f318.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf c0","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1283} +{"s":"FRdefer","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"BA","effects1":"BA","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRdefer/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EGTBXWD703WMD18JFS1Y1\",\"socketPath\":\"/tmp/relayflowd-6f1ca0cff9aa.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf c0"],"letterDup":false,"replay":false,"ok":false,"ms":1283} +{"s":"FRdefer","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"BA","effects1":"BA","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRdefer/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EGTBXVPGJ6XABBV5RFKHE\",\"socketPath\":\"/tmp/relayflowd-fa9202ac5b6f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf c0","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1283} +{"s":"FRdefer","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"BA","effects1":"BA","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRdefer/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EGVKMH4RP0JCNNF3NV8BH\",\"socketPath\":\"/tmp/relayflowd-b73d69ed45c5.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf c0","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1270} +{"s":"FRdefer","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"BA","effects1":"BA","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRdefer/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EGVKM7DTGKJZGSNF49EHT\",\"socketPath\":\"/tmp/relayflowd-812c906fb9da.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf c0","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1269} +{"s":"FRdefer","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"BA","effects1":"BA","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRdefer/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EGVKR4DQ1W0HXRF1E9J0Y\",\"socketPath\":\"/tmp/relayflowd-779c68237585.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf c0"],"letterDup":false,"replay":false,"ok":false,"ms":1270} +{"s":"FRthen","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r8prior-deep/FRthen/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EGWTPC8MVQ3V5EY3MAZN1\",\"socketPath\":\"/tmp/relayflowd-93484a3fe486.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":862} +{"s":"FRthen","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r8prior-deep/FRthen/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EGWTPE5FYG8ZC6XH2R98M\",\"socketPath\":\"/tmp/relayflowd-54fba742b795.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":863} +{"s":"FRthen","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r8prior-deep/FRthen/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EGWTT79MD9S5T6WSYSKQ1\",\"socketPath\":\"/tmp/relayflowd-4e2b1b50f307.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":862} +{"s":"FRthen","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r8prior-deep/FRthen/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EGXM3JK0HQEYD9MX2ED71\",\"socketPath\":\"/tmp/relayflowd-63cec4a8646a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":813} +{"s":"FRthen","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r8prior-deep/FRthen/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EGXM4QQ7KJFJJA32FQQJY\",\"socketPath\":\"/tmp/relayflowd-4f116afbe646.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":814} +{"s":"FRthen","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r8prior-deep/FRthen/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EGXNT0QH2NZ29RYSD32WE\",\"socketPath\":\"/tmp/relayflowd-b6160c62b1e7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":846} +{"s":"FRsettled","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EGYF0SB7NW7ZNGR6PTB20\",\"runId\":\"01M53EGYF0SB7NW7ZNGR6PTB20\",\"socketPath\":\"/tmp/relayflowd-acbee880187b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; exit 3","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1955} +{"s":"FRsettled","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EGYDFCHXT70DZSQGHCD68\",\"runId\":\"01M53EGYDFCHXT70DZSQGHCD68\",\"socketPath\":\"/tmp/relayflowd-7b3c7d2a887b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; exit 3","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1972} +{"s":"FRsettled","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EGYFQCCFCBGJQD0W3R4XB\",\"runId\":\"01M53EGYFQCCFCBGJQD0W3R4XB\",\"socketPath\":\"/tmp/relayflowd-89d726ba4e81.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; exit 3","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2074} +{"s":"FRsettled","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH0BG4QEXGW3M6DYBCWR8\",\"runId\":\"01M53EH0BG4QEXGW3M6DYBCWR8\",\"socketPath\":\"/tmp/relayflowd-66cf3cf86ede.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; exit 3","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2181} +{"s":"FRsettled","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH0C4QQ7P5T6SB14Y36HV\",\"runId\":\"01M53EH0C4QQ7P5T6SB14Y36HV\",\"socketPath\":\"/tmp/relayflowd-4f50ba4886f0.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; exit 3","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2307} +{"s":"FRsettled","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH0FF0B0YG7X377078TE9\",\"runId\":\"01M53EH0FF0B0YG7X377078TE9\",\"socketPath\":\"/tmp/relayflowd-d37000681b7c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; exit 3","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2395} +{"s":"FRset","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH2G815DNX6VYGZRG0ZNZ\",\"runId\":\"01M53EH2G815DNX6VYGZRG0ZNZ\",\"socketPath\":\"/tmp/relayflowd-ab7e465cda87.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1977} +{"s":"FRset","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH2KZTJ6D2X3PRDRGSSNZ\",\"runId\":\"01M53EH2KZTJ6D2X3PRDRGSSNZ\",\"socketPath\":\"/tmp/relayflowd-cf5f89954f72.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1979} +{"s":"FRset","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH2TZQN6KS95663KKKSR0\",\"runId\":\"01M53EH2TZQN6KS95663KKKSR0\",\"socketPath\":\"/tmp/relayflowd-cebaaaee9cba.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2095} +{"s":"FRset","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH4D88BQ05QGFCYCFKFPX\",\"runId\":\"01M53EH4D88BQ05QGFCYCFKFPX\",\"socketPath\":\"/tmp/relayflowd-b82696b5dde7.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2158} +{"s":"FRset","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH4HCYKEEHXX4JNATA5FX\",\"runId\":\"01M53EH4HCYKEEHXX4JNATA5FX\",\"socketPath\":\"/tmp/relayflowd-792951618235.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2295} +{"s":"FRset","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH4VMAD2ZF9H52FGHN521\",\"runId\":\"01M53EH4VMAD2ZF9H52FGHN521\",\"socketPath\":\"/tmp/relayflowd-08c732bc7517.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2332} +{"s":"FRgen","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH6H5MJMQDKXKRBEW2RDS\",\"runId\":\"01M53EH6H5MJMQDKXKRBEW2RDS\",\"socketPath\":\"/tmp/relayflowd-8bac1749cf8c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1926} +{"s":"FRgen","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH6SWJM32BA89Q3CQC7E0\",\"runId\":\"01M53EH6SWJM32BA89Q3CQC7E0\",\"socketPath\":\"/tmp/relayflowd-f38a94597433.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2021} +{"s":"FRgen","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH753GB0FY8J7XJBN4TEZ\",\"runId\":\"01M53EH753GB0FY8J7XJBN4TEZ\",\"socketPath\":\"/tmp/relayflowd-807c46cc4f1b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2026} +{"s":"FRgen","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH8D22PXAEJ9FS5EYG8K2\",\"runId\":\"01M53EH8D22PXAEJ9FS5EYG8K2\",\"socketPath\":\"/tmp/relayflowd-b362565e2fc7.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2116} +{"s":"FRgen","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH8RD9AE6XND4FQ2R6SRP\",\"runId\":\"01M53EH8RD9AE6XND4FQ2R6SRP\",\"socketPath\":\"/tmp/relayflowd-4b4df3acf5d4.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2268} +{"s":"FRgen","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EH94BM8PRCDWJX62G0TMF\",\"runId\":\"01M53EH94BM8PRCDWJX62G0TMF\",\"socketPath\":\"/tmp/relayflowd-7f50bc81b534.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2402} +{"s":"FRthenagg","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHAGK9E6MHNMCNYM094P9\",\"runId\":\"01M53EHAGK9E6MHNMCNYM094P9\",\"socketPath\":\"/tmp/relayflowd-f953533f2e22.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2015} +{"s":"FRthenagg","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHB04H0DYPSB8XV08VGJZ\",\"runId\":\"01M53EHB04H0DYPSB8XV08VGJZ\",\"socketPath\":\"/tmp/relayflowd-9dc624911837.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2012} +{"s":"FRthenagg","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHBGXXDN4PQB7TFWQERP7\",\"runId\":\"01M53EHBGXXDN4PQB7TFWQERP7\",\"socketPath\":\"/tmp/relayflowd-eafc42a7d3e4.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2093} +{"s":"FRthenagg","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHCDW6AZG9YG85QH4J13P\",\"runId\":\"01M53EHCDW6AZG9YG85QH4J13P\",\"socketPath\":\"/tmp/relayflowd-f5e0a68fc454.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2159} +{"s":"FRthenagg","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHCZ5PA9E48NQ20NN6HQD\",\"runId\":\"01M53EHCZ5PA9E48NQ20NN6HQD\",\"socketPath\":\"/tmp/relayflowd-a30c6cdf3a13.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2267} +{"s":"FRmicro","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRmicro/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EHEHWPM6HP6ZDM3VSKX3J\",\"socketPath\":\"/tmp/relayflowd-1188a9f4a2af.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1152} +{"s":"FRthenagg","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHDHA2VH3QD78FETASZT4\",\"runId\":\"01M53EHDHA2VH3QD78FETASZT4\",\"socketPath\":\"/tmp/relayflowd-42d4874fdc65.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2348} +{"s":"FRmicro","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRmicro/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EHF4VPX5J108QXS0DP3PV\",\"socketPath\":\"/tmp/relayflowd-9703515befda.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1130} +{"s":"FRmicro","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRmicro/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EHFP799W3ZXE2MKHPAB5Y\",\"socketPath\":\"/tmp/relayflowd-b075ab1c7ac4.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1162} +{"s":"FRmicro","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRmicro/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EHFSS8MJ1PS11E1K1720C\",\"socketPath\":\"/tmp/relayflowd-1729d9ad1937.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1122} +{"s":"FRmicro","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRmicro/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EHG845W8CP1YYMSM3PE0K\",\"socketPath\":\"/tmp/relayflowd-6efe285ae199.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1140} +{"s":"FRmicro","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRmicro/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EHGT0HENPXFMBZK170ZVR\",\"socketPath\":\"/tmp/relayflowd-8b4f990db860.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C"],"letterDup":false,"replay":false,"ok":false,"ms":1146} +{"s":"FRcatch","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRcatch/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EHGX7824146H5WD63TWR8\",\"socketPath\":\"/tmp/relayflowd-f6327bb5c0f0.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.1; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.3; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1127} +{"s":"FRcatch","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRcatch/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EHHC7K4BDAQ9WV8QRC0Y3\",\"socketPath\":\"/tmp/relayflowd-24ad3d4e7f10.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.3; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.1; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1164} +{"s":"FRcatch","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRcatch/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EHHXP4KMB5GV5M9145KRE\",\"socketPath\":\"/tmp/relayflowd-dd1ca89f2583.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.1; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.3; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1125} +{"s":"FRcatch","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRcatch/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EHJ0G5GYG250CTX8XN5W3\",\"socketPath\":\"/tmp/relayflowd-f9b40e8aa3bb.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.1; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.3; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1128} +{"s":"FRcatch","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRcatch/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EHJGJQ1F6P6N6AT57S656\",\"socketPath\":\"/tmp/relayflowd-5b2a84ed2d52.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.1; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.3; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1144} +{"s":"FRcatch","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r8prior-deep/FRcatch/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EHK1308QE0QFZSV8JJBVS\",\"socketPath\":\"/tmp/relayflowd-1083986b7305.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.3; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.1; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1139} +{"s":"FRfinally","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"FX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHK40Y828VHX1439E0583\",\"runId\":\"01M53EHK40Y828VHX1439E0583\",\"socketPath\":\"/tmp/relayflowd-e23048de37ee.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"FXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf F >> effects","run-after-905b4c76d9cd97ff237f742cdf9e2aae10be1283518b918b370ce2ee309cc1ea-1 c=1 printf X >> effects","run-after-94aefc6dfaf31ee9ec7322caea3cc6769c99a4f79793976e95d590235ae799ed-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1947} +{"s":"FRfinally","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"FX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHKMANA3VQ8KYV52A7XE8\",\"runId\":\"01M53EHKMANA3VQ8KYV52A7XE8\",\"socketPath\":\"/tmp/relayflowd-51b098dd6a81.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"FXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf F >> effects","run-after-905b4c76d9cd97ff237f742cdf9e2aae10be1283518b918b370ce2ee309cc1ea-1 c=1 printf X >> effects","run-after-94aefc6dfaf31ee9ec7322caea3cc6769c99a4f79793976e95d590235ae799ed-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2103} +{"s":"FRfinally","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"FX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHM4G39BCHQSNG02XF37Y\",\"runId\":\"01M53EHM4G39BCHQSNG02XF37Y\",\"socketPath\":\"/tmp/relayflowd-e810d3a34eb1.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"FXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf F >> effects","run-after-905b4c76d9cd97ff237f742cdf9e2aae10be1283518b918b370ce2ee309cc1ea-1 c=1 printf X >> effects","run-after-94aefc6dfaf31ee9ec7322caea3cc6769c99a4f79793976e95d590235ae799ed-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2102} +{"s":"FRfinally","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"FX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHN2A75SJEFACZ4904SEZ\",\"runId\":\"01M53EHN2A75SJEFACZ4904SEZ\",\"socketPath\":\"/tmp/relayflowd-bad4a62b7ccd.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"FXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf F >> effects","run-after-905b4c76d9cd97ff237f742cdf9e2aae10be1283518b918b370ce2ee309cc1ea-1 c=1 printf X >> effects","run-after-94aefc6dfaf31ee9ec7322caea3cc6769c99a4f79793976e95d590235ae799ed-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2171} +{"s":"FRfinally","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"FX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHNNSX1R4VKRN2K694RBH\",\"runId\":\"01M53EHNNSX1R4VKRN2K694RBH\",\"socketPath\":\"/tmp/relayflowd-ca3f67a655ca.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"FXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf F >> effects","run-after-905b4c76d9cd97ff237f742cdf9e2aae10be1283518b918b370ce2ee309cc1ea-1 c=1 printf X >> effects","run-after-94aefc6dfaf31ee9ec7322caea3cc6769c99a4f79793976e95d590235ae799ed-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2237} +{"s":"FRfinally","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"FX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHP5PNGYKC8E1AF04ZSS4\",\"runId\":\"01M53EHP5PNGYKC8E1AF04ZSS4\",\"socketPath\":\"/tmp/relayflowd-ca44e1053c93.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"FXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf F >> effects","run-after-905b4c76d9cd97ff237f742cdf9e2aae10be1283518b918b370ce2ee309cc1ea-1 c=1 printf X >> effects","run-after-94aefc6dfaf31ee9ec7322caea3cc6769c99a4f79793976e95d590235ae799ed-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2350} +{"s":"FRiter","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHQ580XFH7BTV1EAFQQSA\",\"runId\":\"01M53EHQ580XFH7BTV1EAFQQSA\",\"socketPath\":\"/tmp/relayflowd-e93d836d69de.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf X >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2027} +{"s":"FRiter","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHQVY9Z1GJNW8P82C0P8F\",\"runId\":\"01M53EHQVY9Z1GJNW8P82C0P8F\",\"socketPath\":\"/tmp/relayflowd-b49140cecf7e.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf X >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2083} +{"s":"FRiter","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHRF9ZYM77P30ZX5K78KD\",\"runId\":\"01M53EHRF9ZYM77P30ZX5K78KD\",\"socketPath\":\"/tmp/relayflowd-0ddd9341e2c2.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf X >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2101} +{"s":"FRiter","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHS3F7XWMHRQX3KC5SR3X\",\"runId\":\"01M53EHS3F7XWMHRQX3KC5SR3X\",\"socketPath\":\"/tmp/relayflowd-16dfa8828712.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf X >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2173} +{"s":"FRwrap","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: PW is not defined\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: PW is not defined\"}],\"path\":\"/w/runs/r8prior-deep/FRwrap/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53EHV85NA54CGQ4SX41VV2B\",\"socketPath\":\"/tmp/relayflowd-ba79f2fbe192.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":800} +{"s":"FRiter","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHSW530GSZD4FZXHTJSA1\",\"runId\":\"01M53EHSW530GSZD4FZXHTJSA1\",\"socketPath\":\"/tmp/relayflowd-5199046868cc.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf X >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2300} +{"s":"FRwrap","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: PW is not defined\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: PW is not defined\"}],\"path\":\"/w/runs/r8prior-deep/FRwrap/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53EHW20WJT26W0JJ0XK5TKZ\",\"socketPath\":\"/tmp/relayflowd-b0ba2b55f651.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":849} +{"s":"FRwrap","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: PW is not defined\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: PW is not defined\"}],\"path\":\"/w/runs/r8prior-deep/FRwrap/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53EHW4MWSCY7NGJRSHHNCKH\",\"socketPath\":\"/tmp/relayflowd-02014fadc497.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":800} +{"s":"FRiter","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EHTGVGZWCK5SVSB3PT0W0\",\"runId\":\"01M53EHTGVGZWCK5SVSB3PT0W0\",\"socketPath\":\"/tmp/relayflowd-e23bb1270d53.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 printf X >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2461} +{"s":"FRwrap","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: PW is not defined\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: PW is not defined\"}],\"path\":\"/w/runs/r8prior-deep/FRwrap/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53EHWW8VSAKB5WJ480C2521\",\"socketPath\":\"/tmp/relayflowd-1304a2ca44c4.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":826} +{"s":"FRwrap","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: PW is not defined\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: PW is not defined\"}],\"path\":\"/w/runs/r8prior-deep/FRwrap/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53EHWY851N3HG2RA2M776ZE\",\"socketPath\":\"/tmp/relayflowd-fb542b764fba.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":812} +{"s":"FRwrap","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: PW is not defined\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: PW is not defined\"}],\"path\":\"/w/runs/r8prior-deep/FRwrap/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53EHWYQEYBWEM3XPFJJC2XW\",\"socketPath\":\"/tmp/relayflowd-afc6d4f0bb13.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":821} +SUMMARY FRrace deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRany deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRnestrace deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRdefer deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects=BA +SUMMARY FRthen deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRsettled deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FRset deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FRgen deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FRthenagg deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FRmicro deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRcatch deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRfinally deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=FXZ +SUMMARY FRiter deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FRwrap deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-prior-e.log b/evidence/native-parallel-review8/h7-prior-e.log new file mode 100644 index 000000000..87d70e74a --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-e.log @@ -0,0 +1,42 @@ +{"s":"E1factory","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBT1DXRFM84MC3GJN0V2A\",\"runId\":\"01M53EBT1DXRFM84MC3GJN0V2A\",\"socketPath\":\"/tmp/relayflowd-4207f87ee3f1.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2508} +{"s":"E1factory","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBT1DDWB29HAKRGP7F9BZ\",\"runId\":\"01M53EBT1DDWB29HAKRGP7F9BZ\",\"socketPath\":\"/tmp/relayflowd-8cd683392cbd.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2584} +{"s":"E1factory","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBT1DQXG25TNP523KQG1J\",\"runId\":\"01M53EBT1DQXG25TNP523KQG1J\",\"socketPath\":\"/tmp/relayflowd-12541f06bf7c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2626} +{"s":"E1factory","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBWARZ0RM5T4JKGCFH1A9\",\"runId\":\"01M53EBWARZ0RM5T4JKGCFH1A9\",\"socketPath\":\"/tmp/relayflowd-b2e228a9bcc9.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2479} +{"s":"E1factory","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBWCXBRQE9XCP4DB6Z51Q\",\"runId\":\"01M53EBWCXBRQE9XCP4DB6Z51Q\",\"socketPath\":\"/tmp/relayflowd-de3721acaa8c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2513} +{"s":"E1factory","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBWE84F0XKGWRSPACNYZ6\",\"runId\":\"01M53EBWE84F0XKGWRSPACNYZ6\",\"socketPath\":\"/tmp/relayflowd-bac7cbf42f7a.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2595} +{"s":"E2helper","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBYS3GBBX0TVDGKBX4HT8\",\"runId\":\"01M53EBYS3GBBX0TVDGKBX4HT8\",\"socketPath\":\"/tmp/relayflowd-719c48d49f1e.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf b >> effects","run-4 c=1 printf a >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1989} +{"s":"E2helper","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBYVZDPPRC33DD3KHQ9RH\",\"runId\":\"01M53EBYVZDPPRC33DD3KHQ9RH\",\"socketPath\":\"/tmp/relayflowd-e7242f019175.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf b >> effects","run-4 c=1 printf a >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2024} +{"s":"E2helper","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBYZPYZT9Z1PEBKG818VJ\",\"runId\":\"01M53EBYZPYZT9Z1PEBKG818VJ\",\"socketPath\":\"/tmp/relayflowd-4e2993d189ab.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf b >> effects","run-4 c=1 printf a >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2083} +{"s":"E2helper","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC0MJARNJZ1FP3G1TDNZK\",\"runId\":\"01M53EC0MJARNJZ1FP3G1TDNZK\",\"socketPath\":\"/tmp/relayflowd-15a1cde2c4fc.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf b >> effects","run-4 c=1 printf a >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2116} +{"s":"E2helper","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC0SCHW4G6Y5269D385C5\",\"runId\":\"01M53EC0SCHW4G6Y5269D385C5\",\"socketPath\":\"/tmp/relayflowd-ff451826267d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf b >> effects","run-4 c=1 printf a >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2214} +{"s":"E2helper","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC10105VSVNX6BVZKS9N1\",\"runId\":\"01M53EC10105VSVNX6BVZKS9N1\",\"socketPath\":\"/tmp/relayflowd-0263d70501ee.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf b >> effects","run-4 c=1 printf a >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2334} +{"s":"E3dyn","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC2QDCY5D9ZX8MKBM516C\",\"runId\":\"01M53EC2QDCY5D9ZX8MKBM516C\",\"socketPath\":\"/tmp/relayflowd-cbacbf84b929.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1801} +{"s":"E3dyn","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC2ZKTS4BY048KSSBAH31\",\"runId\":\"01M53EC2ZKTS4BY048KSSBAH31\",\"socketPath\":\"/tmp/relayflowd-caad45c36200.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1932} +{"s":"E3dyn","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC38KXH8499Y11CYCTSQD\",\"runId\":\"01M53EC38KXH8499Y11CYCTSQD\",\"socketPath\":\"/tmp/relayflowd-ce07692398b1.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1947} +{"s":"E3dyn","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC4GFKWC2A9Y9MET8XS79\",\"runId\":\"01M53EC4GFKWC2A9Y9MET8XS79\",\"socketPath\":\"/tmp/relayflowd-38a5ac5dede6.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2059} +{"s":"E3dyn","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC4VSN320B48275PK54TQ\",\"runId\":\"01M53EC4VSN320B48275PK54TQ\",\"socketPath\":\"/tmp/relayflowd-d39083477b3b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2162} +{"s":"E3dyn","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC56ATRHDBKMSRGGHBC04\",\"runId\":\"01M53EC56ATRHDBKMSRGGHBC04\",\"socketPath\":\"/tmp/relayflowd-9c42673a6106.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2256} +{"s":"E4json","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC6G78FRWCFV1ZVX2FRFW\",\"runId\":\"01M53EC6G78FRWCFV1ZVX2FRFW\",\"socketPath\":\"/tmp/relayflowd-15316e43961b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2056} +{"s":"E4json","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC6ZBEVK0ZC5GTFSCM9AP\",\"runId\":\"01M53EC6ZBEVK0ZC5GTFSCM9AP\",\"socketPath\":\"/tmp/relayflowd-e81efea9ebb8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2154} +{"s":"E4json","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC7C8YEK5Z6TMYCVJ61HA\",\"runId\":\"01M53EC7C8YEK5Z6TMYCVJ61HA\",\"socketPath\":\"/tmp/relayflowd-e56ddf7bde56.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2217} +{"s":"E4json","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC8H1TSBSVTX9MW72S3TR\",\"runId\":\"01M53EC8H1TSBSVTX9MW72S3TR\",\"socketPath\":\"/tmp/relayflowd-2419bd07bffb.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2392} +{"s":"E4json","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC920W2DMFPVXRJ13GBZ2\",\"runId\":\"01M53EC920W2DMFPVXRJ13GBZ2\",\"socketPath\":\"/tmp/relayflowd-b37e7ea1dea2.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2418} +{"s":"E4json","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EC9HCA4V88363CDFD4AMR\",\"runId\":\"01M53EC9HCA4V88363CDFD4AMR\",\"socketPath\":\"/tmp/relayflowd-f04a4af5085e.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2530} +{"s":"E4jsonuse","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECAVG38RZ7MW47BMH6TQY\",\"runId\":\"01M53ECAVG38RZ7MW47BMH6TQY\",\"socketPath\":\"/tmp/relayflowd-b4b7bc91ffac.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1827} +{"s":"E4jsonuse","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECBDN105N6VH1X0CNWYXH\",\"runId\":\"01M53ECBDN105N6VH1X0CNWYXH\",\"socketPath\":\"/tmp/relayflowd-79451e8ffdf3.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1863} +{"s":"E4jsonuse","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECC0S6BS5WSYAW2VXNGQ2\",\"runId\":\"01M53ECC0S6BS5WSYAW2VXNGQ2\",\"socketPath\":\"/tmp/relayflowd-818c4db781d5.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1946} +{"s":"E4jsonuse","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECCMNM2XJ12MR9EKKBAZJ\",\"runId\":\"01M53ECCMNM2XJ12MR9EKKBAZJ\",\"socketPath\":\"/tmp/relayflowd-460832c0fd30.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2009} +{"s":"E4jsonuse","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECD81B12KMCT8PNQ0PNY4\",\"runId\":\"01M53ECD81B12KMCT8PNQ0PNY4\",\"socketPath\":\"/tmp/relayflowd-7da3f5227fed.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2131} +{"s":"E4jsonuse","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECDXCJYJF6BRDFZH4X6JY\",\"runId\":\"01M53ECDXCJYJF6BRDFZH4X6JY\",\"socketPath\":\"/tmp/relayflowd-a4eb7bd49379.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 printf a >> effects","run-4 c=1 printf b >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2288} +{"s":"E5ns","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECEK5MHG8WJX80NTZYAJ7\",\"runId\":\"01M53ECEK5MHG8WJX80NTZYAJ7\",\"socketPath\":\"/tmp/relayflowd-d42d1053f0af.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2123} +{"s":"E5ns","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECFB0YMHSPHAJ6PWT76VH\",\"runId\":\"01M53ECFB0YMHSPHAJ6PWT76VH\",\"socketPath\":\"/tmp/relayflowd-7f8815207905.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2187} +{"s":"E5ns","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECG4NGDMQYF3NAMEZESSF\",\"runId\":\"01M53ECG4NGDMQYF3NAMEZESSF\",\"socketPath\":\"/tmp/relayflowd-68395168f554.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2239} +{"s":"E5ns","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECGNRDAYETXVY8P7XJ8SN\",\"runId\":\"01M53ECGNRDAYETXVY8P7XJ8SN\",\"socketPath\":\"/tmp/relayflowd-66e65a4b5b76.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2320} +{"s":"E5ns","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECHFHEGBQ16ZXR5V3F7Q6\",\"runId\":\"01M53ECHFHEGBQ16ZXR5V3F7Q6\",\"socketPath\":\"/tmp/relayflowd-1e12d8fbc8e2.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2484} +{"s":"E5ns","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECJAW0RFFFP7N5Y0ZERAY\",\"runId\":\"01M53ECJAW0RFFFP7N5Y0ZERAY\",\"socketPath\":\"/tmp/relayflowd-4dbea96fbb31.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2598} +SUMMARY E1factory head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY E2helper head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=baZ +SUMMARY E3dyn head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abZ +SUMMARY E4json head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcZ +SUMMARY E4jsonuse head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abZ +SUMMARY E5ns head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ diff --git a/evidence/native-parallel-review8/h7-prior-fb.log b/evidence/native-parallel-review8/h7-prior-fb.log new file mode 100644 index 000000000..cc5a95201 --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-fb.log @@ -0,0 +1,56 @@ +{"s":"FB1","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB1/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EJ3CM22K52VE8M0QKXM5X\",\"socketPath\":\"/tmp/relayflowd-3da977523269.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"calls":0,"ok":true,"ms":672} +{"s":"FB1","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB1/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EJ3CNC9JNSADC6T8BEYMB\",\"socketPath\":\"/tmp/relayflowd-3c260755b6eb.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"calls":0,"ok":true,"ms":672} +{"s":"FB1","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB1/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EJ3CD181RYS6S0RS77TPH\",\"socketPath\":\"/tmp/relayflowd-dc81b4731bd9.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"calls":0,"ok":true,"ms":672} +{"s":"FB1","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB1/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EJ3Y5P66Q1RXQX9Z7JA6R\",\"socketPath\":\"/tmp/relayflowd-5b6c23a9115d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"calls":0,"ok":true,"ms":552} +{"s":"FB1","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB1/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EJ3ZWWB465G3ZHGTGP0XN\",\"socketPath\":\"/tmp/relayflowd-40a027ad826d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"calls":0,"ok":true,"ms":617} +{"s":"FB1","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB1/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EJ4002121D3QE7ASTSW9R\",\"socketPath\":\"/tmp/relayflowd-7f217e0d943f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"calls":0,"ok":true,"ms":617} +{"s":"FB2","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB2/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EJ4G73XVB7E0CRZKYWTFF\",\"socketPath\":\"/tmp/relayflowd-aa4d5ad93e68.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":574} +{"s":"FB2","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB2/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EJ4JVXCD8NK4P0K74B6GN\",\"socketPath\":\"/tmp/relayflowd-64183bd46b30.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":607} +{"s":"FB2","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB2/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EJ4JNPFGS3C39J331GSG9\",\"socketPath\":\"/tmp/relayflowd-7d758e2b5ecc.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":607} +{"s":"FB2","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB2/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EJ52Q3311JB17P1AWTV44\",\"socketPath\":\"/tmp/relayflowd-678995e3516d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":593} +{"s":"FB2","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB2/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EJ55ZDR0VB7FSYREW5TT9\",\"socketPath\":\"/tmp/relayflowd-301df3b3ecd9.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":611} +{"s":"FB2","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB2/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EJ56AE4DGKGJSWRT4K78B\",\"socketPath\":\"/tmp/relayflowd-8adcd5068c47.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":625} +{"s":"FB3","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EJ5NMDH6X3TRFECNKV5ME\",\"socketPath\":\"/tmp/relayflowd-7c6f862df646.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":606} +{"s":"FB3","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EJ5RZ8B7M0871YCM8J30G\",\"socketPath\":\"/tmp/relayflowd-4142545e0043.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":620} +{"s":"FB3","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EJ5SEEY5K7H0BHEH8C61N\",\"socketPath\":\"/tmp/relayflowd-623f31df11ee.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":605} +{"s":"FB3","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EJ68DQKE0CM5EDV1STK4Z\",\"socketPath\":\"/tmp/relayflowd-c8596f2308fc.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":603} +{"s":"FB3","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EJ6CE8R4YHJ6XXAWTY4Z7\",\"socketPath\":\"/tmp/relayflowd-76d11f014a3c.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":638} +{"s":"FB3","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EJ6CCW0452V04NKTV3EC4\",\"socketPath\":\"/tmp/relayflowd-c43d9d7de21a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":638} +{"s":"FB3c","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3c/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EJ6W19KYRSJ9Y5AB4Y1TP\",\"socketPath\":\"/tmp/relayflowd-753ce469c15f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":646} +{"s":"FB3c","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3c/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EJ7063V97W1ZN6NM051S5\",\"socketPath\":\"/tmp/relayflowd-68cd45802c75.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":621} +{"s":"FB3c","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3c/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EJ705XDCXMWQ0CP00FDP2\",\"socketPath\":\"/tmp/relayflowd-f7056391fb5e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":622} +{"s":"FB3c","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3c/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EJ7G98D7ARMVD5X96EZY3\",\"socketPath\":\"/tmp/relayflowd-ca31b1cbc3ae.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":659} +{"s":"FB3c","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3c/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EJ7NN57JZ49YAWF41Z6Q5\",\"socketPath\":\"/tmp/relayflowd-b010002dd8ed.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":668} +{"s":"FB3c","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB3c/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EJ7MZMPWXWX7TWDR8CPWN\",\"socketPath\":\"/tmp/relayflowd-abc4825d5dbc.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":668} +{"s":"FB4","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB4/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EJ85ZF540C3DDDG7FVVJW\",\"socketPath\":\"/tmp/relayflowd-144127a11435.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":667} +{"s":"FB4","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB4/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EJ8B4X35CMWP268QVABWC\",\"socketPath\":\"/tmp/relayflowd-3c16c81fd77f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":703} +{"s":"FB4","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB4/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EJ8B3B1TREZ50M675KETZ\",\"socketPath\":\"/tmp/relayflowd-cad94e021834.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":704} +{"s":"FB4","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB4/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EJ8W0FNQWNTBKPWXP334P\",\"socketPath\":\"/tmp/relayflowd-4725601564a3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":704} +{"s":"FB4","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB4/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EJ90V34Z34A8523VDTSZQ\",\"socketPath\":\"/tmp/relayflowd-9366736a7dca.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":669} +{"s":"FB4","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB4/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EJ91CQZ0C6JBNTC2WAVNE\",\"socketPath\":\"/tmp/relayflowd-7018de20b102.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":700} +{"s":"FB6","start":"forced","resume":"forced","i":0,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJ9JE56EXM8HMX4P3DEPV\",\"runId\":\"01M53EJ9JE56EXM8HMX4P3DEPV\",\"socketPath\":\"/tmp/relayflowd-5aa344db661f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-1 c=1 sleep 0.4; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2028} +{"s":"FB6","start":"forced","resume":"forced","i":1,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJ9Q0HDRFMF710SS1QX1M\",\"runId\":\"01M53EJ9Q0HDRFMF710SS1QX1M\",\"socketPath\":\"/tmp/relayflowd-c83ee11e5cb4.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2057} +{"s":"FB6","start":"forced","resume":"forced","i":2,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJ9QNR08FSM6QYZ4SFVFD\",\"runId\":\"01M53EJ9QNR08FSM6QYZ4SFVFD\",\"socketPath\":\"/tmp/relayflowd-d59751f118c3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.4; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2128} +{"s":"FB6","start":"forced","resume":"forced","i":3,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJBEZ0WGWAVTR0YS071F2\",\"runId\":\"01M53EJBEZ0WGWAVTR0YS071F2\",\"socketPath\":\"/tmp/relayflowd-e9f489771fb5.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-3 c=1 sleep 0.2; printf C","run-2 c=1 printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2141} +{"s":"FB6","start":"forced","resume":"forced","i":4,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJBM1KG65RWHZHXHYBK72\",\"runId\":\"01M53EJBM1KG65RWHZHXHYBK72\",\"socketPath\":\"/tmp/relayflowd-da27e866eb30.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-1 c=1 sleep 0.4; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2242} +{"s":"FB6","start":"forced","resume":"forced","i":5,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJBQ1YYFSWX25X85166W9\",\"runId\":\"01M53EJBQ1YYFSWX25X85166W9\",\"socketPath\":\"/tmp/relayflowd-8a59ac25b5b3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-2 c=1 printf B","run-1 c=1 sleep 0.4; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2337} +{"s":"FB7","start":"forced","resume":"forced","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJDJ66N7J6FV6QY9H4H5W\",\"runId\":\"01M53EJDJ66N7J6FV6QY9H4H5W\",\"socketPath\":\"/tmp/relayflowd-ac204e8a97d0.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-1 c=1 sleep 0.5; printf A","run-3 c=1 sleep 0.1; printf C","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2030} +{"s":"FB7","start":"forced","resume":"forced","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJDTYYNPMSZDXTQ3WYFKM\",\"runId\":\"01M53EJDTYYNPMSZDXTQ3WYFKM\",\"socketPath\":\"/tmp/relayflowd-583de8aa55c6.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-1 c=1 sleep 0.5; printf A","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2070} +{"s":"FB7","start":"forced","resume":"forced","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJE16AHTB8SMZKX19BFN8\",\"runId\":\"01M53EJE16AHTB8SMZKX19BFN8\",\"socketPath\":\"/tmp/relayflowd-86ece0f025df.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-1 c=1 sleep 0.5; printf A","run-3 c=1 sleep 0.1; printf C","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2116} +{"s":"FB7","start":"forced","resume":"forced","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJFGWF9VNRT5ZPMHKZAWR\",\"runId\":\"01M53EJFGWF9VNRT5ZPMHKZAWR\",\"socketPath\":\"/tmp/relayflowd-868db2f529e9.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf C","run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2197} +{"s":"FB7","start":"forced","resume":"forced","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJFTHS4V0QCY5VWQH9KFP\",\"runId\":\"01M53EJFTHS4V0QCY5VWQH9KFP\",\"socketPath\":\"/tmp/relayflowd-fb46ea28f209.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-3 c=1 sleep 0.1; printf C","run-2 c=1 printf B","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2299} +{"s":"FB8","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB8/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EJHNA4JXW2TSG1RG344MW\",\"socketPath\":\"/tmp/relayflowd-dd382c207e9e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":608} +{"s":"FB7","start":"forced","resume":"forced","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EJG2CBC784SZJ06YXYFBS\",\"runId\":\"01M53EJG2CBC784SZJ06YXYFBS\",\"socketPath\":\"/tmp/relayflowd-64f78374acf1.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf C","run-2 c=1 printf B","run-1 c=1 sleep 0.5; printf A","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2399} +{"s":"FB8","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB8/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EJJ3DZX5ETCNSAHJSQQ0W\",\"socketPath\":\"/tmp/relayflowd-ad071bc8d190.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":633} +{"s":"FB8","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB8/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EJJ90FBMJXQG8WP39J0X9\",\"socketPath\":\"/tmp/relayflowd-2d57db1e49ab.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":630} +{"s":"FB8","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB8/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EJJDGM08SY79D0HXCBBH4\",\"socketPath\":\"/tmp/relayflowd-49f365506645.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":627} +{"s":"FB8","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB8/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EJJPHRFJ5DCN1RNGKEY3G\",\"socketPath\":\"/tmp/relayflowd-ef46e13ed523.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":601} +{"s":"FB8","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fb/FB8/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EJJVZYDRDMNRSAGQF88VZ\",\"socketPath\":\"/tmp/relayflowd-bbd8218eb95d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":true,"ms":590} +SUMMARY FB1 forced>forced ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FB2 forced>forced ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FB3 forced>forced ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FB3c forced>forced ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FB4 forced>forced ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FB6 forced>forced ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaZ +SUMMARY FB7 forced>forced ok=0/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FB8 forced>forced ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-prior-fr.log b/evidence/native-parallel-review8/h7-prior-fr.log new file mode 100644 index 000000000..d46eec30f --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-fr.log @@ -0,0 +1,98 @@ +{"s":"FRrace","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRrace/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFRCRD544DF4SZKJ28F8P\",\"socketPath\":\"/tmp/relayflowd-ef8f6dfef369.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":721} +{"s":"FRrace","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRrace/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFRCXD76406KTYSP8CCG6\",\"socketPath\":\"/tmp/relayflowd-71496bcf93e3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":740} +{"s":"FRrace","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRrace/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFRCXM69BYC64HK18SEBF\",\"socketPath\":\"/tmp/relayflowd-1769ac7ddd94.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":739} +{"s":"FRrace","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRrace/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EFS12BTK54CHWQGCP10A4\",\"socketPath\":\"/tmp/relayflowd-072a95418fd1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":650} +{"s":"FRrace","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRrace/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EFS1R27QRNF3XP8PW3N46\",\"socketPath\":\"/tmp/relayflowd-794f24d976d1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":669} +{"s":"FRrace","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRrace/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EFS21ZENAVJ3NGJ38CYHK\",\"socketPath\":\"/tmp/relayflowd-482eac1d5aab.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":668} +{"s":"FRany","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRany/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFSNWJXEDXZYKQKES2TCQ\",\"socketPath\":\"/tmp/relayflowd-c0d7908c6672.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":656} +{"s":"FRany","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRany/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFSPPX8730382RHRHJEQ5\",\"socketPath\":\"/tmp/relayflowd-d24db9a60679.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":655} +{"s":"FRany","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRany/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFSQ09HHJB9B4JR7DFAVE\",\"socketPath\":\"/tmp/relayflowd-2bed2c8a9a2b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":670} +{"s":"FRany","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRany/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EFT9STVPGBWCEYC4CTM2J\",\"socketPath\":\"/tmp/relayflowd-a7ea5ecdb24f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":606} +{"s":"FRany","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRany/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EFT92MP3WRNESR04DTEM7\",\"socketPath\":\"/tmp/relayflowd-708e134595a7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":640} +{"s":"FRany","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRany/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EFTA1X2GRRECYKN617NFW\",\"socketPath\":\"/tmp/relayflowd-99508ed8ed37.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":605} +{"s":"FRnestrace","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRnestrace/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFTWW2YMS4MT9N1Q1S31K\",\"socketPath\":\"/tmp/relayflowd-41ea13453524.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":622} +{"s":"FRnestrace","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRnestrace/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFTWXT0EPTSD5GQT9M3FS\",\"socketPath\":\"/tmp/relayflowd-0c6f5fb00083.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":622} +{"s":"FRnestrace","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRnestrace/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFTX5VNJMGCTQK1KPMDZ5\",\"socketPath\":\"/tmp/relayflowd-e81e45d8b269.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":622} +{"s":"FRnestrace","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRnestrace/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EFVGSFKD1RQ10JGV5S1NK\",\"socketPath\":\"/tmp/relayflowd-bf38c24b88f2.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":644} +{"s":"FRnestrace","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRnestrace/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EFVGZ1NCNQT9V6GTYDT49\",\"socketPath\":\"/tmp/relayflowd-5bd07f982b22.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":628} +{"s":"FRnestrace","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRnestrace/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EFVGS898Q3H5639TZRXFJ\",\"socketPath\":\"/tmp/relayflowd-1e2501a1475b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":645} +{"s":"FRdefer","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRdefer/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFW4NPBRTZ6Q7BTS2A19Y\",\"socketPath\":\"/tmp/relayflowd-80a38ffadc87.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":624} +{"s":"FRdefer","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRdefer/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFW4NP1J2P821X71MMRC8\",\"socketPath\":\"/tmp/relayflowd-7df521220dff.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":627} +{"s":"FRdefer","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRdefer/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFW4NH12H4KW32M0DFH2B\",\"socketPath\":\"/tmp/relayflowd-d3fb8f01a295.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":627} +{"s":"FRdefer","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRdefer/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EFWQZDT25B7M794JMT998\",\"socketPath\":\"/tmp/relayflowd-3348be4c8844.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":621} +{"s":"FRdefer","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRdefer/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EFWRC9SR4V65WNB9H1WCV\",\"socketPath\":\"/tmp/relayflowd-32afaffe8c6c.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":639} +{"s":"FRdefer","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRdefer/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EFWR96R5N6P7PQWYQ75BH\",\"socketPath\":\"/tmp/relayflowd-2bf5cda594a3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":639} +{"s":"FRthen","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthen/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFXB3W29E2YSQ2Z8RR34D\",\"socketPath\":\"/tmp/relayflowd-a82f41414043.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":608} +{"s":"FRthen","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthen/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFXBMMV4BFNNQA62AVQJN\",\"socketPath\":\"/tmp/relayflowd-656a464cf427.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":608} +{"s":"FRthen","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthen/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFXBEEDBZDXXE5R48YYG7\",\"socketPath\":\"/tmp/relayflowd-6132e68dd447.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":608} +{"s":"FRthen","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthen/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EFXY5WPCRK91N69S924JA\",\"socketPath\":\"/tmp/relayflowd-89eae2512bcd.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":648} +{"s":"FRthen","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthen/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EFXZ2SH3VAKCBQ05E1SVT\",\"socketPath\":\"/tmp/relayflowd-3a9bb3bb01e9.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":652} +{"s":"FRthen","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthen/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EFXYWF587BF4WV4Y8KD5A\",\"socketPath\":\"/tmp/relayflowd-94d8591208bc.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":653} +{"s":"FRsettled","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRsettled/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFYHT82PYQCM4R2TT2C66\",\"socketPath\":\"/tmp/relayflowd-9531ec15f9f1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":581} +{"s":"FRsettled","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRsettled/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFYJY7P0H23V51Q0CETTX\",\"socketPath\":\"/tmp/relayflowd-6e3b11c20763.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":605} +{"s":"FRsettled","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRsettled/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFYK7F84PFQ38QPM65V45\",\"socketPath\":\"/tmp/relayflowd-11aff392c1f3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":622} +{"s":"FRsettled","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRsettled/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EFZ4BD6DWPDF3RZBX0TKP\",\"socketPath\":\"/tmp/relayflowd-e4f96a13b364.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":600} +{"s":"FRsettled","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRsettled/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EFZ5SKQG79XGVHZTXEGW9\",\"socketPath\":\"/tmp/relayflowd-1f3f077bbfe7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":602} +{"s":"FRsettled","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRsettled/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EFZ67YE03ZQY8BD7R0ZA6\",\"socketPath\":\"/tmp/relayflowd-5d82223b55e1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":601} +{"s":"FRset","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRset/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EFZQ623FT7K39RW2QYQQZ\",\"socketPath\":\"/tmp/relayflowd-9a21a43ac183.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":596} +{"s":"FRset","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRset/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EFZRFAQG89371VF0WHAQV\",\"socketPath\":\"/tmp/relayflowd-0e8680f0c285.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":596} +{"s":"FRset","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRset/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EFZRW10092JH8AX4N0X7C\",\"socketPath\":\"/tmp/relayflowd-0ea03af049a7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":596} +{"s":"FRset","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRset/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG0A5V9MB3RX97SCJ1BXW\",\"socketPath\":\"/tmp/relayflowd-f5290210bc48.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":608} +{"s":"FRset","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRset/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG0BYE3Q6RQ5X49DFC99R\",\"socketPath\":\"/tmp/relayflowd-e6f2f751d591.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":624} +{"s":"FRset","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRset/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG0C3Q4GQ6CWTRTF2PV4K\",\"socketPath\":\"/tmp/relayflowd-cea1e3ecf704.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":623} +{"s":"FRgen","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRgen/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG0WTHNZJAW1ZGXAAS1QT\",\"socketPath\":\"/tmp/relayflowd-83b63f702081.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":600} +{"s":"FRgen","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRgen/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG0ZBW79R5REBACCX7KQ8\",\"socketPath\":\"/tmp/relayflowd-81fa915ff0e8.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":603} +{"s":"FRgen","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRgen/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG0Z2749B033PHX3QNXAG\",\"socketPath\":\"/tmp/relayflowd-3655f0cd28cf.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":621} +{"s":"FRgen","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRgen/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG1FECZ7KMPBYZVMPKDM3\",\"socketPath\":\"/tmp/relayflowd-e3759844f142.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":612} +{"s":"FRgen","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRgen/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG1H346PGNT7BVWB8C22T\",\"socketPath\":\"/tmp/relayflowd-e8cc17c34b75.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":574} +{"s":"FRgen","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRgen/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG1JKV98D3SBJYKN3AVD3\",\"socketPath\":\"/tmp/relayflowd-789ca72f8532.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":623} +{"s":"FRthenagg","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthenagg/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG222CWDQ7RWEQYK1AEA2\",\"socketPath\":\"/tmp/relayflowd-bfc77bdd5d0a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":582} +{"s":"FRthenagg","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthenagg/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG24207YHSP357KT714HJ\",\"socketPath\":\"/tmp/relayflowd-f77f2a0e8474.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":599} +{"s":"FRthenagg","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthenagg/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG254X0S6X17AD1DTY7ZJ\",\"socketPath\":\"/tmp/relayflowd-04f13333b6df.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":601} +{"s":"FRthenagg","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthenagg/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG2N4XF1NHEM55979G3P1\",\"socketPath\":\"/tmp/relayflowd-03508662d8d4.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":609} +{"s":"FRthenagg","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthenagg/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG2PDRP15VZQSD6DQ1DVM\",\"socketPath\":\"/tmp/relayflowd-61669021e367.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":578} +{"s":"FRthenagg","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRthenagg/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG2QSEQ9PETMY6Z2EJ30C\",\"socketPath\":\"/tmp/relayflowd-bdbbd074cc9b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":593} +{"s":"FRmicro","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRmicro/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG388G8QKC7ZWN0NWSKQD\",\"socketPath\":\"/tmp/relayflowd-4b2ae86996e5.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":625} +{"s":"FRmicro","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRmicro/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG3988Z0NEJTJ6VQ81C59\",\"socketPath\":\"/tmp/relayflowd-fa931950b766.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":608} +{"s":"FRmicro","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRmicro/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG3AHD8TXTJB97MMD0C5V\",\"socketPath\":\"/tmp/relayflowd-de8679addb8b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":592} +{"s":"FRmicro","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRmicro/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG3V9SFR7DEP729SDMHXY\",\"socketPath\":\"/tmp/relayflowd-fa8d12c64eb2.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":594} +{"s":"FRmicro","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRmicro/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG3VXPT9C7KY5TXHX8WG3\",\"socketPath\":\"/tmp/relayflowd-ceca3079368f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":593} +{"s":"FRmicro","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRmicro/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG3X3TKGZ6YG1WRYH5DHP\",\"socketPath\":\"/tmp/relayflowd-c6ce2669b63f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":593} +{"s":"FRcatch","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRcatch/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG4DY8JJ44XA21Y7547P5\",\"socketPath\":\"/tmp/relayflowd-b5595a7ac9f2.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":596} +{"s":"FRcatch","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRcatch/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG4EG7GCY4J45R0RBW7Y7\",\"socketPath\":\"/tmp/relayflowd-5a295ef2c8c9.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":597} +{"s":"FRcatch","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRcatch/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG4FKTMTPHEX720J16YT2\",\"socketPath\":\"/tmp/relayflowd-efe2784645b7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":597} +{"s":"FRcatch","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRcatch/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG50EEM1HRSVCFCG6ZPB0\",\"socketPath\":\"/tmp/relayflowd-4ff0aeccd0b6.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":598} +{"s":"FRcatch","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRcatch/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG510FGX98VEQ8JAPM2BR\",\"socketPath\":\"/tmp/relayflowd-ffe0d43dfa2b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":599} +{"s":"FRcatch","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRcatch/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG525DWXMYB8VA6M25GS7\",\"socketPath\":\"/tmp/relayflowd-f77cebdaf568.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":583} +{"s":"FRfinally","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRfinally/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG5KKQW4SQRAB18ETP664\",\"socketPath\":\"/tmp/relayflowd-78f23a91a69e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":600} +{"s":"FRfinally","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRfinally/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG5KHMD7CPQYWY90SGATX\",\"socketPath\":\"/tmp/relayflowd-aaf6199e1b87.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":617} +{"s":"FRfinally","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRfinally/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG5MD94FY64RTF4GYCJJ8\",\"socketPath\":\"/tmp/relayflowd-8ab012461c59.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":585} +{"s":"FRfinally","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRfinally/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG67CYHXKP5BFD5NWGDBW\",\"socketPath\":\"/tmp/relayflowd-01e58ae103e0.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":607} +{"s":"FRfinally","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRfinally/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG6761DAFZH75K148SSXP\",\"socketPath\":\"/tmp/relayflowd-1da02d183a2a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":627} +{"s":"FRfinally","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRfinally/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG676MRHY5MBDM4SW74SX\",\"socketPath\":\"/tmp/relayflowd-ae77d3455d4a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":626} +{"s":"FRiter","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRiter/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG6TG4D9ZCB4NRVWFFPSZ\",\"socketPath\":\"/tmp/relayflowd-c37efe21e778.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":614} +{"s":"FRiter","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRiter/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG6TGY3Z4PAJ6YZ2JJZ1M\",\"socketPath\":\"/tmp/relayflowd-85aeaa772084.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":613} +{"s":"FRiter","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRiter/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG6TG24W86NF33N2BTTM1\",\"socketPath\":\"/tmp/relayflowd-a282e6a736d8.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":631} +{"s":"FRiter","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRiter/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG7DFTVAVGMZJVGVTMR15\",\"socketPath\":\"/tmp/relayflowd-4a93f71fcc15.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":613} +{"s":"FRiter","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRiter/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG7DFHEN5CZWHEN4V68SK\",\"socketPath\":\"/tmp/relayflowd-cef9b5edfd3e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":613} +{"s":"FRiter","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRiter/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG7DWPNG6T66QEM0PZVGF\",\"socketPath\":\"/tmp/relayflowd-8037ab7cc5cc.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":611} +{"s":"FRwrap","start":"forced","resume":"forced","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRwrap/forced-forced-1/chain.flow.ts\",\"rootRunId\":\"01M53EG80YY6SRDAHQYJPDP6SG\",\"socketPath\":\"/tmp/relayflowd-833bf5fb6e81.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":622} +{"s":"FRwrap","start":"forced","resume":"forced","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRwrap/forced-forced-0/chain.flow.ts\",\"rootRunId\":\"01M53EG816CBETSVYDTXT5RK1M\",\"socketPath\":\"/tmp/relayflowd-3e2b302183b8.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":641} +{"s":"FRwrap","start":"forced","resume":"forced","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRwrap/forced-forced-2/chain.flow.ts\",\"rootRunId\":\"01M53EG81BRKHX6DYEDE8YGD34\",\"socketPath\":\"/tmp/relayflowd-fb8fbbacf75d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":626} +{"s":"FRwrap","start":"forced","resume":"forced","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRwrap/forced-forced-3/chain.flow.ts\",\"rootRunId\":\"01M53EG8M71P8Z74ZT2YWQQXDA\",\"socketPath\":\"/tmp/relayflowd-4a684c262af7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":606} +{"s":"FRwrap","start":"forced","resume":"forced","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRwrap/forced-forced-5/chain.flow.ts\",\"rootRunId\":\"01M53EG8MWJ5XZPMX8DY48NR32\",\"socketPath\":\"/tmp/relayflowd-95fd8b3a5c37.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":604} +{"s":"FRwrap","start":"forced","resume":"forced","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel f.run body lost its source certificate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel f.run body lost its source certificate\"}],\"path\":\"/w/runs/r8prior-fr/FRwrap/forced-forced-4/chain.flow.ts\",\"rootRunId\":\"01M53EG8MZ3CK0AP5ZEWC14ZT9\",\"socketPath\":\"/tmp/relayflowd-3685b68a3436.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"ok":false,"ms":623} +SUMMARY FRrace forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRany forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRnestrace forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRdefer forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRthen forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRsettled forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRset forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRgen forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRthenagg forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRmicro forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRcatch forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRfinally forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRiter forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FRwrap forced>forced ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-prior-native.log b/evidence/native-parallel-review8/h7-prior-native.log new file mode 100644 index 000000000..5b3f3f6fb --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-native.log @@ -0,0 +1,21 @@ +{"s":"A1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EF6WX4MSM80Z0V5HPVJYN\",\"runId\":\"01M53EF6WX4MSM80Z0V5HPVJYN\",\"socketPath\":\"/tmp/relayflowd-9721cd49b9a5.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-1 c=1 sleep 0.3; printf A","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1928} +{"s":"A1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EF6W8Z5F5F7J6288BH3R4\",\"runId\":\"01M53EF6W8Z5F5F7J6288BH3R4\",\"socketPath\":\"/tmp/relayflowd-8f7d5be14ed1.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf C","run-1 c=1 sleep 0.3; printf A","run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1965} +{"s":"A1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EF6X4CR5MRB2QSSWSAZEG\",\"runId\":\"01M53EF6X4CR5MRB2QSSWSAZEG\",\"socketPath\":\"/tmp/relayflowd-f7d358fbe7e8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-4 c=1 sleep 0.3; printf D","run-3 c=1 printf C","run-2 c=1 printf B","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2030} +{"s":"A1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EF8PZT8SAB7NS5VQ2QH6Q\",\"runId\":\"01M53EF8PZT8SAB7NS5VQ2QH6Q\",\"socketPath\":\"/tmp/relayflowd-7d1b416cf03c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2082} +{"s":"A1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EF8QJ7K7XJBE74BD0N5MZ\",\"runId\":\"01M53EF8QJ7K7XJBE74BD0N5MZ\",\"socketPath\":\"/tmp/relayflowd-293d408be262.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-3 c=1 printf C","run-1 c=1 sleep 0.3; printf A","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2123} +{"s":"A1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EF8STFDJ1R0SPQ6DYXXS6\",\"runId\":\"01M53EF8STFDJ1R0SPQ6DYXXS6\",\"socketPath\":\"/tmp/relayflowd-570e8c4aa488.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf C","run-2 c=1 printf B","run-1 c=1 sleep 0.3; printf A","run-4 c=1 sleep 0.3; printf D","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2217} +{"s":"B1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFAQKM3N030ZWPBPD5SBS\",\"runId\":\"01M53EFAQKM3N030ZWPBPD5SBS\",\"socketPath\":\"/tmp/relayflowd-56f5d35a8dee.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1469} +{"s":"B1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFAT2DVRS2E3P2B5PVNMW\",\"runId\":\"01M53EFAT2DVRS2E3P2B5PVNMW\",\"socketPath\":\"/tmp/relayflowd-b061d6029d21.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-3 c=1 printf D","run-2 c=1 printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1548} +{"s":"B1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFAYG20ERFT4EFVR7EM2J\",\"runId\":\"01M53EFAYG20ERFT4EFVR7EM2J\",\"socketPath\":\"/tmp/relayflowd-4c8168298686.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1579} +{"s":"B1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFC5N6FEV4JN28CD6YXTE\",\"runId\":\"01M53EFC5N6FEV4JN28CD6YXTE\",\"socketPath\":\"/tmp/relayflowd-acbe232d33a4.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-3 c=1 printf D","run-2 c=1 printf C","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1750} +{"s":"B1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFCB3VRS8NRRZZGFF84TA\",\"runId\":\"01M53EFCB3VRS8NRRZZGFF84TA\",\"socketPath\":\"/tmp/relayflowd-824597c4da7d.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf D","run-1 c=1 printf A","run-2 c=1 printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1875} +{"s":"B1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFCFJZSF0G6T0BJF53QH7\",\"runId\":\"01M53EFCFJZSF0G6T0BJF53QH7\",\"socketPath\":\"/tmp/relayflowd-b5ef702fa02c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-3 c=1 printf D","run-2 c=1 printf C","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1854} +{"s":"N2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFDTT4MJ1TZHZY2VCAMHT\",\"runId\":\"01M53EFDTT4MJ1TZHZY2VCAMHT\",\"socketPath\":\"/tmp/relayflowd-748a2eb1c1b0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1750} +{"s":"N2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFE51YKGVRM1M9DEJQFYB\",\"runId\":\"01M53EFE51YKGVRM1M9DEJQFYB\",\"socketPath\":\"/tmp/relayflowd-070b9fc00d8e.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1935} +{"s":"N2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFE9JNYGFYZS6EZ0GSWDQ\",\"runId\":\"01M53EFE9JNYGFYZS6EZ0GSWDQ\",\"socketPath\":\"/tmp/relayflowd-64c31bd377e6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1997} +{"s":"N2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFFNRKBNQX3FWYFDW3FMA\",\"runId\":\"01M53EFFNRKBNQX3FWYFDW3FMA\",\"socketPath\":\"/tmp/relayflowd-43119069e9bc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2124} +{"s":"N2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFG11F0G83X5NJS1N7RHC\",\"runId\":\"01M53EFG11F0G83X5NJS1N7RHC\",\"socketPath\":\"/tmp/relayflowd-870728702fc0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2130} +{"s":"N2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EFG9CQRGX8563AZ7KVY6S\",\"runId\":\"01M53EFG9CQRGX8563AZ7KVY6S\",\"socketPath\":\"/tmp/relayflowd-36587cacfe8b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2229} +SUMMARY A1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=LRZ +SUMMARY B1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=RLZ +SUMMARY N2 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaZ diff --git a/evidence/native-parallel-review8/h7-prior-p.log b/evidence/native-parallel-review8/h7-prior-p.log new file mode 100644 index 000000000..70b4e9827 --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-p.log @@ -0,0 +1,112 @@ +{"s":"P1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECV9485S3Y99MQZ2BF9XS\",\"runId\":\"01M53ECV9485S3Y99MQZ2BF9XS\",\"socketPath\":\"/tmp/relayflowd-d788ee909986.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2127} +{"s":"P1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECV91PVBCT65J1J8Y1R9V\",\"runId\":\"01M53ECV91PVBCT65J1J8Y1R9V\",\"socketPath\":\"/tmp/relayflowd-369d70b6fc78.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2204} +{"s":"P1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECV97090N33JR2FEK9VQB\",\"runId\":\"01M53ECV97090N33JR2FEK9VQB\",\"socketPath\":\"/tmp/relayflowd-85f8f36e4ff6.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2270} +{"s":"P1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECXA4X95T61T2MH0H04VV\",\"runId\":\"01M53ECXA4X95T61T2MH0H04VV\",\"socketPath\":\"/tmp/relayflowd-20f5241d4aaf.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2345} +{"s":"P1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECXC64HZENJGCFKM0HDAW\",\"runId\":\"01M53ECXC64HZENJGCFKM0HDAW\",\"socketPath\":\"/tmp/relayflowd-c9460525f17f.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2380} +{"s":"P1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECXE1DES89CA5261ZCPKQ\",\"runId\":\"01M53ECXE1DES89CA5261ZCPKQ\",\"socketPath\":\"/tmp/relayflowd-0bab381cfb30.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2506} +{"s":"P1h","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECZKEB230QV6X8CSE0XQ0\",\"runId\":\"01M53ECZKEB230QV6X8CSE0XQ0\",\"socketPath\":\"/tmp/relayflowd-2e5efe7b08e4.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2103} +{"s":"P1h","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECZPM2Y1CHJHAY5YE0TM4\",\"runId\":\"01M53ECZPM2Y1CHJHAY5YE0TM4\",\"socketPath\":\"/tmp/relayflowd-b6e46afdc04a.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2065} +{"s":"P1h","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ECZWXVJ3JPEG4ZK16MXJZ\",\"runId\":\"01M53ECZWXVJ3JPEG4ZK16MXJZ\",\"socketPath\":\"/tmp/relayflowd-ccd25c5b6800.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2180} +{"s":"P1h","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED1MSNWTP3T7MKYW1Z098\",\"runId\":\"01M53ED1MSNWTP3T7MKYW1Z098\",\"socketPath\":\"/tmp/relayflowd-6c7d1810117a.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2261} +{"s":"P1h","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED1PNKGJCPA7VVQG0TA2Z\",\"runId\":\"01M53ED1PNKGJCPA7VVQG0TA2Z\",\"socketPath\":\"/tmp/relayflowd-147fa0cbc367.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2364} +{"s":"P1h","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED219VKP1TH21H4Z113W9\",\"runId\":\"01M53ED219VKP1TH21H4Z113W9\",\"socketPath\":\"/tmp/relayflowd-3b44001bfc42.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2510} +{"s":"P1c","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED3W0CKR9FRTD5WTVA36T\",\"runId\":\"01M53ED3W0CKR9FRTD5WTVA36T\",\"socketPath\":\"/tmp/relayflowd-1632ff16b641.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2025} +{"s":"P1c","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED40GEGZRMWBKH5JQXBS8\",\"runId\":\"01M53ED40GEGZRMWBKH5JQXBS8\",\"socketPath\":\"/tmp/relayflowd-48f2c4103ba1.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2080} +{"s":"P1c","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED4FEKQ0A0AP67AN3T4VQ\",\"runId\":\"01M53ED4FEKQ0A0AP67AN3T4VQ\",\"socketPath\":\"/tmp/relayflowd-c4af98f6e924.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2158} +{"s":"P1c","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED5SDZDGA3T0E37Q7HZP6\",\"runId\":\"01M53ED5SDZDGA3T0E37Q7HZP6\",\"socketPath\":\"/tmp/relayflowd-c90d1343cc2d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2172} +{"s":"P1c","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED61JNTMGSNHXT5XBX07H\",\"runId\":\"01M53ED61JNTMGSNHXT5XBX07H\",\"socketPath\":\"/tmp/relayflowd-1f29aa40bf4c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2333} +{"s":"P1c","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED6J2KENXXBGAERFGCA4V\",\"runId\":\"01M53ED6J2KENXXBGAERFGCA4V\",\"socketPath\":\"/tmp/relayflowd-a7e3b10f0640.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2492} +{"s":"P1n","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED7Y2KKAHR1QBRE04F98E\",\"runId\":\"01M53ED7Y2KKAHR1QBRE04F98E\",\"socketPath\":\"/tmp/relayflowd-db9c9612787d.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2116} +{"s":"P1n","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED8BW9XSX7H7PGRNMYKGE\",\"runId\":\"01M53ED8BW9XSX7H7PGRNMYKGE\",\"socketPath\":\"/tmp/relayflowd-67496eb84444.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2182} +{"s":"P1n","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED9118DFK86ZN4H12RN67\",\"runId\":\"01M53ED9118DFK86ZN4H12RN67\",\"socketPath\":\"/tmp/relayflowd-36177f9ccd5f.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2249} +{"s":"P1n","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ED9ZP33XR6ETT374A91PP\",\"runId\":\"01M53ED9ZP33XR6ETT374A91PP\",\"socketPath\":\"/tmp/relayflowd-3ccc2392c849.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2254} +{"s":"P1n","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDAF6KE5W6XPNBAX6C21W\",\"runId\":\"01M53EDAF6KE5W6XPNBAX6C21W\",\"socketPath\":\"/tmp/relayflowd-b1a279f3d0fa.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2425} +{"s":"P1n","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDB6GJKD6GWFNYGVNGVE0\",\"runId\":\"01M53EDB6GJKD6GWFNYGVNGVE0\",\"socketPath\":\"/tmp/relayflowd-3cf274edbc3b.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2515} +{"s":"P1bn","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDC7H5NGFYNPNMJ77C3BS\",\"runId\":\"01M53EDC7H5NGFYNPNMJ77C3BS\",\"socketPath\":\"/tmp/relayflowd-293a160eab0c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2098} +{"s":"P1bn","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDCT5GJ5K4R7119S7ZK3S\",\"runId\":\"01M53EDCT5GJ5K4R7119S7ZK3S\",\"socketPath\":\"/tmp/relayflowd-0af0140b307a.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2164} +{"s":"P1bn","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDDN8TFJAXAY2X1M1ARX8\",\"runId\":\"01M53EDDN8TFJAXAY2X1M1ARX8\",\"socketPath\":\"/tmp/relayflowd-3c6ef6abd22e.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2264} +{"s":"P1bn","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDE8F3JEXB65WTAVG1R0S\",\"runId\":\"01M53EDE8F3JEXB65WTAVG1R0S\",\"socketPath\":\"/tmp/relayflowd-89872b9d396f.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2322} +{"s":"P1bn","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDEXYC9G9PY82PXD68WKZ\",\"runId\":\"01M53EDEXYC9G9PY82PXD68WKZ\",\"socketPath\":\"/tmp/relayflowd-bfc44bf5dbcf.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2402} +{"s":"P2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDGHNS8QHB0KZYG4M4TFZ\",\"runId\":\"01M53EDGHNS8QHB0KZYG4M4TFZ\",\"socketPath\":\"/tmp/relayflowd-00293bf57c8d.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1344} +{"s":"P1bn","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDFWAD2TWRV7WG1MN7WAJ\",\"runId\":\"01M53EDFWAD2TWRV7WG1MN7WAJ\",\"socketPath\":\"/tmp/relayflowd-77363b63918e.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2575} +{"s":"P2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDH9V4GX4RH9W1SPFC1VZ\",\"runId\":\"01M53EDH9V4GX4RH9W1SPFC1VZ\",\"socketPath\":\"/tmp/relayflowd-61923a3c0180.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1396} +{"s":"P2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDHVGSKQ3HFSDNKKCV138\",\"runId\":\"01M53EDHVGSKQ3HFSDNKKCV138\",\"socketPath\":\"/tmp/relayflowd-a6def754e689.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1461} +{"s":"P2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDJD7Q9M1X7SQTTH16C13\",\"runId\":\"01M53EDJD7Q9M1X7SQTTH16C13\",\"socketPath\":\"/tmp/relayflowd-341c211dd00a.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1576} +{"s":"P2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDJNGCDNAF3CZDGS95V4D\",\"runId\":\"01M53EDJNGCDNAF3CZDGS95V4D\",\"socketPath\":\"/tmp/relayflowd-dba68dede23f.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1678} +{"s":"P2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDK8Z51PVBA8SX2YNVPC6\",\"runId\":\"01M53EDK8Z51PVBA8SX2YNVPC6\",\"socketPath\":\"/tmp/relayflowd-27d28de7f4b8.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1768} +{"s":"C1e","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"XY","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDKYEXX4BDNV44JTAQ64B\",\"runId\":\"01M53EDKYEXX4BDNV44JTAQ64B\",\"socketPath\":\"/tmp/relayflowd-f45b3645026e.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XYZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=1 printf Y >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2008} +{"s":"C1e","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"XY","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDM9Z7NV4J0VCWMPYYH81\",\"runId\":\"01M53EDM9Z7NV4J0VCWMPYYH81\",\"socketPath\":\"/tmp/relayflowd-2c1dc14d9964.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XYZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=1 printf Y >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2001} +{"s":"C1e","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"XY","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDN1TEJVMDY03W1VQTZN2\",\"runId\":\"01M53EDN1TEJVMDY03W1VQTZN2\",\"socketPath\":\"/tmp/relayflowd-5f52e79093e4.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XYZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=1 printf Y >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2093} +{"s":"C1e","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"XY","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDNWNRVQR9EC22YNAE8FQ\",\"runId\":\"01M53EDNWNRVQR9EC22YNAE8FQ\",\"socketPath\":\"/tmp/relayflowd-4a3427bb4bfd.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XYZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=1 printf Y >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2137} +{"s":"C1e","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"XY","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDP7NSZM1ZRDQ0JPCKC80\",\"runId\":\"01M53EDP7NSZM1ZRDQ0JPCKC80\",\"socketPath\":\"/tmp/relayflowd-b3febb836dbb.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XYZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=1 printf Y >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2200} +{"s":"C1e","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"XY","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDQ1KRNRZCNKW25TVR71R\",\"runId\":\"01M53EDQ1KRNRZCNKW25TVR71R\",\"socketPath\":\"/tmp/relayflowd-d5417b092319.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XYZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf X >> effects","run-2 c=1 printf Y >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2386} +{"s":"G1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ABG","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDQXABH6WQT7J6FGMX441\",\"runId\":\"01M53EDQXABH6WQT7J6FGMX441\",\"socketPath\":\"/tmp/relayflowd-7021ef6e9255.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABGZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 sleep 0.3; printf B >> effects","run-3 c=1 printf G >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1595} +{"s":"G1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ABG","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDRCVGVQEMYK1DZB13NSC\",\"runId\":\"01M53EDRCVGVQEMYK1DZB13NSC\",\"socketPath\":\"/tmp/relayflowd-7cc96ccdc2b3.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABGZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 sleep 0.3; printf B >> effects","run-3 c=1 printf G >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1749} +{"s":"G1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ABG","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDSCXMGGZKMVPDM43G1D5\",\"runId\":\"01M53EDSCXMGGZKMVPDM43G1D5\",\"socketPath\":\"/tmp/relayflowd-39821569d380.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABGZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 sleep 0.3; printf B >> effects","run-3 c=1 printf G >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1812} +{"s":"G1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ABG","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDSHQAK0EX0WKH4XA1Q0B\",\"runId\":\"01M53EDSHQAK0EX0WKH4XA1Q0B\",\"socketPath\":\"/tmp/relayflowd-91bf43d3df63.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABGZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 sleep 0.3; printf B >> effects","run-3 c=1 printf G >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1911} +{"s":"G1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ABG","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDT3Q1975D1DF3YJ42FTF\",\"runId\":\"01M53EDT3Q1975D1DF3YJ42FTF\",\"socketPath\":\"/tmp/relayflowd-673edef8fcfd.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABGZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 sleep 0.3; printf B >> effects","run-3 c=1 printf G >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1965} +{"s":"H1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDVCAS3ZAPP8DE1TVG4EC\",\"runId\":\"01M53EDVCAS3ZAPP8DE1TVG4EC\",\"socketPath\":\"/tmp/relayflowd-b60a3233efce.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1703} +{"s":"G1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ABG","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDV5VAWXYZSXHZCPXDP7F\",\"runId\":\"01M53EDV5VAWXYZSXHZCPXDP7F\",\"socketPath\":\"/tmp/relayflowd-61aaee8ee743.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABGZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 sleep 0.3; printf B >> effects","run-3 c=1 printf G >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2189} +{"s":"H1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDW13WNT13E2QWBWD5K8P\",\"runId\":\"01M53EDW13WNT13E2QWBWD5K8P\",\"socketPath\":\"/tmp/relayflowd-701c5bf7944b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1851} +{"s":"H1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDX3NFYJF43RJ8AZFAJDS\",\"runId\":\"01M53EDX3NFYJF43RJ8AZFAJDS\",\"socketPath\":\"/tmp/relayflowd-14d139472097.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1920} +{"s":"H1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDXANTHWXSWGXSGFY105C\",\"runId\":\"01M53EDXANTHWXSWGXSGFY105C\",\"socketPath\":\"/tmp/relayflowd-3536c04d552d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1983} +{"s":"H1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDXVPK41C1EBJQ9R46W7S\",\"runId\":\"01M53EDXVPK41C1EBJQ9R46W7S\",\"socketPath\":\"/tmp/relayflowd-85cf1e9c3a81.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2133} +{"s":"H2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDZ7HX8M9T5X21JSEXP8X\",\"runId\":\"01M53EDZ7HX8M9T5X21JSEXP8X\",\"socketPath\":\"/tmp/relayflowd-9149e73fd573.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["agent-1 c=1 left","agent-2 c=1 right","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1534} +{"s":"H1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDYYVCTK1RYEJBY6S0EHF\",\"runId\":\"01M53EDYYVCTK1RYEJBY6S0EHF\",\"socketPath\":\"/tmp/relayflowd-cbaa6f6ef590.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2279} +{"s":"H2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EDZXHXN8JSRGMRW0CQZQT\",\"runId\":\"01M53EDZXHXN8JSRGMRW0CQZQT\",\"socketPath\":\"/tmp/relayflowd-bcc642719905.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["agent-1 c=1 left","agent-2 c=1 right","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1591} +{"s":"H2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE0Q1BNJMCWF7ED32TFEH\",\"runId\":\"01M53EE0Q1BNJMCWF7ED32TFEH\",\"socketPath\":\"/tmp/relayflowd-85b28a4f716b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["agent-1 c=1 left","agent-2 c=1 right","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1640} +{"s":"H2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE15W026B75AY335NN57Z\",\"runId\":\"01M53EE15W026B75AY335NN57Z\",\"socketPath\":\"/tmp/relayflowd-153eadca5d63.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["agent-1 c=1 left","agent-2 c=1 right","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1777} +{"s":"H2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE1FHJAQB4F6VJ9GAB0DS\",\"runId\":\"01M53EE1FHJAQB4F6VJ9GAB0DS\",\"socketPath\":\"/tmp/relayflowd-af5a5b5759e1.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["agent-1 c=1 left","agent-2 c=1 right","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1818} +{"s":"H2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE2AV7S64533A4M9M354Y\",\"runId\":\"01M53EE2AV7S64533A4M9M354Y\",\"socketPath\":\"/tmp/relayflowd-d9fe10ce2e38.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["agent-1 c=1 left","agent-2 c=1 right","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1995} +{"s":"K4","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE2X97HMS2N2RWJ4AAGPV\",\"runId\":\"01M53EE2X97HMS2N2RWJ4AAGPV\",\"socketPath\":\"/tmp/relayflowd-2d7b34803205.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1786} +{"s":"K4","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE3907ARKWB1KRAK2N1J8\",\"runId\":\"01M53EE3907ARKWB1KRAK2N1J8\",\"socketPath\":\"/tmp/relayflowd-3eaa3303c590.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1912} +{"s":"K4","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE4ACVPKCE5KQVXKJK24V\",\"runId\":\"01M53EE4ACVPKCE5KQVXKJK24V\",\"socketPath\":\"/tmp/relayflowd-104ce6e40731.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1971} +{"s":"K4","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE4PAVZXBBGNRSXXC5JS1\",\"runId\":\"01M53EE4PAVZXBBGNRSXXC5JS1\",\"socketPath\":\"/tmp/relayflowd-2a0273957223.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2049} +{"s":"K4","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE545PHF3F5K7YS5ZYRK5\",\"runId\":\"01M53EE545PHF3F5K7YS5ZYRK5\",\"socketPath\":\"/tmp/relayflowd-139e1228b69d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2126} +{"s":"K4","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE65VRE95CMAKDJQWDXQ8\",\"runId\":\"01M53EE65VRE95CMAKDJQWDXQ8\",\"socketPath\":\"/tmp/relayflowd-1e48f0df1eb5.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"serial","journalReplay":false,"dups":[],"ids":["llm-1 c=1 ","llm-2 c=1 ","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2397} +{"s":"I1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE6RTBQ6562D8B6QEB1PZ\",\"runId\":\"01M53EE6RTBQ6562D8B6QEB1PZ\",\"socketPath\":\"/tmp/relayflowd-9418dd9c7236.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"serial","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1956} +{"s":"I1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE78XTATN985MQHDDVZK2\",\"runId\":\"01M53EE78XTATN985MQHDDVZK2\",\"socketPath\":\"/tmp/relayflowd-4abc1b800473.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"serial","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":1941} +{"s":"I1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE8MFNHW7W8KFW3084APZ\",\"runId\":\"01M53EE8MFNHW7W8KFW3084APZ\",\"socketPath\":\"/tmp/relayflowd-3c2abe22b662.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"serial","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":2044} +{"s":"I1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE8MKH95QQBTBNT876AFG\",\"runId\":\"01M53EE8MKH95QQBTBNT876AFG\",\"socketPath\":\"/tmp/relayflowd-8b3d7e15196b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"serial","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":2098} +{"s":"I1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EE96DN6ZMTV5MB47D98DC\",\"runId\":\"01M53EE96DN6ZMTV5MB47D98DC\",\"socketPath\":\"/tmp/relayflowd-e93f0aca7924.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"serial","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":2215} +{"s":"K2b","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ABC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEAKY2CWKAMASB3KF32QP\",\"runId\":\"01M53EEAKY2CWKAMASB3KF32QP\",\"socketPath\":\"/tmp/relayflowd-761754f4ba3b.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABCZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1754} +{"s":"I1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"xyLR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEAMAZWRVD0TH89BZ1DJ8\",\"runId\":\"01M53EEAMAZWRVD0TH89BZ1DJ8\",\"socketPath\":\"/tmp/relayflowd-9e9174fed728.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"xyLRZ","mode":"serial","journalReplay":true,"dups":["printf '%s' '{\"name\":\"child\",\"completionReason\":\"s: dispatch-1 & dispatch-2"],"ids":["dispatch-1--run-1 c=1 printf first","dispatch-1--run-2 c=1 printf second","dispatch-2--run-1 c=1 printf first","dispatch-2--run-2 c=1 printf second","dispatch-1--run-3 c=1 printf x >> effects","dispatch-2--run-3 c=1 printf y >> effects","dispatch-1--complete-4 c=1 :","dispatch-2--complete-4 c=1 :","dispatch-1 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","dispatch-2 c=1 printf '%s' '{\"name\":\"child\",\"completionReason\":\"success\"}'","run-3 c=1 printf L >> effects","run-4 c=1 printf R >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":true,"ok":false,"ms":2274} +{"s":"K2b","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ABC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEB88DQCDX5CJ433HGBCR\",\"runId\":\"01M53EEB88DQCDX5CJ433HGBCR\",\"socketPath\":\"/tmp/relayflowd-d07bd1f61610.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABCZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1860} +{"s":"K2b","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ABC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EECASF5QCAASS4K1B51TQ\",\"runId\":\"01M53EECASF5QCAASS4K1B51TQ\",\"socketPath\":\"/tmp/relayflowd-b5ce8419fb13.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABCZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1938} +{"s":"K2b","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ABC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EECRHF859WXPF07WYV62G\",\"runId\":\"01M53EECRHF859WXPF07WYV62G\",\"socketPath\":\"/tmp/relayflowd-8c6df50d2448.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABCZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2085} +{"s":"K2b","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ABC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EED2A77ES3AFZ15RZV3Z0\",\"runId\":\"01M53EED2A77ES3AFZ15RZV3Z0\",\"socketPath\":\"/tmp/relayflowd-d05d50ce3da8.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABCZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2124} +{"s":"K2b","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ABC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEE7QXG2NEJMV1Y7G7422\",\"runId\":\"01M53EEE7QXG2NEJMV1Y7G7422\",\"socketPath\":\"/tmp/relayflowd-3fb2f76298e7.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABCZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2373} +{"s":"K3","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEESX12ZCYVJ6Q1CX7DGT\",\"runId\":\"01M53EEESX12ZCYVJ6Q1CX7DGT\",\"socketPath\":\"/tmp/relayflowd-471c3ed8e2bd.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf a","run-2 c=1 sleep 0.1; printf b","run-3 c=1 printf ab >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1859} +{"s":"K3","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEF43HH9YYBE6QVNH1EF6\",\"runId\":\"01M53EEF43HH9YYBE6QVNH1EF6\",\"socketPath\":\"/tmp/relayflowd-ac15e5f418b0.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf a","run-2 c=1 sleep 0.1; printf b","run-3 c=1 printf ab >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1952} +{"s":"K3","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEGJ7WME7VW0ZAQR1QZWQ\",\"runId\":\"01M53EEGJ7WME7VW0ZAQR1QZWQ\",\"socketPath\":\"/tmp/relayflowd-6a564080f806.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf a","run-2 c=1 sleep 0.1; printf b","run-3 c=1 printf ab >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2032} +{"s":"K3","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEGMVDS3MC730MSWMS672\",\"runId\":\"01M53EEGMVDS3MC730MSWMS672\",\"socketPath\":\"/tmp/relayflowd-f2e7b2cefbea.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf a","run-2 c=1 sleep 0.1; printf b","run-3 c=1 printf ab >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2073} +{"s":"K3","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEH2G5EBYDJJ7JMCGFM5Z\",\"runId\":\"01M53EEH2G5EBYDJJ7JMCGFM5Z\",\"socketPath\":\"/tmp/relayflowd-e6d58894ad27.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf a","run-2 c=1 sleep 0.1; printf b","run-3 c=1 printf ab >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2188} +{"s":"K5b","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEJNXEPJGKETEZ4Z9WGBA\",\"runId\":\"01M53EEJNXEPJGKETEZ4Z9WGBA\",\"socketPath\":\"/tmp/relayflowd-931a19cff610.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1676} +{"s":"K3","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEJJNTV7XK8Z3CGWXN5EJ\",\"runId\":\"01M53EEJJNTV7XK8Z3CGWXN5EJ\",\"socketPath\":\"/tmp/relayflowd-c6c06698c5f2.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf a","run-2 c=1 sleep 0.1; printf b","run-3 c=1 printf ab >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2334} +{"s":"K5b","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEK7H8ZARR0N6ANSJ310A\",\"runId\":\"01M53EEK7H8ZARR0N6ANSJ310A\",\"socketPath\":\"/tmp/relayflowd-5d38ef58bdd8.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1705} +{"s":"K5b","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEM9FSRKRJQZWMX727DVM\",\"runId\":\"01M53EEM9FSRKRJQZWMX727DVM\",\"socketPath\":\"/tmp/relayflowd-130a1959b540.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1780} +{"s":"K5b","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEMSZCF9D10TXVYMH9HVS\",\"runId\":\"01M53EEMSZCF9D10TXVYMH9HVS\",\"socketPath\":\"/tmp/relayflowd-6e9e38491014.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1838} +{"s":"K5b","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEMVQRWZWJHCFRPNJRC7F\",\"runId\":\"01M53EEMVQRWZWJHCFRPNJRC7F\",\"socketPath\":\"/tmp/relayflowd-c97403f459ff.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1950} +{"s":"K5b","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEP141R48CWSGSCQPTG3M\",\"runId\":\"01M53EEP141R48CWSGSCQPTG3M\",\"socketPath\":\"/tmp/relayflowd-3d489f2dbcb6.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A >> effects","run-2 c=1 printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2078} +{"s":"K13b","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BAC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEPKGNA9THV6X5C63NH12\",\"runId\":\"01M53EEPKGNA9THV6X5C63NH12\",\"socketPath\":\"/tmp/relayflowd-57890ba9f802.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf B >> effects","run-2 c=1 sleep 0.1; printf A >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1880} +{"s":"K13b","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BAC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EEPR0HAEAYAJCMGBSVMTV\",\"runId\":\"01M53EEPR0HAEAYAJCMGBSVMTV\",\"socketPath\":\"/tmp/relayflowd-2c022cea6866.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf B >> effects","run-2 c=1 sleep 0.1; printf A >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1957} +{"s":"K13b","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BAC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EER2T31HHMX4523KBZ07K\",\"runId\":\"01M53EER2T31HHMX4523KBZ07K\",\"socketPath\":\"/tmp/relayflowd-107ed442c3d5.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf B >> effects","run-2 c=1 sleep 0.1; printf A >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2055} +{"s":"K13b","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BAC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EERE9SYDAA4B65NQ1P7ZF\",\"runId\":\"01M53EERE9SYDAA4B65NQ1P7ZF\",\"socketPath\":\"/tmp/relayflowd-d81917e68861.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf B >> effects","run-2 c=1 sleep 0.1; printf A >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2142} +{"s":"K13b","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BAC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EERNA94PDKS35HM3DAWGX\",\"runId\":\"01M53EERNA94PDKS35HM3DAWGX\",\"socketPath\":\"/tmp/relayflowd-9062162aa602.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf B >> effects","run-2 c=1 sleep 0.1; printf A >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2205} +{"s":"K13b","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BAC","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EET2CKPZ0P5M6EGVT5JFB\",\"runId\":\"01M53EET2CKPZ0P5M6EGVT5JFB\",\"socketPath\":\"/tmp/relayflowd-3b64e477e87a.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf B >> effects","run-2 c=1 sleep 0.1; printf A >> effects","run-3 c=1 printf C >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2532} +SUMMARY P1 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY P1h head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY P1c head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY P1n head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY P1bn head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY P2 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY C1e head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XYZ +SUMMARY G1 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=ABGZ +SUMMARY H1 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=LRZ +SUMMARY H2 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=LRZ +SUMMARY K4 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=LRZ +SUMMARY I1 head>head ok=0/6 replay=6 fresh=0 mode=serial codes=0 effects=xyLRZ +SUMMARY K2b head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=ABCZ +SUMMARY K3 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abZ +SUMMARY K5b head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=ABZ +SUMMARY K13b head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=BACZ diff --git a/evidence/native-parallel-review8/h7-prior-q.log b/evidence/native-parallel-review8/h7-prior-q.log new file mode 100644 index 000000000..ca6860b07 --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-q.log @@ -0,0 +1,49 @@ +{"s":"Q5","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAHWVK6XGDJ0HWGVXY5YN\",\"runId\":\"01M53EAHWVK6XGDJ0HWGVXY5YN\",\"socketPath\":\"/tmp/relayflowd-b3e5591922fb.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2235} +{"s":"Q5","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAHWTXY9GYFETKQDGBMAE\",\"runId\":\"01M53EAHWTXY9GYFETKQDGBMAE\",\"socketPath\":\"/tmp/relayflowd-135ccf445036.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2292} +{"s":"Q5","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAHWVTW2QRJWHVMFYQ7FQ\",\"runId\":\"01M53EAHWVTW2QRJWHVMFYQ7FQ\",\"socketPath\":\"/tmp/relayflowd-ed652cc325a4.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2355} +{"s":"Q5","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAM20Z4Q3HCP40PZG43KZ\",\"runId\":\"01M53EAM20Z4Q3HCP40PZG43KZ\",\"socketPath\":\"/tmp/relayflowd-98f519f5d54c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2403} +{"s":"Q5","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAM3R7P6JX03TP0HDQ2X9\",\"runId\":\"01M53EAM3R7P6JX03TP0HDQ2X9\",\"socketPath\":\"/tmp/relayflowd-b64a522e9e72.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2415} +{"s":"Q5","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAM53RHDYMSHCRJAN32FV\",\"runId\":\"01M53EAM53RHDYMSHCRJAN32FV\",\"socketPath\":\"/tmp/relayflowd-07eea13fb647.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2560} +{"s":"Q5n","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAPED1G8M8HRNG3YPQRTD\",\"runId\":\"01M53EAPED1G8M8HRNG3YPQRTD\",\"socketPath\":\"/tmp/relayflowd-87ebef836d64.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2400} +{"s":"Q5n","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAPEPN9TT24W90DEVB7RG\",\"runId\":\"01M53EAPEPN9TT24W90DEVB7RG\",\"socketPath\":\"/tmp/relayflowd-023d1f0a221e.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2361} +{"s":"Q5n","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAPQJH84A5XAEQWNNRRMH\",\"runId\":\"01M53EAPQJH84A5XAEQWNNRRMH\",\"socketPath\":\"/tmp/relayflowd-cfdaef6a996e.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2390} +{"s":"Q5n","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EARSZK4CNSSNACNDR2JJH\",\"runId\":\"01M53EARSZK4CNSSNACNDR2JJH\",\"socketPath\":\"/tmp/relayflowd-ee6fb3de28da.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2514} +{"s":"Q5n","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EART95Y381NPDXKSYEZ1M\",\"runId\":\"01M53EART95Y381NPDXKSYEZ1M\",\"socketPath\":\"/tmp/relayflowd-93f9d7968fe9.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2585} +{"s":"Q5n","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAS1319BF6SDAF48KJ7RT\",\"runId\":\"01M53EAS1319BF6SDAF48KJ7RT\",\"socketPath\":\"/tmp/relayflowd-a9a88d785959.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.4; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=1 printf X >> effects","run-8 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2673} +{"s":"Q5h","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAV6WKT9J8WXSPXXH24P3\",\"runId\":\"01M53EAV6WKT9J8WXSPXXH24P3\",\"socketPath\":\"/tmp/relayflowd-6e9eae696a4f.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2069} +{"s":"Q5h","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAV982Y76MPS8FCF40P4A\",\"runId\":\"01M53EAV982Y76MPS8FCF40P4A\",\"socketPath\":\"/tmp/relayflowd-8e2378e45c60.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2120} +{"s":"Q5h","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAVKKSEBH5DP4FSESCZQ9\",\"runId\":\"01M53EAVKKSEBH5DP4FSESCZQ9\",\"socketPath\":\"/tmp/relayflowd-87fdb343a4cf.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2145} +{"s":"Q5h","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAX6AK3PM6JT9YPSVYN95\",\"runId\":\"01M53EAX6AK3PM6JT9YPSVYN95\",\"socketPath\":\"/tmp/relayflowd-be31fb84ef07.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2354} +{"s":"Q5h","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAXBT0033FEEJT536PZ0A\",\"runId\":\"01M53EAXBT0033FEEJT536PZ0A\",\"socketPath\":\"/tmp/relayflowd-c14793518acd.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2449} +{"s":"Q5h","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAXPNM5YE9VBKEX7SKMEA\",\"runId\":\"01M53EAXPNM5YE9VBKEX7SKMEA\",\"socketPath\":\"/tmp/relayflowd-f28afe8460de.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2544} +{"s":"Q5w","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAZJ39C02ZNCE80W5JZYP\",\"runId\":\"01M53EAZJ39C02ZNCE80W5JZYP\",\"socketPath\":\"/tmp/relayflowd-fad2bdec956c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2302} +{"s":"Q5w","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EAZRSV8CQ6BTWG848SSB8\",\"runId\":\"01M53EAZRSV8CQ6BTWG848SSB8\",\"socketPath\":\"/tmp/relayflowd-1b13f5e07cfa.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2374} +{"s":"Q5w","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB05CK513BHDYY8Y574XY\",\"runId\":\"01M53EB05CK513BHDYY8Y574XY\",\"socketPath\":\"/tmp/relayflowd-436a4432e45c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2374} +{"s":"Q5w","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB1QTB7A2CZ18QESR31HJ\",\"runId\":\"01M53EB1QTB7A2CZ18QESR31HJ\",\"socketPath\":\"/tmp/relayflowd-53945fca4327.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2473} +{"s":"Q5w","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB218Q8GM3ZQ2F0SN355G\",\"runId\":\"01M53EB218Q8GM3ZQ2F0SN355G\",\"socketPath\":\"/tmp/relayflowd-05b250ebc5dd.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2566} +{"s":"Q5w","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB2FXX8N06M6HVGBH48RW\",\"runId\":\"01M53EB2FXX8N06M6HVGBH48RW\",\"socketPath\":\"/tmp/relayflowd-c03c9d10b53f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2654} +{"s":"Q5wn","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB45217VCQWRR75BAB5K2\",\"runId\":\"01M53EB45217VCQWRR75BAB5K2\",\"socketPath\":\"/tmp/relayflowd-9a8bfb709d39.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2338} +{"s":"Q5wn","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB4HF1A9GCZVFR3D3BRZT\",\"runId\":\"01M53EB4HF1A9GCZVFR3D3BRZT\",\"socketPath\":\"/tmp/relayflowd-c8201a47ed80.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2383} +{"s":"Q5wn","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB53510ASY1BDNGF1XH7Y\",\"runId\":\"01M53EB53510ASY1BDNGF1XH7Y\",\"socketPath\":\"/tmp/relayflowd-c0abd1eaa4e1.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2499} +{"s":"Q5wn","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB6E4798BSDYWD4FQM5WQ\",\"runId\":\"01M53EB6E4798BSDYWD4FQM5WQ\",\"socketPath\":\"/tmp/relayflowd-7e6eb69a37ac.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2532} +{"s":"Q5wn","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB6X1JZTJR6FA9HSGJCJQ\",\"runId\":\"01M53EB6X1JZTJR6FA9HSGJCJQ\",\"socketPath\":\"/tmp/relayflowd-7a1a6951c98b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2753} +{"s":"Q5wn","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB7GQK3B58TPGV4XRP69M\",\"runId\":\"01M53EB7GQK3B58TPGV4XRP69M\",\"socketPath\":\"/tmp/relayflowd-beb524311525.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2787} +{"s":"Q5wh","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB8ZD6SJHHFTY5FBS7NZG\",\"runId\":\"01M53EB8ZD6SJHHFTY5FBS7NZG\",\"socketPath\":\"/tmp/relayflowd-e46beef835e6.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2297} +{"s":"Q5wh","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EB9JHP519TB6KKSTEQAJ0\",\"runId\":\"01M53EB9JHP519TB6KKSTEQAJ0\",\"socketPath\":\"/tmp/relayflowd-ddcb44f95bf4.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2284} +{"s":"Q5wh","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBA88P7E1AXPK5DPX7KZJ\",\"runId\":\"01M53EBA88P7E1AXPK5DPX7KZJ\",\"socketPath\":\"/tmp/relayflowd-cbfa81e43c43.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2368} +{"s":"Q5wh","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBB5YZR94MQ9PE7JFW3XE\",\"runId\":\"01M53EBB5YZR94MQ9PE7JFW3XE\",\"socketPath\":\"/tmp/relayflowd-45c3e373c024.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2491} +{"s":"Q5wh","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBBTNE2HY4B08EM7086MF\",\"runId\":\"01M53EBBTNE2HY4B08EM7086MF\",\"socketPath\":\"/tmp/relayflowd-a92d06fa43f0.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2605} +{"s":"Q5wh","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBCJ04PGP6ANW2WEKSZS5\",\"runId\":\"01M53EBCJ04PGP6ANW2WEKSZS5\",\"socketPath\":\"/tmp/relayflowd-430c538b2201.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2729} +{"s":"Q6Pw","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBDJM2RTZJV8J1N705JMJ\",\"runId\":\"01M53EBDJM2RTZJV8J1N705JMJ\",\"socketPath\":\"/tmp/relayflowd-9f6a4b9cce29.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2395} +{"s":"Q6Pw","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBEB88KFRQB2VTP5WGNQT\",\"runId\":\"01M53EBEB88KFRQB2VTP5WGNQT\",\"socketPath\":\"/tmp/relayflowd-fb7089ec8bdf.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2529} +{"s":"Q6Pw","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBF6GMXZHPA5BT3PA09FB\",\"runId\":\"01M53EBF6GMXZHPA5BT3PA09FB\",\"socketPath\":\"/tmp/relayflowd-fee025307850.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2568} +{"s":"Q6Pw","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBFXK1FJ407J3Q0D0H24M\",\"runId\":\"01M53EBFXK1FJ407J3Q0D0H24M\",\"socketPath\":\"/tmp/relayflowd-e89b886ae725.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2635} +{"s":"Q6Pw","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBGTRP7BV9R04D1H512G4\",\"runId\":\"01M53EBGTRP7BV9R04D1H512G4\",\"socketPath\":\"/tmp/relayflowd-70fde2547e0f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2798} +{"s":"Q6Pw","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EBHQBR96NN8Y5B9GV9G7P\",\"runId\":\"01M53EBHQBR96NN8Y5B9GV9G7P\",\"socketPath\":\"/tmp/relayflowd-30a91e31dae6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2969} +SUMMARY Q5 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY Q5n head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY Q5h head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY Q5w head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY Q5wn head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY Q5wh head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY Q6Pw head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ diff --git a/evidence/native-parallel-review8/h7-prior-r.log b/evidence/native-parallel-review8/h7-prior-r.log new file mode 100644 index 000000000..e40770758 --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-r.log @@ -0,0 +1,56 @@ +{"s":"R1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8S3MXYBHBK209XBP3FYD\",\"runId\":\"01M53E8S3MXYBHBK209XBP3FYD\",\"socketPath\":\"/tmp/relayflowd-d519d775b241.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2281} +{"s":"R1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8S3M1SF519GZCB4AV85K\",\"runId\":\"01M53E8S3M1SF519GZCB4AV85K\",\"socketPath\":\"/tmp/relayflowd-5e1e0263cfb7.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2310} +{"s":"R1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8S3MVTSWJ58FVYTR06FB\",\"runId\":\"01M53E8S3MVTSWJ58FVYTR06FB\",\"socketPath\":\"/tmp/relayflowd-cf7c2d7bc996.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2396} +{"s":"R1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8V6604YPGW3FZZV8SJ5A\",\"runId\":\"01M53E8V6604YPGW3FZZV8SJ5A\",\"socketPath\":\"/tmp/relayflowd-2f2829b7033f.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2260} +{"s":"R1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8V7KPAQVJ7YJY2QW78PK\",\"runId\":\"01M53E8V7KPAQVJ7YJY2QW78PK\",\"socketPath\":\"/tmp/relayflowd-1a8bdec81ebc.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2372} +{"s":"R1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8V99CTSXAP68DSZ24BVF\",\"runId\":\"01M53E8V99CTSXAP68DSZ24BVF\",\"socketPath\":\"/tmp/relayflowd-ea64af6445cd.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2469} +{"s":"R1w","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8XBHCRG71M6K8EE7GHEB\",\"runId\":\"01M53E8XBHCRG71M6K8EE7GHEB\",\"socketPath\":\"/tmp/relayflowd-82a8ec49964a.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2285} +{"s":"R1w","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8XH40MMAN952DYHBYHT6\",\"runId\":\"01M53E8XH40MMAN952DYHBYHT6\",\"socketPath\":\"/tmp/relayflowd-e60b3e64fbbb.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2314} +{"s":"R1w","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8XPTBE4C1SB8M8H6GHRA\",\"runId\":\"01M53E8XPTBE4C1SB8M8H6GHRA\",\"socketPath\":\"/tmp/relayflowd-2ff485a06f7f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2410} +{"s":"R1w","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8ZJMY7HX838EHH6HADPS\",\"runId\":\"01M53E8ZJMY7HX838EHH6HADPS\",\"socketPath\":\"/tmp/relayflowd-aa6c08135d36.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2456} +{"s":"R1w","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E8ZS8AYPCYDMXCXADDF9Z\",\"runId\":\"01M53E8ZS8AYPCYDMXCXADDF9Z\",\"socketPath\":\"/tmp/relayflowd-469fab75311d.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2818} +{"s":"R1w","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E902Y9R9HMPXTN7N137WV\",\"runId\":\"01M53E902Y9R9HMPXTN7N137WV\",\"socketPath\":\"/tmp/relayflowd-635993cd616c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2903} +{"s":"R1wn","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9270EAXADV8913J8NQ3M\",\"runId\":\"01M53E9270EAXADV8913J8NQ3M\",\"socketPath\":\"/tmp/relayflowd-bc74b2db54b6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2551} +{"s":"R1wn","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E92JHRPN27T9N7XJX4EHB\",\"runId\":\"01M53E92JHRPN27T9N7XJX4EHB\",\"socketPath\":\"/tmp/relayflowd-2d0cd68ebafd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2481} +{"s":"R1wn","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E92XG6XRE4ARC38CJK711\",\"runId\":\"01M53E92XG6XRE4ARC38CJK711\",\"socketPath\":\"/tmp/relayflowd-e65e238eb90b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2496} +{"s":"R1wn","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E94G8057BCXNJPSFF47AG\",\"runId\":\"01M53E94G8057BCXNJPSFF47AG\",\"socketPath\":\"/tmp/relayflowd-f613dc110618.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2506} +{"s":"R1wn","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E94ZF8N4EYE5FK40QV5NX\",\"runId\":\"01M53E94ZF8N4EYE5FK40QV5NX\",\"socketPath\":\"/tmp/relayflowd-0760df87a16a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2651} +{"s":"R1wn","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E95BA15R2DA5W1TNV7XY4\",\"runId\":\"01M53E95BA15R2DA5W1TNV7XY4\",\"socketPath\":\"/tmp/relayflowd-fad0ca6a39f0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2799} +{"s":"R2w","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E96YSXKYV3T3SWN8BCX91\",\"runId\":\"01M53E96YSXKYV3T3SWN8BCX91\",\"socketPath\":\"/tmp/relayflowd-4a7cb4ccc0f8.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2223} +{"s":"R2w","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E97H8NE0HKG9HB46EXFGZ\",\"runId\":\"01M53E97H8NE0HKG9HB46EXFGZ\",\"socketPath\":\"/tmp/relayflowd-5a462a8b021d.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2259} +{"s":"R2w","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E982BBEC7M21N0HB812DA\",\"runId\":\"01M53E982BBEC7M21N0HB812DA\",\"socketPath\":\"/tmp/relayflowd-0ce32a74779c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2365} +{"s":"R2w","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E994BXZGERA2N1AM5AQ9W\",\"runId\":\"01M53E994BXZGERA2N1AM5AQ9W\",\"socketPath\":\"/tmp/relayflowd-c6462e33a2b2.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2469} +{"s":"R2w","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E99RBCRGJ0TFWKKA22BJD\",\"runId\":\"01M53E99RBCRGJ0TFWKKA22BJD\",\"socketPath\":\"/tmp/relayflowd-e2de6d35f4c8.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2518} +{"s":"R2w","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9ACHFPEK9PXB1A49AKR5\",\"runId\":\"01M53E9ACHFPEK9PXB1A49AKR5\",\"socketPath\":\"/tmp/relayflowd-8580480df24f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2700} +{"s":"R3","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9BHJD38G9NQ4BET4ENCW\",\"runId\":\"01M53E9BHJD38G9NQ4BET4ENCW\",\"socketPath\":\"/tmp/relayflowd-2ae78323fcda.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2006} +{"s":"R3","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9C772PVSQ66Z0XW7F2WH\",\"runId\":\"01M53E9C772PVSQ66Z0XW7F2WH\",\"socketPath\":\"/tmp/relayflowd-d007c577fced.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2059} +{"s":"R3","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9D0AVX366P5JK522NE5X\",\"runId\":\"01M53E9D0AVX366P5JK522NE5X\",\"socketPath\":\"/tmp/relayflowd-e158391cc0aa.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2119} +{"s":"R3","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9DGK9WXGC4E2V8A7MTNS\",\"runId\":\"01M53E9DGK9WXGC4E2V8A7MTNS\",\"socketPath\":\"/tmp/relayflowd-a18effb6cbfa.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2224} +{"s":"R3","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9E74DKBF0W1PCQW7TFDB\",\"runId\":\"01M53E9E74DKBF0W1PCQW7TFDB\",\"socketPath\":\"/tmp/relayflowd-ef00d01e2401.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2313} +{"s":"R3","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9F2W3H5VMY38YTETTHKH\",\"runId\":\"01M53E9F2W3H5VMY38YTETTHKH\",\"socketPath\":\"/tmp/relayflowd-6975af09dfaa.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.5; printf A","run-2 c=1 printf B","run-3 c=1 sleep 0.1; printf C","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2446} +{"s":"R3w","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9FNMYEMZ59TN286QRW96\",\"runId\":\"01M53E9FNMYEMZ59TN286QRW96\",\"socketPath\":\"/tmp/relayflowd-b66344c1121a.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2253} +{"s":"R3w","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9GFAVPG75X42JXWQA0GD\",\"runId\":\"01M53E9GFAVPG75X42JXWQA0GD\",\"socketPath\":\"/tmp/relayflowd-0b2d06eab82e.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2319} +{"s":"R3w","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9HEZNZ5ZD5FYB3CBNWXJ\",\"runId\":\"01M53E9HEZNZ5ZD5FYB3CBNWXJ\",\"socketPath\":\"/tmp/relayflowd-31ee253eb34f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2494} +{"s":"R3w","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9HVVNRJBHB9MQ5PS3JPZ\",\"runId\":\"01M53E9HVVNRJBHB9MQ5PS3JPZ\",\"socketPath\":\"/tmp/relayflowd-198fb71b36ee.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2542} +{"s":"R3w","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9JRFK3GE02TGNRWTR3MD\",\"runId\":\"01M53E9JRFK3GE02TGNRWTR3MD\",\"socketPath\":\"/tmp/relayflowd-378a4f67357a.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2633} +{"s":"R4w","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9MBSD8DXA579WPDEHR03\",\"runId\":\"01M53E9MBSD8DXA579WPDEHR03\",\"socketPath\":\"/tmp/relayflowd-a2dcc287095e.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2225} +{"s":"R3w","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9KXJE0XW6TQN5B21M8VR\",\"runId\":\"01M53E9KXJE0XW6TQN5B21M8VR\",\"socketPath\":\"/tmp/relayflowd-a31a35171f84.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2732} +{"s":"R4w","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9NB1KNKGJMS3JN0VHWM9\",\"runId\":\"01M53E9NB1KNKGJMS3JN0VHWM9\",\"socketPath\":\"/tmp/relayflowd-6225b7ca4de8.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2341} +{"s":"R4w","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9PG1FJCBM2HP2TZFQSAV\",\"runId\":\"01M53E9PG1FJCBM2HP2TZFQSAV\",\"socketPath\":\"/tmp/relayflowd-a2edc5576dc2.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2367} +{"s":"R4w","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9PJZNK7XW59D2HVPKCTH\",\"runId\":\"01M53E9PJZNK7XW59D2HVPKCTH\",\"socketPath\":\"/tmp/relayflowd-5861f11252e0.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2462} +{"s":"R4w","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9QKNEV94NMBW4FH28E79\",\"runId\":\"01M53E9QKNEV94NMBW4FH28E79\",\"socketPath\":\"/tmp/relayflowd-6d5c936aa624.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2560} +{"s":"R1c","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9S01SWQ34V55EJFQACK3\",\"runId\":\"01M53E9S01SWQ34V55EJFQACK3\",\"socketPath\":\"/tmp/relayflowd-14de157fa55f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2234} +{"s":"R4w","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9RVESW7HA1DYZTGRXATB\",\"runId\":\"01M53E9RVESW7HA1DYZTGRXATB\",\"socketPath\":\"/tmp/relayflowd-b03701f296c8.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2706} +{"s":"R1c","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9T44VFW9AFJEGCSCV8TH\",\"runId\":\"01M53E9T44VFW9AFJEGCSCV8TH\",\"socketPath\":\"/tmp/relayflowd-1477822c460c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2297} +{"s":"R1c","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9V63GWYWRQF7YE5SEPRX\",\"runId\":\"01M53E9V63GWYWRQF7YE5SEPRX\",\"socketPath\":\"/tmp/relayflowd-5b2f61f34bde.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2385} +{"s":"R1c","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9VG614KZS152EBW1G6XY\",\"runId\":\"01M53E9VG614KZS152EBW1G6XY\",\"socketPath\":\"/tmp/relayflowd-ce2e572e0d81.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2473} +{"s":"R1c","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9WB60C2G5NC9DYDG4P44\",\"runId\":\"01M53E9WB60C2G5NC9DYDG4P44\",\"socketPath\":\"/tmp/relayflowd-7a7ede6e17a1.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2587} +{"s":"R1c","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E9XGHWWGGQFMW65NNFD3W\",\"runId\":\"01M53E9XGHWWGGQFMW65NNFD3W\",\"socketPath\":\"/tmp/relayflowd-20afe854da01.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.5; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.1; printf C","run-5 c=1 printf X >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2723} +SUMMARY R1 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY R1w head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY R1wn head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY R2w head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY R3 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY R3w head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY R4w head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ +SUMMARY R1c head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=XZ diff --git a/evidence/native-parallel-review8/h7-prior-r5n.log b/evidence/native-parallel-review8/h7-prior-r5n.log new file mode 100644 index 000000000..e1a23cf61 --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-r5n.log @@ -0,0 +1,7 @@ +{"s":"R5n","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EA73SEEDM4JWFF7TSAKGG\",\"runId\":\"01M53EA73SEEDM4JWFF7TSAKGG\",\"socketPath\":\"/tmp/relayflowd-df6421e4072a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2522} +{"s":"R5n","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EA73N4M2ZCE22TW6T1MR8\",\"runId\":\"01M53EA73N4M2ZCE22TW6T1MR8\",\"socketPath\":\"/tmp/relayflowd-8b2d0f486c3b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2579} +{"s":"R5n","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EA72RTGYHSASVY7C0WHZE\",\"runId\":\"01M53EA72RTGYHSASVY7C0WHZE\",\"socketPath\":\"/tmp/relayflowd-1c8e9dee4081.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2642} +{"s":"R5n","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EA9H8KA48K27PY9NZGXRP\",\"runId\":\"01M53EA9H8KA48K27PY9NZGXRP\",\"socketPath\":\"/tmp/relayflowd-2f478e2fb574.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2706} +{"s":"R5n","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EA9K75D0HFEYZ1K0X081Z\",\"runId\":\"01M53EA9K75D0HFEYZ1K0X081Z\",\"socketPath\":\"/tmp/relayflowd-a90562bc7dc5.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2732} +{"s":"R5n","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EA9MDFFFGKQP53CCQEPR9\",\"runId\":\"01M53EA9MDFFFGKQP53CCQEPR9\",\"socketPath\":\"/tmp/relayflowd-80e95b210d6a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2801} +SUMMARY R5n head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ diff --git a/evidence/native-parallel-review8/h7-prior-secrets.log b/evidence/native-parallel-review8/h7-prior-secrets.log new file mode 100644 index 000000000..01ced3ea6 --- /dev/null +++ b/evidence/native-parallel-review8/h7-prior-secrets.log @@ -0,0 +1,28 @@ +{"s":"S1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW67MACP3RW7JCDN7ND1E\",\"runId\":\"01M53EW67MACP3RW7JCDN7ND1E\",\"socketPath\":\"/tmp/relayflowd-3034ffffc246.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-4015931d1cbfe824b3715e3bde0bc2582a6a4310b79beb4fee6f63477777ec80-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1695} +{"s":"S1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW67K2EEHP3BHM0HFCNVV\",\"runId\":\"01M53EW67K2EEHP3BHM0HFCNVV\",\"socketPath\":\"/tmp/relayflowd-79b3078c8ed4.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-4015931d1cbfe824b3715e3bde0bc2582a6a4310b79beb4fee6f63477777ec80-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1759} +{"s":"S1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW67KQJ8PZ6F5MAC0GVQ6\",\"runId\":\"01M53EW67KQJ8PZ6F5MAC0GVQ6\",\"socketPath\":\"/tmp/relayflowd-1b04f63df517.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-4015931d1cbfe824b3715e3bde0bc2582a6a4310b79beb4fee6f63477777ec80-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1804} +{"s":"S1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW7V3Y5K6FRXXR4NVPG3R\",\"runId\":\"01M53EW7V3Y5K6FRXXR4NVPG3R\",\"socketPath\":\"/tmp/relayflowd-f98fc409395d.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-4015931d1cbfe824b3715e3bde0bc2582a6a4310b79beb4fee6f63477777ec80-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1881} +{"s":"S1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW7X2KY150ND99PKDQQGA\",\"runId\":\"01M53EW7X2KY150ND99PKDQQGA\",\"socketPath\":\"/tmp/relayflowd-24419f980ced.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-4015931d1cbfe824b3715e3bde0bc2582a6a4310b79beb4fee6f63477777ec80-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1883} +{"s":"S1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW7YJ8MTQ35S3PSNM2K2B\",\"runId\":\"01M53EW7YJ8MTQ35S3PSNM2K2B\",\"socketPath\":\"/tmp/relayflowd-a00e9fc0477f.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/head-head-","run-after-4015931d1cbfe824b3715e3bde0bc2582a6a4310b79beb4fee6f63477777ec80-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":2120} +{"s":"S1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW9JEQA5TZGZEESD7A447\",\"runId\":\"01M53EW9JEQA5TZGZEESD7A447\",\"socketPath\":\"/tmp/relayflowd-2470977423ad.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-3 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1386} +{"s":"S1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW9MBR2BWEMMMHP1RXB0W\",\"runId\":\"01M53EW9MBR2BWEMMMHP1RXB0W\",\"socketPath\":\"/tmp/relayflowd-750b3dccc9cb.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-3 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1468} +{"s":"S1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EW9VRRA6PSHJDTVGTJ484\",\"runId\":\"01M53EW9VRRA6PSHJDTVGTJ484\",\"socketPath\":\"/tmp/relayflowd-8bbf338c10c3.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-3 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1489} +{"s":"S1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EWAWB8P5R1EYRVRXZN1E1\",\"runId\":\"01M53EWAWB8P5R1EYRVRXZN1E1\",\"socketPath\":\"/tmp/relayflowd-4c4c2779d313.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-3 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1613} +{"s":"S1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EWB03DDH8MTKJXVGHGCA5\",\"runId\":\"01M53EWB03DDH8MTKJXVGHGCA5\",\"socketPath\":\"/tmp/relayflowd-5299113ce9b2.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-3 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1682} +{"s":"S2missing","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53EWCM3HFN9N413R19P0K08\",\"socketPath\":\"/tmp/relayflowd-c1d07fdfc4c6.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":599} +{"s":"S1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EWB9Y1BBC8RQHV6HQT3NR\",\"runId\":\"01M53EWB9Y1BBC8RQHV6HQT3NR\",\"socketPath\":\"/tmp/relayflowd-fa48922d1853.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-2 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-3 c=1 printf \"%s\" \"${R6_TOK:-unset}\" > /w/runs/r8secrets-prior/S1/base-base-","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"sec":"G:ok U:LEAK L:LEAK","ok":true,"ms":1797} +{"s":"S2missing","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53EWCTN87H67KXJ8KYT7QNP\",\"socketPath\":\"/tmp/relayflowd-58f993e57dbd.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":604} +{"s":"S2missing","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53EWD61X01HDG8BEW527QBV\",\"socketPath\":\"/tmp/relayflowd-c61a7ba37c11.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":582} +{"s":"S2missing","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53EWD8BZ94JVS9WFKA1TRGS\",\"socketPath\":\"/tmp/relayflowd-2d2c982a111e.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":617} +{"s":"S2missing","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53EWDE9QRHRTEG15GME0E6B\",\"socketPath\":\"/tmp/relayflowd-ea6986fa4364.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":616} +{"s":"S2missing","start":"base","resume":"base","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/base-base-0/chain.flow.ts\",\"rootRunId\":\"01M53EWDNS75W0Z94QSYTN5KXN\",\"socketPath\":\"/tmp/relayflowd-19aceb6f8227.sock\",\"subscriptions\":[]}\n","mode":"absent","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":423} +{"s":"S2missing","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53EWDRT9S56JS61AH712EA1\",\"socketPath\":\"/tmp/relayflowd-c1c13da8f3cd.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":590} +{"s":"S2missing","start":"base","resume":"base","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/base-base-1/chain.flow.ts\",\"rootRunId\":\"01M53EWDV3TJZ1XWS6QGTYCE9W\",\"socketPath\":\"/tmp/relayflowd-83e05ce3d927.sock\",\"subscriptions\":[]}\n","mode":"absent","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":416} +{"s":"S2missing","start":"base","resume":"base","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/base-base-2/chain.flow.ts\",\"rootRunId\":\"01M53EWE30FQMF5ZVTKXFHYVBV\",\"socketPath\":\"/tmp/relayflowd-d49f48fd71a3.sock\",\"subscriptions\":[]}\n","mode":"absent","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":425} +{"s":"S2missing","start":"base","resume":"base","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/base-base-3/chain.flow.ts\",\"rootRunId\":\"01M53EWE5P6515FHSTW906R9K8\",\"socketPath\":\"/tmp/relayflowd-d47af72ceee4.sock\",\"subscriptions\":[]}\n","mode":"absent","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":409} +{"s":"S2missing","start":"base","resume":"base","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/base-base-4/chain.flow.ts\",\"rootRunId\":\"01M53EWE8EARE206C54B2G70Q3\",\"socketPath\":\"/tmp/relayflowd-d7d34d432ae6.sock\",\"subscriptions\":[]}\n","mode":"absent","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":411} +{"s":"S2missing","start":"base","resume":"base","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R6_ABSENT\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R6_ABSENT\\\" is not available to this run\"}],\"path\":\"/w/runs/r8secrets-prior/S2missing/base-base-5/chain.flow.ts\",\"rootRunId\":\"01M53EWEGQ42JYQA0MMDADWQ79\",\"socketPath\":\"/tmp/relayflowd-97da0f407157.sock\",\"subscriptions\":[]}\n","mode":"absent","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"G:missing U:missing L:missing","ok":true,"ms":423} +SUMMARY S1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=Z +SUMMARY S1 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=Z +SUMMARY S2missing head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY S2missing base>base ok=6/6 replay=0 fresh=6 mode=absent codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-probe.log b/evidence/native-parallel-review8/h7-probe.log new file mode 100644 index 000000000..a9dd68b19 --- /dev/null +++ b/evidence/native-parallel-review8/h7-probe.log @@ -0,0 +1,28 @@ +baseline_native: certified=true grammar=true wrappedCalls=2 +hygiene_branch: certified=false grammar=false wrappedCalls= +hygiene_value: certified=false grammar=false wrappedCalls= +paren_member: certified=true grammar=true wrappedCalls=2 +paren_iife: certified=true grammar=true wrappedCalls=2 +twice: certified=true grammar=true wrappedCalls=2 +ret_values: certified=true grammar=true wrappedCalls=2 +mid_return: certified=true grammar=true wrappedCalls=2 +expr_branch: certified=true grammar=true wrappedCalls=2 +sync_throw: certified=true grammar=true wrappedCalls=2 +type_import: LOAD ERROR flow is not defined +inline_type_import: LOAD ERROR flow is not defined +unicode_escape: certified=true grammar=true wrappedCalls=2 +optional_chain: certified=true grammar=true wrappedCalls=2 +done_last: certified=true grammar=true wrappedCalls=2 +getter_obj: certified=false grammar=false wrappedCalls= +labelled: certified=false grammar=false wrappedCalls= +arguments_nested: certified=false grammar=false wrappedCalls= +loop_literal: certified=false grammar=false wrappedCalls= +value_member: certified=true grammar=true wrappedCalls=2 +record_branch: certified=true grammar=true wrappedCalls=2 +shebang: certified=true grammar=true wrappedCalls=2 +comment_before_import: certified=true grammar=true wrappedCalls=2 +twelve: certified=true grammar=true wrappedCalls=12 +optional_call_member: certified=true grammar=true wrappedCalls=2 +comment_iife: certified=true grammar=true wrappedCalls=2 +multi_decl: certified=true grammar=true wrappedCalls=2 +paren_group: certified=true grammar=true wrappedCalls=2 diff --git a/evidence/native-parallel-review8/h7-rollback-pinned.log b/evidence/native-parallel-review8/h7-rollback-pinned.log new file mode 100644 index 000000000..e0eb9a52d --- /dev/null +++ b/evidence/native-parallel-review8/h7-rollback-pinned.log @@ -0,0 +1,70 @@ +{"s":"RBCI4","start":"head","resume":"p2050","i":0,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQVC97XVKZGHXHGBB5PNW\",\"runId\":\"01M53EQVC97XVKZGHXHGBB5PNW\",\"socketPath\":\"/tmp/relayflowd-67c49c3dea1b.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQVC97XVKZGHXHGBB5PNW\",\"runId\":\"01M53EQVC97XVKZGHXHGBB5PNW\",\"socketPath\":\"/tmp/relayflowd-67c49c3dea1b.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2067} +{"s":"RBCI4","start":"head","resume":"p2050","i":1,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQVC9H6R3S0AW33F0SEXB\",\"runId\":\"01M53EQVC9H6R3S0AW33F0SEXB\",\"socketPath\":\"/tmp/relayflowd-6b1de63d9231.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQVC9H6R3S0AW33F0SEXB\",\"runId\":\"01M53EQVC9H6R3S0AW33F0SEXB\",\"socketPath\":\"/tmp/relayflowd-6b1de63d9231.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2095} +{"s":"RBCI4","start":"head","resume":"p2050","i":2,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQVC9AQGRC0W870WHHJC0\",\"runId\":\"01M53EQVC9AQGRC0W870WHHJC0\",\"socketPath\":\"/tmp/relayflowd-8aa781ab85ac.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQVC9AQGRC0W870WHHJC0\",\"runId\":\"01M53EQVC9AQGRC0W870WHHJC0\",\"socketPath\":\"/tmp/relayflowd-8aa781ab85ac.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2125} +{"s":"RBCI4","start":"head","resume":"p2050","i":3,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQXCNKRXPXT8J4HP5R0KE\",\"runId\":\"01M53EQXCNKRXPXT8J4HP5R0KE\",\"socketPath\":\"/tmp/relayflowd-21f2d75cba25.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQXCNKRXPXT8J4HP5R0KE\",\"runId\":\"01M53EQXCNKRXPXT8J4HP5R0KE\",\"socketPath\":\"/tmp/relayflowd-21f2d75cba25.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2222} +{"s":"RBCI4","start":"head","resume":"p2050","i":4,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQXD46Q4JR77XGE70AP1J\",\"runId\":\"01M53EQXD46Q4JR77XGE70AP1J\",\"socketPath\":\"/tmp/relayflowd-91ed26afe092.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQXD46Q4JR77XGE70AP1J\",\"runId\":\"01M53EQXD46Q4JR77XGE70AP1J\",\"socketPath\":\"/tmp/relayflowd-91ed26afe092.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2301} +{"s":"RBCI4","start":"head","resume":"p2050","i":5,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQXDQNCP2ZQ9PYFGS0BC6\",\"runId\":\"01M53EQXDQNCP2ZQ9PYFGS0BC6\",\"socketPath\":\"/tmp/relayflowd-ae1a46b3419c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQXDQNCP2ZQ9PYFGS0BC6\",\"runId\":\"01M53EQXDQNCP2ZQ9PYFGS0BC6\",\"socketPath\":\"/tmp/relayflowd-ae1a46b3419c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2445} +{"s":"RBCI4","start":"head","resume":"p2051","i":0,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQZGJ1Y3TG10WHNG3HR1E\",\"runId\":\"01M53EQZGJ1Y3TG10WHNG3HR1E\",\"socketPath\":\"/tmp/relayflowd-daebd84fdc7c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQZGJ1Y3TG10WHNG3HR1E\",\"runId\":\"01M53EQZGJ1Y3TG10WHNG3HR1E\",\"socketPath\":\"/tmp/relayflowd-daebd84fdc7c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1851} +{"s":"RBCI4","start":"head","resume":"p2051","i":1,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQZKHTSQASKEBX5YWKSDA\",\"runId\":\"01M53EQZKHTSQASKEBX5YWKSDA\",\"socketPath\":\"/tmp/relayflowd-9314c890fd0c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQZKHTSQASKEBX5YWKSDA\",\"runId\":\"01M53EQZKHTSQASKEBX5YWKSDA\",\"socketPath\":\"/tmp/relayflowd-9314c890fd0c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1907} +{"s":"RBCI4","start":"head","resume":"p2051","i":2,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQZR1TNXZ4J3J16DM0HMZ\",\"runId\":\"01M53EQZR1TNXZ4J3J16DM0HMZ\",\"socketPath\":\"/tmp/relayflowd-928b5c572650.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQZR1TNXZ4J3J16DM0HMZ\",\"runId\":\"01M53EQZR1TNXZ4J3J16DM0HMZ\",\"socketPath\":\"/tmp/relayflowd-928b5c572650.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1963} +{"s":"RBCI4","start":"head","resume":"p2051","i":3,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER19PXDQGBP4FHRYX962C\",\"runId\":\"01M53ER19PXDQGBP4FHRYX962C\",\"socketPath\":\"/tmp/relayflowd-8689d93b1e83.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER19PXDQGBP4FHRYX962C\",\"runId\":\"01M53ER19PXDQGBP4FHRYX962C\",\"socketPath\":\"/tmp/relayflowd-8689d93b1e83.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2068} +{"s":"RBCI4","start":"head","resume":"p2051","i":4,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER1F2S2RQ7M19P0F1348G\",\"runId\":\"01M53ER1F2S2RQ7M19P0F1348G\",\"socketPath\":\"/tmp/relayflowd-c93e3d8ccfe4.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER1F2S2RQ7M19P0F1348G\",\"runId\":\"01M53ER1F2S2RQ7M19P0F1348G\",\"socketPath\":\"/tmp/relayflowd-c93e3d8ccfe4.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2231} +{"s":"RBCI4","start":"head","resume":"p2051","i":5,"fresh":false,"code1":0,"effects1":"abcdyegZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER1NRRQ602KXR70ZT44Q5\",\"runId\":\"01M53ER1NRRQ602KXR70ZT44Q5\",\"socketPath\":\"/tmp/relayflowd-ef8478317fbd.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcd","effectsMid":"abcdyegZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER1NRRQ602KXR70ZT44Q5\",\"runId\":\"01M53ER1NRRQ602KXR70ZT44Q5\",\"socketPath\":\"/tmp/relayflowd-ef8478317fbd.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2178} +{"s":"RBCI5","start":"head","resume":"p2050","i":0,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER3ATM9G5ECR8X72SFJHB\",\"runId\":\"01M53ER3ATM9G5ECR8X72SFJHB\",\"socketPath\":\"/tmp/relayflowd-fd97d01b381d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER3ATM9G5ECR8X72SFJHB\",\"runId\":\"01M53ER3ATM9G5ECR8X72SFJHB\",\"socketPath\":\"/tmp/relayflowd-fd97d01b381d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1919} +{"s":"RBCI5","start":"head","resume":"p2050","i":1,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER3MQ2HM139QS1A6P2Q1D\",\"runId\":\"01M53ER3MQ2HM139QS1A6P2Q1D\",\"socketPath\":\"/tmp/relayflowd-c4b8c2413e97.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER3MQ2HM139QS1A6P2Q1D\",\"runId\":\"01M53ER3MQ2HM139QS1A6P2Q1D\",\"socketPath\":\"/tmp/relayflowd-c4b8c2413e97.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2020} +{"s":"RBCI5","start":"head","resume":"p2050","i":2,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER3TFKHZB7NQ88C4ZATTH\",\"runId\":\"01M53ER3TFKHZB7NQ88C4ZATTH\",\"socketPath\":\"/tmp/relayflowd-4af63ade329c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER3TFKHZB7NQ88C4ZATTH\",\"runId\":\"01M53ER3TFKHZB7NQ88C4ZATTH\",\"socketPath\":\"/tmp/relayflowd-4af63ade329c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2094} +{"s":"RBCI5","start":"head","resume":"p2050","i":3,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER557CDSP3MN2CBWKQ9HD\",\"runId\":\"01M53ER557CDSP3MN2CBWKQ9HD\",\"socketPath\":\"/tmp/relayflowd-18c434769114.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER557CDSP3MN2CBWKQ9HD\",\"runId\":\"01M53ER557CDSP3MN2CBWKQ9HD\",\"socketPath\":\"/tmp/relayflowd-18c434769114.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2034} +{"s":"RBCI5","start":"head","resume":"p2050","i":4,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER5KQJES7F1N3E94Y6439\",\"runId\":\"01M53ER5KQJES7F1N3E94Y6439\",\"socketPath\":\"/tmp/relayflowd-349c36146f2b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER5KQJES7F1N3E94Y6439\",\"runId\":\"01M53ER5KQJES7F1N3E94Y6439\",\"socketPath\":\"/tmp/relayflowd-349c36146f2b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2219} +{"s":"RBCI5","start":"head","resume":"p2050","i":5,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER5W2YM9G0MMDCCFJC9HN\",\"runId\":\"01M53ER5W2YM9G0MMDCCFJC9HN\",\"socketPath\":\"/tmp/relayflowd-f429a8c5a045.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER5W2YM9G0MMDCCFJC9HN\",\"runId\":\"01M53ER5W2YM9G0MMDCCFJC9HN\",\"socketPath\":\"/tmp/relayflowd-f429a8c5a045.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2330} +{"s":"RBCI5","start":"head","resume":"p2051","i":0,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER75HQX00G6VH9NAF5D6Z\",\"runId\":\"01M53ER75HQX00G6VH9NAF5D6Z\",\"socketPath\":\"/tmp/relayflowd-cd08faab492a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER75HQX00G6VH9NAF5D6Z\",\"runId\":\"01M53ER75HQX00G6VH9NAF5D6Z\",\"socketPath\":\"/tmp/relayflowd-cd08faab492a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1891} +{"s":"RBCI5","start":"head","resume":"p2051","i":1,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER7SG6Q4S6QKTYQ1WE664\",\"runId\":\"01M53ER7SG6Q4S6QKTYQ1WE664\",\"socketPath\":\"/tmp/relayflowd-c0c893446a75.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER7SG6Q4S6QKTYQ1WE664\",\"runId\":\"01M53ER7SG6Q4S6QKTYQ1WE664\",\"socketPath\":\"/tmp/relayflowd-c0c893446a75.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1971} +{"s":"RBCI5","start":"head","resume":"p2051","i":2,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER85MSV71H3B4CVNJQBCK\",\"runId\":\"01M53ER85MSV71H3B4CVNJQBCK\",\"socketPath\":\"/tmp/relayflowd-e1312cab9ae7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER85MSV71H3B4CVNJQBCK\",\"runId\":\"01M53ER85MSV71H3B4CVNJQBCK\",\"socketPath\":\"/tmp/relayflowd-e1312cab9ae7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2107} +{"s":"RBCI5","start":"head","resume":"p2051","i":3,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER91H75AZETZFGERYT6GX\",\"runId\":\"01M53ER91H75AZETZFGERYT6GX\",\"socketPath\":\"/tmp/relayflowd-1ff49f4e0d9d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER91H75AZETZFGERYT6GX\",\"runId\":\"01M53ER91H75AZETZFGERYT6GX\",\"socketPath\":\"/tmp/relayflowd-1ff49f4e0d9d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2097} +{"s":"RBCI5","start":"head","resume":"p2051","i":4,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER9Q5GN5TQEWWNXD1N8SG\",\"runId\":\"01M53ER9Q5GN5TQEWWNXD1N8SG\",\"socketPath\":\"/tmp/relayflowd-934af6886f8e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ER9Q5GN5TQEWWNXD1N8SG\",\"runId\":\"01M53ER9Q5GN5TQEWWNXD1N8SG\",\"socketPath\":\"/tmp/relayflowd-934af6886f8e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2188} +{"s":"RBCI5","start":"head","resume":"p2051","i":5,"fresh":false,"code1":0,"effects1":"abcdeyghZ","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERA6JYNRHHE61SAYRKYA4\",\"runId\":\"01M53ERA6JYNRHHE61SAYRKYA4\",\"socketPath\":\"/tmp/relayflowd-064eb57b6bf0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcde","effectsMid":"abcdeyghZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERA6JYNRHHE61SAYRKYA4\",\"runId\":\"01M53ERA6JYNRHHE61SAYRKYA4\",\"socketPath\":\"/tmp/relayflowd-064eb57b6bf0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2313} +{"s":"RBA1","start":"head","resume":"p2050","i":0,"fresh":false,"code1":1,"effects1":"LR","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERB3QE0T9MMMFZFX4WD0T\",\"socketPath\":\"/tmp/relayflowd-5d5833af733b.sock\",\"subscriptions\":[]}\n","effects0":"LR","effectsMid":"LR","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERB3QE0T9MMMFZFX4WD0T\",\"runId\":\"01M53ERB3QE0T9MMMFZFX4WD0T\",\"socketPath\":\"/tmp/relayflowd-5d5833af733b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-4 c=1 sleep 0.3; printf D","run-1 c=1 sleep 0.3; printf A","run-3 c=1 printf C","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2052} +{"s":"RBA1","start":"head","resume":"p2050","i":1,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERBW0PFJH2R475416DTEK\",\"socketPath\":\"/tmp/relayflowd-62c7a0cde7ec.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERBW0PFJH2R475416DTEK\",\"runId\":\"01M53ERBW0PFJH2R475416DTEK\",\"socketPath\":\"/tmp/relayflowd-62c7a0cde7ec.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2080} +{"s":"RBA1","start":"head","resume":"p2050","i":2,"fresh":false,"code1":1,"effects1":"LR","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERCF5TV4STTASVNK7456X\",\"socketPath\":\"/tmp/relayflowd-24c8c48815e3.sock\",\"subscriptions\":[]}\n","effects0":"LR","effectsMid":"LR","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERCF5TV4STTASVNK7456X\",\"runId\":\"01M53ERCF5TV4STTASVNK7456X\",\"socketPath\":\"/tmp/relayflowd-24c8c48815e3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-3 c=1 printf C","run-1 c=1 sleep 0.3; printf A","run-4 c=1 sleep 0.3; printf D","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2151} +{"s":"RBA1","start":"head","resume":"p2050","i":3,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERD31MXNVY26817AGCN5A\",\"socketPath\":\"/tmp/relayflowd-582badde413d.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERD31MXNVY26817AGCN5A\",\"runId\":\"01M53ERD31MXNVY26817AGCN5A\",\"socketPath\":\"/tmp/relayflowd-582badde413d.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 printf C","run-2 c=1 printf B","run-4 c=1 sleep 0.3; printf D","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2214} +{"s":"RBA1","start":"head","resume":"p2050","i":4,"fresh":false,"code1":1,"effects1":"LR","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERDWED49R9PJANXPVYZQB\",\"socketPath\":\"/tmp/relayflowd-45a411531f1d.sock\",\"subscriptions\":[]}\n","effects0":"LR","effectsMid":"LR","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERDWED49R9PJANXPVYZQB\",\"runId\":\"01M53ERDWED49R9PJANXPVYZQB\",\"socketPath\":\"/tmp/relayflowd-45a411531f1d.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 printf C","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2411} +{"s":"RBA1","start":"head","resume":"p2050","i":5,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53EREJ8E9J716RHP3EFTNY4\",\"socketPath\":\"/tmp/relayflowd-b0e1a900d4db.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EREJ8E9J716RHP3EFTNY4\",\"runId\":\"01M53EREJ8E9J716RHP3EFTNY4\",\"socketPath\":\"/tmp/relayflowd-b0e1a900d4db.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-3 c=1 printf C","run-1 c=1 sleep 0.3; printf A","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2455} +{"s":"RBA1","start":"head","resume":"p2051","i":0,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERF82KRN652Q5ZQZ6T8XT\",\"socketPath\":\"/tmp/relayflowd-f0eda452898f.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERF82KRN652Q5ZQZ6T8XT\",\"runId\":\"01M53ERF82KRN652Q5ZQZ6T8XT\",\"socketPath\":\"/tmp/relayflowd-f0eda452898f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.3; printf D","run-2 c=1 printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 printf C","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2008} +{"s":"RBA1","start":"head","resume":"p2051","i":1,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERG7VZ46F1NMD5CD7M8MH\",\"socketPath\":\"/tmp/relayflowd-fdca23d5e212.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERG7VZ46F1NMD5CD7M8MH\",\"runId\":\"01M53ERG7VZ46F1NMD5CD7M8MH\",\"socketPath\":\"/tmp/relayflowd-fdca23d5e212.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.3; printf D","run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2052} +{"s":"RBA1","start":"head","resume":"p2051","i":2,"fresh":false,"code1":1,"effects1":"LR","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERGZCMHC95YEMRH50WD2T\",\"socketPath\":\"/tmp/relayflowd-5f74eb952fdc.sock\",\"subscriptions\":[]}\n","effects0":"LR","effectsMid":"LR","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERGZCMHC95YEMRH50WD2T\",\"runId\":\"01M53ERGZCMHC95YEMRH50WD2T\",\"socketPath\":\"/tmp/relayflowd-5f74eb952fdc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-1 c=1 sleep 0.3; printf A","run-4 c=1 sleep 0.3; printf D","run-3 c=1 printf C","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2145} +{"s":"RBA1","start":"head","resume":"p2051","i":3,"fresh":false,"code1":1,"effects1":"LR","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERH6SVHT9695MNG8F8X50\",\"socketPath\":\"/tmp/relayflowd-13eb086b8b91.sock\",\"subscriptions\":[]}\n","effects0":"LR","effectsMid":"LR","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERH6SVHT9695MNG8F8X50\",\"runId\":\"01M53ERH6SVHT9695MNG8F8X50\",\"socketPath\":\"/tmp/relayflowd-13eb086b8b91.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-3 c=1 printf C","run-1 c=1 sleep 0.3; printf A","run-4 c=1 sleep 0.3; printf D","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2185} +{"s":"RBA1","start":"head","resume":"p2051","i":4,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERJ8QCNA3QDZG92217W1P\",\"socketPath\":\"/tmp/relayflowd-1533af5ad2c2.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERJ8QCNA3QDZG92217W1P\",\"runId\":\"01M53ERJ8QCNA3QDZG92217W1P\",\"socketPath\":\"/tmp/relayflowd-1533af5ad2c2.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-1 c=1 sleep 0.3; printf A","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2371} +{"s":"RBB1","start":"head","resume":"p2050","i":0,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERKBWHGJAYWYGGD1S94DG\",\"socketPath\":\"/tmp/relayflowd-d85bb0d27ecc.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERKBWHGJAYWYGGD1S94DG\",\"runId\":\"01M53ERKBWHGJAYWYGGD1S94DG\",\"socketPath\":\"/tmp/relayflowd-d85bb0d27ecc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf D","run-1 c=1 printf A","run-2 c=1 printf C","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1817} +{"s":"RBA1","start":"head","resume":"p2051","i":5,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERK1EKS3FN739X8MBP1BS\",\"socketPath\":\"/tmp/relayflowd-01f9d3e7d051.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERK1EKS3FN739X8MBP1BS\",\"runId\":\"01M53ERK1EKS3FN739X8MBP1BS\",\"socketPath\":\"/tmp/relayflowd-01f9d3e7d051.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf B","run-4 c=1 sleep 0.3; printf D","run-3 c=1 printf C","run-1 c=1 sleep 0.3; printf A","run-after-bf7bec01bcf69109cfbd318614946e3436d603d63c10c71c4cb6f3bf3d3f46c0-1 c=1 printf R >> effects","run-after-d21cf4720ad5b56d3673a0924309f04481fcbc5e5e5f474d8377f0dd7594c533-1 c=1 printf L >> effects","run-after-155808aba9d437c1d9cd0fd909c22d3d7ad7e1f138f940e0d9f792bfdd832c63-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2523} +{"s":"RBB1","start":"head","resume":"p2050","i":1,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERMM0XMXPW9BVT7VZ3PN1\",\"socketPath\":\"/tmp/relayflowd-e72c20a6c2ce.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERMM0XMXPW9BVT7VZ3PN1\",\"runId\":\"01M53ERMM0XMXPW9BVT7VZ3PN1\",\"socketPath\":\"/tmp/relayflowd-e72c20a6c2ce.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf C","run-1 c=1 printf A","run-3 c=1 printf D","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1789} +{"s":"RBB1","start":"head","resume":"p2050","i":2,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERN3WZYBRA1WJD6YJQWCE\",\"socketPath\":\"/tmp/relayflowd-e33bcec40c18.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERN3WZYBRA1WJD6YJQWCE\",\"runId\":\"01M53ERN3WZYBRA1WJD6YJQWCE\",\"socketPath\":\"/tmp/relayflowd-e33bcec40c18.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf C","run-3 c=1 printf D","run-1 c=1 printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1812} +{"s":"RBB1","start":"head","resume":"p2050","i":3,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERNG7Y6DBSKFH3MFBWDGS\",\"socketPath\":\"/tmp/relayflowd-070c2f4b63f6.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERNG7Y6DBSKFH3MFBWDGS\",\"runId\":\"01M53ERNG7Y6DBSKFH3MFBWDGS\",\"socketPath\":\"/tmp/relayflowd-070c2f4b63f6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf D","run-2 c=1 printf C","run-1 c=1 printf A","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1897} +{"s":"RBB1","start":"head","resume":"p2050","i":4,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERP9P29KXBMBYBEP7TSDQ\",\"socketPath\":\"/tmp/relayflowd-21147079b8d9.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERP9P29KXBMBYBEP7TSDQ\",\"runId\":\"01M53ERP9P29KXBMBYBEP7TSDQ\",\"socketPath\":\"/tmp/relayflowd-21147079b8d9.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2070} +{"s":"RBB1","start":"head","resume":"p2051","i":0,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERQBMB9KAMMW019CFHTM5\",\"socketPath\":\"/tmp/relayflowd-b061e15c92c8.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERQBMB9KAMMW019CFHTM5\",\"runId\":\"01M53ERQBMB9KAMMW019CFHTM5\",\"socketPath\":\"/tmp/relayflowd-b061e15c92c8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-3 c=1 printf D","run-2 c=1 printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1729} +{"s":"RBB1","start":"head","resume":"p2050","i":5,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERPW40QSKBZTCP82RRHXS\",\"socketPath\":\"/tmp/relayflowd-9e59f92e1df8.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERPW40QSKBZTCP82RRHXS\",\"runId\":\"01M53ERPW40QSKBZTCP82RRHXS\",\"socketPath\":\"/tmp/relayflowd-9e59f92e1df8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf D","run-1 c=1 printf A","run-2 c=1 printf C","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2248} +{"s":"RBB1","start":"head","resume":"p2051","i":1,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERRATV40XKM2ZWGBKEH9W\",\"socketPath\":\"/tmp/relayflowd-31d5dae25991.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERRATV40XKM2ZWGBKEH9W\",\"runId\":\"01M53ERRATV40XKM2ZWGBKEH9W\",\"socketPath\":\"/tmp/relayflowd-31d5dae25991.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1834} +{"s":"RBB1","start":"head","resume":"p2051","i":2,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERS2H7J48B1PMXPYW2HRN\",\"socketPath\":\"/tmp/relayflowd-4252874dbad3.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERS2H7J48B1PMXPYW2HRN\",\"runId\":\"01M53ERS2H7J48B1PMXPYW2HRN\",\"socketPath\":\"/tmp/relayflowd-4252874dbad3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf C","run-3 c=1 printf D","run-1 c=1 printf A","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1897} +{"s":"RBB1","start":"head","resume":"p2051","i":3,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERS3MVTW2SXPRN7YWHF5J\",\"socketPath\":\"/tmp/relayflowd-e9cc87a589e2.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERS3MVTW2SXPRN7YWHF5J\",\"runId\":\"01M53ERS3MVTW2SXPRN7YWHF5J\",\"socketPath\":\"/tmp/relayflowd-e9cc87a589e2.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1961} +{"s":"RBB1","start":"head","resume":"p2051","i":4,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERT4TMJ1JBVKBXS3T444K\",\"socketPath\":\"/tmp/relayflowd-51c80385e0e4.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERT4TMJ1JBVKBXS3T444K\",\"runId\":\"01M53ERT4TMJ1JBVKBXS3T444K\",\"socketPath\":\"/tmp/relayflowd-51c80385e0e4.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 printf D","run-2 c=1 printf C","run-1 c=1 printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2058} +{"s":"RBN2","start":"head","resume":"p2050","i":0,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERTZCVMRTH8CVW4XYX7VR\",\"socketPath\":\"/tmp/relayflowd-35b94d8ad491.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERTZCVMRTH8CVW4XYX7VR\",\"runId\":\"01M53ERTZCVMRTH8CVW4XYX7VR\",\"socketPath\":\"/tmp/relayflowd-35b94d8ad491.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1944} +{"s":"RBB1","start":"head","resume":"p2051","i":5,"fresh":false,"code1":1,"effects1":"RL","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERTXGTZTC41H76WZ6DH45\",\"socketPath\":\"/tmp/relayflowd-17c62fc39d41.sock\",\"subscriptions\":[]}\n","effects0":"RL","effectsMid":"RL","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERTXGTZTC41H76WZ6DH45\",\"runId\":\"01M53ERTXGTZTC41H76WZ6DH45\",\"socketPath\":\"/tmp/relayflowd-17c62fc39d41.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf C","run-1 c=1 printf A","run-3 c=1 printf D","run-after-69473275150109f1e821854612e8fcc96c0bc028e8a5691afc753fd33685ae48-1 c=1 printf R >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf B","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf L >> effects","run-after-bc05bd49c1a49d986489d67d572c6e1e20d66cda81c621b30d495a9b7cd1c835-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2171} +{"s":"RBN2","start":"head","resume":"p2050","i":1,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERW4X62NZXCXS12V7R4G2\",\"socketPath\":\"/tmp/relayflowd-79bdf74a2e45.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERW4X62NZXCXS12V7R4G2\",\"runId\":\"01M53ERW4X62NZXCXS12V7R4G2\",\"socketPath\":\"/tmp/relayflowd-79bdf74a2e45.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2034} +{"s":"RBN2","start":"head","resume":"p2050","i":2,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERWY7TVDY33P2DZP7N0MQ\",\"socketPath\":\"/tmp/relayflowd-7ca289d29bac.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERWY7TVDY33P2DZP7N0MQ\",\"runId\":\"01M53ERWY7TVDY33P2DZP7N0MQ\",\"socketPath\":\"/tmp/relayflowd-7ca289d29bac.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2159} +{"s":"RBN2","start":"head","resume":"p2050","i":3,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERX122BHANJHZBVGPZSYT\",\"socketPath\":\"/tmp/relayflowd-0701f0425216.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERX122BHANJHZBVGPZSYT\",\"runId\":\"01M53ERX122BHANJHZBVGPZSYT\",\"socketPath\":\"/tmp/relayflowd-0701f0425216.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2143} +{"s":"RBN2","start":"head","resume":"p2050","i":4,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERY4XAZA6DWNHSVYF0J5J\",\"socketPath\":\"/tmp/relayflowd-ba75821c9fc4.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERY4XAZA6DWNHSVYF0J5J\",\"runId\":\"01M53ERY4XAZA6DWNHSVYF0J5J\",\"socketPath\":\"/tmp/relayflowd-ba75821c9fc4.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2322} +{"s":"RBN2","start":"head","resume":"p2051","i":0,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERZ47CYH96AS5ZJF3WVQR\",\"socketPath\":\"/tmp/relayflowd-7789da993ebc.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERZ47CYH96AS5ZJF3WVQR\",\"runId\":\"01M53ERZ47CYH96AS5ZJF3WVQR\",\"socketPath\":\"/tmp/relayflowd-7789da993ebc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1943} +{"s":"RBN2","start":"head","resume":"p2050","i":5,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ERZ0JCNRH64GZ9BVT923N\",\"socketPath\":\"/tmp/relayflowd-84edd5d198bf.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ERZ0JCNRH64GZ9BVT923N\",\"runId\":\"01M53ERZ0JCNRH64GZ9BVT923N\",\"socketPath\":\"/tmp/relayflowd-84edd5d198bf.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2415} +{"s":"RBN2","start":"head","resume":"p2051","i":1,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ES0CNHXGG3P56TEFXXK32\",\"socketPath\":\"/tmp/relayflowd-3b2a2da62681.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ES0CNHXGG3P56TEFXXK32\",\"runId\":\"01M53ES0CNHXGG3P56TEFXXK32\",\"socketPath\":\"/tmp/relayflowd-3b2a2da62681.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2043} +{"s":"RBN2","start":"head","resume":"p2051","i":2,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ES10W48RZ5XZCM0244N70\",\"socketPath\":\"/tmp/relayflowd-cfafcb01abbd.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ES10W48RZ5XZCM0244N70\",\"runId\":\"01M53ES10W48RZ5XZCM0244N70\",\"socketPath\":\"/tmp/relayflowd-cfafcb01abbd.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2106} +{"s":"RBN2","start":"head","resume":"p2051","i":3,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ES1BX9MBQC65FGVFA2T09\",\"socketPath\":\"/tmp/relayflowd-946d30c61988.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ES1BX9MBQC65FGVFA2T09\",\"runId\":\"01M53ES1BX9MBQC65FGVFA2T09\",\"socketPath\":\"/tmp/relayflowd-946d30c61988.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2198} +{"s":"RBN2","start":"head","resume":"p2051","i":4,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ES2BZT7VP89445PKAH6YH\",\"socketPath\":\"/tmp/relayflowd-751623ccc717.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ES2BZT7VP89445PKAH6YH\",\"runId\":\"01M53ES2BZT7VP89445PKAH6YH\",\"socketPath\":\"/tmp/relayflowd-751623ccc717.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2291} +{"s":"RBN2","start":"head","resume":"p2051","i":5,"fresh":false,"code1":1,"effects1":"bca","code":0,"out":"FAILED [protocol_error] relayflowd could not complete the resume request: authored root journal has malformed authority metadata\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root journal has malformed authority metadata\"}],\"runId\":\"01M53ES3284QH13NK57SXFNV0A\",\"socketPath\":\"/tmp/relayflowd-dfb54183d7bd.sock\",\"subscriptions\":[]}\n","effects0":"bca","effectsMid":"bca","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53ES3284QH13NK57SXFNV0A\",\"runId\":\"01M53ES3284QH13NK57SXFNV0A\",\"socketPath\":\"/tmp/relayflowd-dfb54183d7bd.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2393} +SUMMARY RBCI4 head>p2050 ok=0/6 replay=0 fresh=0 mode=serial codes=0 effects=abcdyegZ +SUMMARY RBCI4 head>p2051 ok=0/6 replay=0 fresh=0 mode=serial codes=0 effects=abcdyegZ +SUMMARY RBCI5 head>p2050 ok=0/6 replay=0 fresh=0 mode=serial codes=0 effects=abcdeyghZ +SUMMARY RBCI5 head>p2051 ok=0/6 replay=0 fresh=0 mode=serial codes=0 effects=abcdeyghZ +SUMMARY RBA1 head>p2050 ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=LRZ|RLZ +SUMMARY RBA1 head>p2051 ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=RLZ|LRZ +SUMMARY RBB1 head>p2050 ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=RLZ +SUMMARY RBB1 head>p2051 ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=RLZ +SUMMARY RBN2 head>p2050 ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaZ +SUMMARY RBN2 head>p2051 ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaZ diff --git a/evidence/native-parallel-review8/h7-s7-head.log b/evidence/native-parallel-review8/h7-s7-head.log new file mode 100644 index 000000000..0cb76b246 --- /dev/null +++ b/evidence/native-parallel-review8/h7-s7-head.log @@ -0,0 +1,189 @@ +{"s":"HY1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E41ZH14E4D2Z6APCHQVBD\",\"runId\":\"01M53E41ZH14E4D2Z6APCHQVBD\",\"socketPath\":\"/tmp/relayflowd-3ab9e4356f9d.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1728} +{"s":"HY1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E41ZJN6VMM7205A82QGJA\",\"runId\":\"01M53E41ZJN6VMM7205A82QGJA\",\"socketPath\":\"/tmp/relayflowd-2d3a4feba6a5.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1811} +{"s":"HY1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E41ZKQD2AAKZXKWD7467B\",\"runId\":\"01M53E41ZKQD2AAKZXKWD7467B\",\"socketPath\":\"/tmp/relayflowd-2dd4e1eab449.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1851} +{"s":"HY1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E43J99ASZQAAZYY24MWGQ\",\"runId\":\"01M53E43J99ASZQAAZYY24MWGQ\",\"socketPath\":\"/tmp/relayflowd-b759c2f83c65.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1798} +{"s":"HY1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E43MKEZYRC7J9XJ28SWG4\",\"runId\":\"01M53E43MKEZYRC7J9XJ28SWG4\",\"socketPath\":\"/tmp/relayflowd-3cc5490d368a.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1811} +{"s":"HY1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E43PD94W41AYHM32X534G\",\"runId\":\"01M53E43PD94W41AYHM32X534G\",\"socketPath\":\"/tmp/relayflowd-1aab6c4f85c3.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2052} +{"s":"HY1s","start":"head","resume":"head","i":0,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r8s7head/HY1s/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53E459N43NNKQX2YWC0Q02Z\",\"runId\":\"01M53E459N43NNKQX2YWC0Q02Z\",\"socketPath\":\"/tmp/relayflowd-e1900b8ff17d.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":776} +{"s":"HY1s","start":"head","resume":"head","i":1,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r8s7head/HY1s/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53E45AV08K7QMW4RQQKEF6B\",\"runId\":\"01M53E45AV08K7QMW4RQQKEF6B\",\"socketPath\":\"/tmp/relayflowd-51433fac913a.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":712} +{"s":"HY1s","start":"head","resume":"head","i":2,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r8s7head/HY1s/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53E45MQ205NN759QFV9QNKQ\",\"runId\":\"01M53E45MQ205NN759QFV9QNKQ\",\"socketPath\":\"/tmp/relayflowd-6204302170a9.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":764} +{"s":"HY1s","start":"head","resume":"head","i":3,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r8s7head/HY1s/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53E461ZSREVR9W77FXKF5NS\",\"runId\":\"01M53E461ZSREVR9W77FXKF5NS\",\"socketPath\":\"/tmp/relayflowd-6b639c85debd.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":781} +{"s":"HY1s","start":"head","resume":"head","i":4,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r8s7head/HY1s/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53E462RV412KH7FA6EZERPX\",\"runId\":\"01M53E462RV412KH7FA6EZERPX\",\"socketPath\":\"/tmp/relayflowd-c36a8df13b9b.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":780} +{"s":"HY1s","start":"head","resume":"head","i":5,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r8s7head/HY1s/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53E46B57T2FDV07YD1S9X0Z\",\"runId\":\"01M53E46B57T2FDV07YD1S9X0Z\",\"socketPath\":\"/tmp/relayflowd-a015aaedcd91.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":716} +{"s":"HY2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E46TJ7GWYVPFQTY6XG72T\",\"runId\":\"01M53E46TJ7GWYVPFQTY6XG72T\",\"socketPath\":\"/tmp/relayflowd-ff149eb41e46.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1751} +{"s":"HY2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E46SNQS7YEE96ER4180CB\",\"runId\":\"01M53E46SNQS7YEE96ER4180CB\",\"socketPath\":\"/tmp/relayflowd-6a62094c3100.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1774} +{"s":"HY2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E47378S8X1A4Y25XWNP1M\",\"runId\":\"01M53E47378S8X1A4Y25XWNP1M\",\"socketPath\":\"/tmp/relayflowd-0e73c316bfe1.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1878} +{"s":"HY2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E48GCTY0C7VYQC0XHTV8R\",\"runId\":\"01M53E48GCTY0C7VYQC0XHTV8R\",\"socketPath\":\"/tmp/relayflowd-055e30e72611.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1994} +{"s":"HY2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E48J1A6AB60VF77GD0BT9\",\"runId\":\"01M53E48J1A6AB60VF77GD0BT9\",\"socketPath\":\"/tmp/relayflowd-13b413593f94.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2076} +{"s":"HY2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E48X0PQ1KHY6N1TPXWYCY\",\"runId\":\"01M53E48X0PQ1KHY6N1TPXWYCY\",\"socketPath\":\"/tmp/relayflowd-56c5d5fe3b57.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2173} +{"s":"PAR1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4AFE2FT8Z6K4A7GDYW8D\",\"runId\":\"01M53E4AFE2FT8Z6K4A7GDYW8D\",\"socketPath\":\"/tmp/relayflowd-21f89c2ca948.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1773} +{"s":"PAR1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4AK7R1RF5ZK7HXH8S76T\",\"runId\":\"01M53E4AK7R1RF5ZK7HXH8S76T\",\"socketPath\":\"/tmp/relayflowd-36a94d5907a0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1837} +{"s":"PAR1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4B1BEPF3YFH8H9PHZYFW\",\"runId\":\"01M53E4B1BEPF3YFH8H9PHZYFW\",\"socketPath\":\"/tmp/relayflowd-894828f8bf4f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1904} +{"s":"PAR1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4C8NCYTXEX1NVR1YAXYR\",\"runId\":\"01M53E4C8NCYTXEX1NVR1YAXYR\",\"socketPath\":\"/tmp/relayflowd-4a454515f3a3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2041} +{"s":"PAR1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4CDTPJTZJTNPNQKTHQ37\",\"runId\":\"01M53E4CDTPJTZJTNPNQKTHQ37\",\"socketPath\":\"/tmp/relayflowd-0fbe9bf78ea3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2111} +{"s":"PAR1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4CWMRHFXGCQ8V5KHH1QV\",\"runId\":\"01M53E4CWMRHFXGCQ8V5KHH1QV\",\"socketPath\":\"/tmp/relayflowd-928f33cde19b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2158} +{"s":"PAR2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4E6X1GHDAFP6X9PCQA25\",\"runId\":\"01M53E4E6X1GHDAFP6X9PCQA25\",\"socketPath\":\"/tmp/relayflowd-e06df36227f2.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1728} +{"s":"PAR2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4EEJVS7YM3C3FT3AX67K\",\"runId\":\"01M53E4EEJVS7YM3C3FT3AX67K\",\"socketPath\":\"/tmp/relayflowd-17d194995709.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1834} +{"s":"PAR2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4F0MM4GWX7AJKYCWMZ1Z\",\"runId\":\"01M53E4F0MM4GWX7AJKYCWMZ1Z\",\"socketPath\":\"/tmp/relayflowd-deb61c23ced8.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1844} +{"s":"PAR2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4FYM2HZ4B8P3BND3NNRT\",\"runId\":\"01M53E4FYM2HZ4B8P3BND3NNRT\",\"socketPath\":\"/tmp/relayflowd-f5b3a06bd602.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2019} +{"s":"PAR2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4G7Y55NPNZ13WS1BDE0N\",\"runId\":\"01M53E4G7Y55NPNZ13WS1BDE0N\",\"socketPath\":\"/tmp/relayflowd-dbcf44ef89eb.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2034} +{"s":"PAR2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4GSPRG7AX2NYTJSJ6QBG\",\"runId\":\"01M53E4GSPRG7AX2NYTJSJ6QBG\",\"socketPath\":\"/tmp/relayflowd-38f5be56d8c5.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2111} +{"s":"EQ1twice","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4HVD5YZ2KZSZ7RC68V5J\",\"runId\":\"01M53E4HVD5YZ2KZSZ7RC68V5J\",\"socketPath\":\"/tmp/relayflowd-bf9e93b9be48.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1697} +{"s":"EQ1twice","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4J7G4AV48RE0MTYN56VA\",\"runId\":\"01M53E4J7G4AV48RE0MTYN56VA\",\"socketPath\":\"/tmp/relayflowd-ea6389712ac6.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1708} +{"s":"EQ1twice","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4JWQE5CMDPV2XF14WNBN\",\"runId\":\"01M53E4JWQE5CMDPV2XF14WNBN\",\"socketPath\":\"/tmp/relayflowd-7ebbb4ce3ffe.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1770} +{"s":"EQ1twice","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4KFZ4D917A3HH8YCE49M\",\"runId\":\"01M53E4KFZ4D917A3HH8YCE49M\",\"socketPath\":\"/tmp/relayflowd-781461718338.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf A","run-1 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1837} +{"s":"EQ1twice","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4KW6V2HRZDYEHDY7EVCA\",\"runId\":\"01M53E4KW6V2HRZDYEHDY7EVCA\",\"socketPath\":\"/tmp/relayflowd-acb21b7e2f06.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1968} +{"s":"EQ1twice","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4MKCC6X46VME56077BMW\",\"runId\":\"01M53E4MKCC6X46VME56077BMW\",\"socketPath\":\"/tmp/relayflowd-d9fcb08577ef.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf A","run-1 c=1 sleep 0.2; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":2108} +{"s":"EQ2ret","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4N9EPZ508YFP0QA3JEE4\",\"runId\":\"01M53E4N9EPZ508YFP0QA3JEE4\",\"socketPath\":\"/tmp/relayflowd-9c6ff0a8cc6c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1746} +{"s":"EQ2ret","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4NSRYA9ZQN2TJAF39542\",\"runId\":\"01M53E4NSRYA9ZQN2TJAF39542\",\"socketPath\":\"/tmp/relayflowd-433eb2e5dd68.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1766} +{"s":"EQ2ret","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4PPBGZ2XJER74875P62B\",\"runId\":\"01M53E4PPBGZ2XJER74875P62B\",\"socketPath\":\"/tmp/relayflowd-f4b16fc5ab7a.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1911} +{"s":"EQ2ret","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4PZJJTF3ZN3X9FSP3WG2\",\"runId\":\"01M53E4PZJJTF3ZN3X9FSP3WG2\",\"socketPath\":\"/tmp/relayflowd-5c522bd4d11d.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1933} +{"s":"EQ2ret","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4QHPFMTNBXBMZSZ2S1MX\",\"runId\":\"01M53E4QHPFMTNBXBMZSZ2S1MX\",\"socketPath\":\"/tmp/relayflowd-996ad2024ace.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2111} +{"s":"EQ3midret","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4RWFQBGRKQM2TG8KC2EB\",\"runId\":\"01M53E4RWFQBGRKQM2TG8KC2EB\",\"socketPath\":\"/tmp/relayflowd-693d87967c4f.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1658} +{"s":"EQ2ret","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4RHWB7SK5YT4CVN443PW\",\"runId\":\"01M53E4RHWB7SK5YT4CVN443PW\",\"socketPath\":\"/tmp/relayflowd-fe1690c033cc.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2233} +{"s":"EQ3midret","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4SKTCSFRMCGAE9KP6HTZ\",\"runId\":\"01M53E4SKTCSFRMCGAE9KP6HTZ\",\"socketPath\":\"/tmp/relayflowd-cfb4ae282755.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1688} +{"s":"EQ3midret","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4TH0K4GY2HHNE8GG3BJ6\",\"runId\":\"01M53E4TH0K4GY2HHNE8GG3BJ6\",\"socketPath\":\"/tmp/relayflowd-299a24c9d5d1.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1757} +{"s":"EQ3midret","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4TQ0R177NBR7QR3207E3\",\"runId\":\"01M53E4TQ0R177NBR7QR3207E3\",\"socketPath\":\"/tmp/relayflowd-1afc7b706482.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1824} +{"s":"EQ3midret","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4V8CJX2CV8HF9EYPS53S\",\"runId\":\"01M53E4V8CJX2CV8HF9EYPS53S\",\"socketPath\":\"/tmp/relayflowd-60d61a03893d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1946} +{"s":"EQ4fail","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"d with retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53E4WGDNA5TW9NZRDNYWQ1Y --at run-1 --data-dir '/w/runs/r8s7head/EQ4fail/head-head-0/data'\\nJournal: /w/runs/r8s7head/EQ4fail/head-head-0/data/runs/01M53E4WGDNA5TW9NZRDNYWQ1Y.sqlite3\"}],\"path\":\"/w/runs/r8s7head/EQ4fail/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53E4WFBH0KGVWHETM82FEHC\",\"runId\":\"01M53E4WGDNA5TW9NZRDNYWQ1Y\",\"socketPath\":\"/tmp/relayflowd-6faaa7c004d1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1008} +{"s":"EQ4fail","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"d with retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53E4X6AWRH4MRWMPB7AJ82F --at run-1 --data-dir '/w/runs/r8s7head/EQ4fail/head-head-1/data'\\nJournal: /w/runs/r8s7head/EQ4fail/head-head-1/data/runs/01M53E4X6AWRH4MRWMPB7AJ82F.sqlite3\"}],\"path\":\"/w/runs/r8s7head/EQ4fail/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53E4X57RVRSTMYNCCWP2AXD\",\"runId\":\"01M53E4X6AWRH4MRWMPB7AJ82F\",\"socketPath\":\"/tmp/relayflowd-14db487bf969.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1035} +{"s":"EQ3midret","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4W7BPB6CTQTPQSTZQ4JN\",\"runId\":\"01M53E4W7BPB6CTQTPQSTZQ4JN\",\"socketPath\":\"/tmp/relayflowd-6e412122dac7.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2097} +{"s":"EQ4fail","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"d with retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53E4XH5B1PR46JPP1FBCKXK --at run-1 --data-dir '/w/runs/r8s7head/EQ4fail/head-head-2/data'\\nJournal: /w/runs/r8s7head/EQ4fail/head-head-2/data/runs/01M53E4XH5B1PR46JPP1FBCKXK.sqlite3\"}],\"path\":\"/w/runs/r8s7head/EQ4fail/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53E4XGAE2R8R6TE3QEM8QK1\",\"runId\":\"01M53E4XH5B1PR46JPP1FBCKXK\",\"socketPath\":\"/tmp/relayflowd-b2ceb6c392f4.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1045} +{"s":"EQ4fail","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"d with retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53E4Y73N2HRWWG9YJJQQPJD --at run-1 --data-dir '/w/runs/r8s7head/EQ4fail/head-head-3/data'\\nJournal: /w/runs/r8s7head/EQ4fail/head-head-3/data/runs/01M53E4Y73N2HRWWG9YJJQQPJD.sqlite3\"}],\"path\":\"/w/runs/r8s7head/EQ4fail/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53E4Y61WWV4ZEM5MEDYQTCC\",\"runId\":\"01M53E4Y73N2HRWWG9YJJQQPJD\",\"socketPath\":\"/tmp/relayflowd-f85de7e0cf8a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1052} +{"s":"EQ4fail","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"d with retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53E4YAEFN6FPT3N7W23W4C7 --at run-1 --data-dir '/w/runs/r8s7head/EQ4fail/head-head-4/data'\\nJournal: /w/runs/r8s7head/EQ4fail/head-head-4/data/runs/01M53E4YAEFN6FPT3N7W23W4C7.sqlite3\"}],\"path\":\"/w/runs/r8s7head/EQ4fail/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53E4Y9GXFRJXAXK202H16W5\",\"runId\":\"01M53E4YAEFN6FPT3N7W23W4C7\",\"socketPath\":\"/tmp/relayflowd-0a61131ecc5d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.4; printf B >> effects","run-1 c=1 sleep 0.1; printf F >> effects; exit 1"],"letterDup":false,"replay":false,"ok":true,"ms":1057} +{"s":"EQ4fail","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"d with retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53E4YH8S24G72QJFY5C1V3G --at run-1 --data-dir '/w/runs/r8s7head/EQ4fail/head-head-5/data'\\nJournal: /w/runs/r8s7head/EQ4fail/head-head-5/data/runs/01M53E4YH8S24G72QJFY5C1V3G.sqlite3\"}],\"path\":\"/w/runs/r8s7head/EQ4fail/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53E4YGECD647QX8X14SJ7P4\",\"runId\":\"01M53E4YH8S24G72QJFY5C1V3G\",\"socketPath\":\"/tmp/relayflowd-931d316468e2.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.4; printf B >> effects","run-1 c=1 sleep 0.1; printf F >> effects; exit 1"],"letterDup":false,"replay":false,"ok":true,"ms":1035} +{"s":"EQ5wide","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"dagebhjckfilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4Z7143SNKYC8GXYR6TAC\",\"runId\":\"01M53E4Z7143SNKYC8GXYR6TAC\",\"socketPath\":\"/tmp/relayflowd-97d54b13b597.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"dagebhjckfilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-6 c=1 sleep 0.3; printf S5","run-5 c=1 sleep 0.2; printf S4","run-4 c=1 sleep 0.1; printf S3","run-8 c=1 sleep 0.2; printf S7","run-1 c=1 sleep 0.1; printf S0","run-7 c=1 sleep 0.1; printf S6","run-2 c=1 sleep 0.2; printf S1","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2221} +{"s":"EQ5wide","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"agdhjbefckilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4ZARBNEDSEETBBQBRWPR\",\"runId\":\"01M53E4ZARBNEDSEETBBQBRWPR\",\"socketPath\":\"/tmp/relayflowd-96342db1958f.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"agdhjbefckilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-4 c=1 sleep 0.1; printf S3","run-1 c=1 sleep 0.1; printf S0","run-2 c=1 sleep 0.2; printf S1","run-8 c=1 sleep 0.2; printf S7","run-6 c=1 sleep 0.3; printf S5","run-7 c=1 sleep 0.1; printf S6","run-5 c=1 sleep 0.2; printf S4","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2321} +{"s":"EQ5wide","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"adgehjbcfkilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E4ZGDFG9CSZK5XPBD9496\",\"runId\":\"01M53E4ZGDFG9CSZK5XPBD9496\",\"socketPath\":\"/tmp/relayflowd-16b7219f1e41.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adgehjbcfkilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-2 c=1 sleep 0.2; printf S1","run-7 c=1 sleep 0.1; printf S6","run-5 c=1 sleep 0.2; printf S4","run-6 c=1 sleep 0.3; printf S5","run-4 c=1 sleep 0.1; printf S3","run-3 c=1 sleep 0.3; printf S2","run-8 c=1 sleep 0.2; printf S7","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2375} +{"s":"EQ5wide","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"adgebhjcfiklX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E51C4BBXGTQ0RTXB7H1RD\",\"runId\":\"01M53E51C4BBXGTQ0RTXB7H1RD\",\"socketPath\":\"/tmp/relayflowd-1d3e5595315d.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adgebhjcfiklXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf S1","run-7 c=1 sleep 0.1; printf S6","run-3 c=1 sleep 0.3; printf S2","run-8 c=1 sleep 0.2; printf S7","run-6 c=1 sleep 0.3; printf S5","run-4 c=1 sleep 0.1; printf S3","run-5 c=1 sleep 0.2; printf S4","run-1 c=1 sleep 0.1; printf S0","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2521} +{"s":"EQ5wide","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"gdahbjecfkilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E51JEX0QHDHAR40HAMZV0\",\"runId\":\"01M53E51JEX0QHDHAR40HAMZV0\",\"socketPath\":\"/tmp/relayflowd-7e9989fb3121.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gdahbjecfkilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-8 c=1 sleep 0.2; printf S7","run-6 c=1 sleep 0.3; printf S5","run-7 c=1 sleep 0.1; printf S6","run-4 c=1 sleep 0.1; printf S3","run-5 c=1 sleep 0.2; printf S4","run-3 c=1 sleep 0.3; printf S2","run-2 c=1 sleep 0.2; printf S1","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2629} +{"s":"EQ5wide","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"agdehjbckfilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E51TYEA1GTHD5KX2XG1P6\",\"runId\":\"01M53E51TYEA1GTHD5KX2XG1P6\",\"socketPath\":\"/tmp/relayflowd-9b40b1b57f34.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"agdehjbckfilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.1; printf S3","run-3 c=1 sleep 0.3; printf S2","run-6 c=1 sleep 0.3; printf S5","run-7 c=1 sleep 0.1; printf S6","run-5 c=1 sleep 0.2; printf S4","run-2 c=1 sleep 0.2; printf S1","run-8 c=1 sleep 0.2; printf S7","run-1 c=1 sleep 0.1; printf S0","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2707} +{"s":"EQ5stall","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"gadbehjcf","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E53VHCS9QXDWN8KVHW4CH\",\"runId\":\"01M53E53VHCS9QXDWN8KVHW4CH\",\"socketPath\":\"/tmp/relayflowd-79f42c2256c9.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gadbehjcfYyiXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-5 c=1 sleep 0.2; printf S4","run-2 c=1 sleep 0.2; printf S1","run-8 c=1 sleep 0.2; printf S7","run-6 c=1 sleep 0.3; printf S5","run-7 c=1 sleep 0.1; printf S6","run-3 c=1 sleep 0.3; printf S2","run-4 c=1 sleep 0.1; printf S3","run-9 c=2 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2186} +{"s":"EQ5stall","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"dagehjbfci","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E544XBMM8X5R1NM07Q6AS\",\"runId\":\"01M53E544XBMM8X5R1NM07Q6AS\",\"socketPath\":\"/tmp/relayflowd-ac8cfd7b406d.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"dagehjbfciYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-5 c=1 sleep 0.2; printf S4","run-6 c=1 sleep 0.3; printf S5","run-7 c=1 sleep 0.1; printf S6","run-8 c=1 sleep 0.2; printf S7","run-4 c=1 sleep 0.1; printf S3","run-2 c=1 sleep 0.2; printf S1","run-3 c=1 sleep 0.3; printf S2","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2087} +{"s":"EQ5stall","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"adghejbfci","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E54F81ZKSBBMX913Y0AHD\",\"runId\":\"01M53E54F81ZKSBBMX913Y0AHD\",\"socketPath\":\"/tmp/relayflowd-11cc6ab041c7.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adghejbfciYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-5 c=1 sleep 0.2; printf S4","run-2 c=1 sleep 0.2; printf S1","run-7 c=1 sleep 0.1; printf S6","run-4 c=1 sleep 0.1; printf S3","run-6 c=1 sleep 0.3; printf S5","run-8 c=1 sleep 0.2; printf S7","run-1 c=1 sleep 0.1; printf S0","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2183} +{"s":"EQ5stall","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"gdabhjecfi","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E55ZJF7E5YNRXN2B17G8N\",\"runId\":\"01M53E55ZJF7E5YNRXN2B17G8N\",\"socketPath\":\"/tmp/relayflowd-0b63c4a035f3.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gdabhjecfiYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-8 c=1 sleep 0.2; printf S7","run-4 c=1 sleep 0.1; printf S3","run-2 c=1 sleep 0.2; printf S1","run-6 c=1 sleep 0.3; printf S5","run-5 c=1 sleep 0.2; printf S4","run-7 c=1 sleep 0.1; printf S6","run-1 c=1 sleep 0.1; printf S0","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2169} +{"s":"EQ5stall","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"adgehbjcfi","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E565PEQEPHNWZG85NAS6A\",\"runId\":\"01M53E565PEQEPHNWZG85NAS6A\",\"socketPath\":\"/tmp/relayflowd-2147b01ed177.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adgehbjcfiYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.1; printf S3","run-6 c=1 sleep 0.3; printf S5","run-2 c=1 sleep 0.2; printf S1","run-8 c=1 sleep 0.2; printf S7","run-5 c=1 sleep 0.2; printf S4","run-3 c=1 sleep 0.3; printf S2","run-7 c=1 sleep 0.1; printf S6","run-1 c=1 sleep 0.1; printf S0","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2329} +{"s":"EQ5stall","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"gadhbejcfi","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E56KAGJM2PQT6W79MK1E3\",\"runId\":\"01M53E56KAGJM2PQT6W79MK1E3\",\"socketPath\":\"/tmp/relayflowd-2b4f9be90502.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gadhbejcfiYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-8 c=1 sleep 0.2; printf S7","run-3 c=1 sleep 0.3; printf S2","run-1 c=1 sleep 0.1; printf S0","run-2 c=1 sleep 0.2; printf S1","run-6 c=1 sleep 0.3; printf S5","run-7 c=1 sleep 0.1; printf S6","run-4 c=1 sleep 0.1; printf S3","run-5 c=1 sleep 0.2; printf S4","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2387} +{"s":"EQ6expr","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E583NED4FZ3EBQ4951W4M\",\"runId\":\"01M53E583NED4FZ3EBQ4951W4M\",\"socketPath\":\"/tmp/relayflowd-5e7c2b862938.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1779} +{"s":"EQ6expr","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E58E5F0DM2A1KDZRQN1ZH\",\"runId\":\"01M53E58E5F0DM2A1KDZRQN1ZH\",\"socketPath\":\"/tmp/relayflowd-ca1cce00d660.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1766} +{"s":"EQ6expr","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E58XRFHECF2ANVPP2WMJK\",\"runId\":\"01M53E58XRFHECF2ANVPP2WMJK\",\"socketPath\":\"/tmp/relayflowd-65211d589267.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1827} +{"s":"EQ6expr","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E59SG2Z4JTQ9CEGVE4AM9\",\"runId\":\"01M53E59SG2Z4JTQ9CEGVE4AM9\",\"socketPath\":\"/tmp/relayflowd-d8a110d3671e.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf C >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1942} +{"s":"EQ6expr","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5A5SV0RSEK4NR1K6QJXX\",\"runId\":\"01M53E5A5SV0RSEK4NR1K6QJXX\",\"socketPath\":\"/tmp/relayflowd-e5e5dfd2082f.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2044} +{"s":"EQ6expr","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5AQN5A7SYW9A5HMWPR8T\",\"runId\":\"01M53E5AQN5A7SYW9A5HMWPR8T\",\"socketPath\":\"/tmp/relayflowd-452e9bd2b827.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2163} +{"s":"EQ7record","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5BPCZXFBC32ARFG6H6KP\",\"runId\":\"01M53E5BPCZXFBC32ARFG6H6KP\",\"socketPath\":\"/tmp/relayflowd-edf225bc2ad1.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.2; exit 3","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1654} +{"s":"EQ7record","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5C5JP42M7CQS5RM7YBXW\",\"runId\":\"01M53E5C5JP42M7CQS5RM7YBXW\",\"socketPath\":\"/tmp/relayflowd-f67606753d78.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1700} +{"s":"EQ7record","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5CVZM124DQ52RZFF5ZMW\",\"runId\":\"01M53E5CVZM124DQ52RZFF5ZMW\",\"socketPath\":\"/tmp/relayflowd-ce3d718dd599.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1797} +{"s":"EQ7record","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5DAE8Q2VXRC92M3W6W0N\",\"runId\":\"01M53E5DAE8Q2VXRC92M3W6W0N\",\"socketPath\":\"/tmp/relayflowd-c73a65629f95.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1824} +{"s":"EQ7record","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5DV5QFPFKD6Q4DB8MRNH\",\"runId\":\"01M53E5DV5QFPFKD6Q4DB8MRNH\",\"socketPath\":\"/tmp/relayflowd-27832cb80295.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.2; exit 3","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1967} +{"s":"EQ8throw","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r8s7head/EQ8throw/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53E5F3BGV4PQ7A6B07MF7SH\",\"socketPath\":\"/tmp/relayflowd-70933da08984.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":828} +{"s":"EQ8throw","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r8s7head/EQ8throw/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53E5FQMMZYWD0T6TW5ZTQBA\",\"socketPath\":\"/tmp/relayflowd-e8a18571da75.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":818} +{"s":"EQ7record","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5EJMAJFF4SDJJY70NXMW\",\"runId\":\"01M53E5EJMAJFF4SDJJY70NXMW\",\"socketPath\":\"/tmp/relayflowd-2d3db4dafbe4.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2069} +{"s":"EQ8throw","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r8s7head/EQ8throw/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53E5FWZMB2Q9MQ1ZMBQDMFP\",\"socketPath\":\"/tmp/relayflowd-cbca2e13bdf6.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":831} +{"s":"EQ8throw","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r8s7head/EQ8throw/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53E5GHZSR16CZ21P34MWY0A\",\"socketPath\":\"/tmp/relayflowd-a2f408e4a710.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":865} +{"s":"EQ8throw","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r8s7head/EQ8throw/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53E5GKK7STGXQ47WBSSHMGS\",\"socketPath\":\"/tmp/relayflowd-46d94d8c147f.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":824} +{"s":"EQ8throw","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r8s7head/EQ8throw/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53E5GQE7MAJM7Q17TCK35HS\",\"socketPath\":\"/tmp/relayflowd-79c63374d916.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":835} +{"s":"EQ9nested","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5HBSH5G9H2A29GQ1FMSX\",\"runId\":\"01M53E5HBSH5G9H2A29GQ1FMSX\",\"socketPath\":\"/tmp/relayflowd-346e841582e3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YbaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2038} +{"s":"EQ9nested","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5HH9BG16HMGCXDD1MFCX\",\"runId\":\"01M53E5HH9BG16HMGCXDD1MFCX\",\"socketPath\":\"/tmp/relayflowd-f4287671651a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1908} +{"s":"EQ9nested","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5HDYRYFMWP2SP4F0MBPY\",\"runId\":\"01M53E5HDYRYFMWP2SP4F0MBPY\",\"socketPath\":\"/tmp/relayflowd-dfc77cdeec04.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YbaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2139} +{"s":"EQ9nested","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5KDM6GAEMVQB5ZK3S9KA\",\"runId\":\"01M53E5KDM6GAEMVQB5ZK3S9KA\",\"socketPath\":\"/tmp/relayflowd-8b2ad19aa3f3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2071} +{"s":"EQ9nested","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5KE52JX479G36BPKYZ8R\",\"runId\":\"01M53E5KE52JX479G36BPKYZ8R\",\"socketPath\":\"/tmp/relayflowd-eb685abbc0ad.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2167} +{"s":"EQ9nested","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5KGJY3HJTESNS04S193K\",\"runId\":\"01M53E5KGJY3HJTESNS04S193K\",\"socketPath\":\"/tmp/relayflowd-c87d7a2a2ca7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2289} +{"s":"PL1r5","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5NEN6261N9W6R3NVY1ZH\",\"runId\":\"01M53E5NEN6261N9W6R3NVY1ZH\",\"socketPath\":\"/tmp/relayflowd-5cf7623295ea.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2517} +{"s":"PL1r5","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5NHFBZBPA8M4XB1MW0JE\",\"runId\":\"01M53E5NHFBZBPA8M4XB1MW0JE\",\"socketPath\":\"/tmp/relayflowd-65244e19b91c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2476} +{"s":"PL1r5","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5NRFK27KJ9JENC5JCAF4\",\"runId\":\"01M53E5NRFK27KJ9JENC5JCAF4\",\"socketPath\":\"/tmp/relayflowd-15109c9a1577.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2590} +{"s":"PL1r5","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5QW7BV6Z4WV020TJJS6N\",\"runId\":\"01M53E5QW7BV6Z4WV020TJJS6N\",\"socketPath\":\"/tmp/relayflowd-610a482f6f9a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2564} +{"s":"PL1r5","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5QYC0P73VZH4P5E517VA\",\"runId\":\"01M53E5QYC0P73VZH4P5E517VA\",\"socketPath\":\"/tmp/relayflowd-d6d0464ca9e3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2675} +{"s":"PL1r5","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5R8FVFY3H9FQF8P33MXX\",\"runId\":\"01M53E5R8FVFY3H9FQF8P33MXX\",\"socketPath\":\"/tmp/relayflowd-e3e436b8f5ad.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2867} +{"s":"PL2then","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5TCTFERX04A39QJQ2VFQ\",\"runId\":\"01M53E5TCTFERX04A39QJQ2VFQ\",\"socketPath\":\"/tmp/relayflowd-f7dbc6efd3fd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2372} +{"s":"PL2then","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5THVE27PKBNWHQN4PHGS\",\"runId\":\"01M53E5THVE27PKBNWHQN4PHGS\",\"socketPath\":\"/tmp/relayflowd-52c21e2a3490.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2322} +{"s":"PL2then","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5V2TP9Z7BZ48S62DH4X4\",\"runId\":\"01M53E5V2TP9Z7BZ48S62DH4X4\",\"socketPath\":\"/tmp/relayflowd-5e9437280747.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2478} +{"s":"PL2then","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5WPGE3CBQWWXMKENZ569\",\"runId\":\"01M53E5WPGE3CBQWWXMKENZ569\",\"socketPath\":\"/tmp/relayflowd-8529f41c1b7c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2616} +{"s":"PL2then","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5WTNT6KBZT8F1JB58KMG\",\"runId\":\"01M53E5WTNT6KBZT8F1JB58KMG\",\"socketPath\":\"/tmp/relayflowd-ea58ccd59b6a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2658} +{"s":"PL2then","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E5XFV605TFEH3NGSFPXQF\",\"runId\":\"01M53E5XFV605TFEH3NGSFPXQF\",\"socketPath\":\"/tmp/relayflowd-2df4a7e1407d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2767} +{"s":"PL3sub","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E5Z8DQAZ8KXAXDMG28GF5\",\"runId\":\"01M53E5Z8DQAZ8KXAXDMG28GF5\",\"socketPath\":\"/tmp/relayflowd-439c116a69ab.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2329} +{"s":"PL3sub","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E5ZDCHRK28TM53QEMN9KF\",\"runId\":\"01M53E5ZDCHRK28TM53QEMN9KF\",\"socketPath\":\"/tmp/relayflowd-e84237dcae87.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2337} +{"s":"PL3sub","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E605FC74ZQ10SDA05J4AM\",\"runId\":\"01M53E605FC74ZQ10SDA05J4AM\",\"socketPath\":\"/tmp/relayflowd-a3976d90e893.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2441} +{"s":"PL3sub","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E61FHXTPJ4HXA3ZASGVPT\",\"runId\":\"01M53E61FHXTPJ4HXA3ZASGVPT\",\"socketPath\":\"/tmp/relayflowd-57c473176ab5.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2478} +{"s":"PL3sub","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E61PKKJWT3HVQJC227VD1\",\"runId\":\"01M53E61PKKJWT3HVQJC227VD1\",\"socketPath\":\"/tmp/relayflowd-31546b77b646.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2656} +{"s":"PL3sub","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E62JTF28PQHC2FYAN9955\",\"runId\":\"01M53E62JTF28PQHC2FYAN9955\",\"socketPath\":\"/tmp/relayflowd-ae66fb204c19.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2751} +{"s":"PL4ctor","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E63Y3N39AP99SMM5ZQ6FY\",\"runId\":\"01M53E63Y3N39AP99SMM5ZQ6FY\",\"socketPath\":\"/tmp/relayflowd-1db043dabb3b.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2291} +{"s":"PL4ctor","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E6499PS27M6GFK2TVYVHH\",\"runId\":\"01M53E6499PS27M6GFK2TVYVHH\",\"socketPath\":\"/tmp/relayflowd-c79b92078624.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2347} +{"s":"PL4ctor","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E658KV508SVVHD1D8QFGG\",\"runId\":\"01M53E658KV508SVVHD1D8QFGG\",\"socketPath\":\"/tmp/relayflowd-56f897b0d09b.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2494} +{"s":"PL4ctor","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E665HKJEVPP3069JGSAFH\",\"runId\":\"01M53E665HKJEVPP3069JGSAFH\",\"socketPath\":\"/tmp/relayflowd-561ab5d3d937.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2529} +{"s":"PL4ctor","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E66KJ2PRBA6W7WJTRT08A\",\"runId\":\"01M53E66KJ2PRBA6W7WJTRT08A\",\"socketPath\":\"/tmp/relayflowd-38c2695a8583.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2668} +{"s":"PL4ctor","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53E67PTVH939277R3FKSX76\",\"runId\":\"01M53E67PTVH939277R3FKSX76\",\"socketPath\":\"/tmp/relayflowd-fffaf4b7d388.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2764} +{"s":"PL5species","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E68M8W8FPAK3SGFDDKXK3\",\"runId\":\"01M53E68M8W8FPAK3SGFDDKXK3\",\"socketPath\":\"/tmp/relayflowd-e42dea3c88a5.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2360} +{"s":"PL5species","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E696WN22PS1W1G9V0W3SR\",\"runId\":\"01M53E696WN22PS1W1G9V0W3SR\",\"socketPath\":\"/tmp/relayflowd-d5001fc8d5e4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2397} +{"s":"PL5species","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6AE6GCXQ7K880AP143YK\",\"runId\":\"01M53E6AE6GCXQ7K880AP143YK\",\"socketPath\":\"/tmp/relayflowd-693fb53e03c9.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2507} +{"s":"PL5species","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6AY6A3GA53X7CBD7TFH9\",\"runId\":\"01M53E6AY6A3GA53X7CBD7TFH9\",\"socketPath\":\"/tmp/relayflowd-a6984afdd258.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2515} +{"s":"PL5species","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6BGTM71RG746RFGZD6VH\",\"runId\":\"01M53E6BGTM71RG746RFGZD6VH\",\"socketPath\":\"/tmp/relayflowd-e4836348ff5e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2667} +{"s":"SEC7","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6DD6AANJSFH234F1R2YJ\",\"runId\":\"01M53E6DD6AANJSFH234F1R2YJ\",\"socketPath\":\"/tmp/relayflowd-b075a5b5a2af.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-0/ung","run-3 c=1 sleep 0.1; printf G","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-0/gra","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-0/gra","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-0/ung","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-0/lat","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1678} +{"s":"PL5species","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6CV248CBNBMX9Y8TNPQW\",\"runId\":\"01M53E6CV248CBNBMX9Y8TNPQW\",\"socketPath\":\"/tmp/relayflowd-6e796d86dc0c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2777} +{"s":"SEC7","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6E4QQTDH5WDYFEGQWQ52\",\"runId\":\"01M53E6E4QQTDH5WDYFEGQWQ52\",\"socketPath\":\"/tmp/relayflowd-0c05be89a07a.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-1/gra","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-1/ung","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-1/gra","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-1/ung","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-1/lat","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1754} +{"s":"SEC7","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6F1RXQPVGGY4T0KFXMPR\",\"runId\":\"01M53E6F1RXQPVGGY4T0KFXMPR\",\"socketPath\":\"/tmp/relayflowd-7ade458cbba4.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-2/ung","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-2/gra","run-4 c=1 sleep 0.15; printf U","run-3 c=1 sleep 0.1; printf G","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-2/gra","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-2/ung","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-2/lat","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1877} +{"s":"SEC7","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6FK2D0V8Z5AZQSZZQS94\",\"runId\":\"01M53E6FK2D0V8Z5AZQSZZQS94\",\"socketPath\":\"/tmp/relayflowd-63d9c1fd63e4.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-3/gra","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-3/ung","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-3/gra","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-3/ung","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-3/lat","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2047} +{"s":"SEC7","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6FXB91H21N50D8YBKAK3\",\"runId\":\"01M53E6FXB91H21N50D8YBKAK3\",\"socketPath\":\"/tmp/relayflowd-c2ed61654f6f.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-4/gra","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-4/ung","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-4/gra","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-4/ung","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-4/lat","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2088} +{"s":"SEC7","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6GWZGG28CGXG5W62NP68\",\"runId\":\"01M53E6GWZGG28CGXG5W62NP68\",\"socketPath\":\"/tmp/relayflowd-c11f3f992153.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.15; printf U","run-3 c=1 sleep 0.1; printf G","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-5/gra","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-5/ung","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-5/gra","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-5/ung","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7/head-head-5/lat","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2135} +{"s":"PL7mid","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6HJXJXGBYG8BCJVQ088E\",\"runId\":\"01M53E6HJXJXGBYG8BCJVQ088E\",\"socketPath\":\"/tmp/relayflowd-b596416ed73c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7mid/head-head-0/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2563} +{"s":"PL7mid","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6HY0WDD7ERCNSAS9EQTZ\",\"runId\":\"01M53E6HY0WDD7ERCNSAS9EQTZ\",\"socketPath\":\"/tmp/relayflowd-9791ac200fd7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7mid/head-head-1/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2607} +{"s":"PL7mid","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6JZD0435RV0C02J5V6N9\",\"runId\":\"01M53E6JZD0435RV0C02J5V6N9\",\"socketPath\":\"/tmp/relayflowd-872055286fd7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7mid/head-head-2/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2590} +{"s":"PL7mid","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6M2M9VEZY1P5SD1MNA9W\",\"runId\":\"01M53E6M2M9VEZY1P5SD1MNA9W\",\"socketPath\":\"/tmp/relayflowd-a852d1cfb50e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7mid/head-head-3/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2642} +{"s":"PL7mid","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6MEMKMDRN8M2J638A4YT\",\"runId\":\"01M53E6MEMKMDRN8M2J638A4YT\",\"socketPath\":\"/tmp/relayflowd-e91f12793c31.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7mid/head-head-4/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2780} +{"s":"PL7mid","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6NFYNHJY4BJ8QF264VNJ\",\"runId\":\"01M53E6NFYNHJY4BJ8QF264VNJ\",\"socketPath\":\"/tmp/relayflowd-25f5098d7112.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7mid/head-head-5/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2887} +{"s":"PL7neutral","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6PMDWW873XR5AH45PA3J\",\"runId\":\"01M53E6PMDWW873XR5AH45PA3J\",\"socketPath\":\"/tmp/relayflowd-539ce18d0ea6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7neutral/head-head-0/wstart; sleep 0.3; print","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2421} +{"s":"PL7neutral","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6Q5917WTNGAAN0RXD1TX\",\"runId\":\"01M53E6Q5917WTNGAAN0RXD1TX\",\"socketPath\":\"/tmp/relayflowd-a0346d0ba4cc.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7neutral/head-head-1/wstart; sleep 0.3; print","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2490} +{"s":"PL7neutral","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6RABC76R3130P6DZWV1E\",\"runId\":\"01M53E6RABC76R3130P6DZWV1E\",\"socketPath\":\"/tmp/relayflowd-3954b621bcdd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7neutral/head-head-2/wstart; sleep 0.3; print","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2558} +{"s":"PL7neutral","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6S0NXSWAMK42X2KXY33W\",\"runId\":\"01M53E6S0NXSWAMK42X2KXY33W\",\"socketPath\":\"/tmp/relayflowd-16be81b918b7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7neutral/head-head-3/wstart; sleep 0.3; print","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2693} +{"s":"PL7neutral","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6SJKVKEM5WD3A9RRQQNF\",\"runId\":\"01M53E6SJKVKEM5WD3A9RRQQNF\",\"socketPath\":\"/tmp/relayflowd-bf6d10cecd3e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7neutral/head-head-4/wstart; sleep 0.3; print","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2793} +{"s":"PL7neutral","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6TTGA0VR069WYJ2FB02J\",\"runId\":\"01M53E6TTGA0VR069WYJ2FB02J\",\"socketPath\":\"/tmp/relayflowd-fd0812b3c807.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r8s7head/PL7neutral/head-head-5/wstart; sleep 0.3; print","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2846} +{"s":"PL6child","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6VNBXM415PFKNE7F22B8\",\"runId\":\"01M53E6VNBXM415PFKNE7F22B8\",\"socketPath\":\"/tmp/relayflowd-a7813248fcab.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2355} +{"s":"PL6child","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6WAW89P1FWPGTH7Q4TGY\",\"runId\":\"01M53E6WAW89P1FWPGTH7Q4TGY\",\"socketPath\":\"/tmp/relayflowd-5e13aeb76ae7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2387} +{"s":"PL6child","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6XJ121THZZ9B6CPXG7A9\",\"runId\":\"01M53E6XJ121THZZ9B6CPXG7A9\",\"socketPath\":\"/tmp/relayflowd-ac5966319de1.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2403} +{"s":"PL6child","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6XXW41QA8MH10B10V4YF\",\"runId\":\"01M53E6XXW41QA8MH10B10V4YF\",\"socketPath\":\"/tmp/relayflowd-f14cef41e22e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2485} +{"s":"PL6child","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6YMKWAH70SVY6KEP06EV\",\"runId\":\"01M53E6YMKWAH70SVY6KEP06EV\",\"socketPath\":\"/tmp/relayflowd-71dbe81cb89b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2648} +{"s":"PL6late","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E70BBG7NBX9ZDM35BJPSZ\",\"runId\":\"01M53E70BBG7NBX9ZDM35BJPSZ\",\"socketPath\":\"/tmp/relayflowd-bf315d54598d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2319} +{"s":"PL6child","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E6ZXHQE8QVE5THWCY9SK6\",\"runId\":\"01M53E6ZXHQE8QVE5THWCY9SK6\",\"socketPath\":\"/tmp/relayflowd-fb6b5b3baffc.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2765} +{"s":"PL6late","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E71807DVSH9CT4HQ695J0\",\"runId\":\"01M53E71807DVSH9CT4HQ695J0\",\"socketPath\":\"/tmp/relayflowd-a495a4df4aeb.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2409} +{"s":"PL6late","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E72MY9W3RSSHEJWB178RW\",\"runId\":\"01M53E72MY9W3RSSHEJWB178RW\",\"socketPath\":\"/tmp/relayflowd-1176f9e19f42.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2554} +{"s":"PL6late","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E72NCFKWW7712119P4F34\",\"runId\":\"01M53E72NCFKWW7712119P4F34\",\"socketPath\":\"/tmp/relayflowd-86bc79dd0b31.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2615} +{"s":"PL6late","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E73K8J3J4WNEXKK0MJY8X\",\"runId\":\"01M53E73K8J3J4WNEXKK0MJY8X\",\"socketPath\":\"/tmp/relayflowd-d0f92ccc9fa3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2745} +{"s":"SEC7m","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E756E0SVMDHEZVBBX2J1J\",\"runId\":\"01M53E756E0SVMDHEZVBBX2J1J\",\"socketPath\":\"/tmp/relayflowd-4025dace6fc9.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-0/un","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-0/gr","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-0/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-0/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-0/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1714} +{"s":"PL6late","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E7540R5XMGFWATT9V9NN1\",\"runId\":\"01M53E7540R5XMGFWATT9V9NN1\",\"socketPath\":\"/tmp/relayflowd-6e8cb01eb5e5.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2856} +{"s":"SEC7m","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E769VRPHGWEYGW5T72DQG\",\"runId\":\"01M53E769VRPHGWEYGW5T72DQG\",\"socketPath\":\"/tmp/relayflowd-ae0a6804708b.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-1/gr","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-1/un","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-1/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-1/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-1/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1772} +{"s":"SEC7m","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E76XDAE5AG9VZVA1A8YMR\",\"runId\":\"01M53E76XDAE5AG9VZVA1A8YMR\",\"socketPath\":\"/tmp/relayflowd-45e95032ff82.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-2/gr","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-2/un","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-2/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-2/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-2/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1950} +{"s":"SEC7m","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E780DMEBKRWH3ZTFBWBSV\",\"runId\":\"01M53E780DMEBKRWH3ZTFBWBSV\",\"socketPath\":\"/tmp/relayflowd-d65a0017baa9.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.15; printf U","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-3/un","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-3/gr","run-3 c=1 sleep 0.1; printf G","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-3/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-3/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-3/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1955} +{"s":"SEC7m","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E782BHSQHXNFA1W869KSZ\",\"runId\":\"01M53E782BHSQHXNFA1W869KSZ\",\"socketPath\":\"/tmp/relayflowd-b8c3c3f73014.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-4/un","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-4/gr","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-4/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-4/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-4/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":2015} +{"s":"SEC7miss","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r8s7head/SEC7miss/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53E79V5XRFQ575QF8J0F8GV\",\"socketPath\":\"/tmp/relayflowd-1896aeb72f4a.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":601} +{"s":"SEC7miss","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r8s7head/SEC7miss/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53E79Z096X43EV036EEZ31T\",\"socketPath\":\"/tmp/relayflowd-a1f65f78b303.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":585} +{"s":"SEC7m","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53E78SB6T99QM35MVK7GCTA\",\"runId\":\"01M53E78SB6T99QM35MVK7GCTA\",\"socketPath\":\"/tmp/relayflowd-1dd8e2f62332.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-5/un","run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-5/gr","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-5/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-5/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r8s7head/SEC7m/head-head-5/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":2135} +{"s":"SEC7miss","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r8s7head/SEC7miss/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53E7AD33DJ7YCR950R82021\",\"socketPath\":\"/tmp/relayflowd-fbd40d755c62.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":584} +{"s":"SEC7miss","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r8s7head/SEC7miss/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53E7AHBX4H1HNRDSPWVV19H\",\"socketPath\":\"/tmp/relayflowd-8fc7d01fa01e.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":581} +{"s":"SEC7miss","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r8s7head/SEC7miss/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53E7AV6R55B03YWQQZ41XZP\",\"socketPath\":\"/tmp/relayflowd-eb6b67d032ba.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":575} +{"s":"SEC7miss","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r8s7head/SEC7miss/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53E7AZFW5A7BE01N1HNBB5A\",\"socketPath\":\"/tmp/relayflowd-b3811528fff0.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":585} +SUMMARY HY1 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=PBZ +SUMMARY HY1s head>head ok=6/6 replay=0 fresh=6 mode=serial codes=0 effects=PB +SUMMARY HY2 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=ABZ +SUMMARY PAR1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaZ +SUMMARY PAR2 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=baZ +SUMMARY EQ1twice head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=aaXZ +SUMMARY EQ2ret head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=abZ +SUMMARY EQ3midret head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=BARXZ +SUMMARY EQ4fail head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects=FB +SUMMARY EQ5wide head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=dagebhjckfilXZ|agdhjbefckilXZ|adgehjbcfkilXZ|adgebhjcfiklXZ|gdahbjecfkilXZ|agdehjbckfilXZ +SUMMARY EQ5stall head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=gadbehjcfYyiXZ|dagehjbfciYyXZ|adghejbfciYyXZ|gdabhjecfiYyXZ|adgehbjcfiYyXZ|gadhbejcfiYyXZ +SUMMARY EQ6expr head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=BACXZ +SUMMARY EQ7record head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=BR3XZ +SUMMARY EQ8throw head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects=B +SUMMARY EQ9nested head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=YbaXZ|aYbXZ +SUMMARY PL1r5 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL2then head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL3sub head>head ok=0/6 replay=0 fresh=0 mode=serial codes=1 effects=abcXZ +SUMMARY PL4ctor head>head ok=0/6 replay=0 fresh=0 mode=serial codes=1 effects=abcXZ +SUMMARY PL5species head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY SEC7 head>head ok=0/6 replay=0 fresh=0 mode=parallel codes=0 effects=Z +SUMMARY PL7mid head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL7neutral head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL6child head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL6late head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY SEC7m head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=Z +SUMMARY SEC7miss head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review8/h7-timing.log b/evidence/native-parallel-review8/h7-timing.log new file mode 100644 index 000000000..3625d748c --- /dev/null +++ b/evidence/native-parallel-review8/h7-timing.log @@ -0,0 +1,22 @@ +{"side":"head","i":0,"code":0,"mode":"parallel","cli":1208,"body":460,"routeSpread":10,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":0,"code":0,"mode":"absent","cli":1862,"body":1368,"routeSpread":654,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":1,"code":0,"mode":"absent","cli":1862,"body":1383,"routeSpread":663,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":1,"code":0,"mode":"parallel","cli":1080,"body":458,"routeSpread":5,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":2,"code":0,"mode":"parallel","cli":1078,"body":437,"routeSpread":3,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":2,"code":0,"mode":"absent","cli":1860,"body":1376,"routeSpread":652,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":3,"code":0,"mode":"absent","cli":1857,"body":1370,"routeSpread":653,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":3,"code":0,"mode":"parallel","cli":1132,"body":456,"routeSpread":6,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":4,"code":0,"mode":"parallel","cli":1175,"body":466,"routeSpread":7,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":4,"code":0,"mode":"absent","cli":1857,"body":1377,"routeSpread":668,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":5,"code":0,"mode":"absent","cli":1853,"body":1378,"routeSpread":659,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":5,"code":0,"mode":"parallel","cli":1115,"body":456,"routeSpread":4,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":6,"code":0,"mode":"parallel","cli":1128,"body":456,"routeSpread":3,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":6,"code":0,"mode":"absent","cli":1867,"body":1374,"routeSpread":660,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":7,"code":0,"mode":"absent","cli":1904,"body":1395,"routeSpread":663,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":7,"code":0,"mode":"parallel","cli":1132,"body":464,"routeSpread":3,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":8,"code":0,"mode":"parallel","cli":1106,"body":466,"routeSpread":6,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":8,"code":0,"mode":"absent","cli":1847,"body":1376,"routeSpread":669,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":9,"code":0,"mode":"absent","cli":1833,"body":1353,"routeSpread":657,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":9,"code":0,"mode":"parallel","cli":1117,"body":462,"routeSpread":5,"routesOverlap":true,"depsOverlap":true} +TIMING head mode=parallel codes=0 body p50=460 max=466 cli p50=1128 max=1208 spread p50=5 routesOverlap=10/10 depsOverlap=10/10 +TIMING base mode=absent codes=0 body p50=1376 max=1395 cli p50=1860 max=1904 spread p50=660 routesOverlap=0/10 depsOverlap=0/10 diff --git a/evidence/native-parallel-review8/h7-upgrade-pinned.log b/evidence/native-parallel-review8/h7-upgrade-pinned.log new file mode 100644 index 000000000..004c727f0 --- /dev/null +++ b/evidence/native-parallel-review8/h7-upgrade-pinned.log @@ -0,0 +1,70 @@ +{"s":"UCI4","start":"p2050","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPHQDRRQ7C1QCTT2RV7AF\",\"runId\":\"01M53EPHQDRRQ7C1QCTT2RV7AF\",\"socketPath\":\"/tmp/relayflowd-6a3f6431b786.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1613} +{"s":"UCI4","start":"p2050","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPHQD2A218RMF3H5ZYHQ8\",\"runId\":\"01M53EPHQD2A218RMF3H5ZYHQ8\",\"socketPath\":\"/tmp/relayflowd-4b4a54a360ae.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1655} +{"s":"UCI4","start":"p2050","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPHQDHTJCSWNSTQ9DSXX7\",\"runId\":\"01M53EPHQDHTJCSWNSTQ9DSXX7\",\"socketPath\":\"/tmp/relayflowd-1b61916c69f2.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1707} +{"s":"UCI4","start":"p2050","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPK5EQ8C5DZFPTWC9B8VW\",\"runId\":\"01M53EPK5EQ8C5DZFPTWC9B8VW\",\"socketPath\":\"/tmp/relayflowd-cddb2fa94a7a.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1594} +{"s":"UCI4","start":"p2050","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPK6YBPAEY1SZTAN3QS7V\",\"runId\":\"01M53EPK6YBPAEY1SZTAN3QS7V\",\"socketPath\":\"/tmp/relayflowd-4e8a4697adb5.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1710} +{"s":"UCI4","start":"p2050","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPK8359MSMGE15A0C8J5V\",\"runId\":\"01M53EPK8359MSMGE15A0C8J5V\",\"socketPath\":\"/tmp/relayflowd-1b5636a6eb12.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1821} +{"s":"UCI4","start":"p2051","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPMRM25QRC4ZVPJFT2W6H\",\"runId\":\"01M53EPMRM25QRC4ZVPJFT2W6H\",\"socketPath\":\"/tmp/relayflowd-d231d567010d.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1355} +{"s":"UCI4","start":"p2051","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPMWB5R66QDETS8272GM7\",\"runId\":\"01M53EPMWB5R66QDETS8272GM7\",\"socketPath\":\"/tmp/relayflowd-349c7c6db278.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1353} +{"s":"UCI4","start":"p2051","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPN0BHBCF5C0FNJG9CRVG\",\"runId\":\"01M53EPN0BHBCF5C0FNJG9CRVG\",\"socketPath\":\"/tmp/relayflowd-827ddad5dbe5.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1392} +{"s":"UCI4","start":"p2051","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPP157KBK39YWJ67JEN3B\",\"runId\":\"01M53EPP157KBK39YWJ67JEN3B\",\"socketPath\":\"/tmp/relayflowd-c82424ee5ca7.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1544} +{"s":"UCI4","start":"p2051","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPP61PS4HAKS3X9PWJYA9\",\"runId\":\"01M53EPP61PS4HAKS3X9PWJYA9\",\"socketPath\":\"/tmp/relayflowd-dfb5134e08a7.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1758} +{"s":"UCI4","start":"p2051","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcd","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPPEMC0EF6JYR6934Y7XN\",\"runId\":\"01M53EPPEMC0EF6JYR6934Y7XN\",\"socketPath\":\"/tmp/relayflowd-2a22a3e00b31.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdyegZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-6 c=1 printf e >> effects","run-7 c=1 printf g >> effects","run-8 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1856} +{"s":"UCI5","start":"p2050","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPQHWHP86B0F6ZQ5XMFTJ\",\"runId\":\"01M53EPQHWHP86B0F6ZQ5XMFTJ\",\"socketPath\":\"/tmp/relayflowd-cbb7228fd4e1.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1347} +{"s":"UCI5","start":"p2050","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPQX3F6RK8B2PWNGQW3D4\",\"runId\":\"01M53EPQX3F6RK8B2PWNGQW3D4\",\"socketPath\":\"/tmp/relayflowd-d9b841f6420c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1411} +{"s":"UCI5","start":"p2050","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPR76AXQ929J4SJM2SC4H\",\"runId\":\"01M53EPR76AXQ929J4SJM2SC4H\",\"socketPath\":\"/tmp/relayflowd-ffb040ac4a0c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1492} +{"s":"UCI5","start":"p2050","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPRVVGZTEJAR4S2JQDAEB\",\"runId\":\"01M53EPRVVGZTEJAR4S2JQDAEB\",\"socketPath\":\"/tmp/relayflowd-4c20816ae0e4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1603} +{"s":"UCI5","start":"p2050","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPS8QVRCHHC79TFE2DEHB\",\"runId\":\"01M53EPS8QVRCHHC79TFE2DEHB\",\"socketPath\":\"/tmp/relayflowd-0d755c762fc1.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1737} +{"s":"UCI5","start":"p2050","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPSQ0MEK7MWY6YZWP2EYM\",\"runId\":\"01M53EPSQ0MEK7MWY6YZWP2EYM\",\"socketPath\":\"/tmp/relayflowd-12e1c7c42f8d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1860} +{"s":"UCI5","start":"p2051","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPTEBBAXTW16WTVNQ3DQX\",\"runId\":\"01M53EPTEBBAXTW16WTVNQ3DQX\",\"socketPath\":\"/tmp/relayflowd-07030fac8f82.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1415} +{"s":"UCI5","start":"p2051","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPV06WTZ0GCEJ46BCCDCB\",\"runId\":\"01M53EPV06WTZ0GCEJ46BCCDCB\",\"socketPath\":\"/tmp/relayflowd-d299b5b1977b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1442} +{"s":"UCI5","start":"p2051","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPVF81GCMDQDD0NKWC3RB\",\"runId\":\"01M53EPVF81GCMDQDD0NKWC3RB\",\"socketPath\":\"/tmp/relayflowd-a7bac5656c4e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1505} +{"s":"UCI5","start":"p2051","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPVT0XQ52QVWAY9GVTY9V\",\"runId\":\"01M53EPVT0XQ52QVWAY9GVTY9V\",\"socketPath\":\"/tmp/relayflowd-d049efb5cf20.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1517} +{"s":"UCI5","start":"p2051","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPWCN5WQQ7E7HXW1D0HZV\",\"runId\":\"01M53EPWCN5WQQ7E7HXW1D0HZV\",\"socketPath\":\"/tmp/relayflowd-81ce1ea74772.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1709} +{"s":"UCI5","start":"p2051","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcde","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPWXKW2W6RN715508NFN7\",\"runId\":\"01M53EPWXKW2W6RN715508NFN7\",\"socketPath\":\"/tmp/relayflowd-8fa97bd74066.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcdeyghZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf a >> effects","run-2 c=1 printf b >> effects","run-3 c=1 printf c >> effects","run-4 c=1 printf d >> effects","run-5 c=1 printf e >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf y >> effects","run-7 c=1 printf g >> effects","run-8 c=1 printf h >> effects","run-9 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1775} +{"s":"UA1","start":"p2050","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPX9M1WWPA6954JHS8QZB\",\"runId\":\"01M53EPX9M1WWPA6954JHS8QZB\",\"socketPath\":\"/tmp/relayflowd-62c29a2cea55.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1980} +{"s":"UA1","start":"p2050","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPY2ZGY9H1TNK4BTYT3VW\",\"runId\":\"01M53EPY2ZGY9H1TNK4BTYT3VW\",\"socketPath\":\"/tmp/relayflowd-692955adfa2d.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2048} +{"s":"UA1","start":"p2050","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPYQPRXNV2BGVYXVG6CKV\",\"runId\":\"01M53EPYQPRXNV2BGVYXVG6CKV\",\"socketPath\":\"/tmp/relayflowd-e3212bf5280c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2137} +{"s":"UA1","start":"p2050","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EPZ8P7V58DYJN855JRJT8\",\"runId\":\"01M53EPZ8P7V58DYJN855JRJT8\",\"socketPath\":\"/tmp/relayflowd-2499d5c85d56.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2208} +{"s":"UA1","start":"p2050","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ02N1KQD4AMSVG7XN46N\",\"runId\":\"01M53EQ02N1KQD4AMSVG7XN46N\",\"socketPath\":\"/tmp/relayflowd-af243f2386db.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2276} +{"s":"UA1","start":"p2050","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ0TB6BZ63A0E6VZCABJR\",\"runId\":\"01M53EQ0TB6BZ63A0E6VZCABJR\",\"socketPath\":\"/tmp/relayflowd-42f228c477f6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2421} +{"s":"UA1","start":"p2051","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ1D8VJSSJ1KS64ZABWR1\",\"runId\":\"01M53EQ1D8VJSSJ1KS64ZABWR1\",\"socketPath\":\"/tmp/relayflowd-9b10fe4c0795.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1900} +{"s":"UA1","start":"p2051","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ29K9W9G8YE46YPY8PY1\",\"runId\":\"01M53EQ29K9W9G8YE46YPY8PY1\",\"socketPath\":\"/tmp/relayflowd-2e4748df5e3c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1978} +{"s":"UA1","start":"p2051","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ34S02SJECQ6S46B3PA4\",\"runId\":\"01M53EQ34S02SJECQ6S46B3PA4\",\"socketPath\":\"/tmp/relayflowd-4f9fe252ddf9.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2029} +{"s":"UA1","start":"p2051","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ37XWHTYAZPSCNYQHKJA\",\"runId\":\"01M53EQ37XWHTYAZPSCNYQHKJA\",\"socketPath\":\"/tmp/relayflowd-b618a487313c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2146} +{"s":"UA1","start":"p2051","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ46P5S2SR08JVM59PM2X\",\"runId\":\"01M53EQ46P5S2SR08JVM59PM2X\",\"socketPath\":\"/tmp/relayflowd-0b749985854c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2222} +{"s":"UB1","start":"p2050","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ5BS9NR6NK3N4BA5P63F\",\"runId\":\"01M53EQ5BS9NR6NK3N4BA5P63F\",\"socketPath\":\"/tmp/relayflowd-985afc64c91f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1337} +{"s":"UA1","start":"p2051","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"LR","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ548WKHFGSBDT2M7HV81\",\"runId\":\"01M53EQ548WKHFGSBDT2M7HV81\",\"socketPath\":\"/tmp/relayflowd-6694744bfec6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"LRZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 printf B","run-3 c=1 printf C","run-4 c=1 sleep 0.3; printf D","run-5 c=1 printf L >> effects","run-6 c=1 printf R >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2336} +{"s":"UB1","start":"p2050","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ6C54YC2VHHPVX2Y4HXV\",\"runId\":\"01M53EQ6C54YC2VHHPVX2Y4HXV\",\"socketPath\":\"/tmp/relayflowd-b3be1149b6f8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1389} +{"s":"UB1","start":"p2050","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ6MQDXPDHBGMYNVAAKNW\",\"runId\":\"01M53EQ6MQDXPDHBGMYNVAAKNW\",\"socketPath\":\"/tmp/relayflowd-92ce31a90c56.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1418} +{"s":"UB1","start":"p2050","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ7D6FB54W3HFVZAY8E58\",\"runId\":\"01M53EQ7D6FB54W3HFVZAY8E58\",\"socketPath\":\"/tmp/relayflowd-7e912073c813.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1588} +{"s":"UB1","start":"p2050","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ7QAAA18GEM7VBK5ADXV\",\"runId\":\"01M53EQ7QAAA18GEM7VBK5ADXV\",\"socketPath\":\"/tmp/relayflowd-7f26a97dff4b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1699} +{"s":"UB1","start":"p2050","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ82AVMTDGB0259Z1P2HA\",\"runId\":\"01M53EQ82AVMTDGB0259Z1P2HA\",\"socketPath\":\"/tmp/relayflowd-bdac3e88e21c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1869} +{"s":"UB1","start":"p2051","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ8Z8XYHA931XMH6EWZS1\",\"runId\":\"01M53EQ8Z8XYHA931XMH6EWZS1\",\"socketPath\":\"/tmp/relayflowd-695aa264028e.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1311} +{"s":"UB1","start":"p2051","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ9DAA3J83BAKER3PPRRW\",\"runId\":\"01M53EQ9DAA3J83BAKER3PPRRW\",\"socketPath\":\"/tmp/relayflowd-99ffccf8b5f0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1437} +{"s":"UB1","start":"p2051","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQ9W7T6D1X45B4P58Z0DH\",\"runId\":\"01M53EQ9W7T6D1X45B4P58Z0DH\",\"socketPath\":\"/tmp/relayflowd-a4fa212ea74b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1495} +{"s":"UB1","start":"p2051","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQA82E39G1R5ZFBZFR995\",\"runId\":\"01M53EQA82E39G1R5ZFBZFR995\",\"socketPath\":\"/tmp/relayflowd-dd1c8aa975cd.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1578} +{"s":"UB1","start":"p2051","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQATGVVR0GSQQNTT3GGX9\",\"runId\":\"01M53EQATGVVR0GSQQNTT3GGX9\",\"socketPath\":\"/tmp/relayflowd-c9013e699e87.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1648} +{"s":"UB1","start":"p2051","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"RL","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQBAQNNJA8QE3XZ8DV2VM\",\"runId\":\"01M53EQBAQNNJA8QE3XZ8DV2VM\",\"socketPath\":\"/tmp/relayflowd-3b7a664849fc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"RLZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf A","run-2 c=1 printf C","run-3 c=1 printf D","run-4 c=1 printf B","run-5 c=1 printf R >> effects","run-6 c=1 printf L >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1737} +{"s":"UN2","start":"p2050","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQBS75JBPJVSXHQGZFDW4\",\"runId\":\"01M53EQBS75JBPJVSXHQGZFDW4\",\"socketPath\":\"/tmp/relayflowd-53d5b88521fc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1959} +{"s":"UN2","start":"p2050","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQCE1AJVHJCDSHKYTYX19\",\"runId\":\"01M53EQCE1AJVHJCDSHKYTYX19\",\"socketPath\":\"/tmp/relayflowd-3483fe9e719c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1950} +{"s":"UN2","start":"p2050","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQD2QFFANTFRF9SNYNJJC\",\"runId\":\"01M53EQD2QFFANTFRF9SNYNJJC\",\"socketPath\":\"/tmp/relayflowd-b3410103f4ac.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2133} +{"s":"UN2","start":"p2050","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQDPG563E36V5PG2CVTMJ\",\"runId\":\"01M53EQDPG563E36V5PG2CVTMJ\",\"socketPath\":\"/tmp/relayflowd-2c15076f9dbb.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2136} +{"s":"UN2","start":"p2050","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQEABYZACY7JJFQ6ZJJ6Y\",\"runId\":\"01M53EQEABYZACY7JJFQ6ZJJ6Y\",\"socketPath\":\"/tmp/relayflowd-e8274f73d5af.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2231} +{"s":"UN2","start":"p2050","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQF37SEED50YN6N8VNBXQ\",\"runId\":\"01M53EQF37SEED50YN6N8VNBXQ\",\"socketPath\":\"/tmp/relayflowd-4770886ed417.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2363} +{"s":"UN2","start":"p2051","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQFS2BVFQQ9NN30MN70TH\",\"runId\":\"01M53EQFS2BVFQQ9NN30MN70TH\",\"socketPath\":\"/tmp/relayflowd-ff94f6521e07.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1911} +{"s":"UN2","start":"p2051","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQGG80ERK1MBAKCA3VXTE\",\"runId\":\"01M53EQGG80ERK1MBAKCA3VXTE\",\"socketPath\":\"/tmp/relayflowd-383ed0954cb0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1966} +{"s":"UN2","start":"p2051","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQHCR8N2R5T7HB42D9NBY\",\"runId\":\"01M53EQHCR8N2R5T7HB42D9NBY\",\"socketPath\":\"/tmp/relayflowd-25c9364a3806.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2027} +{"s":"UN2","start":"p2051","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQHMSYF1DTRKJPSJ8ETAR\",\"runId\":\"01M53EQHMSYF1DTRKJPSJ8ETAR\",\"socketPath\":\"/tmp/relayflowd-d7e0db7a921d.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2178} +{"s":"UN2","start":"p2051","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQJDECS2XZVZJ0347G046\",\"runId\":\"01M53EQJDECS2XZVZJ0347G046\",\"socketPath\":\"/tmp/relayflowd-c9d480294723.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2219} +{"s":"UN2","start":"p2051","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abc","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53EQKCX0MJP8SNYJKRWAJSS\",\"runId\":\"01M53EQKCX0MJP8SNYJKRWAJSS\",\"socketPath\":\"/tmp/relayflowd-2304090c3b49.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf c >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2420} +SUMMARY UCI4 p2050>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcdyegZ +SUMMARY UCI4 p2051>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcdyegZ +SUMMARY UCI5 p2050>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcdeyghZ +SUMMARY UCI5 p2051>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcdeyghZ +SUMMARY UA1 p2050>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=LRZ +SUMMARY UA1 p2051>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=LRZ +SUMMARY UB1 p2050>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=RLZ +SUMMARY UB1 p2051>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=RLZ +SUMMARY UN2 p2050>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcZ +SUMMARY UN2 p2051>head ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcZ diff --git a/evidence/native-parallel-review8/h7.mjs b/evidence/native-parallel-review8/h7.mjs new file mode 100644 index 000000000..353e4dc18 --- /dev/null +++ b/evidence/native-parallel-review8/h7.mjs @@ -0,0 +1,217 @@ +// Review-7 crash/resume harness for flows#667. Runs inside node:22-trixie. +// usage: node --no-warnings h7.mjs [--reps=6] [--conc=3] [--tag=x] [--sides=a:b/c:d] [--keep] +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; +import { createRequire } from 'node:module'; +import { DatabaseSync } from 'node:sqlite'; +globalThis.require = createRequire(import.meta.url); + +const args = process.argv.slice(2); +const opt = (k, d) => { const a = args.find(x => x.startsWith(`--${k}=`)); return a ? a.slice(k.length + 3) : d; }; +const file = args[0]; +const names = args[1]; +const reps = Number(opt('reps', '6')); +const conc = Number(opt('conc', '3')); +const tag = opt('tag', 't'); +const sidesOverride = opt('sides', undefined)?.split('/').map(p => p.split(':')); +const keep = args.includes('--keep'); +const DELAYS = [0, 60, 130, 220, 330, 450, 30, 180, 270, 400]; + +const SIDES = { + head: { cli: '/w/head/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + base: { cli: '/w/base/packages/sdk/dist/cli.js', nm: '/w/base/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + forced: { cli: '/w/forced/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + fix: { cli: '/w/fix/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + deep: { cli: '/w/deep/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + p2050: { cli: '/w/p2050/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2050/node_modules', daemon: '/w/relayflowd-2050' }, + p2051: { cli: '/w/p2051/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2051/node_modules', daemon: '/w/relayflowd-main' }, +}; + +const sleep = ms => new Promise(r => setTimeout(r, ms)); +const read = p => { try { return fs.readFileSync(p, 'utf8'); } catch { return ''; } }; + +function start(side, argv, root, env = {}) { + const s = SIDES[side]; + const child = spawn(process.execPath, [s.cli, ...argv], { + cwd: root, env: { ...process.env, ...env, RELAYFLOWD_BIN: s.daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let out = ''; + child.stdout.on('data', d => { out += d; }); + child.stderr.on('data', d => { out += d; }); + return { child, closed: new Promise(r => child.once('close', (code, signal) => r({ code, signal }))), get out() { return out; } }; +} + +function sweep(root) { + const targets = new Set(); + try { targets.add(JSON.parse(read(path.join(root, 'data/connection.json'))).pid); } catch {} + for (const e of fs.readdirSync('/proc')) { + if (!/^\d+$/.test(e)) continue; + const pid = Number(e); + if (pid === process.pid) continue; + try { + const cwd = fs.readlinkSync(`/proc/${pid}/cwd`); + const cmd = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8'); + if (cwd === root || cwd.startsWith(root + '/') || cmd.includes(root)) targets.add(pid); + } catch {} + } + for (const pid of targets) { try { if (pid) process.kill(pid, 'SIGKILL'); } catch {} } +} + +function journals(root) { + const dir = path.join(root, 'data/runs'); + if (!fs.existsSync(dir)) return []; + return fs.readdirSync(dir).filter(f => f.endsWith('.sqlite3')).sort().map(f => { + let db; + try { db = new DatabaseSync(path.join(dir, f), { readOnly: true }); } catch { return { runId: f.slice(0, -8), step: undefined, completed: 0 }; } + try { + if (!db.prepare("select name from sqlite_master where type='table' and name='entries'").get()) return { runId: f.slice(0, -8), step: undefined, completed: 0 }; + const sp = db.prepare("select payload from entries where entry_type='run.spawned' order by seq limit 1").get(); + const done = db.prepare("select count(*) as n from entries where entry_type='step.completed'").get().n; + const payload = sp ? JSON.parse(sp.payload) : undefined; + const spec = payload?.spec ?? payload?.payload?.spec ?? payload?.run?.spec; + return { runId: f.slice(0, -8), step: spec?.steps?.[0], completed: Number(done) }; + } finally { db.close(); } + }); +} + +function rootOf(js) { return js.find(j => j.step?.id === 'authored-root'); } +function modeOf(r) { + try { const m = JSON.parse(r.step.instruction); return m.executionMode ?? (m.identityVersion ? 'v2?' : 'absent'); } catch { return 'unknown'; } +} + +function replayCheck(js, rootId, expected = {}) { + const seen = new Map(); + const ids = []; + let replay = false; + const dups = []; + for (const j of js) { + if (j.runId === rootId || !j.step) continue; + const st = j.step; + const cmd = st.command ?? st.instruction ?? ''; + ids.push(`${st.id} c=${j.completed} ${String(cmd).slice(0, 70)}`); + if (!st.command) continue; + const ns = st.id.includes('--') ? st.id.slice(0, st.id.lastIndexOf('--')) : ''; + const key = `${ns}|${st.command}`; + const prev = seen.get(key) ?? []; + prev.push({ id: st.id, completed: j.completed }); + seen.set(key, prev); + const distinct = new Set(prev.map(p => p.id)); + if (distinct.size > (expected[st.command] ?? 1) && prev.some(p => p.completed > 0)) { + replay = true; dups.push(`${st.command.slice(0, 50)}: ${[...distinct].join(' & ')}`); + } + } + return { replay, ids, dups }; +} + +async function one(sc, startSide, resumeSide, i) { + const root = `/w/runs/${tag}/${sc.name}/${startSide}-${resumeSide}-${i}`; + fs.rmSync(root, { recursive: true, force: true }); + fs.mkdirSync(root, { recursive: true }); + const nmSide = sc.nmSide ?? startSide; + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync(SIDES[nmSide].nm, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ cli: path.join(root, 'adapter.mjs'), models: ['test-model'] })); + fs.writeFileSync(path.join(root, 'adapter.mjs'), '#!/usr/bin/env node\nprocess.exit(0);\n', { mode: 0o755 }); + for (const [f, src] of Object.entries(sc.files)) { + const t = path.join(root, f); + fs.mkdirSync(path.dirname(t), { recursive: true }); + fs.writeFileSync(t, src.replaceAll('', root)); + if (f.endsWith('adapter.mjs')) fs.chmodSync(t, 0o755); + } + if (sc.bluebird) { + const d = path.join(root, 'bb'); + fs.cpSync('/w/head/packages/sdk/node_modules/bluebird/js/release', d, { recursive: true }); + fs.writeFileSync(path.join(d, 'package.json'), '{"type":"commonjs"}'); + } + const env = Object.fromEntries(Object.entries(sc.env ?? {}).map(([k, v]) => [k, String(v).replaceAll('', root)])); + const entry = path.join(root, sc.entry ?? 'chain.flow.ts'); + const res = { s: sc.name, start: startSide, resume: resumeSide, i }; + const t0 = Date.now(); + const first = start(startSide, ['run', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), entry, '--input', '{}'], root, env); + let early; + const deadline = Date.now() + 90_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (first.child.exitCode !== null || first.child.signalCode !== null) { early = await first.closed; break; } + if (Date.now() > deadline) { first.child.kill('SIGKILL'); early = { code: 'timeout' }; break; } + await sleep(15); + } + try { + if (early) { + res.fresh = true; res.code1 = early.code; res.code = early.code; + res.effects1 = res.effects = read(path.join(root, 'effects')); + res.out1 = first.out.slice(-600); + } else { + res.fresh = false; + await sleep(sc.delays?.[i] ?? DELAYS[i % DELAYS.length]); + first.child.kill('SIGKILL'); + await Promise.race([first.closed, sleep(2000)]); + sweep(root); await sleep(100); sweep(root); + res.code1 = 'killed'; + res.effects1 = read(path.join(root, 'effects')); + fs.writeFileSync(path.join(root, 'release'), ''); + const r0 = rootOf(journals(root)); + if (!r0) throw new Error('no root journal'); + const resumed = start(resumeSide, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env); + const to = setTimeout(() => resumed.child.kill('SIGKILL'), 150_000); + const rr = await resumed.closed; clearTimeout(to); + res.code = rr.code; res.out = resumed.out.slice(-600); + sweep(root); + if (sc.secondResume) { + res.effects0 = res.effects1; + res.effectsMid = read(path.join(root, 'effects')); + res.code1 = rr.code; res.effects1 = res.effectsMid; + const fin = start(sc.secondResume, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env); + const to2 = setTimeout(() => fin.child.kill('SIGKILL'), 150_000); + const fr = await fin.closed; clearTimeout(to2); + res.code = fr.code; res.out2 = fin.out.slice(-400); + sweep(root); + } + res.effects = read(path.join(root, 'effects')); + } + const js = journals(root); + const r = rootOf(js); + res.mode = r ? modeOf(r) : 'noroot'; + const rc = replayCheck(js, r?.runId, sc.expectedCounts); + res.journalReplay = rc.replay; res.dups = rc.dups; res.ids = rc.ids; + const letters = [...res.effects].filter(c => /[A-Za-z]/.test(c)); + res.letterDup = new Set(letters).size !== letters.length; + res.replay = res.journalReplay || (res.letterDup && !sc.allowDupLetters); + if (sc.extraCheck) Object.assign(res, sc.extraCheck(root)); + const okDefault = r => r.code === 0 && !r.replay && (sc.noZ || r.effects.includes('Z')); + res.ok = sc.okIf ? (sc.okIf(res) && !res.replay) : sc.expect ? (sc.expect(res) && !res.replay && res.code === 0) : okDefault(res); + } catch (e) { + res.error = String(e?.stack ?? e).slice(0, 400); res.ok = false; + } finally { + try { first.child.kill('SIGKILL'); } catch {} + sweep(root); + res.ms = Date.now() - t0; + if (!keep && res.ok) fs.rmSync(root, { recursive: true, force: true }); + } + return res; +} + +const mod = await import(path.resolve(file)); +let scen = mod.default; +if (names !== 'all') { const want = names.split(','); scen = want.map(n => { const s = scen.find(x => x.name === n); if (!s) throw new Error(`no scenario ${n}`); return s; }); } +const jobs = []; +for (const sc of scen) for (const [a, b] of (sidesOverride ?? sc.sides)) for (let i = 0; i < reps; i++) jobs.push([sc, a, b, i]); +const results = []; +let next = 0; +await Promise.all(Array.from({ length: conc }, async () => { + while (next < jobs.length) { + const [sc, a, b, i] = jobs[next++]; + const r = await one(sc, a, b, i); + results.push(r); + console.log(JSON.stringify(r)); + } +})); +const groups = new Map(); +for (const r of results) { + const k = `${r.s} ${r.start}>${r.resume}`; + const g = groups.get(k) ?? { ok: 0, n: 0, replay: 0, fresh: 0, modes: new Set(), effects: new Set(), codes: new Set() }; + g.n++; if (r.ok) g.ok++; if (r.replay) g.replay++; if (r.fresh) g.fresh++; + g.modes.add(r.mode); g.effects.add(r.effects); g.codes.add(String(r.code)); + groups.set(k, g); +} +for (const [k, g] of groups) console.log(`SUMMARY ${k} ok=${g.ok}/${g.n} replay=${g.replay} fresh=${g.fresh} mode=${[...g.modes]} codes=${[...g.codes]} effects=${[...g.effects].join('|')}`); diff --git a/evidence/native-parallel-review8/mut-f1-parens-fail.log b/evidence/native-parallel-review8/mut-f1-parens-fail.log new file mode 100644 index 000000000..45fd093ec --- /dev/null +++ b/evidence/native-parallel-review8/mut-f1-parens-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-body.test.ts (5 tests | 1 failed | 4 skipped) 8ms + × certified authored parallel body > certifies every parenthesized branch member accepted by the grammar 7ms + → expected [] to have a length of 3 but got +0 + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-body.test.ts > certified authored parallel body > certifies every parenthesized branch member accepted by the grammar +AssertionError: expected [] to have a length of 3 but got +0 + +- Expected ++ Received + +- 3 ++ 0 + + ❯ tests/authored-parallel-body.test.ts:38:23 + 36| const executable = instrumentParallelBody(body, promise => certifi… + 37| await executable({ run: async command => { commands.push(command);… + 38| expect(certified).toHaveLength(3); + | ^ + 39| expect(new Set(certified).size).toBe(3); + 40| expect(commands).toEqual(['A', 'B', 'C']); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 4 skipped (5) + Start at 00:51:57 + Duration 736ms (transform 48ms, setup 10ms, collect 441ms, tests 8ms, environment 0ms, prepare 66ms) diff --git a/evidence/native-parallel-review8/mut-f1-parens-pass.log b/evidence/native-parallel-review8/mut-f1-parens-pass.log new file mode 100644 index 000000000..c4d24a6c5 --- /dev/null +++ b/evidence/native-parallel-review8/mut-f1-parens-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-body.test.ts (5 tests | 4 skipped) 6ms + + Test Files 1 passed (1) + Tests 1 passed | 4 skipped (5) + Start at 00:51:58 + Duration 414ms (transform 28ms, setup 11ms, collect 196ms, tests 6ms, environment 0ms, prepare 35ms) diff --git a/evidence/native-parallel-review8/mut-f2-name-fail.log b/evidence/native-parallel-review8/mut-f2-name-fail.log new file mode 100644 index 000000000..25ec41180 --- /dev/null +++ b/evidence/native-parallel-review8/mut-f2-name-fail.log @@ -0,0 +1,36 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-parallel-eligibility.test.ts (10 tests | 1 failed | 9 skipped) 10ms + × parallel run admission > uses serial mode when the body names the injected certifier 9ms + → const __certifyParallelBranch = async () => { await f.run('P'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([__certifyParallelBranch(), b()]);: expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-parallel-eligibility.test.ts > parallel run admission > uses serial mode when the body names the injected certifier +AssertionError: const __certifyParallelBranch = async () => { await f.run('P'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([__certifyParallelBranch(), b()]);: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-parallel-eligibility.test.ts:184:86 + 182| const b = async () => { await f.run('B'); }; + 183| await Promise.all([a(), b()]);`, + 184| ]) expect(eligible(body(`async f => { ${source} f.done('success');… + | ^ + 185| }); + 186| }); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 9 skipped (10) + Start at 00:51:58 + Duration 506ms (transform 28ms, setup 11ms, collect 203ms, tests 10ms, environment 0ms, prepare 35ms) diff --git a/evidence/native-parallel-review8/mut-f2-name-pass.log b/evidence/native-parallel-review8/mut-f2-name-pass.log new file mode 100644 index 000000000..5d855b33f --- /dev/null +++ b/evidence/native-parallel-review8/mut-f2-name-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (10 tests | 9 skipped) 7ms + + Test Files 1 passed (1) + Tests 1 passed | 9 skipped (10) + Start at 00:51:59 + Duration 477ms (transform 29ms, setup 12ms, collect 199ms, tests 7ms, environment 0ms, prepare 70ms) diff --git a/evidence/native-parallel-review8/mut-f3-preload-fail.log b/evidence/native-parallel-review8/mut-f3-preload-fail.log new file mode 100644 index 000000000..74730768b --- /dev/null +++ b/evidence/native-parallel-review8/mut-f3-preload-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (45 tests | 1 failed | 44 skipped) 6ms + × authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins 4ms + → NODE_OPTIONS preload: expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins +AssertionError: NODE_OPTIONS preload: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-flow-lifecycle-executor.test.ts:81:73 + 79| try { + 80| process.env['NODE_OPTIONS'] = '--import=/tmp/preload.mjs'; + 81| expect(parallelPromiseIntrinsicsIntact(), 'NODE_OPTIONS preload'… + | ^ + 82| } finally { + 83| if (nodeOptions === undefined) delete process.env['NODE_OPTIONS'… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 44 skipped (45) + Start at 00:52:00 + Duration 1.70s (transform 510ms, setup 9ms, collect 1.38s, tests 6ms, environment 0ms, prepare 44ms) diff --git a/evidence/native-parallel-review8/mut-f3-preload-pass.log b/evidence/native-parallel-review8/mut-f3-preload-pass.log new file mode 100644 index 000000000..391faf88c --- /dev/null +++ b/evidence/native-parallel-review8/mut-f3-preload-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (45 tests | 44 skipped) 3ms + + Test Files 1 passed (1) + Tests 1 passed | 44 skipped (45) + Start at 00:52:01 + Duration 1.35s (transform 517ms, setup 12ms, collect 1.10s, tests 3ms, environment 0ms, prepare 46ms) diff --git a/evidence/native-parallel-review8/mut-f4-member-fail.log b/evidence/native-parallel-review8/mut-f4-member-fail.log new file mode 100644 index 000000000..9580e099b --- /dev/null +++ b/evidence/native-parallel-review8/mut-f4-member-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (45 tests | 1 failed | 44 skipped) 7ms + × authored flow lifecycle through the journal executor > refuses untracked thenables before invoking their user-supplied then 4ms + → expected [Function] to throw an error + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > refuses untracked thenables before invoking their user-supplied then +AssertionError: expected [Function] to throw an error + +- Expected: +null + ++ Received: +undefined + + ❯ tests/authored-flow-lifecycle-executor.test.ts:104:12 + 102| hiddenThenable, + 103| Promise.resolve('B'), + 104| ]))).toThrow(/member with no tracked provenance/u); + | ^ + 105| expect(violations).toContain('parallel Promise.all contains a me… + 106| expect(thenReads).toBe(0); + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 44 skipped (45) + Start at 00:52:03 + Duration 1.29s (transform 447ms, setup 18ms, collect 998ms, tests 7ms, environment 0ms, prepare 56ms) diff --git a/evidence/native-parallel-review8/mut-f4-member-pass.log b/evidence/native-parallel-review8/mut-f4-member-pass.log new file mode 100644 index 000000000..7aeee61e6 --- /dev/null +++ b/evidence/native-parallel-review8/mut-f4-member-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (45 tests | 44 skipped) 3ms + + Test Files 1 passed (1) + Tests 1 passed | 44 skipped (45) + Start at 00:52:05 + Duration 1.30s (transform 454ms, setup 11ms, collect 1.03s, tests 3ms, environment 0ms, prepare 41ms) diff --git a/evidence/native-parallel-review8/mut-f6-descriptors-fail.log b/evidence/native-parallel-review8/mut-f6-descriptors-fail.log new file mode 100644 index 000000000..dc1f662fc --- /dev/null +++ b/evidence/native-parallel-review8/mut-f6-descriptors-fail.log @@ -0,0 +1,32 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ❯ tests/authored-flow-lifecycle-executor.test.ts (45 tests | 1 failed | 44 skipped) 6ms + × authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins 4ms + → prototype constructor descriptor: expected true to be false // Object.is equality + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL tests/authored-flow-lifecycle-executor.test.ts > authored flow lifecycle through the journal executor > detects replacement of every Promise primitive used by parallel joins +AssertionError: prototype constructor descriptor: expected true to be false // Object.is equality + +- Expected ++ Received + +- false ++ true + + ❯ tests/authored-flow-lifecycle-executor.test.ts:62:85 + 60| ...constructorDescriptor, enumerable: !constructorDescriptor.e… + 61| }); + 62| expect(parallelPromiseIntrinsicsIntact(), 'prototype constructor… + | ^ + 63| } finally { Object.defineProperty(Promise.prototype, 'constructor'… + 64| const species = Object.getOwnPropertyDescriptor(Promise, Symbol.sp… + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + Test Files 1 failed (1) + Tests 1 failed | 44 skipped (45) + Start at 00:52:06 + Duration 1.18s (transform 417ms, setup 9ms, collect 949ms, tests 6ms, environment 0ms, prepare 35ms) diff --git a/evidence/native-parallel-review8/mut-f6-descriptors-pass.log b/evidence/native-parallel-review8/mut-f6-descriptors-pass.log new file mode 100644 index 000000000..562232ff3 --- /dev/null +++ b/evidence/native-parallel-review8/mut-f6-descriptors-pass.log @@ -0,0 +1,9 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-flow-lifecycle-executor.test.ts (45 tests | 44 skipped) 3ms + + Test Files 1 passed (1) + Tests 1 passed | 44 skipped (45) + Start at 00:52:07 + Duration 1.26s (transform 468ms, setup 12ms, collect 1.01s, tests 3ms, environment 0ms, prepare 34ms) diff --git a/evidence/native-parallel-review8/mutation-proof.log b/evidence/native-parallel-review8/mutation-proof.log new file mode 100644 index 000000000..9805badcd --- /dev/null +++ b/evidence/native-parallel-review8/mutation-proof.log @@ -0,0 +1,16 @@ +f1-parens fail: exit=1; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-parallel-body.test.ts -t certifies every parenthesized branch member accepted by the grammar; log=evidence/native-parallel-review8/mut-f1-parens-fail.log +f1-parens: restored SHA-256 c41c5b4b82a26b7f30717378000afa798a31e4cbf07cc1998525fcf24f29097c +f1-parens pass: exit=0; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-parallel-body.test.ts -t certifies every parenthesized branch member accepted by the grammar; log=evidence/native-parallel-review8/mut-f1-parens-pass.log +f2-name fail: exit=1; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-parallel-eligibility.test.ts -t uses serial mode when the body names the injected certifier; log=evidence/native-parallel-review8/mut-f2-name-fail.log +f2-name: restored SHA-256 8c612071c51eb045ec22d9f6357bb147f255b808dc0db5dc7d5ef71178ce240a +f2-name pass: exit=0; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-parallel-eligibility.test.ts -t uses serial mode when the body names the injected certifier; log=evidence/native-parallel-review8/mut-f2-name-pass.log +f3-preload fail: exit=1; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-flow-lifecycle-executor.test.ts -t detects replacement of every Promise primitive used by parallel joins; log=evidence/native-parallel-review8/mut-f3-preload-fail.log +f3-preload: restored SHA-256 b6e2faa669e1fdafab7028722e8470e668eb8a8a9a741f2172915b91dab53dd4 +f3-preload pass: exit=0; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-flow-lifecycle-executor.test.ts -t detects replacement of every Promise primitive used by parallel joins; log=evidence/native-parallel-review8/mut-f3-preload-pass.log +f4-member fail: exit=1; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-flow-lifecycle-executor.test.ts -t refuses untracked thenables before invoking their user-supplied then; log=evidence/native-parallel-review8/mut-f4-member-fail.log +f4-member: restored SHA-256 b6e2faa669e1fdafab7028722e8470e668eb8a8a9a741f2172915b91dab53dd4 +f4-member pass: exit=0; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-flow-lifecycle-executor.test.ts -t refuses untracked thenables before invoking their user-supplied then; log=evidence/native-parallel-review8/mut-f4-member-pass.log +f6-descriptors fail: exit=1; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-flow-lifecycle-executor.test.ts -t detects replacement of every Promise primitive used by parallel joins; log=evidence/native-parallel-review8/mut-f6-descriptors-fail.log +f6-descriptors: restored SHA-256 b6e2faa669e1fdafab7028722e8470e668eb8a8a9a741f2172915b91dab53dd4 +f6-descriptors pass: exit=0; command=/Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk/node_modules/.bin/vitest run tests/authored-flow-lifecycle-executor.test.ts -t detects replacement of every Promise primitive used by parallel joins; log=evidence/native-parallel-review8/mut-f6-descriptors-pass.log +5/5 selected mutations failed and passed after byte-for-byte restoration diff --git a/evidence/native-parallel-review8/mutation-proof.py b/evidence/native-parallel-review8/mutation-proof.py new file mode 100644 index 000000000..cafded7fc --- /dev/null +++ b/evidence/native-parallel-review8/mutation-proof.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +"""Run selected review-7 guard removals, then restore each file byte for byte.""" + +from hashlib import sha256 +from pathlib import Path +import subprocess + +ROOT = Path(__file__).resolve().parents[2] +SDK = ROOT / 'packages/sdk' +OUT = Path(__file__).resolve().parent +VITEST = SDK / 'node_modules/.bin/vitest' + +CASES = [ + ( + 'f1-parens', 'src/authored-parallel-body.ts', + 'const member = unwrapParallelExpression(outer);', 'const member = outer;', + 'tests/authored-parallel-body.test.ts', + 'certifies every parenthesized branch member accepted by the grammar', + ), + ( + 'f2-name', 'src/authored-parallel-eligibility.ts', + 'if (namesCertifier) return false;', 'if (false && namesCertifier) return false;', + 'tests/authored-parallel-eligibility.test.ts', + 'uses serial mode when the body names the injected certifier', + ), + ( + 'f3-preload', 'src/authored-flow-lifecycle.ts', + 'if (!nativeAtModuleLoad || authoredProcessHasPreload()', + 'if (!nativeAtModuleLoad || false', + 'tests/authored-flow-lifecycle-executor.test.ts', + 'detects replacement of every Promise primitive used by parallel joins', + ), + ( + 'f4-member', 'src/authored-flow-lifecycle.ts', + 'if (this.refuseUnknownThenable !== undefined) {', + 'if (false && this.refuseUnknownThenable !== undefined) {', + 'tests/authored-flow-lifecycle-executor.test.ts', + 'refuses untracked thenables before invoking their user-supplied then', + ), + ( + 'f6-descriptors', 'src/authored-flow-lifecycle.ts', + 'function sameDescriptor(actual: PropertyDescriptor | undefined, original: PropertyDescriptor | undefined): boolean {', + 'function sameDescriptor(actual: PropertyDescriptor | undefined, original: PropertyDescriptor | undefined): boolean { return true;', + 'tests/authored-flow-lifecycle-executor.test.ts', + 'detects replacement of every Promise primitive used by parallel joins', + ), +] + + +def run(name: str, phase: str, test: str, title: str) -> int: + command = [str(VITEST), 'run', test, '-t', title] + result = subprocess.run(command, cwd=SDK, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, check=False) + target = OUT / f'mut-{name}-{phase}.log' + target.write_bytes(result.stdout) + print(f'{name} {phase}: exit={result.returncode}; command={" ".join(command)}; log={target.relative_to(ROOT)}') + return result.returncode + + +for name, relative, before, after, test, title in CASES: + source = SDK / relative + original = source.read_bytes() + before_bytes = before.encode() + if original.count(before_bytes) != 1: + raise SystemExit(f'{name}: expected one mutation target in {relative}') + digest = sha256(original).hexdigest() + try: + source.write_bytes(original.replace(before_bytes, after.encode(), 1)) + failed = run(name, 'fail', test, title) + finally: + source.write_bytes(original) + restored = source.read_bytes() + if restored != original or sha256(restored).hexdigest() != digest: + raise SystemExit(f'{name}: byte-for-byte restoration failed') + print(f'{name}: restored SHA-256 {digest}') + if failed == 0: + raise SystemExit(f'{name}: selected test unexpectedly passed after guard removal') + if b'AssertionError' not in (OUT / f'mut-{name}-fail.log').read_bytes(): + raise SystemExit(f'{name}: failure was not the selected assertion') + if run(name, 'pass', test, title) != 0: + raise SystemExit(f'{name}: selected test failed after restoration') + +print(f'{len(CASES)}/{len(CASES)} selected mutations failed and passed after byte-for-byte restoration') diff --git a/evidence/native-parallel-review8/probe.mjs b/evidence/native-parallel-review8/probe.mjs new file mode 100644 index 000000000..8c0dc2511 --- /dev/null +++ b/evidence/native-parallel-review8/probe.mjs @@ -0,0 +1,128 @@ +// Probe head's certifier on candidate entry modules (no daemon). +import fs from 'node:fs'; +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; +const sdk = '/w/head/packages/sdk/dist'; +const { parallelRunEligible, parallelBodySyntaxEligible } = await import(`${sdk}/authored-parallel-eligibility.js`); +const { instrumentParallelBody } = await import(`${sdk}/authored-parallel-body.js`); +const SURF = `import { flow } from '@relayflows/surface';`; +const body = (b) => `${SURF}\nexport default flow('p', async f => {\n${b}\n});\n`; +const cases = { + baseline_native: body(` const a = async () => { await f.run('A'); await f.run('a'); }; + const b = async () => { await f.run('B'); await f.run('b'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + hygiene_branch: body(` const __certifyParallelBranch = async () => { await f.run('P'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([__certifyParallelBranch(), b()]); + await f.run('X');`), + hygiene_value: body(` const __certifyParallelBranch = await f.run('V'); + const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + paren_member: body(` const a = async () => { await f.run('A'); await f.run('a'); }; + const b = async () => { await f.run('B'); await f.run('b'); }; + await Promise.all([(a()), (b())]); + await f.run('X');`), + paren_iife: body(` const b = async () => { await f.run('B'); }; + await Promise.all([((async () => { await f.run('A'); })()), b()]); + await f.run('X');`), + twice: body(` const a = async () => { await f.run('A'); await f.run('a'); }; + await Promise.all([a(), a()]); + await f.run('X');`), + ret_values: body(` const a = async () => { return await f.run('A'); }; + const b = async () => { return await f.run('B'); }; + const r = await Promise.all([a(), b()]); + await f.run('printf ' + r[0] + r[1]);`), + mid_return: body(` const a = async () => { await f.run('A'); return await f.run('A1'); await f.run('A2'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + expr_branch: body(` const a = async () => await f.run('A'); + const b = async () => await Promise.all([f.run('B1'), f.run('B2')]); + await Promise.all([a(), b()]); + await f.run('X');`), + sync_throw: body(` const x = await f.run('W'); + const a = async () => { await f.run('printf ' + x.y.z); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + type_import: `import type { flow } from '@relayflows/surface';\nexport default flow('p', async f => {\n const a = async () => { await f.run('A'); };\n const b = async () => { await f.run('B'); };\n await Promise.all([a(), b()]);\n});\n`, + inline_type_import: `import { type flow } from '@relayflows/surface';\nexport default flow('p', async f => {\n const a = async () => { await f.run('A'); };\n const b = async () => { await f.run('B'); };\n await Promise.all([a(), b()]);\n});\n`, + unicode_escape: body(` const \\u0061 = async () => { await f.\\u0072un('A'); }; + const b = async () => { await f.run('B'); }; + await Pr\\u006fmise.all([\\u0061(), b()]); + await f.run('X');`), + optional_chain: body(` const a = async () => { await f?.run('A'); }; + const b = async () => { await f.run?.('B'); }; + await Promise?.all([a(), b()]); + await f.run('X');`), + done_last: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + f.done('success');`), + getter_obj: body(` const a = async () => { await f.run('A', { get timeout() { return '5m'; } }); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + labelled: body(` const a = async () => { l: { await f.run('A'); } }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + arguments_nested: body(` const a = async () => { await f.run('A' + arguments.length); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + loop_literal: body(` const a = async () => { await f.run('A'); }; + await Promise.all([1, 2].map(() => a()));`), + value_member: body(` const x = await f.run('W'); + const a = async () => { await f.run('A' + x.length); }; + const b = async () => { await f.run('B' + x[0]); }; + await Promise.all([a(), b()]); + await f.run(x.length > 0 ? 'X' : 'Y');`), + record_branch: body(` const a = async () => { const r = await f.run('exit 3', { onNonZero: 'record' }); await f.run('printf ' + r.exitCode); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + shebang: `#!/usr/bin/env node\n${body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`)}`, + comment_before_import: `// header\n/* block */\n${body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`)}`, + twelve: body(` ${Array.from({ length: 12 }, (_, i) => `const b${i} = async () => { await f.run('S${i}'); await f.run('D${i}'); };`).join('\n ')} + await Promise.all([${Array.from({ length: 12 }, (_, i) => `b${i}()`).join(', ')}]); + await f.run('X');`), + optional_call_member: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a?.(), b?.()]); + await f.run('X');`), + comment_iife: body(` const b = async () => { await f.run('B'); }; + await Promise.all([(/* c */ async () => { await f.run('A'); })(), b()]); + await f.run('X');`), + multi_decl: body(` const a = async () => { await f.run('A'); }, b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + paren_group: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await (Promise.all([a(), b()])); + await f.run('X');`), +}; +const dir = '/w/probe'; +fs.rmSync(dir, { recursive: true, force: true }); +fs.mkdirSync(dir, { recursive: true }); +fs.writeFileSync(path.join(dir, 'package.json'), '{"type":"module"}'); +fs.symlinkSync('/w/head/packages/sdk/node_modules', path.join(dir, 'node_modules')); +const { getFlowDefinition } = await import('/w/head/packages/sdk/node_modules/@relayflows/surface/dist/runtime.js'); +for (const [name, src] of Object.entries(cases)) { + const file = path.join(dir, `${name}.flow.ts`); + fs.writeFileSync(file, src); + let line; + try { + const mod = await import(pathToFileURL(file).href); + const def = getFlowDefinition(mod.default); + const full = parallelRunEligible(def.body, src); + const grammar = parallelBodySyntaxEligible(def.body); + let instr = ''; + if (grammar) { try { instr = String(instrumentParallelBody(def.body, () => {})).match(/__certifyParallelBranch\([^)]*\)/g)?.length ?? 0; } catch (e) { instr = 'throw:' + e.message; } } + line = `${name}: certified=${full} grammar=${grammar} wrappedCalls=${instr}`; + } catch (e) { line = `${name}: LOAD ERROR ${String(e.message).slice(0, 120)}`; } + console.log(line); +} diff --git a/evidence/native-parallel-review8/published-2051-pin.log b/evidence/native-parallel-review8/published-2051-pin.log new file mode 100644 index 000000000..c0f789066 --- /dev/null +++ b/evidence/native-parallel-review8/published-2051-pin.log @@ -0,0 +1,5 @@ +99df610cc9751dc1cf9101a04cdd618e68fc9ad4805ecc3e9634f39c63f52a0e /w/p2051/node_modules/@relayflows/sdk/dist/authored-root.js +99df610cc9751dc1cf9101a04cdd618e68fc9ad4805ecc3e9634f39c63f52a0e /w/sdk-base-2051/dist/authored-root.js +8f352d232e7503312c4ec92a9122890fa9db2255718d4eabf2bc2333909eb103 /w/sdk-head/dist/authored-root.js +2.0.51 +2.0.51 diff --git a/evidence/native-parallel-review8/raw-logs.tar.gz b/evidence/native-parallel-review8/raw-logs.tar.gz new file mode 100644 index 000000000..f93acc610 Binary files /dev/null and b/evidence/native-parallel-review8/raw-logs.tar.gz differ diff --git a/evidence/native-parallel-review8/s.mjs b/evidence/native-parallel-review8/s.mjs new file mode 100644 index 000000000..1de1d721f --- /dev/null +++ b/evidence/native-parallel-review8/s.mjs @@ -0,0 +1,164 @@ +// Scenario definitions for review 6 of flows#667. +const STALL = ` await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success');`; +const SURF = `import { flow } from '@relayflows/surface';`; +const flowSrc = (name, body, { fnExpr = false, header = '', pre = '' } = {}) => `${SURF} +${pre}export default flow('${name}'${header}, ${fnExpr ? 'async function(f)' : 'async f =>'} {${body} +${STALL} +}); +`; +const ADAPTER = `#!/usr/bin/env node +import fs from 'node:fs'; +if (process.argv[2] === 'auth') process.exit(0); +if (process.argv[2] === '--relayflows-adapter-v1') { + process.stdout.write('relayflows-agent-cli-v1\\n'); + let input = ''; + for await (const chunk of process.stdin) input += chunk; + if (input.trim() === '') process.exit(0); + const request = JSON.parse(input); + if (request.protocol !== 'relayflows-agent-cli-v1') process.exit(2); + process.stdout.write('relayflows-agent-cli-v1-execute\\n'); + fs.appendFileSync('/calls', 'x'); + process.stdout.write('{"message":"ok"}'); +} +`; +const HS = [['head', 'head'], ['base', 'base']]; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); + +// ---- review-5 fixtures, verbatim ---- +const P_BIND = `const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };`; +const P_HAND = `const Promise = { all: (xs) => new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.resolve(x).then(v => { out[i] = v; if (--n === 0) res(out); }, rej)); }) };`; +const CHAIN = `export { default } from './impl.ts';\n`; +const TAIL5 = ` await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`; +const G3 = ` await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]);\n`; +const NAT = ` const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);\n`; +const impl = (name, P, body) => `${SURF}\n${P}\nexport default flow('${name}', async f => {\n${body}${TAIL5}`; +const W2 = ` await f.run('sleep 0.2; printf W');\n`; +add({ name: 'Q5', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5', P_BIND, G3) } }); +add({ name: 'Q5n', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5n', P_BIND, NAT) } }); +add({ name: 'Q5h', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5h', P_HAND, G3) } }); +add({ name: 'Q5w', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5w', P_BIND, W2 + G3) } }); +add({ name: 'Q5wn', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5wn', P_BIND, W2 + NAT) } }); +add({ name: 'Q5wh', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5wh', P_HAND, W2 + G3) } }); +add({ name: 'Q6Pw', files: { + 'chain.flow.ts': `${SURF}\nimport './lib/patch.mjs';\nexport default flow('q6Pw', async f => {\n await f.run('sleep 0.3; printf W');\n${NAT}${TAIL5}`, + 'lib/patch.mjs': `const I = Function('return this')()['Pro' + 'mise']; +const intrinsicAll = I.all; +const t = setInterval(() => { if (I.all !== intrinsicAll) { clearInterval(t); I.all = function all(xs) { return intrinsicAll.call(I, xs); }; } }, 2); +t.unref(); +` } }); + +// ---- P-series (review 4) ---- +add({ name: 'P1', files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('p1', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1h', files: { 'chain.flow.ts': `${SURF}\n${P_HAND}\nexport default flow('p1h', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1c', files: { 'chain.flow.ts': `${SURF}\nclass Promise extends globalThis.Promise { static all(xs) { return globalThis.Promise.all.call(globalThis.Promise, xs); } }\nexport default flow('p1c', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1n', files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('p1n', async f => {\n${NAT}${TAIL5}` } }); +add({ name: 'P1bn', files: { 'chain.flow.ts': `${SURF}\nimport Promise from './bb/bluebird.js';\nexport default flow('p1bn', async f => {\n${NAT}${TAIL5}` }, bluebird: true }); +add({ name: 'P2', files: { 'chain.flow.ts': flowSrc('p2', ` + const warm = async () => {}; + await Promise.all([warm(), warm()]); + await f.run('printf X >> effects');`) } }); + +// ---- prior matrix ---- +add({ name: 'A1', files: { 'chain.flow.ts': flowSrc('a1', ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'B1', files: { 'chain.flow.ts': flowSrc('b1', ` + const left = async () => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`) } }); +const N2 = ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);`; +add({ name: 'N2', files: { 'chain.flow.ts': flowSrc('n2', N2) } }); +add({ name: 'C1e', files: { 'chain.flow.ts': flowSrc('c1e', ` + const background = (async () => { await f.run('printf X >> effects'); })(); + await new Promise(resolve => setTimeout(resolve, 300)); + await f.run('printf Y >> effects'); + await background;`) } }); +add({ name: 'G1', files: { 'chain.flow.ts': flowSrc('g1', ` + await Promise.race([f.run('printf A >> effects'), f.run('sleep 0.3; printf B >> effects')]); + await f.run('printf G >> effects');`) } }); +const LLM_OUT = `const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] };`; +add({ name: 'H1', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('h1', ` + ${LLM_OUT} + const left = async () => { await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'H2', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('h2', ` + const left = async () => { await f.agent('left', { task: 'left', model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.agent('right', { task: 'right', model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'K4', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('k4', ` + const g = arguments[0]; + ${LLM_OUT} + const left = async () => { await g.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await g.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, { fnExpr: true }) } }); +add({ name: 'I1', files: { + 'child.flow.ts': `${SURF} +export default flow('child', async (f, input) => { + await Promise.all([f.run('printf first'), f.run('printf second')]); + await f.run('printf ' + input.token + ' >> effects'); + f.done('success'); +}); +`, + 'chain.flow.ts': flowSrc('i1', ` + const left = async () => { await f.dispatch('child', { token: 'x' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.dispatch('child', { token: 'y' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, { header: `, { use: ['./child.flow.ts'] }` }) } }); +add({ name: 'K1', files: { 'chain.flow.ts': flowSrc('k1', ` + const pause = () => sleep(300); + const late = async () => { await Promise.all([pause(), pause()]); await f.run('printf L >> effects'); }; + const fast = async () => { await f.run('sleep 0.2; printf A >> effects'); await f.run('sleep 0.2; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([fast(), late()]);`, { pre: `import { setTimeout as sleep } from 'node:timers/promises';\n` }) } }); +add({ name: 'K2b', files: { 'chain.flow.ts': flowSrc('k2b', ` + const a = async () => { await f.run('sleep 0.3; printf A >> effects'); signal(); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); signal(); }; + const c = async () => { await Promise.all([ready(), ready()]); await f.run('printf C >> effects'); }; + await Promise.all([a(), b(), c()]);`, { pre: `let signal; const first = new Promise(r => { signal = r; });\nconst ready = async () => { await first; };\n` }) } }); +add({ name: 'K3', files: { 'chain.flow.ts': flowSrc('k3', ` + const out = []; + const a = async () => { out.push(await f.run('sleep 0.3; printf a')); }; + const b = async () => { out.push(await f.run('sleep 0.1; printf b')); }; + await Promise.all([a(), b()]); + await f.run('printf ' + out.join('') + ' >> effects');`) }, expect: r => /^(ab|ba)Z$/.test(r.effects) }); +add({ name: 'K5b', files: { 'chain.flow.ts': flowSrc('k5b', ` + const tree = async (d) => { if (d === 0) return; await Promise.all([tree(d - 1), tree(d - 1)]); }; + await f.run('printf A >> effects'); + await tree(12); + try { await f.run('printf B >> effects'); } catch (e) { void e; }`) }, expect: r => r.effects.includes('B') }); +add({ name: 'K13b', files: { 'chain.flow.ts': `${SURF} +export default flow('k13b', async f => { + const b = async () => { await f.run('sleep 0.4; printf B >> effects'); await f.run('printf C >> effects'); }; + const a = async () => { await f.run('sleep 0.1; printf A >> effects'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); f.done('success'); }; + await Promise.all([b(), a()]); +}); +` } }); + +export default S; +export { STALL, SURF, flowSrc, ADAPTER, HS, P_BIND, P_HAND, CHAIN, TAIL5, G3, NAT, impl, W2, add }; diff --git a/evidence/native-parallel-review8/s2.mjs b/evidence/native-parallel-review8/s2.mjs new file mode 100644 index 000000000..81fc5f813 --- /dev/null +++ b/evidence/native-parallel-review8/s2.mjs @@ -0,0 +1,181 @@ +// Review-6 attack scenarios. +import { STALL, SURF, flowSrc, HS, P_BIND, G3, NAT, TAIL5, W2, impl } from './s.mjs'; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); +const FORCED = [['forced', 'forced'], ['base', 'base']]; + +// ---------- entry-file rule bypass (natural, unforced) ---------- +// The entry defines `flow` locally; the screen sees `export default flow()`, +// but the loaded definition is impl.ts's, whose module scope binds Promise. +const BYPASS = `import impl from './impl.ts'; +const flow = (..._args: unknown[]) => impl; +export default flow('decoy', async f => { + await f.run('printf decoy'); +}); +`; +// A spec-exact Promise.all built only from registered combinators; its one +// unregistered join is a *member* of a registered all. +const P_WRAP = `const Promise = { all: (xs) => globalThis.Promise.all([new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.all([x]).then(([v]) => { out[i] = v; if (--n === 0) res(out); }, rej)); })]).then(([v]) => v) };`; +const P_RACE = `const Promise = { all: (xs) => globalThis.Promise.race(xs) };`; +add({ name: 'R1', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1', P_WRAP, G3) } }); +add({ name: 'R1w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1w', P_WRAP, W2 + G3) } }); +add({ name: 'R1wn', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1wn', P_WRAP, W2 + NAT) } }); +add({ name: 'R2w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r2w', P_RACE, W2 + G3) } }); +add({ name: 'R3w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r3w', P_BIND, W2 + G3) } }); +add({ name: 'R3', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r3', P_BIND, G3) } }); +// same bypass, `flow` imported from a local helper module +add({ name: 'R4w', files: { + 'chain.flow.ts': `import { flow } from './wrap.ts'; +export default flow('decoy', async f => { + await f.run('printf decoy'); +}); +`, + 'wrap.ts': `import impl from './impl.ts';\nexport const flow = (..._args: unknown[]) => impl;\n`, + 'impl.ts': impl('r4w', P_WRAP, W2 + G3) } }); +// Without the bypass the wrapped all is serial (control) +add({ name: 'R1c', files: { 'chain.flow.ts': `${SURF}\n${P_WRAP}\nexport default flow('r1c', async f => {\n${W2}${G3}${TAIL5}` } }); + +// ---------- runtime rule with eligibility forced on ---------- +const forced = (name, body, pre = '') => ({ name, sides: FORCED, files: { 'chain.flow.ts': flowSrc(name.toLowerCase(), body, { pre }) } }); +S.push(forced('FRrace', ` + await f.run('sleep 0.2; printf W'); + await Promise.race([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRany', ` + await f.run('sleep 0.2; printf W'); + await Promise.any([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRnestrace', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([Promise.race([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]), f.run('printf C')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRdefer', ` + await f.run('sleep 0.2; printf W'); + let signal; const first = new Promise(r => { signal = r; }); + const a = async () => { await f.run('sleep 0.3; printf A >> effects'); signal(); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); signal(); }; + const c = async () => { await Promise.all([first, f.run('printf c0')]); await f.run('printf C >> effects'); }; + await Promise.all([a(), b(), c()]);`)); +S.push(forced('FRthen', ` + await f.run('sleep 0.2; printf W'); + const sa = f.run('sleep 0.3; printf A'); + const th = { then: (r, j) => sa.then(r, j) }; + await Promise.all([th, f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRsettled', ` + await f.run('sleep 0.2; printf W'); + await Promise.allSettled([f.run('sleep 0.3; exit 3', { onNonZero: 'record' }), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRset', ` + await f.run('sleep 0.2; printf W'); + await Promise.all(new Set([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')])); + await f.run('printf X >> effects');`)); +S.push(forced('FRgen', ` + await f.run('sleep 0.2; printf W'); + function* g() { yield f.run('sleep 0.3; printf A'); yield f.run('sleep 0.1; printf B'); } + await Promise.all(g()); + await f.run('printf X >> effects');`)); +S.push(forced('FRthenagg', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]).then(v => v); + await f.run('printf X >> effects');`)); +S.push(forced('FRmicro', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); await new Promise(r => queueMicrotask(r)); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await new Promise(r => process.nextTick(r)); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await new Promise(r => setImmediate(r)); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects');`)); +S.push(forced('FRcatch', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.1; printf A'); throw new Error('a'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); throw new Error('b'); }; + try { await Promise.all([a(), b()]); } catch (e) { void e; } + await f.run('sleep 0.5; printf X >> effects');`)); +S.push(forced('FRfinally', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { try { await f.run('sleep 0.3; printf A'); } finally { await f.run('printf F >> effects'); } }; + const b = async () => { await f.run('sleep 0.1; printf B'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`)); +S.push(forced('FRiter', ` + await f.run('sleep 0.2; printf W'); + const ps = [f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]; + for await (const v of ps) { void v; } + await f.run('printf X >> effects');`)); +// forced wrapped-all directly in the entry (no bypass needed) +S.push({ name: 'FRwrap', sides: FORCED, files: { 'chain.flow.ts': `${SURF}\n${`const PW = ${P_WRAP.slice('const Promise = '.length).replace(/;$/, '')};`}\nexport default flow('frwrap', async f => {\n${W2} await PW.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]);\n${TAIL5}` } }); + +// ---------- entry-file rule probes (natural) ---------- +add({ name: 'E1factory', files: { 'chain.flow.ts': `${SURF} +const make = () => flow('e1', async f => { +${NAT}${TAIL5}export default make(); +` } }); +add({ name: 'E2helper', files: { + 'chain.flow.ts': flowSrc('e2', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await pause(); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`, { pre: `import { pause } from './helper.ts';\n` }), + 'helper.ts': `export const pause = async () => { await new Promise(r => setTimeout(r, 50)); };\n` } }); +add({ name: 'E3dyn', files: { + 'chain.flow.ts': flowSrc('e3', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await import('./helper.ts'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`), + 'helper.ts': `export const x = 1;\n` } }); +add({ name: 'E4json', files: { + 'chain.flow.ts': flowSrc('e4', N2body(), { pre: `import data from './d.json' with { type: 'json' };\nvoid data;\n` }), + 'd.json': `{"k":"v"}` } }); +add({ name: 'E4jsonuse', files: { + 'chain.flow.ts': flowSrc('e4u', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf ' + data.k + ' >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`, { pre: `import data from './d.json' with { type: 'json' };\n` }), + 'd.json': `{"k":"a"}` } }); +add({ name: 'E5ns', files: { 'chain.flow.ts': `${SURF} +import * as surface from '@relayflows/surface'; +export default surface.flow('e5', async f => { +${NAT}${TAIL5}` } }); +function N2body() { return ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);`; } + +// ---------- upgrade / rollback ---------- +const UP = [['p2050', 'head'], ['p2051', 'head']]; +const CI4 = flowSrc('ci4', ` + await f.run('printf a >> effects'); + await Promise.resolve(f.run('printf b >> effects')); + await Promise.all([f.run('printf c >> effects'), f.run('printf d >> effects')]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf y >> effects', { timeout: '5m' }); + await Promise.all([Promise.resolve(f.run('printf e >> effects')), Promise.resolve(f.run('printf g >> effects'))]);`); +const CI5 = flowSrc('ci5', ` + await f.run('printf a >> effects'); + await Promise.resolve(f.run('printf b >> effects')); + await Promise.all([f.run('printf c >> effects'), f.run('printf d >> effects')]); + await f.run('printf e >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf y >> effects', { timeout: '5m' }); + await Promise.all([Promise.resolve(f.run('printf g >> effects')), Promise.resolve(f.run('printf h >> effects'))]);`); +const A1b = ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`; +const B1b = ` + const left = async () => { await f.run('printf A'); await f.run('printf B'); await f.run('printf L >> effects'); }; + const right = async () => { await Promise.all([f.run('printf C'), f.run('printf D')]); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`; +for (const [n, src] of [['CI4', CI4], ['CI5', CI5], ['A1', flowSrc('a1', A1b)], ['B1', flowSrc('b1', B1b)], ['N2', flowSrc('n2', N2body())]]) { + S.push({ name: 'U' + n, sides: UP, files: { 'chain.flow.ts': src } }); + S.push({ name: 'RB' + n, sides: [['head', 'p2050'], ['head', 'p2051']], secondResume: 'head', + expect: r => r.code1 !== 0 && !r.effects1.includes('Z') && r.effects.includes('Z'), + files: { 'chain.flow.ts': src } }); +} + +export default S; diff --git a/evidence/native-parallel-review8/s3.mjs b/evidence/native-parallel-review8/s3.mjs new file mode 100644 index 000000000..4f6fb0375 --- /dev/null +++ b/evidence/native-parallel-review8/s3.mjs @@ -0,0 +1,55 @@ +// FB set (eligibility forced) + secrets. +import { SURF, flowSrc, ADAPTER, NAT, G3, P_BIND, TAIL5 } from './s.mjs'; +const F = [['forced', 'forced']]; +const LLM_OUT = `const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] };`; +const refused = (forbid) => r => r.fresh === true && r.code !== 0 && ![...forbid].some(c => r.effects.includes(c)); +const S = [ + { name: 'FB1', sides: F, adapter: true, extraArgs: ['--local-agent'], okIf: r => refused('LR')(r) && !r.calls, + extraCheck: root => { try { return { calls: require('fs').readFileSync(root + '/calls', 'utf8').length }; } catch { return { calls: 0 }; } }, + files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('fb1', ` + ${LLM_OUT} + const left = async () => { await f.run('printf l'); await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.run('sleep 0.2; printf r'); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }, + { name: 'FB2', sides: F, adapter: true, extraArgs: ['--local-agent'], okIf: refused('E'), files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('fb2', ` + ${LLM_OUT} + await Promise.all([f.run('printf a'), f.run('printf b')]); + try { await f.llm('x', { output, model: 'test-model' }); } catch (e) { void e; } + await f.run('printf E >> effects');`) } }, + { name: 'FB3', sides: F, okIf: refused('C'), files: { 'chain.flow.ts': flowSrc('fb3', ` + await Promise.all([f.run('printf a'), f.run('printf b')]); + await new Promise(r => setTimeout(r, 100)); + const late = async () => { await f.run('printf C >> effects'); }; + await late();`) } }, + { name: 'FB3c', sides: F, okIf: refused('CD'), files: { 'chain.flow.ts': flowSrc('fb3c', ` + const a = async () => { await new Promise(r => setTimeout(r, 100)); try { await f.run('printf C >> effects'); } catch (e) { void e; } }; + const b = async () => { await f.run('sleep 0.4; printf B'); await f.run('printf D >> effects'); }; + await Promise.all([a(), b()]);`) } }, + { name: 'FB4', sides: F, okIf: refused('B'), files: { 'chain.flow.ts': flowSrc('fb4', ` + const tree = async (d) => { if (d === 0) return; await Promise.all([tree(d - 1), tree(d - 1)]); }; + await f.run('printf A >> effects'); + await tree(12); + try { await f.run('printf B >> effects'); } catch (e) { void e; }`) } }, + { name: 'FB6', sides: F, files: { 'chain.flow.ts': flowSrc('fb6', ` +${NAT}`) } }, + { name: 'FB7', sides: F, okIf: refused('X'), files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('fb7', async f => {\n${G3}${TAIL5}` } }, + { name: 'FB8', sides: F, okIf: refused('q'), files: { 'chain.flow.ts': flowSrc('fb8', ` + const v = async () => { await new Promise(r => setTimeout(r, 100)); try { await f.run('printf v >> effects'); } catch (e) { void e; } }; + await Promise.all([f.run('sleep 0.6; printf 1'), f.run('sleep 0.6; printf 2'), f.run('sleep 0.6; printf 3'), f.run('sleep 0.6; printf 4'), + f.run('sleep 0.6; printf 5'), f.run('sleep 0.6; printf 6'), f.run('sleep 0.6; printf 7'), f.run('sleep 0.6; printf 8'), + f.run('printf q >> effects'), v()]);`) } }, +]; +// secrets +const SEC = ` + await Promise.all([ + f.run('printf "%s" "\${R6_TOK:-unset}" > /granted; sleep 0.2', { secrets: ['R6_TOK'] }), + f.run('printf "%s" "\${R6_TOK:-unset}" > /ungranted; sleep 0.1'), + ]); + await f.run('printf "%s" "\${R6_TOK:-unset}" > /later');`; +const secCheck = root => { const fs = require('fs'); const rd = n => { try { return fs.readFileSync(root + '/' + n, 'utf8'); } catch { return 'missing'; } }; + return { sec: [rd('granted') === 'r6-secret-value' ? 'G:ok' : 'G:' + (rd('granted') === 'unset' ? 'unset' : rd('granted') === 'missing' ? 'missing' : 'other'), + rd('ungranted') === 'unset' ? 'U:unset' : rd('ungranted') === 'missing' ? 'U:missing' : 'U:LEAK', rd('later') === 'unset' ? 'L:unset' : rd('later') === 'missing' ? 'L:missing' : 'L:LEAK'].join(' ') }; }; +const HS = [['head', 'head'], ['base', 'base']]; +S.push({ name: 'S1', sides: HS, env: { R6_TOK: 'r6-secret-value' }, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('s1', SEC) } }); +S.push({ name: 'S2missing', sides: HS, env: { R6_TOK: '' }, okIf: r => r.code !== 0, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('s2', SEC.replaceAll('R6_TOK', 'R6_ABSENT')) } }); +export default S; diff --git a/evidence/native-parallel-review8/s4.mjs b/evidence/native-parallel-review8/s4.mjs new file mode 100644 index 000000000..4bb8fa470 --- /dev/null +++ b/evidence/native-parallel-review8/s4.mjs @@ -0,0 +1,20 @@ +import { SURF, NAT, TAIL5, W2 } from './s.mjs'; +const PATCH = `const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = function (x) { + if (this !== I || !(x instanceof I) || !/at (Promise|Function)\\.all /.test(new Error().stack)) return resolve.call(this, x); + if (gate === undefined) { + let open; const g = new I(r => { open = r; }); g.open = open; gate = g; + queueMicrotask(() => { gate = undefined; }); + } + const g = gate; + x.then(v => g.open(v), () => {}); + return g; +}; +`; +export default [ + { name: 'R5n', sides: [['head', 'head'], ['base', 'base']], files: { + 'chain.flow.ts': `${SURF}\nimport './lib/p.mjs';\nexport default flow('r5n', async f => {\n${W2}${NAT}${TAIL5}`, + 'lib/p.mjs': PATCH } }, +]; diff --git a/evidence/native-parallel-review8/s7.mjs b/evidence/native-parallel-review8/s7.mjs new file mode 100644 index 000000000..dc7ed4882 --- /dev/null +++ b/evidence/native-parallel-review8/s7.mjs @@ -0,0 +1,182 @@ +// Review-7 new attack scenarios for flows#667 (head e3503c08). +import { SURF, flowSrc, NAT, W2, TAIL5 } from './s.mjs'; +const HS = [['head', 'head'], ['base', 'base']]; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); +const STALL = ` await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' });`; +const perm = (letters) => (e) => e.length === letters.length && [...letters].every(c => e.split(c).length - 1 === letters.split(c).length - 1); + +// ---- HY: the instrumentation re-evaluates the body with a parameter named +// __certifyParallelBranch; an authored binding of that name captures it. +add({ name: 'HY1', files: { 'chain.flow.ts': flowSrc('hy1', ` + const __certifyParallelBranch = async () => { await f.run('printf P >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([__certifyParallelBranch(), b()]);`) }, + expect: r => perm('PBZ')(r.effects) }); +add({ name: 'HY1s', files: { 'chain.flow.ts': `${SURF} +export default flow('hy1s', async f => { + const __certifyParallelBranch = async () => { await f.run('printf P >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([__certifyParallelBranch(), b()]); + f.done('success'); +}); +` }, noZ: true, okIf: r => r.code === 0 && perm('PB')(r.effects) }); +add({ name: 'HY2', files: { 'chain.flow.ts': flowSrc('hy2', ` + const __certifyParallelBranch = await f.run('printf V'); + const a = async () => { await f.run('sleep 0.2; printf A >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([a(), b()]);`) }, expect: r => perm('ABZ')(r.effects) }); + +// ---- PAR: parenthesized branch-call members pass the grammar (unwrap) but +// the call-site instrumentation only wraps bare CallExpressions. +add({ name: 'PAR1', files: { 'chain.flow.ts': flowSrc('par1', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([(a()), (b()), (c())]);`) }, expect: r => perm('abcZ')(r.effects) }); +add({ name: 'PAR2', files: { 'chain.flow.ts': flowSrc('par2', ` + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([((async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); })()), b()]);`) }, + expect: r => perm('abZ')(r.effects) }); + +// ---- EQ: certified shapes whose runtime behaviour must match base. +add({ name: 'EQ1twice', files: { 'chain.flow.ts': flowSrc('eq1', ` + const a = async () => { await f.run('sleep 0.2; printf A'); await f.run('printf a >> effects'); }; + await Promise.all([a(), a()]); + await f.run('printf X >> effects');`) }, allowDupLetters: true, + expectedCounts: { 'sleep 0.2; printf A': 2, 'printf a >> effects': 2 }, expect: r => r.effects === 'aaXZ' }); +add({ name: 'EQ2ret', files: { 'chain.flow.ts': flowSrc('eq2', ` + const a = async () => { await f.run('sleep 0.3; printf A'); return await f.run('printf a'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); return await f.run('printf b'); }; + const r = await Promise.all([a(), b()]); + await f.run('printf ' + r[0] + r[1] + ' >> effects');`) }, expect: r => r.effects === 'abZ' }); +add({ name: 'EQ3midret', files: { 'chain.flow.ts': flowSrc('eq3', ` + const a = async () => { await f.run('sleep 0.2; printf A >> effects'); return await f.run('printf R >> effects'); await f.run('printf Q >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => perm('ABRXZ')(r.effects) && !r.effects.includes('Q') }); +add({ name: 'EQ4fail', files: { 'chain.flow.ts': flowSrc('eq4', ` + const a = async () => { await f.run('sleep 0.1; printf F >> effects; exit 1'); await f.run('printf G >> effects'); }; + const b = async () => { await f.run('sleep 0.4; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([a(), b()]);`) }, okIf: r => r.code !== 0 && !r.effects.includes('G') && !r.effects.includes('C') && !r.effects.includes('Z') }); +add({ name: 'EQ5wide', files: { 'chain.flow.ts': flowSrc('eq5', ` + ${Array.from({ length: 12 }, (_, i) => `const b${i} = async () => { await f.run('sleep 0.${1 + (i * 7) % 3}; printf S${i}'); await f.run('printf ${'abcdefghijkl'[i]} >> effects'); };`).join('\n ')} + await Promise.all([${Array.from({ length: 12 }, (_, i) => `b${i}()`).join(', ')}]); + await f.run('printf X >> effects');`) }, expect: r => perm('abcdefghijklXZ')(r.effects) }); +add({ name: 'EQ5stall', files: { 'chain.flow.ts': flowSrc('eq5s', ` + ${Array.from({ length: 10 }, (_, i) => `const b${i} = async () => { await f.run('sleep 0.${1 + (i * 7) % 3}; printf S${i}'); await f.run('printf ${'abcdefghij'[i]} >> effects'); };`).join('\n ')} + const s = async () => { await f.run('sleep 0.15; printf s'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Y >> effects', { timeout: '5m' }); await f.run('printf y >> effects'); }; + await Promise.all([${Array.from({ length: 10 }, (_, i) => `b${i}()`).join(', ')}, s()]); + await f.run('printf X >> effects');`) }, expect: r => perm('abcdefghijYyXZ')(r.effects) }); +add({ name: 'EQ6expr', files: { 'chain.flow.ts': flowSrc('eq6', ` + const a = async () => await f.run('sleep 0.2; printf A >> effects'); + const b = async () => await Promise.all([f.run('sleep 0.1; printf B >> effects'), f.run('sleep 0.3; printf C >> effects')]); + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => perm('ABCXZ')(r.effects) }); +add({ name: 'EQ7record', files: { 'chain.flow.ts': flowSrc('eq7', ` + const a = async () => { const r = await f.run('sleep 0.2; exit 3', { onNonZero: 'record' }); await f.run('printf R' + r.exitCode + ' >> effects'); }; + const b = async () => { const v = await f.run('sleep 0.1; printf B'); await f.run('printf ' + v + ' >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => r.effects.includes('R3') && perm('BR3XZ')(r.effects) }); +add({ name: 'EQ8throw', files: { 'chain.flow.ts': flowSrc('eq8', ` + const x = await f.run('printf W'); + const a = async () => { await f.run('printf ' + x.y.z + ' >> effects'); }; + const b = async () => { await f.run('sleep 0.2; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([a(), b()]);`) }, okIf: r => r.code !== 0 && !r.effects.includes('Z') }); +// Branch whose first statement is a nested group, then a follow-up that joins +// the nested members; crash lands inside the other branch. +add({ name: 'EQ9nested', files: { 'chain.flow.ts': flowSrc('eq9', ` + await f.run('sleep 0.1; printf W'); + const a = async () => { await Promise.all([f.run('sleep 0.3; printf A1'), f.run('sleep 0.1; printf A2')]); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.2; printf B'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Y >> effects', { timeout: '5m' }); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => perm('aYbXZ')(r.effects) }); + +// ---- PL: NODE_OPTIONS preloads. The entry is certified; the patch runs +// before the SDK snapshots the intrinsics, so the snapshot accepts it. +const R5PATCH = `const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = function (x) { + if (this !== I || !(x instanceof I) || !/at (Promise|Function)\\.all /.test(new Error().stack)) return resolve.call(this, x); + if (gate === undefined) { + let open; const g = new I(r => { open = r; }); g.open = open; gate = g; + queueMicrotask(() => { gate = undefined; }); + } + const g = gate; + x.then(v => g.open(v), () => {}); + return g; +}; +`; +const NATW = flowSrc('pl', ` + await f.run('sleep 0.2; printf W'); +${NAT} await f.run('printf X >> effects');`); +const pl = (name, patch, extra = {}) => add({ name, env: { NODE_OPTIONS: `--import=/lib/pre.mjs` }, + files: { 'chain.flow.ts': NATW.replace("flow('pl'", `flow('${name.toLowerCase()}'`), 'lib/pre.mjs': patch }, expect: r => perm('abcXZ')(r.effects), ...extra }); +pl('PL1r5', R5PATCH); +pl('PL2then', `const t = Promise.prototype.then; +Promise.prototype.then = function then(a, b) { return t.call(this, typeof a === 'function' ? v => a(v) : a, typeof b === 'function' ? e => b(e) : b); }; +`); +pl('PL3sub', `const N = globalThis.Promise; +class P extends N {} +globalThis.Promise = P; +`); +pl('PL4ctor', `setTimeout(() => { + const N = globalThis.Promise; + class P extends N {} + Object.defineProperty(N.prototype, 'constructor', { value: P, writable: true, configurable: true }); +}, 120).unref(); +`); +pl('PL5species', `setTimeout(() => { + const N = globalThis.Promise; + class P extends N {} + Object.defineProperty(N, Symbol.species, { get() { return P; }, configurable: true }); +}, 120).unref(); +`); + +// ---- secrets in parallel branches (granted / ungranted / later) +const SEC = ` + const g = async () => { await f.run('sleep 0.1; printf G'); await f.run('printf "%s" "\${R7_TOK:-unset}" > /granted2; sleep 0.1', { secrets: ['R7_TOK'] }); }; + const u = async () => { await f.run('sleep 0.15; printf U'); await f.run('printf "%s" "\${R7_TOK:-unset}" > /ungranted2'); }; + await Promise.all([ + f.run('printf "%s" "\${R7_TOK:-unset}" > /granted; sleep 0.2', { secrets: ['R7_TOK'] }), + f.run('printf "%s" "\${R7_TOK:-unset}" > /ungranted; sleep 0.1'), + g(), u(), + ]); + await f.run('printf "%s" "\${R7_TOK:-unset}" > /later');`; +const secCheck = root => { + const fs = require('fs'); + const rd = n => { try { return fs.readFileSync(root + '/' + n, 'utf8'); } catch { return 'missing'; } }; + const cls = (n, want) => { const v = rd(n); return `${n}:${v === 'r7-secret-value' ? (want ? 'ok' : 'LEAK') : v}`; }; + return { sec: [cls('granted', true), cls('granted2', true), cls('ungranted', false), cls('ungranted2', false), cls('later', false)].join(' ') }; +}; +add({ name: 'SEC7', env: { R7_TOK: 'r7-secret-value' }, extraCheck: secCheck, noZ: false, files: { 'chain.flow.ts': flowSrc('sec7', SEC) }, + okIf: r => r.code === 0 && r.sec === 'granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset' }); + +add({ name: 'PL7mid', env: { NODE_OPTIONS: `--import=/lib/pre.mjs` }, expect: r => perm('abcXZ')(r.effects), + files: { 'chain.flow.ts': flowSrc('pl7', ` + await f.run('touch /wstart; sleep 0.3; printf W'); +${NAT} await f.run('printf X >> effects');`), + 'lib/pre.mjs': `import fs from 'node:fs'; +const t = setInterval(() => { if (fs.existsSync('/wstart')) { clearInterval(t); +${R5PATCH}} }, 2); +t.unref(); +` } }); +add({ name: 'PL7neutral', env: { NODE_OPTIONS: `--import=/lib/pre.mjs` }, expect: r => perm('abcXZ')(r.effects), + files: { 'chain.flow.ts': flowSrc('pl7n', ` + await f.run('touch /wstart; sleep 0.3; printf W'); +${NAT} await f.run('printf X >> effects');`), + 'lib/pre.mjs': `import fs from 'node:fs'; +const t = setInterval(() => { if (fs.existsSync('/wstart')) { clearInterval(t); + const I = globalThis.Promise; const resolve = I.resolve; I.resolve = function resolve2(x) { return resolve.call(this, x); }; +} }, 2); +t.unref(); +` } }); +pl('PL6child', `if (process.argv.some(a => a.includes('authored-node-entry'))) setTimeout(() => {\n${R5PATCH}}, 150).unref();\n`); +pl('PL6late', `setTimeout(() => {\n${R5PATCH}}, 150).unref();\n`); +add({ name: 'SEC7m', env: { R7_TOK: 'r7-secret-value', RELAY_SECRET_ENV_NAMES: '["R7_TOK"]' }, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('sec7m', SEC) }, + okIf: r => r.code === 0 && r.sec === 'granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset' }); +add({ name: 'SEC7miss', env: { RELAY_SECRET_ENV_NAMES: '["R7_TOK"]' }, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('sec7x', SEC) }, + okIf: r => r.code !== 0 && !/granted:/.test('') }); + +export default S; diff --git a/evidence/native-parallel-review8/sdk-build.log b/evidence/native-parallel-review8/sdk-build.log new file mode 100644 index 000000000..1647e84a1 --- /dev/null +++ b/evidence/native-parallel-review8/sdk-build.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 build +> tsc && node scripts/make-cli-executable.mjs diff --git a/evidence/native-parallel-review8/sdk-dist-hashes.log b/evidence/native-parallel-review8/sdk-dist-hashes.log new file mode 100644 index 000000000..97c1576e8 --- /dev/null +++ b/evidence/native-parallel-review8/sdk-dist-hashes.log @@ -0,0 +1,8 @@ +ecb110f1d229eb85433719e449299b3deb882157e8b751f1e8c896e6491ca0e8 packages/sdk/dist/authored-flow-executor.js +1142a34c0501c052a35251cfa4d3ed94dad8c490e388dc0979f8f2f31c8094a6 packages/sdk/dist/authored-flow-lifecycle.js +e9d2f5d5ec3a0c76bfd3627db1fce05f89ee6788bf1b20c4a224f15ca8ac4039 packages/sdk/dist/authored-parallel-body.js +d3de59a59a88acf7458cf225bdc658346d462e937eb5d2abd63c124d05d36f86 packages/sdk/dist/authored-parallel-eligibility.js +ecb110f1d229eb85433719e449299b3deb882157e8b751f1e8c896e6491ca0e8 /w/sdk-head/dist/authored-flow-executor.js +1142a34c0501c052a35251cfa4d3ed94dad8c490e388dc0979f8f2f31c8094a6 /w/sdk-head/dist/authored-flow-lifecycle.js +e9d2f5d5ec3a0c76bfd3627db1fce05f89ee6788bf1b20c4a224f15ca8ac4039 /w/sdk-head/dist/authored-parallel-body.js +d3de59a59a88acf7458cf225bdc658346d462e937eb5d2abd63c124d05d36f86 /w/sdk-head/dist/authored-parallel-eligibility.js diff --git a/evidence/native-parallel-review8/sdk-focused-unit.log b/evidence/native-parallel-review8/sdk-focused-unit.log new file mode 100644 index 000000000..ff5d8bbf2 --- /dev/null +++ b/evidence/native-parallel-review8/sdk-focused-unit.log @@ -0,0 +1,20 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-eligibility.test.ts (10 tests) 23ms + ✓ tests/authored-parallel-body.test.ts (5 tests) 13ms + ✓ tests/communication-feature-secret-scoping.test.ts (1 test) 20ms + ✓ tests/authored-step-graph.test.ts (27 tests) 577ms + ✓ tests/authored-step-secrets.test.ts (1 test) 17ms +(node:6715) [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 (39 tests) 429ms + ✓ tests/worker-feature-secret-scoping.test.ts (2 tests) 741ms + ✓ agent worker uses the negotiated daemon capability for its real child 408ms + ✓ llm worker uses the negotiated daemon capability for its real child 332ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (45 tests) 560ms + + Test Files 8 passed (8) + Tests 130 passed (130) + Start at 00:56:59 + Duration 2.91s (transform 881ms, setup 167ms, collect 10.23s, tests 2.38s, environment 1ms, prepare 461ms) diff --git a/evidence/native-parallel-review8/sdk-secrets-live.log b/evidence/native-parallel-review8/sdk-secrets-live.log new file mode 100644 index 000000000..044742816 --- /dev/null +++ b/evidence/native-parallel-review8/sdk-secrets-live.log @@ -0,0 +1,11 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-step-secrets-live.test.ts (2 tests) 1565ms + ✓ an authored shell child sees a delivered token only when its own f.run grants it 869ms + ✓ parallel authored shell children keep their own secret grants 695ms + + Test Files 1 passed (1) + Tests 2 passed (2) + Start at 00:57:05 + Duration 2.61s (transform 344ms, setup 8ms, collect 837ms, tests 1.56s, environment 0ms, prepare 36ms) diff --git a/evidence/native-parallel-review8/sdk-typecheck-tests.log b/evidence/native-parallel-review8/sdk-typecheck-tests.log new file mode 100644 index 000000000..3b1c199e9 --- /dev/null +++ b/evidence/native-parallel-review8/sdk-typecheck-tests.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck:tests +> tsc -p tsconfig.tests.json diff --git a/evidence/native-parallel-review8/sdk-typecheck.log b/evidence/native-parallel-review8/sdk-typecheck.log new file mode 100644 index 000000000..b41e9a5e0 --- /dev/null +++ b/evidence/native-parallel-review8/sdk-typecheck.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json diff --git a/evidence/native-parallel-review8/timing7.mjs b/evidence/native-parallel-review8/timing7.mjs new file mode 100644 index 000000000..8c9dab856 --- /dev/null +++ b/evidence/native-parallel-review8/timing7.mjs @@ -0,0 +1,55 @@ +// Native shape timing: 3 x 300 ms routes, each followed by a 100 ms dependent, then a join. +// Alternates head and base, 1 warm-up each, then N measured pairs. Timestamps come from the +// shell children themselves (date +%s%3N), so overlap is measured on the effects, not the journal. +import fs from 'node:fs'; +import path from 'node:path'; +import { spawnSync } from 'node:child_process'; +const N = Number(process.argv[2] ?? 10); +const SIDES = { + head: { cli: '/w/head/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules' }, + base: { cli: '/w/base/packages/sdk/dist/cli.js', nm: '/w/base/packages/sdk/node_modules' }, +}; +const step = (tag, secs) => `echo "${tag}0 $(date +%s%3N)" >> t; sleep ${secs}; echo "${tag}1 $(date +%s%3N)" >> t`; +const SRC = `import { flow } from '@relayflows/surface'; +export default flow('timing', async f => { + const a = async () => { await f.run('${step('RA', 0.3)}'); await f.run('${step('DA', 0.1)}'); }; + const b = async () => { await f.run('${step('RB', 0.3)}'); await f.run('${step('DB', 0.1)}'); }; + const c = async () => { await f.run('${step('RC', 0.3)}'); await f.run('${step('DC', 0.1)}'); }; + await Promise.all([a(), b(), c()]); + f.done('success'); +}); +`; +function once(side, i) { + const root = `/w/runs/timing/${side}-${i}`; + fs.rmSync(root, { recursive: true, force: true }); + fs.mkdirSync(root, { recursive: true }); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync(SIDES[side].nm, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'chain.flow.ts'), SRC); + const t0 = Date.now(); + const r = spawnSync(process.execPath, [SIDES[side].cli, 'run', '--no-observer-link', '--json', '--data-dir', path.join(root, 'data'), path.join(root, 'chain.flow.ts'), '--input', '{}'], + { cwd: root, env: { ...process.env, RELAYFLOWD_BIN: '/w/relayflowd-main' }, encoding: 'utf8' }); + const cli = Date.now() - t0; + const t = Object.fromEntries(fs.readFileSync(path.join(root, 't'), 'utf8').trim().split('\n').map(l => l.split(' ')).map(([k, v]) => [k, Number(v)])); + const routes = ['A', 'B', 'C'].map(x => [t[`R${x}0`], t[`R${x}1`]]); + const deps = ['A', 'B', 'C'].map(x => [t[`D${x}0`], t[`D${x}1`]]); + const overlap = (iv) => Math.max(...iv.map(v => v[0])) < Math.min(...iv.map(v => v[1])); + const first = Math.min(...routes.map(v => v[0])); + const last = Math.max(...deps.map(v => v[1])); + const mode = JSON.parse(spawnSync('python3', ['-c', `import sqlite3,json,glob +for f in sorted(glob.glob('${root}/data/runs/*.sqlite3')): + r=sqlite3.connect(f).execute("select payload from entries where entry_type='run.spawned' order by seq limit 1").fetchone() + s=json.loads(r[0]).get('spec',{}).get('steps',[{}])[0] + if s.get('id')=='authored-root': print(json.dumps(json.loads(s['instruction']).get('executionMode','absent'))); break`], { encoding: 'utf8' }).stdout || '"?"'); + fs.rmSync(root, { recursive: true, force: true }); + return { side, i, code: r.status, mode, cli, body: last - first, routeSpread: Math.max(...routes.map(v => v[0])) - first, + routesOverlap: overlap(routes), depsOverlap: overlap(deps) }; +} +const out = { head: [], base: [] }; +once('head', -1); once('base', -1); +for (let i = 0; i < N; i++) for (const side of i % 2 ? ['base', 'head'] : ['head', 'base']) { const r = once(side, i); out[side].push(r); console.log(JSON.stringify(r)); } +const q = (xs, p) => { const s = [...xs].sort((a, b) => a - b); return s[Math.min(s.length - 1, Math.floor(p * (s.length - 1) + 0.5))]; }; +for (const side of ['head', 'base']) { + const rs = out[side]; + console.log(`TIMING ${side} mode=${[...new Set(rs.map(r => r.mode))]} codes=${[...new Set(rs.map(r => r.code))]} body p50=${q(rs.map(r => r.body), 0.5)} max=${Math.max(...rs.map(r => r.body))} cli p50=${q(rs.map(r => r.cli), 0.5)} max=${Math.max(...rs.map(r => r.cli))} spread p50=${q(rs.map(r => r.routeSpread), 0.5)} routesOverlap=${rs.filter(r => r.routesOverlap).length}/${rs.length} depsOverlap=${rs.filter(r => r.depsOverlap).length}/${rs.length}`); +} diff --git a/evidence/native-parallel-review9-followup/README.md b/evidence/native-parallel-review9-followup/README.md new file mode 100644 index 000000000..706ce63ac --- /dev/null +++ b/evidence/native-parallel-review9-followup/README.md @@ -0,0 +1,31 @@ +# Review 9 follow-up for #667 + +Source commit `8f72bb36` fixes the review-9 completed-root resume report. An +active pinned parallel root in an unsafe Node process refuses with diagnostic +kind `unsafe_parallel_runtime`. A completed root returns its journaled result +without dispatching work, even under a preload. The Surface contract now +states this distinction. The unit coverage checks whole-token parsing of the +six harmless flag forms and seven preload forms. + +The live RT2-style test starts a certified parallel flow, kills its first CLI +at a stalled child, and resumes under a no-op preload. That active resume +refuses with the new kind and leaves the two completed effects untouched. A +clean resume completes the flow; a later preload resume returns success with +the same effects, showing that the completed root admitted no new work. + +Checks ran on macOS against the local `relayflowd` binary; they did not use +Docker. Commands ran from the worktree root: + +```sh +npm run typecheck --prefix packages/sdk +npm run typecheck:tests --prefix packages/sdk +npm run build --prefix packages/sdk +(cd packages/sdk && npx vitest run tests/authored-root.test.ts tests/authored-flow-lifecycle-executor.test.ts) +(cd packages/sdk && RELAYFLOWD_BIN="$HOME/.relayflows-toolchain/target/ms-step-secrets/debug/relayflowd" npx vitest run tests/authored-parallel-run-live.test.ts -t 'reports an active parallel resume as an environment refusal and a completed one as done') +``` + +Typechecks and build passed. The focused unit suite passed 89/89 tests; the +live test passed once. Command output is in the adjacent `.log` files. The +earlier [review-8 evidence](../native-parallel-review9/README.md) remains +pinned to `2116fe8e` and contains the crash/resume, mutation, and timing +matrices; those matrices were not rerun for this follow-up. diff --git a/evidence/native-parallel-review9-followup/build.log b/evidence/native-parallel-review9-followup/build.log new file mode 100644 index 000000000..1647e84a1 --- /dev/null +++ b/evidence/native-parallel-review9-followup/build.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 build +> tsc && node scripts/make-cli-executable.mjs diff --git a/evidence/native-parallel-review9-followup/focused-unit.log b/evidence/native-parallel-review9-followup/focused-unit.log new file mode 100644 index 000000000..22898f71a --- /dev/null +++ b/evidence/native-parallel-review9-followup/focused-unit.log @@ -0,0 +1,12 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + +(node:78931) [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 (41 tests) 534ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (48 tests) 635ms + + Test Files 2 passed (2) + Tests 89 passed (89) + Start at 17:03:13 + Duration 2.61s (transform 499ms, setup 20ms, collect 3.34s, tests 1.17s, environment 0ms, prepare 171ms) diff --git a/evidence/native-parallel-review9-followup/rt2-live.log b/evidence/native-parallel-review9-followup/rt2-live.log new file mode 100644 index 000000000..53efd424e --- /dev/null +++ b/evidence/native-parallel-review9-followup/rt2-live.log @@ -0,0 +1,10 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-parallel-run-live.test.ts (42 tests | 41 skipped) 3748ms + ✓ parallel authored deterministic steps > reports an active parallel resume as an environment refusal and a completed one as done 3747ms + + Test Files 1 passed (1) + Tests 1 passed | 41 skipped (42) + Start at 17:03:16 + Duration 5.92s (transform 878ms, setup 20ms, collect 1.80s, tests 3.75s, environment 0ms, prepare 56ms) diff --git a/evidence/native-parallel-review9-followup/typecheck-tests.log b/evidence/native-parallel-review9-followup/typecheck-tests.log new file mode 100644 index 000000000..3b1c199e9 --- /dev/null +++ b/evidence/native-parallel-review9-followup/typecheck-tests.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck:tests +> tsc -p tsconfig.tests.json diff --git a/evidence/native-parallel-review9-followup/typecheck.log b/evidence/native-parallel-review9-followup/typecheck.log new file mode 100644 index 000000000..b41e9a5e0 --- /dev/null +++ b/evidence/native-parallel-review9-followup/typecheck.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json diff --git a/evidence/native-parallel-review9/COMMANDS.md b/evidence/native-parallel-review9/COMMANDS.md new file mode 100644 index 000000000..fde6043ec --- /dev/null +++ b/evidence/native-parallel-review9/COMMANDS.md @@ -0,0 +1,69 @@ +# Literal verification commands + +Commands ran from the Flows worktree root unless the section says +`packages/sdk`. The named volume `ms-flows-parallel-r7` had a native arm64 +daemon, the 2.0.51 base SDK, and published 2.0.50/2.0.51 packages from the +[prior bundle](../native-parallel-review8/COMMANDS.md). The Docker container +used no host bind mounts; `docker cp` staged the final SDK build and exact +reviewer fixtures into its volume. `/w/head/packages/sdk` links to +`/w/sdk-head`, and `/w/base/packages/sdk` links to `/w/sdk-base-2051`. + +```sh +npm run build --prefix packages/sdk +docker run -d --init --platform linux/arm64 --name ms-flows-parallel-r9 -v ms-flows-parallel-r7:/w -w /w/review9 node:22-trixie sleep infinity +docker exec ms-flows-parallel-r9 sh -c 'cp -a /w/sdk-head/dist /w/sdk-head-r8-dist && rm -rf /w/sdk-head/dist && mkdir -p /w/sdk-head/dist /w/review9' +docker cp packages/sdk/dist/. ms-flows-parallel-r9:/w/sdk-head/dist/ +docker cp evidence/native-parallel-review9/. ms-flows-parallel-r9:/w/review9/ +docker exec ms-flows-parallel-r9 sh -c "cp -a /w/sdk-head/dist /w/deep/packages/sdk/dist && cp -a /w/sdk-head/dist /w/forced/packages/sdk/dist && sed -i 's/export function parallelRunEligible(body, moduleSource) {/export function parallelRunEligible(body, moduleSource) { return true;/' /w/deep/packages/sdk/dist/authored-parallel-eligibility.js /w/forced/packages/sdk/dist/authored-parallel-eligibility.js && sed -i 's/export function parallelBodySyntaxEligible(body) {/export function parallelBodySyntaxEligible(body) { return true;/' /w/deep/packages/sdk/dist/authored-parallel-eligibility.js" +``` + +The final candidate was rebuilt once after adding the indexed-array check; +the same `docker cp` replaced `/w/sdk-head/dist`, and the `deep` and `forced` +copies were refreshed before the final runs. The preliminary logs were +discarded. `sdk-dist-hashes.log` verifies the final source/build identity. + +## Exact reviewer matrices and probe + +```sh +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h7.mjs s7.mjs all --reps=6 --conc=3 --tag=r9finals7 --sides=head:head > evidence/native-parallel-review9/final-s7.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h8.mjs s8.mjs all --reps=6 --conc=3 --tag=r9finals8 > evidence/native-parallel-review9/final-s8.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings probe8.mjs > evidence/native-parallel-review9/probe8.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node timing7.mjs 10 > evidence/native-parallel-review9/final-timing.log 2>&1 +``` + +The `deep` side is an isolated copy of the final candidate with only +`parallelRunEligible` and `parallelBodySyntaxEligible` forced to return true. +The base side is the 2.0.51 source build. The s8 harness itself runs the +head, base, and deep sides specified by the reviewer's `s8.mjs` verbatim. + +## Scratch mutations + +```sh +docker cp evidence/native-parallel-review9/mutation-stage.py ms-flows-parallel-r9:/w/review9/mutation-stage.py +docker exec -w /w/review9 ms-flows-parallel-r9 python3 mutation-stage.py > evidence/native-parallel-review9/mutation-stage.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h8.mjs s8.mjs RS1 --reps=6 --conc=3 --tag=r9mutf1parser --sides=fx:fx > evidence/native-parallel-review9/mut-f1-parser.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h8.mjs s8.mjs RS3bh --reps=6 --conc=3 --tag=r9mutf1resume --sides=m1:m1 > evidence/native-parallel-review9/mut-f1-resume.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h8.mjs s8.mjs PL9dep --reps=6 --conc=3 --tag=r9mutf2backstop --sides=m3:m3 > evidence/native-parallel-review9/mut-f2-backstop.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h8.mjs s8.mjs PL9dep --reps=12 --conc=3 --tag=r9mutf2removed --sides=m2:m2 > evidence/native-parallel-review9/mut-f2-removed.log 2>&1 +docker exec -w /w/review9 ms-flows-parallel-r9 node --no-warnings h8.mjs s8.mjs PL8hide --reps=12 --conc=3 --tag=r9mutf2hide --sides=m2:m2 > evidence/native-parallel-review9/mut-f2-hide.log 2>&1 +``` + +## SDK checks and build identity + +The following commands ran from `packages/sdk`: + +```sh +npm run build > ../../evidence/native-parallel-review9/sdk-build.log 2>&1 +npm run typecheck > ../../evidence/native-parallel-review9/sdk-typecheck.log 2>&1 +npm run typecheck:tests > ../../evidence/native-parallel-review9/sdk-typecheck-tests.log 2>&1 +npx vitest run tests/authored-parallel-body.test.ts tests/authored-parallel-eligibility.test.ts tests/authored-step-graph.test.ts tests/authored-flow-lifecycle-executor.test.ts tests/authored-root.test.ts tests/authored-step-secrets.test.ts tests/communication-feature-secret-scoping.test.ts tests/worker-feature-secret-scoping.test.ts > ../../evidence/native-parallel-review9/sdk-focused-unit.log 2>&1 +RELAYFLOWD_BIN="$HOME/.relayflows-toolchain/target/ms-step-secrets/debug/relayflowd" npx vitest run tests/authored-step-secrets-live.test.ts > ../../evidence/native-parallel-review9/sdk-secrets-live.log 2>&1 +``` + +From the worktree root: + +```sh +shasum -a 256 packages/sdk/dist/authored-flow-lifecycle.js packages/sdk/dist/authored-promise-graph.js packages/sdk/dist/authored-root.js > evidence/native-parallel-review9/sdk-dist-hashes.log +docker exec ms-flows-parallel-r9 sha256sum /w/sdk-head/dist/authored-flow-lifecycle.js /w/sdk-head/dist/authored-promise-graph.js /w/sdk-head/dist/authored-root.js >> evidence/native-parallel-review9/sdk-dist-hashes.log +docker rm -f ms-flows-parallel-r9 +``` diff --git a/evidence/native-parallel-review9/README.md b/evidence/native-parallel-review9/README.md new file mode 100644 index 000000000..10f588447 --- /dev/null +++ b/evidence/native-parallel-review9/README.md @@ -0,0 +1,59 @@ +# Review 8 repair evidence for #667 + +This bundle tests the review-8 repairs on the SDK source above `3e008e9e`. +The kernel source is unchanged. The final SDK build's three changed runtime +modules match the Linux arm64 staged copy byte-for-byte +(`sdk-dist-hashes.log`). All live runs used native arm64 `node:22-trixie`, one +container, and a named Docker volume; no Paris Drive path was bind-mounted. +`h8.mjs`, `s8.mjs`, and `probe8.mjs` are the reviewer's exact code fences from +`~/relay-briefs/ms-flows-parallel-667-review8-fixtures.md`. The prior `h7.mjs`, +`s7.mjs`, `s.mjs`, `s2.mjs`, `s3.mjs`, `s4.mjs`, and `timing7.mjs` are from the +previous evidence bundle. `COMMANDS.md` gives the commands and log names. +`raw-logs.tar.gz` retains the captured log bytes; the browsable `.log` files +have trailing whitespace and extra blank lines trimmed for `git diff --check`. + +## Repairs and live outcomes + +| Finding | Repair | Exact reviewer fixture result | +| --- | --- | --- | +| F1: false preload flags and terminal resume failure | Parse whole Node option tokens; check a pinned parallel root before `run.resume` and again after source import. Unsafe environment refusal leaves the root resumable. | RS1/RS2 and their clean second-resume forms complete 6/6 each in parallel mode. RS3's preload resume refuses 6/6 with effects `bcaX`; RS3bh's clean second resume completes `bcaXZ` 6/6. | +| F2: fulfilled join with pending members | Record the tracked members of each `all`/`allSettled` and refuse a follow-up when a settled join still has a pending member. Snapshot the Array iterator and its `next`; compare a certified array's indexed members with the iterable view. | PL8hide fails before X in 6/6, effects `b`, no replay. PL9dep, PL8r and PL8iter use safe serial fallback in 6/6 each; no replay. | +| F3: slow failure report | Document that admitted children finish and are journaled before root failure. | Deep-forced F5w still takes about 15 s and admits neither Q nor L; the reviewer `<10 s` predicate correctly reports 0/6, with no replay. | + +The final-build `s7.mjs` matrix ran 27 scenarios × six kill offsets: 162/162 +without replay (`final-s7.log`). Twenty-four scenarios met the reviewer +predicate in all six runs. PL3sub, PL4ctor, and SEC7 retain the published-base +equivalent predicate mismatches described in the prior evidence bundle. + +The final-build `s8.mjs` matrix ran 324 crash/resume cases: 120 head, 162 +2.0.51-base, and 42 deep-forced. All 324 had zero replay (`final-s8.log`). +The deliberate refusal cases and base-equivalent failures explain the +reviewer's 276/324 `ok` flags. DP1, OPT1, TV1, EP1, SEC8m, and PL9depnone +completed 6/6 in parallel mode. The exact certifier probe matches the +reviewer's expected table (`probe8.log`). + +## Revert proofs + +`mutation-stage.py` makes four scratch SDK `dist` copies from this build; it +does not modify the worktree or the staged candidate: + +| Scratch side | Removed guard | Observed result | +| --- | --- | --- | +| `fx` | Whole-token parser, restoring the old regex | Harmless RS1 flag refused 6/6 (`mut-f1-parser.log`). | +| `m1` | Pre-dispatch parallel resume check | RS3 preload terminalized the root; clean second resume failed 6/6 (`mut-f1-resume.log`). | +| `m3` | Array iterator admission check only | The pending-member backstop still refused PL9dep before X, effects `b`, 6/6 (`mut-f2-backstop.log`). | +| `m2` | Array iterator admission check and settlement backstop | PL9dep admitted X before its pending branches in 12/12 and replayed in 1/12; PL8hide replayed in 4/12 (`mut-f2-removed.log`, `mut-f2-hide.log`). | + +## Regression and overlap checks + +The exact review-7 timing driver alternated ten warm head/base pairs of three +300 ms routes, each followed by a 100 ms dependent. At this head, body p50 was +461 ms versus 1,383 ms on the 2.0.51 base build; CLI p50 was 1,088 versus +1,847 ms, and route start spread p50 was 6 versus 661 ms. Routes and +dependents overlapped in 10/10 head runs and 0/10 base runs +(`final-timing.log`). + +`npm run build`, SDK typecheck, test typecheck, eight focused Vitest files +(133 tests), and both local-daemon secret live tests passed. Their complete +logs are `sdk-build.log`, `sdk-typecheck.log`, `sdk-typecheck-tests.log`, +`sdk-focused-unit.log`, and `sdk-secrets-live.log`. diff --git a/evidence/native-parallel-review9/final-s7.log b/evidence/native-parallel-review9/final-s7.log new file mode 100644 index 000000000..42f4bc160 --- /dev/null +++ b/evidence/native-parallel-review9/final-s7.log @@ -0,0 +1,189 @@ +{"s":"HY1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7RBVTENA9YV00HFSD1AY\",\"runId\":\"01M53H7RBVTENA9YV00HFSD1AY\",\"socketPath\":\"/tmp/relayflowd-9422c87daf75.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1643} +{"s":"HY1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7RBX267Y1PJ9HJGXNNX2\",\"runId\":\"01M53H7RBX267Y1PJ9HJGXNNX2\",\"socketPath\":\"/tmp/relayflowd-9653aa2a5a92.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1693} +{"s":"HY1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7RBWC3ZCD4HWE7N3Q2M6\",\"runId\":\"01M53H7RBWC3ZCD4HWE7N3Q2M6\",\"socketPath\":\"/tmp/relayflowd-0f2df5e85ded.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1756} +{"s":"HY1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7SVB9VP5K0ZCJF5VZVS6\",\"runId\":\"01M53H7SVB9VP5K0ZCJF5VZVS6\",\"socketPath\":\"/tmp/relayflowd-8fd1535486e1.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1678} +{"s":"HY1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7SX7GQRV9N5TH9EPMQHF\",\"runId\":\"01M53H7SX7GQRV9N5TH9EPMQHF\",\"socketPath\":\"/tmp/relayflowd-c9ba4c40a46e.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1770} +{"s":"HY1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"PB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7SYT77PEG2G96CSJ1RW7\",\"runId\":\"01M53H7SYT77PEG2G96CSJ1RW7\",\"socketPath\":\"/tmp/relayflowd-507e2402a6f6.sock\",\"completedSteps\":4,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"PBZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-4 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1906} +{"s":"HY1s","start":"head","resume":"head","i":0,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r9finals7/HY1s/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53H7VGDPMPECA7RQ2T7QCQ2\",\"runId\":\"01M53H7VGDPMPECA7RQ2T7QCQ2\",\"socketPath\":\"/tmp/relayflowd-033f6db19cb3.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":747} +{"s":"HY1s","start":"head","resume":"head","i":1,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r9finals7/HY1s/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53H7VK00N6G5VCY6ETA5WXJ\",\"runId\":\"01M53H7VK00N6G5VCY6ETA5WXJ\",\"socketPath\":\"/tmp/relayflowd-89946d600322.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":688} +{"s":"HY1s","start":"head","resume":"head","i":2,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r9finals7/HY1s/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53H7VTH7X3FNTBYBHFFE1F9\",\"runId\":\"01M53H7VTH7X3FNTBYBHFFE1F9\",\"socketPath\":\"/tmp/relayflowd-17a13b8f1d12.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":745} +{"s":"HY1s","start":"head","resume":"head","i":3,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r9finals7/HY1s/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53H7W7KM8R8E9R2NM8QCZ13\",\"runId\":\"01M53H7W7KM8R8E9R2NM8QCZ13\",\"socketPath\":\"/tmp/relayflowd-2fcaf4c818d1.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":751} +{"s":"HY1s","start":"head","resume":"head","i":4,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r9finals7/HY1s/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53H7W9PS9PG6648GAYR14Q8\",\"runId\":\"01M53H7W9PS9PG6648GAYR14Q8\",\"socketPath\":\"/tmp/relayflowd-5b3646db962c.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":732} +{"s":"HY1s","start":"head","resume":"head","i":5,"fresh":true,"code1":0,"code":0,"effects":"PB","effects1":"PB","out1":"{\"ok\":true,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[],\"path\":\"/w/runs/r9finals7/HY1s/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53H7WJ4E8W45JJ2MKX1E6KR\",\"runId\":\"01M53H7WJ4E8W45JJ2MKX1E6KR\",\"socketPath\":\"/tmp/relayflowd-574f3dd05a42.sock\",\"completedSteps\":3,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf P >> effects","run-2 c=1 sleep 0.1; printf B >> effects","complete-3 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":785} +{"s":"HY2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7WZGQDGFZ2WM9PCZ9JME\",\"runId\":\"01M53H7WZGQDGFZ2WM9PCZ9JME\",\"socketPath\":\"/tmp/relayflowd-9093207bb612.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1774} +{"s":"HY2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7X109XSNQEEYSH0SM9GX\",\"runId\":\"01M53H7X109XSNQEEYSH0SM9GX\",\"socketPath\":\"/tmp/relayflowd-b892e041ed3c.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1855} +{"s":"HY2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7XAJ4B1NM24AS8CHP9MD\",\"runId\":\"01M53H7XAJ4B1NM24AS8CHP9MD\",\"socketPath\":\"/tmp/relayflowd-c136d8762d80.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1927} +{"s":"HY2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7YQA3E943DAY6V8J3Q76\",\"runId\":\"01M53H7YQA3E943DAY6V8J3Q76\",\"socketPath\":\"/tmp/relayflowd-af6ee18d9e52.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2111} +{"s":"HY2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7YVQHWFJ6TRCW4DY42M5\",\"runId\":\"01M53H7YVQHWFJ6TRCW4DY42M5\",\"socketPath\":\"/tmp/relayflowd-5178e1dea6e0.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2194} +{"s":"HY2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"AB","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H7Z89KH2G98MGQ4Y5149C\",\"runId\":\"01M53H7Z89KH2G98MGQ4Y5149C\",\"socketPath\":\"/tmp/relayflowd-3840f3d7ec84.sock\",\"completedSteps\":5,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf V","run-2 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.1; printf B >> effects","run-4 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-5 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2284} +{"s":"PAR1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H80TA7GCN5PFTGGWF99TK\",\"runId\":\"01M53H80TA7GCN5PFTGGWF99TK\",\"socketPath\":\"/tmp/relayflowd-b7d9cf496593.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1833} +{"s":"PAR1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H810JS9ETYGAAGV26YTH4\",\"runId\":\"01M53H810JS9ETYGAAGV26YTH4\",\"socketPath\":\"/tmp/relayflowd-53c59b732c86.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1858} +{"s":"PAR1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H81FCM5XC9RN7TAWGHNRE\",\"runId\":\"01M53H81FCM5XC9RN7TAWGHNRE\",\"socketPath\":\"/tmp/relayflowd-3b99df85abb1.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1957} +{"s":"PAR1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H82MKJHGDP2CXC0V1TDPJ\",\"runId\":\"01M53H82MKJHGDP2CXC0V1TDPJ\",\"socketPath\":\"/tmp/relayflowd-921f0fd1d0ee.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.2; printf C","run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2032} +{"s":"PAR1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H82V9444QKNFYH10ZT4JC\",\"runId\":\"01M53H82V9444QKNFYH10ZT4JC\",\"socketPath\":\"/tmp/relayflowd-5fd6fd38a681.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2104} +{"s":"PAR1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bca","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H83BV5MAQP9YQ3K0CF4WV\",\"runId\":\"01M53H83BV5MAQP9YQ3K0CF4WV\",\"socketPath\":\"/tmp/relayflowd-69a2dd7f8490.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.2; printf C","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-ae4aa1fa103a7714e8b04f7b6026c5235311cc89a9dd3493afd1c73599af14e9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2208} +{"s":"PAR2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H84GTTGRKMK6WCQ40Q0WY\",\"runId\":\"01M53H84GTTGRKMK6WCQ40Q0WY\",\"socketPath\":\"/tmp/relayflowd-17a0b397aa7c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1708} +{"s":"PAR2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H84WPD4JEY7KVRWP0YC6P\",\"runId\":\"01M53H84WPD4JEY7KVRWP0YC6P\",\"socketPath\":\"/tmp/relayflowd-91f731eb1514.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1800} +{"s":"PAR2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H85H0V53ZYSJXPR433SQR\",\"runId\":\"01M53H85H0V53ZYSJXPR433SQR\",\"socketPath\":\"/tmp/relayflowd-9fd7b0a2084b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1823} +{"s":"PAR2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H86697Z5Z1YGFNY8PHET3\",\"runId\":\"01M53H86697Z5Z1YGFNY8PHET3\",\"socketPath\":\"/tmp/relayflowd-17a4ab945d0a.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1910} +{"s":"PAR2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H86KW5E5T692NTK0550P7\",\"runId\":\"01M53H86KW5E5T692NTK0550P7\",\"socketPath\":\"/tmp/relayflowd-6fa20c0bd577.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2053} +{"s":"PAR2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ba","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H879E9ZE4XPEQ9XH11JC9\",\"runId\":\"01M53H879E9ZE4XPEQ9XH11JC9\",\"socketPath\":\"/tmp/relayflowd-cefe09c6b8d9.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2157} +{"s":"EQ1twice","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H882AZWNXRBK65TMGPRHT\",\"runId\":\"01M53H882AZWNXRBK65TMGPRHT\",\"socketPath\":\"/tmp/relayflowd-8e27014f5234.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1744} +{"s":"EQ1twice","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H88MC4QHG51B72QMFQBHS\",\"runId\":\"01M53H88MC4QHG51B72QMFQBHS\",\"socketPath\":\"/tmp/relayflowd-0a2a415752b7.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1776} +{"s":"EQ1twice","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H89F32HXMSHBMJ7DY8ZRE\",\"runId\":\"01M53H89F32HXMSHBMJ7DY8ZRE\",\"socketPath\":\"/tmp/relayflowd-f62aec4f381f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf A","run-1 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1928} +{"s":"EQ1twice","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H89SSFCT1F0Z8EHR9T9R7\",\"runId\":\"01M53H89SSFCT1F0Z8EHR9T9R7\",\"socketPath\":\"/tmp/relayflowd-56479640c427.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":1990} +{"s":"EQ1twice","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8ACTCB8ZVSQY35S03P84\",\"runId\":\"01M53H8ACTCB8ZVSQY35S03P84\",\"socketPath\":\"/tmp/relayflowd-4e0989a23757.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":2106} +{"s":"EQ1twice","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"aaX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8BC1B8EX6J8B1F5Z4NT6\",\"runId\":\"01M53H8BC1B8EX6J8B1F5Z4NT6\",\"socketPath\":\"/tmp/relayflowd-832aeb46ac60.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A","run-2 c=1 sleep 0.2; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf a >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":true,"replay":false,"ok":true,"ms":2267} +{"s":"EQ2ret","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8BSVCQ91CK8JVEYCRWPB\",\"runId\":\"01M53H8BSVCQ91CK8JVEYCRWPB\",\"socketPath\":\"/tmp/relayflowd-7c1f49d6a3dc.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1858} +{"s":"EQ2ret","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8CE95K4B6Q6WRKBB306P\",\"runId\":\"01M53H8CE95K4B6Q6WRKBB306P\",\"socketPath\":\"/tmp/relayflowd-a4741e41768c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.3; printf A","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1850} +{"s":"EQ2ret","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8DGKJ4XFVG39H4HQRM9X\",\"runId\":\"01M53H8DGKJ4XFVG39H4HQRM9X\",\"socketPath\":\"/tmp/relayflowd-3b7806f5056e.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1842} +{"s":"EQ2ret","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8DHDEF2J0PM35FQEE3CR\",\"runId\":\"01M53H8DHDEF2J0PM35FQEE3CR\",\"socketPath\":\"/tmp/relayflowd-6179df042e29.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1919} +{"s":"EQ2ret","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8E74ST0Q8G6GXCWF7VKW\",\"runId\":\"01M53H8E74ST0Q8G6GXCWF7VKW\",\"socketPath\":\"/tmp/relayflowd-8e77148940d5.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2024} +{"s":"EQ3midret","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8FDFHW59Q8VAKF69A6XH\",\"runId\":\"01M53H8FDFHW59Q8VAKF69A6XH\",\"socketPath\":\"/tmp/relayflowd-78a2ea192cf2.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1681} +{"s":"EQ2ret","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"ab","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8FAGM4RSNHWZR98ZT3AJ\",\"runId\":\"01M53H8FAGM4RSNHWZR98ZT3AJ\",\"socketPath\":\"/tmp/relayflowd-6939ff854708.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B","run-1 c=1 sleep 0.3; printf A","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf ab >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2216} +{"s":"EQ3midret","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8G6A73F17F6GAMR3Z74C\",\"runId\":\"01M53H8G6A73F17F6GAMR3Z74C\",\"socketPath\":\"/tmp/relayflowd-64b7e26209bb.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1691} +{"s":"EQ3midret","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8H201YMNG57HJJS8QNDA\",\"runId\":\"01M53H8H201YMNG57HJJS8QNDA\",\"socketPath\":\"/tmp/relayflowd-2efc2c5e2c8f.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1779} +{"s":"EQ3midret","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8HF5APHHVT8Z1GKQ6M3W\",\"runId\":\"01M53H8HF5APHHVT8Z1GKQ6M3W\",\"socketPath\":\"/tmp/relayflowd-740a3f4ad4ca.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1857} +{"s":"EQ3midret","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8HVCAFJDAKJMMCXNT37X\",\"runId\":\"01M53H8HVCAFJDAKJMMCXNT37X\",\"socketPath\":\"/tmp/relayflowd-22aa0df49d14.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1960} +{"s":"EQ4fail","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"ith retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53H8K9CCEGYQVPH5B3BKEZS --at run-1 --data-dir '/w/runs/r9finals7/EQ4fail/head-head-0/data'\\nJournal: /w/runs/r9finals7/EQ4fail/head-head-0/data/runs/01M53H8K9CCEGYQVPH5B3BKEZS.sqlite3\"}],\"path\":\"/w/runs/r9finals7/EQ4fail/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53H8K8G5F1DW4YYKJXXD6XW\",\"runId\":\"01M53H8K9CCEGYQVPH5B3BKEZS\",\"socketPath\":\"/tmp/relayflowd-5cd0a1146155.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1005} +{"s":"EQ4fail","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"ith retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53H8KT6DV78A4TFEWS62HWG --at run-1 --data-dir '/w/runs/r9finals7/EQ4fail/head-head-1/data'\\nJournal: /w/runs/r9finals7/EQ4fail/head-head-1/data/runs/01M53H8KT6DV78A4TFEWS62HWG.sqlite3\"}],\"path\":\"/w/runs/r9finals7/EQ4fail/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53H8KS7J9V9X6G6ATA63DMB\",\"runId\":\"01M53H8KT6DV78A4TFEWS62HWG\",\"socketPath\":\"/tmp/relayflowd-2bcb44bf868f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.4; printf B >> effects","run-1 c=1 sleep 0.1; printf F >> effects; exit 1"],"letterDup":false,"replay":false,"ok":true,"ms":1041} +{"s":"EQ3midret","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BARX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8JSS26GZPHQ5QBN26JNE\",\"runId\":\"01M53H8JSS26GZPHQ5QBN26JNE\",\"socketPath\":\"/tmp/relayflowd-1223d9c610d5.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BARXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R >> effects","run-after-b27729cd34232dcbe9422304c2b17447650342603d38049b510e271b9689b435-1 c=1 printf X >> effects","run-after-6f14790e09c46141ecb49037787ed603ea9c232ff0ebc6792e41772b066e3c75-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2093} +{"s":"EQ4fail","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"ith retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53H8M9HG5ZCW1TZ29CB4JF2 --at run-1 --data-dir '/w/runs/r9finals7/EQ4fail/head-head-2/data'\\nJournal: /w/runs/r9finals7/EQ4fail/head-head-2/data/runs/01M53H8M9HG5ZCW1TZ29CB4JF2.sqlite3\"}],\"path\":\"/w/runs/r9finals7/EQ4fail/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53H8M8DZMR4FPZ71P7ZK35N\",\"runId\":\"01M53H8M9HG5ZCW1TZ29CB4JF2\",\"socketPath\":\"/tmp/relayflowd-2d87c64904ee.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.4; printf B >> effects","run-1 c=1 sleep 0.1; printf F >> effects; exit 1"],"letterDup":false,"replay":false,"ok":true,"ms":1019} +{"s":"EQ4fail","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"ith retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53H8MTAG391V73B2477BY6D --at run-1 --data-dir '/w/runs/r9finals7/EQ4fail/head-head-3/data'\\nJournal: /w/runs/r9finals7/EQ4fail/head-head-3/data/runs/01M53H8MTAG391V73B2477BY6D.sqlite3\"}],\"path\":\"/w/runs/r9finals7/EQ4fail/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53H8MS8TVFCW5D0NTQ6F49X\",\"runId\":\"01M53H8MTAG391V73B2477BY6D\",\"socketPath\":\"/tmp/relayflowd-1185580fcda1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1016} +{"s":"EQ4fail","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"ith retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53H8MW32EN8SVFNFWVYXGGX --at run-1 --data-dir '/w/runs/r9finals7/EQ4fail/head-head-4/data'\\nJournal: /w/runs/r9finals7/EQ4fail/head-head-4/data/runs/01M53H8MW32EN8SVFNFWVYXGGX.sqlite3\"}],\"path\":\"/w/runs/r9finals7/EQ4fail/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53H8MV7D7ZJVB33CHN60DRA\",\"runId\":\"01M53H8MW32EN8SVFNFWVYXGGX\",\"socketPath\":\"/tmp/relayflowd-73b90f796150.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1028} +{"s":"EQ4fail","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"FB","effects1":"FB","out1":"ith retries_exhausted Step \\\"run-1\\\" (deterministic) completionReason: retries_exhausted attempt=1/1 transportRetries=1 exit=1.\\nInspect: flows replay 01M53H8N9HK4PGZHWA88S9CZ49 --at run-1 --data-dir '/w/runs/r9finals7/EQ4fail/head-head-5/data'\\nJournal: /w/runs/r9finals7/EQ4fail/head-head-5/data/runs/01M53H8N9HK4PGZHWA88S9CZ49.sqlite3\"}],\"path\":\"/w/runs/r9finals7/EQ4fail/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53H8N8J1G42K294PYAZVBYV\",\"runId\":\"01M53H8N9HK4PGZHWA88S9CZ49\",\"socketPath\":\"/tmp/relayflowd-656a4846ef0f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf F >> effects; exit 1","run-2 c=1 sleep 0.4; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1031} +{"s":"EQ5wide","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"gdabhejfkcilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8NSKYKB0YPYQNBSZ8HPY\",\"runId\":\"01M53H8NSKYKB0YPYQNBSZ8HPY\",\"socketPath\":\"/tmp/relayflowd-c2be07620233.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gdabhejfkcilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-2 c=1 sleep 0.2; printf S1","run-1 c=1 sleep 0.1; printf S0","run-4 c=1 sleep 0.1; printf S3","run-5 c=1 sleep 0.2; printf S4","run-6 c=1 sleep 0.3; printf S5","run-8 c=1 sleep 0.2; printf S7","run-7 c=1 sleep 0.1; printf S6","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2359} +{"s":"EQ5wide","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"adgbehjcfkilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8NSS29J9V5X96BTS00BR\",\"runId\":\"01M53H8NSS29J9V5X96BTS00BR\",\"socketPath\":\"/tmp/relayflowd-3b9860d04c54.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adgbehjcfkilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf S1","run-3 c=1 sleep 0.3; printf S2","run-1 c=1 sleep 0.1; printf S0","run-6 c=1 sleep 0.3; printf S5","run-5 c=1 sleep 0.2; printf S4","run-8 c=1 sleep 0.2; printf S7","run-4 c=1 sleep 0.1; printf S3","run-7 c=1 sleep 0.1; printf S6","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2327} +{"s":"EQ5wide","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"adgehjbckfilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8P9WR6MAKN13D80Y4QRC\",\"runId\":\"01M53H8P9WR6MAKN13D80Y4QRC\",\"socketPath\":\"/tmp/relayflowd-f38829bff1f2.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adgehjbckfilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-5 c=1 sleep 0.2; printf S4","run-4 c=1 sleep 0.1; printf S3","run-6 c=1 sleep 0.3; printf S5","run-1 c=1 sleep 0.1; printf S0","run-7 c=1 sleep 0.1; printf S6","run-2 c=1 sleep 0.2; printf S1","run-8 c=1 sleep 0.2; printf S7","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2421} +{"s":"EQ5wide","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"agdhjbefckilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8R3YBW4DN0ZCHK30APW1\",\"runId\":\"01M53H8R3YBW4DN0ZCHK30APW1\",\"socketPath\":\"/tmp/relayflowd-0974aa7c8668.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"agdhjbefckilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.1; printf S3","run-1 c=1 sleep 0.1; printf S0","run-3 c=1 sleep 0.3; printf S2","run-2 c=1 sleep 0.2; printf S1","run-6 c=1 sleep 0.3; printf S5","run-5 c=1 sleep 0.2; printf S4","run-7 c=1 sleep 0.1; printf S6","run-8 c=1 sleep 0.2; printf S7","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2478} +{"s":"EQ5wide","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"dgabhjefkcilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8R4M5XVY9D83S68V6XSH\",\"runId\":\"01M53H8R4M5XVY9D83S68V6XSH\",\"socketPath\":\"/tmp/relayflowd-db48c398d766.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"dgabhjefkcilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-7 c=1 sleep 0.1; printf S6","run-5 c=1 sleep 0.2; printf S4","run-3 c=1 sleep 0.3; printf S2","run-2 c=1 sleep 0.2; printf S1","run-6 c=1 sleep 0.3; printf S5","run-1 c=1 sleep 0.1; printf S0","run-4 c=1 sleep 0.1; printf S3","run-8 c=1 sleep 0.2; printf S7","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2583} +{"s":"EQ5wide","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"gadbehjfckilX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8RMS61MAEQRCFDR9A2KB\",\"runId\":\"01M53H8RMS61MAEQRCFDR9A2KB\",\"socketPath\":\"/tmp/relayflowd-d62d30e2ad6e.sock\",\"completedSteps\":27,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gadbehjfckilXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-8 c=1 sleep 0.2; printf S7","run-6 c=1 sleep 0.3; printf S5","run-3 c=1 sleep 0.3; printf S2","run-2 c=1 sleep 0.2; printf S1","run-5 c=1 sleep 0.2; printf S4","run-1 c=1 sleep 0.1; printf S0","run-4 c=1 sleep 0.1; printf S3","run-7 c=1 sleep 0.1; printf S6","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.2; printf S10","run-12 c=1 sleep 0.3; printf S11","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=1 printf k >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-5035e1bcbaa00bdada261e30fab262c9f56d98340070094467fbb29a1e20b3e3-1 c=1 printf l >> effects","run-after-47737fddbf7e602a4dd0245918ce58aaabd31b1de4ef3296dcf0b58bdd9fc1db-1 c=1 printf X >> effects","run-after-2cd3f17e0f60b40497c76aeda641f729788d3daf9079598950b081d20a057996-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-27 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2613} +{"s":"EQ5stall","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"adgbehjf","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8TGXF1SJM6TCP2EZ2G2R\",\"runId\":\"01M53H8TGXF1SJM6TCP2EZ2G2R\",\"socketPath\":\"/tmp/relayflowd-1c5a260d6625.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adgbehjfYyciXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-2 c=1 sleep 0.2; printf S1","run-7 c=1 sleep 0.1; printf S6","run-5 c=1 sleep 0.2; printf S4","run-6 c=1 sleep 0.3; printf S5","run-8 c=1 sleep 0.2; printf S7","run-3 c=2 sleep 0.3; printf S2","run-4 c=1 sleep 0.1; printf S3","run-9 c=2 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2161} +{"s":"EQ5stall","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"agdhbejcf","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8TMQBSAX383J7JGSW258\",\"runId\":\"01M53H8TMQBSAX383J7JGSW258\",\"socketPath\":\"/tmp/relayflowd-7fe85f2f3650.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"agdhbejcfYyiXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf S2","run-1 c=1 sleep 0.1; printf S0","run-2 c=1 sleep 0.2; printf S1","run-4 c=1 sleep 0.1; printf S3","run-7 c=1 sleep 0.1; printf S6","run-5 c=1 sleep 0.2; printf S4","run-8 c=1 sleep 0.2; printf S7","run-6 c=1 sleep 0.3; printf S5","run-9 c=2 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2180} +{"s":"EQ5stall","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"agdhebjfci","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8V4D31BCWN10N1NH6804\",\"runId\":\"01M53H8V4D31BCWN10N1NH6804\",\"socketPath\":\"/tmp/relayflowd-e86efabef37f.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"agdhebjfciYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-4 c=1 sleep 0.1; printf S3","run-6 c=1 sleep 0.3; printf S5","run-5 c=1 sleep 0.2; printf S4","run-8 c=1 sleep 0.2; printf S7","run-2 c=1 sleep 0.2; printf S1","run-3 c=1 sleep 0.3; printf S2","run-7 c=1 sleep 0.1; printf S6","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2136} +{"s":"EQ5stall","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"agdebjhfci","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8WN1EEK7RQCVBZHE0QTV\",\"runId\":\"01M53H8WN1EEK7RQCVBZHE0QTV\",\"socketPath\":\"/tmp/relayflowd-c488b505e62e.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"agdebjhfciYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf S1","run-1 c=1 sleep 0.1; printf S0","run-3 c=1 sleep 0.3; printf S2","run-4 c=1 sleep 0.1; printf S3","run-5 c=1 sleep 0.2; printf S4","run-7 c=1 sleep 0.1; printf S6","run-6 c=1 sleep 0.3; printf S5","run-8 c=1 sleep 0.2; printf S7","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2198} +{"s":"EQ5stall","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"gadbehjfci","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8WRZ8KCQDS0PVDQ0JVDH\",\"runId\":\"01M53H8WRZ8KCQDS0PVDQ0JVDH\",\"socketPath\":\"/tmp/relayflowd-82d9d70d65db.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"gadbehjfciYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf S0","run-7 c=1 sleep 0.1; printf S6","run-2 c=1 sleep 0.2; printf S1","run-3 c=1 sleep 0.3; printf S2","run-5 c=1 sleep 0.2; printf S4","run-4 c=1 sleep 0.1; printf S3","run-6 c=1 sleep 0.3; printf S5","run-8 c=1 sleep 0.2; printf S7","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2336} +{"s":"EQ5stall","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"adghjebcfi","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8X99X5RYFC87B991JS10\",\"runId\":\"01M53H8X99X5RYFC87B991JS10\",\"socketPath\":\"/tmp/relayflowd-c6bc3d0b3574.sock\",\"completedSteps\":26,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"adghjebcfiYyXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.2; printf S1","run-3 c=1 sleep 0.3; printf S2","run-8 c=1 sleep 0.2; printf S7","run-5 c=1 sleep 0.2; printf S4","run-6 c=1 sleep 0.3; printf S5","run-4 c=1 sleep 0.1; printf S3","run-7 c=1 sleep 0.1; printf S6","run-1 c=1 sleep 0.1; printf S0","run-9 c=1 sleep 0.3; printf S8","run-10 c=1 sleep 0.1; printf S9","run-11 c=1 sleep 0.15; printf s","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf a >> effects","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf d >> effects","run-after-d82ca7a1d1844e835101303539b5cac391e3274813adf20d521772e9f405d9da-1 c=1 printf g >> effects","run-after-034c6d7e90522b45cc93080e07e56fe7d1f4d36ea1633e0a9e36f3f50921979b-1 c=1 printf h >> effects","run-after-f8b3ff5690c10a03522446ac76055ec504404259087e1ace302db386044e167e-1 c=1 printf j >> effects","run-after-793745d11629652755ce91c96f19451d2fd6c9253741aad7eefb4c2c12f09862-1 c=1 printf e >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf b >> effects","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf c >> effects","run-after-5930c94e0d8891b846a84ca2e9f183cef3f887856009d7da1affca0655ca3464-1 c=1 printf f >> effects","run-after-31801d774fdfd3f2b69f67e696cfff9d783a4eeee6f769a6f7464f73132ccfa9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-80efdbcc05190ffef92ffe29559201e045d81c013505c97b9a012c568955b726-1 c=1 printf i >> effects","run-after-db2e5b41644e936c3a061f42c63a3d86e58c3320e293aeefdb6083bf4cfdcda3-1 c=1 printf y >> effects","run-after-3a4ae68314c51ac46816ed0ace6fa25a1714196c37de5cbb7f13339a06bc621d-1 c=1 printf X >> effects","run-after-02d7a6df2ca6022a4a04be62387ebcbbad3b3adb1e1382383c380b5b5bf863d7-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-26 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2474} +{"s":"EQ6expr","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8YT09JSRKFKQEWPREFXA\",\"runId\":\"01M53H8YT09JSRKFKQEWPREFXA\",\"socketPath\":\"/tmp/relayflowd-c918be3e605d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1820} +{"s":"EQ6expr","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8Z2PJMH8NKBMBZ8RS2K7\",\"runId\":\"01M53H8Z2PJMH8NKBMBZ8RS2K7\",\"socketPath\":\"/tmp/relayflowd-bd758053b29e.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1840} +{"s":"EQ6expr","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H8ZQVJY84AE8VFR8VVSDN\",\"runId\":\"01M53H8ZQVJY84AE8VFR8VVSDN\",\"socketPath\":\"/tmp/relayflowd-9bdd5a3b03e4.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.3; printf C >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1907} +{"s":"EQ6expr","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H90GWN1M7BSFZ925W7D43\",\"runId\":\"01M53H90GWN1M7BSFZ925W7D43\",\"socketPath\":\"/tmp/relayflowd-714bebac583d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1974} +{"s":"EQ6expr","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H90VJXS42T3WX0N221H64\",\"runId\":\"01M53H90VJXS42T3WX0N221H64\",\"socketPath\":\"/tmp/relayflowd-404ca1f8ddca.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.1; printf B >> effects","run-1 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2073} +{"s":"EQ6expr","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BACX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H91KC5RWBZHH5NFZ4TJ8V\",\"runId\":\"01M53H91KC5RWBZHH5NFZ4TJ8V\",\"socketPath\":\"/tmp/relayflowd-e32990baae46.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BACXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf A >> effects","run-3 c=1 sleep 0.3; printf C >> effects","run-2 c=1 sleep 0.1; printf B >> effects","run-after-f2f25a43d095012b1401192411775ae0d83e26fd7aabb6add8b49db34db7d765-1 c=1 printf X >> effects","run-after-b99aafbc3f01763b118691e219a345ce36c250fb2c15f7a43b4b33c4473aaeeb-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2214} +{"s":"EQ7record","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H92FZ0JW1GMSRC56YQF76\",\"runId\":\"01M53H92FZ0JW1GMSRC56YQF76\",\"socketPath\":\"/tmp/relayflowd-91072f33d569.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1676} +{"s":"EQ7record","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H92WDB8A8W69VN6VSSNC9\",\"runId\":\"01M53H92WDB8A8W69VN6VSSNC9\",\"socketPath\":\"/tmp/relayflowd-e0d8d6dbb23c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1698} +{"s":"EQ7record","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H93RAGHK6WM56EZGPX1T2\",\"runId\":\"01M53H93RAGHK6WM56EZGPX1T2\",\"socketPath\":\"/tmp/relayflowd-82f5207d556e.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1793} +{"s":"EQ7record","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H943AJV6MR2XK3Q6R43MY\",\"runId\":\"01M53H943AJV6MR2XK3Q6R43MY\",\"socketPath\":\"/tmp/relayflowd-c2e06d3a1437.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1851} +{"s":"EQ7record","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H94H7JMK23NJX9B21T7M6\",\"runId\":\"01M53H94H7JMK23NJX9B21T7M6\",\"socketPath\":\"/tmp/relayflowd-dee5d94c95e9.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1974} +{"s":"EQ8throw","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r9finals7/EQ8throw/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53H95XB5S3P6WFH608BZJT2\",\"socketPath\":\"/tmp/relayflowd-359896646074.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":880} +{"s":"EQ8throw","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r9finals7/EQ8throw/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53H96GTWKATZ6TVNP0VRVS6\",\"socketPath\":\"/tmp/relayflowd-57dc3cd63888.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":912} +{"s":"EQ7record","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"BR3X","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H95F46A2TYJHVQEZMF03T\",\"runId\":\"01M53H95F46A2TYJHVQEZMF03T\",\"socketPath\":\"/tmp/relayflowd-c14ff8e35aa7.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"BR3XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; exit 3","run-2 c=1 sleep 0.1; printf B","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 printf B >> effects","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 printf R3 >> effects","run-after-db1fac25e8ad4db0ad97b74cccbc4436dedaac80fed26e7acc72a57f775076b7-1 c=1 printf X >> effects","run-after-68986922249520ce74bdedf4b7211a326e50a5affcf697e31eef311049fcd19b-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2126} +{"s":"EQ8throw","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r9finals7/EQ8throw/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53H96T349Q6PWFNZZMJT7GC\",\"socketPath\":\"/tmp/relayflowd-c9b9087f4217.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":880} +{"s":"EQ8throw","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r9finals7/EQ8throw/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53H97CVS0C85H21GF117XJR\",\"socketPath\":\"/tmp/relayflowd-bb99886d38f0.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":893} +{"s":"EQ8throw","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r9finals7/EQ8throw/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53H97JJ593TNWW61JJFHSA5\",\"socketPath\":\"/tmp/relayflowd-cc68ee63bfa3.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":872} +{"s":"EQ8throw","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"B","effects1":"B","out1":"FAILED [protocol_error] relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: Cannot read properties of undefined (reading 'z')\"}],\"path\":\"/w/runs/r9finals7/EQ8throw/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53H97NKH5RH0J6ZMAQS0HZ7\",\"socketPath\":\"/tmp/relayflowd-a3db45852289.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.2; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":874} +{"s":"EQ9nested","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H98DRTHHGHWT8YHR8W8AQ\",\"runId\":\"01M53H98DRTHHGHWT8YHR8W8AQ\",\"socketPath\":\"/tmp/relayflowd-a9c0ca5b394a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YabXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1923} +{"s":"EQ9nested","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H98906M1KZ9DM1FESG4M5\",\"runId\":\"01M53H98906M1KZ9DM1FESG4M5\",\"socketPath\":\"/tmp/relayflowd-d52080038890.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YbaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.3; printf A1","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2234} +{"s":"EQ9nested","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H98H7A7RNEP3N0TSCY6R0\",\"runId\":\"01M53H98H7A7RNEP3N0TSCY6R0\",\"socketPath\":\"/tmp/relayflowd-81200725a2e7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1999} +{"s":"EQ9nested","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9ADTDEP2K6THKPED80G4\",\"runId\":\"01M53H9ADTDEP2K6THKPED80G4\",\"socketPath\":\"/tmp/relayflowd-3a93abad9490.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2287} +{"s":"EQ9nested","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9AJ6D1B3HV7489RC9R0P\",\"runId\":\"01M53H9AJ6D1B3HV7489RC9R0P\",\"socketPath\":\"/tmp/relayflowd-16f1fba7d234.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2284} +{"s":"EQ9nested","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"a","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9AJEHC5SG96NBHNED2C5\",\"runId\":\"01M53H9AJEHC5SG96NBHNED2C5\",\"socketPath\":\"/tmp/relayflowd-b666144b7b91.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"aYbXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A1","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf A2","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf a >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf b >> effects","run-after-eb54a34c99f0b39c2797c3f88eefc72cdb012022fb05220e24d5e06dee441138-1 c=1 printf X >> effects","run-after-6c93494ed8a13b90512674bc92a4b62141d7d36acd947f90b13bf8ff5ffe1503-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2433} +{"s":"PL1r5","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9CHZCQNJ0SD5R36TNS5X\",\"runId\":\"01M53H9CHZCQNJ0SD5R36TNS5X\",\"socketPath\":\"/tmp/relayflowd-212f716e7cb4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2442} +{"s":"PL1r5","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9CPE3SAKX3RWXTPNN8J4\",\"runId\":\"01M53H9CPE3SAKX3RWXTPNN8J4\",\"socketPath\":\"/tmp/relayflowd-bfc05a7d3bef.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2463} +{"s":"PL1r5","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9CW4DZRPGEQ5GN0MS3Q0\",\"runId\":\"01M53H9CW4DZRPGEQ5GN0MS3Q0\",\"socketPath\":\"/tmp/relayflowd-1e8fb2b7745f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2569} +{"s":"PL1r5","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9EWXCWTC5DK9J6R0TFW0\",\"runId\":\"01M53H9EWXCWTC5DK9J6R0TFW0\",\"socketPath\":\"/tmp/relayflowd-a437352ba04b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2603} +{"s":"PL1r5","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9F115VJ68PC5G1JYWWEF\",\"runId\":\"01M53H9F115VJ68PC5G1JYWWEF\",\"socketPath\":\"/tmp/relayflowd-f9751d807bc3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2707} +{"s":"PL1r5","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9FAYYC7GJ9RH83DFNYRQ\",\"runId\":\"01M53H9FAYYC7GJ9RH83DFNYRQ\",\"socketPath\":\"/tmp/relayflowd-0865dbe6a45e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2845} +{"s":"PL2then","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9HFDFEDATKSCNB6FMAD7\",\"runId\":\"01M53H9HFDFEDATKSCNB6FMAD7\",\"socketPath\":\"/tmp/relayflowd-087929f13b05.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2386} +{"s":"PL2then","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9HNNHRD3NG739VCQ56K0\",\"runId\":\"01M53H9HNNHRD3NG739VCQ56K0\",\"socketPath\":\"/tmp/relayflowd-080e5591ed6a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2427} +{"s":"PL2then","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9J3VVYMWE8EWN36N6BDT\",\"runId\":\"01M53H9J3VVYMWE8EWN36N6BDT\",\"socketPath\":\"/tmp/relayflowd-4b8a76ad8971.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2515} +{"s":"PL2then","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9KRBJ06H53BPQSK9XSYJ\",\"runId\":\"01M53H9KRBJ06H53BPQSK9XSYJ\",\"socketPath\":\"/tmp/relayflowd-21fe36563f56.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2515} +{"s":"PL2then","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9M1BNE16T67AHEKR802S\",\"runId\":\"01M53H9M1BNE16T67AHEKR802S\",\"socketPath\":\"/tmp/relayflowd-9f544b82a0b2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2656} +{"s":"PL2then","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9MK7F49BJHP1MG2HJYRJ\",\"runId\":\"01M53H9MK7F49BJHP1MG2HJYRJ\",\"socketPath\":\"/tmp/relayflowd-a5de8db7179b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2807} +{"s":"PL3sub","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9P5KR62P344JTA60T8BJ\",\"runId\":\"01M53H9P5KR62P344JTA60T8BJ\",\"socketPath\":\"/tmp/relayflowd-b04862f6e7af.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2242} +{"s":"PL3sub","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9PMYWVHFT7SRSBGKAP05\",\"runId\":\"01M53H9PMYWVHFT7SRSBGKAP05\",\"socketPath\":\"/tmp/relayflowd-10cba1585cd4.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2338} +{"s":"PL3sub","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9Q9WDP8D7G776V37221W\",\"runId\":\"01M53H9Q9WDP8D7G776V37221W\",\"socketPath\":\"/tmp/relayflowd-2cc974fe7d91.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2441} +{"s":"PL3sub","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9RCFZ2V1ZTR8B1P5P6ZX\",\"runId\":\"01M53H9RCFZ2V1ZTR8B1P5P6ZX\",\"socketPath\":\"/tmp/relayflowd-7c8337da1086.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2514} +{"s":"PL3sub","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9RXZJDZMCHHMTE8Z97GA\",\"runId\":\"01M53H9RXZJDZMCHHMTE8Z97GA\",\"socketPath\":\"/tmp/relayflowd-d225745185db.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2648} +{"s":"PL3sub","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"pl3sub\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl3sub\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9SR5N1YABFYC74WKRM5Q\",\"runId\":\"01M53H9SR5N1YABFYC74WKRM5Q\",\"socketPath\":\"/tmp/relayflowd-e29a2b87abca.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2824} +{"s":"PL4ctor","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9TW294WN9XV1EYJ36SAQ\",\"runId\":\"01M53H9TW294WN9XV1EYJ36SAQ\",\"socketPath\":\"/tmp/relayflowd-6ee3bc1d0f00.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2310} +{"s":"PL4ctor","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9VGZ5YDCNXNFS6S1Z00R\",\"runId\":\"01M53H9VGZ5YDCNXNFS6S1Z00R\",\"socketPath\":\"/tmp/relayflowd-29b46a3b47f5.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2424} +{"s":"PL4ctor","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9WEZBBRDEV0P5FH1EZS0\",\"runId\":\"01M53H9WEZBBRDEV0P5FH1EZS0\",\"socketPath\":\"/tmp/relayflowd-8feeead5c9af.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2486} +{"s":"PL4ctor","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9X5649SS02GMGEAC7K8H\",\"runId\":\"01M53H9X5649SS02GMGEAC7K8H\",\"socketPath\":\"/tmp/relayflowd-53156ed61f49.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2546} +{"s":"PL4ctor","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9XYJDMVG780BY8Z5J031\",\"runId\":\"01M53H9XYJDMVG780BY8Z5J031\",\"socketPath\":\"/tmp/relayflowd-f451e8cbccad.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2699} +{"s":"PL4ctor","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":1,"out":"4ctor\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl4ctor\\\" returned with unawaited steps: run-2 (f.run), run-3 (f.run), run-4 (f.run), run-5 (f.run), run-6 (f.run), run-7 (f.run)\"}],\"rootRunId\":\"01M53H9YWMCY2B1KWJRS7NARQW\",\"runId\":\"01M53H9YWMCY2B1KWJRS7NARQW\",\"socketPath\":\"/tmp/relayflowd-0cbdf66fcb54.sock\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2821} +{"s":"PL5species","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53H9ZM57GRBXZ2NAQ4TBWP8\",\"runId\":\"01M53H9ZM57GRBXZ2NAQ4TBWP8\",\"socketPath\":\"/tmp/relayflowd-19d73bd22ffa.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2345} +{"s":"PL5species","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA0G8STKZFM3EMHHSHQNR\",\"runId\":\"01M53HA0G8STKZFM3EMHHSHQNR\",\"socketPath\":\"/tmp/relayflowd-5c5acb93392c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2368} +{"s":"PL5species","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA1M8KWP580EP4SE0547G\",\"runId\":\"01M53HA1M8KWP580EP4SE0547G\",\"socketPath\":\"/tmp/relayflowd-5ca8b0811a24.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2456} +{"s":"PL5species","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA1WXWD25VVTQK2XGJ6W0\",\"runId\":\"01M53HA1WXWD25VVTQK2XGJ6W0\",\"socketPath\":\"/tmp/relayflowd-f6b40a768c77.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2590} +{"s":"PL5species","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA2TMC1FXMHYBGCYFNYES\",\"runId\":\"01M53HA2TMC1FXMHYBGCYFNYES\",\"socketPath\":\"/tmp/relayflowd-22fa624c9d17.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2698} +{"s":"SEC7","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA4E8DBZZERKA0VP747X8\",\"runId\":\"01M53HA4E8DBZZERKA0VP747X8\",\"socketPath\":\"/tmp/relayflowd-4aec22a724fd.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-0/un","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-0/gr","run-3 c=1 sleep 0.1; printf G","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-0/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-0/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-0/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1678} +{"s":"PL5species","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA40RC3DFTMKMEFHXT946\",\"runId\":\"01M53HA40RC3DFTMKMEFHXT946\",\"socketPath\":\"/tmp/relayflowd-c74db0c48219.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2789} +{"s":"SEC7","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA5F8F7VE9WZJPY9BKQ0Q\",\"runId\":\"01M53HA5F8F7VE9WZJPY9BKQ0Q\",\"socketPath\":\"/tmp/relayflowd-27fb8d84bb24.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-1/un","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-1/gr","run-3 c=1 sleep 0.1; printf G","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-1/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-1/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-1/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1737} +{"s":"SEC7","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA62D0SW2TV7X2P26CX57\",\"runId\":\"01M53HA62D0SW2TV7X2P26CX57\",\"socketPath\":\"/tmp/relayflowd-d1f9ecccc7b3.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-2/gr","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-2/un","run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-2/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-2/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-2/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1819} +{"s":"SEC7","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA6REGR6QS6JN3VWH2NCD\",\"runId\":\"01M53HA6REGR6QS6JN3VWH2NCD\",\"socketPath\":\"/tmp/relayflowd-d37ca1d8689c.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-3/un","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-3/gr","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-3/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-3/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-3/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1875} +{"s":"SEC7","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA75BC4XX6ZADN39D5W2Y\",\"runId\":\"01M53HA75BC4XX6ZADN39D5W2Y\",\"socketPath\":\"/tmp/relayflowd-4b3c91a2581f.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-4/gr","run-3 c=1 sleep 0.1; printf G","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-4/un","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-4/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-4/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-4/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":1918} +{"s":"SEC7","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA7V4WSQRTC56C80SYDN8\",\"runId\":\"01M53HA7V4WSQRTC56C80SYDN8\",\"socketPath\":\"/tmp/relayflowd-9e83f103fd05.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-5/gr","run-3 c=1 sleep 0.1; printf G","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-5/un","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-5/gr","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-5/un","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7/head-head-5/la","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:LEAK ungranted2:LEAK later:LEAK","ok":false,"ms":2120} +{"s":"PL7mid","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA8J77VMQV4BVFJVV8TNA\",\"runId\":\"01M53HA8J77VMQV4BVFJVV8TNA\",\"socketPath\":\"/tmp/relayflowd-1fc33b0dcb55.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7mid/head-head-0/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2411} +{"s":"PL7mid","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA90VC8RV5MJGM8JRAD71\",\"runId\":\"01M53HA90VC8RV5MJGM8JRAD71\",\"socketPath\":\"/tmp/relayflowd-c080c158712c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7mid/head-head-1/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2472} +{"s":"PL7mid","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HA9XFF5ZRQEEJD3D5NF7G\",\"runId\":\"01M53HA9XFF5ZRQEEJD3D5NF7G\",\"socketPath\":\"/tmp/relayflowd-745a24ed6726.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7mid/head-head-2/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2587} +{"s":"PL7mid","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAAXK2743AZVWDYFA26TX\",\"runId\":\"01M53HAAXK2743AZVWDYFA26TX\",\"socketPath\":\"/tmp/relayflowd-9e09d8534398.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7mid/head-head-3/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2604} +{"s":"PL7mid","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HABERYWHQG57CRZJF0K7T\",\"runId\":\"01M53HABERYWHQG57CRZJF0K7T\",\"socketPath\":\"/tmp/relayflowd-7dea3dd5f21a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7mid/head-head-4/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2766} +{"s":"PL7mid","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HACE2MXBGEA8JBYQQS4FS\",\"runId\":\"01M53HACE2MXBGEA8JBYQQS4FS\",\"socketPath\":\"/tmp/relayflowd-7562fde12c8a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7mid/head-head-5/wstart; sleep 0.3; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2893} +{"s":"PL7neutral","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HADFMGMHZKA9GVV4YFXYG\",\"runId\":\"01M53HADFMGMHZKA9GVV4YFXYG\",\"socketPath\":\"/tmp/relayflowd-fe23b30b3111.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7neutral/head-head-0/wstart; sleep 0.3; prin","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2445} +{"s":"PL7neutral","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAE54KHVDPKEXKKNR7V3F\",\"runId\":\"01M53HAE54KHVDPKEXKKNR7V3F\",\"socketPath\":\"/tmp/relayflowd-bc575e9deae0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7neutral/head-head-1/wstart; sleep 0.3; prin","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2478} +{"s":"PL7neutral","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAF8BCNX05KWB4WJX99AB\",\"runId\":\"01M53HAF8BCNX05KWB4WJX99AB\",\"socketPath\":\"/tmp/relayflowd-f84bf0e6923a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7neutral/head-head-2/wstart; sleep 0.3; prin","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2508} +{"s":"PL7neutral","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAFW222Q16JZPTEJXDZ5K\",\"runId\":\"01M53HAFW222Q16JZPTEJXDZ5K\",\"socketPath\":\"/tmp/relayflowd-bca163886e45.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7neutral/head-head-3/wstart; sleep 0.3; prin","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2738} +{"s":"PL7neutral","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAGJSDXHE5MQK238298NV\",\"runId\":\"01M53HAGJSDXHE5MQK238298NV\",\"socketPath\":\"/tmp/relayflowd-21a41b0a5251.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7neutral/head-head-4/wstart; sleep 0.3; prin","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2806} +{"s":"PL7neutral","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAHPTZKFKKHV4SRQHAHVN\",\"runId\":\"01M53HAHPTZKFKKHV4SRQHAHVN\",\"socketPath\":\"/tmp/relayflowd-7c3249136fe0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 touch /w/runs/r9finals7/PL7neutral/head-head-5/wstart; sleep 0.3; prin","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2885} +{"s":"PL6child","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAJH9W2QCERSKEMMQYEH3\",\"runId\":\"01M53HAJH9W2QCERSKEMMQYEH3\",\"socketPath\":\"/tmp/relayflowd-af84119dc9b0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2332} +{"s":"PL6child","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAK9G6HNPKX1MJ3R7JQ8V\",\"runId\":\"01M53HAK9G6HNPKX1MJ3R7JQ8V\",\"socketPath\":\"/tmp/relayflowd-0aad5c93efdc.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2392} +{"s":"PL6child","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAMJ9JBKG7NJGTN26D9Z0\",\"runId\":\"01M53HAMJ9JBKG7NJGTN26D9Z0\",\"socketPath\":\"/tmp/relayflowd-7b2835af70e1.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2501} +{"s":"PL6child","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAMV901EP0HR5FPGED8K4\",\"runId\":\"01M53HAMV901EP0HR5FPGED8K4\",\"socketPath\":\"/tmp/relayflowd-b39146197d3c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2553} +{"s":"PL6child","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HANMYWF5ZQB0QRZ6WFF19\",\"runId\":\"01M53HANMYWF5ZQB0QRZ6WFF19\",\"socketPath\":\"/tmp/relayflowd-2e6f0921d969.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2652} +{"s":"PL6late","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAQADJYM3HPEJXASBJXSM\",\"runId\":\"01M53HAQADJYM3HPEJXASBJXSM\",\"socketPath\":\"/tmp/relayflowd-16f9afb1e74d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2350} +{"s":"PL6child","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAPZTC0F13CG0P1AWVKY6\",\"runId\":\"01M53HAPZTC0F13CG0P1AWVKY6\",\"socketPath\":\"/tmp/relayflowd-1409da1c8f09.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2809} +{"s":"PL6late","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAR7YWRMMN5ZH8D123NRN\",\"runId\":\"01M53HAR7YWRMMN5ZH8D123NRN\",\"socketPath\":\"/tmp/relayflowd-340ec8285887.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2419} +{"s":"PL6late","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HASKSA595HS8A6XKVV4SA\",\"runId\":\"01M53HASKSA595HS8A6XKVV4SA\",\"socketPath\":\"/tmp/relayflowd-80f001ce60a4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2457} +{"s":"PL6late","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HASPWGCHZCX6JSEFJ0R5V\",\"runId\":\"01M53HASPWGCHZCX6JSEFJ0R5V\",\"socketPath\":\"/tmp/relayflowd-87d626ebac19.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2538} +{"s":"PL6late","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HATJW240W76Z63H9ND2ZM\",\"runId\":\"01M53HATJW240W76Z63H9ND2ZM\",\"socketPath\":\"/tmp/relayflowd-294eb0a98b6b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2762} +{"s":"SEC7m","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAW6KNEHCWYSVTQWWK11V\",\"runId\":\"01M53HAW6KNEHCWYSVTQWWK11V\",\"socketPath\":\"/tmp/relayflowd-cba9b9106fe4.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-0/u","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-0/g","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-0/g","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-0/u","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-0/l","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1872} +{"s":"PL6late","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAW0A6QJFMBCSA6X4Y1ZY\",\"runId\":\"01M53HAW0A6QJFMBCSA6X4Y1ZY\",\"socketPath\":\"/tmp/relayflowd-89fe9cc47c00.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2944} +{"s":"SEC7m","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAXDRSF0WMP8FNVH0M8GC\",\"runId\":\"01M53HAXDRSF0WMP8FNVH0M8GC\",\"socketPath\":\"/tmp/relayflowd-be28d8abbc8a.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-1/u","run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-1/g","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-1/g","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-1/u","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-1/l","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1910} +{"s":"SEC7m","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAY3337RNMCNPNJTFW9BY\",\"runId\":\"01M53HAY3337RNMCNPNJTFW9BY\",\"socketPath\":\"/tmp/relayflowd-667df6a21b93.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-4 c=1 sleep 0.15; printf U","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-2/u","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-2/g","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-2/g","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-2/u","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-2/l","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1894} +{"s":"SEC7m","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAYYDCY2P7FW3AGXR8BPE\",\"runId\":\"01M53HAYYDCY2P7FW3AGXR8BPE\",\"socketPath\":\"/tmp/relayflowd-e8258e72d981.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-4 c=1 sleep 0.15; printf U","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-3/g","run-3 c=1 sleep 0.1; printf G","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-3/u","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-3/g","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-3/u","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-3/l","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":1988} +{"s":"SEC7m","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAZ7E3QXRGRT656WVW51A\",\"runId\":\"01M53HAZ7E3QXRGRT656WVW51A\",\"socketPath\":\"/tmp/relayflowd-0022372a2236.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-4/u","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-4/g","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-4/g","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-4/u","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-4/l","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":2063} +{"s":"SEC7miss","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r9finals7/SEC7miss/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53HB0Y0B3RM2HDNRMEYNA3B\",\"socketPath\":\"/tmp/relayflowd-916b10791659.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":695} +{"s":"SEC7miss","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r9finals7/SEC7miss/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53HB18FKD482VJ06KQP9VGX\",\"socketPath\":\"/tmp/relayflowd-56a0ad45ce54.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":670} +{"s":"SEC7m","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"","code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HAZV3EPATW874PQ1XEWHK\",\"runId\":\"01M53HAZV3EPATW874PQ1XEWHK\",\"socketPath\":\"/tmp/relayflowd-219ed1339f24.sock\",\"completedSteps\":9,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"Z","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-3 c=1 sleep 0.1; printf G","run-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-5/g","run-2 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-5/u","run-4 c=1 sleep 0.15; printf U","run-after-e27a70cca008b65a57071cd8901f67cb1453ae3fa6b9a3bda919c85c2385e15d-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-5/g","run-after-e45db452087a68dd63e9613a3b8c543a3c8cb5cd00e5eddb3078acc4e354476b-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-5/u","run-after-8cc3dceac19c0b44ea8753b01d6e5693e7cfe06455e6fb1183cb655dbf0a0a04-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals7/SEC7m/head-head-5/l","run-after-5c70395db0baca413448b6d9f4e1ce5679306fc392675c6f919c31d2f2c546e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-9 c=1 :"],"letterDup":false,"replay":false,"sec":"granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset","ok":true,"ms":2166} +{"s":"SEC7miss","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r9finals7/SEC7miss/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53HB1FQ91Y8QCSQBJEKHDYZ\",\"socketPath\":\"/tmp/relayflowd-32dc55cc4e47.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":582} +{"s":"SEC7miss","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r9finals7/SEC7miss/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53HB1X4BWT46SA1RD9S8FRZ\",\"socketPath\":\"/tmp/relayflowd-e93acaa3eae1.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":650} +{"s":"SEC7miss","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r9finals7/SEC7miss/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53HB21661AMWPHDMAZQG0NC\",\"socketPath\":\"/tmp/relayflowd-160f6bc7b439.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":629} +{"s":"SEC7miss","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [protocol_error] relayflowd could not complete the run request: step secret \"R7_TOK\" is not available to this run\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the run request: step secret \\\"R7_TOK\\\" is not available to this run\"}],\"path\":\"/w/runs/r9finals7/SEC7miss/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53HB22WGX361QGEGX7ZM6NZ\",\"socketPath\":\"/tmp/relayflowd-2a9a9582e669.sock\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":[],"letterDup":false,"replay":false,"sec":"granted:missing granted2:missing ungranted:missing ungranted2:missing later:missing","ok":true,"ms":588} +SUMMARY HY1 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=PBZ +SUMMARY HY1s head>head ok=6/6 replay=0 fresh=6 mode=serial codes=0 effects=PB +SUMMARY HY2 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=ABZ +SUMMARY PAR1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaZ +SUMMARY PAR2 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=baZ +SUMMARY EQ1twice head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=aaXZ +SUMMARY EQ2ret head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=abZ +SUMMARY EQ3midret head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=BARXZ +SUMMARY EQ4fail head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects=FB +SUMMARY EQ5wide head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=gdabhejfkcilXZ|adgbehjcfkilXZ|adgehjbckfilXZ|agdhjbefckilXZ|dgabhjefkcilXZ|gadbehjfckilXZ +SUMMARY EQ5stall head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=adgbehjfYyciXZ|agdhbejcfYyiXZ|agdhebjfciYyXZ|agdebjhfciYyXZ|gadbehjfciYyXZ|adghjebcfiYyXZ +SUMMARY EQ6expr head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=BACXZ +SUMMARY EQ7record head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=BR3XZ +SUMMARY EQ8throw head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects=B +SUMMARY EQ9nested head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=YabXZ|YbaXZ|aYbXZ +SUMMARY PL1r5 head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL2then head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL3sub head>head ok=0/6 replay=0 fresh=0 mode=serial codes=1 effects=abcXZ +SUMMARY PL4ctor head>head ok=0/6 replay=0 fresh=0 mode=serial codes=1 effects=abcXZ +SUMMARY PL5species head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY SEC7 head>head ok=0/6 replay=0 fresh=0 mode=parallel codes=0 effects=Z +SUMMARY PL7mid head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL7neutral head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL6child head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL6late head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY SEC7m head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=Z +SUMMARY SEC7miss head>head ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects= diff --git a/evidence/native-parallel-review9/final-s8.log b/evidence/native-parallel-review9/final-s8.log new file mode 100644 index 000000000..c9e2c80c8 --- /dev/null +++ b/evidence/native-parallel-review9/final-s8.log @@ -0,0 +1,378 @@ +{"s":"PL8r","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":761,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HB72RS74X1C0SXH8D91DG\",\"runId\":\"01M53HB72RS74X1C0SXH8D91DG\",\"socketPath\":\"/tmp/relayflowd-f9c5e7e7542e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2615} +{"s":"PL8r","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":752,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HB72K1AVN3JM40FHB6X95\",\"runId\":\"01M53HB72K1AVN3JM40FHB6X95\",\"socketPath\":\"/tmp/relayflowd-1aa93a4681fe.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2668} +{"s":"PL8r","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":742,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HB72K48V9CFXSCZEAM4SM\",\"runId\":\"01M53HB72K48V9CFXSCZEAM4SM\",\"socketPath\":\"/tmp/relayflowd-39ef3a4229d6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2715} +{"s":"PL8r","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":732,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HB9HCSZEMDNYZS0FFHW5Z\",\"runId\":\"01M53HB9HCSZEMDNYZS0FFHW5Z\",\"socketPath\":\"/tmp/relayflowd-d48f3eb87380.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2701} +{"s":"PL8r","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":700,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HB9K0S7Z2A9R1PEDGQJMB\",\"runId\":\"01M53HB9K0S7Z2A9R1PEDGQJMB\",\"socketPath\":\"/tmp/relayflowd-3a0b337c4bcf.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2721} +{"s":"PL8r","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":712,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HB9M5QSYFMEQB0GP6B3ZN\",\"runId\":\"01M53HB9M5QSYFMEQB0GP6B3ZN\",\"socketPath\":\"/tmp/relayflowd-87bb700ae2a7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2803} +{"s":"PL8r","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":543,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBC08RXPRQ66MR9T57T0N\",\"runId\":\"01M53HBC08RXPRQ66MR9T57T0N\",\"socketPath\":\"/tmp/relayflowd-b5a3fc7c8523.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2021} +{"s":"PL8r","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":557,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBC2H8E2WAZKBGMQ6FF0M\",\"runId\":\"01M53HBC2H8E2WAZKBGMQ6FF0M\",\"socketPath\":\"/tmp/relayflowd-6777139df301.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2072} +{"s":"PL8r","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":626,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBC65WEHVC3YQ9GAF8QPZ\",\"runId\":\"01M53HBC65WEHVC3YQ9GAF8QPZ\",\"socketPath\":\"/tmp/relayflowd-9de7af80d38b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2218} +{"s":"PL8r","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":517,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBE11SCPMG4M7HSJQSHPP\",\"runId\":\"01M53HBE11SCPMG4M7HSJQSHPP\",\"socketPath\":\"/tmp/relayflowd-e97447dd103b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2275} +{"s":"PL8r","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":537,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBE3DGNPXWCHAZWWR1T4W\",\"runId\":\"01M53HBE3DGNPXWCHAZWWR1T4W\",\"socketPath\":\"/tmp/relayflowd-220755c870f0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2351} +{"s":"PL8r","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":545,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBEBPJCQN7T5GFZRNC1HK\",\"runId\":\"01M53HBEBPJCQN7T5GFZRNC1HK\",\"socketPath\":\"/tmp/relayflowd-9fd94c61df3f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2451} +{"s":"PL8rplain","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":691,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBGBQAS2BJ7J09ANF9MAT\",\"runId\":\"01M53HBGBQAS2BJ7J09ANF9MAT\",\"socketPath\":\"/tmp/relayflowd-dce191903211.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2295} +{"s":"PL8rplain","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":751,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBGJFFBBY7651X8CGMYRS\",\"runId\":\"01M53HBGJFFBBY7651X8CGMYRS\",\"socketPath\":\"/tmp/relayflowd-0a7201e74c1b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2443} +{"s":"PL8rplain","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":703,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBGY35DKSPAVMZB2M0F3M\",\"runId\":\"01M53HBGY35DKSPAVMZB2M0F3M\",\"socketPath\":\"/tmp/relayflowd-9e24d880b275.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2468} +{"s":"PL8rplain","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":702,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBJM28RJNTCJNAJCMZN24\",\"runId\":\"01M53HBJM28RJNTCJNAJCMZN24\",\"socketPath\":\"/tmp/relayflowd-c3c9ca01e6e7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2595} +{"s":"PL8rplain","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":717,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBJYDJKGQYBH5PPV3S631\",\"runId\":\"01M53HBJYDJKGQYBH5PPV3S631\",\"socketPath\":\"/tmp/relayflowd-a4edea0e16d4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2679} +{"s":"PL8rplain","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":698,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBKB9X8ECH60HFZ7KWGW0\",\"runId\":\"01M53HBKB9X8ECH60HFZ7KWGW0\",\"socketPath\":\"/tmp/relayflowd-c521572e484b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2775} +{"s":"PL8rplain","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":491,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBMZAB8K791V1SQW4Z75C\",\"runId\":\"01M53HBMZAB8K791V1SQW4Z75C\",\"socketPath\":\"/tmp/relayflowd-535db9b0798d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1936} +{"s":"PL8rplain","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":492,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBNDCA55NGGVRF155RVTW\",\"runId\":\"01M53HBNDCA55NGGVRF155RVTW\",\"socketPath\":\"/tmp/relayflowd-05573e73c2a2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2004} +{"s":"PL8rplain","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":508,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBNW60TNT81E2G3ZEDH6C\",\"runId\":\"01M53HBNW60TNT81E2G3ZEDH6C\",\"socketPath\":\"/tmp/relayflowd-ce1dfd2a62a9.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2077} +{"s":"PL8rplain","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":548,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBPVQW1EWYY9N1NB240RY\",\"runId\":\"01M53HBPVQW1EWYY9N1NB240RY\",\"socketPath\":\"/tmp/relayflowd-f4c5ad03999e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2229} +{"s":"PL8rplain","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":550,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBQB7K15XCF8XM8A6GS0Y\",\"runId\":\"01M53HBQB7K15XCF8XM8A6GS0Y\",\"socketPath\":\"/tmp/relayflowd-1c611d55b51a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2327} +{"s":"PL8hide","start":"head","resume":"head","i":0,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/PL8hide/head-head-0/chain.flow.ts\",\"rootRunId\":\"01M53HBS6R31JJA9E5B0NGN9HJ\",\"socketPath\":\"/tmp/relayflowd-cff542b8b634.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1228} +{"s":"PL8rplain","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":524,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBQWN475DRWNPYB54E3B9\",\"runId\":\"01M53HBQWN475DRWNPYB54E3B9\",\"socketPath\":\"/tmp/relayflowd-abb675887f0e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2424} +{"s":"PL8hide","start":"head","resume":"head","i":1,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/PL8hide/head-head-1/chain.flow.ts\",\"rootRunId\":\"01M53HBSS30HD6F1PF75KDT4B9\",\"socketPath\":\"/tmp/relayflowd-8a6c044b4348.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1210} +{"s":"PL8hide","start":"head","resume":"head","i":2,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/PL8hide/head-head-2/chain.flow.ts\",\"rootRunId\":\"01M53HBTD6GSFT33JSFTDRXG7K\",\"socketPath\":\"/tmp/relayflowd-f2249fbb170a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1213} +{"s":"PL8hide","start":"head","resume":"head","i":3,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/PL8hide/head-head-3/chain.flow.ts\",\"rootRunId\":\"01M53HBTENED5DJVSPDZ85BS7Q\",\"socketPath\":\"/tmp/relayflowd-b37ef8c3fca3.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1228} +{"s":"PL8hide","start":"head","resume":"head","i":4,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/PL8hide/head-head-4/chain.flow.ts\",\"rootRunId\":\"01M53HBTZ3WPD1EPZNF83D5136\",\"socketPath\":\"/tmp/relayflowd-b6f97acd9f82.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1230} +{"s":"PL8hide","start":"head","resume":"head","i":5,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/PL8hide/head-head-5/chain.flow.ts\",\"rootRunId\":\"01M53HBVJQ900BQ6HK41XMXS0A\",\"socketPath\":\"/tmp/relayflowd-3292b5b6a828.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1193} +{"s":"PL8hide","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":535,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBVF8HBRF93MVT43JWQ9K\",\"runId\":\"01M53HBVF8HBRF93MVT43JWQ9K\",\"socketPath\":\"/tmp/relayflowd-36d1dce055e7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1968} +{"s":"PL8hide","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":531,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBW0EDD52RQP1GADDJZA5\",\"runId\":\"01M53HBW0EDD52RQP1GADDJZA5\",\"socketPath\":\"/tmp/relayflowd-73949cb38af0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2032} +{"s":"PL8hide","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":571,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBWK8M0P3JN5XNDHHG0SE\",\"runId\":\"01M53HBWK8M0P3JN5XNDHHG0SE\",\"socketPath\":\"/tmp/relayflowd-5042d6eaf5f8.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2183} +{"s":"PL8hide","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":552,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBXD57SAHJBT0DFC3H29M\",\"runId\":\"01M53HBXD57SAHJBT0DFC3H29M\",\"socketPath\":\"/tmp/relayflowd-ef9dd1061989.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2240} +{"s":"PL8hide","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":522,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBY033GKB9NRKC7NPNW87\",\"runId\":\"01M53HBY033GKB9NRKC7NPNW87\",\"socketPath\":\"/tmp/relayflowd-7aa900971eda.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2295} +{"s":"PL8hide","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":563,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBYQG3HP7C77JMT9MA61S\",\"runId\":\"01M53HBYQG3HP7C77JMT9MA61S\",\"socketPath\":\"/tmp/relayflowd-41fe6001d0aa.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2479} +{"s":"PL8iter","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":699,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HBZRDDJBQ9ZWHMKRH04SB\",\"runId\":\"01M53HBZRDDJBQ9ZWHMKRH04SB\",\"socketPath\":\"/tmp/relayflowd-862b7162ec98.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2361} +{"s":"PL8iter","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":780,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC0CXFAPDBGTVSMPXY0QP\",\"runId\":\"01M53HC0CXFAPDBGTVSMPXY0QP\",\"socketPath\":\"/tmp/relayflowd-fcc828d30ffd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2468} +{"s":"PL8iter","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":683,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC1AMB533MTNB2HKQSWH9\",\"runId\":\"01M53HC1AMB533MTNB2HKQSWH9\",\"socketPath\":\"/tmp/relayflowd-a12c7fea6124.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2476} +{"s":"PL8iter","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":801,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC229G5YEV6NNH1WG2DKW\",\"runId\":\"01M53HC229G5YEV6NNH1WG2DKW\",\"socketPath\":\"/tmp/relayflowd-dd0ebac9e928.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2689} +{"s":"PL8iter","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":737,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC2TDWT529968A1WCZ1V3\",\"runId\":\"01M53HC2TDWT529968A1WCZ1V3\",\"socketPath\":\"/tmp/relayflowd-b980a774d767.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2743} +{"s":"PL8iter","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":741,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC3SRYF6NG5E150N0876Q\",\"runId\":\"01M53HC3SRYF6NG5E150N0876Q\",\"socketPath\":\"/tmp/relayflowd-4b454bce1293.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2900} +{"s":"PL8iter","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":537,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC4HYFV5CZBN39YJDM7WQ\",\"runId\":\"01M53HC4HYFV5CZBN39YJDM7WQ\",\"socketPath\":\"/tmp/relayflowd-e9a68b5dcb4a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2042} +{"s":"PL8iter","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":501,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC5AMNKS4MDA79J9QRRBX\",\"runId\":\"01M53HC5AMNKS4MDA79J9QRRBX\",\"socketPath\":\"/tmp/relayflowd-11e760ea83f6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2036} +{"s":"PL8iter","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":539,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC6D3DFM0FZ5HFKE0XQCQ\",\"runId\":\"01M53HC6D3DFM0FZ5HFKE0XQCQ\",\"socketPath\":\"/tmp/relayflowd-547586321b31.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2138} +{"s":"PL8iter","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":556,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC6GPCZH4DNN2MBJ0ZR4A\",\"runId\":\"01M53HC6GPCZH4DNN2MBJ0ZR4A\",\"socketPath\":\"/tmp/relayflowd-a43e9378ff9e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2238} +{"s":"PL8iter","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":547,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC7AYQTSKPS0HSDVDMQWP\",\"runId\":\"01M53HC7AYQTSKPS0HSDVDMQWP\",\"socketPath\":\"/tmp/relayflowd-4069c2936bc7.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2387} +{"s":"PL9dep","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":677,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC8T35GDDEEJBCQ7AQCP9\",\"runId\":\"01M53HC8T35GDDEEJBCQ7AQCP9\",\"socketPath\":\"/tmp/relayflowd-15a58cdda892.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2243} +{"s":"PL8iter","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":557,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC8G9QSB7DYCK0SVKX08H\",\"runId\":\"01M53HC8G9QSB7DYCK0SVKX08H\",\"socketPath\":\"/tmp/relayflowd-f95958428cbd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2514} +{"s":"PL9dep","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":618,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HC9SG5GRH25P6DZKRDZ4E\",\"runId\":\"01M53HC9SG5GRH25P6DZKRDZ4E\",\"socketPath\":\"/tmp/relayflowd-8623ba664563.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2294} +{"s":"PL9dep","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":661,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCB02Y48EETEW37N1VYA3\",\"runId\":\"01M53HCB02Y48EETEW37N1VYA3\",\"socketPath\":\"/tmp/relayflowd-05e57a17c8fc.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2366} +{"s":"PL9dep","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":632,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCB1TKAQ36YTXK2S8Y62S\",\"runId\":\"01M53HCB1TKAQ36YTXK2S8Y62S\",\"socketPath\":\"/tmp/relayflowd-427be805bc17.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2417} +{"s":"PL9dep","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":628,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCBZSJ3F45CYAAQRX71HG\",\"runId\":\"01M53HCBZSJ3F45CYAAQRX71HG\",\"socketPath\":\"/tmp/relayflowd-131a848466d0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2586} +{"s":"PL9dep","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":447,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCD7FC4W772MVBYWBNZA9\",\"runId\":\"01M53HCD7FC4W772MVBYWBNZA9\",\"socketPath\":\"/tmp/relayflowd-a7d3186733f2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1808} +{"s":"PL9dep","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":637,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCD9R9PB2E6A2MJ4NSCXK\",\"runId\":\"01M53HCD9R9PB2E6A2MJ4NSCXK\",\"socketPath\":\"/tmp/relayflowd-d9efea320d96.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2616} +{"s":"PL9dep","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":492,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCEB381W6N9PCNF8DGBND\",\"runId\":\"01M53HCEB381W6N9PCNF8DGBND\",\"socketPath\":\"/tmp/relayflowd-ebb33f81a281.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1960} +{"s":"PL9dep","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":480,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCF0A6WAF6F2Q9REXEAHG\",\"runId\":\"01M53HCF0A6WAF6F2Q9REXEAHG\",\"socketPath\":\"/tmp/relayflowd-2ee1cf05b101.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2016} +{"s":"PL9dep","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":515,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCFPYTDKF2K833MTXBC3Q\",\"runId\":\"01M53HCFPYTDKF2K833MTXBC3Q\",\"socketPath\":\"/tmp/relayflowd-9f78e0d5d71c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2148} +{"s":"PL9dep","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":481,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCG943JEGBVMWCWH9WY61\",\"runId\":\"01M53HCG943JEGBVMWCWH9WY61\",\"socketPath\":\"/tmp/relayflowd-8d9de5baf0a6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2224} +{"s":"PL9dep","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":476,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCGZES8ESVCZXKFYR6M9X\",\"runId\":\"01M53HCGZES8ESVCZXKFYR6M9X\",\"socketPath\":\"/tmp/relayflowd-6a948f4662f2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2319} +{"s":"PL9depsnap","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":621,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCJ17EQT8JQCPF2GJMJD6\",\"runId\":\"01M53HCJ17EQT8JQCPF2GJMJD6\",\"socketPath\":\"/tmp/relayflowd-85e237e4f9b4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2258} +{"s":"PL9depsnap","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":623,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCJKZ3RA78SY5SSQF32T2\",\"runId\":\"01M53HCJKZ3RA78SY5SSQF32T2\",\"socketPath\":\"/tmp/relayflowd-e2bf49d34629.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2248} +{"s":"PL9depsnap","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":620,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCKDAHZZWZ6RTYP29RRQW\",\"runId\":\"01M53HCKDAHZZWZ6RTYP29RRQW\",\"socketPath\":\"/tmp/relayflowd-0a62e43fba97.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2327} +{"s":"PL9depsnap","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":622,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCM5AXH8NJV3ZRAES8YC0\",\"runId\":\"01M53HCM5AXH8NJV3ZRAES8YC0\",\"socketPath\":\"/tmp/relayflowd-b92e423ae72d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2405} +{"s":"PL9depsnap","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":620,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCMSD3YNV6CYC2AGPZ8N1\",\"runId\":\"01M53HCMSD3YNV6CYC2AGPZ8N1\",\"socketPath\":\"/tmp/relayflowd-5978eb868d55.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2531} +{"s":"PL9depsnap","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":652,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCNNS9ABNRR82WTSE2920\",\"runId\":\"01M53HCNNS9ABNRR82WTSE2920\",\"socketPath\":\"/tmp/relayflowd-34c682df8512.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"serial","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2674} +{"s":"PL9depsnap","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":471,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCPAWAXS1EZ4Y48AR2D79\",\"runId\":\"01M53HCPAWAXS1EZ4Y48AR2D79\",\"socketPath\":\"/tmp/relayflowd-647698238fac.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1864} +{"s":"PL9depsnap","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":450,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCQ3CNBPF84YN4RD7D3ZQ\",\"runId\":\"01M53HCQ3CNBPF84YN4RD7D3ZQ\",\"socketPath\":\"/tmp/relayflowd-0f037626e8e0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1910} +{"s":"PL9depsnap","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":480,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCR43Y0NPNC78BM5YD0D4\",\"runId\":\"01M53HCR43Y0NPNC78BM5YD0D4\",\"socketPath\":\"/tmp/relayflowd-281fc5ec92a2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2020} +{"s":"PL9depsnap","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":470,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCR56KCSK7PVE8QPFN6MF\",\"runId\":\"01M53HCR56KCSK7PVE8QPFN6MF\",\"socketPath\":\"/tmp/relayflowd-73816eba973d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2074} +{"s":"PL9depsnap","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":433,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCRZ71H0F75B3BY9Y8Q2T\",\"runId\":\"01M53HCRZ71H0F75B3BY9Y8Q2T\",\"socketPath\":\"/tmp/relayflowd-a44cdc130d68.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2168} +{"s":"PL9depnone","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":766,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCTBBGTYCGSF9X0T3CWMV\",\"runId\":\"01M53HCTBBGTYCGSF9X0T3CWMV\",\"socketPath\":\"/tmp/relayflowd-a988913b293e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2083} +{"s":"PL9depsnap","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":525,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCT34PX0YGDS3AZ64Q943\",\"runId\":\"01M53HCT34PX0YGDS3AZ64Q943\",\"socketPath\":\"/tmp/relayflowd-92a95db89fe2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2385} +{"s":"PL9depnone","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":718,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCV8EE1CRDYHQS31J7445\",\"runId\":\"01M53HCV8EE1CRDYHQS31J7445\",\"socketPath\":\"/tmp/relayflowd-e1782b7ce3c3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2138} +{"s":"PL9depnone","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":692,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCWFCSK6VVSYAR4GESKDG\",\"runId\":\"01M53HCWFCSK6VVSYAR4GESKDG\",\"socketPath\":\"/tmp/relayflowd-8723fb7503f8.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2229} +{"s":"PL9depnone","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":655,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCWNY6MJ4M8KPARY0JP09\",\"runId\":\"01M53HCWNY6MJ4M8KPARY0JP09\",\"socketPath\":\"/tmp/relayflowd-a5b88b6a5217.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2275} +{"s":"PL9depnone","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":617,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCXBEHASK6QWE4FZ2QCB2\",\"runId\":\"01M53HCXBEHASK6QWE4FZ2QCB2\",\"socketPath\":\"/tmp/relayflowd-fdaea560f518.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2293} +{"s":"PL9depnone","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":445,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCYN34GD2RWHGFYCXXND7\",\"runId\":\"01M53HCYN34GD2RWHGFYCXXND7\",\"socketPath\":\"/tmp/relayflowd-d5d8addfaf62.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1815} +{"s":"PL9depnone","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":641,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCYK0G0KT4ZHWM5HJ6Z2X\",\"runId\":\"01M53HCYK0G0KT4ZHWM5HJ6Z2X\",\"socketPath\":\"/tmp/relayflowd-598f0f7cd8cd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2406} +{"s":"PL9depnone","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":449,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HCZDNBVR6B484TJ1D15K4\",\"runId\":\"01M53HCZDNBVR6B484TJ1D15K4\",\"socketPath\":\"/tmp/relayflowd-2cb75f2521d5.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1926} +{"s":"PL9depnone","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":456,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD0DHBFTY7YV3DGW4SF6W\",\"runId\":\"01M53HD0DHBFTY7YV3DGW4SF6W\",\"socketPath\":\"/tmp/relayflowd-a1691263c5ad.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1975} +{"s":"PL9depnone","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":389,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD0REPAQ0YZ3NEH2JZ17X\",\"runId\":\"01M53HD0REPAQ0YZ3NEH2JZ17X\",\"socketPath\":\"/tmp/relayflowd-dff4794f2a5d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1998} +{"s":"PL9depnone","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":441,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD19JFKZN5ER80H0Y7XXV\",\"runId\":\"01M53HD19JFKZN5ER80H0Y7XXV\",\"socketPath\":\"/tmp/relayflowd-77a74ae6501b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2172} +{"s":"PL9depnone","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":484,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD2B64K7FTM1CEQN3M01Y\",\"runId\":\"01M53HD2B64K7FTM1CEQN3M01Y\",\"socketPath\":\"/tmp/relayflowd-90dfe3745096.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2335} +{"s":"RS1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":723,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD2YQ7E32TWWEBZ59QBHZ\",\"runId\":\"01M53HD2YQ7E32TWWEBZ59QBHZ\",\"socketPath\":\"/tmp/relayflowd-c1576e1f36f5.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2101} +{"s":"RS1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":692,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD3ND530HZ2TFDHNJ85CE\",\"runId\":\"01M53HD3ND530HZ2TFDHNJ85CE\",\"socketPath\":\"/tmp/relayflowd-15368c103a91.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2149} +{"s":"RS1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":734,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD4WXCXY24KG2C8ZA4Y04\",\"runId\":\"01M53HD4WXCXY24KG2C8ZA4Y04\",\"socketPath\":\"/tmp/relayflowd-8de343547887.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2285} +{"s":"RS1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":734,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD516N2ZBVGZGFQYR0WHZ\",\"runId\":\"01M53HD516N2ZBVGZGFQYR0WHZ\",\"socketPath\":\"/tmp/relayflowd-289e59fbf234.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2465} +{"s":"RS1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":661,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD5RWCGPMVA2D1EN0NYWC\",\"runId\":\"01M53HD5RWCGPMVA2D1EN0NYWC\",\"socketPath\":\"/tmp/relayflowd-b74951610bfd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2420} +{"s":"RS1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":563,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD7801PF7K3D8DE3VXW4A\",\"runId\":\"01M53HD7801PF7K3D8DE3VXW4A\",\"socketPath\":\"/tmp/relayflowd-e6fd2cd9648a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2021} +{"s":"RS1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":700,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD74QA7C8MT6ZAF1RBW2J\",\"runId\":\"01M53HD74QA7C8MT6ZAF1RBW2J\",\"socketPath\":\"/tmp/relayflowd-70b0dbebc91f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2563} +{"s":"RS1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":534,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD7XGGD8S38RX0A1VN46G\",\"runId\":\"01M53HD7XGGD8S38RX0A1VN46G\",\"socketPath\":\"/tmp/relayflowd-ae3e32420469.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2013} +{"s":"RS1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":575,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD96BC30ZR3G6XMS0M60E\",\"runId\":\"01M53HD96BC30ZR3G6XMS0M60E\",\"socketPath\":\"/tmp/relayflowd-3ecf3143e65a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2144} +{"s":"RS1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":532,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD9EN1J6Y7E3E4N9YCBM6\",\"runId\":\"01M53HD9EN1J6Y7E3E4N9YCBM6\",\"socketPath\":\"/tmp/relayflowd-e57c23811651.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2217} +{"s":"RS1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":525,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HD9XKM1FF9YEXZ20FP8XA\",\"runId\":\"01M53HD9XKM1FF9YEXZ20FP8XA\",\"socketPath\":\"/tmp/relayflowd-94ec1551fc66.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2340} +{"s":"RS1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":525,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDB9A8ZPAYA6HZWXBXAZS\",\"runId\":\"01M53HDB9A8ZPAYA6HZWXBXAZS\",\"socketPath\":\"/tmp/relayflowd-e6144ee3b17c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2409} +{"s":"RS1bh","start":"head","resume":"head","i":0,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":699,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDBRYEACMZ9VQ7EYZW165\",\"runId\":\"01M53HDBRYEACMZ9VQ7EYZW165\",\"socketPath\":\"/tmp/relayflowd-7d61f586fa18.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDBRYEACMZ9VQ7EYZW165\",\"runId\":\"01M53HDBRYEACMZ9VQ7EYZW165\",\"socketPath\":\"/tmp/relayflowd-7d61f586fa18.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2641} +{"s":"RS1bh","start":"head","resume":"head","i":1,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":668,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDCC3BGDQW0NGMHH063T4\",\"runId\":\"01M53HDCC3BGDQW0NGMHH063T4\",\"socketPath\":\"/tmp/relayflowd-77e07cbeeacd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDCC3BGDQW0NGMHH063T4\",\"runId\":\"01M53HDCC3BGDQW0NGMHH063T4\",\"socketPath\":\"/tmp/relayflowd-77e07cbeeacd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2651} +{"s":"RS1bh","start":"head","resume":"head","i":2,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":805,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDDVSE885GGCF6BTJS06Z\",\"runId\":\"01M53HDDVSE885GGCF6BTJS06Z\",\"socketPath\":\"/tmp/relayflowd-11dc60bb17bf.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDDVSE885GGCF6BTJS06Z\",\"runId\":\"01M53HDDVSE885GGCF6BTJS06Z\",\"socketPath\":\"/tmp/relayflowd-11dc60bb17bf.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2984} +{"s":"RS1bh","start":"head","resume":"head","i":3,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":819,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDECCA1FT21B68BKVYC96\",\"runId\":\"01M53HDECCA1FT21B68BKVYC96\",\"socketPath\":\"/tmp/relayflowd-49017427453f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDECCA1FT21B68BKVYC96\",\"runId\":\"01M53HDECCA1FT21B68BKVYC96\",\"socketPath\":\"/tmp/relayflowd-49017427453f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3081} +{"s":"RS1bh","start":"head","resume":"head","i":4,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":765,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDF2W9RP20JYBD3XJJHMJ\",\"runId\":\"01M53HDF2W9RP20JYBD3XJJHMJ\",\"socketPath\":\"/tmp/relayflowd-85866f0c0f63.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDF2W9RP20JYBD3XJJHMJ\",\"runId\":\"01M53HDF2W9RP20JYBD3XJJHMJ\",\"socketPath\":\"/tmp/relayflowd-85866f0c0f63.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3185} +{"s":"RS1bb","start":"base","resume":"base","i":0,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":536,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDH6VJ9WTWBBA5ZCM2D8S\",\"runId\":\"01M53HDH6VJ9WTWBBA5ZCM2D8S\",\"socketPath\":\"/tmp/relayflowd-c1f208c33a11.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDH6VJ9WTWBBA5ZCM2D8S\",\"runId\":\"01M53HDH6VJ9WTWBBA5ZCM2D8S\",\"socketPath\":\"/tmp/relayflowd-c1f208c33a11.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2408} +{"s":"RS1bh","start":"head","resume":"head","i":5,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":704,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDGR9851S8NNEFEGK0V5Z\",\"runId\":\"01M53HDGR9851S8NNEFEGK0V5Z\",\"socketPath\":\"/tmp/relayflowd-3243adc9de15.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDGR9851S8NNEFEGK0V5Z\",\"runId\":\"01M53HDGR9851S8NNEFEGK0V5Z\",\"socketPath\":\"/tmp/relayflowd-3243adc9de15.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3112} +{"s":"RS1bb","start":"base","resume":"base","i":1,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":543,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDHWQQCDQ6B4F1RGAN0EM\",\"runId\":\"01M53HDHWQQCDQ6B4F1RGAN0EM\",\"socketPath\":\"/tmp/relayflowd-39218065bff0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDHWQQCDQ6B4F1RGAN0EM\",\"runId\":\"01M53HDHWQQCDQ6B4F1RGAN0EM\",\"socketPath\":\"/tmp/relayflowd-39218065bff0.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2419} +{"s":"RS1bb","start":"base","resume":"base","i":2,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":556,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDKHNX5QMY83W424QA8DZ\",\"runId\":\"01M53HDKHNX5QMY83W424QA8DZ\",\"socketPath\":\"/tmp/relayflowd-cbe5912b1405.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDKHNX5QMY83W424QA8DZ\",\"runId\":\"01M53HDKHNX5QMY83W424QA8DZ\",\"socketPath\":\"/tmp/relayflowd-cbe5912b1405.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2542} +{"s":"RS1bb","start":"base","resume":"base","i":3,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":503,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDKK6BZDM63YF7Z4W7Y5Q\",\"runId\":\"01M53HDKK6BZDM63YF7Z4W7Y5Q\",\"socketPath\":\"/tmp/relayflowd-9a037e96fcae.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDKK6BZDM63YF7Z4W7Y5Q\",\"runId\":\"01M53HDKK6BZDM63YF7Z4W7Y5Q\",\"socketPath\":\"/tmp/relayflowd-9a037e96fcae.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2549} +{"s":"RS1bb","start":"base","resume":"base","i":4,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":542,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDM8SJCYZYVJE3YW0K00S\",\"runId\":\"01M53HDM8SJCYZYVJE3YW0K00S\",\"socketPath\":\"/tmp/relayflowd-77449fbe3602.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDM8SJCYZYVJE3YW0K00S\",\"runId\":\"01M53HDM8SJCYZYVJE3YW0K00S\",\"socketPath\":\"/tmp/relayflowd-77449fbe3602.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2717} +{"s":"RS2","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":691,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDP8PBZGWQGPDPWJVJ4DR\",\"runId\":\"01M53HDP8PBZGWQGPDPWJVJ4DR\",\"socketPath\":\"/tmp/relayflowd-b22231002d67.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2076} +{"s":"RS1bb","start":"base","resume":"base","i":5,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":543,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDP1KP4QFBP88C8PFK7SJ\",\"runId\":\"01M53HDP1KP4QFBP88C8PFK7SJ\",\"socketPath\":\"/tmp/relayflowd-2c9f5c8fa062.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDP1KP4QFBP88C8PFK7SJ\",\"runId\":\"01M53HDP1KP4QFBP88C8PFK7SJ\",\"socketPath\":\"/tmp/relayflowd-2c9f5c8fa062.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2893} +{"s":"RS2","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":760,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDQ2X78BRVG6W11468797\",\"runId\":\"01M53HDQ2X78BRVG6W11468797\",\"socketPath\":\"/tmp/relayflowd-ccdc1107af96.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2198} +{"s":"RS2","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":709,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDRAP52X48QNQNR9QT6A3\",\"runId\":\"01M53HDRAP52X48QNQNR9QT6A3\",\"socketPath\":\"/tmp/relayflowd-342a52825cff.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2253} +{"s":"RS2","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":746,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDS1M90ZMHG3MVXR6VRVD\",\"runId\":\"01M53HDS1M90ZMHG3MVXR6VRVD\",\"socketPath\":\"/tmp/relayflowd-9cdcb42e7f0c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2385} +{"s":"RS2","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":739,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDS8JZAV6VE1Y8767B6DX\",\"runId\":\"01M53HDS8JZAV6VE1Y8767B6DX\",\"socketPath\":\"/tmp/relayflowd-33da4c245a95.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2513} +{"s":"RS2","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":752,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDTHMACA9VCYDRSXQE56M\",\"runId\":\"01M53HDTHMACA9VCYDRSXQE56M\",\"socketPath\":\"/tmp/relayflowd-64fddae4565d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2643} +{"s":"RS2","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":483,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDV65AW6VGRJJ9V33BJQV\",\"runId\":\"01M53HDV65AW6VGRJJ9V33BJQV\",\"socketPath\":\"/tmp/relayflowd-abf91d944e85.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1951} +{"s":"RS2","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":530,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDVGYZCK3AXP72X21HKM3\",\"runId\":\"01M53HDVGYZCK3AXP72X21HKM3\",\"socketPath\":\"/tmp/relayflowd-b878b945e185.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2089} +{"s":"RS2","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":540,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDWYTBD5RFF4WJ7ZEB6BY\",\"runId\":\"01M53HDWYTBD5RFF4WJ7ZEB6BY\",\"socketPath\":\"/tmp/relayflowd-49efa8015e1f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2143} +{"s":"RS2","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":547,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDX34JS84Y10ETRW5ZJ4J\",\"runId\":\"01M53HDX34JS84Y10ETRW5ZJ4J\",\"socketPath\":\"/tmp/relayflowd-017081d3627c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2230} +{"s":"RS2","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":550,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDXJE22WAWCGYGKW6B0Z8\",\"runId\":\"01M53HDXJE22WAWCGYGKW6B0Z8\",\"socketPath\":\"/tmp/relayflowd-9ce0491b6e57.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2359} +{"s":"RS2","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":560,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDZ0HM76ZJE0PSDK13B8Y\",\"runId\":\"01M53HDZ0HM76ZJE0PSDK13B8Y\",\"socketPath\":\"/tmp/relayflowd-637b6b9e751b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2498} +{"s":"RS2bh","start":"head","resume":"head","i":0,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":720,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDZEF55JKR2B9AEDZQHSA\",\"runId\":\"01M53HDZEF55JKR2B9AEDZQHSA\",\"socketPath\":\"/tmp/relayflowd-14e5d41e5163.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HDZEF55JKR2B9AEDZQHSA\",\"runId\":\"01M53HDZEF55JKR2B9AEDZQHSA\",\"socketPath\":\"/tmp/relayflowd-14e5d41e5163.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2681} +{"s":"RS2bh","start":"head","resume":"head","i":1,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":708,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE00NC7D3J7VKMEWXYFS2\",\"runId\":\"01M53HE00NC7D3J7VKMEWXYFS2\",\"socketPath\":\"/tmp/relayflowd-e2f55482c485.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE00NC7D3J7VKMEWXYFS2\",\"runId\":\"01M53HE00NC7D3J7VKMEWXYFS2\",\"socketPath\":\"/tmp/relayflowd-e2f55482c485.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2700} +{"s":"RS2bh","start":"head","resume":"head","i":2,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":701,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE1MMH3WB11JBHD6KVWQ4\",\"runId\":\"01M53HE1MMH3WB11JBHD6KVWQ4\",\"socketPath\":\"/tmp/relayflowd-88919bebd24c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE1MMH3WB11JBHD6KVWQ4\",\"runId\":\"01M53HE1MMH3WB11JBHD6KVWQ4\",\"socketPath\":\"/tmp/relayflowd-88919bebd24c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2779} +{"s":"RS2bh","start":"head","resume":"head","i":3,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":713,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE22SXYRQ18TDTM5JG29J\",\"runId\":\"01M53HE22SXYRQ18TDTM5JG29J\",\"socketPath\":\"/tmp/relayflowd-3b203d05cf0b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE22SXYRQ18TDTM5JG29J\",\"runId\":\"01M53HE22SXYRQ18TDTM5JG29J\",\"socketPath\":\"/tmp/relayflowd-3b203d05cf0b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2922} +{"s":"RS2bh","start":"head","resume":"head","i":4,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":717,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE2NR348GKAT8M8M30VEP\",\"runId\":\"01M53HE2NR348GKAT8M8M30VEP\",\"socketPath\":\"/tmp/relayflowd-5912fd2910d2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE2NR348GKAT8M8M30VEP\",\"runId\":\"01M53HE2NR348GKAT8M8M30VEP\",\"socketPath\":\"/tmp/relayflowd-5912fd2910d2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2982} +{"s":"RS2bb","start":"base","resume":"base","i":0,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":561,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE4QXHPP6P72671HXPPS9\",\"runId\":\"01M53HE4QXHPP6P72671HXPPS9\",\"socketPath\":\"/tmp/relayflowd-5cd75fe2ea67.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE4QXHPP6P72671HXPPS9\",\"runId\":\"01M53HE4QXHPP6P72671HXPPS9\",\"socketPath\":\"/tmp/relayflowd-5cd75fe2ea67.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2402} +{"s":"RS2bh","start":"head","resume":"head","i":5,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":716,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE4C0ESHYR0HRY7ENK7VS\",\"runId\":\"01M53HE4C0ESHYR0HRY7ENK7VS\",\"socketPath\":\"/tmp/relayflowd-17034c61452d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE4C0ESHYR0HRY7ENK7VS\",\"runId\":\"01M53HE4C0ESHYR0HRY7ENK7VS\",\"socketPath\":\"/tmp/relayflowd-17034c61452d.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3154} +{"s":"RS2bb","start":"base","resume":"base","i":1,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":536,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE5DRRXAXPMKB403TDK5Z\",\"runId\":\"01M53HE5DRRXAXPMKB403TDK5Z\",\"socketPath\":\"/tmp/relayflowd-430af97a2acd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE5DRRXAXPMKB403TDK5Z\",\"runId\":\"01M53HE5DRRXAXPMKB403TDK5Z\",\"socketPath\":\"/tmp/relayflowd-430af97a2acd.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2469} +{"s":"RS2bb","start":"base","resume":"base","i":2,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":537,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE72MKQFSRY6BRJR8W92D\",\"runId\":\"01M53HE72MKQFSRY6BRJR8W92D\",\"socketPath\":\"/tmp/relayflowd-4488d5ff8cc6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE72MKQFSRY6BRJR8W92D\",\"runId\":\"01M53HE72MKQFSRY6BRJR8W92D\",\"socketPath\":\"/tmp/relayflowd-4488d5ff8cc6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2475} +{"s":"RS2bb","start":"base","resume":"base","i":3,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":529,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE78W0KXDRB0KY3W2Y9FV\",\"runId\":\"01M53HE78W0KXDRB0KY3W2Y9FV\",\"socketPath\":\"/tmp/relayflowd-f9dde5ba1242.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE78W0KXDRB0KY3W2Y9FV\",\"runId\":\"01M53HE78W0KXDRB0KY3W2Y9FV\",\"socketPath\":\"/tmp/relayflowd-f9dde5ba1242.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2571} +{"s":"RS2bb","start":"base","resume":"base","i":4,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":508,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE7VADQMM149PGZFBH036\",\"runId\":\"01M53HE7VADQMM149PGZFBH036\",\"socketPath\":\"/tmp/relayflowd-e4d5d731ff7f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE7VADQMM149PGZFBH036\",\"runId\":\"01M53HE7VADQMM149PGZFBH036\",\"socketPath\":\"/tmp/relayflowd-e4d5d731ff7f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2717} +{"s":"RS3","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":423,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HE9YF5SE7CSXBH0RR06FS cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HE9YF5SE7CSXBH0RR06FS\",\"runId\":\"01M53HE9YF5SE7CSXBH0RR06FS\",\"socketPath\":\"/tmp/relayflowd-34b0aebd4c1a.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1820} +{"s":"RS2bb","start":"base","resume":"base","i":5,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":523,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE9GSYSQN5BJ9R8ZVMR74\",\"runId\":\"01M53HE9GSYSQN5BJ9R8ZVMR74\",\"socketPath\":\"/tmp/relayflowd-c37e78033527.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HE9GSYSQN5BJ9R8ZVMR74\",\"runId\":\"01M53HE9GSYSQN5BJ9R8ZVMR74\",\"socketPath\":\"/tmp/relayflowd-c37e78033527.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2826} +{"s":"RS3","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":427,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEANGCHQGGNBRV7E9Z31P cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEANGCHQGGNBRV7E9Z31P\",\"runId\":\"01M53HEANGCHQGGNBRV7E9Z31P\",\"socketPath\":\"/tmp/relayflowd-b7b461c5a82b.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1883} +{"s":"RS3","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":432,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEBQ611TZ7T8E1NXPSYKR cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEBQ611TZ7T8E1NXPSYKR\",\"runId\":\"01M53HEBQ611TZ7T8E1NXPSYKR\",\"socketPath\":\"/tmp/relayflowd-a68934ad3b68.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1959} +{"s":"RS3","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":436,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HECEDX1VB4X4CZ90PBF1X cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HECEDX1VB4X4CZ90PBF1X\",\"runId\":\"01M53HECEDX1VB4X4CZ90PBF1X\",\"socketPath\":\"/tmp/relayflowd-64023c00e998.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2042} +{"s":"RS3","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":432,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HECFQN6VVRVSV9V33512S cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HECFQN6VVRVSV9V33512S\",\"runId\":\"01M53HECFQN6VVRVSV9V33512S\",\"socketPath\":\"/tmp/relayflowd-e1e29aeab32f.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2135} +{"s":"RS3","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":440,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEDKHCBRDJZ9APT47WBG2 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEDKHCBRDJZ9APT47WBG2\",\"runId\":\"01M53HEDKHCBRDJZ9APT47WBG2\",\"socketPath\":\"/tmp/relayflowd-efe5694ba38f.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2279} +{"s":"RS3","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":524,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEE8QF33EMBHR8XXSXNP9\",\"runId\":\"01M53HEE8QF33EMBHR8XXSXNP9\",\"socketPath\":\"/tmp/relayflowd-98b6603d9f0b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1988} +{"s":"RS3","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":516,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEECZFA2101334ZJGJE5E\",\"runId\":\"01M53HEECZFA2101334ZJGJE5E\",\"socketPath\":\"/tmp/relayflowd-05566c5a25be.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2025} +{"s":"RS3","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":547,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEFNXPRKHRBDTTB2GP1BM\",\"runId\":\"01M53HEFNXPRKHRBDTTB2GP1BM\",\"socketPath\":\"/tmp/relayflowd-0e9ab1ccb34c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2139} +{"s":"RS3","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":521,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEG7GJQZTE6H3YEN675N5\",\"runId\":\"01M53HEG7GJQZTE6H3YEN675N5\",\"socketPath\":\"/tmp/relayflowd-1eba0c82c405.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2217} +{"s":"RS3","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":537,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEGDA4X9P1NQPP3M43QE0\",\"runId\":\"01M53HEGDA4X9P1NQPP3M43QE0\",\"socketPath\":\"/tmp/relayflowd-ab55f3ee3683.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2334} +{"s":"RS3","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":519,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEHRRA7T955GAEMME04VW\",\"runId\":\"01M53HEHRRA7T955GAEMME04VW\",\"socketPath\":\"/tmp/relayflowd-96a95f50a92c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2421} +{"s":"RS3bh","start":"head","resume":"head","i":0,"fresh":false,"code1":2,"effects1":"bcaX","resumeMs":427,"code":0,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEJHVH05NPNC2ZAV9P322 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEJHVH05NPNC2ZAV9P322\",\"runId\":\"01M53HEJHVH05NPNC2ZAV9P322\",\"socketPath\":\"/tmp/relayflowd-f562cd7d24a3.sock\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEJHVH05NPNC2ZAV9P322\",\"runId\":\"01M53HEJHVH05NPNC2ZAV9P322\",\"socketPath\":\"/tmp/relayflowd-f562cd7d24a3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2515} +{"s":"RS3bh","start":"head","resume":"head","i":1,"fresh":false,"code1":2,"effects1":"bcaX","resumeMs":455,"code":0,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEJTDP7WFZ8XHPVARFS70 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEJTDP7WFZ8XHPVARFS70\",\"runId\":\"01M53HEJTDP7WFZ8XHPVARFS70\",\"socketPath\":\"/tmp/relayflowd-d1fdc9e09a12.sock\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEJTDP7WFZ8XHPVARFS70\",\"runId\":\"01M53HEJTDP7WFZ8XHPVARFS70\",\"socketPath\":\"/tmp/relayflowd-d1fdc9e09a12.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2575} +{"s":"RS3bh","start":"head","resume":"head","i":2,"fresh":false,"code1":2,"effects1":"bcaX","resumeMs":420,"code":0,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEMAKR5W8TZHSMM0TFNB7 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEMAKR5W8TZHSMM0TFNB7\",\"runId\":\"01M53HEMAKR5W8TZHSMM0TFNB7\",\"socketPath\":\"/tmp/relayflowd-81c3139e63af.sock\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEMAKR5W8TZHSMM0TFNB7\",\"runId\":\"01M53HEMAKR5W8TZHSMM0TFNB7\",\"socketPath\":\"/tmp/relayflowd-81c3139e63af.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2716} +{"s":"RS3bh","start":"head","resume":"head","i":3,"fresh":false,"code1":2,"effects1":"bcaX","resumeMs":438,"code":0,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEN07PP6V316VTARQH7FC cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEN07PP6V316VTARQH7FC\",\"runId\":\"01M53HEN07PP6V316VTARQH7FC\",\"socketPath\":\"/tmp/relayflowd-44595a49cabb.sock\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEN07PP6V316VTARQH7FC\",\"runId\":\"01M53HEN07PP6V316VTARQH7FC\",\"socketPath\":\"/tmp/relayflowd-44595a49cabb.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2755} +{"s":"RS3bh","start":"head","resume":"head","i":4,"fresh":false,"code1":2,"effects1":"bcaX","resumeMs":447,"code":0,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HENB9AQF64SZ3HHHEV33E cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HENB9AQF64SZ3HHHEV33E\",\"runId\":\"01M53HENB9AQF64SZ3HHHEV33E\",\"socketPath\":\"/tmp/relayflowd-3c4e5ccd024a.sock\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HENB9AQF64SZ3HHHEV33E\",\"runId\":\"01M53HENB9AQF64SZ3HHHEV33E\",\"socketPath\":\"/tmp/relayflowd-3c4e5ccd024a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2882} +{"s":"RS3bh","start":"head","resume":"head","i":5,"fresh":false,"code1":2,"effects1":"bcaX","resumeMs":429,"code":0,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HEPZ8KP0NBKSC5GZ3FQQ6 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HEPZ8KP0NBKSC5GZ3FQQ6\",\"runId\":\"01M53HEPZ8KP0NBKSC5GZ3FQQ6\",\"socketPath\":\"/tmp/relayflowd-9a996fd84eef.sock\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEPZ8KP0NBKSC5GZ3FQQ6\",\"runId\":\"01M53HEPZ8KP0NBKSC5GZ3FQQ6\",\"socketPath\":\"/tmp/relayflowd-9a996fd84eef.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3013} +{"s":"RS3bb","start":"base","resume":"base","i":0,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":519,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEQGVYMCDNEWRMJB7AGS1\",\"runId\":\"01M53HEQGVYMCDNEWRMJB7AGS1\",\"socketPath\":\"/tmp/relayflowd-9245f8369f4f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEQGVYMCDNEWRMJB7AGS1\",\"runId\":\"01M53HEQGVYMCDNEWRMJB7AGS1\",\"socketPath\":\"/tmp/relayflowd-9245f8369f4f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2365} +{"s":"RS3bb","start":"base","resume":"base","i":1,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":551,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HER0JXM8CDSXVNTFSAE3S\",\"runId\":\"01M53HER0JXM8CDSXVNTFSAE3S\",\"socketPath\":\"/tmp/relayflowd-22bc96b8e23a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HER0JXM8CDSXVNTFSAE3S\",\"runId\":\"01M53HER0JXM8CDSXVNTFSAE3S\",\"socketPath\":\"/tmp/relayflowd-22bc96b8e23a.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2495} +{"s":"RS3bb","start":"base","resume":"base","i":2,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":593,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HESPWMDVES16V4MD73HE3\",\"runId\":\"01M53HESPWMDVES16V4MD73HE3\",\"socketPath\":\"/tmp/relayflowd-0cded5a928fc.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HESPWMDVES16V4MD73HE3\",\"runId\":\"01M53HESPWMDVES16V4MD73HE3\",\"socketPath\":\"/tmp/relayflowd-0cded5a928fc.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2568} +{"s":"RS3bb","start":"base","resume":"base","i":3,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":517,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEST588NAKW75CT961QJ9\",\"runId\":\"01M53HEST588NAKW75CT961QJ9\",\"socketPath\":\"/tmp/relayflowd-b248b005e44e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEST588NAKW75CT961QJ9\",\"runId\":\"01M53HEST588NAKW75CT961QJ9\",\"socketPath\":\"/tmp/relayflowd-b248b005e44e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2568} +{"s":"RS3bb","start":"base","resume":"base","i":4,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":499,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HETEMMKSG68HP35AHF1AD\",\"runId\":\"01M53HETEMMKSG68HP35AHF1AD\",\"socketPath\":\"/tmp/relayflowd-cbe322f48562.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HETEMMKSG68HP35AHF1AD\",\"runId\":\"01M53HETEMMKSG68HP35AHF1AD\",\"socketPath\":\"/tmp/relayflowd-cbe322f48562.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2749} +{"s":"RS0","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":740,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEWGF3GWZFGBD35XY2NGJ\",\"runId\":\"01M53HEWGF3GWZFGBD35XY2NGJ\",\"socketPath\":\"/tmp/relayflowd-49c3bc12555f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2131} +{"s":"RS3bb","start":"base","resume":"base","i":5,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":537,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEW87GF4VHHENAS9QXW0N\",\"runId\":\"01M53HEW87GF4VHHENAS9QXW0N\",\"socketPath\":\"/tmp/relayflowd-d2b1406e0355.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEW87GF4VHHENAS9QXW0N\",\"runId\":\"01M53HEW87GF4VHHENAS9QXW0N\",\"socketPath\":\"/tmp/relayflowd-d2b1406e0355.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2864} +{"s":"RS0","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":756,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEX8Y0HTK4S8J0S6WGCDE\",\"runId\":\"01M53HEX8Y0HTK4S8J0S6WGCDE\",\"socketPath\":\"/tmp/relayflowd-07ad50aae84f.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2177} +{"s":"RS0","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":712,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEYK4CMEN6DECGZN9ZM0D\",\"runId\":\"01M53HEYK4CMEN6DECGZN9ZM0D\",\"socketPath\":\"/tmp/relayflowd-9fd90fe923ed.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2232} +{"s":"RS0","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":728,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEZ6DXQXRBC1Z483FSS6W\",\"runId\":\"01M53HEZ6DXQXRBC1Z483FSS6W\",\"socketPath\":\"/tmp/relayflowd-47f6681161b6.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2373} +{"s":"RS0","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":737,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HEZD7VM3RQMN8YWEJW60C\",\"runId\":\"01M53HEZD7VM3RQMN8YWEJW60C\",\"socketPath\":\"/tmp/relayflowd-02b94d90bdc8.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2455} +{"s":"RS0","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":719,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF0RJPK4Y77DJ1XXCMWNE\",\"runId\":\"01M53HF0RJPK4Y77DJ1XXCMWNE\",\"socketPath\":\"/tmp/relayflowd-557b7550aabe.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2543} +{"s":"RS0","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":569,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF1AR904SQY7ENH52FFF8\",\"runId\":\"01M53HF1AR904SQY7ENH52FFF8\",\"socketPath\":\"/tmp/relayflowd-af9ef32a17c8.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1998} +{"s":"RS0","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":536,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF1MQ14KX5XN17P1HNHV8\",\"runId\":\"01M53HF1MQ14KX5XN17P1HNHV8\",\"socketPath\":\"/tmp/relayflowd-19d96e7e7b77.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2068} +{"s":"RS0","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":555,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF335TBMRB8AZ2K75H5D8\",\"runId\":\"01M53HF335TBMRB8AZ2K75H5D8\",\"socketPath\":\"/tmp/relayflowd-a01aa3c3300c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2195} +{"s":"RS0","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":596,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF38R0XMXQYV62AZ6BC5P\",\"runId\":\"01M53HF38R0XMXQYV62AZ6BC5P\",\"socketPath\":\"/tmp/relayflowd-43f4323b6e2b.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2241} +{"s":"RS0","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":563,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF3N3EKWF0RK5VT3KHKC8\",\"runId\":\"01M53HF3N3EKWF0RK5VT3KHKC8\",\"socketPath\":\"/tmp/relayflowd-66b49ece8740.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2379} +{"s":"RS0","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abcX","resumeMs":585,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF57M1A1X8EZDXGG982TZ\",\"runId\":\"01M53HF57M1A1X8EZDXGG982TZ\",\"socketPath\":\"/tmp/relayflowd-f3642456409c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2499} +{"s":"RS0bh","start":"head","resume":"head","i":0,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":765,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF5MTN0XG6P8VZHV96MTS\",\"runId\":\"01M53HF5MTN0XG6P8VZHV96MTS\",\"socketPath\":\"/tmp/relayflowd-add559f67e12.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF5MTN0XG6P8VZHV96MTS\",\"runId\":\"01M53HF5MTN0XG6P8VZHV96MTS\",\"socketPath\":\"/tmp/relayflowd-add559f67e12.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2706} +{"s":"RS0bh","start":"head","resume":"head","i":1,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":754,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF65EMRY42N8M6EW99P2P\",\"runId\":\"01M53HF65EMRY42N8M6EW99P2P\",\"socketPath\":\"/tmp/relayflowd-dc9dc18432c8.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF65EMRY42N8M6EW99P2P\",\"runId\":\"01M53HF65EMRY42N8M6EW99P2P\",\"socketPath\":\"/tmp/relayflowd-dc9dc18432c8.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2757} +{"s":"RS0bh","start":"head","resume":"head","i":2,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":730,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF7VB1KNYCZ2H0XR8JVVK\",\"runId\":\"01M53HF7VB1KNYCZ2H0XR8JVVK\",\"socketPath\":\"/tmp/relayflowd-509e6e711221.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF7VB1KNYCZ2H0XR8JVVK\",\"runId\":\"01M53HF7VB1KNYCZ2H0XR8JVVK\",\"socketPath\":\"/tmp/relayflowd-509e6e711221.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2980} +{"s":"RS0bh","start":"head","resume":"head","i":3,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":876,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF89XGW5YSQNN83JXV70Y\",\"runId\":\"01M53HF89XGW5YSQNN83JXV70Y\",\"socketPath\":\"/tmp/relayflowd-678abec08ec2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF89XGW5YSQNN83JXV70Y\",\"runId\":\"01M53HF89XGW5YSQNN83JXV70Y\",\"socketPath\":\"/tmp/relayflowd-678abec08ec2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3093} +{"s":"RS0bh","start":"head","resume":"head","i":4,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":841,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF8VJ2JY7PTR5SZNXXF2K\",\"runId\":\"01M53HF8VJ2JY7PTR5SZNXXF2K\",\"socketPath\":\"/tmp/relayflowd-884e9114c962.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HF8VJ2JY7PTR5SZNXXF2K\",\"runId\":\"01M53HF8VJ2JY7PTR5SZNXXF2K\",\"socketPath\":\"/tmp/relayflowd-884e9114c962.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3125} +{"s":"RS0bb","start":"base","resume":"base","i":0,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":610,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFB5SRRM0F8N4ES0YMZ1M\",\"runId\":\"01M53HFB5SRRM0F8N4ES0YMZ1M\",\"socketPath\":\"/tmp/relayflowd-781d4655f09c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFB5SRRM0F8N4ES0YMZ1M\",\"runId\":\"01M53HFB5SRRM0F8N4ES0YMZ1M\",\"socketPath\":\"/tmp/relayflowd-781d4655f09c.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2489} +{"s":"RS0bh","start":"head","resume":"head","i":5,"fresh":false,"code1":0,"effects1":"bcaXZ","resumeMs":784,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFATP3KTDZWHJATX1TJP3\",\"runId\":\"01M53HFATP3KTDZWHJATX1TJP3\",\"socketPath\":\"/tmp/relayflowd-77ae0246bcdf.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFATP3KTDZWHJATX1TJP3\",\"runId\":\"01M53HFATP3KTDZWHJATX1TJP3\",\"socketPath\":\"/tmp/relayflowd-77ae0246bcdf.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bcaXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":3301} +{"s":"RS0bb","start":"base","resume":"base","i":1,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":624,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFBQ5CF2J4RKRCQNXQ4AE\",\"runId\":\"01M53HFBQ5CF2J4RKRCQNXQ4AE\",\"socketPath\":\"/tmp/relayflowd-978ad56aee95.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFBQ5CF2J4RKRCQNXQ4AE\",\"runId\":\"01M53HFBQ5CF2J4RKRCQNXQ4AE\",\"socketPath\":\"/tmp/relayflowd-978ad56aee95.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2558} +{"s":"RS0bb","start":"base","resume":"base","i":2,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":590,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFDK97H80ETKHCW4W940B\",\"runId\":\"01M53HFDK97H80ETKHCW4W940B\",\"socketPath\":\"/tmp/relayflowd-e51fce2aee29.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFDK97H80ETKHCW4W940B\",\"runId\":\"01M53HFDK97H80ETKHCW4W940B\",\"socketPath\":\"/tmp/relayflowd-e51fce2aee29.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2641} +{"s":"RS0bb","start":"base","resume":"base","i":3,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":590,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFDV1CARXHYA9FTG6RWY2\",\"runId\":\"01M53HFDV1CARXHYA9FTG6RWY2\",\"socketPath\":\"/tmp/relayflowd-9385ce318ee2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFDV1CARXHYA9FTG6RWY2\",\"runId\":\"01M53HFDV1CARXHYA9FTG6RWY2\",\"socketPath\":\"/tmp/relayflowd-9385ce318ee2.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2736} +{"s":"RS0bb","start":"base","resume":"base","i":4,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":617,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFE89D57D3CSS4Y0ZCJYA\",\"runId\":\"01M53HFE89D57D3CSS4Y0ZCJYA\",\"socketPath\":\"/tmp/relayflowd-ef8a56bb102e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFE89D57D3CSS4Y0ZCJYA\",\"runId\":\"01M53HFE89D57D3CSS4Y0ZCJYA\",\"socketPath\":\"/tmp/relayflowd-ef8a56bb102e.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2847} +{"s":"DP1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":677,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFGNHKPMSJZSVGB9E1AC4\",\"runId\":\"01M53HFGNHKPMSJZSVGB9E1AC4\",\"socketPath\":\"/tmp/relayflowd-93890018d322.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1864} +{"s":"DP1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":681,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFH55M1T7N7BCXZX83GB0\",\"runId\":\"01M53HFH55M1T7N7BCXZX83GB0\",\"socketPath\":\"/tmp/relayflowd-5cbec67de6c6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1882} +{"s":"RS0bb","start":"base","resume":"base","i":5,"fresh":false,"code1":0,"effects1":"abcXZ","resumeMs":603,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFG602RD08V4YY6PD2W6C\",\"runId\":\"01M53HFG602RD08V4YY6PD2W6C\",\"socketPath\":\"/tmp/relayflowd-4b23b943a137.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects0":"abcX","effectsMid":"abcXZ","out2":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFG602RD08V4YY6PD2W6C\",\"runId\":\"01M53HFG602RD08V4YY6PD2W6C\",\"socketPath\":\"/tmp/relayflowd-4b23b943a137.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abcXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.4; printf A","run-3 c=1 printf B","run-4 c=1 sleep 0.2; printf C","run-5 c=1 printf a >> effects","run-6 c=1 printf b >> effects","run-7 c=1 printf c >> effects","run-8 c=1 printf X >> effects","run-9 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2899} +{"s":"DP1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":663,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFJF7WS9TQY7DV83K6313\",\"runId\":\"01M53HFJF7WS9TQY7DV83K6313\",\"socketPath\":\"/tmp/relayflowd-7c78347193ff.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1980} +{"s":"DP1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":703,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFK18SB04K73M6TPTM7CY\",\"runId\":\"01M53HFK18SB04K73M6TPTM7CY\",\"socketPath\":\"/tmp/relayflowd-dd9727ba8a99.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2101} +{"s":"DP1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":701,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFK55VCT8NQ81TXBD8C6D\",\"runId\":\"01M53HFK55VCT8NQ81TXBD8C6D\",\"socketPath\":\"/tmp/relayflowd-48b642c7b827.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2210} +{"s":"DP1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":554,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFMWN9RFQ9X22C22M611K\",\"runId\":\"01M53HFMWN9RFQ9X22C22M611K\",\"socketPath\":\"/tmp/relayflowd-77d1c763dbb3.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1683} +{"s":"DP1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":726,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFMDAE17NW0H62HBC91KR\",\"runId\":\"01M53HFMDAE17NW0H62HBC91KR\",\"socketPath\":\"/tmp/relayflowd-5255d84f7610.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2380} +{"s":"DP1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":521,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFN4ZFSCMEMEQNJKB4FY9\",\"runId\":\"01M53HFN4ZFSCMEMEQNJKB4FY9\",\"socketPath\":\"/tmp/relayflowd-b0e8ffc4634b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1726} +{"s":"DP1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":504,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFPHTRPM2WJV8T4GAH6KX\",\"runId\":\"01M53HFPHTRPM2WJV8T4GAH6KX\",\"socketPath\":\"/tmp/relayflowd-623aeceb1c32.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1795} +{"s":"DP1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":504,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFPJ8GZD48QWBBD1MXK06\",\"runId\":\"01M53HFPJ8GZD48QWBBD1MXK06\",\"socketPath\":\"/tmp/relayflowd-1ea825e1b004.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1874} +{"s":"DP1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":523,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFPTM70XA29PZM0CQGJHT\",\"runId\":\"01M53HFPTM70XA29PZM0CQGJHT\",\"socketPath\":\"/tmp/relayflowd-815351f947f8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1991} +{"s":"OPT1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":718,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFRJ42A7TNHZ8FZXBHA0Z\",\"runId\":\"01M53HFRJ42A7TNHZ8FZXBHA0Z\",\"socketPath\":\"/tmp/relayflowd-1fc62fc0dac8.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1887} +{"s":"DP1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":516,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFRAHMNAKEVYVQ71VK09C\",\"runId\":\"01M53HFRAHMNAKEVYVQ71VK09C\",\"socketPath\":\"/tmp/relayflowd-255e8966bfc6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2132} +{"s":"OPT1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":730,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFRXJFNAD1BRPBW4ZTANH\",\"runId\":\"01M53HFRXJFNAD1BRPBW4ZTANH\",\"socketPath\":\"/tmp/relayflowd-374d7d202009.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1944} +{"s":"OPT1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":673,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFTD9NQYJMZXG9DP72A94\",\"runId\":\"01M53HFTD9NQYJMZXG9DP72A94\",\"socketPath\":\"/tmp/relayflowd-176069fa549f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1991} +{"s":"OPT1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":735,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFTJ9QHVD92Q6S9N7TMPK\",\"runId\":\"01M53HFTJ9QHVD92Q6S9N7TMPK\",\"socketPath\":\"/tmp/relayflowd-a1da8921a3bf.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2132} +{"s":"OPT1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":687,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFTV6G9PC8MXPJ16XW2RZ\",\"runId\":\"01M53HFTV6G9PC8MXPJ16XW2RZ\",\"socketPath\":\"/tmp/relayflowd-52dfa50a7ecc.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2198} +{"s":"OPT1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":503,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFWF4SFX822V4PJXZV541\",\"runId\":\"01M53HFWF4SFX822V4PJXZV541\",\"socketPath\":\"/tmp/relayflowd-29359f03e07b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1624} +{"s":"OPT1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":721,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFWC22E9V0XARPJ4K961Z\",\"runId\":\"01M53HFWC22E9V0XARPJ4K961Z\",\"socketPath\":\"/tmp/relayflowd-0e1341ed050d.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2402} +{"s":"OPT1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":549,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFWV4HF62S888X3TRZ1RR\",\"runId\":\"01M53HFWV4HF62S888X3TRZ1RR\",\"socketPath\":\"/tmp/relayflowd-dcaf7a968915.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1759} +{"s":"OPT1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":499,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFY2R3VVKQDPT7Z7584GE\",\"runId\":\"01M53HFY2R3VVKQDPT7Z7584GE\",\"socketPath\":\"/tmp/relayflowd-33b5774d3422.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1822} +{"s":"OPT1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":511,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFYHE4WNCGQTYTB908MG7\",\"runId\":\"01M53HFYHE4WNCGQTYTB908MG7\",\"socketPath\":\"/tmp/relayflowd-8e7e8105f61a.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1909} +{"s":"OPT1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":501,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFYHY0M14RTND6CGJPHHX\",\"runId\":\"01M53HFYHY0M14RTND6CGJPHHX\",\"socketPath\":\"/tmp/relayflowd-316183964fa1.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2014} +{"s":"OPT1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"abX","resumeMs":553,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HFZTSPV86XJHEHR4CMDGM\",\"runId\":\"01M53HFZTSPV86XJHEHR4CMDGM\",\"socketPath\":\"/tmp/relayflowd-195a67c92f84.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"abXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a >> effects","run-5 c=1 printf b >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2137} +{"s":"TV1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"b4a2X","resumeMs":700,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG0HXFJ0MYV4G472M8YQP\",\"runId\":\"01M53HG0HXFJ0MYV4G472M8YQP\",\"socketPath\":\"/tmp/relayflowd-8accd01c2a09.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"b4a2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; exit 4","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b4 >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1868} +{"s":"TV1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"b4a2X","resumeMs":692,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG0NZEGXRXD0DX1PPB6Q2\",\"runId\":\"01M53HG0NZEGXRXD0DX1PPB6Q2\",\"socketPath\":\"/tmp/relayflowd-fc3a8899b671.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"b4a2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; exit 4","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf vv","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b4 >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1924} +{"s":"TV1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"b4a2X","resumeMs":688,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG230P70FMKJHNH4R5A22\",\"runId\":\"01M53HG230P70FMKJHNH4R5A22\",\"socketPath\":\"/tmp/relayflowd-5d05fd3bf5f0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"b4a2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; exit 4","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b4 >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1995} +{"s":"TV1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"b4a2X","resumeMs":739,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG2CXG5PGGHWDV9DC8CSR\",\"runId\":\"01M53HG2CXG5PGGHWDV9DC8CSR\",\"socketPath\":\"/tmp/relayflowd-868afb832150.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"b4a2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; exit 4","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b4 >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2155} +{"s":"TV1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"b4a2X","resumeMs":692,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG2JJDRYY37KP3NC39CNR\",\"runId\":\"01M53HG2JJDRYY37KP3NC39CNR\",\"socketPath\":\"/tmp/relayflowd-48770623a571.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"b4a2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; exit 4","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b4 >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2201} +{"s":"TV1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"a2b4X","resumeMs":508,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG4A1S6N3QJW7PADFGVKT\",\"runId\":\"01M53HG4A1S6N3QJW7PADFGVKT\",\"socketPath\":\"/tmp/relayflowd-c979e120b4c1.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2b4XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf vv","run-3 c=1 sleep 0.1; exit 4","run-4 c=1 printf a2 >> effects","run-5 c=1 printf b4 >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1630} +{"s":"TV1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"b4a2X","resumeMs":700,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG41NH1E8NY2HAP1PQEZH\",\"runId\":\"01M53HG41NH1E8NY2HAP1PQEZH\",\"socketPath\":\"/tmp/relayflowd-f57184e97d7f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"b4a2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; exit 4","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b4 >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2340} +{"s":"TV1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"a2b4X","resumeMs":528,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG4HDQTJ4E24T59QDCAGW\",\"runId\":\"01M53HG4HDQTJ4E24T59QDCAGW\",\"socketPath\":\"/tmp/relayflowd-950426434b77.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2b4XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf vv","run-3 c=1 sleep 0.1; exit 4","run-4 c=1 printf a2 >> effects","run-5 c=1 printf b4 >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1710} +{"s":"TV1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"a2b4X","resumeMs":541,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG5X1XDQS8XH1K8XNT1BQ\",\"runId\":\"01M53HG5X1XDQS8XH1K8XNT1BQ\",\"socketPath\":\"/tmp/relayflowd-d1a535f213c4.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2b4XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf vv","run-3 c=1 sleep 0.1; exit 4","run-4 c=1 printf a2 >> effects","run-5 c=1 printf b4 >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1809} +{"s":"TV1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"a2b4X","resumeMs":559,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG65AZKBNKVGJ3GGFTZMM\",\"runId\":\"01M53HG65AZKBNKVGJ3GGFTZMM\",\"socketPath\":\"/tmp/relayflowd-eafded0dffd6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2b4XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf vv","run-3 c=1 sleep 0.1; exit 4","run-4 c=1 printf a2 >> effects","run-5 c=1 printf b4 >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1909} +{"s":"TV1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"a2b4X","resumeMs":497,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG6749NJTQ1076QR86T43\",\"runId\":\"01M53HG6749NJTQ1076QR86T43\",\"socketPath\":\"/tmp/relayflowd-41500aa99dcb.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2b4XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf vv","run-3 c=1 sleep 0.1; exit 4","run-4 c=1 printf a2 >> effects","run-5 c=1 printf b4 >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1967} +{"s":"TV1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"a2b4X","resumeMs":555,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG7P2M6B0WTQGPSQQT16G\",\"runId\":\"01M53HG7P2M6B0WTQGPSQQT16G\",\"socketPath\":\"/tmp/relayflowd-305a58d17b9e.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2b4XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf vv","run-3 c=1 sleep 0.1; exit 4","run-4 c=1 printf a2 >> effects","run-5 c=1 printf b4 >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2154} +{"s":"EP1","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"bya2X","resumeMs":713,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG86S0NJCNW6JBCS2MSPK\",\"runId\":\"01M53HG86S0NJCNW6JBCS2MSPK\",\"socketPath\":\"/tmp/relayflowd-2d6f2dcfd86c.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bya2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf by >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1906} +{"s":"EP1","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"bya2X","resumeMs":741,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG89N0SH17SXRB275M73X\",\"runId\":\"01M53HG89N0SH17SXRB275M73X\",\"socketPath\":\"/tmp/relayflowd-b78b5d6bd9d5.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bya2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf by >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1991} +{"s":"EP1","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"bya2X","resumeMs":734,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HG9ZMTQ7BTBZK6HHJ9HP3\",\"runId\":\"01M53HG9ZMTQ7BTBZK6HHJ9HP3\",\"socketPath\":\"/tmp/relayflowd-43c6dde8bf6a.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bya2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf by >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2106} +{"s":"EP1","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"bya2X","resumeMs":705,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGA0VADSCNQSTF9G28JMA\",\"runId\":\"01M53HGA0VADSCNQSTF9G28JMA\",\"socketPath\":\"/tmp/relayflowd-7b28600447f6.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bya2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf by >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2076} +{"s":"EP1","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"bya2X","resumeMs":722,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGA8E77P8999B9XQ6FXEZ\",\"runId\":\"01M53HGA8E77P8999B9XQ6FXEZ\",\"socketPath\":\"/tmp/relayflowd-7f029e856b71.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bya2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf by >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2265} +{"s":"EP1","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"a2byX","resumeMs":614,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGBY3A6D56F23ZKAMSJB2\",\"runId\":\"01M53HGBY3A6D56F23ZKAMSJB2\",\"socketPath\":\"/tmp/relayflowd-9d8124d2a5f2.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2byXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a2 >> effects","run-5 c=1 printf by >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1763} +{"s":"EP1","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"a2byX","resumeMs":602,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGC9PEQDD45NVRZNSR5YF\",\"runId\":\"01M53HGC9PEQDD45NVRZNSR5YF\",\"socketPath\":\"/tmp/relayflowd-4a7596e7b400.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2byXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a2 >> effects","run-5 c=1 printf by >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1792} +{"s":"EP1","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"bya2X","resumeMs":778,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGC0W3JHWRT7WGVTBDW4Q\",\"runId\":\"01M53HGC0W3JHWRT7WGVTBDW4Q\",\"socketPath\":\"/tmp/relayflowd-a43264a137e1.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bya2XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf by >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a2 >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2421} +{"s":"EP1","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"a2byX","resumeMs":541,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGDP479Q1RB3JY25PQ68C\",\"runId\":\"01M53HGDP479Q1RB3JY25PQ68C\",\"socketPath\":\"/tmp/relayflowd-becbf13b37af.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2byXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a2 >> effects","run-5 c=1 printf by >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1852} +{"s":"EP1","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"a2byX","resumeMs":549,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGE38665F1B8ZRGX7S9C4\",\"runId\":\"01M53HGE38665F1B8ZRGX7S9C4\",\"socketPath\":\"/tmp/relayflowd-4367da4409f0.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2byXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a2 >> effects","run-5 c=1 printf by >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1963} +{"s":"EP1","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"a2byX","resumeMs":501,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGE7CM6FBSWYD1RZC48D8\",\"runId\":\"01M53HGE7CM6FBSWYD1RZC48D8\",\"socketPath\":\"/tmp/relayflowd-f420b325fd1a.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2byXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a2 >> effects","run-5 c=1 printf by >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1979} +{"s":"FT1wrap","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/FT1wrap/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53HGG54KABFN5ASA5BQ5DT7\",\"socketPath\":\"/tmp/relayflowd-15ce5dbf4552.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1181} +{"s":"FT1wrap","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/FT1wrap/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53HGGARV15J9KKC5B2R5TTX\",\"socketPath\":\"/tmp/relayflowd-26b07f5700dd.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1184} +{"s":"EP1","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"a2byX","resumeMs":597,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGFFNGW7B1218VKBHQB8K\",\"runId\":\"01M53HGFFNGW7B1218VKBHQB8K\",\"socketPath\":\"/tmp/relayflowd-bed7ca983463.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"a2byXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf vv","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf a2 >> effects","run-5 c=1 printf by >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2222} +{"s":"FT1wrap","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/FT1wrap/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53HGHAXGEKJTYN7REAB5P55\",\"socketPath\":\"/tmp/relayflowd-2dcbffed0424.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1209} +{"s":"FT1wrap","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/FT1wrap/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53HGHG47SZHYVNKNTYCHB08\",\"socketPath\":\"/tmp/relayflowd-159d9040f66e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1176} +{"s":"FT1wrap","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/FT1wrap/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53HGHSJ6WKAEAM6N9PNPAK8\",\"socketPath\":\"/tmp/relayflowd-57c6fa28b9d7.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A"],"letterDup":false,"replay":false,"ok":false,"ms":1145} +{"s":"FT1wrap","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate\"}],\"path\":\"/w/runs/r9finals8/FT1wrap/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53HGJF7A5KTZ9EQZ987HWG4\",\"socketPath\":\"/tmp/relayflowd-6c76c504ea28.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B"],"letterDup":false,"replay":false,"ok":false,"ms":1147} +{"s":"FT1wrap","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"X","resumeMs":507,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGJEKTB9317WKD5GW18Q2\",\"runId\":\"01M53HGJEKTB9317WKD5GW18Q2\",\"socketPath\":\"/tmp/relayflowd-8f01ec000bb0.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1712} +{"s":"FT1wrap","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"X","resumeMs":503,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGJR31F6C94WJ9KMTMCJE\",\"runId\":\"01M53HGJR31F6C94WJ9KMTMCJE\",\"socketPath\":\"/tmp/relayflowd-d4af43063406.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1804} +{"s":"FT1wrap","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"X","resumeMs":519,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGKDKJ5REPFE8CH3QVTWS\",\"runId\":\"01M53HGKDKJ5REPFE8CH3QVTWS\",\"socketPath\":\"/tmp/relayflowd-738c882a9afd.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1876} +{"s":"FT1wrap","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"X","resumeMs":505,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGM3MFENPMFMW3KN2MJTW\",\"runId\":\"01M53HGM3MFENPMFMW3KN2MJTW\",\"socketPath\":\"/tmp/relayflowd-af8270680e77.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1931} +{"s":"FT1wrap","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"X","resumeMs":512,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGMG43456S7CFYHDZQ95B\",\"runId\":\"01M53HGMG43456S7CFYHDZQ95B\",\"socketPath\":\"/tmp/relayflowd-0dfb53786f3c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2036} +{"s":"FT1wrap","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"X","resumeMs":561,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGN93805GMHAHAVW1WDV3\",\"runId\":\"01M53HGN93805GMHAHAVW1WDV3\",\"socketPath\":\"/tmp/relayflowd-9693772591ef.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2238} +{"s":"FT2asyncStep","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","resumeMs":758,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGP6074SARPMF6B27G0ST\",\"runId\":\"01M53HGP6074SARPMF6B27G0ST\",\"socketPath\":\"/tmp/relayflowd-69003adaed33.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2040} +{"s":"FT2asyncStep","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","resumeMs":699,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGPN94JDQVF0X5M9XMF7Q\",\"runId\":\"01M53HGPN94JDQVF0X5M9XMF7Q\",\"socketPath\":\"/tmp/relayflowd-008777f00709.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2036} +{"s":"FT2asyncStep","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","resumeMs":648,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGQMVGA1SRGHW1Q453X7D\",\"runId\":\"01M53HGQMVGA1SRGHW1Q453X7D\",\"socketPath\":\"/tmp/relayflowd-2b32d0ace288.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2098} +{"s":"FT2asyncStep","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","resumeMs":690,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGR5ND5G2X6VQVF38CS0X\",\"runId\":\"01M53HGR5ND5G2X6VQVF38CS0X\",\"socketPath\":\"/tmp/relayflowd-be02fb5c88d5.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2183} +{"s":"FT2asyncStep","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","resumeMs":640,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGRM74B5C2BV3DYPZM42D\",\"runId\":\"01M53HGRM74B5C2BV3DYPZM42D\",\"socketPath\":\"/tmp/relayflowd-f45317f03803.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2226} +{"s":"FT2asyncStep","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"X","resumeMs":521,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGT3WDHB6RY7B2TVSW92F\",\"runId\":\"01M53HGT3WDHB6RY7B2TVSW92F\",\"socketPath\":\"/tmp/relayflowd-be92ca042360.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1702} +{"s":"FT2asyncStep","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","resumeMs":641,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGSNKQJEKMKP8XWX04RNY\",\"runId\":\"01M53HGSNKQJEKMKP8XWX04RNY\",\"socketPath\":\"/tmp/relayflowd-ad88811f86b0.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-6108a797cbef3f3fbc44e21cd10e0fd52397f262b058de4548a64e228a3ff826-1 c=1 printf X >> effects","run-after-c6968c6d4c7df0991abc260c19c039ec4af45f7c64dab454ee640d6fa721837e-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2375} +{"s":"FT2asyncStep","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"X","resumeMs":475,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGTMY7GHJW3YS5WEC3FCS\",\"runId\":\"01M53HGTMY7GHJW3YS5WEC3FCS\",\"socketPath\":\"/tmp/relayflowd-9fab0378e42c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1747} +{"s":"FT2asyncStep","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"X","resumeMs":461,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGVSTTGFWK3GJW88DPXCK\",\"runId\":\"01M53HGVSTTGFWK3GJW88DPXCK\",\"socketPath\":\"/tmp/relayflowd-7c94d16366ac.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1804} +{"s":"FT2asyncStep","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"X","resumeMs":451,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGVT7P2BTPB0VQXMY49WE\",\"runId\":\"01M53HGVT7P2BTPB0VQXMY49WE\",\"socketPath\":\"/tmp/relayflowd-018fd1b7bf25.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1883} +{"s":"FT2asyncStep","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"X","resumeMs":468,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGWC00ZP2VDGRGHA3MVE0\",\"runId\":\"01M53HGWC00ZP2VDGRGHA3MVE0\",\"socketPath\":\"/tmp/relayflowd-5ac03eea056a.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2013} +{"s":"FT3retThen","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"X","resumeMs":694,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGXT3DDS1DA9XKGBY5ZCV\",\"runId\":\"01M53HGXT3DDS1DA9XKGBY5ZCV\",\"socketPath\":\"/tmp/relayflowd-a743fdba561d.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf X >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1976} +{"s":"FT2asyncStep","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"X","resumeMs":483,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGXHT8NVRBC491B1DH0TH\",\"runId\":\"01M53HGXHT8NVRBC491B1DH0TH\",\"socketPath\":\"/tmp/relayflowd-68770beace37.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2139} +{"s":"FT3retThen","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"X","resumeMs":685,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGYFFWSCZCSB8PHNZXZB4\",\"runId\":\"01M53HGYFFWSCZCSB8PHNZXZB4\",\"socketPath\":\"/tmp/relayflowd-d5fdb6372e53.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf X >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2017} +{"s":"FT3retThen","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"X","resumeMs":680,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGZRGTJ41HJERS9PNSTJG\",\"runId\":\"01M53HGZRGTJ41HJERS9PNSTJG\",\"socketPath\":\"/tmp/relayflowd-e5a944daab29.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf X >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2105} +{"s":"FT3retThen","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"X","resumeMs":659,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HGZTPA131CJPXGCZJ9NRE\",\"runId\":\"01M53HGZTPA131CJPXGCZJ9NRE\",\"socketPath\":\"/tmp/relayflowd-b63ae850d996.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf X >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2183} +{"s":"FT3retThen","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"X","resumeMs":723,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH0EFNDQVWNDGADPZ18R5\",\"runId\":\"01M53HH0EFNDQVWNDGADPZ18R5\",\"socketPath\":\"/tmp/relayflowd-175f78d6af38.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf X >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2317} +{"s":"FT3retThen","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"X","resumeMs":508,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH1T82RKR88SBA1GSEX9A\",\"runId\":\"01M53HH1T82RKR88SBA1GSEX9A\",\"socketPath\":\"/tmp/relayflowd-f038da865306.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1767} +{"s":"FT3retThen","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"X","resumeMs":689,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH1TFK158R59VSTPXV3EM\",\"runId\":\"01M53HH1TFK158R59VSTPXV3EM\",\"socketPath\":\"/tmp/relayflowd-e0693264cd2b.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf X >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2446} +{"s":"FT3retThen","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"X","resumeMs":504,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH2H6YXB7188A7GXDKE75\",\"runId\":\"01M53HH2H6YXB7188A7GXDKE75\",\"socketPath\":\"/tmp/relayflowd-4b2629833b55.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1766} +{"s":"FT3retThen","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"X","resumeMs":505,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH3GB24Q6234JY0VBM15J\",\"runId\":\"01M53HH3GB24Q6234JY0VBM15J\",\"socketPath\":\"/tmp/relayflowd-7d05b966690a.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1864} +{"s":"FT3retThen","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"X","resumeMs":484,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH4031GSTTXDX9DJGKC06\",\"runId\":\"01M53HH4031GSTTXDX9DJGKC06\",\"socketPath\":\"/tmp/relayflowd-dacb10cae06c.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1888} +{"s":"FT3retThen","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"X","resumeMs":510,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH493XYCBR7Z6A967NEYQ\",\"runId\":\"01M53HH493XYCBR7Z6A967NEYQ\",\"socketPath\":\"/tmp/relayflowd-5d47750ec298.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2047} +{"s":"FT3retThen","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"X","resumeMs":512,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH5AGGDCVS33ASFT76BYV\",\"runId\":\"01M53HH5AGGDCVS33ASFT76BYV\",\"socketPath\":\"/tmp/relayflowd-5ef3c1cd5ce9.sock\",\"completedSteps\":6,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-6 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2182} +{"s":"FT4awaitThen","start":"deep","resume":"deep","i":0,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":720,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH609K2FHH7BRQJG971BF\",\"runId\":\"01M53HH609K2FHH7BRQJG971BF\",\"socketPath\":\"/tmp/relayflowd-4e658520e566.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2012} +{"s":"FT4awaitThen","start":"deep","resume":"deep","i":1,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":697,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH6EW4FENZ86N3XAWSSFK\",\"runId\":\"01M53HH6EW4FENZ86N3XAWSSFK\",\"socketPath\":\"/tmp/relayflowd-fcb0b6455779.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2087} +{"s":"FT4awaitThen","start":"deep","resume":"deep","i":2,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":725,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH7MG4ZDZ2PXQJEX1E9VR\",\"runId\":\"01M53HH7MG4ZDZ2PXQJEX1E9VR\",\"socketPath\":\"/tmp/relayflowd-8f2bdcf3f9ec.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2171} +{"s":"FT4awaitThen","start":"deep","resume":"deep","i":3,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":717,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH7ZPD724133416TVWG8C\",\"runId\":\"01M53HH7ZPD724133416TVWG8C\",\"socketPath\":\"/tmp/relayflowd-37542546f3ed.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2223} +{"s":"FT4awaitThen","start":"deep","resume":"deep","i":4,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":670,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH8FEDYKZDDVC1G89AG0Z\",\"runId\":\"01M53HH8FEDYKZDDVC1G89AG0Z\",\"socketPath\":\"/tmp/relayflowd-cb1df98233c5.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2289} +{"s":"FT4awaitThen","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":581,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHA03ASDEN7VP5V3TT8TN\",\"runId\":\"01M53HHA03ASDEN7VP5V3TT8TN\",\"socketPath\":\"/tmp/relayflowd-e5f9edd9804f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf b >> effects","run-5 c=1 printf a >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1799} +{"s":"FT4awaitThen","start":"deep","resume":"deep","i":5,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":817,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HH9QPJWYQENRPZ4E6W9MH\",\"runId\":\"01M53HH9QPJWYQENRPZ4E6W9MH\",\"socketPath\":\"/tmp/relayflowd-01725505cc5a.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 sleep 0.1; printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.3; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2566} +{"s":"FT4awaitThen","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":577,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHAJJYYC6RH7GFWS5CY4D\",\"runId\":\"01M53HHAJJYYC6RH7GFWS5CY4D\",\"socketPath\":\"/tmp/relayflowd-30451a7d531b.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf b >> effects","run-5 c=1 printf a >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1926} +{"s":"FT4awaitThen","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":551,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHBV6J098CF1VXZW4GC4Q\",\"runId\":\"01M53HHBV6J098CF1VXZW4GC4Q\",\"socketPath\":\"/tmp/relayflowd-5ba30c21a103.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf b >> effects","run-5 c=1 printf a >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2001} +{"s":"FT4awaitThen","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":545,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHC2VDXFXP0SRF33RZPEK\",\"runId\":\"01M53HHC2VDXFXP0SRF33RZPEK\",\"socketPath\":\"/tmp/relayflowd-8623c24f9eef.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf b >> effects","run-5 c=1 printf a >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2016} +{"s":"FT4awaitThen","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":555,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHCEE2GDEDS18GXBKFTR9\",\"runId\":\"01M53HHCEE2GDEDS18GXBKFTR9\",\"socketPath\":\"/tmp/relayflowd-7e6551d92043.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf b >> effects","run-5 c=1 printf a >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2101} +{"s":"FT5wrapped","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/FT5wrapped/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53HHE9YQBKWT4FQ5FNV2STG\",\"socketPath\":\"/tmp/relayflowd-ba02d6fbc91d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":898} +{"s":"FT5wrapped","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/FT5wrapped/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53HHEN42Z3PVANH2BT5D13Y\",\"socketPath\":\"/tmp/relayflowd-e41bee9e3464.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":809} +{"s":"FT5wrapped","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/FT5wrapped/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53HHF3EBK4RHZNJ5376BG78\",\"socketPath\":\"/tmp/relayflowd-f51b38e68be1.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":838} +{"s":"FT4awaitThen","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"baX","resumeMs":522,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHDPRXPH9Q2694CTBK2KR\",\"runId\":\"01M53HHDPRXPH9Q2694CTBK2KR\",\"socketPath\":\"/tmp/relayflowd-0b371186c857.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"baXZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-2 c=1 sleep 0.3; printf A","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf b >> effects","run-5 c=1 printf a >> effects","run-6 c=1 printf X >> effects","run-7 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2206} +{"s":"FT5wrapped","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/FT5wrapped/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53HHFEGF15CR78C48J8ZXBN\",\"socketPath\":\"/tmp/relayflowd-0ac2d2d53090.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":823} +{"s":"FT5wrapped","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/FT5wrapped/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53HHFXJ6FH9NME6M8ZSQSTE\",\"socketPath\":\"/tmp/relayflowd-6841b4b4542b.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":840} +{"s":"FT5wrapped","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"","effects1":"","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/FT5wrapped/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53HHG0ZDNEVG0KVZ52QXD8E\",\"socketPath\":\"/tmp/relayflowd-61a51dc41e79.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W"],"letterDup":false,"replay":false,"ok":false,"ms":796} +{"s":"FT5wrapped","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"X","resumeMs":437,"code":1,"out":" for run-1 (f.run) rejected: unawaited_step: flow \"ft5wrapped\" returned with unawaited steps: run-2 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"ft5wrapped\\\" derived handler for run-1 (f.run) rejected: unawaited_step: flow \\\"ft5wrapped\\\" returned with unawaited steps: run-2 (f.run)\"}],\"rootRunId\":\"01M53HHG2JNH852PFHZ1QZX1QT\",\"runId\":\"01M53HHG2JNH852PFHZ1QZX1QT\",\"socketPath\":\"/tmp/relayflowd-942fb8b99c3c.sock\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1300} +{"s":"FT5wrapped","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"X","resumeMs":440,"code":1,"out":" for run-1 (f.run) rejected: unawaited_step: flow \"ft5wrapped\" returned with unawaited steps: run-2 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"ft5wrapped\\\" derived handler for run-1 (f.run) rejected: unawaited_step: flow \\\"ft5wrapped\\\" returned with unawaited steps: run-2 (f.run)\"}],\"rootRunId\":\"01M53HHGJ3VPA61GVR3HXCFMHW\",\"runId\":\"01M53HHGJ3VPA61GVR3HXCFMHW\",\"socketPath\":\"/tmp/relayflowd-6b19f099e0cf.sock\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1373} +{"s":"FT5wrapped","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"X","resumeMs":440,"code":1,"out":" for run-1 (f.run) rejected: unawaited_step: flow \"ft5wrapped\" returned with unawaited steps: run-2 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"ft5wrapped\\\" derived handler for run-1 (f.run) rejected: unawaited_step: flow \\\"ft5wrapped\\\" returned with unawaited steps: run-2 (f.run)\"}],\"rootRunId\":\"01M53HHGMV8CYKSBQVMB48K8MV\",\"runId\":\"01M53HHGMV8CYKSBQVMB48K8MV\",\"socketPath\":\"/tmp/relayflowd-efa313a75c53.sock\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1446} +{"s":"FT5wrapped","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"X","resumeMs":454,"code":1,"out":" for run-1 (f.run) rejected: unawaited_step: flow \"ft5wrapped\" returned with unawaited steps: run-2 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"ft5wrapped\\\" derived handler for run-1 (f.run) rejected: unawaited_step: flow \\\"ft5wrapped\\\" returned with unawaited steps: run-2 (f.run)\"}],\"rootRunId\":\"01M53HHHBMAS3W63PCHDBJWZ5P\",\"runId\":\"01M53HHHBMAS3W63PCHDBJWZ5P\",\"socketPath\":\"/tmp/relayflowd-2456486279e7.sock\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1549} +{"s":"FT5wrapped","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"X","resumeMs":474,"code":1,"out":" for run-1 (f.run) rejected: unawaited_step: flow \"ft5wrapped\" returned with unawaited steps: run-2 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"ft5wrapped\\\" derived handler for run-1 (f.run) rejected: unawaited_step: flow \\\"ft5wrapped\\\" returned with unawaited steps: run-2 (f.run)\"}],\"rootRunId\":\"01M53HHHX6NGPC6KXGX9DDAKQQ\",\"runId\":\"01M53HHHX6NGPC6KXGX9DDAKQQ\",\"socketPath\":\"/tmp/relayflowd-5d22245a41fb.sock\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1674} +{"s":"FT5wrapped","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"X","resumeMs":466,"code":1,"out":" for run-1 (f.run) rejected: unawaited_step: flow \"ft5wrapped\" returned with unawaited steps: run-2 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"ft5wrapped\\\" derived handler for run-1 (f.run) rejected: unawaited_step: flow \\\"ft5wrapped\\\" returned with unawaited steps: run-2 (f.run)\"}],\"rootRunId\":\"01M53HHJ24XC37C3K0NKBB2GSA\",\"runId\":\"01M53HHJ24XC37C3K0NKBB2GSA\",\"socketPath\":\"/tmp/relayflowd-375dff270606.sock\",\"subscriptions\":[]}\n","effects":"XZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-3 c=1 sleep 0.1; printf B","run-4 c=1 printf X >> effects","run-5 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1787} +{"s":"F5x","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5x/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53HHK1M3D0F0JXH494FGXSB\",\"socketPath\":\"/tmp/relayflowd-5baa7a19d061.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1248} +{"s":"F5x","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5x/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53HHKQ6K63CZJT1MJA800SH\",\"socketPath\":\"/tmp/relayflowd-05026a492f11.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1236} +{"s":"F5x","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5x/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53HHM0F3BHY73ZS5AHHZF40\",\"socketPath\":\"/tmp/relayflowd-23b4cebe4e3f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.6; printf B >> effects","run-1 c=1 sleep 0.1; printf A >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1268} +{"s":"F5x","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5x/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53HHM8WPBX18FSB8MHDN4GP\",\"socketPath\":\"/tmp/relayflowd-0724eed0a1f4.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.6; printf B >> effects","run-1 c=1 sleep 0.1; printf A >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1245} +{"s":"F5x","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5x/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53HHMXFYT9RG4P8TQMRZ5HD\",\"socketPath\":\"/tmp/relayflowd-683bdc2d1630.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1254} +{"s":"F5x","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5x/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53HHN6WARD8F2V6TBPJ50TP\",\"socketPath\":\"/tmp/relayflowd-47bf61a998ce.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects"],"letterDup":false,"replay":false,"ok":true,"ms":1220} +{"s":"F5x","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":493,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHNA8YP7WYNMJHM17FEKD\",\"runId\":\"01M53HHNA8YP7WYNMJHM17FEKD\",\"socketPath\":\"/tmp/relayflowd-a460be11ab3b.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1820} +{"s":"F5x","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":491,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHNZ1APYAX3P0BN3A91FW\",\"runId\":\"01M53HHNZ1APYAX3P0BN3A91FW\",\"socketPath\":\"/tmp/relayflowd-4e613407f0bc.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1839} +{"s":"F5x","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":512,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHP7A6HQ6FSBG4FNM13SC\",\"runId\":\"01M53HHP7A6HQ6FSBG4FNM13SC\",\"socketPath\":\"/tmp/relayflowd-34376e9de133.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1947} +{"s":"F5x","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":471,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHQ2QZT0HR8SG3DR23NHM\",\"runId\":\"01M53HHQ2QZT0HR8SG3DR23NHM\",\"socketPath\":\"/tmp/relayflowd-8f766a8c4e8c.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":1975} +{"s":"F5x","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":475,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHQRV6Y6XSVTJNZ35YE0Z\",\"runId\":\"01M53HHQRV6Y6XSVTJNZ35YE0Z\",\"socketPath\":\"/tmp/relayflowd-64875a97548f.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2107} +{"s":"F5x","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":487,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HHR4ZK29R8CT66B3K4XSR\",\"runId\":\"01M53HHR4ZK29R8CT66B3K4XSR\",\"socketPath\":\"/tmp/relayflowd-5c5564f5c205.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 0.6; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":2275} +{"s":"F5w","start":"deep","resume":"deep","i":0,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5w/deep-deep-0/chain.flow.ts\",\"rootRunId\":\"01M53HHS4WVBHTXPJF8SS8MCTM\",\"socketPath\":\"/tmp/relayflowd-77b03643c756.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 15; printf B >> effects","run-1 c=1 sleep 0.1; printf A >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":15621} +{"s":"F5w","start":"deep","resume":"deep","i":1,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5w/deep-deep-1/chain.flow.ts\",\"rootRunId\":\"01M53HHSZM5HTSJZTV34E3QZY6\",\"socketPath\":\"/tmp/relayflowd-65086b83b26a.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":15606} +{"s":"F5w","start":"deep","resume":"deep","i":2,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5w/deep-deep-2/chain.flow.ts\",\"rootRunId\":\"01M53HHTHMJ3JZM1ACGCZ1T6VW\",\"socketPath\":\"/tmp/relayflowd-167006f1048e.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":15641} +{"s":"F5w","start":"deep","resume":"deep","i":3,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5w/deep-deep-3/chain.flow.ts\",\"rootRunId\":\"01M53HJ8G148ZVDY5AJD1YBQR1\",\"socketPath\":\"/tmp/relayflowd-67c63013163c.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":15717} +{"s":"F5w","start":"deep","resume":"deep","i":4,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5w/deep-deep-4/chain.flow.ts\",\"rootRunId\":\"01M53HJ98A3CRKBPM24PHAB2GJ\",\"socketPath\":\"/tmp/relayflowd-f1d37c0dbe6d.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":15678} +{"s":"F5w","start":"deep","resume":"deep","i":5,"fresh":true,"code1":1,"code":1,"effects":"AB","effects1":"AB","out1":"FAILED [step_failed] parallel Promise.all contains a member with no tracked provenance\n{\"ok\":false,\"command\":\"run\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"parallel Promise.all contains a member with no tracked provenance\"}],\"path\":\"/w/runs/r9finals8/F5w/deep-deep-5/chain.flow.ts\",\"rootRunId\":\"01M53HJ9TPTVR126T113T7NVPK\",\"socketPath\":\"/tmp/relayflowd-f242a3d4a112.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 15; printf B >> effects","run-1 c=1 sleep 0.1; printf A >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":15663} +{"s":"F5w","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":483,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HJQMHAQQA954EM6M0AVX1\",\"runId\":\"01M53HJQMHAQQA954EM6M0AVX1\",\"socketPath\":\"/tmp/relayflowd-25b22e7260f3.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":16224} +{"s":"F5w","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":482,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HJRCJ0MQV7P6X38Z4715J\",\"runId\":\"01M53HJRCJ0MQV7P6X38Z4715J\",\"socketPath\":\"/tmp/relayflowd-981e43fe4d0a.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":16246} +{"s":"F5w","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":468,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HJRYF6WJ3PRT4YY61NQJC\",\"runId\":\"01M53HJRYF6WJ3PRT4YY61NQJC\",\"socketPath\":\"/tmp/relayflowd-133008a4fbf2.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":16328} +{"s":"F5w","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":504,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HK7EJN1ZJY7J14PBEYN4A\",\"runId\":\"01M53HK7EJN1ZJY7J14PBEYN4A\",\"socketPath\":\"/tmp/relayflowd-b44c53bf10bf.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":16454} +{"s":"F5w","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":485,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HK87XXFM795SY4RRDMQE7\",\"runId\":\"01M53HK87XXFM795SY4RRDMQE7\",\"socketPath\":\"/tmp/relayflowd-813062055639.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":16516} +{"s":"F5w","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"ABLQ","resumeMs":466,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HK8W32W6YM6G6F10MEY51\",\"runId\":\"01M53HK8W32W6YM6G6F10MEY51\",\"socketPath\":\"/tmp/relayflowd-e0319a904898.sock\",\"completedSteps\":7,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"ABLQZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf A >> effects","run-2 c=1 sleep 15; printf B >> effects","run-3 c=1 printf a1","run-4 c=1 printf L >> effects","run-5 c=1 printf Q >> effects","run-6 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-7 c=1 :"],"letterDup":false,"replay":false,"ok":false,"ms":16614} +{"s":"SEC8m","start":"head","resume":"head","i":0,"fresh":false,"code1":"killed","effects1":"","resumeMs":1162,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKQMKQ0QRJT1SPBXHN2RE\",\"runId\":\"01M53HKQMKQ0QRJT1SPBXHN2RE\",\"socketPath\":\"/tmp/relayflowd-10ed45999493.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=2 sleep 0.15; printf U","run-1 c=1 sleep 0.1; printf G","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-0/g","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/he","run-after-0fb6dd51631e99823391b1ff2cc3891b0438ac5ccd7315dc79270634c2618466-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-0/l","run-after-8dcc8ebba2039a748abe59390f0d4fafc59632255b454368c2175c6d5a857890-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1925} +{"s":"SEC8m","start":"head","resume":"head","i":1,"fresh":false,"code1":"killed","effects1":"","resumeMs":992,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKRHDKR3BT8JWNRQGYVXV\",\"runId\":\"01M53HKRHDKR3BT8JWNRQGYVXV\",\"socketPath\":\"/tmp/relayflowd-fc7597d1d0ba.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.15; printf U","run-1 c=1 sleep 0.1; printf G","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=2 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/he","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-1/g","run-after-0fb6dd51631e99823391b1ff2cc3891b0438ac5ccd7315dc79270634c2618466-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-1/l","run-after-8dcc8ebba2039a748abe59390f0d4fafc59632255b454368c2175c6d5a857890-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1865} +{"s":"SEC8m","start":"head","resume":"head","i":2,"fresh":false,"code1":"killed","effects1":"","resumeMs":1010,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKS9G3NMT61A80PSXJVRM\",\"runId\":\"01M53HKS9G3NMT61A80PSXJVRM\",\"socketPath\":\"/tmp/relayflowd-4deed2d4e06a.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=2 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/he","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-2/g","run-after-0fb6dd51631e99823391b1ff2cc3891b0438ac5ccd7315dc79270634c2618466-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-2/l","run-after-8dcc8ebba2039a748abe59390f0d4fafc59632255b454368c2175c6d5a857890-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":2001} +{"s":"SEC8m","start":"head","resume":"head","i":3,"fresh":false,"code1":"killed","effects1":"","resumeMs":993,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKSJKQA2TPHQ30G2FCPAP\",\"runId\":\"01M53HKSJKQA2TPHQ30G2FCPAP\",\"socketPath\":\"/tmp/relayflowd-bd02f05faf5f.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-2 c=1 sleep 0.15; printf U","run-1 c=1 sleep 0.1; printf G","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=2 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/he","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-3/g","run-after-0fb6dd51631e99823391b1ff2cc3891b0438ac5ccd7315dc79270634c2618466-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-3/l","run-after-8dcc8ebba2039a748abe59390f0d4fafc59632255b454368c2175c6d5a857890-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":2020} +{"s":"SEC8m","start":"head","resume":"head","i":4,"fresh":false,"code1":"killed","effects1":"","resumeMs":1008,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKTC9VPMTWSTPH48J84QH\",\"runId\":\"01M53HKTC9VPMTWSTPH48J84QH\",\"socketPath\":\"/tmp/relayflowd-4b4a18732680.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=2 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/he","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-4/g","run-after-0fb6dd51631e99823391b1ff2cc3891b0438ac5ccd7315dc79270634c2618466-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-4/l","run-after-8dcc8ebba2039a748abe59390f0d4fafc59632255b454368c2175c6d5a857890-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":2164} +{"s":"SEC8m","start":"head","resume":"head","i":5,"fresh":false,"code1":"killed","effects1":"","resumeMs":715,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKV7PXV3VQ95GG49SQ83Y\",\"runId\":\"01M53HKV7PXV3VQ95GG49SQ83Y\",\"socketPath\":\"/tmp/relayflowd-74b5ce048487.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-after-5642cfab48b0887bc299b9316f1b0a7c5b61429fda2e147c4264f5163cf0e9d6-1 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/he","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-5/g","run-after-0fb6dd51631e99823391b1ff2cc3891b0438ac5ccd7315dc79270634c2618466-1 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/head-head-5/l","run-after-8dcc8ebba2039a748abe59390f0d4fafc59632255b454368c2175c6d5a857890-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":2002} +{"s":"SEC8m","start":"base","resume":"base","i":0,"fresh":false,"code1":"killed","effects1":"","resumeMs":885,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKVC93DJPB4CAWQSZWTG2\",\"runId\":\"01M53HKVC93DJPB4CAWQSZWTG2\",\"socketPath\":\"/tmp/relayflowd-d9bab357613e.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-4 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/ba","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-0/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-0/l","run-7 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1711} +{"s":"SEC8m","start":"base","resume":"base","i":1,"fresh":false,"code1":"killed","effects1":"","resumeMs":821,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKW8QJPW7D88R48TNSJS8\",\"runId\":\"01M53HKW8QJPW7D88R48TNSJS8\",\"socketPath\":\"/tmp/relayflowd-5ba5231b2a7e.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-4 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/ba","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-1/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-1/l","run-7 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1648} +{"s":"SEC8m","start":"base","resume":"base","i":2,"fresh":false,"code1":"killed","effects1":"","resumeMs":811,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKX1DAM6FRYP6KCGMHCYF\",\"runId\":\"01M53HKX1DAM6FRYP6KCGMHCYF\",\"socketPath\":\"/tmp/relayflowd-508fe689bc87.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-4 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/ba","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-2/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-2/l","run-7 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1783} +{"s":"SEC8m","start":"base","resume":"base","i":3,"fresh":false,"code1":"killed","effects1":"","resumeMs":821,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKX2D1DHAY8EM2HKC0B4T\",\"runId\":\"01M53HKX2D1DHAY8EM2HKC0B4T\",\"socketPath\":\"/tmp/relayflowd-b4e9a0882b77.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-4 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/ba","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-3/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-3/l","run-7 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1856} +{"s":"SEC8m","start":"base","resume":"base","i":4,"fresh":false,"code1":"killed","effects1":"","resumeMs":838,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKXXSRKAWHMEB5S3XEVPS\",\"runId\":\"01M53HKXXSRKAWHMEB5S3XEVPS\",\"socketPath\":\"/tmp/relayflowd-a1d77d1e5db4.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-4 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/ba","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-4/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-4/l","run-7 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":1988} +{"s":"SEC8m","start":"base","resume":"base","i":5,"fresh":false,"code1":"killed","effects1":"","resumeMs":866,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HKYRGNAAPH0BHC6ZC4Q8W\",\"runId\":\"01M53HKYRGNAAPH0BHC6ZC4Q8W\",\"socketPath\":\"/tmp/relayflowd-114969b5341a.sock\",\"completedSteps\":8,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"YZ","mode":"absent","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.1; printf G","run-2 c=1 sleep 0.15; printf U","run-3 c=2 test -f release || { touch stalled; sleep 120; }; printf Y >> effects","run-4 c=1 sleep 0.3; printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/ba","run-5 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-5/g","run-6 c=1 printf \"%s\" \"${R7_TOK:-unset}\" > /w/runs/r9finals8/SEC8m/base-base-5/l","run-7 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-8 c=1 :"],"letterDup":false,"replay":false,"sec":"granted2:ok ungranted2:unset later:unset","ok":true,"ms":2138} +SUMMARY PL8r head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL8r base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY PL8rplain head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL8rplain base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY PL8hide head>head ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects=b +SUMMARY PL8hide base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY PL8iter head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL8iter base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY PL9dep head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL9dep base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY PL9depsnap head>head ok=6/6 replay=0 fresh=0 mode=serial codes=0 effects=abcXZ +SUMMARY PL9depsnap base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY PL9depnone head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY PL9depnone base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS1 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS1bh head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS1bb base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS2 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS2 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS2bh head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS2bb base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS3 head>head ok=0/6 replay=0 fresh=0 mode=parallel codes=2 effects=bcaX +SUMMARY RS3 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS3bh head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS3bb base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS0 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS0 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY RS0bh head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bcaXZ +SUMMARY RS0bb base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abcXZ +SUMMARY DP1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=baXZ +SUMMARY DP1 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abXZ +SUMMARY OPT1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=baXZ +SUMMARY OPT1 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=abXZ +SUMMARY TV1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=b4a2XZ +SUMMARY TV1 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=a2b4XZ +SUMMARY EP1 head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=bya2XZ +SUMMARY EP1 base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=a2byXZ +SUMMARY FT1wrap deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FT1wrap base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=XZ +SUMMARY FT2asyncStep deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FT2asyncStep base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=XZ +SUMMARY FT3retThen deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=XZ +SUMMARY FT3retThen base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=XZ +SUMMARY FT4awaitThen deep>deep ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=baXZ +SUMMARY FT4awaitThen base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=baXZ +SUMMARY FT5wrapped deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects= +SUMMARY FT5wrapped base>base ok=0/6 replay=0 fresh=0 mode=absent codes=1 effects=XZ +SUMMARY F5x deep>deep ok=6/6 replay=0 fresh=6 mode=parallel codes=1 effects=AB +SUMMARY F5x base>base ok=0/6 replay=0 fresh=0 mode=absent codes=0 effects=ABLQZ +SUMMARY F5w deep>deep ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects=AB +SUMMARY F5w base>base ok=0/6 replay=0 fresh=0 mode=absent codes=0 effects=ABLQZ +SUMMARY SEC8m head>head ok=6/6 replay=0 fresh=0 mode=parallel codes=0 effects=YZ +SUMMARY SEC8m base>base ok=6/6 replay=0 fresh=0 mode=absent codes=0 effects=YZ diff --git a/evidence/native-parallel-review9/final-timing.log b/evidence/native-parallel-review9/final-timing.log new file mode 100644 index 000000000..1d2d0f3d1 --- /dev/null +++ b/evidence/native-parallel-review9/final-timing.log @@ -0,0 +1,22 @@ +{"side":"head","i":0,"code":0,"mode":"parallel","cli":1098,"body":464,"routeSpread":9,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":0,"code":0,"mode":"absent","cli":1869,"body":1389,"routeSpread":661,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":1,"code":0,"mode":"absent","cli":1850,"body":1384,"routeSpread":672,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":1,"code":0,"mode":"parallel","cli":1088,"body":447,"routeSpread":3,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":2,"code":0,"mode":"parallel","cli":1086,"body":449,"routeSpread":6,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":2,"code":0,"mode":"absent","cli":1860,"body":1405,"routeSpread":666,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":3,"code":0,"mode":"absent","cli":1850,"body":1399,"routeSpread":665,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":3,"code":0,"mode":"parallel","cli":1081,"body":462,"routeSpread":6,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":4,"code":0,"mode":"parallel","cli":1100,"body":473,"routeSpread":6,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":4,"code":0,"mode":"absent","cli":1785,"body":1349,"routeSpread":651,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":5,"code":0,"mode":"absent","cli":1811,"body":1349,"routeSpread":652,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":5,"code":0,"mode":"parallel","cli":1109,"body":461,"routeSpread":8,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":6,"code":0,"mode":"parallel","cli":1089,"body":465,"routeSpread":3,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":6,"code":0,"mode":"absent","cli":1842,"body":1383,"routeSpread":657,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":7,"code":0,"mode":"absent","cli":1847,"body":1379,"routeSpread":664,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":7,"code":0,"mode":"parallel","cli":1058,"body":440,"routeSpread":6,"routesOverlap":true,"depsOverlap":true} +{"side":"head","i":8,"code":0,"mode":"parallel","cli":1077,"body":461,"routeSpread":5,"routesOverlap":true,"depsOverlap":true} +{"side":"base","i":8,"code":0,"mode":"absent","cli":1820,"body":1361,"routeSpread":653,"routesOverlap":false,"depsOverlap":false} +{"side":"base","i":9,"code":0,"mode":"absent","cli":1828,"body":1352,"routeSpread":656,"routesOverlap":false,"depsOverlap":false} +{"side":"head","i":9,"code":0,"mode":"parallel","cli":1086,"body":452,"routeSpread":5,"routesOverlap":true,"depsOverlap":true} +TIMING head mode=parallel codes=0 body p50=461 max=473 cli p50=1088 max=1109 spread p50=6 routesOverlap=10/10 depsOverlap=10/10 +TIMING base mode=absent codes=0 body p50=1383 max=1405 cli p50=1847 max=1869 spread p50=661 routesOverlap=0/10 depsOverlap=0/10 diff --git a/evidence/native-parallel-review9/h7.mjs b/evidence/native-parallel-review9/h7.mjs new file mode 100644 index 000000000..353e4dc18 --- /dev/null +++ b/evidence/native-parallel-review9/h7.mjs @@ -0,0 +1,217 @@ +// Review-7 crash/resume harness for flows#667. Runs inside node:22-trixie. +// usage: node --no-warnings h7.mjs [--reps=6] [--conc=3] [--tag=x] [--sides=a:b/c:d] [--keep] +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; +import { createRequire } from 'node:module'; +import { DatabaseSync } from 'node:sqlite'; +globalThis.require = createRequire(import.meta.url); + +const args = process.argv.slice(2); +const opt = (k, d) => { const a = args.find(x => x.startsWith(`--${k}=`)); return a ? a.slice(k.length + 3) : d; }; +const file = args[0]; +const names = args[1]; +const reps = Number(opt('reps', '6')); +const conc = Number(opt('conc', '3')); +const tag = opt('tag', 't'); +const sidesOverride = opt('sides', undefined)?.split('/').map(p => p.split(':')); +const keep = args.includes('--keep'); +const DELAYS = [0, 60, 130, 220, 330, 450, 30, 180, 270, 400]; + +const SIDES = { + head: { cli: '/w/head/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + base: { cli: '/w/base/packages/sdk/dist/cli.js', nm: '/w/base/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + forced: { cli: '/w/forced/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + fix: { cli: '/w/fix/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + deep: { cli: '/w/deep/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + p2050: { cli: '/w/p2050/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2050/node_modules', daemon: '/w/relayflowd-2050' }, + p2051: { cli: '/w/p2051/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2051/node_modules', daemon: '/w/relayflowd-main' }, +}; + +const sleep = ms => new Promise(r => setTimeout(r, ms)); +const read = p => { try { return fs.readFileSync(p, 'utf8'); } catch { return ''; } }; + +function start(side, argv, root, env = {}) { + const s = SIDES[side]; + const child = spawn(process.execPath, [s.cli, ...argv], { + cwd: root, env: { ...process.env, ...env, RELAYFLOWD_BIN: s.daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let out = ''; + child.stdout.on('data', d => { out += d; }); + child.stderr.on('data', d => { out += d; }); + return { child, closed: new Promise(r => child.once('close', (code, signal) => r({ code, signal }))), get out() { return out; } }; +} + +function sweep(root) { + const targets = new Set(); + try { targets.add(JSON.parse(read(path.join(root, 'data/connection.json'))).pid); } catch {} + for (const e of fs.readdirSync('/proc')) { + if (!/^\d+$/.test(e)) continue; + const pid = Number(e); + if (pid === process.pid) continue; + try { + const cwd = fs.readlinkSync(`/proc/${pid}/cwd`); + const cmd = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8'); + if (cwd === root || cwd.startsWith(root + '/') || cmd.includes(root)) targets.add(pid); + } catch {} + } + for (const pid of targets) { try { if (pid) process.kill(pid, 'SIGKILL'); } catch {} } +} + +function journals(root) { + const dir = path.join(root, 'data/runs'); + if (!fs.existsSync(dir)) return []; + return fs.readdirSync(dir).filter(f => f.endsWith('.sqlite3')).sort().map(f => { + let db; + try { db = new DatabaseSync(path.join(dir, f), { readOnly: true }); } catch { return { runId: f.slice(0, -8), step: undefined, completed: 0 }; } + try { + if (!db.prepare("select name from sqlite_master where type='table' and name='entries'").get()) return { runId: f.slice(0, -8), step: undefined, completed: 0 }; + const sp = db.prepare("select payload from entries where entry_type='run.spawned' order by seq limit 1").get(); + const done = db.prepare("select count(*) as n from entries where entry_type='step.completed'").get().n; + const payload = sp ? JSON.parse(sp.payload) : undefined; + const spec = payload?.spec ?? payload?.payload?.spec ?? payload?.run?.spec; + return { runId: f.slice(0, -8), step: spec?.steps?.[0], completed: Number(done) }; + } finally { db.close(); } + }); +} + +function rootOf(js) { return js.find(j => j.step?.id === 'authored-root'); } +function modeOf(r) { + try { const m = JSON.parse(r.step.instruction); return m.executionMode ?? (m.identityVersion ? 'v2?' : 'absent'); } catch { return 'unknown'; } +} + +function replayCheck(js, rootId, expected = {}) { + const seen = new Map(); + const ids = []; + let replay = false; + const dups = []; + for (const j of js) { + if (j.runId === rootId || !j.step) continue; + const st = j.step; + const cmd = st.command ?? st.instruction ?? ''; + ids.push(`${st.id} c=${j.completed} ${String(cmd).slice(0, 70)}`); + if (!st.command) continue; + const ns = st.id.includes('--') ? st.id.slice(0, st.id.lastIndexOf('--')) : ''; + const key = `${ns}|${st.command}`; + const prev = seen.get(key) ?? []; + prev.push({ id: st.id, completed: j.completed }); + seen.set(key, prev); + const distinct = new Set(prev.map(p => p.id)); + if (distinct.size > (expected[st.command] ?? 1) && prev.some(p => p.completed > 0)) { + replay = true; dups.push(`${st.command.slice(0, 50)}: ${[...distinct].join(' & ')}`); + } + } + return { replay, ids, dups }; +} + +async function one(sc, startSide, resumeSide, i) { + const root = `/w/runs/${tag}/${sc.name}/${startSide}-${resumeSide}-${i}`; + fs.rmSync(root, { recursive: true, force: true }); + fs.mkdirSync(root, { recursive: true }); + const nmSide = sc.nmSide ?? startSide; + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync(SIDES[nmSide].nm, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ cli: path.join(root, 'adapter.mjs'), models: ['test-model'] })); + fs.writeFileSync(path.join(root, 'adapter.mjs'), '#!/usr/bin/env node\nprocess.exit(0);\n', { mode: 0o755 }); + for (const [f, src] of Object.entries(sc.files)) { + const t = path.join(root, f); + fs.mkdirSync(path.dirname(t), { recursive: true }); + fs.writeFileSync(t, src.replaceAll('', root)); + if (f.endsWith('adapter.mjs')) fs.chmodSync(t, 0o755); + } + if (sc.bluebird) { + const d = path.join(root, 'bb'); + fs.cpSync('/w/head/packages/sdk/node_modules/bluebird/js/release', d, { recursive: true }); + fs.writeFileSync(path.join(d, 'package.json'), '{"type":"commonjs"}'); + } + const env = Object.fromEntries(Object.entries(sc.env ?? {}).map(([k, v]) => [k, String(v).replaceAll('', root)])); + const entry = path.join(root, sc.entry ?? 'chain.flow.ts'); + const res = { s: sc.name, start: startSide, resume: resumeSide, i }; + const t0 = Date.now(); + const first = start(startSide, ['run', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), entry, '--input', '{}'], root, env); + let early; + const deadline = Date.now() + 90_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (first.child.exitCode !== null || first.child.signalCode !== null) { early = await first.closed; break; } + if (Date.now() > deadline) { first.child.kill('SIGKILL'); early = { code: 'timeout' }; break; } + await sleep(15); + } + try { + if (early) { + res.fresh = true; res.code1 = early.code; res.code = early.code; + res.effects1 = res.effects = read(path.join(root, 'effects')); + res.out1 = first.out.slice(-600); + } else { + res.fresh = false; + await sleep(sc.delays?.[i] ?? DELAYS[i % DELAYS.length]); + first.child.kill('SIGKILL'); + await Promise.race([first.closed, sleep(2000)]); + sweep(root); await sleep(100); sweep(root); + res.code1 = 'killed'; + res.effects1 = read(path.join(root, 'effects')); + fs.writeFileSync(path.join(root, 'release'), ''); + const r0 = rootOf(journals(root)); + if (!r0) throw new Error('no root journal'); + const resumed = start(resumeSide, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env); + const to = setTimeout(() => resumed.child.kill('SIGKILL'), 150_000); + const rr = await resumed.closed; clearTimeout(to); + res.code = rr.code; res.out = resumed.out.slice(-600); + sweep(root); + if (sc.secondResume) { + res.effects0 = res.effects1; + res.effectsMid = read(path.join(root, 'effects')); + res.code1 = rr.code; res.effects1 = res.effectsMid; + const fin = start(sc.secondResume, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env); + const to2 = setTimeout(() => fin.child.kill('SIGKILL'), 150_000); + const fr = await fin.closed; clearTimeout(to2); + res.code = fr.code; res.out2 = fin.out.slice(-400); + sweep(root); + } + res.effects = read(path.join(root, 'effects')); + } + const js = journals(root); + const r = rootOf(js); + res.mode = r ? modeOf(r) : 'noroot'; + const rc = replayCheck(js, r?.runId, sc.expectedCounts); + res.journalReplay = rc.replay; res.dups = rc.dups; res.ids = rc.ids; + const letters = [...res.effects].filter(c => /[A-Za-z]/.test(c)); + res.letterDup = new Set(letters).size !== letters.length; + res.replay = res.journalReplay || (res.letterDup && !sc.allowDupLetters); + if (sc.extraCheck) Object.assign(res, sc.extraCheck(root)); + const okDefault = r => r.code === 0 && !r.replay && (sc.noZ || r.effects.includes('Z')); + res.ok = sc.okIf ? (sc.okIf(res) && !res.replay) : sc.expect ? (sc.expect(res) && !res.replay && res.code === 0) : okDefault(res); + } catch (e) { + res.error = String(e?.stack ?? e).slice(0, 400); res.ok = false; + } finally { + try { first.child.kill('SIGKILL'); } catch {} + sweep(root); + res.ms = Date.now() - t0; + if (!keep && res.ok) fs.rmSync(root, { recursive: true, force: true }); + } + return res; +} + +const mod = await import(path.resolve(file)); +let scen = mod.default; +if (names !== 'all') { const want = names.split(','); scen = want.map(n => { const s = scen.find(x => x.name === n); if (!s) throw new Error(`no scenario ${n}`); return s; }); } +const jobs = []; +for (const sc of scen) for (const [a, b] of (sidesOverride ?? sc.sides)) for (let i = 0; i < reps; i++) jobs.push([sc, a, b, i]); +const results = []; +let next = 0; +await Promise.all(Array.from({ length: conc }, async () => { + while (next < jobs.length) { + const [sc, a, b, i] = jobs[next++]; + const r = await one(sc, a, b, i); + results.push(r); + console.log(JSON.stringify(r)); + } +})); +const groups = new Map(); +for (const r of results) { + const k = `${r.s} ${r.start}>${r.resume}`; + const g = groups.get(k) ?? { ok: 0, n: 0, replay: 0, fresh: 0, modes: new Set(), effects: new Set(), codes: new Set() }; + g.n++; if (r.ok) g.ok++; if (r.replay) g.replay++; if (r.fresh) g.fresh++; + g.modes.add(r.mode); g.effects.add(r.effects); g.codes.add(String(r.code)); + groups.set(k, g); +} +for (const [k, g] of groups) console.log(`SUMMARY ${k} ok=${g.ok}/${g.n} replay=${g.replay} fresh=${g.fresh} mode=${[...g.modes]} codes=${[...g.codes]} effects=${[...g.effects].join('|')}`); diff --git a/evidence/native-parallel-review9/h8.mjs b/evidence/native-parallel-review9/h8.mjs new file mode 100644 index 000000000..bf9683ec8 --- /dev/null +++ b/evidence/native-parallel-review9/h8.mjs @@ -0,0 +1,230 @@ +// Review-8 copy of the review-7 harness (only SIDES extended with mutant sides). +// Review-7 crash/resume harness for flows#667. Runs inside node:22-trixie. +// usage: node --no-warnings h7.mjs [--reps=6] [--conc=3] [--tag=x] [--sides=a:b/c:d] [--keep] +import fs from 'node:fs'; +import path from 'node:path'; +import { spawn } from 'node:child_process'; +import { createRequire } from 'node:module'; +import { DatabaseSync } from 'node:sqlite'; +globalThis.require = createRequire(import.meta.url); + +const args = process.argv.slice(2); +const opt = (k, d) => { const a = args.find(x => x.startsWith(`--${k}=`)); return a ? a.slice(k.length + 3) : d; }; +const file = args[0]; +const names = args[1]; +const reps = Number(opt('reps', '6')); +const conc = Number(opt('conc', '3')); +const tag = opt('tag', 't'); +const sidesOverride = opt('sides', undefined)?.split('/').map(p => p.split(':')); +const keep = args.includes('--keep'); +const DELAYS = [0, 60, 130, 220, 330, 450, 30, 180, 270, 400]; + +const SIDES = { + head: { cli: '/w/head/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + base: { cli: '/w/base/packages/sdk/dist/cli.js', nm: '/w/base/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + forced: { cli: '/w/forced/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + fix: { cli: '/w/fix/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + deep: { cli: '/w/deep/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + p2050: { cli: '/w/p2050/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2050/node_modules', daemon: '/w/relayflowd-2050' }, + p2051: { cli: '/w/p2051/node_modules/@relayflows/sdk/dist/cli.js', nm: '/w/p2051/node_modules', daemon: '/w/relayflowd-main' }, + m1: { cli: '/w/m1/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + m2: { cli: '/w/m2/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + m3: { cli: '/w/m3/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + m4deep: { cli: '/w/m4deep/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + m5: { cli: '/w/m5/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + m6: { cli: '/w/m6/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + m3deep: { cli: '/w/m3deep/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, + fx: { cli: '/w/fx/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules', daemon: '/w/relayflowd-main' }, +}; + +const sleep = ms => new Promise(r => setTimeout(r, ms)); +const read = p => { try { return fs.readFileSync(p, 'utf8'); } catch { return ''; } }; + +function start(side, argv, root, env = {}, nodeArgs = []) { + const s = SIDES[side]; + const child = spawn(process.execPath, [...nodeArgs, s.cli, ...argv], { + cwd: root, env: { ...process.env, ...env, RELAYFLOWD_BIN: s.daemon }, stdio: ['ignore', 'pipe', 'pipe'], + }); + let out = ''; + child.stdout.on('data', d => { out += d; }); + child.stderr.on('data', d => { out += d; }); + return { child, closed: new Promise(r => child.once('close', (code, signal) => r({ code, signal }))), get out() { return out; } }; +} + +function sweep(root) { + const targets = new Set(); + try { targets.add(JSON.parse(read(path.join(root, 'data/connection.json'))).pid); } catch {} + for (const e of fs.readdirSync('/proc')) { + if (!/^\d+$/.test(e)) continue; + const pid = Number(e); + if (pid === process.pid) continue; + try { + const cwd = fs.readlinkSync(`/proc/${pid}/cwd`); + const cmd = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8'); + if (cwd === root || cwd.startsWith(root + '/') || cmd.includes(root)) targets.add(pid); + } catch {} + } + for (const pid of targets) { try { if (pid) process.kill(pid, 'SIGKILL'); } catch {} } +} + +function journals(root) { + const dir = path.join(root, 'data/runs'); + if (!fs.existsSync(dir)) return []; + return fs.readdirSync(dir).filter(f => f.endsWith('.sqlite3')).sort().map(f => { + let db; + try { db = new DatabaseSync(path.join(dir, f), { readOnly: true }); } catch { return { runId: f.slice(0, -8), step: undefined, completed: 0 }; } + try { + if (!db.prepare("select name from sqlite_master where type='table' and name='entries'").get()) return { runId: f.slice(0, -8), step: undefined, completed: 0 }; + const sp = db.prepare("select payload from entries where entry_type='run.spawned' order by seq limit 1").get(); + const done = db.prepare("select count(*) as n from entries where entry_type='step.completed'").get().n; + const payload = sp ? JSON.parse(sp.payload) : undefined; + const spec = payload?.spec ?? payload?.payload?.spec ?? payload?.run?.spec; + return { runId: f.slice(0, -8), step: spec?.steps?.[0], completed: Number(done) }; + } finally { db.close(); } + }); +} + +function rootOf(js) { return js.find(j => j.step?.id === 'authored-root'); } +function modeOf(r) { + try { const m = JSON.parse(r.step.instruction); return m.executionMode ?? (m.identityVersion ? 'v2?' : 'absent'); } catch { return 'unknown'; } +} + +function replayCheck(js, rootId, expected = {}) { + const seen = new Map(); + const ids = []; + let replay = false; + const dups = []; + for (const j of js) { + if (j.runId === rootId || !j.step) continue; + const st = j.step; + const cmd = st.command ?? st.instruction ?? ''; + ids.push(`${st.id} c=${j.completed} ${String(cmd).slice(0, 70)}`); + if (!st.command) continue; + const ns = st.id.includes('--') ? st.id.slice(0, st.id.lastIndexOf('--')) : ''; + const key = `${ns}|${st.command}`; + const prev = seen.get(key) ?? []; + prev.push({ id: st.id, completed: j.completed }); + seen.set(key, prev); + const distinct = new Set(prev.map(p => p.id)); + if (distinct.size > (expected[st.command] ?? 1) && prev.some(p => p.completed > 0)) { + replay = true; dups.push(`${st.command.slice(0, 50)}: ${[...distinct].join(' & ')}`); + } + } + return { replay, ids, dups }; +} + +async function one(sc, startSide, resumeSide, i) { + const root = `/w/runs/${tag}/${sc.name}/${startSide}-${resumeSide}-${i}`; + fs.rmSync(root, { recursive: true, force: true }); + fs.mkdirSync(root, { recursive: true }); + const nmSide = sc.nmSide ?? startSide; + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + if (sc.realNodeModules) fs.mkdirSync(path.join(root, 'node_modules'), { recursive: true }); + else fs.symlinkSync(SIDES[nmSide].nm, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'flows.json'), JSON.stringify({ cli: path.join(root, 'adapter.mjs'), models: ['test-model'] })); + fs.writeFileSync(path.join(root, 'adapter.mjs'), '#!/usr/bin/env node\nprocess.exit(0);\n', { mode: 0o755 }); + for (const [f, src] of Object.entries(sc.files)) { + const t = path.join(root, f); + fs.mkdirSync(path.dirname(t), { recursive: true }); + fs.writeFileSync(t, src.replaceAll('', root).replaceAll('', SIDES[nmSide].nm)); + if (f.endsWith('adapter.mjs')) fs.chmodSync(t, 0o755); + } + if (sc.bluebird) { + const d = path.join(root, 'bb'); + fs.cpSync('/w/head/packages/sdk/node_modules/bluebird/js/release', d, { recursive: true }); + fs.writeFileSync(path.join(d, 'package.json'), '{"type":"commonjs"}'); + } + const env = Object.fromEntries(Object.entries(sc.env ?? {}).map(([k, v]) => [k, String(v).replaceAll('', root)])); + const renv = { ...env, ...Object.fromEntries(Object.entries(sc.resumeEnv ?? {}).map(([k, v]) => [k, String(v).replaceAll('', root)])) }; + const nargs = (sc.nodeArgs ?? []).map(a => a.replaceAll('', root)); + const rargs = (sc.resumeNodeArgs ?? sc.nodeArgs ?? []).map(a => a.replaceAll('', root)); + const entry = path.join(root, sc.entry ?? 'chain.flow.ts'); + const res = { s: sc.name, start: startSide, resume: resumeSide, i }; + const t0 = Date.now(); + const first = start(startSide, ['run', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), entry, '--input', '{}'], root, env, nargs); + let early; + const deadline = Date.now() + 90_000; + while (!fs.existsSync(path.join(root, 'stalled'))) { + if (first.child.exitCode !== null || first.child.signalCode !== null) { early = await first.closed; break; } + if (Date.now() > deadline) { first.child.kill('SIGKILL'); early = { code: 'timeout' }; break; } + await sleep(15); + } + try { + if (early) { + res.fresh = true; res.code1 = early.code; res.code = early.code; + res.effects1 = res.effects = read(path.join(root, 'effects')); + res.out1 = first.out.slice(-600); + } else { + res.fresh = false; + await sleep(sc.delays?.[i] ?? DELAYS[i % DELAYS.length]); + first.child.kill('SIGKILL'); + await Promise.race([first.closed, sleep(2000)]); + sweep(root); await sleep(100); sweep(root); + res.code1 = 'killed'; + res.effects1 = read(path.join(root, 'effects')); + fs.writeFileSync(path.join(root, 'release'), ''); + const r0 = rootOf(journals(root)); + if (!r0) throw new Error('no root journal'); + const resumed = start(resumeSide, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, renv, rargs); + const to = setTimeout(() => resumed.child.kill('SIGKILL'), 150_000); + const tr = Date.now(); const rr = await resumed.closed; clearTimeout(to); res.resumeMs = Date.now() - tr; + res.code = rr.code; res.out = resumed.out.slice(-600); + sweep(root); + if (sc.secondResume) { + res.effects0 = res.effects1; + res.effectsMid = read(path.join(root, 'effects')); + res.code1 = rr.code; res.effects1 = res.effectsMid; + const fin = start(sc.secondResume, ['resume', '--no-observer-link', '--json', ...(sc.extraArgs ?? []), '--data-dir', path.join(root, 'data'), r0.runId], root, env, nargs); + const to2 = setTimeout(() => fin.child.kill('SIGKILL'), 150_000); + const fr = await fin.closed; clearTimeout(to2); + res.code = fr.code; res.out2 = fin.out.slice(-400); + sweep(root); + } + res.effects = read(path.join(root, 'effects')); + } + const js = journals(root); + const r = rootOf(js); + res.mode = r ? modeOf(r) : 'noroot'; + const rc = replayCheck(js, r?.runId, sc.expectedCounts); + res.journalReplay = rc.replay; res.dups = rc.dups; res.ids = rc.ids; + const letters = [...res.effects].filter(c => /[A-Za-z]/.test(c)); + res.letterDup = new Set(letters).size !== letters.length; + res.replay = res.journalReplay || (res.letterDup && !sc.allowDupLetters); + if (sc.extraCheck) Object.assign(res, sc.extraCheck(root)); + const okDefault = r => r.code === 0 && !r.replay && (sc.noZ || r.effects.includes('Z')); + res.ok = sc.okIf ? (sc.okIf(res) && !res.replay) : sc.expect ? (sc.expect(res) && !res.replay && res.code === 0) : okDefault(res); + } catch (e) { + res.error = String(e?.stack ?? e).slice(0, 400); res.ok = false; + } finally { + try { first.child.kill('SIGKILL'); } catch {} + sweep(root); + res.ms = Date.now() - t0; + if (!keep && res.ok) fs.rmSync(root, { recursive: true, force: true }); + } + return res; +} + +const mod = await import(path.resolve(file)); +let scen = mod.default; +if (names !== 'all') { const want = names.split(','); scen = want.map(n => { const s = scen.find(x => x.name === n); if (!s) throw new Error(`no scenario ${n}`); return s; }); } +const jobs = []; +for (const sc of scen) for (const [a, b] of (sidesOverride ?? sc.sides)) for (let i = 0; i < reps; i++) jobs.push([sc, a, b, i]); +const results = []; +let next = 0; +await Promise.all(Array.from({ length: conc }, async () => { + while (next < jobs.length) { + const [sc, a, b, i] = jobs[next++]; + const r = await one(sc, a, b, i); + results.push(r); + console.log(JSON.stringify(r)); + } +})); +const groups = new Map(); +for (const r of results) { + const k = `${r.s} ${r.start}>${r.resume}`; + const g = groups.get(k) ?? { ok: 0, n: 0, replay: 0, fresh: 0, modes: new Set(), effects: new Set(), codes: new Set() }; + g.n++; if (r.ok) g.ok++; if (r.replay) g.replay++; if (r.fresh) g.fresh++; + g.modes.add(r.mode); g.effects.add(r.effects); g.codes.add(String(r.code)); + groups.set(k, g); +} +for (const [k, g] of groups) console.log(`SUMMARY ${k} ok=${g.ok}/${g.n} replay=${g.replay} fresh=${g.fresh} mode=${[...g.modes]} codes=${[...g.codes]} effects=${[...g.effects].join('|')}`); diff --git a/evidence/native-parallel-review9/mut-f1-parser.log b/evidence/native-parallel-review9/mut-f1-parser.log new file mode 100644 index 000000000..84275e7c1 --- /dev/null +++ b/evidence/native-parallel-review9/mut-f1-parser.log @@ -0,0 +1,7 @@ +{"s":"RS1","start":"fx","resume":"fx","i":0,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":440,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HMKG4FWGJETPN6D68N15Q cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HMKG4FWGJETPN6D68N15Q\",\"runId\":\"01M53HMKG4FWGJETPN6D68N15Q\",\"socketPath\":\"/tmp/relayflowd-e402402e2ce7.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2125} +{"s":"RS1","start":"fx","resume":"fx","i":1,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":429,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HMKG4BYTB0ANAJ6TT7S1Y cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HMKG4BYTB0ANAJ6TT7S1Y\",\"runId\":\"01M53HMKG4BYTB0ANAJ6TT7S1Y\",\"socketPath\":\"/tmp/relayflowd-1e90f908e47d.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2167} +{"s":"RS1","start":"fx","resume":"fx","i":2,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":428,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HMKG4YN5C6HTF0F96SSYW cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HMKG4YN5C6HTF0F96SSYW\",\"runId\":\"01M53HMKG4YN5C6HTF0F96SSYW\",\"socketPath\":\"/tmp/relayflowd-3439efd1742f.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2235} +{"s":"RS1","start":"fx","resume":"fx","i":3,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":386,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HMNDCPSXSPJWS0BM8T0D5 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HMNDCPSXSPJWS0BM8T0D5\",\"runId\":\"01M53HMNDCPSXSPJWS0BM8T0D5\",\"socketPath\":\"/tmp/relayflowd-fc9253b2a118.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2061} +{"s":"RS1","start":"fx","resume":"fx","i":4,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":424,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HMNEEWCDX7HJDZFMFXA11 cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HMNEEWCDX7HJDZFMFXA11\",\"runId\":\"01M53HMNEEWCDX7HJDZFMFXA11\",\"socketPath\":\"/tmp/relayflowd-ae39b7a9c170.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2172} +{"s":"RS1","start":"fx","resume":"fx","i":5,"fresh":false,"code1":"killed","effects1":"bcaX","resumeMs":426,"code":2,"out":" a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"refusal\",\"kind\":\"invalid_spec\",\"message\":\"unsupported_promise_lifecycle: pinned parallel root 01M53HMNG646T3H7KMTBDB7A8A cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.\"}],\"rootRunId\":\"01M53HMNG646T3H7KMTBDB7A8A\",\"runId\":\"01M53HMNG646T3H7KMTBDB7A8A\",\"socketPath\":\"/tmp/relayflowd-075fb81103e5.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2248} +SUMMARY RS1 fx>fx ok=0/6 replay=0 fresh=0 mode=parallel codes=2 effects=bcaX diff --git a/evidence/native-parallel-review9/mut-f1-resume.log b/evidence/native-parallel-review9/mut-f1-resume.log new file mode 100644 index 000000000..859bce4e3 --- /dev/null +++ b/evidence/native-parallel-review9/mut-f1-resume.log @@ -0,0 +1,7 @@ +{"s":"RS3bh","start":"m1","resume":"m1","i":0,"fresh":false,"code1":1,"effects1":"bcaX","resumeMs":547,"code":1,"out":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"rootRunId\":\"01M53HMWX70PW92YQ42DRF458B\",\"runId\":\"01M53HMWX70PW92YQ42DRF458B\",\"socketPath\":\"/tmp/relayflowd-9784acf9295f.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"ep_failed)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root \\\"01M53HMWX70PW92YQ42DRF458B\\\" is failed (step_failed)\"}],\"rootRunId\":\"01M53HMWX70PW92YQ42DRF458B\",\"runId\":\"01M53HMWX70PW92YQ42DRF458B\",\"socketPath\":\"/tmp/relayflowd-9784acf9295f.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2567} +{"s":"RS3bh","start":"m1","resume":"m1","i":1,"fresh":false,"code1":1,"effects1":"bcaX","resumeMs":584,"code":1,"out":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"rootRunId\":\"01M53HMWX8CRXVDHTBMGTWX88C\",\"runId\":\"01M53HMWX8CRXVDHTBMGTWX88C\",\"socketPath\":\"/tmp/relayflowd-f75ae0402402.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"ep_failed)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root \\\"01M53HMWX8CRXVDHTBMGTWX88C\\\" is failed (step_failed)\"}],\"rootRunId\":\"01M53HMWX8CRXVDHTBMGTWX88C\",\"runId\":\"01M53HMWX8CRXVDHTBMGTWX88C\",\"socketPath\":\"/tmp/relayflowd-f75ae0402402.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2718} +{"s":"RS3bh","start":"m1","resume":"m1","i":2,"fresh":false,"code1":1,"effects1":"bcaX","resumeMs":598,"code":1,"out":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"rootRunId\":\"01M53HMWXCPEJ00GRTXN3ZC7EP\",\"runId\":\"01M53HMWXCPEJ00GRTXN3ZC7EP\",\"socketPath\":\"/tmp/relayflowd-22a856491d53.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"ep_failed)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root \\\"01M53HMWXCPEJ00GRTXN3ZC7EP\\\" is failed (step_failed)\"}],\"rootRunId\":\"01M53HMWXCPEJ00GRTXN3ZC7EP\",\"runId\":\"01M53HMWXCPEJ00GRTXN3ZC7EP\",\"socketPath\":\"/tmp/relayflowd-22a856491d53.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2827} +{"s":"RS3bh","start":"m1","resume":"m1","i":3,"fresh":false,"code1":1,"effects1":"bcaX","resumeMs":598,"code":1,"out":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"rootRunId\":\"01M53HMZC61PBNP9WFWEF4SVRB\",\"runId\":\"01M53HMZC61PBNP9WFWEF4SVRB\",\"socketPath\":\"/tmp/relayflowd-43f408584f65.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"ep_failed)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root \\\"01M53HMZC61PBNP9WFWEF4SVRB\\\" is failed (step_failed)\"}],\"rootRunId\":\"01M53HMZC61PBNP9WFWEF4SVRB\",\"runId\":\"01M53HMZC61PBNP9WFWEF4SVRB\",\"socketPath\":\"/tmp/relayflowd-43f408584f65.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2781} +{"s":"RS3bh","start":"m1","resume":"m1","i":4,"fresh":false,"code1":1,"effects1":"bcaX","resumeMs":601,"code":1,"out":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"rootRunId\":\"01M53HMZFQJ59ZEZFDBX766W9X\",\"runId\":\"01M53HMZFQJ59ZEZFDBX766W9X\",\"socketPath\":\"/tmp/relayflowd-af14208f8ed8.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"ep_failed)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root \\\"01M53HMZFQJ59ZEZFDBX766W9X\\\" is failed (step_failed)\"}],\"rootRunId\":\"01M53HMZFQJ59ZEZFDBX766W9X\",\"runId\":\"01M53HMZFQJ59ZEZFDBX766W9X\",\"socketPath\":\"/tmp/relayflowd-af14208f8ed8.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2833} +{"s":"RS3bh","start":"m1","resume":"m1","i":5,"fresh":false,"code1":1,"effects1":"bcaX","resumeMs":585,"code":1,"out":"FAILED [step_failed] cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"step_failed\",\"message\":\"cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced\"}],\"rootRunId\":\"01M53HMZKFA0N22NAJ9SMN1TCW\",\"runId\":\"01M53HMZKFA0N22NAJ9SMN1TCW\",\"socketPath\":\"/tmp/relayflowd-8dd6136ae3c5.sock\",\"status\":\"failed\",\"completionReason\":\"step_failed\",\"subscriptions\":[]}\n","effects0":"bcaX","effectsMid":"bcaX","out2":"ep_failed)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: authored root \\\"01M53HMZKFA0N22NAJ9SMN1TCW\\\" is failed (step_failed)\"}],\"rootRunId\":\"01M53HMZKFA0N22NAJ9SMN1TCW\",\"runId\":\"01M53HMZKFA0N22NAJ9SMN1TCW\",\"socketPath\":\"/tmp/relayflowd-8dd6136ae3c5.sock\",\"subscriptions\":[]}\n","effects":"bcaX","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-fcafce286f10473ae0899f5154dd1225c6001b7eaab22f3d9d659c7e92e3a53b-1 c=1 printf X >> effects","run-after-cc28348b5a6b9119f2a5b23b10d250edf69bfbee95f55850bcec07c793615291-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2953} +SUMMARY RS3bh m1>m1 ok=0/6 replay=0 fresh=0 mode=parallel codes=1 effects=bcaX diff --git a/evidence/native-parallel-review9/mut-f2-backstop.log b/evidence/native-parallel-review9/mut-f2-backstop.log new file mode 100644 index 000000000..3ea4ea658 --- /dev/null +++ b/evidence/native-parallel-review9/mut-f2-backstop.log @@ -0,0 +1,7 @@ +{"s":"PL9dep","start":"m3","resume":"m3","i":0,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async executeAuthoredFlow (file:///w/m3/packages/sdk/dist/authored-flow-executor.js:563:13)\n at async file:///w/m3/packages/sdk/dist/authored-root.js:286:24\n at async withWorkerLease (file:///w/m3/packages/sdk/dist/worker-lease.js:89:22)\n at async driveRoot (file:///w/m3/packages/sdk/dist/authored-root.js:269:24) {\n code: 'step_failed',\n completionReason: undefined,\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=0 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1255} +{"s":"PL9dep","start":"m3","resume":"m3","i":2,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async executeAuthoredFlow (file:///w/m3/packages/sdk/dist/authored-flow-executor.js:563:13)\n at async file:///w/m3/packages/sdk/dist/authored-root.js:286:24\n at async withWorkerLease (file:///w/m3/packages/sdk/dist/worker-lease.js:89:22)\n at async driveRoot (file:///w/m3/packages/sdk/dist/authored-root.js:269:24) {\n code: 'step_failed',\n completionReason: undefined,\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=0 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1255} +{"s":"PL9dep","start":"m3","resume":"m3","i":1,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async executeAuthoredFlow (file:///w/m3/packages/sdk/dist/authored-flow-executor.js:563:13)\n at async file:///w/m3/packages/sdk/dist/authored-root.js:286:24\n at async withWorkerLease (file:///w/m3/packages/sdk/dist/worker-lease.js:89:22)\n at async driveRoot (file:///w/m3/packages/sdk/dist/authored-root.js:269:24) {\n code: 'step_failed',\n completionReason: undefined,\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=0 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1274} +{"s":"PL9dep","start":"m3","resume":"m3","i":3,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async executeAuthoredFlow (file:///w/m3/packages/sdk/dist/authored-flow-executor.js:563:13)\n at async file:///w/m3/packages/sdk/dist/authored-root.js:286:24\n at async withWorkerLease (file:///w/m3/packages/sdk/dist/worker-lease.js:89:22)\n at async driveRoot (file:///w/m3/packages/sdk/dist/authored-root.js:269:24) {\n code: 'step_failed',\n completionReason: undefined,\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=0 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1044} +{"s":"PL9dep","start":"m3","resume":"m3","i":5,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async executeAuthoredFlow (file:///w/m3/packages/sdk/dist/authored-flow-executor.js:563:13)\n at async file:///w/m3/packages/sdk/dist/authored-root.js:286:24\n at async withWorkerLease (file:///w/m3/packages/sdk/dist/worker-lease.js:89:22)\n at async driveRoot (file:///w/m3/packages/sdk/dist/authored-root.js:269:24) {\n code: 'step_failed',\n completionReason: undefined,\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=0 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1024} +{"s":"PL9dep","start":"m3","resume":"m3","i":4,"fresh":true,"code1":1,"code":1,"effects":"b","effects1":"b","out1":"at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async executeAuthoredFlow (file:///w/m3/packages/sdk/dist/authored-flow-executor.js:563:13)\n at async file:///w/m3/packages/sdk/dist/authored-root.js:286:24\n at async withWorkerLease (file:///w/m3/packages/sdk/dist/worker-lease.js:89:22)\n at async driveRoot (file:///w/m3/packages/sdk/dist/authored-root.js:269:24) {\n code: 'step_failed',\n completionReason: undefined,\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=0 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1042} +SUMMARY PL9dep m3>m3 ok=0/6 replay=0 fresh=6 mode=parallel codes=1 effects=b diff --git a/evidence/native-parallel-review9/mut-f2-hide.log b/evidence/native-parallel-review9/mut-f2-hide.log new file mode 100644 index 000000000..312cd315b --- /dev/null +++ b/evidence/native-parallel-review9/mut-f2-hide.log @@ -0,0 +1,13 @@ +{"s":"PL8hide","start":"m2","resume":"m2","i":0,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":1052,"code":1,"out":"37423f7c84cdabeb55baa44c70beb20591-3 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run), run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 (f.run)\"}],\"rootRunId\":\"01M53HNTF54TJBJMYTJGTZ7JRN\",\"runId\":\"01M53HNTF54TJBJMYTJGTZ7JRN\",\"socketPath\":\"/tmp/relayflowd-c90d5e0d4b1b.sock\",\"subscriptions\":[]}\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2130} +{"s":"PL8hide","start":"m2","resume":"m2","i":1,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":1015,"code":1,"out":"37423f7c84cdabeb55baa44c70beb20591-3 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run), run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 (f.run)\"}],\"rootRunId\":\"01M53HNTESKYAGDQ7SQXJ0QJSG\",\"runId\":\"01M53HNTESKYAGDQ7SQXJ0QJSG\",\"socketPath\":\"/tmp/relayflowd-743657e964e9.sock\",\"subscriptions\":[]}\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2143} +{"s":"PL8hide","start":"m2","resume":"m2","i":2,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":1003,"code":1,"out":"flow \"pl8hide\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\"}],\"rootRunId\":\"01M53HNTF1P32HBTYVJSKD6AWE\",\"runId\":\"01M53HNTF1P32HBTYVJSKD6AWE\",\"socketPath\":\"/tmp/relayflowd-1408606f2622.sock\",\"subscriptions\":[]}\n","effects":"bXcZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2200} +{"s":"PL8hide","start":"m2","resume":"m2","i":4,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":701,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HNWHVQF428J1A8ZK359RR\",\"runId\":\"01M53HNWHVQF428J1A8ZK359RR\",\"socketPath\":\"/tmp/relayflowd-a5cc1dd461fb.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bXcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":2073} +{"s":"PL8hide","start":"m2","resume":"m2","i":5,"fresh":false,"code1":"killed","effects1":"bXca","resumeMs":687,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HNWKM4KM8YGMKYDETTTVS\",\"runId\":\"01M53HNWKM4KM8YGMKYDETTTVS\",\"socketPath\":\"/tmp/relayflowd-98b063e0cff4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bXcaXZ","mode":"parallel","journalReplay":true,"dups":["printf X >> effects: run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 & run-after-0acfcd17016bf0988da869b9a66192eb7518639eac013ae43df7323b5c562192-1","test -f release || { touch stalled; sleep 120; }; : run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 & run-after-8d87fb4f1971b899bbdc4ba50a1d88a4ffd64653badfcab426bfa6053a09f2dc-1"],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-0acfcd17016bf0988da869b9a66192eb7518639eac013ae43df7323b5c562192-1 c=1 printf X >> effects","run-after-8d87fb4f1971b899bbdc4ba50a1d88a4ffd64653badfcab426bfa6053a09f2dc-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":true,"replay":true,"ok":false,"ms":2155} +{"s":"PL8hide","start":"m2","resume":"m2","i":3,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":969,"code":1,"out":"flow \"pl8hide\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\"}],\"rootRunId\":\"01M53HNWHW92N5NK4AZJRFVZDD\",\"runId\":\"01M53HNWHW92N5NK4AZJRFVZDD\",\"socketPath\":\"/tmp/relayflowd-1918da3f743d.sock\",\"subscriptions\":[]}\n","effects":"bXcXZ","mode":"parallel","journalReplay":true,"dups":["printf X >> effects: run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 & run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1","test -f release || { touch stalled; sleep 120; }; : run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 & run-after-55bee009df4eb28006ca70724ed8fb1bd02920268a8625688e9b6becf771e01b-1"],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf X >> effects","run-after-55bee009df4eb28006ca70724ed8fb1bd02920268a8625688e9b6becf771e01b-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":true,"replay":true,"ok":false,"ms":2272} +{"s":"PL8hide","start":"m2","resume":"m2","i":6,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":966,"code":1,"out":"37423f7c84cdabeb55baa44c70beb20591-3 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run), run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 (f.run)\"}],\"rootRunId\":\"01M53HNYJY9N0TYD04AKE740BP\",\"runId\":\"01M53HNYJY9N0TYD04AKE740BP\",\"socketPath\":\"/tmp/relayflowd-e74a1acbff21.sock\",\"subscriptions\":[]}\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1992} +{"s":"PL8hide","start":"m2","resume":"m2","i":7,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":989,"code":1,"out":"flow \"pl8hide\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\"}],\"rootRunId\":\"01M53HNYPGBJFCXQRS4V2Q55TJ\",\"runId\":\"01M53HNYPGBJFCXQRS4V2Q55TJ\",\"socketPath\":\"/tmp/relayflowd-8c7ac3f6c520.sock\",\"subscriptions\":[]}\n","effects":"bXcZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2143} +{"s":"PL8hide","start":"m2","resume":"m2","i":8,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":987,"code":1,"out":"flow \"pl8hide\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run)\"}],\"rootRunId\":\"01M53HNYQWV4P5NS4RHVW8EXPA\",\"runId\":\"01M53HNYQWV4P5NS4RHVW8EXPA\",\"socketPath\":\"/tmp/relayflowd-14de752b6670.sock\",\"subscriptions\":[]}\n","effects":"bXcXZ","mode":"parallel","journalReplay":true,"dups":["printf X >> effects: run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 & run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1","test -f release || { touch stalled; sleep 120; }; : run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 & run-after-55bee009df4eb28006ca70724ed8fb1bd02920268a8625688e9b6becf771e01b-1"],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-b1d85947f7f7b0657c73aba929eb762b7030c0bc579f0e1286abaaf5a801b9aa-1 c=1 printf X >> effects","run-after-55bee009df4eb28006ca70724ed8fb1bd02920268a8625688e9b6becf771e01b-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":true,"replay":true,"ok":false,"ms":2222} +{"s":"PL8hide","start":"m2","resume":"m2","i":9,"fresh":false,"code1":"killed","effects1":"bXca","resumeMs":727,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HP0K1ME2KYHVBM0YK8QDQ\",\"runId\":\"01M53HP0K1ME2KYHVBM0YK8QDQ\",\"socketPath\":\"/tmp/relayflowd-1cce9f1a5f42.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bXcaXZ","mode":"parallel","journalReplay":true,"dups":["printf X >> effects: run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 & run-after-0acfcd17016bf0988da869b9a66192eb7518639eac013ae43df7323b5c562192-1","test -f release || { touch stalled; sleep 120; }; : run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 & run-after-8d87fb4f1971b899bbdc4ba50a1d88a4ffd64653badfcab426bfa6053a09f2dc-1"],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-0acfcd17016bf0988da869b9a66192eb7518639eac013ae43df7323b5c562192-1 c=1 printf X >> effects","run-after-8d87fb4f1971b899bbdc4ba50a1d88a4ffd64653badfcab426bfa6053a09f2dc-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":true,"replay":true,"ok":false,"ms":2216} +{"s":"PL8hide","start":"m2","resume":"m2","i":10,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":1026,"code":1,"out":"37423f7c84cdabeb55baa44c70beb20591-3 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run), run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 (f.run)\"}],\"rootRunId\":\"01M53HP0VK761X2KB6RRJ50RR9\",\"runId\":\"01M53HP0VK761X2KB6RRJ50RR9\",\"socketPath\":\"/tmp/relayflowd-18ab69c24bec.sock\",\"subscriptions\":[]}\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2067} +{"s":"PL8hide","start":"m2","resume":"m2","i":11,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":1049,"code":1,"out":"37423f7c84cdabeb55baa44c70beb20591-3 (f.run)\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: unawaited_step: flow \\\"pl8hide\\\" returned with unawaited steps: run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 (f.run), run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 (f.run)\"}],\"rootRunId\":\"01M53HP0YMXA6GCSSEJ7KXHZ0W\",\"runId\":\"01M53HP0YMXA6GCSSEJ7KXHZ0W\",\"socketPath\":\"/tmp/relayflowd-0ef9e0055d41.sock\",\"subscriptions\":[]}\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2129} +SUMMARY PL8hide m2>m2 ok=1/12 replay=4 fresh=0 mode=parallel codes=1,0 effects=bXZ|bXcZ|bXcaZ|bXcaXZ|bXcXZ diff --git a/evidence/native-parallel-review9/mut-f2-removed.log b/evidence/native-parallel-review9/mut-f2-removed.log new file mode 100644 index 000000000..ff743bfd3 --- /dev/null +++ b/evidence/native-parallel-review9/mut-f2-removed.log @@ -0,0 +1,13 @@ +{"s":"PL9dep","start":"m2","resume":"m2","i":0,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":798,"code":1,"out":"ertOperationAllowed (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:688:15)\n at Object.runOperation [as run] (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:294:9)\n at c (eval at instrumentParallelBody (file:///w/m2/packages/sdk/dist/authored-parallel-body.js:65:21), :7:71)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {\n code: 'operation_after_completion',\n completionReason: 'success',\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1822} +{"s":"PL9dep","start":"m2","resume":"m2","i":1,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":794,"code":1,"out":"ertOperationAllowed (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:688:15)\n at Object.runOperation [as run] (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:294:9)\n at c (eval at instrumentParallelBody (file:///w/m2/packages/sdk/dist/authored-parallel-body.js:65:21), :7:71)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {\n code: 'operation_after_completion',\n completionReason: 'success',\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1876} +{"s":"PL9dep","start":"m2","resume":"m2","i":2,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":1008,"code":1,"out":"w \"pl9dep\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \"pl9dep\" called f.run after done()\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"pl9dep\\\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \\\"pl9dep\\\" called f.run after done()\"}],\"rootRunId\":\"01M53HND7BQSKEZV0306BJT3ZP\",\"runId\":\"01M53HND7BQSKEZV0306BJT3ZP\",\"socketPath\":\"/tmp/relayflowd-448c29eaf393.sock\",\"subscriptions\":[]}\n","effects":"bXcZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2160} +{"s":"PL9dep","start":"m2","resume":"m2","i":4,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":624,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HNF0ZTN9E4NM8GHVVQ0P0\",\"runId\":\"01M53HNF0ZTN9E4NM8GHVVQ0P0\",\"socketPath\":\"/tmp/relayflowd-20e914fb3ff4.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bXcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1872} +{"s":"PL9dep","start":"m2","resume":"m2","i":3,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":960,"code":1,"out":"w \"pl9dep\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \"pl9dep\" called f.run after done()\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"pl9dep\\\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \\\"pl9dep\\\" called f.run after done()\"}],\"rootRunId\":\"01M53HNEZJAZQ0FT903F4FQ1B8\",\"runId\":\"01M53HNEZJAZQ0FT903F4FQ1B8\",\"socketPath\":\"/tmp/relayflowd-17bbfad40467.sock\",\"subscriptions\":[]}\n","effects":"bXcZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2119} +{"s":"PL9dep","start":"m2","resume":"m2","i":5,"fresh":false,"code1":"killed","effects1":"bXca","resumeMs":634,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HNF9AHAHYTZ05VKRN16AY\",\"runId\":\"01M53HNF9AHAHYTZ05VKRN16AY\",\"socketPath\":\"/tmp/relayflowd-5c5889bfcace.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bXcaZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","complete-10 c=1 :"],"letterDup":false,"replay":false,"ok":true,"ms":1980} +{"s":"PL9dep","start":"m2","resume":"m2","i":6,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":732,"code":1,"out":"ertOperationAllowed (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:688:15)\n at Object.runOperation [as run] (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:294:9)\n at c (eval at instrumentParallelBody (file:///w/m2/packages/sdk/dist/authored-parallel-body.js:65:21), :7:71)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {\n code: 'operation_after_completion',\n completionReason: 'success',\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1658} +{"s":"PL9dep","start":"m2","resume":"m2","i":7,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":959,"code":1,"out":"w \"pl9dep\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \"pl9dep\" called f.run after done()\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"pl9dep\\\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \\\"pl9dep\\\" called f.run after done()\"}],\"rootRunId\":\"01M53HNH125HTVP1QZDEFNGTJF\",\"runId\":\"01M53HNH125HTVP1QZDEFNGTJF\",\"socketPath\":\"/tmp/relayflowd-276a95fef996.sock\",\"subscriptions\":[]}\n","effects":"bXcZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2022} +{"s":"PL9dep","start":"m2","resume":"m2","i":8,"fresh":false,"code1":"killed","effects1":"bXc","resumeMs":960,"code":1,"out":"w \"pl9dep\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \"pl9dep\" called f.run after done()\n{\"ok\":false,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[{\"severity\":\"failure\",\"kind\":\"protocol_error\",\"message\":\"relayflowd could not complete the resume request: operation_callback_failed: flow \\\"pl9dep\\\" derived handler for run-1 (f.run) rejected: operation_after_completion: flow \\\"pl9dep\\\" called f.run after done()\"}],\"rootRunId\":\"01M53HNH75RSEM92JPCP221P2H\",\"runId\":\"01M53HNH75RSEM92JPCP221P2H\",\"socketPath\":\"/tmp/relayflowd-f050f20ff795.sock\",\"subscriptions\":[]}\n","effects":"bXcZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=2 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":2155} +{"s":"PL9dep","start":"m2","resume":"m2","i":9,"fresh":false,"code1":"killed","effects1":"bXca","resumeMs":624,"code":0,"out":"{\"ok\":true,\"command\":\"resume\",\"resolutions\":[],\"diagnostics\":[],\"rootRunId\":\"01M53HNJEVPHNBJHPZXMM8B8NK\",\"runId\":\"01M53HNJEVPHNBJHPZXMM8B8NK\",\"socketPath\":\"/tmp/relayflowd-2f7d00be87b3.sock\",\"completedSteps\":10,\"status\":\"completed\",\"completionReason\":\"success\",\"subscriptions\":[]}\n","effects":"bXcaXZ","mode":"parallel","journalReplay":true,"dups":["printf X >> effects: run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 & run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1","test -f release || { touch stalled; sleep 120; }; : run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 & run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1"],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=1 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=0 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","run-after-24779733dc18d4220760dcb11d0decc769a320d326be94565f248d8333069ec9-1 c=1 printf c >> effects","run-after-caf9c393341cdac6baf67e013f48353bc4f4b2d649836488b26856254ef6fb4c-1 c=1 printf a >> effects","run-after-99abf0ae09afc36ee0b4f7579db8c2734ed35cb53097b4596ad3dcebb8d66512-1 c=1 printf X >> effects","run-after-f0eddd81c644b13aabf509fff8a95c0257fd3664cbf7584a39e45395870fc2e8-1 c=1 test -f release || { touch stalled; sleep 120; }; printf Z >> effects","complete-10 c=1 :"],"letterDup":true,"replay":true,"ok":false,"ms":1927} +{"s":"PL9dep","start":"m2","resume":"m2","i":10,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":728,"code":1,"out":"ertOperationAllowed (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:688:15)\n at Object.runOperation [as run] (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:294:9)\n at c (eval at instrumentParallelBody (file:///w/m2/packages/sdk/dist/authored-parallel-body.js:65:21), :7:71)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {\n code: 'operation_after_completion',\n completionReason: 'success',\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1630} +{"s":"PL9dep","start":"m2","resume":"m2","i":11,"fresh":false,"code1":"killed","effects1":"bX","resumeMs":746,"code":1,"out":"ertOperationAllowed (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:688:15)\n at Object.runOperation [as run] (file:///w/m2/packages/sdk/dist/authored-flow-executor.js:294:9)\n at c (eval at instrumentParallelBody (file:///w/m2/packages/sdk/dist/authored-parallel-body.js:65:21), :7:71)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {\n code: 'operation_after_completion',\n completionReason: 'success',\n runId: undefined,\n details: undefined,\n suspension: undefined,\n rootRunId: undefined,\n parkCause: undefined\n}\n\nNode.js v22.23.3\n","effects":"bXZ","mode":"parallel","journalReplay":false,"dups":[],"ids":["run-1 c=1 sleep 0.2; printf W","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-3 c=2 sleep 0.2; printf C","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-2 c=1 printf B","run-after-1a5e08852ff225736404e43cc9976737423f7c84cdabeb55baa44c70beb20591-1 c=1 sleep 0.4; printf A","run-after-0b75ffa3a546982a6ddaa206c19ccc7d86099db00d0568845013201461c2b675-1 c=1 printf b >> effects","run-after-e24f35e9494ab0df6487bb87098fb48f0d7b6c38723606b155ea9e21da75966c-1 c=1 printf X >> effects","run-after-0005c4ab09bcede7db767285d2dc25c6249b1d5dcf0760895e7ee13afd6a18ac-1 c=2 test -f release || { touch stalled; sleep 120; }; printf Z >> effects"],"letterDup":false,"replay":false,"ok":false,"ms":1713} +SUMMARY PL9dep m2>m2 ok=2/12 replay=1 fresh=0 mode=parallel codes=1,0 effects=bXZ|bXcZ|bXcaZ|bXcaXZ diff --git a/evidence/native-parallel-review9/mutation-stage.log b/evidence/native-parallel-review9/mutation-stage.log new file mode 100644 index 000000000..f4b8be3ba --- /dev/null +++ b/evidence/native-parallel-review9/mutation-stage.log @@ -0,0 +1,2 @@ +Created fx (old F1 parser), m1 (no F1 resume guard), +m3 (F2 backstop only), and m2 (no Array gate or F2 backstop). diff --git a/evidence/native-parallel-review9/mutation-stage.py b/evidence/native-parallel-review9/mutation-stage.py new file mode 100644 index 000000000..ca07e4331 --- /dev/null +++ b/evidence/native-parallel-review9/mutation-stage.py @@ -0,0 +1,70 @@ +"""Create scratch dist variants for review-8 F1/F2 revert proofs inside /w.""" + +from pathlib import Path +import shutil + +root = Path('/w') +head = root / 'sdk-head' + + +def side(name: str) -> Path: + sdk = root / name / 'packages/sdk' + shutil.rmtree(sdk, ignore_errors=True) + sdk.mkdir(parents=True) + shutil.copytree(head / 'dist', sdk / 'dist') + shutil.copy2(head / 'package.json', sdk / 'package.json') + (sdk / 'node_modules').symlink_to(root / 'node_modules') + return sdk / 'dist' + + +def replace(path: Path, before: str, after: str, count: int = 1) -> None: + source = path.read_text() + found = source.count(before) + assert found == count, (path, before, found, count) + path.write_text(source.replace(before, after)) + + +def without_array_gate(path: Path) -> None: + source = path.read_text() + guards = [ + "|| !sameDescriptor(Object.getOwnPropertyDescriptor(Array.prototype, Symbol.iterator), nativeArrayIteratorDescriptor)", + "|| Array.prototype[Symbol.iterator] !== nativeArrayIterator", + "|| !sameDescriptor(Object.getOwnPropertyDescriptor(nativeArrayIteratorPrototype, 'next'), nativeArrayIteratorNextDescriptor)", + "|| nativeArrayIteratorPrototype.next !== nativeArrayIteratorNext", + ] + for guard in guards: + assert source.count(guard) == 1, guard + source = source.replace(guard, '|| false') + path.write_text(source) + + +# F1a: restore the regex that falsely called benign --*-r* flags preloads. +dist = side('fx') +path = dist / 'authored-flow-lifecycle.js' +source = path.read_text() +start = source.index('function authoredProcessHasPreload() {') +end = source.index('/** NODE_OPTIONS is a command-line string', start) +source = source[:start] + '''function authoredProcessHasPreload() { + const preload = /--(?:import|require|loader|experimental-loader)(?:=|\\s|$)|-r(?:=|\\s|\\S)/u; + return process.execArgv.some(arg => preload.test(arg)) + || preload.test(process.env['NODE_OPTIONS'] ?? ''); +} +''' + source[end:] +path.write_text(source) + +# F1b: remove only the pre-dispatch pinned-root check. +dist = side('m1') +replace(dist / 'authored-root.js', ' assertParallelResumeRuntime(metadata, rootRunId);', ' void 0;', 2) + +# F2a: keep the settlement backstop, but disable the Array iterator admission gate. +dist = side('m3') +without_array_gate(dist / 'authored-flow-lifecycle.js') + +# F2b: remove that backstop too. The iterator attack can now replay effects. +dist = side('m2') +path = dist / 'authored-flow-lifecycle.js' +without_array_gate(path) +replace(path, 'return this.hasInvalidAllSettlement()', 'return false') + +print('Created fx (old F1 parser), m1 (no F1 resume guard),') +print('m3 (F2 backstop only), and m2 (no Array gate or F2 backstop).') diff --git a/evidence/native-parallel-review9/probe8.log b/evidence/native-parallel-review9/probe8.log new file mode 100644 index 000000000..23cb6905f --- /dev/null +++ b/evidence/native-parallel-review9/probe8.log @@ -0,0 +1,27 @@ +baseline_native: certified=true grammar=true wrappedCalls=2 +esc_branch_name: certified=false grammar=false wrappedCalls= +esc_value_name: certified=false grammar=false wrappedCalls= +esc_call_only: certified=false grammar=false wrappedCalls= +param_name: certified=false grammar=false wrappedCalls= +destructure_name: certified=false grammar=false wrappedCalls= +shorthand_name: certified=false grammar=false wrappedCalls= +property_name: certified=false grammar=false wrappedCalls= +string_name: certified=true grammar=true wrappedCalls=2 +template_name: certified=true grammar=true wrappedCalls=2 +template_value: certified=true grammar=true wrappedCalls=2 +double_paren: certified=true grammar=true wrappedCalls=2 +paren_callee: certified=false grammar=false wrappedCalls= +paren_optional: certified=true grammar=true wrappedCalls=2 +comma_member: certified=false grammar=false wrappedCalls= +void_member: certified=false grammar=false wrappedCalls= +await_member: certified=false grammar=false wrappedCalls= +not_member: certified=false grammar=false wrappedCalls= +expr_noawait_branch: certified=false grammar=false wrappedCalls= +return_thenable: certified=false grammar=false wrappedCalls= +await_thenable: certified=false grammar=false wrappedCalls= +wrapped_step_member: certified=false grammar=false wrappedCalls= +run_member_paren: certified=true grammar=true wrappedCalls=0 +nested_branch_call: certified=false grammar=false wrappedCalls= +iife_async_check: certified=false grammar=false wrappedCalls= +done_detail: certified=true grammar=true wrappedCalls=2 +elem_proto: certified=true grammar=true wrappedCalls=2 diff --git a/evidence/native-parallel-review9/probe8.mjs b/evidence/native-parallel-review9/probe8.mjs new file mode 100644 index 000000000..e67549877 --- /dev/null +++ b/evidence/native-parallel-review9/probe8.mjs @@ -0,0 +1,120 @@ +// Review-8 probe (copy of review-7 probe.mjs with new cases). Probe head's certifier on candidate entry modules (no daemon). +import fs from 'node:fs'; +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; +const sdk = '/w/head/packages/sdk/dist'; +const { parallelRunEligible, parallelBodySyntaxEligible } = await import(`${sdk}/authored-parallel-eligibility.js`); +const { instrumentParallelBody } = await import(`${sdk}/authored-parallel-body.js`); +const SURF = `import { flow } from '@relayflows/surface';`; +const body = (b) => `${SURF}\nexport default flow('p', async f => {\n${b}\n});\n`; +const cases = { + baseline_native: body(` const a = async () => { await f.run('A'); await f.run('a'); }; + const b = async () => { await f.run('B'); await f.run('b'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + esc_branch_name: body(` const \\u005f_certifyParallelBranch = async () => { await f.run('P'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([\\u005f_certifyParallelBranch(), b()]); + await f.run('X');`), + esc_value_name: body(` const \\u005f\\u005fcertifyParallelBranch = await f.run('V'); + const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + esc_call_only: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X' + \\u005f_certifyParallelBranch);`), + param_name: `${SURF}\nexport default flow('p', async __certifyParallelBranch => {\n const a = async () => { await __certifyParallelBranch.run('A'); };\n const b = async () => { await __certifyParallelBranch.run('B'); };\n await Promise.all([a(), b()]);\n});\n`, + destructure_name: body(` const { __certifyParallelBranch } = await f.run('V'); + const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + shorthand_name: body(` const a = async () => { await f.run('A', { __certifyParallelBranch }); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + property_name: body(` const v = await f.run('V'); + const a = async () => { await f.run('A' + v.__certifyParallelBranch); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + string_name: body(` const a = async () => { await f.run('__certifyParallelBranch'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + template_name: body(` const a = async () => { await f.run(\`printf __certifyParallelBranch\`); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + template_value: body(` const v = await f.run('V'); + const a = async () => { await f.run(\`printf \${v} \${v.length}\`); }; + const b = async () => { await f.run(\`B\`); }; + await Promise.all([a(), b()]);`), + double_paren: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([((a())), (((b())))]); + await f.run('X');`), + paren_callee: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([(a)(), b()]);`), + paren_optional: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([(a?.()), (b())]); + await f.run('X');`), + comma_member: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([(0, a()), b()]);`), + void_member: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([void a(), b()]);`), + await_member: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([await a(), b()]);`), + not_member: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([!a(), b()]);`), + expr_noawait_branch: body(` const a = async () => f.run('A'); + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + await f.run('X');`), + return_thenable: body(` const a = async () => { await f.run('A'); return { then(r) { r(1); } }; }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + await_thenable: body(` const a = async () => { await f.run('A'); await { then(r) { r(1); } }; await f.run('a'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), + wrapped_step_member: body(` const b = async () => { await f.run('B'); }; + await Promise.all([{ x: f.run('A') }, b()]);`), + run_member_paren: body(` await Promise.all([(f.run('A')), ((f.run('B')))]); + await f.run('X');`), + nested_branch_call: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await Promise.all([a(), f.run('B')]); }; + await Promise.all([a(), b()]);`), + iife_async_check: body(` await Promise.all([(() => f.run('A'))(), (async () => { await f.run('B'); })()]);`), + done_detail: body(` const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]); + f.done('success', { detail: 'x' });`), + elem_proto: body(` const v = await f.run('V'); + const a = async () => { await f.run('A' + v['constructor']); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`), +}; +const dir = '/w/probe8'; +fs.rmSync(dir, { recursive: true, force: true }); +fs.mkdirSync(dir, { recursive: true }); +fs.writeFileSync(path.join(dir, 'package.json'), '{"type":"module"}'); +fs.symlinkSync('/w/head/packages/sdk/node_modules', path.join(dir, 'node_modules')); +const { getFlowDefinition } = await import('/w/head/packages/sdk/node_modules/@relayflows/surface/dist/runtime.js'); +for (const [name, src] of Object.entries(cases)) { + const file = path.join(dir, `${name}.flow.ts`); + fs.writeFileSync(file, src); + let line; + try { + const mod = await import(pathToFileURL(file).href); + const def = getFlowDefinition(mod.default); + const full = parallelRunEligible(def.body, src); + const grammar = parallelBodySyntaxEligible(def.body); + let instr = ''; + if (grammar) { try { instr = String(instrumentParallelBody(def.body, () => {})).match(/__certifyParallelBranch\([^)]*\)/g)?.length ?? 0; } catch (e) { instr = 'throw:' + e.message; } } + line = `${name}: certified=${full} grammar=${grammar} wrappedCalls=${instr}`; + } catch (e) { line = `${name}: LOAD ERROR ${String(e.message).slice(0, 120)}`; } + console.log(line); +} diff --git a/evidence/native-parallel-review9/raw-logs.tar.gz b/evidence/native-parallel-review9/raw-logs.tar.gz new file mode 100644 index 000000000..7afdda394 Binary files /dev/null and b/evidence/native-parallel-review9/raw-logs.tar.gz differ diff --git a/evidence/native-parallel-review9/s.mjs b/evidence/native-parallel-review9/s.mjs new file mode 100644 index 000000000..1de1d721f --- /dev/null +++ b/evidence/native-parallel-review9/s.mjs @@ -0,0 +1,164 @@ +// Scenario definitions for review 6 of flows#667. +const STALL = ` await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success');`; +const SURF = `import { flow } from '@relayflows/surface';`; +const flowSrc = (name, body, { fnExpr = false, header = '', pre = '' } = {}) => `${SURF} +${pre}export default flow('${name}'${header}, ${fnExpr ? 'async function(f)' : 'async f =>'} {${body} +${STALL} +}); +`; +const ADAPTER = `#!/usr/bin/env node +import fs from 'node:fs'; +if (process.argv[2] === 'auth') process.exit(0); +if (process.argv[2] === '--relayflows-adapter-v1') { + process.stdout.write('relayflows-agent-cli-v1\\n'); + let input = ''; + for await (const chunk of process.stdin) input += chunk; + if (input.trim() === '') process.exit(0); + const request = JSON.parse(input); + if (request.protocol !== 'relayflows-agent-cli-v1') process.exit(2); + process.stdout.write('relayflows-agent-cli-v1-execute\\n'); + fs.appendFileSync('/calls', 'x'); + process.stdout.write('{"message":"ok"}'); +} +`; +const HS = [['head', 'head'], ['base', 'base']]; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); + +// ---- review-5 fixtures, verbatim ---- +const P_BIND = `const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };`; +const P_HAND = `const Promise = { all: (xs) => new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.resolve(x).then(v => { out[i] = v; if (--n === 0) res(out); }, rej)); }) };`; +const CHAIN = `export { default } from './impl.ts';\n`; +const TAIL5 = ` await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`; +const G3 = ` await Promise.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]);\n`; +const NAT = ` const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);\n`; +const impl = (name, P, body) => `${SURF}\n${P}\nexport default flow('${name}', async f => {\n${body}${TAIL5}`; +const W2 = ` await f.run('sleep 0.2; printf W');\n`; +add({ name: 'Q5', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5', P_BIND, G3) } }); +add({ name: 'Q5n', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5n', P_BIND, NAT) } }); +add({ name: 'Q5h', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5h', P_HAND, G3) } }); +add({ name: 'Q5w', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5w', P_BIND, W2 + G3) } }); +add({ name: 'Q5wn', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5wn', P_BIND, W2 + NAT) } }); +add({ name: 'Q5wh', files: { 'chain.flow.ts': CHAIN, 'impl.ts': impl('q5wh', P_HAND, W2 + G3) } }); +add({ name: 'Q6Pw', files: { + 'chain.flow.ts': `${SURF}\nimport './lib/patch.mjs';\nexport default flow('q6Pw', async f => {\n await f.run('sleep 0.3; printf W');\n${NAT}${TAIL5}`, + 'lib/patch.mjs': `const I = Function('return this')()['Pro' + 'mise']; +const intrinsicAll = I.all; +const t = setInterval(() => { if (I.all !== intrinsicAll) { clearInterval(t); I.all = function all(xs) { return intrinsicAll.call(I, xs); }; } }, 2); +t.unref(); +` } }); + +// ---- P-series (review 4) ---- +add({ name: 'P1', files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('p1', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1h', files: { 'chain.flow.ts': `${SURF}\n${P_HAND}\nexport default flow('p1h', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1c', files: { 'chain.flow.ts': `${SURF}\nclass Promise extends globalThis.Promise { static all(xs) { return globalThis.Promise.all.call(globalThis.Promise, xs); } }\nexport default flow('p1c', async f => {\n${G3}${TAIL5}` } }); +add({ name: 'P1n', files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('p1n', async f => {\n${NAT}${TAIL5}` } }); +add({ name: 'P1bn', files: { 'chain.flow.ts': `${SURF}\nimport Promise from './bb/bluebird.js';\nexport default flow('p1bn', async f => {\n${NAT}${TAIL5}` }, bluebird: true }); +add({ name: 'P2', files: { 'chain.flow.ts': flowSrc('p2', ` + const warm = async () => {}; + await Promise.all([warm(), warm()]); + await f.run('printf X >> effects');`) } }); + +// ---- prior matrix ---- +add({ name: 'A1', files: { 'chain.flow.ts': flowSrc('a1', ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'B1', files: { 'chain.flow.ts': flowSrc('b1', ` + const left = async () => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`) } }); +const N2 = ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);`; +add({ name: 'N2', files: { 'chain.flow.ts': flowSrc('n2', N2) } }); +add({ name: 'C1e', files: { 'chain.flow.ts': flowSrc('c1e', ` + const background = (async () => { await f.run('printf X >> effects'); })(); + await new Promise(resolve => setTimeout(resolve, 300)); + await f.run('printf Y >> effects'); + await background;`) } }); +add({ name: 'G1', files: { 'chain.flow.ts': flowSrc('g1', ` + await Promise.race([f.run('printf A >> effects'), f.run('sleep 0.3; printf B >> effects')]); + await f.run('printf G >> effects');`) } }); +const LLM_OUT = `const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] };`; +add({ name: 'H1', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('h1', ` + ${LLM_OUT} + const left = async () => { await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'H2', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('h2', ` + const left = async () => { await f.agent('left', { task: 'left', model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.agent('right', { task: 'right', model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }); +add({ name: 'K4', adapter: true, extraArgs: ['--local-agent'], files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('k4', ` + const g = arguments[0]; + ${LLM_OUT} + const left = async () => { await g.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await g.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, { fnExpr: true }) } }); +add({ name: 'I1', files: { + 'child.flow.ts': `${SURF} +export default flow('child', async (f, input) => { + await Promise.all([f.run('printf first'), f.run('printf second')]); + await f.run('printf ' + input.token + ' >> effects'); + f.done('success'); +}); +`, + 'chain.flow.ts': flowSrc('i1', ` + const left = async () => { await f.dispatch('child', { token: 'x' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.dispatch('child', { token: 'y' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, { header: `, { use: ['./child.flow.ts'] }` }) } }); +add({ name: 'K1', files: { 'chain.flow.ts': flowSrc('k1', ` + const pause = () => sleep(300); + const late = async () => { await Promise.all([pause(), pause()]); await f.run('printf L >> effects'); }; + const fast = async () => { await f.run('sleep 0.2; printf A >> effects'); await f.run('sleep 0.2; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([fast(), late()]);`, { pre: `import { setTimeout as sleep } from 'node:timers/promises';\n` }) } }); +add({ name: 'K2b', files: { 'chain.flow.ts': flowSrc('k2b', ` + const a = async () => { await f.run('sleep 0.3; printf A >> effects'); signal(); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); signal(); }; + const c = async () => { await Promise.all([ready(), ready()]); await f.run('printf C >> effects'); }; + await Promise.all([a(), b(), c()]);`, { pre: `let signal; const first = new Promise(r => { signal = r; });\nconst ready = async () => { await first; };\n` }) } }); +add({ name: 'K3', files: { 'chain.flow.ts': flowSrc('k3', ` + const out = []; + const a = async () => { out.push(await f.run('sleep 0.3; printf a')); }; + const b = async () => { out.push(await f.run('sleep 0.1; printf b')); }; + await Promise.all([a(), b()]); + await f.run('printf ' + out.join('') + ' >> effects');`) }, expect: r => /^(ab|ba)Z$/.test(r.effects) }); +add({ name: 'K5b', files: { 'chain.flow.ts': flowSrc('k5b', ` + const tree = async (d) => { if (d === 0) return; await Promise.all([tree(d - 1), tree(d - 1)]); }; + await f.run('printf A >> effects'); + await tree(12); + try { await f.run('printf B >> effects'); } catch (e) { void e; }`) }, expect: r => r.effects.includes('B') }); +add({ name: 'K13b', files: { 'chain.flow.ts': `${SURF} +export default flow('k13b', async f => { + const b = async () => { await f.run('sleep 0.4; printf B >> effects'); await f.run('printf C >> effects'); }; + const a = async () => { await f.run('sleep 0.1; printf A >> effects'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); f.done('success'); }; + await Promise.all([b(), a()]); +}); +` } }); + +export default S; +export { STALL, SURF, flowSrc, ADAPTER, HS, P_BIND, P_HAND, CHAIN, TAIL5, G3, NAT, impl, W2, add }; diff --git a/evidence/native-parallel-review9/s2.mjs b/evidence/native-parallel-review9/s2.mjs new file mode 100644 index 000000000..81fc5f813 --- /dev/null +++ b/evidence/native-parallel-review9/s2.mjs @@ -0,0 +1,181 @@ +// Review-6 attack scenarios. +import { STALL, SURF, flowSrc, HS, P_BIND, G3, NAT, TAIL5, W2, impl } from './s.mjs'; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); +const FORCED = [['forced', 'forced'], ['base', 'base']]; + +// ---------- entry-file rule bypass (natural, unforced) ---------- +// The entry defines `flow` locally; the screen sees `export default flow()`, +// but the loaded definition is impl.ts's, whose module scope binds Promise. +const BYPASS = `import impl from './impl.ts'; +const flow = (..._args: unknown[]) => impl; +export default flow('decoy', async f => { + await f.run('printf decoy'); +}); +`; +// A spec-exact Promise.all built only from registered combinators; its one +// unregistered join is a *member* of a registered all. +const P_WRAP = `const Promise = { all: (xs) => globalThis.Promise.all([new globalThis.Promise((res, rej) => { const out = []; let n = xs.length; xs.forEach((x, i) => globalThis.Promise.all([x]).then(([v]) => { out[i] = v; if (--n === 0) res(out); }, rej)); })]).then(([v]) => v) };`; +const P_RACE = `const Promise = { all: (xs) => globalThis.Promise.race(xs) };`; +add({ name: 'R1', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1', P_WRAP, G3) } }); +add({ name: 'R1w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1w', P_WRAP, W2 + G3) } }); +add({ name: 'R1wn', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r1wn', P_WRAP, W2 + NAT) } }); +add({ name: 'R2w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r2w', P_RACE, W2 + G3) } }); +add({ name: 'R3w', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r3w', P_BIND, W2 + G3) } }); +add({ name: 'R3', files: { 'chain.flow.ts': BYPASS, 'impl.ts': impl('r3', P_BIND, G3) } }); +// same bypass, `flow` imported from a local helper module +add({ name: 'R4w', files: { + 'chain.flow.ts': `import { flow } from './wrap.ts'; +export default flow('decoy', async f => { + await f.run('printf decoy'); +}); +`, + 'wrap.ts': `import impl from './impl.ts';\nexport const flow = (..._args: unknown[]) => impl;\n`, + 'impl.ts': impl('r4w', P_WRAP, W2 + G3) } }); +// Without the bypass the wrapped all is serial (control) +add({ name: 'R1c', files: { 'chain.flow.ts': `${SURF}\n${P_WRAP}\nexport default flow('r1c', async f => {\n${W2}${G3}${TAIL5}` } }); + +// ---------- runtime rule with eligibility forced on ---------- +const forced = (name, body, pre = '') => ({ name, sides: FORCED, files: { 'chain.flow.ts': flowSrc(name.toLowerCase(), body, { pre }) } }); +S.push(forced('FRrace', ` + await f.run('sleep 0.2; printf W'); + await Promise.race([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRany', ` + await f.run('sleep 0.2; printf W'); + await Promise.any([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRnestrace', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([Promise.race([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]), f.run('printf C')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRdefer', ` + await f.run('sleep 0.2; printf W'); + let signal; const first = new Promise(r => { signal = r; }); + const a = async () => { await f.run('sleep 0.3; printf A >> effects'); signal(); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); signal(); }; + const c = async () => { await Promise.all([first, f.run('printf c0')]); await f.run('printf C >> effects'); }; + await Promise.all([a(), b(), c()]);`)); +S.push(forced('FRthen', ` + await f.run('sleep 0.2; printf W'); + const sa = f.run('sleep 0.3; printf A'); + const th = { then: (r, j) => sa.then(r, j) }; + await Promise.all([th, f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRsettled', ` + await f.run('sleep 0.2; printf W'); + await Promise.allSettled([f.run('sleep 0.3; exit 3', { onNonZero: 'record' }), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`)); +S.push(forced('FRset', ` + await f.run('sleep 0.2; printf W'); + await Promise.all(new Set([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')])); + await f.run('printf X >> effects');`)); +S.push(forced('FRgen', ` + await f.run('sleep 0.2; printf W'); + function* g() { yield f.run('sleep 0.3; printf A'); yield f.run('sleep 0.1; printf B'); } + await Promise.all(g()); + await f.run('printf X >> effects');`)); +S.push(forced('FRthenagg', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]).then(v => v); + await f.run('printf X >> effects');`)); +S.push(forced('FRmicro', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); await new Promise(r => queueMicrotask(r)); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await new Promise(r => process.nextTick(r)); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await new Promise(r => setImmediate(r)); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects');`)); +S.push(forced('FRcatch', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.1; printf A'); throw new Error('a'); }; + const b = async () => { await f.run('sleep 0.3; printf B'); throw new Error('b'); }; + try { await Promise.all([a(), b()]); } catch (e) { void e; } + await f.run('sleep 0.5; printf X >> effects');`)); +S.push(forced('FRfinally', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { try { await f.run('sleep 0.3; printf A'); } finally { await f.run('printf F >> effects'); } }; + const b = async () => { await f.run('sleep 0.1; printf B'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`)); +S.push(forced('FRiter', ` + await f.run('sleep 0.2; printf W'); + const ps = [f.run('sleep 0.3; printf A'), f.run('sleep 0.1; printf B')]; + for await (const v of ps) { void v; } + await f.run('printf X >> effects');`)); +// forced wrapped-all directly in the entry (no bypass needed) +S.push({ name: 'FRwrap', sides: FORCED, files: { 'chain.flow.ts': `${SURF}\n${`const PW = ${P_WRAP.slice('const Promise = '.length).replace(/;$/, '')};`}\nexport default flow('frwrap', async f => {\n${W2} await PW.all([f.run('sleep 0.5; printf A'), f.run('printf B'), f.run('sleep 0.1; printf C')]);\n${TAIL5}` } }); + +// ---------- entry-file rule probes (natural) ---------- +add({ name: 'E1factory', files: { 'chain.flow.ts': `${SURF} +const make = () => flow('e1', async f => { +${NAT}${TAIL5}export default make(); +` } }); +add({ name: 'E2helper', files: { + 'chain.flow.ts': flowSrc('e2', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await pause(); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`, { pre: `import { pause } from './helper.ts';\n` }), + 'helper.ts': `export const pause = async () => { await new Promise(r => setTimeout(r, 50)); };\n` } }); +add({ name: 'E3dyn', files: { + 'chain.flow.ts': flowSrc('e3', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await import('./helper.ts'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`), + 'helper.ts': `export const x = 1;\n` } }); +add({ name: 'E4json', files: { + 'chain.flow.ts': flowSrc('e4', N2body(), { pre: `import data from './d.json' with { type: 'json' };\nvoid data;\n` }), + 'd.json': `{"k":"v"}` } }); +add({ name: 'E4jsonuse', files: { + 'chain.flow.ts': flowSrc('e4u', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf ' + data.k + ' >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]);`, { pre: `import data from './d.json' with { type: 'json' };\n` }), + 'd.json': `{"k":"a"}` } }); +add({ name: 'E5ns', files: { 'chain.flow.ts': `${SURF} +import * as surface from '@relayflows/surface'; +export default surface.flow('e5', async f => { +${NAT}${TAIL5}` } }); +function N2body() { return ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);`; } + +// ---------- upgrade / rollback ---------- +const UP = [['p2050', 'head'], ['p2051', 'head']]; +const CI4 = flowSrc('ci4', ` + await f.run('printf a >> effects'); + await Promise.resolve(f.run('printf b >> effects')); + await Promise.all([f.run('printf c >> effects'), f.run('printf d >> effects')]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf y >> effects', { timeout: '5m' }); + await Promise.all([Promise.resolve(f.run('printf e >> effects')), Promise.resolve(f.run('printf g >> effects'))]);`); +const CI5 = flowSrc('ci5', ` + await f.run('printf a >> effects'); + await Promise.resolve(f.run('printf b >> effects')); + await Promise.all([f.run('printf c >> effects'), f.run('printf d >> effects')]); + await f.run('printf e >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf y >> effects', { timeout: '5m' }); + await Promise.all([Promise.resolve(f.run('printf g >> effects')), Promise.resolve(f.run('printf h >> effects'))]);`); +const A1b = ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);`; +const B1b = ` + const left = async () => { await f.run('printf A'); await f.run('printf B'); await f.run('printf L >> effects'); }; + const right = async () => { await Promise.all([f.run('printf C'), f.run('printf D')]); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`; +for (const [n, src] of [['CI4', CI4], ['CI5', CI5], ['A1', flowSrc('a1', A1b)], ['B1', flowSrc('b1', B1b)], ['N2', flowSrc('n2', N2body())]]) { + S.push({ name: 'U' + n, sides: UP, files: { 'chain.flow.ts': src } }); + S.push({ name: 'RB' + n, sides: [['head', 'p2050'], ['head', 'p2051']], secondResume: 'head', + expect: r => r.code1 !== 0 && !r.effects1.includes('Z') && r.effects.includes('Z'), + files: { 'chain.flow.ts': src } }); +} + +export default S; diff --git a/evidence/native-parallel-review9/s3.mjs b/evidence/native-parallel-review9/s3.mjs new file mode 100644 index 000000000..4f6fb0375 --- /dev/null +++ b/evidence/native-parallel-review9/s3.mjs @@ -0,0 +1,55 @@ +// FB set (eligibility forced) + secrets. +import { SURF, flowSrc, ADAPTER, NAT, G3, P_BIND, TAIL5 } from './s.mjs'; +const F = [['forced', 'forced']]; +const LLM_OUT = `const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] };`; +const refused = (forbid) => r => r.fresh === true && r.code !== 0 && ![...forbid].some(c => r.effects.includes(c)); +const S = [ + { name: 'FB1', sides: F, adapter: true, extraArgs: ['--local-agent'], okIf: r => refused('LR')(r) && !r.calls, + extraCheck: root => { try { return { calls: require('fs').readFileSync(root + '/calls', 'utf8').length }; } catch { return { calls: 0 }; } }, + files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('fb1', ` + ${LLM_OUT} + const left = async () => { await f.run('printf l'); await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.run('sleep 0.2; printf r'); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`) } }, + { name: 'FB2', sides: F, adapter: true, extraArgs: ['--local-agent'], okIf: refused('E'), files: { 'adapter.mjs': ADAPTER, 'chain.flow.ts': flowSrc('fb2', ` + ${LLM_OUT} + await Promise.all([f.run('printf a'), f.run('printf b')]); + try { await f.llm('x', { output, model: 'test-model' }); } catch (e) { void e; } + await f.run('printf E >> effects');`) } }, + { name: 'FB3', sides: F, okIf: refused('C'), files: { 'chain.flow.ts': flowSrc('fb3', ` + await Promise.all([f.run('printf a'), f.run('printf b')]); + await new Promise(r => setTimeout(r, 100)); + const late = async () => { await f.run('printf C >> effects'); }; + await late();`) } }, + { name: 'FB3c', sides: F, okIf: refused('CD'), files: { 'chain.flow.ts': flowSrc('fb3c', ` + const a = async () => { await new Promise(r => setTimeout(r, 100)); try { await f.run('printf C >> effects'); } catch (e) { void e; } }; + const b = async () => { await f.run('sleep 0.4; printf B'); await f.run('printf D >> effects'); }; + await Promise.all([a(), b()]);`) } }, + { name: 'FB4', sides: F, okIf: refused('B'), files: { 'chain.flow.ts': flowSrc('fb4', ` + const tree = async (d) => { if (d === 0) return; await Promise.all([tree(d - 1), tree(d - 1)]); }; + await f.run('printf A >> effects'); + await tree(12); + try { await f.run('printf B >> effects'); } catch (e) { void e; }`) } }, + { name: 'FB6', sides: F, files: { 'chain.flow.ts': flowSrc('fb6', ` +${NAT}`) } }, + { name: 'FB7', sides: F, okIf: refused('X'), files: { 'chain.flow.ts': `${SURF}\n${P_BIND}\nexport default flow('fb7', async f => {\n${G3}${TAIL5}` } }, + { name: 'FB8', sides: F, okIf: refused('q'), files: { 'chain.flow.ts': flowSrc('fb8', ` + const v = async () => { await new Promise(r => setTimeout(r, 100)); try { await f.run('printf v >> effects'); } catch (e) { void e; } }; + await Promise.all([f.run('sleep 0.6; printf 1'), f.run('sleep 0.6; printf 2'), f.run('sleep 0.6; printf 3'), f.run('sleep 0.6; printf 4'), + f.run('sleep 0.6; printf 5'), f.run('sleep 0.6; printf 6'), f.run('sleep 0.6; printf 7'), f.run('sleep 0.6; printf 8'), + f.run('printf q >> effects'), v()]);`) } }, +]; +// secrets +const SEC = ` + await Promise.all([ + f.run('printf "%s" "\${R6_TOK:-unset}" > /granted; sleep 0.2', { secrets: ['R6_TOK'] }), + f.run('printf "%s" "\${R6_TOK:-unset}" > /ungranted; sleep 0.1'), + ]); + await f.run('printf "%s" "\${R6_TOK:-unset}" > /later');`; +const secCheck = root => { const fs = require('fs'); const rd = n => { try { return fs.readFileSync(root + '/' + n, 'utf8'); } catch { return 'missing'; } }; + return { sec: [rd('granted') === 'r6-secret-value' ? 'G:ok' : 'G:' + (rd('granted') === 'unset' ? 'unset' : rd('granted') === 'missing' ? 'missing' : 'other'), + rd('ungranted') === 'unset' ? 'U:unset' : rd('ungranted') === 'missing' ? 'U:missing' : 'U:LEAK', rd('later') === 'unset' ? 'L:unset' : rd('later') === 'missing' ? 'L:missing' : 'L:LEAK'].join(' ') }; }; +const HS = [['head', 'head'], ['base', 'base']]; +S.push({ name: 'S1', sides: HS, env: { R6_TOK: 'r6-secret-value' }, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('s1', SEC) } }); +S.push({ name: 'S2missing', sides: HS, env: { R6_TOK: '' }, okIf: r => r.code !== 0, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('s2', SEC.replaceAll('R6_TOK', 'R6_ABSENT')) } }); +export default S; diff --git a/evidence/native-parallel-review9/s4.mjs b/evidence/native-parallel-review9/s4.mjs new file mode 100644 index 000000000..4bb8fa470 --- /dev/null +++ b/evidence/native-parallel-review9/s4.mjs @@ -0,0 +1,20 @@ +import { SURF, NAT, TAIL5, W2 } from './s.mjs'; +const PATCH = `const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = function (x) { + if (this !== I || !(x instanceof I) || !/at (Promise|Function)\\.all /.test(new Error().stack)) return resolve.call(this, x); + if (gate === undefined) { + let open; const g = new I(r => { open = r; }); g.open = open; gate = g; + queueMicrotask(() => { gate = undefined; }); + } + const g = gate; + x.then(v => g.open(v), () => {}); + return g; +}; +`; +export default [ + { name: 'R5n', sides: [['head', 'head'], ['base', 'base']], files: { + 'chain.flow.ts': `${SURF}\nimport './lib/p.mjs';\nexport default flow('r5n', async f => {\n${W2}${NAT}${TAIL5}`, + 'lib/p.mjs': PATCH } }, +]; diff --git a/evidence/native-parallel-review9/s7.mjs b/evidence/native-parallel-review9/s7.mjs new file mode 100644 index 000000000..dc7ed4882 --- /dev/null +++ b/evidence/native-parallel-review9/s7.mjs @@ -0,0 +1,182 @@ +// Review-7 new attack scenarios for flows#667 (head e3503c08). +import { SURF, flowSrc, NAT, W2, TAIL5 } from './s.mjs'; +const HS = [['head', 'head'], ['base', 'base']]; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); +const STALL = ` await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' });`; +const perm = (letters) => (e) => e.length === letters.length && [...letters].every(c => e.split(c).length - 1 === letters.split(c).length - 1); + +// ---- HY: the instrumentation re-evaluates the body with a parameter named +// __certifyParallelBranch; an authored binding of that name captures it. +add({ name: 'HY1', files: { 'chain.flow.ts': flowSrc('hy1', ` + const __certifyParallelBranch = async () => { await f.run('printf P >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([__certifyParallelBranch(), b()]);`) }, + expect: r => perm('PBZ')(r.effects) }); +add({ name: 'HY1s', files: { 'chain.flow.ts': `${SURF} +export default flow('hy1s', async f => { + const __certifyParallelBranch = async () => { await f.run('printf P >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([__certifyParallelBranch(), b()]); + f.done('success'); +}); +` }, noZ: true, okIf: r => r.code === 0 && perm('PB')(r.effects) }); +add({ name: 'HY2', files: { 'chain.flow.ts': flowSrc('hy2', ` + const __certifyParallelBranch = await f.run('printf V'); + const a = async () => { await f.run('sleep 0.2; printf A >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([a(), b()]);`) }, expect: r => perm('ABZ')(r.effects) }); + +// ---- PAR: parenthesized branch-call members pass the grammar (unwrap) but +// the call-site instrumentation only wraps bare CallExpressions. +add({ name: 'PAR1', files: { 'chain.flow.ts': flowSrc('par1', ` + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([(a()), (b()), (c())]);`) }, expect: r => perm('abcZ')(r.effects) }); +add({ name: 'PAR2', files: { 'chain.flow.ts': flowSrc('par2', ` + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([((async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); })()), b()]);`) }, + expect: r => perm('abZ')(r.effects) }); + +// ---- EQ: certified shapes whose runtime behaviour must match base. +add({ name: 'EQ1twice', files: { 'chain.flow.ts': flowSrc('eq1', ` + const a = async () => { await f.run('sleep 0.2; printf A'); await f.run('printf a >> effects'); }; + await Promise.all([a(), a()]); + await f.run('printf X >> effects');`) }, allowDupLetters: true, + expectedCounts: { 'sleep 0.2; printf A': 2, 'printf a >> effects': 2 }, expect: r => r.effects === 'aaXZ' }); +add({ name: 'EQ2ret', files: { 'chain.flow.ts': flowSrc('eq2', ` + const a = async () => { await f.run('sleep 0.3; printf A'); return await f.run('printf a'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); return await f.run('printf b'); }; + const r = await Promise.all([a(), b()]); + await f.run('printf ' + r[0] + r[1] + ' >> effects');`) }, expect: r => r.effects === 'abZ' }); +add({ name: 'EQ3midret', files: { 'chain.flow.ts': flowSrc('eq3', ` + const a = async () => { await f.run('sleep 0.2; printf A >> effects'); return await f.run('printf R >> effects'); await f.run('printf Q >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => perm('ABRXZ')(r.effects) && !r.effects.includes('Q') }); +add({ name: 'EQ4fail', files: { 'chain.flow.ts': flowSrc('eq4', ` + const a = async () => { await f.run('sleep 0.1; printf F >> effects; exit 1'); await f.run('printf G >> effects'); }; + const b = async () => { await f.run('sleep 0.4; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([a(), b()]);`) }, okIf: r => r.code !== 0 && !r.effects.includes('G') && !r.effects.includes('C') && !r.effects.includes('Z') }); +add({ name: 'EQ5wide', files: { 'chain.flow.ts': flowSrc('eq5', ` + ${Array.from({ length: 12 }, (_, i) => `const b${i} = async () => { await f.run('sleep 0.${1 + (i * 7) % 3}; printf S${i}'); await f.run('printf ${'abcdefghijkl'[i]} >> effects'); };`).join('\n ')} + await Promise.all([${Array.from({ length: 12 }, (_, i) => `b${i}()`).join(', ')}]); + await f.run('printf X >> effects');`) }, expect: r => perm('abcdefghijklXZ')(r.effects) }); +add({ name: 'EQ5stall', files: { 'chain.flow.ts': flowSrc('eq5s', ` + ${Array.from({ length: 10 }, (_, i) => `const b${i} = async () => { await f.run('sleep 0.${1 + (i * 7) % 3}; printf S${i}'); await f.run('printf ${'abcdefghij'[i]} >> effects'); };`).join('\n ')} + const s = async () => { await f.run('sleep 0.15; printf s'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Y >> effects', { timeout: '5m' }); await f.run('printf y >> effects'); }; + await Promise.all([${Array.from({ length: 10 }, (_, i) => `b${i}()`).join(', ')}, s()]); + await f.run('printf X >> effects');`) }, expect: r => perm('abcdefghijYyXZ')(r.effects) }); +add({ name: 'EQ6expr', files: { 'chain.flow.ts': flowSrc('eq6', ` + const a = async () => await f.run('sleep 0.2; printf A >> effects'); + const b = async () => await Promise.all([f.run('sleep 0.1; printf B >> effects'), f.run('sleep 0.3; printf C >> effects')]); + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => perm('ABCXZ')(r.effects) }); +add({ name: 'EQ7record', files: { 'chain.flow.ts': flowSrc('eq7', ` + const a = async () => { const r = await f.run('sleep 0.2; exit 3', { onNonZero: 'record' }); await f.run('printf R' + r.exitCode + ' >> effects'); }; + const b = async () => { const v = await f.run('sleep 0.1; printf B'); await f.run('printf ' + v + ' >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => r.effects.includes('R3') && perm('BR3XZ')(r.effects) }); +add({ name: 'EQ8throw', files: { 'chain.flow.ts': flowSrc('eq8', ` + const x = await f.run('printf W'); + const a = async () => { await f.run('printf ' + x.y.z + ' >> effects'); }; + const b = async () => { await f.run('sleep 0.2; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([a(), b()]);`) }, okIf: r => r.code !== 0 && !r.effects.includes('Z') }); +// Branch whose first statement is a nested group, then a follow-up that joins +// the nested members; crash lands inside the other branch. +add({ name: 'EQ9nested', files: { 'chain.flow.ts': flowSrc('eq9', ` + await f.run('sleep 0.1; printf W'); + const a = async () => { await Promise.all([f.run('sleep 0.3; printf A1'), f.run('sleep 0.1; printf A2')]); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.2; printf B'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Y >> effects', { timeout: '5m' }); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => perm('aYbXZ')(r.effects) }); + +// ---- PL: NODE_OPTIONS preloads. The entry is certified; the patch runs +// before the SDK snapshots the intrinsics, so the snapshot accepts it. +const R5PATCH = `const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = function (x) { + if (this !== I || !(x instanceof I) || !/at (Promise|Function)\\.all /.test(new Error().stack)) return resolve.call(this, x); + if (gate === undefined) { + let open; const g = new I(r => { open = r; }); g.open = open; gate = g; + queueMicrotask(() => { gate = undefined; }); + } + const g = gate; + x.then(v => g.open(v), () => {}); + return g; +}; +`; +const NATW = flowSrc('pl', ` + await f.run('sleep 0.2; printf W'); +${NAT} await f.run('printf X >> effects');`); +const pl = (name, patch, extra = {}) => add({ name, env: { NODE_OPTIONS: `--import=/lib/pre.mjs` }, + files: { 'chain.flow.ts': NATW.replace("flow('pl'", `flow('${name.toLowerCase()}'`), 'lib/pre.mjs': patch }, expect: r => perm('abcXZ')(r.effects), ...extra }); +pl('PL1r5', R5PATCH); +pl('PL2then', `const t = Promise.prototype.then; +Promise.prototype.then = function then(a, b) { return t.call(this, typeof a === 'function' ? v => a(v) : a, typeof b === 'function' ? e => b(e) : b); }; +`); +pl('PL3sub', `const N = globalThis.Promise; +class P extends N {} +globalThis.Promise = P; +`); +pl('PL4ctor', `setTimeout(() => { + const N = globalThis.Promise; + class P extends N {} + Object.defineProperty(N.prototype, 'constructor', { value: P, writable: true, configurable: true }); +}, 120).unref(); +`); +pl('PL5species', `setTimeout(() => { + const N = globalThis.Promise; + class P extends N {} + Object.defineProperty(N, Symbol.species, { get() { return P; }, configurable: true }); +}, 120).unref(); +`); + +// ---- secrets in parallel branches (granted / ungranted / later) +const SEC = ` + const g = async () => { await f.run('sleep 0.1; printf G'); await f.run('printf "%s" "\${R7_TOK:-unset}" > /granted2; sleep 0.1', { secrets: ['R7_TOK'] }); }; + const u = async () => { await f.run('sleep 0.15; printf U'); await f.run('printf "%s" "\${R7_TOK:-unset}" > /ungranted2'); }; + await Promise.all([ + f.run('printf "%s" "\${R7_TOK:-unset}" > /granted; sleep 0.2', { secrets: ['R7_TOK'] }), + f.run('printf "%s" "\${R7_TOK:-unset}" > /ungranted; sleep 0.1'), + g(), u(), + ]); + await f.run('printf "%s" "\${R7_TOK:-unset}" > /later');`; +const secCheck = root => { + const fs = require('fs'); + const rd = n => { try { return fs.readFileSync(root + '/' + n, 'utf8'); } catch { return 'missing'; } }; + const cls = (n, want) => { const v = rd(n); return `${n}:${v === 'r7-secret-value' ? (want ? 'ok' : 'LEAK') : v}`; }; + return { sec: [cls('granted', true), cls('granted2', true), cls('ungranted', false), cls('ungranted2', false), cls('later', false)].join(' ') }; +}; +add({ name: 'SEC7', env: { R7_TOK: 'r7-secret-value' }, extraCheck: secCheck, noZ: false, files: { 'chain.flow.ts': flowSrc('sec7', SEC) }, + okIf: r => r.code === 0 && r.sec === 'granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset' }); + +add({ name: 'PL7mid', env: { NODE_OPTIONS: `--import=/lib/pre.mjs` }, expect: r => perm('abcXZ')(r.effects), + files: { 'chain.flow.ts': flowSrc('pl7', ` + await f.run('touch /wstart; sleep 0.3; printf W'); +${NAT} await f.run('printf X >> effects');`), + 'lib/pre.mjs': `import fs from 'node:fs'; +const t = setInterval(() => { if (fs.existsSync('/wstart')) { clearInterval(t); +${R5PATCH}} }, 2); +t.unref(); +` } }); +add({ name: 'PL7neutral', env: { NODE_OPTIONS: `--import=/lib/pre.mjs` }, expect: r => perm('abcXZ')(r.effects), + files: { 'chain.flow.ts': flowSrc('pl7n', ` + await f.run('touch /wstart; sleep 0.3; printf W'); +${NAT} await f.run('printf X >> effects');`), + 'lib/pre.mjs': `import fs from 'node:fs'; +const t = setInterval(() => { if (fs.existsSync('/wstart')) { clearInterval(t); + const I = globalThis.Promise; const resolve = I.resolve; I.resolve = function resolve2(x) { return resolve.call(this, x); }; +} }, 2); +t.unref(); +` } }); +pl('PL6child', `if (process.argv.some(a => a.includes('authored-node-entry'))) setTimeout(() => {\n${R5PATCH}}, 150).unref();\n`); +pl('PL6late', `setTimeout(() => {\n${R5PATCH}}, 150).unref();\n`); +add({ name: 'SEC7m', env: { R7_TOK: 'r7-secret-value', RELAY_SECRET_ENV_NAMES: '["R7_TOK"]' }, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('sec7m', SEC) }, + okIf: r => r.code === 0 && r.sec === 'granted:ok granted2:ok ungranted:unset ungranted2:unset later:unset' }); +add({ name: 'SEC7miss', env: { RELAY_SECRET_ENV_NAMES: '["R7_TOK"]' }, extraCheck: secCheck, files: { 'chain.flow.ts': flowSrc('sec7x', SEC) }, + okIf: r => r.code !== 0 && !/granted:/.test('') }); + +export default S; diff --git a/evidence/native-parallel-review9/s8.mjs b/evidence/native-parallel-review9/s8.mjs new file mode 100644 index 000000000..eb5fd2c2b --- /dev/null +++ b/evidence/native-parallel-review9/s8.mjs @@ -0,0 +1,160 @@ +// Review-8 new attack scenarios for flows#667 (head 3e008e9e). Run with h8.mjs. +import { SURF, flowSrc, NAT, W2, TAIL5 } from './s.mjs'; +const HS = [['head', 'head'], ['base', 'base']]; +const S = []; +const add = (s) => S.push({ sides: HS, ...s }); +const perm = (letters) => (e) => e.length === letters.length && [...letters].every(c => e.split(c).length - 1 === letters.split(c).length - 1); +const NATW = (name) => flowSrc(name, ` + await f.run('sleep 0.2; printf W'); +${NAT} await f.run('printf X >> effects');`); + +// ---- F3 bypasses. R5 patch made native-looking with a Proxy (passes the +// "[native code]" toString test), then hidden from the flag check. +const R5PROXY = `const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = new Proxy(resolve, { apply(target, self, args) { + const x = args[0]; + if (self !== I || !(x instanceof I) || !/at (Promise|Function)\\.all /.test(new Error().stack)) return Reflect.apply(target, self, args); + if (gate === undefined) { + let open; const g = new I(r => { open = r; }); g.open = open; gate = g; + queueMicrotask(() => { gate = undefined; }); + } + const g = gate; + x.then(v => g.open(v), () => {}); + return g; +} }); +`; +const R5PLAIN = `const I = Function('return this')()['Pro' + 'mise']; +const resolve = I.resolve; +let gate; +I.resolve = function (x) { + if (this !== I || !(x instanceof I) || !/at (Promise|Function)\\.all /.test(new Error().stack)) return resolve.call(this, x); + if (gate === undefined) { + let open; const g = new I(r => { open = r; }); g.open = open; gate = g; + queueMicrotask(() => { gate = undefined; }); + } + const g = gate; + x.then(v => g.open(v), () => {}); + return g; +}; +`; +// Non-snapshotted intrinsic: Promise.all's own iteration of a 3-promise array +// sees only the middle member, so the aggregate resolves when b's branch does. +const ITER = `const AP = Array.prototype; const iter = AP[Symbol.iterator]; +const P = Function('return this')()['Pro' + 'mise']; +Object.defineProperty(AP, Symbol.iterator, { value: function values() { + if (this.length === 3 && this.every(x => x instanceof P)) { + const st = new Error().stack; + if (/at (Promise|Function)\\.all \\(\\)/.test(st) && !/collectMembers/.test(st)) return iter.call([this[1]]); + } + return iter.call(this); +}, writable: true, configurable: true }); +`; +const ok5 = r => perm('abcXZ')(r.effects); +add({ name: 'PL8r', nodeArgs: ['-r', '/lib/pre.cjs'], files: { 'chain.flow.ts': NATW('pl8r'), 'lib/pre.cjs': R5PROXY }, expect: ok5 }); +add({ name: 'PL8rplain', nodeArgs: ['-r', '/lib/pre.cjs'], files: { 'chain.flow.ts': NATW('pl8rplain'), 'lib/pre.cjs': R5PLAIN }, expect: ok5 }); +add({ name: 'PL8hide', env: { NODE_OPTIONS: '--import=/lib/pre.mjs' }, files: { 'chain.flow.ts': NATW('pl8hide'), 'lib/pre.mjs': `${R5PROXY}delete process.env.NODE_OPTIONS;\n` }, expect: ok5 }); +add({ name: 'PL8iter', nodeArgs: ['-r', '/lib/pre.cjs'], files: { 'chain.flow.ts': NATW('pl8iter'), 'lib/pre.cjs': ITER }, expect: ok5 }); +// Dependency patch at import time of the flow module (no preload at all): the +// installed @relayflows/surface is a shim that patches, then re-exports the real one. +const shim = (patch) => ({ + 'node_modules/@relayflows/surface/package.json': JSON.stringify({ name: '@relayflows/surface', version: '2.0.51', type: 'module', exports: { '.': './index.js', './runtime': './runtime.js' } }), + 'node_modules/@relayflows/surface/index.js': `import './patch.js';\nexport * from '/@relayflows/surface/dist/index.js';\n`, + 'node_modules/@relayflows/surface/runtime.js': `export * from '/@relayflows/surface/dist/runtime.js';\n`, + 'node_modules/@relayflows/surface/patch.js': patch, +}); +add({ name: 'PL9dep', realNodeModules: true, files: { 'chain.flow.ts': NATW('pl9dep'), ...shim(ITER) }, expect: ok5 }); +add({ name: 'PL9depsnap', realNodeModules: true, files: { 'chain.flow.ts': NATW('pl9depsnap'), ...shim(R5PROXY) }, expect: ok5 }); +add({ name: 'PL9depnone', realNodeModules: true, files: { 'chain.flow.ts': NATW('pl9depnone'), ...shim('') }, expect: ok5 }); + +// ---- Resume under a different NODE_OPTIONS than the fresh run (pinned parallel root). +for (const [n, opts] of [['RS1', '--dns-result-order=ipv4first'], ['RS2', '--unhandled-rejections=strict'], ['RS3', '--require=/lib/noop.cjs'], ['RS0', '--max-old-space-size=2048']]) { + add({ name: n, resumeEnv: { NODE_OPTIONS: opts }, files: { 'chain.flow.ts': NATW(n.toLowerCase()), 'lib/noop.cjs': 'module.exports = 1;\n' }, expect: ok5 }); + for (const side of ['head', 'base']) S.push({ name: `${n}b${side[0]}`, sides: [[side, side]], secondResume: side, resumeEnv: { NODE_OPTIONS: opts }, + files: { 'chain.flow.ts': NATW(`${n.toLowerCase()}b`), 'lib/noop.cjs': 'module.exports = 1;\n' }, expect: ok5 }); +} + +// ---- Certified natural shapes (probe8: certified=true) run end to end. +add({ name: 'DP1', files: { 'chain.flow.ts': flowSrc('dp1', ` + await f.run('sleep 0.1; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([((a())), (((b())))]); + await f.run('printf X >> effects');`) }, expect: r => perm('abXZ')(r.effects) }); +add({ name: 'OPT1', files: { 'chain.flow.ts': flowSrc('opt1', ` + await f.run('sleep 0.1; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([(a?.()), (b())]); + await f.run('printf X >> effects');`) }, expect: r => perm('abXZ')(r.effects) }); +add({ name: 'TV1', files: { 'chain.flow.ts': flowSrc('tv1', ` + const v = await f.run('sleep 0.1; printf vv'); + const a = async () => { await f.run(\`sleep 0.3; printf \${v}\`); await f.run(\`printf a\${v.length} >> effects\`); }; + const b = async () => { const r = await f.run('sleep 0.1; exit 4', { onNonZero: 'record' }); await f.run(\`printf b\${r.exitCode} >> effects\`); }; + await Promise.all([a(), b()]); + await f.run(\`printf X >> effects\`);`) }, expect: r => perm('a2b4XZ')(r.effects) && r.effects.includes('a2') && r.effects.includes('b4') }); +add({ name: 'EP1', files: { 'chain.flow.ts': flowSrc('ep1', ` + const v = await f.run('sleep 0.1; printf vv'); + const a = async () => { await f.run('sleep 0.3; printf A'); await f.run('printf a' + v['length'] + ' >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b' + (v[0] === 'v' ? 'y' : 'n') + ' >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`) }, expect: r => r.effects.includes('a2') && r.effects.includes('by') && perm('a2byXZ')(r.effects) }); + +// ---- F4: thenable refusal and its neighbours (deep-forced), compared with base. +const DB = [['deep', 'deep'], ['base', 'base']]; +const deep = (name, body, extra = {}) => S.push({ name, sides: DB, files: { 'chain.flow.ts': flowSrc(name.toLowerCase(), body) }, ...extra }); +deep('FT1wrap', ` + await f.run('sleep 0.2; printf W'); + const sa = f.run('sleep 0.3; printf A'); + const th = Promise.resolve({ then: (r, j) => sa.then(r, j) }); + await Promise.all([th, f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`); +deep('FT2asyncStep', ` + await f.run('sleep 0.2; printf W'); + const a = async () => f.run('sleep 0.3; printf A'); + await Promise.all([a(), f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`); +deep('FT3retThen', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); return { then(r) { setTimeout(() => r(1), 20); } }; }; + const b = async () => { await f.run('sleep 0.1; printf B'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`); +deep('FT4awaitThen', ` + await f.run('sleep 0.2; printf W'); + const a = async () => { await f.run('sleep 0.3; printf A'); await { then(r) { setTimeout(() => r(1), 20); } }; await f.run('printf a >> effects'); }; + const b = async () => { await f.run('sleep 0.1; printf B'); await f.run('printf b >> effects'); }; + await Promise.all([a(), b()]); + await f.run('printf X >> effects');`); +deep('FT5wrapped', ` + await f.run('sleep 0.2; printf W'); + await Promise.all([{ s: f.run('sleep 0.3; printf A') }, f.run('sleep 0.1; printf B')]); + await f.run('printf X >> effects');`); + +// ---- F5: prompt failure; nothing admitted after the violation (deep-forced). +deep('F5x', ` + const a = async () => { await f.run('sleep 0.1; printf A >> effects'); await Promise.all([f.run('printf a1'), { then(r) { r(1); } }]); await f.run('printf Q >> effects'); }; + const b = async () => { await f.run('sleep 0.6; printf B >> effects'); await f.run('printf L >> effects'); }; + await Promise.all([a(), b()]);`, { okIf: r => r.code !== 0 && !/[QLZ]/.test(r.effects) }); +deep('F5w', ` + const a = async () => { await f.run('sleep 0.1; printf A >> effects'); await Promise.all([f.run('printf a1'), { then(r) { r(1); } }]); await f.run('printf Q >> effects'); }; + const b = async () => { await f.run('sleep 15; printf B >> effects'); await f.run('printf L >> effects'); }; + await Promise.all([a(), b()]);`, { okIf: r => r.code !== 0 && !/[QLZ]/.test(r.effects) && r.ms < 10000 }); + +// ---- Secrets: granted step admitted only on resume, inside a parallel branch. +const SEC8 = ` + const g = async () => { await f.run('sleep 0.1; printf G'); await f.run('test -f release || { touch stalled; sleep 120; }; printf Y >> effects', { timeout: '5m' }); await f.run('printf "%s" "\${R7_TOK:-unset}" > /granted2', { secrets: ['R7_TOK'] }); }; + const u = async () => { await f.run('sleep 0.15; printf U'); await f.run('sleep 0.3; printf "%s" "\${R7_TOK:-unset}" > /ungranted2'); }; + await Promise.all([g(), u()]); + await f.run('printf "%s" "\${R7_TOK:-unset}" > /later');`; +const sec8Check = root => { + const fs = require('fs'); + const rd = n => { try { return fs.readFileSync(root + '/' + n, 'utf8'); } catch { return 'missing'; } }; + const cls = (n, want) => { const v = rd(n); return `${n}:${v === 'r7-secret-value' ? (want ? 'ok' : 'LEAK') : v}`; }; + return { sec: [cls('granted2', true), cls('ungranted2', false), cls('later', false)].join(' ') }; +}; +add({ name: 'SEC8m', env: { R7_TOK: 'r7-secret-value', RELAY_SECRET_ENV_NAMES: '["R7_TOK"]' }, extraCheck: sec8Check, files: { 'chain.flow.ts': flowSrc('sec8m', SEC8) }, + okIf: r => r.code === 0 && r.sec === 'granted2:ok ungranted2:unset later:unset' && perm('YZ')(r.effects) }); + +export default S; diff --git a/evidence/native-parallel-review9/sdk-build.log b/evidence/native-parallel-review9/sdk-build.log new file mode 100644 index 000000000..1647e84a1 --- /dev/null +++ b/evidence/native-parallel-review9/sdk-build.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 build +> tsc && node scripts/make-cli-executable.mjs diff --git a/evidence/native-parallel-review9/sdk-dist-hashes.log b/evidence/native-parallel-review9/sdk-dist-hashes.log new file mode 100644 index 000000000..6c81e4919 --- /dev/null +++ b/evidence/native-parallel-review9/sdk-dist-hashes.log @@ -0,0 +1,6 @@ +6a63af0663243e8489ea27c72053fc5a68762663872e435933a6e303d389b49b packages/sdk/dist/authored-flow-lifecycle.js +ee81efe8867133f401689af2162b96867dccff344d9dde40d8933221945c0f41 packages/sdk/dist/authored-promise-graph.js +9abe15a2c28c5f5c43ed288c910c226486855f9e98b61e2aca433392ed78c211 packages/sdk/dist/authored-root.js +6a63af0663243e8489ea27c72053fc5a68762663872e435933a6e303d389b49b /w/sdk-head/dist/authored-flow-lifecycle.js +ee81efe8867133f401689af2162b96867dccff344d9dde40d8933221945c0f41 /w/sdk-head/dist/authored-promise-graph.js +9abe15a2c28c5f5c43ed288c910c226486855f9e98b61e2aca433392ed78c211 /w/sdk-head/dist/authored-root.js diff --git a/evidence/native-parallel-review9/sdk-focused-unit.log b/evidence/native-parallel-review9/sdk-focused-unit.log new file mode 100644 index 000000000..114a7ee90 --- /dev/null +++ b/evidence/native-parallel-review9/sdk-focused-unit.log @@ -0,0 +1,21 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/communication-feature-secret-scoping.test.ts (1 test) 14ms + ✓ tests/authored-parallel-body.test.ts (5 tests) 30ms + ✓ tests/authored-parallel-eligibility.test.ts (10 tests) 57ms + ✓ tests/authored-step-graph.test.ts (27 tests) 923ms + ✓ the authored step DAG > does not walk a long-running step's chain when a wrapper awaits it 361ms + ✓ tests/authored-step-secrets.test.ts (1 test) 25ms +(node:35386) [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/worker-feature-secret-scoping.test.ts (2 tests) 851ms + ✓ agent worker uses the negotiated daemon capability for its real child 475ms + ✓ llm worker uses the negotiated daemon capability for its real child 376ms + ✓ tests/authored-root.test.ts (40 tests) 540ms + ✓ tests/authored-flow-lifecycle-executor.test.ts (47 tests) 662ms + + Test Files 8 passed (8) + Tests 133 passed (133) + Start at 01:46:27 + Duration 2.81s (transform 1.34s, setup 267ms, collect 8.48s, tests 3.10s, environment 1ms, prepare 453ms) diff --git a/evidence/native-parallel-review9/sdk-secrets-live.log b/evidence/native-parallel-review9/sdk-secrets-live.log new file mode 100644 index 000000000..d8ad6ac72 --- /dev/null +++ b/evidence/native-parallel-review9/sdk-secrets-live.log @@ -0,0 +1,11 @@ + + RUN v2.1.9 /Volumes/Paris Drive/AgentWorkforce/swarm/ms-flows-parallel/flows-parallel/packages/sdk + + ✓ tests/authored-step-secrets-live.test.ts (2 tests) 1787ms + ✓ an authored shell child sees a delivered token only when its own f.run grants it 1042ms + ✓ parallel authored shell children keep their own secret grants 744ms + + Test Files 1 passed (1) + Tests 2 passed (2) + Start at 01:46:27 + Duration 4.30s (transform 878ms, setup 73ms, collect 1.97s, tests 1.79s, environment 0ms, prepare 113ms) diff --git a/evidence/native-parallel-review9/sdk-typecheck-tests.log b/evidence/native-parallel-review9/sdk-typecheck-tests.log new file mode 100644 index 000000000..3b1c199e9 --- /dev/null +++ b/evidence/native-parallel-review9/sdk-typecheck-tests.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck:tests +> tsc -p tsconfig.tests.json diff --git a/evidence/native-parallel-review9/sdk-typecheck.log b/evidence/native-parallel-review9/sdk-typecheck.log new file mode 100644 index 000000000..b41e9a5e0 --- /dev/null +++ b/evidence/native-parallel-review9/sdk-typecheck.log @@ -0,0 +1,3 @@ + +> @relayflows/sdk@2.0.51 typecheck +> tsc --noEmit && tsc -p tsconfig.type-tests.json diff --git a/evidence/native-parallel-review9/timing7.mjs b/evidence/native-parallel-review9/timing7.mjs new file mode 100644 index 000000000..8c9dab856 --- /dev/null +++ b/evidence/native-parallel-review9/timing7.mjs @@ -0,0 +1,55 @@ +// Native shape timing: 3 x 300 ms routes, each followed by a 100 ms dependent, then a join. +// Alternates head and base, 1 warm-up each, then N measured pairs. Timestamps come from the +// shell children themselves (date +%s%3N), so overlap is measured on the effects, not the journal. +import fs from 'node:fs'; +import path from 'node:path'; +import { spawnSync } from 'node:child_process'; +const N = Number(process.argv[2] ?? 10); +const SIDES = { + head: { cli: '/w/head/packages/sdk/dist/cli.js', nm: '/w/head/packages/sdk/node_modules' }, + base: { cli: '/w/base/packages/sdk/dist/cli.js', nm: '/w/base/packages/sdk/node_modules' }, +}; +const step = (tag, secs) => `echo "${tag}0 $(date +%s%3N)" >> t; sleep ${secs}; echo "${tag}1 $(date +%s%3N)" >> t`; +const SRC = `import { flow } from '@relayflows/surface'; +export default flow('timing', async f => { + const a = async () => { await f.run('${step('RA', 0.3)}'); await f.run('${step('DA', 0.1)}'); }; + const b = async () => { await f.run('${step('RB', 0.3)}'); await f.run('${step('DB', 0.1)}'); }; + const c = async () => { await f.run('${step('RC', 0.3)}'); await f.run('${step('DC', 0.1)}'); }; + await Promise.all([a(), b(), c()]); + f.done('success'); +}); +`; +function once(side, i) { + const root = `/w/runs/timing/${side}-${i}`; + fs.rmSync(root, { recursive: true, force: true }); + fs.mkdirSync(root, { recursive: true }); + fs.writeFileSync(path.join(root, 'package.json'), '{"type":"module"}'); + fs.symlinkSync(SIDES[side].nm, path.join(root, 'node_modules')); + fs.writeFileSync(path.join(root, 'chain.flow.ts'), SRC); + const t0 = Date.now(); + const r = spawnSync(process.execPath, [SIDES[side].cli, 'run', '--no-observer-link', '--json', '--data-dir', path.join(root, 'data'), path.join(root, 'chain.flow.ts'), '--input', '{}'], + { cwd: root, env: { ...process.env, RELAYFLOWD_BIN: '/w/relayflowd-main' }, encoding: 'utf8' }); + const cli = Date.now() - t0; + const t = Object.fromEntries(fs.readFileSync(path.join(root, 't'), 'utf8').trim().split('\n').map(l => l.split(' ')).map(([k, v]) => [k, Number(v)])); + const routes = ['A', 'B', 'C'].map(x => [t[`R${x}0`], t[`R${x}1`]]); + const deps = ['A', 'B', 'C'].map(x => [t[`D${x}0`], t[`D${x}1`]]); + const overlap = (iv) => Math.max(...iv.map(v => v[0])) < Math.min(...iv.map(v => v[1])); + const first = Math.min(...routes.map(v => v[0])); + const last = Math.max(...deps.map(v => v[1])); + const mode = JSON.parse(spawnSync('python3', ['-c', `import sqlite3,json,glob +for f in sorted(glob.glob('${root}/data/runs/*.sqlite3')): + r=sqlite3.connect(f).execute("select payload from entries where entry_type='run.spawned' order by seq limit 1").fetchone() + s=json.loads(r[0]).get('spec',{}).get('steps',[{}])[0] + if s.get('id')=='authored-root': print(json.dumps(json.loads(s['instruction']).get('executionMode','absent'))); break`], { encoding: 'utf8' }).stdout || '"?"'); + fs.rmSync(root, { recursive: true, force: true }); + return { side, i, code: r.status, mode, cli, body: last - first, routeSpread: Math.max(...routes.map(v => v[0])) - first, + routesOverlap: overlap(routes), depsOverlap: overlap(deps) }; +} +const out = { head: [], base: [] }; +once('head', -1); once('base', -1); +for (let i = 0; i < N; i++) for (const side of i % 2 ? ['base', 'head'] : ['head', 'base']) { const r = once(side, i); out[side].push(r); console.log(JSON.stringify(r)); } +const q = (xs, p) => { const s = [...xs].sort((a, b) => a - b); return s[Math.min(s.length - 1, Math.floor(p * (s.length - 1) + 0.5))]; }; +for (const side of ['head', 'base']) { + const rs = out[side]; + console.log(`TIMING ${side} mode=${[...new Set(rs.map(r => r.mode))]} codes=${[...new Set(rs.map(r => r.code))]} body p50=${q(rs.map(r => r.body), 0.5)} max=${Math.max(...rs.map(r => r.body))} cli p50=${q(rs.map(r => r.cli), 0.5)} max=${Math.max(...rs.map(r => r.cli))} spread p50=${q(rs.map(r => r.routeSpread), 0.5)} routesOverlap=${rs.filter(r => r.routesOverlap).length}/${rs.length} depsOverlap=${rs.filter(r => r.depsOverlap).length}/${rs.length}`); +} diff --git a/packages/sdk/package-lock.json b/packages/sdk/package-lock.json index 68774a790..1daea3069 100644 --- a/packages/sdk/package-lock.json +++ b/packages/sdk/package-lock.json @@ -30,6 +30,7 @@ "devDependencies": { "@agent-relay/cli-surface": "^12.2.4", "@types/node": "^22.7.0", + "bluebird": "^3.7.2", "esbuild": "^0.21.5", "vitest": "^2.1.0" }, @@ -1420,6 +1421,13 @@ "node": "18 || 20 || >=22" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, "node_modules/body-parser": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 049a1a5fc..d0d1ec7c6 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -65,6 +65,7 @@ "devDependencies": { "@agent-relay/cli-surface": "^12.2.4", "@types/node": "^22.7.0", + "bluebird": "^3.7.2", "esbuild": "^0.21.5", "vitest": "^2.1.0" }, diff --git a/packages/sdk/scripts/test.sh b/packages/sdk/scripts/test.sh index 4f35e24ce..f6e5f243b 100644 --- a/packages/sdk/scripts/test.sh +++ b/packages/sdk/scripts/test.sh @@ -10,5 +10,8 @@ npm run typecheck:tests # The packaging gate calls npm pack on this SDK. With npm 10, pack still runs # prepare even with --ignore-scripts, rebuilding dist while other test files # execute the built CLI. Keep the full gate, but run it after those readers. -vitest run --exclude tests/cli-package-gate.test.ts +# Watch checks spawn a fresh CLI for each report. Give their existing five-second +# case deadlines an uncontended runner instead of competing with live tests. +vitest run tests/cli-watch.test.ts +vitest run --exclude tests/cli-package-gate.test.ts --exclude tests/cli-watch.test.ts vitest run tests/cli-package-gate.test.ts diff --git a/packages/sdk/src/authored-budget.ts b/packages/sdk/src/authored-budget.ts index 55a7c1bf4..bc1bbeab6 100644 --- a/packages/sdk/src/authored-budget.ts +++ b/packages/sdk/src/authored-budget.ts @@ -108,8 +108,9 @@ export class AuthoredBudget { } async execute(journal: JournalClient, spec: KernelRunSpec, - consume: (outcome: RunOutcome) => Promise, admissionKey?: string): Promise { - if (this.limit === undefined) return consume(await journal.runStart(spec, undefined, admissionKey)); + consume: (outcome: RunOutcome) => Promise, admissionKey?: string, + isolatedStart = false): Promise { + if (this.limit === undefined) return consume(await journal.runStart(spec, undefined, admissionKey, false, isolatedStart)); const previous = this.tail; let release!: () => void; this.tail = new Promise(resolve => { release = resolve; }); @@ -134,7 +135,7 @@ export class AuthoredBudget { ...(this.limit.window === 'day' && day !== undefined ? { day } : {}), ...(total.unmetered ? { dollars_unmetered: true as const } : {}), }; - const outcome = await journal.runStart({ ...spec, budget: { ...this.limit, prior_spend: priorSpend } }, undefined, admissionKey); + const outcome = await journal.runStart({ ...spec, budget: { ...this.limit, prior_spend: priorSpend } }, undefined, admissionKey, false, isolatedStart); try { if (outcome.completion_reason === 'budget_exceeded') { throw new AuthoredFlowExecutionError('step_failed', budgetExceededMessage(this.limit!, total, spec), 'budget_exceeded', outcome.run_id); diff --git a/packages/sdk/src/authored-flow-error.ts b/packages/sdk/src/authored-flow-error.ts index 27e151b15..5eb7d6941 100644 --- a/packages/sdk/src/authored-flow-error.ts +++ b/packages/sdk/src/authored-flow-error.ts @@ -58,6 +58,8 @@ export type AuthoredFlowExecutionErrorCode = | 'unsupported_header' | 'unsettled_derived_work' | 'unsupported_promise_lifecycle' + /** A pinned parallel root cannot dispatch safely in this process environment. */ + | 'unsafe_parallel_runtime' | 'unsupported_workspace_permission' | 'unbounded_subscription' | 'activity_closed' diff --git a/packages/sdk/src/authored-flow-executor.ts b/packages/sdk/src/authored-flow-executor.ts index 20ddb5d03..84b575959 100644 --- a/packages/sdk/src/authored-flow-executor.ts +++ b/packages/sdk/src/authored-flow-executor.ts @@ -1,7 +1,7 @@ import { assertAuthoredPromiseHooks } from './authored-runtime-capability.js'; import { pluginHelpers } from './plugin-loader.js'; import { runPluginEffect } from './authored-plugin-effect.js'; -import { randomUUID } from 'node:crypto'; +import { createHash, randomUUID } from 'node:crypto'; import { dirname } from 'node:path'; import { runHelperEffect } from './authored-helper-effect.js'; import { checkSlackHelpers } from './slack-preflight.js'; @@ -55,7 +55,7 @@ import { stopAuthoredOperations, verifyAuthoredOperations, } from './authored-flow-operation.js'; -import { AuthoredFlowLifecycle } from './authored-flow-lifecycle.js'; +import { AuthoredFlowLifecycle, parallelPromiseIntrinsicsIntact } from './authored-flow-lifecycle.js'; import { AuthoredActivities } from './authored-activity.js'; import { displayLabel, type AuthoredStepEdges } from './authored-step-index.js'; import { JournalClient } from './journal-client.js'; @@ -196,6 +196,8 @@ export interface ExecuteAuthoredFlowOptions { readonly workerCapacity?: number; /** Durable kernel root that owns this body's child admission identities. */ readonly rootRunId?: string; + /** Pinned by the durable root. Legacy roots retain 2.0.50 step identities. */ + readonly executionMode?: 'serial' | 'parallel'; /** Installed flow-extension plugins, in lock order, so `f.hook` can AND-compose them. */ readonly extensions?: readonly LoadedFlowExtension[]; /** @@ -287,7 +289,21 @@ export async function executeAuthoredFlow( const journalSteps: AuthoredFlowJournalStep[] = []; const authoredSteps: AuthoredFlowOperation[] = []; const memoryWrites = new MemoryWriteTracker(); - const lifecycle = new AuthoredFlowLifecycle(); + let parallelViolation: AuthoredFlowExecutionError | undefined; + let closeParallelSlots: ((reason: unknown) => void) | undefined; + let signalParallelFailure: ((reason: unknown) => void) | undefined; + const parallelFailure = options.executionMode === 'parallel' + ? new Promise((_resolve, reject) => { signalParallelFailure = reject; }) : undefined; + // A violation can occur synchronously before the body's promise is returned. + // Keep its rejection handled until the body is raced against it below. + void parallelFailure?.catch(() => {}); + const markParallelViolation = (message: string): void => { + parallelViolation ??= new AuthoredFlowExecutionError('step_failed', message); + closeParallelSlots?.(parallelViolation); + signalParallelFailure?.(parallelViolation); + }; + const lifecycle = new AuthoredFlowLifecycle(options.executionMode === 'parallel' + ? markParallelViolation : undefined); const activities = new AuthoredActivities(journal, options.rootRunId); const edgeOverrides = new Map(); const stepEdges = (step: string): AuthoredStepEdges | undefined => { @@ -301,8 +317,42 @@ export async function executeAuthoredFlow( let nextStep = 1; let requestedCompletion: LoweredCompletionReason | undefined; let requestedDetail: string | undefined; + let firstBodyTurn = true; const qualify = (id: string): string => `${options.stepPrefix ?? ''}${id}`; - const nextId = (kind: string): string => qualify(`${kind}-${nextStep++}`); + const branchOrdinals = new Map(); + const rejectParallel = (message: string): never => { + markParallelViolation(message); + throw parallelViolation; + }; + const assertParallelRunOnly = (kind: string): void => { + if (options.executionMode === 'parallel') rejectParallel(`parallel f.run body attempted ${kind} before admission`); + }; + const nextId = (kind: string): string => { + if (parallelViolation !== undefined) throw parallelViolation; + const sequence = nextStep++; + if (options.executionMode !== 'parallel') return qualify(`${kind}-${sequence}`); + if (kind !== 'run') rejectParallel(`parallel f.run body attempted ${kind} before admission`); + if (!lifecycle.combinatorsObserved()) rejectParallel( + 'cannot assign a replay-stable f.run identity: a Promise intrinsic was replaced'); + const predecessors = lifecycle.invocationPredecessors(); + if (predecessors.unregisteredAggregate) rejectParallel( + 'cannot assign a replay-stable f.run identity: its causal frontier passes through an unregistered aggregate'); + if (predecessors.truncated) rejectParallel( + 'cannot assign a replay-stable f.run identity: its causal predecessor graph is truncated'); + const signature = JSON.stringify([...predecessors.steps].sort()); + if (predecessors.steps.length === 0) { + if (!firstBodyTurn) rejectParallel('parallel f.run had no causal predecessor after the first body turn'); + return qualify(`run-${sequence}`); + } + // Each new root pins parallel mode before executing the body. Its + // continuations derive their identity only from the causal frontier and + // declaration order within that frontier; child lifecycle and completion + // order never participate. Legacy roots take the branch above and retain + // their original kind-N identities. + const ordinal = (branchOrdinals.get(signature) ?? 0) + 1; + branchOrdinals.set(signature, ordinal); + return qualify(`run-after-${createHash('sha256').update(signature).digest('hex')}-${ordinal}`); + }; const assertHelperAllowed = (provider: string): void => { if (options.allowedHelperProviders !== undefined && !options.allowedHelperProviders.has(provider)) { throw new AuthoredFlowExecutionError( @@ -319,7 +369,9 @@ export async function executeAuthoredFlow( ...(options.signal === undefined ? {} : { signal: options.signal }), stepEdges, }, + options.executionMode === 'parallel', ); + closeParallelSlots = lowerDeterministic.stop; const worker = authoredWorkerRunner( definition, journal, flowPath, journalSteps, waitOptions, @@ -505,6 +557,7 @@ export async function executeAuthoredFlow( const slackRun = options.rootRunId ?? randomUUID(); function slackOperation(call: SlackCall): Step { + assertParallelRunOnly(`slack.${call.verb}`); assertOperationAllowed(`slack.${call.verb}`, definition.name, requestedCompletion); assertHelperAllowed(call.provider); const snapshot = snapshotJsonValue(call, 'f.slack call') as unknown as SlackCall; @@ -535,6 +588,7 @@ export async function executeAuthoredFlow( const context: Ctx = { ...createHelpers((call: HelperCall): Step => { const verb = `${call.provider}.${call.verb}`; + assertParallelRunOnly(verb); assertOperationAllowed(verb, definition.name, requestedCompletion); assertHelperAllowed(call.provider); const snapshot = snapshotJsonValue(call, `f.${verb} call`) as unknown as HelperCall; @@ -564,7 +618,7 @@ export async function executeAuthoredFlow( }), memory: authoredMemory( scriptMemoryScope(flowPath, definition.name), - () => assertOperationAllowed('memory', definition.name, requestedCompletion), + () => { assertParallelRunOnly('memory'); assertOperationAllowed('memory', definition.name, requestedCompletion); }, definition.header.memory?.script !== false, memoryWrites, options.rootRunId === undefined ? undefined : journalLearnLedger(journal, options.rootRunId), @@ -588,6 +642,7 @@ export async function executeAuthoredFlow( return trackStep(authoredSteps, agentOp); }, on(source, activityOptions) { + assertParallelRunOnly('on'); assertOperationAllowed('on', definition.name, requestedCompletion); // Activity ids are root-scoped (`activity-N`); a child's own counter would collide. if ((options.dispatchDepth ?? 0) > 0) { @@ -695,6 +750,7 @@ export async function executeAuthoredFlow( ...(options.agentEnvironment === undefined ? {} : { agentEnvironment: options.agentEnvironment }), ...(options.workerCapacity === undefined ? {} : { workerCapacity: options.workerCapacity }), ...(options.rootRunId === undefined ? {} : { rootRunId: options.rootRunId }), + ...(options.executionMode === undefined ? {} : { executionMode: options.executionMode }), flowGraph: options.flowGraph, stepPrefix: `${id}--`, dispatchDepth: depth + 1, @@ -797,7 +853,7 @@ export async function executeAuthoredFlow( requestedDetail = detail; }, cloud: unsupportedCloud( - () => assertOperationAllowed('cloud', definition.name, requestedCompletion), + () => { assertParallelRunOnly('cloud'); assertOperationAllowed('cloud', definition.name, requestedCompletion); }, ), }; @@ -816,19 +872,34 @@ export async function executeAuthoredFlow( let bodyFailed = false; let bodyFailure: unknown; try { - const bodyPromise = lifecycle.runBody(() => definition.body(context, input as Input)); - await bodyPromise; + let body = definition.body; + if (options.executionMode === 'parallel') { + const { instrumentParallelBody } = await import('./authored-parallel-body.js'); + if (!parallelPromiseIntrinsicsIntact()) rejectParallel( + 'parallel f.run body lost its Promise or Array intrinsic before execution'); + body = instrumentParallelBody(body, promise => lifecycle.certifyBranchPromise(promise)); + queueMicrotask(() => { firstBodyTurn = false; }); + } + const bodyPromise = lifecycle.runBody(() => body(context, input as Input)); + if (parallelFailure === undefined) await bodyPromise; + else await Promise.race([bodyPromise, parallelFailure]); } catch (error) { bodyFailed = true; bodyFailure = error; } + // A source certificate is a performance admission decision, never a way + // for authored try/catch to turn a refused effect into successful output. + if (parallelViolation !== undefined) { bodyFailed = true; bodyFailure = parallelViolation; } if (bodyFailed) { + // Refuse queued work immediately. A slow memory commit must not leave an + // admission slot open after the body has already failed. + lowerDeterministic.stop(bodyFailure); + worker.stop(bodyFailure); // An in-flight learn must land or fail before this attempt gives the root // back: a re-driven attempt reads the memory-learn stream, and must not // race a commit this one is still making. await memoryWrites.settle(); try { - worker.stop(bodyFailure); await stopAuthoredOperations(authoredSteps, bodyFailure); // A durable wait hands execution back to the control plane. Its // subscriptions must keep receiving events while no body is running. @@ -859,10 +930,12 @@ export async function executeAuthoredFlow( 'missing_completion', `flow "${definition.name}" returned without done()`, ); - // Same as a failed body: no learn may outlive the attempt that started it. + // Close queued admissions before waiting for a learn; the attempt still + // waits for every write before handing the root back. + lowerDeterministic.stop(missingCompletion); + worker.stop(missingCompletion); await memoryWrites.settle(); try { - worker.stop(missingCompletion); await stopAuthoredOperations(authoredSteps, missingCompletion); await activities.closeAll('canceled'); } finally { @@ -881,6 +954,7 @@ export async function executeAuthoredFlow( } await verifyAuthoredOperations(definition.name, authoredSteps, lifecycle); } catch (error) { + lowerDeterministic.stop(error); try { await activities.closeAll('canceled'); } finally { diff --git a/packages/sdk/src/authored-flow-lifecycle.ts b/packages/sdk/src/authored-flow-lifecycle.ts index 955f07c72..98c320715 100644 --- a/packages/sdk/src/authored-flow-lifecycle.ts +++ b/packages/sdk/src/authored-flow-lifecycle.ts @@ -1,7 +1,7 @@ import { AsyncLocalStorage, executionAsyncId } from 'node:async_hooks'; import { AuthoredFlowExecutionError } from './authored-flow-error.js'; import { AuthoredPromiseGraph } from './authored-promise-graph.js'; -import { AuthoredStepGraph } from './authored-step-graph.js'; +import { AuthoredStepGraph, promiseOutcome } from './authored-step-graph.js'; import type { AuthoredStepEdges } from './authored-step-index.js'; type OperationToken = object; @@ -10,12 +10,38 @@ interface PromiseAllGroup { aggregate: number; members: ReadonlySet; } +interface AllSettlementGuard { + readonly aggregate: Promise; + readonly aggregateId: number; + readonly combinator: 'all' | 'allSettled'; + readonly members: readonly number[]; +} export interface AuthoredOperationInvocation { readonly asyncId: number; bound: boolean; } +const nativePromiseConstructor = Promise; +const nativePromisePrototype = Promise.prototype; const nativePromiseThen = Promise.prototype.then; +const nativePromiseCatch = Promise.prototype.catch; +const nativePromiseFinally = Promise.prototype.finally; +const nativePromiseResolve = Promise.resolve; +const nativePromiseReject = Promise.reject; +const nativePromisePrototypeConstructorDescriptor = Object.getOwnPropertyDescriptor(Promise.prototype, 'constructor'); +const nativePromisePrototypeConstructor = Promise.prototype.constructor; +const nativePromiseSpeciesDescriptor = Object.getOwnPropertyDescriptor(Promise, Symbol.species); +const nativePromiseSpeciesGetter = nativePromiseSpeciesDescriptor?.get; +const nativeFunctionToString = Function.prototype.toString; +/** Use the startup snapshot even when a source parser is loaded on demand. */ +export function authoredFunctionSource(value: Function): string { + return nativeFunctionToString.call(value); +} +const nativeArrayIteratorDescriptor = Object.getOwnPropertyDescriptor(Array.prototype, Symbol.iterator); +const nativeArrayIterator = Array.prototype[Symbol.iterator]; +const nativeArrayIteratorPrototype = Object.getPrototypeOf(nativeArrayIterator.call([])) as Iterator; +const nativeArrayIteratorNextDescriptor = Object.getOwnPropertyDescriptor(nativeArrayIteratorPrototype, 'next'); +const nativeArrayIteratorNext = nativeArrayIteratorPrototype.next; const activeLifecycle = new AsyncLocalStorage(); const stepOwners = new WeakMap [name, Promise[name] as unknown as Combinator])), ) as Readonly>; +const originallyNative = (value: unknown): boolean => typeof value === 'function' + && /\{\s*\[native code\]\s*\}/u.test(nativeFunctionToString.call(value)); +const nativeAtModuleLoad = [ + nativePromiseConstructor, nativePromiseThen, nativePromiseCatch, nativePromiseFinally, + nativePromiseResolve, nativePromiseReject, nativePromisePrototypeConstructor, + nativePromiseSpeciesGetter, nativeFunctionToString, nativeArrayIterator, + nativeArrayIteratorNext, ...Object.values(nativeCombinators), +].every(originallyNative); + +function sameDescriptor(actual: PropertyDescriptor | undefined, original: PropertyDescriptor | undefined): boolean { + return actual !== undefined && original !== undefined + && actual.configurable === original.configurable && actual.enumerable === original.enumerable + && actual.writable === original.writable && actual.value === original.value + && actual.get === original.get && actual.set === original.set; +} + +/** Preloaded code can replace an intrinsic before this module takes its snapshot. */ +function authoredProcessHasPreload(): boolean { + const preload = (arg: string): boolean => arg === '-r' || arg.startsWith('-r') + || ['--import', '--require', '--loader', '--experimental-loader'] + .some(flag => arg === flag || arg.startsWith(`${flag}=`)); + return process.execArgv.some(preload) + || nodeOptionTokens(process.env['NODE_OPTIONS'] ?? '').some(preload); +} + +/** NODE_OPTIONS is a command-line string, while execArgv is already tokenized. */ +function nodeOptionTokens(options: string): string[] { + const tokens: string[] = []; + let token = ''; + let quote: '"' | "'" | undefined; + let escaped = false; + for (const char of options) { + if (escaped) { token += char; escaped = false; continue; } + if (char === '\\' && quote !== "'") { escaped = true; continue; } + if (char === quote) { quote = undefined; continue; } + if ((char === '"' || char === "'") && quote === undefined) { quote = char; continue; } + if (/\s/u.test(char) && quote === undefined) { + if (token.length > 0) tokens.push(token); + token = ''; + } else token += char; + } + if (token.length > 0) tokens.push(token); + return tokens; +} + const observedCombinators: Record = Object.fromEntries( COMBINATORS.map((name) => { const native = nativeCombinators[name]; @@ -65,11 +137,16 @@ const observedCombinators: Record = Object.fromEntri this: PromiseConstructor, values: Iterable, ): Promise { + const lifecycle = activeLifecycle.getStore(); + const declared = lifecycle?.captureParallelArrayMembers(values); const members = collectMembers(values); - if (members === undefined) return native.call(this, values); - const aggregate = native.call(this, members); - activeLifecycle.getStore()?.registerCombinator(members, aggregate, name); - return aggregate; + if (members === undefined) { + if (declared !== undefined) lifecycle?.refuseUnsafeCombinator( + `parallel Promise.${name} could not inspect its array members`); + return native.call(this, values); + } + if (lifecycle === undefined) return native.call(this, members); + return lifecycle.observeCombinator(native, this, members, name, declared); }; Object.defineProperty(observed, 'name', { value: name, configurable: true }); Object.defineProperty(observed, 'length', { value: 1, configurable: true }); @@ -79,6 +156,30 @@ const observedCombinators: Record = Object.fromEntri let combinatorObservers = 0; +/** An imported module must not substitute any primitive used to construct joins. */ +export function parallelPromiseIntrinsicsIntact(): boolean { + if (!nativeAtModuleLoad || authoredProcessHasPreload() + || Function.prototype.toString !== nativeFunctionToString + || !sameDescriptor(Object.getOwnPropertyDescriptor(Array.prototype, Symbol.iterator), + nativeArrayIteratorDescriptor) + || Array.prototype[Symbol.iterator] !== nativeArrayIterator + || !sameDescriptor(Object.getOwnPropertyDescriptor(nativeArrayIteratorPrototype, 'next'), + nativeArrayIteratorNextDescriptor) + || nativeArrayIteratorPrototype.next !== nativeArrayIteratorNext + || Promise !== nativePromiseConstructor || Promise.prototype !== nativePromisePrototype + || !sameDescriptor(Object.getOwnPropertyDescriptor(Promise.prototype, 'constructor'), + nativePromisePrototypeConstructorDescriptor) + || Promise.prototype.constructor !== nativePromisePrototypeConstructor + || !sameDescriptor(Object.getOwnPropertyDescriptor(Promise, Symbol.species), nativePromiseSpeciesDescriptor) + || Object.getOwnPropertyDescriptor(Promise, Symbol.species)?.get !== nativePromiseSpeciesGetter + || Promise.prototype.then !== nativePromiseThen + || Promise.prototype.catch !== nativePromiseCatch + || Promise.prototype.finally !== nativePromiseFinally + || Promise.resolve !== nativePromiseResolve || Promise.reject !== nativePromiseReject) return false; + return COMBINATORS.every(name => Promise[name] === (combinatorObservers > 0 + ? observedCombinators[name] : nativeCombinators[name]) as unknown); +} + /** * Drain an iterable into an array, reading `Symbol.iterator` exactly once. * @@ -125,6 +226,8 @@ export class AuthoredFlowLifecycle { private readonly invocations = new Map(); private readonly promiseAllAggregates = new Map>(); private readonly promiseAllGroups: PromiseAllGroup[] = []; + private readonly allSettlementGuards: AllSettlementGuard[] = []; + private invalidAllSettlement = false; private readonly callbackFailures = new Map(); private completionAsyncId: number | undefined; private closed = false; @@ -132,14 +235,19 @@ export class AuthoredFlowLifecycle { private registrations = 0; private groupsByInvocation: { readonly key: string; readonly groups: Map> } | undefined; - constructor() { + constructor(private readonly refuseUnknownThenable?: (message: string) => void) { this.graph = new AuthoredPromiseGraph( () => activeLifecycle.getStore() === this, (asyncId) => { for (const probe of this.activeResolverProbes) probe.add(asyncId); }, ); - this.stepGraph = new AuthoredStepGraph((asyncId) => this.graph.causesOf(asyncId)); + this.stepGraph = new AuthoredStepGraph( + (asyncId) => this.graph.causesOf(asyncId), + undefined, + (asyncId) => this.graph.wasAdoptedFromResolvingContext(asyncId) + || this.graph.hasUnobservedJoinShape(asyncId), + ); installPromiseAllObserver(); try { this.graph.enable(); @@ -153,6 +261,19 @@ export class AuthoredFlowLifecycle { return activeLifecycle.run(this, body); } + /** Compare the literal array's indexed members with its iterable view. */ + captureParallelArrayMembers(values: Iterable): readonly unknown[] | undefined { + if (this.refuseUnknownThenable === undefined || !Array.isArray(values)) return undefined; + const members = new Array(values.length); + for (let i = 0; i < values.length; i++) members[i] = values[i]; + return members; + } + + refuseUnsafeCombinator(message: string): never { + this.refuseUnknownThenable?.(message); + throw new AuthoredFlowExecutionError('step_failed', message); + } + registerStep(step: object, operation: OperationToken): void { stepOwners.set(step, { lifecycle: this, operation }); } @@ -161,6 +282,7 @@ export class AuthoredFlowLifecycle { values: readonly unknown[], aggregate: Promise, combinator: CombinatorName, + created: ReadonlySet, ): void { const aggregateId = this.graph.idOf(aggregate); if (aggregateId === undefined) return; @@ -177,6 +299,7 @@ export class AuthoredFlowLifecycle { const awaited = owner?.lifecycle === this ? this.operationPromises.get(owner.operation) : memberId; if (awaited !== undefined) awaitedMembers.push(awaited); if (owner?.lifecycle !== this) continue; + if (awaited !== undefined) this.stepGraph.certifyMember(awaited); let operationAggregates = this.promiseAllAggregates.get(owner.operation); if (operationAggregates === undefined) { operationAggregates = new Set(); @@ -185,8 +308,53 @@ export class AuthoredFlowLifecycle { operationAggregates.add(aggregateId); } this.promiseAllGroups.push({ aggregate: aggregateId, members: memberIds }); + if (this.refuseUnknownThenable !== undefined + && (combinator === 'all' || combinator === 'allSettled')) { + this.allSettlementGuards.push({ aggregate, aggregateId, combinator, members: awaitedMembers }); + } this.registrations++; - this.stepGraph.registerAggregate(aggregateId, aggregate, combinator, awaitedMembers); + this.stepGraph.registerAggregate(aggregateId, aggregate, combinator, awaitedMembers, created); + } + + observeCombinator( + native: Combinator, + constructor: PromiseConstructor, + values: readonly unknown[], + name: CombinatorName, + declared?: readonly unknown[], + ): Promise { + if (declared !== undefined) { + if (declared.length !== values.length) this.refuseUnsafeCombinator( + `parallel Promise.${name} iterated a different set of array members`); + for (let i = 0; i < declared.length; i++) { + if (declared[i] !== values[i]) this.refuseUnsafeCombinator( + `parallel Promise.${name} iterated a different set of array members`); + } + } + // Check before the native combinator reads any unknown `then` getter. A + // member with no tracked promise id or owned step has no causal identity + // to expand on a later follow-up. This also covers proxy thenables whose + // `then` is synthesized by a get trap and has no property descriptor. + if (this.refuseUnknownThenable !== undefined) { + for (const value of values) { + if ((typeof value !== 'object' && typeof value !== 'function') || value === null) continue; + if (stepOwners.get(value)?.lifecycle === this || this.graph.idOf(value) !== undefined) continue; + const message = `parallel Promise.${name} contains a member with no tracked provenance`; + this.refuseUnsafeCombinator(message); + } + } + const { value, created } = this.graph.captureCombinator(() => native.call(constructor, values)); + this.registerCombinator(values, value, name, created); + return value; + } + + /** Mark the exact promise returned by a grammar-certified async branch call. */ + certifyBranchPromise(promise: Promise): void { + const id = this.graph.idOf(promise); + if (id === undefined) { + throw new AuthoredFlowExecutionError('step_failed', 'certified branch promise was not tracked'); + } + this.stepGraph.certifyMember(id); } /** @@ -215,6 +383,43 @@ export class AuthoredFlowLifecycle { return this.stepGraph.edgesOf(step); } + /** Predecessors for a new invocation, before it has an operation promise. */ + invocationPredecessors(): { + readonly steps: readonly string[]; + readonly truncated: boolean; + readonly unregisteredAggregate: boolean; + } { + const frontier = this.stepGraph.predecessorsAt(executionAsyncId()); + return this.hasInvalidAllSettlement() + ? { ...frontier, unregisteredAggregate: true } + : frontier; + } + + /** A fulfilled all (or settled allSettled) must have waited for every member. */ + private hasInvalidAllSettlement(): boolean { + if (this.invalidAllSettlement) return true; + let retained = 0; + for (const guard of this.allSettlementGuards) { + if (this.graph.isPending(guard.aggregateId)) { + this.allSettlementGuards[retained++] = guard; + continue; + } + if ((guard.combinator === 'allSettled' || promiseOutcome(guard.aggregate) === 'fulfilled') + && guard.members.some(id => this.graph.isPending(id))) { + this.invalidAllSettlement = true; + return true; + } + // Once an honest aggregate has settled, its invariant cannot change. + } + this.allSettlementGuards.length = retained; + return false; + } + + /** The observation contract must still be installed when a child is admitted. */ + combinatorsObserved(): boolean { + return combinatorObservers > 0 && parallelPromiseIntrinsicsIntact(); + } + registerInvocation( operation: OperationToken, asyncId: number, @@ -350,6 +555,7 @@ export class AuthoredFlowLifecycle { this.invocations.clear(); this.promiseAllAggregates.clear(); this.promiseAllGroups.length = 0; + this.allSettlementGuards.length = 0; this.groupsByInvocation = undefined; this.callbackFailures.clear(); this.activeResolverProbes.length = 0; diff --git a/packages/sdk/src/authored-node-entry.ts b/packages/sdk/src/authored-node-entry.ts index 1ecd4a265..b4bd59ca5 100644 --- a/packages/sdk/src/authored-node-entry.ts +++ b/packages/sdk/src/authored-node-entry.ts @@ -81,6 +81,8 @@ try { request.metadata.inputPresent ? request.metadata.input : undefined, { getDefinition: loaded.getDefinition, dataDir: request.dataDir, flowPath: request.metadata.flowPath, rootRunId: request.rootRunId, + executionMode: request.metadata.identityVersion === 2 && request.metadata.executionMode === 'parallel' + ? 'parallel' : 'serial', extensions: loaded.extensions, flowGraph: loaded.graph, localAgentStream: request.localAgentStream, signal: controller.signal, diff --git a/packages/sdk/src/authored-parallel-body.ts b/packages/sdk/src/authored-parallel-body.ts new file mode 100644 index 000000000..34cdc5b69 --- /dev/null +++ b/packages/sdk/src/authored-parallel-body.ts @@ -0,0 +1,67 @@ +import ts from 'typescript'; +import { AuthoredFlowExecutionError } from './authored-flow-error.js'; +import { authoredFunctionSource } from './authored-flow-lifecycle.js'; +import { parallelBodySyntaxEligible, unwrapParallelExpression } from './authored-parallel-eligibility.js'; + +/** + * Execute a certified body with its branch-call promises marked at the call + * site. A combinator member is not evidence that it is a safe branch: it may + * be a hand-built join that resolves from whichever child finishes first. + * + * The closed grammar has no module captures, so re-evaluating this function + * preserves its meaning. Unknown source is refused before the first effect. + */ +export function instrumentParallelBody( + body: T, + certifyBranch: (promise: Promise) => void, +): T { + const source = authoredFunctionSource(body); + if (!parallelBodySyntaxEligible(body)) { + throw new AuthoredFlowExecutionError('step_failed', 'parallel f.run body lost its source certificate'); + } + const prefix = 'const body = '; + const file = ts.createSourceFile('parallel-body.js', `${prefix}${source};`, + ts.ScriptTarget.ES2022, true, ts.ScriptKind.JS); + const declaration = file.statements[0]; + if (!declaration || !ts.isVariableStatement(declaration)) throw new Error('certified body parse failed'); + const arrow = declaration.declarationList.declarations[0]?.initializer; + if (!arrow || !ts.isArrowFunction(arrow) || !ts.isBlock(arrow.body)) throw new Error('certified body changed'); + const branches = new Set(); + for (const statement of arrow.body.statements) { + if (!ts.isVariableStatement(statement)) continue; + for (const item of statement.declarationList.declarations) { + if (ts.isIdentifier(item.name) && item.initializer && ts.isArrowFunction(item.initializer)) { + branches.add(item.name.text); + } + } + } + const calls: Array<{ start: number; end: number }> = []; + const visit = (node: ts.Node): void => { + if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression) + && ts.isIdentifier(node.expression.expression) && node.expression.expression.text === 'Promise' + && node.expression.name.text === 'all' && node.arguments.length === 1) { + const members = node.arguments[0]; + if (members && ts.isArrayLiteralExpression(members)) { + for (const outer of members.elements) { + if (!ts.isExpression(outer)) continue; + const member = unwrapParallelExpression(outer); + if (!ts.isCallExpression(member) || member.arguments.length !== 0) continue; + const named = ts.isIdentifier(member.expression) && branches.has(member.expression.text); + const inline = ts.isParenthesizedExpression(member.expression) + && ts.isArrowFunction(member.expression.expression); + if (named || inline) calls.push({ start: outer.getStart(file) - prefix.length, + end: outer.getEnd() - prefix.length }); + } + } + } + ts.forEachChild(node, visit); + }; + visit(arrow); + let instrumented = source; + for (const { start, end } of calls.sort((left, right) => right.start - left.start)) { + instrumented = `${instrumented.slice(0, start)}__certifyParallelBranch(${instrumented.slice(start, end)})${instrumented.slice(end)}`; + } + const factory = new Function('__certifyParallelBranch', `return (${instrumented});`) as + (record: (promise: Promise) => Promise) => T; + return factory((promise) => { certifyBranch(promise); return promise; }); +} diff --git a/packages/sdk/src/authored-parallel-eligibility.ts b/packages/sdk/src/authored-parallel-eligibility.ts new file mode 100644 index 000000000..43f0f1e1d --- /dev/null +++ b/packages/sdk/src/authored-parallel-eligibility.ts @@ -0,0 +1,245 @@ +import ts from 'typescript'; +import { authoredFunctionSource } from './authored-flow-lifecycle.js'; + +const reservedCertifier = '__certifyParallelBranch'; + +/** Keep admission and call-site instrumentation in agreement on parentheses. */ +export function unwrapParallelExpression(node: ts.Expression): ts.Expression { + return ts.isParenthesizedExpression(node) ? unwrapParallelExpression(node.expression) : node; +} + +/** A closed grammar for deterministic Promise.all branches. Unknown bodies stay serial. */ +export function parallelRunEligible(body: Function, moduleSource: string): boolean { + // Promise.all is intercepted only when `Promise` resolves to the intrinsic. + // Function.toString cannot see a module-level lexical binding, so inspect + // the complete source before using the body's narrower grammar. + const bodySource = authoredFunctionSource(body); + return moduleUsesIntrinsicPromise(moduleSource, bodySource) && parallelBodySyntaxEligible(body); +} + +/** Independently re-check the closed body grammar at execution time. */ +export function parallelBodySyntaxEligible(body: Function): boolean { + const bodySource = authoredFunctionSource(body); + const file = ts.createSourceFile('authored-body.js', `const body = ${bodySource};`, + ts.ScriptTarget.ES2022, true, ts.ScriptKind.JS); + if (file.statements.length !== 1) return false; + const declaration = file.statements[0]; + if (!declaration || !ts.isVariableStatement(declaration)) return false; + const expression = declaration.declarationList.declarations[0]?.initializer; + // Function expressions can obtain the context through `arguments[0]`. + if (expression === undefined || !ts.isArrowFunction(expression) || !ts.isBlock(expression.body) + || expression.modifiers?.some(modifier => modifier.kind === ts.SyntaxKind.AsyncKeyword) !== true) return false; + const parameter = expression.parameters[0]?.name; + if (parameter === undefined || !ts.isIdentifier(parameter) || expression.parameters.length !== 1) return false; + const context = parameter.text; + if (['Promise', 'globalThis', 'global'].includes(context)) return false; + // The instrumented body is re-evaluated with a private callback parameter. + // A lexical binding or reference with that spelling could capture it. + let namesCertifier = false; + const checkCertifierName = (node: ts.Node): void => { + if (ts.isIdentifier(node) && node.text === reservedCertifier) namesCertifier = true; + ts.forEachChild(node, checkCertifierName); + }; + checkCertifierName(expression); + if (namesCertifier) return false; + const branches = new Map(); + const rootValues = new Set(); + let groups = 0; + let runs = 0; + + const unwrap = unwrapParallelExpression; + const method = (node: ts.Expression, owner: string, name: string): node is ts.CallExpression => { + const value = unwrap(node); + return ts.isCallExpression(value) && ts.isPropertyAccessExpression(value.expression) + && ts.isIdentifier(value.expression.expression) && value.expression.expression.text === owner + && value.expression.name.text === name; + }; + const pure = (node: ts.Expression, values: ReadonlySet): boolean => { + const value = unwrap(node); + if (ts.isStringLiteral(value) || ts.isNumericLiteral(value) || ts.isNoSubstitutionTemplateLiteral(value) + || value.kind === ts.SyntaxKind.TrueKeyword || value.kind === ts.SyntaxKind.FalseKeyword + || value.kind === ts.SyntaxKind.NullKeyword) return true; + if (ts.isIdentifier(value)) return values.has(value.text); + if (ts.isTemplateExpression(value)) return value.templateSpans.every(span => pure(span.expression, values)); + if (ts.isPrefixUnaryExpression(value)) return [ts.SyntaxKind.PlusToken, ts.SyntaxKind.MinusToken, + ts.SyntaxKind.ExclamationToken].includes(value.operator) && pure(value.operand, values); + if (ts.isBinaryExpression(value)) return [ts.SyntaxKind.PlusToken, ts.SyntaxKind.MinusToken, + ts.SyntaxKind.AsteriskToken, ts.SyntaxKind.SlashToken, ts.SyntaxKind.EqualsEqualsEqualsToken, + ts.SyntaxKind.ExclamationEqualsEqualsToken, ts.SyntaxKind.LessThanToken, + ts.SyntaxKind.GreaterThanToken].includes(value.operatorToken.kind) + && pure(value.left, values) && pure(value.right, values); + if (ts.isConditionalExpression(value)) return pure(value.condition, values) + && pure(value.whenTrue, values) && pure(value.whenFalse, values); + if (ts.isElementAccessExpression(value)) return value.argumentExpression !== undefined + && pure(value.expression, values) && pure(value.argumentExpression, values); + if (ts.isPropertyAccessExpression(value)) return pure(value.expression, values); + if (ts.isArrayLiteralExpression(value)) return value.elements.every(element => + ts.isExpression(element) && pure(element, values)); + if (ts.isObjectLiteralExpression(value)) return value.properties.every(property => + ts.isPropertyAssignment(property) && (ts.isIdentifier(property.name) || ts.isStringLiteral(property.name)) + && pure(property.initializer, values)); + return false; + }; + const run = (node: ts.Expression, values: ReadonlySet): boolean => { + const value = unwrap(node); + if (!method(value, context, 'run') || value.arguments.length < 1 || value.arguments.length > 2 + || !value.arguments.every(argument => pure(argument, values))) return false; + runs++; + return true; + }; + const group = (node: ts.Expression, values: ReadonlySet, depth: number): boolean => { + const value = unwrap(node); + if (!method(value, 'Promise', 'all') || value.arguments.length !== 1 || depth > 4) return false; + groups++; + const members = value.arguments[0]!; + if (ts.isArrayLiteralExpression(members)) { + if (members.elements.length < 2) return false; + return members.elements.every(member => { + if (!ts.isExpression(member)) return false; + if (run(member, values)) return true; + const call = unwrap(member); + if (depth === 0 && ts.isCallExpression(call) && ts.isIdentifier(call.expression) + && call.arguments.length === 0 && branches.has(call.expression.text)) { + return branch(branches.get(call.expression.text)!, depth + 1); + } + if (depth === 0 && ts.isCallExpression(call) && call.arguments.length === 0 + && ts.isParenthesizedExpression(call.expression) && ts.isArrowFunction(call.expression.expression)) { + return branch(call.expression.expression, depth + 1); + } + return false; + }); + } + return false; + }; + const awaitStep = (node: ts.Expression, values: ReadonlySet, depth: number): boolean => { + const value = unwrap(node); + if (!ts.isAwaitExpression(value)) return false; + return run(value.expression, values) || group(value.expression, values, depth); + }; + const statements = (block: ts.Block, values: Set, depth: number): boolean => { + for (const statement of block.statements) { + if (ts.isExpressionStatement(statement)) { + if (awaitStep(statement.expression, values, depth)) continue; + const value = unwrap(statement.expression); + if (depth === 0 && method(value, context, 'done') && value.arguments.length >= 1 + && value.arguments.every(argument => pure(argument, values)) + && statement === block.statements[block.statements.length - 1]) continue; + return false; + } + if (ts.isReturnStatement(statement) && depth > 0 && statement.expression !== undefined + && awaitStep(statement.expression, values, depth)) continue; + if (!ts.isVariableStatement(statement) || (statement.declarationList.flags & ts.NodeFlags.Const) === 0) return false; + for (const item of statement.declarationList.declarations) { + if (!ts.isIdentifier(item.name) || item.initializer === undefined) return false; + if (['Promise', 'globalThis', 'global'].includes(item.name.text)) return false; + if (depth === 0 && ts.isArrowFunction(item.initializer)) { + if (branches.has(item.name.text) || item.initializer.parameters.length !== 0 + || item.initializer.modifiers?.some(modifier => modifier.kind === ts.SyntaxKind.AsyncKeyword) !== true + ) return false; + branches.set(item.name.text, item.initializer); + continue; + } + if (!awaitStep(item.initializer, values, depth)) return false; + values.add(item.name.text); + } + } + return true; + }; + const branch = (arrow: ts.ArrowFunction, depth: number): boolean => { + if (arrow.parameters.length !== 0) return false; + const before = runs; + const valid = ts.isBlock(arrow.body) ? statements(arrow.body, new Set(rootValues), depth) + : awaitStep(arrow.body, rootValues, depth); + // An empty async branch creates a join with no causal step predecessor. + return valid && runs > before; + }; + + if (!statements(expression.body, rootValues, 0)) return false; + return groups > 0 && runs > 0; +} + +/** Reject any source that can change what a free `Promise` identifier means. */ +function moduleUsesIntrinsicPromise(source: string, bodySource: string): boolean { + const file = ts.createSourceFile('authored-module.ts', source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS); + if (((file as ts.SourceFile & { parseDiagnostics?: readonly ts.Diagnostic[] }).parseDiagnostics?.length ?? 0) > 0) { + return false; + } + // Top-level code can alter the constructor or its methods without binding + // the name. Leave these modules on the established serial scheduler too. + const touchesPromiseOutsideDefinition = (node: ts.Node): boolean => { + if (ts.isIdentifier(node) && ['Promise', 'globalThis', 'global'].includes(node.text)) return true; + return ts.forEachChild(node, touchesPromiseOutsideDefinition) === true; + }; + let definesDefaultBody = false; + let importsSurfaceFlow = false; + for (const statement of file.statements) { + if (ts.isImportDeclaration(statement)) { + // Imports can execute code before the body starts. Only the direct, + // immutable Surface binding can certify the exported body's identity. + if (statement.moduleSpecifier.getText(file) !== "'@relayflows/surface'" + && statement.moduleSpecifier.getText(file) !== '"@relayflows/surface"') return false; + const bindings = statement.importClause?.namedBindings; + if (statement.importClause?.name !== undefined || bindings === undefined + || !ts.isNamedImports(bindings) || bindings.elements.length !== 1 + || bindings.elements[0]?.name.text !== 'flow' + || bindings.elements[0]?.propertyName !== undefined || importsSurfaceFlow) return false; + importsSurfaceFlow = true; + continue; + } + if (ts.isExportAssignment(statement)) { + // Only the final body argument is allowed to mention Promise.all. Do + // not let an expression around flow() mutate Promise while we skip it. + const call = statement.expression; + if (statement.isExportEquals || !ts.isCallExpression(call) + || !ts.isIdentifier(call.expression) || call.expression.text !== 'flow') return false; + const args = call.arguments; + if (args.length !== 2 || !ts.isStringLiteral(args[0]!)) return false; + if (!ts.isArrowFunction(args[args.length - 1]!)) return false; + if (args[args.length - 1]!.getText(file) !== bodySource) return false; + if (args.slice(0, -1).some(touchesPromiseOutsideDefinition)) return false; + if (definesDefaultBody) return false; + definesDefaultBody = true; + continue; + } + // The certified body cannot use module captures. Other top-level code is + // unnecessary for it and may schedule a later mutation through an alias. + return false; + } + const forbidden = new Set(['Promise', 'globalThis']); + const bindsForbidden = (name: ts.BindingName): boolean => ts.isIdentifier(name) + ? forbidden.has(name.text) + : name.elements.some(element => ts.isBindingElement(element) && bindsForbidden(element.name)); + const isGlobalPromise = (node: ts.Node): boolean => { + if (ts.isIdentifier(node)) return forbidden.has(node.text); + if (ts.isPropertyAccessExpression(node)) return ts.isIdentifier(node.expression) + && node.expression.text === 'globalThis' && node.name.text === 'Promise'; + return ts.isElementAccessExpression(node) && ts.isIdentifier(node.expression) + && node.expression.text === 'globalThis' && ts.isStringLiteral(node.argumentExpression) + && node.argumentExpression.text === 'Promise'; + }; + let unsafe = false; + const visit = (node: ts.Node): void => { + if (unsafe) return; + if ((ts.isVariableDeclaration(node) || ts.isParameter(node) || ts.isBindingElement(node)) + && bindsForbidden(node.name)) unsafe = true; + if ((ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) + || ts.isClassDeclaration(node) || ts.isClassExpression(node) + || ts.isEnumDeclaration(node) || ts.isImportEqualsDeclaration(node) + || ts.isTypeAliasDeclaration(node) || ts.isInterfaceDeclaration(node)) + && node.name !== undefined && forbidden.has(node.name.text)) unsafe = true; + if (ts.isImportClause(node) && node.name !== undefined && forbidden.has(node.name.text)) unsafe = true; + if (ts.isNamespaceImport(node) && forbidden.has(node.name.text)) unsafe = true; + if (ts.isImportSpecifier(node) && forbidden.has(node.name.text)) unsafe = true; + if (ts.isBinaryExpression(node) + && node.operatorToken.kind >= ts.SyntaxKind.FirstAssignment + && node.operatorToken.kind <= ts.SyntaxKind.LastAssignment + && isGlobalPromise(node.left)) unsafe = true; + if ((ts.isPrefixUnaryExpression(node) || ts.isPostfixUnaryExpression(node)) + && isGlobalPromise(node.operand)) unsafe = true; + ts.forEachChild(node, visit); + }; + visit(file); + // The body may come from another module, where a free Promise name can be + // shadowed without appearing in this source. In that case use serial IDs. + return importsSurfaceFlow && definesDefaultBody && !unsafe; +} diff --git a/packages/sdk/src/authored-promise-graph.ts b/packages/sdk/src/authored-promise-graph.ts index 7168550ba..7ea84273e 100644 --- a/packages/sdk/src/authored-promise-graph.ts +++ b/packages/sdk/src/authored-promise-graph.ts @@ -30,12 +30,15 @@ export class AuthoredPromiseGraph { private readonly triggers = new Map(); private readonly creationContexts = new Map(); private readonly resolutionCauses = new Map(); + /** Promises attributed only when another promise's reaction resolved them. */ + private readonly adoptedFromResolvingContext = new Set(); private readonly promiseIds = new WeakMap(); private readonly handles = new Map>(); private readonly unattributedChildren = new Map(); private readonly attributedRoots = new Map(); private readonly roots = new Set(); private readonly pending = new Set(); + private readonly combinatorCaptures: Set[] = []; private dependencyCache: { readonly start: number; readonly found: ReadonlySet; readonly version: number } | undefined; /** Bumped by every graph change, so derived answers can be cached between changes. */ private changes = 0; @@ -52,6 +55,7 @@ export class AuthoredPromiseGraph { this.triggers.set(asyncId, triggerAsyncId); this.creationContexts.set(asyncId, executionAsyncId()); this.promiseIds.set(resource, asyncId); + for (const capture of this.combinatorCaptures) capture.add(asyncId); this.handles.set(asyncId, resource as Promise); this.pending.add(asyncId); const root = this.roots.has(triggerAsyncId) @@ -77,6 +81,7 @@ export class AuthoredPromiseGraph { // success. Measured; see ops/probes/pr134-repair-0903/combinators.mjs. const adopted = this.attributedRoots.get(cause); if (adopted !== undefined) { + this.adoptedFromResolvingContext.add(asyncId); this.attribute(asyncId, adopted); return; } @@ -100,6 +105,18 @@ export class AuthoredPromiseGraph { return this.promiseIds.get(value); } + isPending(asyncId: number): boolean { + return this.pending.has(asyncId); + } + + /** The intrinsic creates per-member reaction promises as well as its aggregate. */ + captureCombinator(call: () => T): { readonly value: T; readonly created: ReadonlySet } { + const created = new Set(); + this.combinatorCaptures.push(created); + try { return { value: call(), created }; } + finally { this.combinatorCaptures.pop(); } + } + /** Mark a promise whose descendants belong to an authored operation. */ registerRoot(asyncId: number): void { if (asyncId <= 0 || this.roots.has(asyncId)) return; @@ -145,6 +162,22 @@ export class AuthoredPromiseGraph { return causes; } + /** + * A promise created directly in one async context but settled in another + * can be a join. Its resolution edge names only the settling member, so a + * frontier may use it only when a combinator registered all members. + */ + hasUnobservedJoinShape(asyncId: number): boolean { + const trigger = this.triggers.get(asyncId); + const resolution = this.resolutionCauses.get(asyncId); + return trigger !== undefined && trigger === this.creationContexts.get(asyncId) + && resolution !== undefined && resolution !== trigger; + } + + wasAdoptedFromResolvingContext(asyncId: number): boolean { + return this.adoptedFromResolvingContext.has(asyncId); + } + dependsOn(descendant: number, ancestor: number): boolean { return this.dependenciesOf(descendant).has(ancestor); } @@ -167,11 +200,13 @@ export class AuthoredPromiseGraph { this.triggers.clear(); this.creationContexts.clear(); this.resolutionCauses.clear(); + this.adoptedFromResolvingContext.clear(); this.handles.clear(); this.unattributedChildren.clear(); this.attributedRoots.clear(); this.roots.clear(); this.pending.clear(); + this.combinatorCaptures.length = 0; this.dependencyCache = undefined; } diff --git a/packages/sdk/src/authored-root-readback.ts b/packages/sdk/src/authored-root-readback.ts index e80d25ee8..2bb5fd649 100644 --- a/packages/sdk/src/authored-root-readback.ts +++ b/packages/sdk/src/authored-root-readback.ts @@ -3,7 +3,6 @@ import type { AuthoredFlowExecutionResult } from './authored-flow-executor.js'; import { AuthoredFlowExecutionError } from './authored-flow-error.js'; import { isSurfaceCompletionReason } from './authored-step-output.js'; import { JournalFrameError, JournalProtocolError, type JournalClient } from './journal-client.js'; -import type { RunOutcome } from './protocol.js'; /* * Reading an authored root back from its journal, and what a failed read @@ -44,7 +43,7 @@ export async function rootStepIfPresent(journal: JournalClient, runId: string): * it back is interrupted, the outcome is still known: say so, rather than * recasting a finished run as resumable. */ -export function completedResult(journal: JournalClient, outcome: RunOutcome, rootRunId: string): Promise { +export function completedResult(journal: JournalClient, rootRunId: string): Promise { return completedRootResult(journal, rootRunId).catch(error => { // A bad frame or a journal with no stored result is a definite fact; any // other failure — interrupted, canceled, or a daemon-side read error such diff --git a/packages/sdk/src/authored-root.ts b/packages/sdk/src/authored-root.ts index 419874e27..3fe1fe5ff 100644 --- a/packages/sdk/src/authored-root.ts +++ b/packages/sdk/src/authored-root.ts @@ -6,7 +6,7 @@ import { readFile } from 'node:fs/promises'; import { canonicalize } from './canonical.js'; import { compileSpec, toKernelSpec } from './compile.js'; import { executeAuthoredFlow, type AuthoredFlowExecutionResult, type AuthoredFlowSuspendedResult } from './authored-flow-executor.js'; -import { AUTHORED_ROOT_KIND } from './authored-verdict.js'; +import { AUTHORED_PARALLEL_ROOT_KIND, AUTHORED_ROOT_KIND } from './authored-verdict.js'; import { loadAuthoredFlow, type LoadedAuthoredFlow, @@ -23,6 +23,7 @@ import { helperReceiptWaitId, releaseHelperReceiptWaits } from './helper-park.js import { readSubscriptionPark } from './authored-subscription-park.js'; import { localAgentCredentialEnvironment } from './local-agent-environment.js'; import { completedResult, rootKernelStep, rootStepIfPresent } from './authored-root-readback.js'; +import { parallelPromiseIntrinsicsIntact } from './authored-flow-lifecycle.js'; export type DurableAuthoredFlowResult = | (AuthoredFlowExecutionResult & { readonly rootRunId: string }) @@ -42,7 +43,7 @@ export interface AuthoredRootExtension { } export interface AuthoredRootMetadata { - readonly kind: typeof ROOT_KIND; + readonly kind: typeof ROOT_KIND | typeof AUTHORED_PARALLEL_ROOT_KIND; readonly flowName: string; readonly flowPath: string; readonly sourceSha256: string; @@ -50,6 +51,10 @@ export interface AuthoredRootMetadata { readonly sources: readonly AuthoredRootSourceAuthority[]; /** Plugin-level provenance in lock order; empty when the project declares none. */ readonly extensions: readonly AuthoredRootExtension[]; + /** Absent on roots admitted before causal identities existed. */ + readonly identityVersion?: 2; + /** Immutable admission choice; serial uses the 2.0.50 child identity contract. */ + readonly executionMode?: 'serial' | 'parallel'; readonly localAgentStream?: string; readonly inputPresent: boolean; readonly input?: unknown; @@ -89,8 +94,19 @@ export async function executeDurableAuthoredFlow( surface: node.surfaceAuthority, }))); const definition = loaded.getDefinition(loaded.handle); + let parallelEligible = false; + if (loaded.graph.length === 1 && (loaded.extensions?.length ?? 0) === 0 + && definition.header.budget === undefined && parallelPromiseIntrinsicsIntact()) { + // The parser is needed only for an authored run, never for an ordinary + // CLI check or watch reload. Recheck intrinsics after the async import; + // author code could have replaced them while it was loading. + const { parallelRunEligible } = await import('./authored-parallel-eligibility.js'); + parallelEligible = parallelPromiseIntrinsicsIntact() + && parallelRunEligible(definition.body, source.toString('utf8')); + } + const executionMode = parallelEligible ? 'parallel' : 'serial'; const metadata: AuthoredRootMetadata = Object.freeze({ - kind: ROOT_KIND, + kind: executionMode === 'parallel' ? AUTHORED_PARALLEL_ROOT_KIND : ROOT_KIND, flowName: definition.name, flowPath: loaded.sourcePath, sourceSha256: sha256(source), @@ -99,6 +115,8 @@ export async function executeDurableAuthoredFlow( extensions: Object.freeze((loaded.extensions ?? []).map(extension => Object.freeze({ name: extension.name, digest: extension.digest, ref: extension.ref, }))), + identityVersion: 2, + executionMode, ...(options.localAgentStream === undefined ? {} : { localAgentStream: options.localAgentStream }), inputPresent: input !== undefined, ...(input === undefined ? {} : { input: jsonSnapshot(input, 'authored root input') }), @@ -121,7 +139,7 @@ export async function executeDurableAuthoredFlow( options.lifecycle?.onRunReceipt?.({ runId: outcome.run_id, flow: definition.name }); if (outcome.status === 'completed') { dispatchWait.cancel(); - return await completedResult(journal, outcome, outcome.run_id); + return await completedResult(journal, outcome.run_id); } assertRootCanDispatch(outcome); await releaseHelperReceiptWaits(journal, outcome.run_id); @@ -152,11 +170,23 @@ export async function resumeDurableAuthoredFlow( ): Promise { const metadata = await readAuthoredRootMetadata(journal, rootRunId); if (metadata === undefined) return undefined; - assertAuthoredRuntimeAvailable(); - const loaded = await loadPinnedAuthoredSource(metadata); if (metadata.localAgentStream !== options.localAgentStream) { throw new Error('authored root local agent surface mismatch'); } + const completed = await completedParallelRootOrAssertRuntime(metadata, rootRunId, journal); + if (completed !== undefined) { + options.lifecycle?.onRunReceipt?.({ runId: rootRunId, flow: metadata.flowName }); + return completed; + } + assertAuthoredRuntimeAvailable(); + const loaded = await loadPinnedAuthoredSource(metadata); + // Source loading itself can alter a process-wide intrinsic. Refuse before + // run.resume dispatches a pinned parallel root in that environment. + const completedAfterLoad = await completedParallelRootOrAssertRuntime(metadata, rootRunId, journal); + if (completedAfterLoad !== undefined) { + options.lifecycle?.onRunReceipt?.({ runId: rootRunId, flow: metadata.flowName }); + return completedAfterLoad; + } const stream = rootStreamFromMetadata(await rootKernelStep(journal, rootRunId)); const peer = journal.createPeer(); await peer.connect(); @@ -173,7 +203,7 @@ export async function resumeDurableAuthoredFlow( options.lifecycle?.onRunReceipt?.({ runId: rootRunId, flow: metadata.flowName }); if (outcome.status === 'completed') { dispatchWait.cancel(); - return await completedResult(journal, outcome, rootRunId); + return await completedResult(journal, rootRunId); } assertRootCanDispatch(outcome); await assertNoOpenHumanWait(journal, outcome); @@ -189,6 +219,22 @@ export async function resumeDurableAuthoredFlow( } } +async function completedParallelRootOrAssertRuntime( + metadata: AuthoredRootMetadata, rootRunId: string, journal: JournalClient, +): Promise { + if (metadata.identityVersion !== 2 || metadata.executionMode !== 'parallel' + || parallelPromiseIntrinsicsIntact()) return undefined; + // A completed root has nothing left to dispatch. A read-only snapshot avoids + // refusing it under a preload while preserving the pre-dispatch guard for + // an active root. Readback still uses the journaled authored verdict. + const snapshot = await journal.runGet(rootRunId); + if (snapshot.status === 'completed') return completedResult(journal, rootRunId); + const error = new AuthoredFlowExecutionError('unsafe_parallel_runtime', + `pinned parallel root ${rootRunId} cannot resume while a Promise or Array intrinsic is replaced or a Node preload is active. The run remains resumable in a clean process.`); + error.rootRunId = rootRunId; + throw error; +} + /** * A root parked on an unanswered `f.human` will not be dispatched: the * kernel holds it in `needs_human` until `event.emit` closes the wait. Report @@ -353,6 +399,8 @@ async function driveRoot( ...(options.agentEnvironment === undefined ? {} : { agentEnvironment: options.agentEnvironment }), ...(options.workerCapacity === undefined ? {} : { workerCapacity: options.workerCapacity }), rootRunId: dispatch.run_id, + executionMode: metadata.identityVersion === 2 && metadata.executionMode === 'parallel' + ? 'parallel' : 'serial', extensions: loaded.extensions, flowGraph: loaded.graph, ...options.lifecycle, @@ -600,7 +648,10 @@ function isRootMetadata(value: unknown): value is AuthoredRootMetadata { const root = value as Partial; const surface = root.surface as Partial | undefined; const sources = root.sources; - return root.kind === ROOT_KIND && typeof root.flowName === 'string' + return (root.kind === ROOT_KIND || root.kind === AUTHORED_PARALLEL_ROOT_KIND) + && (root.kind !== AUTHORED_PARALLEL_ROOT_KIND + || (root.identityVersion === 2 && root.executionMode === 'parallel')) + && typeof root.flowName === 'string' && typeof root.flowPath === 'string' && /^[a-f0-9]{64}$/.test(root.sourceSha256 ?? '') && typeof root.inputPresent === 'boolean' && surface?.packageName === '@relayflows/surface' && typeof surface.version === 'string' && /^[a-f0-9]{64}$/.test(surface.packageSha256 ?? '') @@ -608,7 +659,9 @@ function isRootMetadata(value: unknown): value is AuthoredRootMetadata { && Array.isArray(sources) && sources.length > 0 && sources.every(isRootSourceAuthority) && (root.extensions === undefined || (Array.isArray(root.extensions) && root.extensions.every(isRootExtension))) && (root.localAgentStream === undefined - || /^local-agent-[a-f0-9-]+$/.test(root.localAgentStream)); + || /^local-agent-[a-f0-9-]+$/.test(root.localAgentStream)) + && ((root.identityVersion === undefined && root.executionMode === undefined) + || (root.identityVersion === 2 && (root.executionMode === 'serial' || root.executionMode === 'parallel'))); } function isRootExtension(value: unknown): value is AuthoredRootExtension { diff --git a/packages/sdk/src/authored-step-graph.ts b/packages/sdk/src/authored-step-graph.ts index aaa8e2aac..8848589d0 100644 --- a/packages/sdk/src/authored-step-graph.ts +++ b/packages/sdk/src/authored-step-graph.ts @@ -32,14 +32,16 @@ import { MAX_AFTER, displayLabel, type AuthoredStepEdges } from './authored-step * body walks a few nodes per step. A walk that still exceeds `walkLimit` stops * and says so (`afterTruncated`) rather than guessing silently. * - * This is observational metadata: it never gates execution, and it changes no - * step id, admission key or resume identity. + * Most consumers use this as observational metadata. Parallel f.run follow-up + * IDs also use the causal frontier; the executor refuses a truncated frontier + * rather than choosing a replay key from incomplete predecessors. */ export const MAX_WALK = 10_000; interface Frontier { readonly steps: readonly string[]; readonly truncated: boolean; + readonly unregisteredAggregate: boolean; } interface StepNode { @@ -62,6 +64,7 @@ const EXPANDS_ON: Readonly> = interface Aggregate { readonly promise: Promise; + readonly combinator: Combinator; /** Cached once settled: a settled promise never changes state. */ outcome?: Outcome; readonly expandsOn: Outcome | 'always'; @@ -71,6 +74,10 @@ interface Aggregate { export class AuthoredStepGraph { private readonly stepPromises = new Map(); private readonly aggregates = new Map(); + private readonly registeredAggregates = new Set(); + private readonly registeredCombinatorInternals = new Set(); + private readonly certifiedMembers = new Set(); + private readonly unsafeAggregates = new Set(); private readonly contexts = new Map(); private readonly nodes = new Map(); private readonly edges = new Map(); @@ -78,6 +85,7 @@ export class AuthoredStepGraph { constructor( private readonly causesOf: (asyncId: number) => readonly number[], private readonly walkLimit = MAX_WALK, + private readonly unobservedJoinShape: (asyncId: number) => boolean = () => false, ) {} /** A combinator's aggregate and its members, for expansion once it settles. */ @@ -86,10 +94,19 @@ export class AuthoredStepGraph { promise: Promise, combinator: Combinator, members: readonly number[], + created: ReadonlySet = new Set(), ): void { + this.registeredAggregates.add(aggregateId); + for (const id of created) this.registeredCombinatorInternals.add(id); + if (combinator === 'race' || combinator === 'any') this.unsafeAggregates.add(aggregateId); const expandsOn = EXPANDS_ON[combinator]; if (expandsOn === undefined || members.length === 0) return; - this.aggregates.set(aggregateId, { promise, expandsOn, members }); + this.aggregates.set(aggregateId, { promise, combinator, expandsOn, members }); + } + + /** Only direct steps and branch calls proven by the body grammar are safe members. */ + certifyMember(asyncId: number): void { + this.certifiedMembers.add(asyncId); } /** @@ -119,10 +136,19 @@ export class AuthoredStepGraph { return this.edges.get(step); } + /** Causal predecessors of a step being declared in the current async context. */ + predecessorsAt(contextId: number): Frontier { + return this.frontierOf(contextId); + } + /** Drop the walk state; recorded edges stay readable for late record writes. */ release(): void { this.stepPromises.clear(); this.aggregates.clear(); + this.registeredAggregates.clear(); + this.registeredCombinatorInternals.clear(); + this.certifiedMembers.clear(); + this.unsafeAggregates.clear(); this.contexts.clear(); this.nodes.clear(); } @@ -132,6 +158,7 @@ export class AuthoredStepGraph { if (memo !== undefined) return memo; const candidates = new Set(); let truncated = false; + let unregisteredAggregate = false; const visited = new Set([start]); const queue = [start]; // Breadth-first, so that a walk cut short by the limit has already found @@ -143,10 +170,24 @@ export class AuthoredStepGraph { candidates.add(step); continue; } + // A join's resolution edge contains only its settling member. In + // parallel mode the full member list is safe only if our combinator + // observer registered it before the promise settled. The creation and + // resolution contexts also catch an unobserved join created after a + // previous step, where root-adoption alone cannot detect it. + const aggregate = this.aggregates.get(current); + const rejectedAll = aggregate?.combinator === 'all' + && promiseOutcome(aggregate.promise) === 'rejected'; + const possibleJoin = this.unsafeAggregates.has(current) || rejectedAll + || (this.unobservedJoinShape(current) + && !this.registeredAggregates.has(current) && !this.certifiedMembers.has(current) + && !this.registeredCombinatorInternals.has(current)); + unregisteredAggregate ||= possibleJoin; const answered = current === start ? undefined : this.contexts.get(current); if (answered !== undefined) { for (const found of answered.steps) candidates.add(found); truncated ||= answered.truncated; + unregisteredAggregate ||= answered.unregisteredAggregate; continue; } for (const id of [...this.waitedFor(current), ...this.causesOf(current)]) { @@ -162,7 +203,11 @@ export class AuthoredStepGraph { } } const reduced = this.reduce(candidates); - const frontier = Object.freeze({ steps: reduced.steps, truncated: truncated || reduced.truncated }); + const frontier = Object.freeze({ + steps: reduced.steps, + truncated: truncated || reduced.truncated, + unregisteredAggregate, + }); this.contexts.set(start, frontier); return frontier; } @@ -184,7 +229,7 @@ export class AuthoredStepGraph { * reduction reads recorded `after` lists; when one it reads is incomplete, * a redundant ancestor can survive, and the result says so. */ - private reduce(candidates: ReadonlySet): Frontier { + private reduce(candidates: ReadonlySet): Pick { const ordered = [...candidates].sort((a, b) => this.orderOf(a) - this.orderOf(b)); if (ordered.length <= 1) return { steps: ordered, truncated: false }; // An ancestor is always registered before its descendant, so nothing diff --git a/packages/sdk/src/authored-step-index.ts b/packages/sdk/src/authored-step-index.ts index ac514b282..d8f5201ec 100644 --- a/packages/sdk/src/authored-step-index.ts +++ b/packages/sdk/src/authored-step-index.ts @@ -150,7 +150,8 @@ export async function alsoRecord( * Fold the root's stream back into one record per authored step. * * A `completed` record supersedes the `admitted` one for the same step; first - * admission order is preserved so the index reads in the order the body ran. + * admission order is preserved for each step, while different children can + * first appear in completion order when they finish concurrently. * Records this version does not recognise are skipped rather than trusted. */ export async function readAuthoredStepIndex( diff --git a/packages/sdk/src/authored-verdict.ts b/packages/sdk/src/authored-verdict.ts index 95b309b16..0a0731a83 100644 --- a/packages/sdk/src/authored-verdict.ts +++ b/packages/sdk/src/authored-verdict.ts @@ -21,6 +21,8 @@ import type { JournalEvent } from './journal-reader.js'; /** The `instruction` discriminator `authored-root.ts` writes into the root step. */ export const AUTHORED_ROOT_KIND = 'relayflows.authored-root.v1'; +/** Older CLIs do not recognize this root and must refuse a parallel rollback. */ +export const AUTHORED_PARALLEL_ROOT_KIND = 'relayflows.authored-root.parallel.v2'; export interface AuthoredVerdict { readonly reason: LoweredCompletionReason; @@ -76,7 +78,8 @@ export function declaresAuthoredRoot(spawned: JournalEvent): boolean { if (step === null || step['id'] !== 'authored-root') return false; if (typeof step['instruction'] !== 'string') return false; try { - return record(JSON.parse(step['instruction']))?.['kind'] === AUTHORED_ROOT_KIND; + const kind = record(JSON.parse(step['instruction']))?.['kind']; + return kind === AUTHORED_ROOT_KIND || kind === AUTHORED_PARALLEL_ROOT_KIND; } catch { return false; } diff --git a/packages/sdk/src/authored-worker-step.ts b/packages/sdk/src/authored-worker-step.ts index 31f0b8a6f..db73f2074 100644 --- a/packages/sdk/src/authored-worker-step.ts +++ b/packages/sdk/src/authored-worker-step.ts @@ -19,7 +19,7 @@ import { authoredChildAdmissionKey } from './authored-admission.js'; import { alsoRecord, recordAuthoredChild } from './authored-step-index.js'; import type { StepFailedDetails } from './failure-kinds.js'; import { LOCAL_AGENT_WORKSPACE } from './local-agent-pins.js'; -import { authoredWorkerSlots, type AuthoredWorkerSlots } from './worker-slots.js'; +import { authoredWorkerSlots, WorkerSlots, type AuthoredWorkerSlots } from './worker-slots.js'; import { validateStepSecrets } from './step-secrets.js'; const AGENT_TIMEOUT = Symbol('declared agent timeout'); @@ -356,8 +356,14 @@ export function authoredWorkerRunner( export function authoredDeterministicRunner( name: string, journal: JournalClient, journalSteps: AuthoredFlowJournalStep[], budget: AuthoredBudget, context: AuthoredStepContext = {}, + parallel = false, ) { const rootRunId = context.rootRunId; + // run.start drives a deterministic child to completion before replying. The + // daemon reads one connection in order, so sharing the body's connection + // would serialize Promise.all. Each admitted child gets its own connection; + // this limit bounds both daemon threads and shell commands per authored body. + const slots = new WorkerSlots(8); // One lowering, two readers. `record` changes what the child run's verdict // MEANS, so the reader changes with it; everything before the read — spec, // admission key, budget, child index — is deliberately shared, because a @@ -386,8 +392,10 @@ export function authoredDeterministicRunner( }); return read(outcome); }; - if (terminal) return journal.runStart(spec, undefined, admissionKey).then(consume); - return budget.execute(journal, spec, consume, admissionKey); + const admit = async () => terminal + ? consume(await journal.runStart(spec, undefined, admissionKey, false, parallel)) + : budget.execute(journal, spec, consume, admissionKey, parallel); + return parallel ? slots.run(admit) : admit(); } const lowerRun = (id: string, command: string, terminal = false, leaseMs?: number, verification?: NamedGate, secrets?: string[]): Promise => @@ -398,6 +406,7 @@ export function authoredDeterministicRunner( secrets?: string[]): Promise => lower(id, command, false, leaseMs, verification, 'record', secrets, outcome => readRecordedOutcome(journal, outcome, id, journalSteps, context)); + lowerRun.stop = (reason: unknown): void => slots.close(reason); return lowerRun; } diff --git a/packages/sdk/src/cli/run.ts b/packages/sdk/src/cli/run.ts index baf0855bd..ebd85fc8d 100644 --- a/packages/sdk/src/cli/run.ts +++ b/packages/sdk/src/cli/run.ts @@ -415,9 +415,11 @@ export async function resumeFlow( return { exitCode: 2, report: { ...base, runId, socketPath, diagnostics: [{ severity: 'refusal', kind: 'human_influenced_run', message: error.message.replace(/^human_influenced_run: /, '') }] } }; } - if (error instanceof AuthoredFlowExecutionError && error.code === 'unsupported_promise_lifecycle') { + if (error instanceof AuthoredFlowExecutionError + && (error.code === 'unsafe_parallel_runtime' || error.code === 'unsupported_promise_lifecycle')) { return { exitCode: 2, report: { ...base, runId, socketPath, - diagnostics: [{ severity: 'refusal', kind: 'invalid_spec', message: error.message }] } }; + diagnostics: [{ severity: 'refusal', + kind: error.code === 'unsafe_parallel_runtime' ? error.code : 'invalid_spec', message: error.message }] } }; } if (error instanceof AuthoredFlowExecutionError && (error.code === 'helper_slack.credential_missing' || error.code === 'helper_slack.mount_required' diff --git a/packages/sdk/src/failure-kinds.ts b/packages/sdk/src/failure-kinds.ts index 617867535..df7457c5a 100644 --- a/packages/sdk/src/failure-kinds.ts +++ b/packages/sdk/src/failure-kinds.ts @@ -134,6 +134,8 @@ export const RUN_FAILURE_KINDS = [ 'run_parked', 'run_declined', 'run_unavailable', + /** A pinned parallel root is still active, but this process cannot safely dispatch it. */ + 'unsafe_parallel_runtime', /** A predicate `.gate(fn)` judged false; the verdict is journaled as `.gate`. */ 'gate_failed', /** `flows answer` named a wait the run is not asking: unknown, or already answered. */ diff --git a/packages/sdk/src/journal-client.ts b/packages/sdk/src/journal-client.ts index c6e365894..3796bc0b9 100644 --- a/packages/sdk/src/journal-client.ts +++ b/packages/sdk/src/journal-client.ts @@ -135,7 +135,12 @@ export class JournalClient extends JournalConnection { reuseFromRunId?: string, admissionKey?: string, watch = false, + isolated = false, ): Promise { + if (isolated) { + if (watch) throw new Error('an isolated run.start cannot keep a watch on its temporary session'); + return this.runStartIsolated(spec, reuseFromRunId, admissionKey); + } for (const step of spec.steps) { for (const name of validateStepSecrets(step.secrets, process.env)) { if (this.withheld.has(name)) { @@ -155,6 +160,20 @@ export class JournalClient extends JournalConnection { }, null); } + /** Drive a blocking deterministic child on its own socket, then close it. */ + private async runStartIsolated( + spec: KernelRunSpec, reuseFromRunId?: string, admissionKey?: string, + ): Promise { + const peer = this.createPeer(); + try { + await peer.connect(); + await peer.hello('flows-authored-deterministic'); + return await peer.runStart(spec, reuseFromRunId, admissionKey); + } finally { + peer.close(); + } + } + /** §3 memoized resume. */ runResume(runId: string, allowHumanInfluenced = false): Promise { return this.request('run.resume', { diff --git a/packages/sdk/tests/authored-flow-lifecycle-executor.test.ts b/packages/sdk/tests/authored-flow-lifecycle-executor.test.ts index 5e62dc0fd..71524c503 100644 --- a/packages/sdk/tests/authored-flow-lifecycle-executor.test.ts +++ b/packages/sdk/tests/authored-flow-lifecycle-executor.test.ts @@ -2,7 +2,8 @@ import { rmSync } from 'node:fs'; import type { Server } from 'node:net'; import { flow, type Ctx, type FlowHandle, type Step } from '@relayflows/surface'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { executeAuthoredFlow } from '../src/authored-flow-executor.js'; +import { executeAuthoredFlow, type ExecuteAuthoredFlowOptions } from '../src/authored-flow-executor.js'; +import { AuthoredFlowLifecycle, parallelPromiseIntrinsicsIntact } from '../src/authored-flow-lifecycle.js'; import { JournalClient } from '../src/journal-client.js'; import { kernelDialectError, @@ -12,7 +13,199 @@ import { startLoopback, } from './journal-client-loopback.js'; +const unobservedAll = Promise.all.bind(Promise); +const handmadeAll = (values: readonly PromiseLike[]): Promise => + new Promise((resolve, reject) => { + const result: T[] = new Array(values.length); + let remaining = values.length; + if (remaining === 0) resolve(result); + values.forEach((value, index) => Promise.resolve(value).then(item => { + result[index] = item; + if (--remaining === 0) resolve(result); + }, reject)); + }); + describe('authored flow lifecycle through the journal executor', () => { + it('parses whole NODE_OPTIONS flags, including quoted values and preloads', () => { + const previous = process.env['NODE_OPTIONS']; + try { + for (const options of [ + '--dns-result-order=ipv4first', '--unhandled-rejections=strict', + '--max-old-space-size=2048', '--enable-source-maps', '--trace-warnings', + '--title="workflow -r --require=only-text"', + ]) { + process.env['NODE_OPTIONS'] = options; + expect(parallelPromiseIntrinsicsIntact(), options).toBe(true); + } + for (const options of [ + '-r ./lib/noop.cjs', '--require=./lib/noop.cjs', + '--require="./lib/noop.cjs"', '--import=data:text/javascript,void%200', + '--loader ./lib/noop.mjs', '--experimental-loader=./lib/noop.mjs', + '--title="harmless" --require=./lib/noop.cjs', + ]) { + process.env['NODE_OPTIONS'] = options; + expect(parallelPromiseIntrinsicsIntact(), options).toBe(false); + } + } finally { + if (previous === undefined) delete process.env['NODE_OPTIONS']; + else process.env['NODE_OPTIONS'] = previous; + } + }); + + it('detects replacement of every Promise primitive used by parallel joins', () => { + expect(parallelPromiseIntrinsicsIntact()).toBe(true); + const nativePromise = globalThis.Promise; + try { + globalThis.Promise = function ReplacedPromise() {} as unknown as PromiseConstructor; + expect(parallelPromiseIntrinsicsIntact(), 'constructor').toBe(false); + } finally { globalThis.Promise = nativePromise; } + for (const name of ['resolve', 'reject', 'all', 'allSettled', 'race', 'any']) { + const target = Promise as unknown as Record; + const original = target[name]; + target[name] = () => undefined; + const detected = parallelPromiseIntrinsicsIntact(); + target[name] = original; + expect(detected, name).toBe(false); + } + for (const name of ['then', 'catch', 'finally']) { + const target = Promise.prototype as unknown as Record; + const original = target[name]; + target[name] = () => undefined; + const detected = parallelPromiseIntrinsicsIntact(); + target[name] = original; + expect(detected, name).toBe(false); + } + const constructor = Promise.prototype.constructor; + const constructorDescriptor = Object.getOwnPropertyDescriptor(Promise.prototype, 'constructor')!; + try { + Promise.prototype.constructor = class OtherPromise {} as unknown as PromiseConstructor; + expect(parallelPromiseIntrinsicsIntact(), 'prototype constructor').toBe(false); + } finally { Promise.prototype.constructor = constructor; } + try { + Object.defineProperty(Promise.prototype, 'constructor', { + ...constructorDescriptor, enumerable: !constructorDescriptor.enumerable, + }); + expect(parallelPromiseIntrinsicsIntact(), 'prototype constructor descriptor').toBe(false); + } finally { Object.defineProperty(Promise.prototype, 'constructor', constructorDescriptor); } + const species = Object.getOwnPropertyDescriptor(Promise, Symbol.species)!; + try { + Object.defineProperty(Promise, Symbol.species, { configurable: true, get: () => Promise }); + expect(parallelPromiseIntrinsicsIntact(), 'species getter').toBe(false); + } finally { Object.defineProperty(Promise, Symbol.species, species); } + try { + Object.defineProperty(Promise, Symbol.species, { ...species, enumerable: !species.enumerable }); + expect(parallelPromiseIntrinsicsIntact(), 'species descriptor').toBe(false); + } finally { Object.defineProperty(Promise, Symbol.species, species); } + const toString = Function.prototype.toString; + try { + Function.prototype.toString = function () { return toString.call(this); }; + expect(parallelPromiseIntrinsicsIntact(), 'function toString').toBe(false); + } finally { Function.prototype.toString = toString; } + const nodeOptions = process.env['NODE_OPTIONS']; + try { + process.env['NODE_OPTIONS'] = '--import=/tmp/preload.mjs'; + expect(parallelPromiseIntrinsicsIntact(), 'NODE_OPTIONS preload').toBe(false); + } finally { + if (nodeOptions === undefined) delete process.env['NODE_OPTIONS']; + else process.env['NODE_OPTIONS'] = nodeOptions; + } + process.execArgv.push('--require', '/tmp/preload.cjs'); + try { expect(parallelPromiseIntrinsicsIntact(), 'execArgv preload').toBe(false); } + finally { process.execArgv.splice(-2); } + for (const flag of [ + '--dns-result-order=ipv4first', '--unhandled-rejections=strict', + '--report-uncaught-exception', '--redirect-warnings=/tmp/warnings', + '--experimental-require-module', '--max-old-space-size=512', + ]) { + process.execArgv.push(flag); + try { expect(parallelPromiseIntrinsicsIntact(), `execArgv ${flag}`).toBe(true); } + finally { process.execArgv.pop(); } + try { + process.env['NODE_OPTIONS'] = flag; + expect(parallelPromiseIntrinsicsIntact(), `NODE_OPTIONS ${flag}`).toBe(true); + } finally { + if (nodeOptions === undefined) delete process.env['NODE_OPTIONS']; + else process.env['NODE_OPTIONS'] = nodeOptions; + } + } + for (const flag of ['-r', '-r/tmp/preload.cjs', '--require', '--require=/tmp/preload.cjs', + '--import=/tmp/preload.mjs', '--loader=/tmp/loader.mjs', '--experimental-loader=/tmp/loader.mjs']) { + process.execArgv.push(flag); + try { expect(parallelPromiseIntrinsicsIntact(), `execArgv ${flag}`).toBe(false); } + finally { process.execArgv.pop(); } + try { + process.env['NODE_OPTIONS'] = flag; + expect(parallelPromiseIntrinsicsIntact(), `NODE_OPTIONS ${flag}`).toBe(false); + } finally { + if (nodeOptions === undefined) delete process.env['NODE_OPTIONS']; + else process.env['NODE_OPTIONS'] = nodeOptions; + } + } + const iterator = Object.getOwnPropertyDescriptor(Array.prototype, Symbol.iterator)!; + const arrayIteratorPrototype = Object.getPrototypeOf([][Symbol.iterator]()) as Iterator; + const next = Object.getOwnPropertyDescriptor(arrayIteratorPrototype, 'next')!; + let iteratorDetected: boolean; + try { + Object.defineProperty(Array.prototype, Symbol.iterator, { ...iterator, value: function* () {} }); + iteratorDetected = parallelPromiseIntrinsicsIntact(); + } finally { Object.defineProperty(Array.prototype, Symbol.iterator, iterator); } + expect(iteratorDetected!, 'Array iterator').toBe(false); + let nextDetected: boolean; + try { + Object.defineProperty(arrayIteratorPrototype, 'next', { ...next, value: () => ({ done: true }) }); + nextDetected = parallelPromiseIntrinsicsIntact(); + } finally { Object.defineProperty(arrayIteratorPrototype, 'next', next); } + expect(nextDetected!, 'Array iterator next').toBe(false); + expect(parallelPromiseIntrinsicsIntact()).toBe(true); + }); + + it('refuses a settled all with an in-flight member before the next child admission', () => { + for (const combinator of ['all', 'allSettled'] as const) { + const lifecycle = new AuthoredFlowLifecycle(() => {}); + try { + lifecycle.runBody(() => { + const pending = new Promise(() => {}); + const aggregate = Promise.resolve('already settled'); + lifecycle.registerCombinator([pending], aggregate, combinator, new Set()); + expect(lifecycle.invocationPredecessors().unregisteredAggregate).toBe(true); + }); + } finally { lifecycle.close(); } + } + }); + + it('refuses an iterable view that omits a literal array member', () => { + const nativeAll = Promise.all as Parameters[0]; + const violations: string[] = []; + const lifecycle = new AuthoredFlowLifecycle(message => violations.push(message)); + try { + lifecycle.runBody(() => { + const a = Promise.resolve('A'); + const b = Promise.resolve('B'); + const declared = lifecycle.captureParallelArrayMembers([a, b]); + expect(() => lifecycle.observeCombinator(nativeAll, Promise, [b], 'all', declared)) + .toThrow(/different set of array members/u); + }); + expect(violations).toEqual(['parallel Promise.all iterated a different set of array members']); + } finally { lifecycle.close(); } + }); + + it('refuses untracked thenables before invoking their user-supplied then', () => { + const violations: string[] = []; + const lifecycle = new AuthoredFlowLifecycle(message => violations.push(message)); + let thenReads = 0; + const hiddenThenable = new Proxy({}, { get: (_target, name) => { + if (name === 'then') { thenReads++; return (resolve: (value: string) => void) => resolve('A'); } + return undefined; + } }); + try { + expect(() => lifecycle.runBody(() => Promise.all([ + hiddenThenable, + Promise.resolve('B'), + ]))).toThrow(/member with no tracked provenance/u); + expect(violations).toContain('parallel Promise.all contains a member with no tracked provenance'); + expect(thenReads).toBe(0); + } finally { lifecycle.close(); } + }); let path: string; let server: Server; let nextRun = 1; @@ -35,12 +228,14 @@ describe('authored flow lifecycle through the journal executor', () => { const command = step['command'] as string; startedSpecs.push(spec); stepByRun.set(runId, { id: step['id'] as string, command }); - sendResult(ctx, { + const complete = () => sendResult(ctx, { run_id: runId, status: command === 'false' ? 'failed' : 'completed', completion_reason: command === 'false' ? 'step_failed' : 'success', completed_steps: 1, }); + if (command.startsWith('hold-')) setTimeout(complete, 300); + else complete(); }, 'journal.read': (ctx, params) => { const step = stepByRun.get(params.run_id as string)!; @@ -64,12 +259,13 @@ describe('authored flow lifecycle through the journal executor', () => { rmSync(path, { force: true }); }); - async function execute(handle: FlowHandle): Promise>> { + async function execute(handle: FlowHandle, options: ExecuteAuthoredFlowOptions = {}) + : Promise>> { const client = new JournalClient(path, { requestTimeoutMs: 2000 }); await client.connect(); await client.hello('authored-flow-lifecycle-test'); try { - return await executeAuthoredFlow(handle, client); + return await executeAuthoredFlow(handle, client, undefined, options); } finally { client.close(); } @@ -81,6 +277,199 @@ describe('authored flow lifecycle through the journal executor', () => { ); } + it('keeps a caught parallel non-run refusal as a root failure', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-hidden-llm', async f => { + try { f.llm('prompt', { output: { type: 'string' } }); } catch { /* author swallowed refusal */ } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toMatchObject({ code: 'step_failed' }); + expect(startedSpecs).toHaveLength(startedBefore); + }); + + it('refuses later admissions after a caught parallel violation', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-refusal-stays-closed', async f => { + try { f.llm('prompt', { output: { type: 'string' } }); } catch { /* author swallowed refusal */ } + try { await f.run('printf E'); } catch { /* this admission must also be refused */ } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toMatchObject({ code: 'step_failed' }); + expect(startedSpecs).toHaveLength(startedBefore); + }); + + it('refuses generated fanout before admitting a child', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-queued-violation', async f => { + const children = Array.from({ length: 9 }, (_, index) => f.run(`hold-${index}`)); + const joined = Promise.allSettled(children); + setTimeout(() => { + try { f.llm('unsupported', { output: { type: 'string' } }); } + catch { /* the root failure still owns this scope */ } + }, 30); + await joined; + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toMatchObject({ code: 'step_failed' }); + expect(startedSpecs).toHaveLength(startedBefore); + }); + + it('refuses a parallel follow-up through an unobserved Promise.all', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-unobserved-aggregate', async f => { + await unobservedAll([f.run('printf A'), f.run('printf B')]); + await f.run('printf X'); + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + const admitted = startedSpecs.slice(startedBefore).map(spec => spec['name']); + expect(admitted).toEqual([]); + }); + + it('refuses an unobserved join after an earlier step', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-late-unobserved-aggregate', async f => { + await f.run('printf W'); + await unobservedAll([f.run('printf A'), f.run('printf B'), f.run('printf C')]); + await f.run('printf X'); + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs.slice(startedBefore).map(spec => spec['name'])) + .toEqual([]); + }); + + it('refuses a hand-written join after an earlier step', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-late-handmade-aggregate', async f => { + await f.run('printf W'); + await handmadeAll([f.run('printf A'), f.run('printf B')]); + await f.run('printf X'); + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs.slice(startedBefore)).toHaveLength(0); + }); + + it('refuses a sequential-only body forced into parallel mode', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-sequential', async f => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf C'); + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs).toHaveLength(startedBefore); + }); + + it('admits branch dependents after a shared predecessor', async () => { + await expect(execute(flow('parallel-shared-branch-predecessor', async f => { + await f.run('printf W'); + const a = async () => { await f.run('printf A'); await f.run('printf A2'); }; + const b = async () => { await f.run('printf B'); await f.run('printf B2'); }; + await Promise.all([a(), b()]); + await f.run('printf X'); + f.done('success'); + }), { executionMode: 'parallel' })).resolves.toMatchObject({ completionReason: 'success' }); + }); + + it('refuses a body that writes Promise.all before its first child', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-replaced-observer', async f => { + await f.run('printf W'); + const observed = Promise.all; + Promise.all = unobservedAll as typeof Promise.all; + try { + await Promise.all([f.run('printf A'), f.run('printf B')]); + await f.run('printf X'); + } finally { Promise.all = observed; } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs.slice(startedBefore).map(spec => spec['name'])) + .toEqual([]); + }); + + it('refuses a body that writes Promise.allSettled before its first child', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-replaced-all-settled', async f => { + await f.run('printf W'); + const observed = Promise.allSettled; + Promise.allSettled = ((values: Iterable) => observed.call(Promise, values)) as typeof Promise.allSettled; + try { await f.run('printf X'); } + finally { Promise.allSettled = observed; } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs.slice(startedBefore).map(spec => spec['name'])) + .toEqual([]); + }); + + it('refuses a body that writes Promise.race before its first child', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-unrelated-race-patch', async f => { + await f.run('printf W'); + const observed = Promise.race; + Promise.race = ((values: Iterable) => observed.call(Promise, Array.from(values))) as typeof Promise.race; + try { + await Promise.all([f.run('printf A'), f.run('printf B')]); + await f.run('printf X'); + } finally { Promise.race = observed; } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs.slice(startedBefore).map(spec => spec['name'])) + .toEqual([]); + }); + + it('refuses a body that writes Promise.resolve before its first child', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-replaced-resolve', async f => { + await f.run('printf W'); + const original = Promise.resolve; + Promise.resolve = ((value: unknown) => original.call(Promise, value)) as typeof Promise.resolve; + try { await f.run('printf X'); } + finally { Promise.resolve = original; } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toThrow(/lost its source certificate/u); + expect(startedSpecs.slice(startedBefore).map(spec => spec['name'])) + .toEqual([]); + }); + + it('admits a parallel follow-up through the observed intrinsic Promise.all', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-observed-aggregate', async f => { + await Promise.all([f.run('printf A'), f.run('printf B')]); + await f.run('printf X'); + f.done('success'); + }), { executionMode: 'parallel' })).resolves.toMatchObject({ completionReason: 'success' }); + const admitted = startedSpecs.slice(startedBefore).map(spec => String(spec['name'])); + expect(admitted).toHaveLength(4); + expect(admitted[2]).toMatch(/^parallel-observed-aggregate\/run-after-/u); + }); + + it('keeps observed async route branches parallel through their join', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-observed-routes', async f => { + const left = async () => { await f.run('printf A'); await f.run('printf L'); }; + const right = async () => { await f.run('printf B'); await f.run('printf R'); }; + await Promise.all([left(), right()]); + await f.run('printf X'); + f.done('success'); + }), { executionMode: 'parallel' })).resolves.toMatchObject({ completionReason: 'success' }); + expect(startedSpecs.slice(startedBefore)).toHaveLength(6); + }); + + it('keeps a caught parallel activity refusal as a root failure', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-hidden-activity', async f => { + try { f.on(undefined as never, undefined as never); } catch { /* author swallowed refusal */ } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toMatchObject({ code: 'step_failed' }); + expect(startedSpecs).toHaveLength(startedBefore); + }); + + it('keeps a caught late zero-predecessor refusal as a root failure', async () => { + const startedBefore = startedSpecs.length; + await expect(execute(flow('parallel-hidden-late-run', async f => { + await Promise.resolve(); + try { await f.run('printf hidden'); } catch { /* author swallowed refusal */ } + f.done('success'); + }), { executionMode: 'parallel' })).rejects.toMatchObject({ code: 'step_failed' }); + expect(startedSpecs).toHaveLength(startedBefore); + }); + it('refuses native resolver callbacks without starting terminal success', async () => { const startedBefore = startedSpecs.length; await expect(execute(flow('native-resolver-forgery', async (f) => { diff --git a/packages/sdk/tests/authored-parallel-body.test.ts b/packages/sdk/tests/authored-parallel-body.test.ts new file mode 100644 index 000000000..bc5cb0aa6 --- /dev/null +++ b/packages/sdk/tests/authored-parallel-body.test.ts @@ -0,0 +1,87 @@ +import { describe, expect, it } from 'vitest'; +import { instrumentParallelBody } from '../src/authored-parallel-body.js'; +import { parallelBodySyntaxEligible } from '../src/authored-parallel-eligibility.js'; + +describe('certified authored parallel body', () => { + it('records the exact branch-call promises before the join is awaited', async () => { + const body = new Function(`return (async f => { + const left = async () => { await f.run('A'); await f.run('A2'); }; + const right = async () => { await f.run('B'); await f.run('B2'); }; + await Promise.all([left(), right()]); + f.done('success'); + });`)() as (ctx: { run: (command: string) => Promise; done: (reason: string) => void }) => Promise; + const certified: Promise[] = []; + const commands: string[] = []; + const executable = instrumentParallelBody(body, promise => certified.push(promise)); + const result = executable({ + run: async command => { commands.push(command); return command; }, + done: () => {}, + }); + expect(certified).toHaveLength(2); + expect(new Set(certified).size).toBe(2); + await result; + expect(commands).toEqual(['A', 'B', 'A2', 'B2']); + }); + + it('certifies every parenthesized branch member accepted by the grammar', async () => { + const body = new Function(`return (async f => { + const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([(a()), ((b())), (((async () => { await f.run('C'); })()))]); + f.done('success'); + });`)() as (ctx: { run: (command: string) => Promise; done: (reason: string) => void }) => Promise; + expect(parallelBodySyntaxEligible(body)).toBe(true); + const certified: Promise[] = []; + const commands: string[] = []; + const executable = instrumentParallelBody(body, promise => certified.push(promise)); + await executable({ run: async command => { commands.push(command); return command; }, done: () => {} }); + expect(certified).toHaveLength(3); + expect(new Set(certified).size).toBe(3); + expect(commands).toEqual(['A', 'B', 'C']); + }); + + it('rejects a body that could capture the certifier before any effect', () => { + for (const source of [ + `const __certifyParallelBranch = async () => { await f.run('P'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([__certifyParallelBranch(), b()]);`, + `const __certifyParallelBranch = await f.run('V'); + const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`, + ]) { + const body = new Function(`return (async f => { ${source} f.done('success'); });`)() as Function; + expect(parallelBodySyntaxEligible(body), source).toBe(false); + expect(() => instrumentParallelBody(body, () => {}), source).toThrow(/lost its source certificate/u); + } + }); + + it('refuses an unsupported join before executing the body', () => { + const unsafe = new Function(`return (async f => { + await Promise.race([f.run('A'), f.run('B')]); + await f.run('X'); + f.done('success'); + });`)() as Function; + expect(() => instrumentParallelBody(unsafe, () => {})).toThrow(/lost its source certificate/u); + }); + + it('checks unsafe joins independently of the entry eligibility decision', () => { + const bodies = [ + `await Promise.race([f.run('A'), f.run('B')]);`, + `await Promise.any([f.run('A'), f.run('B')]);`, + `await Promise.all([Promise.race([f.run('A'), f.run('B')]), f.run('C')]);`, + `const first = new Promise(resolve => resolve()); + await Promise.all([first, f.run('A')]);`, + `const a = f.run('A'); const thenable = { then: resolve => a.then(resolve) }; + await Promise.all([thenable, f.run('B')]);`, + `await Promise.all(new Set([f.run('A'), f.run('B')]));`, + `await Promise.all([f.run('A'), f.run('B')]).then(value => value);`, + `const Promise = { all: values => globalThis.Promise.all(values) }; + await Promise.all([f.run('A'), f.run('B')]);`, + ]; + for (const source of bodies) { + const body = new Function(`return (async f => { ${source} f.done('success'); });`)() as Function; + expect(() => instrumentParallelBody(body, () => {}), source).toThrow(/lost its source certificate/u); + } + }); +}); diff --git a/packages/sdk/tests/authored-parallel-eligibility.test.ts b/packages/sdk/tests/authored-parallel-eligibility.test.ts new file mode 100644 index 000000000..08a7b1c6d --- /dev/null +++ b/packages/sdk/tests/authored-parallel-eligibility.test.ts @@ -0,0 +1,186 @@ +import { describe, expect, it } from 'vitest'; +import { parallelRunEligible } from '../src/authored-parallel-eligibility.js'; + +const body = (source: string): Function => new Function(`return (${source});`)() as Function; +const eligible = (candidate: Function, moduleSource = `import { flow } from '@relayflows/surface';\nexport default flow('probe', ${Function.prototype.toString.call(candidate)});`) => + parallelRunEligible(candidate, moduleSource); + +describe('parallel run admission', () => { + it('certifies direct Promise.all and awaited branch continuations', () => { + expect(eligible(body(`async f => { + const outputs = await Promise.all([f.run('a'), f.run('b')]); + await f.run(outputs[0]); + f.done('success'); + }`))).toBe(true); + expect(eligible(body(`async f => { + const left = async () => { await f.run('a'); await f.run('b'); }; + const right = async () => { await f.run('c'); await f.run('d'); }; + await Promise.all([left(), right()]); + f.done('success'); + }`))).toBe(true); + expect(eligible(body(`async f => { + await Promise.all([f.run('a'), f.run('b'), f.run('c')]); + f.done('success'); + }`))).toBe(true); + expect(eligible(body(`async f => { + const route = async () => { await f.run('route'); await f.run('dependent'); }; + const second = async () => { await f.run('other'); await f.run('follow-up'); }; + await Promise.all([route(), second()]); + await f.run('joined'); + f.done('success'); + }`))).toBe(true); + }); + + it('falls back for completion-order and hidden-effect shapes', () => { + const cases = [ + // K1/K12: imported timers and for-await before a first child. + `async f => { const pause = () => sleep(300); + const late = async () => { await Promise.all([pause(), pause()]); await f.run('L'); }; + const fast = async () => { await f.run('A'); await f.run('B'); }; + await Promise.all([fast(), late()]); f.done('success'); }`, + `async f => { const late = async () => { for await (const x of source) await f.run(x); }; + await Promise.all([late(), f.run('A')]); f.done('success'); }`, + // K2b/K3: closure-shared readiness and completion-order mutation. + `async f => { const late = async () => { await Promise.all([ready(), ready()]); await f.run('C'); }; + await Promise.all([f.run('A'), late()]); f.done('success'); }`, + `async f => { const out = []; const left = async () => { out.push(await f.run('A')); }; + const right = async () => { out.push(await f.run('B')); }; + await Promise.all([left(), right()]); await f.run(out.join('')); f.done('success'); }`, + // K4: an arguments alias can reach f.llm without spelling f.llm. + `async function (f) { const g = arguments[0]; const ask = async () => { await g.llm('x'); }; + await Promise.all([ask(), f.run('A')]); f.done('success'); }`, + // K5/K5b: non-step recursive joins can truncate the predecessor graph. + `async f => { const descend = async n => n ? Promise.all([descend(n - 1), descend(n - 1)]) : 1; + await Promise.all([descend(12), f.run('A')]); await f.run('B'); f.done('success'); }`, + // K13b: completion from inside a branch changes peer admission order. + `async f => { const a = async () => { await f.run('A'); f.done('success'); }; + const b = async () => { await f.run('B'); await f.run('C'); }; + await Promise.all([a(), b()]); }`, + ]; + for (const source of cases) expect(eligible(body(source)), source).toBe(false); + }); + + it('keeps race, any, eager work, timers, and mixed effects serial', () => { + const cases = [ + `async f => { await Promise.race([f.run('a'), f.run('b')]); await f.run('c'); }`, + `async f => { await Promise.any([f.run('a'), f.run('b')]); await f.run('c'); }`, + `async f => { const background = async () => f.run('a'); background(); + await Promise.all([f.run('b'), f.run('c')]); }`, + `async f => { const background = (async () => f.run('a'))(); + await Promise.all([f.run('b'), f.run('c')]); await background; }`, + `async f => { const background = f.run('a'); + await Promise.all([f.run('b'), f.run('c')]); await background; }`, + `async f => { const group = Promise.all([f.run('a'), f.run('b')]); + await group; }`, + `async f => { await Promise.all(Array.from({ length: Math.random() * 10 }, + (_, i) => f.run(String(i)))); }`, + `async f => { await Promise.all(Array.from({ length: 9 }, (_, i) => f.run('' + i))); }`, + `async f => { const others = [f.run('a')]; + await Promise.all([...others, f.run('b')]); }`, + `async f => { await Promise.all([f.run('a'), f.run('b')]); + await new Promise(resolve => setTimeout(resolve, 1)); }`, + `async f => { await Promise.all([f.llm('a'), f.run('b')]); }`, + `async f => { await Promise.all([f.dispatch('a'), f.run('b')]); }`, + `async f => { const alias = f; await Promise.all([alias.run('a'), f.run('b')]); }`, + ]; + for (const source of cases) expect(eligible(body(source)), source).toBe(false); + }); + + it('reads the function itself rather than an author-supplied toString', () => { + const unsafe = body(`async f => { await Promise.race([f.run('a'), f.run('b')]); }`); + unsafe.toString = () => `async f => { await Promise.all([f.run('a'), f.run('b')]); }`; + expect(eligible(unsafe)).toBe(false); + }); + + it('keeps generated fanout serial even if Array.from is replaced', () => { + const candidate = body(`async f => { + await Promise.all(Array.from({ length: 2 }, (_, i) => f.run(String(i)))); + }`); + const original = Array.from; + try { + Array.from = ((...args: Parameters) => original(...args)) as typeof Array.from; + expect(eligible(candidate)).toBe(false); + } finally { Array.from = original; } + }); + + it('requires the module Promise binding to be the intrinsic', () => { + const candidate = body(`async f => { + await Promise.all([f.run('A'), f.run('B')]); + await f.run('X'); + f.done('success'); + }`); + const definition = `export default flow('probe', ${Function.prototype.toString.call(candidate)});`; + expect(eligible(candidate, `import { flow } from '@relayflows/surface';\n${definition}`)).toBe(true); + for (const prefix of [ + `const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };`, + `import Promise from 'bluebird';`, + `class Promise extends globalThis.Promise { static all(items) { return super.all(items); } }`, + `function helper(Promise) { return Promise; }`, + `const globalThis = { Promise: replacement };`, + `globalThis.Promise = replacement;`, + `globalThis['Promise'] = replacement;`, + `Promise.all = replacement;`, + `const intrinsic = globalThis; intrinsic.Promise = replacement;`, + `global.Promise = replacement;`, + ]) expect(eligible(candidate, `${prefix}\n${definition}`), prefix).toBe(false); + expect(eligible(candidate, + `export default (Promise.all = replacement, flow('probe', ${Function.prototype.toString.call(candidate)}));`)) + .toBe(false); + }); + + it('requires the entry module itself to define the body', () => { + const candidate = body(`async f => { + await Promise.all([f.run('A'), f.run('B')]); + await f.run('X'); + f.done('success'); + }`); + expect(eligible(candidate, `export { default } from './impl.ts';`)).toBe(false); + expect(eligible(candidate, `import impl from './impl.ts'; export default impl;`)).toBe(false); + }); + + it('requires the exported arrow to be the actual body from the direct Surface binding', () => { + const candidate = body(`async f => { + await Promise.all([f.run('A'), f.run('B')]); + await f.run('X'); + f.done('success'); + }`); + const decoy = `export default flow('decoy', async f => { await f.run('decoy'); });`; + const exact = `export default flow('real', ${Function.prototype.toString.call(candidate)});`; + expect(eligible(candidate, `const flow = () => impl; ${decoy}`)).toBe(false); + expect(eligible(candidate, `import { flow } from './wrap.ts'; ${decoy}`)).toBe(false); + expect(eligible(candidate, `import { flow } from '@relayflows/surface'; ${decoy}`)).toBe(false); + expect(eligible(candidate, exact)).toBe(false); + expect(eligible(candidate, `const flow = () => impl; ${exact}`)).toBe(false); + expect(eligible(candidate, `import { flow } from './wrap.ts'; ${exact}`)).toBe(false); + expect(eligible(candidate, `import { flow } from '@relayflows/surface';\nimport './patch.mjs';\nexport default flow('real', ${Function.prototype.toString.call(candidate)});`)).toBe(false); + expect(eligible(candidate, `import { flow } from '@relayflows/surface';\nconst alias = Function('return this')();\nexport default flow('real', ${Function.prototype.toString.call(candidate)});`)).toBe(false); + expect(eligible(candidate, `import { flow } from '@relayflows/surface';\nexport default flow('real', { get extra() { throw new Error('side effect'); } }, ${Function.prototype.toString.call(candidate)});`)).toBe(false); + }); + + it('keeps groups with empty async branches serial', () => { + expect(eligible(body(`async f => { + const warm = async () => {}; + await Promise.all([warm(), warm()]); + await f.run('X'); + f.done('success'); + }`))).toBe(false); + expect(eligible(body(`async f => { + const work = async () => { await f.run('A'); }; + const warm = async () => {}; + await Promise.all([work(), warm()]); + f.done('success'); + }`))).toBe(false); + }); + + it('uses serial mode when the body names the injected certifier', () => { + for (const source of [ + `const __certifyParallelBranch = async () => { await f.run('P'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([__certifyParallelBranch(), b()]);`, + `const __certifyParallelBranch = await f.run('V'); + const a = async () => { await f.run('A'); }; + const b = async () => { await f.run('B'); }; + await Promise.all([a(), b()]);`, + ]) expect(eligible(body(`async f => { ${source} f.done('success'); }`)), source).toBe(false); + }); +}); diff --git a/packages/sdk/tests/authored-parallel-run-live.test.ts b/packages/sdk/tests/authored-parallel-run-live.test.ts new file mode 100644 index 000000000..8cc592a25 --- /dev/null +++ b/packages/sdk/tests/authored-parallel-run-live.test.ts @@ -0,0 +1,1183 @@ +import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs'; +import { spawn, spawnSync } from 'node:child_process'; +import { resolve } from 'node:path'; +import { afterEach, describe, expect, it } from 'vitest'; +import { AUTHORED_STEP_STREAM } from '../src/authored-step-index.js'; +import { JournalClient } from '../src/journal-client.js'; +import { socketPathFor } from '../src/daemon-connection.js'; +import { chainFixture } from './flow-chain-fixture.js'; +import { readAuthoredRootMetadata } from '../src/authored-root.js'; + +const closes: Array<() => Promise> = []; +afterEach(async () => { for (const close of closes.splice(0).reverse()) await close(); }); + +async function until(read: () => Promise | T | undefined, what: string, + timeoutMs = 30_000): Promise { + const deadline = Date.now() + timeoutMs; + for (;;) { + const value = await read(); + if (value !== undefined) return value; + if (Date.now() >= deadline) throw new Error(`timed out waiting for ${what}`); + await new Promise(resolve => setTimeout(resolve, 25)); + } +} + +function runIds(data: string): string[] { + return readdirSync(`${data}/runs`).filter(name => name.endsWith('.sqlite3')) + .map(name => name.slice(0, -'.sqlite3'.length)).sort(); +} + +function killDaemon(data: string): void { + const { pid } = JSON.parse(readFileSync(`${data}/connection.json`, 'utf8')) as { pid: number }; + try { process.kill(pid, 'SIGKILL'); } catch (error) { + if ((error as NodeJS.ErrnoException).code !== 'ESRCH') throw error; + } +} + +describe('parallel authored deterministic steps', () => { + it('reports an active parallel resume as an environment refusal and a completed one as done', async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(`${fixture.root}/noop.cjs`, 'module.exports = 1;\n'); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('completed-parallel-resume', async f => { + await Promise.all([f.run('printf A >> effects'), f.run('printf B >> effects')]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf X >> effects', { timeout: '5m' }); + await f.run('printf Z >> effects'); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(done => cli.once('exit', () => done())); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 'parallel resume stall'); + const rootRunId = runIds(fixture.data)[0]!; + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + + const preloadResume = () => spawnSync(process.execPath, + [resolve('dist/cli.js'), 'resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId], + { cwd: fixture.root, encoding: 'utf8', timeout: 60_000, + env: { ...process.env, RELAYFLOWD_BIN: fixture.binary, + NODE_OPTIONS: `--require=${fixture.root}/noop.cjs` } }); + const refused = preloadResume(); + expect(refused.status, refused.stderr + refused.stdout).toBe(2); + expect(JSON.parse(refused.stdout)).toMatchObject({ + diagnostics: [expect.objectContaining({ severity: 'refusal', kind: 'unsafe_parallel_runtime' })], + }); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B']); + + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B', 'X', 'Z']); + + const completed = preloadResume(); + expect(completed.status, completed.stderr + completed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B', 'X', 'Z']); + }, 150_000); + + it.each(['after a first step', 'with the group first'])( + 'keeps a re-exported body serial %s and reuses completed effects on resume', async (shape) => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `export { default } from './impl.ts';\n`); + writeFileSync(`${fixture.root}/impl.ts`, `import { flow } from '@relayflows/surface'; +const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) }; +export default flow('reexported-body', async f => { + ${shape === 'after a first step' ? "await f.run('printf W >> effects');" : ''} + await Promise.all([f.run('sleep 0.2; printf A'), f.run('printf B'), f.run('printf C')]); + await f.run('printf X >> effects'); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +});\n`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 're-export stall'); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('reexport-serial-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ executionMode: 'serial' }); + } finally { reader.close(); } + expect(readFileSync(`${fixture.root}/effects`, 'utf8')).toBe( + shape === 'after a first step' ? 'WX' : 'X'); + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect(readFileSync(`${fixture.root}/effects`, 'utf8')).toBe( + shape === 'after a first step' ? 'WXZ' : 'XZ'); + }, 120_000); + + it('keeps a flow with an imported Promise.all patch on the serial scheduler', () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(`${fixture.root}/patch.mjs`, `const intrinsic = Promise.all; +const timer = setInterval(() => { + if (Promise.all === intrinsic) return; + Promise.all = function (values) { return intrinsic.call(Promise, values); }; + clearInterval(timer); +}, 1);\n`); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +import './patch.mjs'; +export default flow('imported-promise-patch', async f => { + await f.run('sleep 0.2; printf W >> effects'); + await Promise.all([f.run('printf A >> effects'), f.run('printf B >> effects')]); + await f.run('printf X >> effects'); + f.done('success'); +});\n`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort().join('')).toBe('ABWX'); + }, 60_000); + + it('keeps the reviewer imported patch runnable in serial mode', () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + mkdirSync(`${fixture.root}/lib`); + writeFileSync(`${fixture.root}/lib/patch.mjs`, `const I = Function('return this')()['Pro' + 'mise']; +const intrinsicAll = I.all; +const t = setInterval(() => { if (I.all !== intrinsicAll) { clearInterval(t); I.all = function all(xs) { return intrinsicAll.call(I, xs); }; } }, 2); +t.unref();\n`); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +import './lib/patch.mjs'; +export default flow('q6Pw', async f => { + await f.run('sleep 0.3; printf W'); + const a = async () => { await f.run('sleep 0.4; printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('sleep 0.2; printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]); + await f.run('printf X >> effects'); + await f.run('printf Z >> effects'); + f.done('success'); +});\n`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort().join('')).toBe('XZabc'); + }, 60_000); + + it('overlaps two sleep 2 commands started in Promise.all', () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + const previousEnv = process.env.FLOWS_PARALLEL_TEST_ENV; + process.env.FLOWS_PARALLEL_TEST_ENV = 'peer-env'; + writeFileSync(`${fixture.root}/span.mjs`, `import { writeFileSync } from 'node:fs'; +const name = process.argv[2]; +writeFileSync(name + '-start', String(Date.now())); +await new Promise(resolve => setTimeout(resolve, 2000)); +writeFileSync(name + '-end', String(Date.now())); +writeFileSync(name + '-env', process.env.FLOWS_PARALLEL_TEST_ENV || 'missing'); +process.stdout.write(name + ':' + process.env.FLOWS_PARALLEL_TEST_ENV); +`); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('parallel-run', async f => { + await Promise.all([ + f.run('node span.mjs first'), + f.run('node span.mjs second'), + ]); + f.done('success'); +}); +`); + let result; + try { + result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + } finally { + if (previousEnv === undefined) delete process.env.FLOWS_PARALLEL_TEST_ENV; + else process.env.FLOWS_PARALLEL_TEST_ENV = previousEnv; + } + expect(result.status, result.stderr + result.stdout).toBe(0); + const firstStart = Number(readFileSync(`${fixture.root}/first-start`, 'utf8')); + const secondStart = Number(readFileSync(`${fixture.root}/second-start`, 'utf8')); + const firstEnd = Number(readFileSync(`${fixture.root}/first-end`, 'utf8')); + const secondEnd = Number(readFileSync(`${fixture.root}/second-end`, 'utf8')); + const elapsedMs = Math.max(firstEnd, secondEnd) - Math.min(firstStart, secondStart); + expect(readFileSync(`${fixture.root}/first-env`, 'utf8')).toBe('peer-env'); + expect(readFileSync(`${fixture.root}/second-env`, 'utf8')).toBe('peer-env'); + console.info(`parallel sleep 2 elapsed: ${elapsedMs} ms`); + expect(elapsedMs).toBeLessThan(3_000); + }, 60_000); + + it('starts a fast branch dependent before a slow sibling completes', () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(`${fixture.root}/dependent.mjs`, `import { writeFileSync } from 'node:fs'; +writeFileSync('dependent-start', String(Date.now())); +process.stdout.write('dependent'); +`); + writeFileSync(`${fixture.root}/slow.mjs`, `import { writeFileSync } from 'node:fs'; +writeFileSync('slow-start', String(Date.now())); +await new Promise(resolve => setTimeout(resolve, 3000)); +process.stdout.write('slow'); +`); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('parallel-dependent', async f => { + const slow = async () => await f.run('node slow.mjs'); + const fast = async () => { + await f.run('sleep 1; printf fast'); + return await f.run('node dependent.mjs'); + }; + await Promise.all([slow(), fast()]); + f.done('success'); +}); +`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(0); + const elapsedMs = Number(readFileSync(`${fixture.root}/dependent-start`, 'utf8')) + - Number(readFileSync(`${fixture.root}/slow-start`, 'utf8')); + console.info(`fast dependent started after: ${elapsedMs} ms`); + expect(elapsedMs).toBeLessThan(2_300); + }, 60_000); + + it('keeps declaration order when the later child finishes first', async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('out-of-order-parallel-run', async f => { + const outputs = await Promise.all([ + f.run('sleep 2; printf slow'), + f.run('printf fast'), + ]); + await f.run('printf ' + outputs[0] + ':' + outputs[1] + ' > ordered.txt'); + f.done('success'); +}); +`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(0); + expect(readFileSync(`${fixture.root}/ordered.txt`, 'utf8')).toBe('slow:fast'); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('parallel-order-test'); + try { + const records = (await reader.streamRead(rootRunId, AUTHORED_STEP_STREAM, 0, 100)).messages + .map(message => (message as { message?: unknown }).message ?? message) as Array<{ + step?: string; state?: string; + }>; + expect(records.filter(record => record.state === 'completed' + && (record.step === 'run-1' || record.step === 'run-2')) + .map(record => record.step)).toEqual(['run-2', 'run-1']); + } finally { reader.close(); } + }, 60_000); + + it('admits at most eight deterministic children at once', () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(`${fixture.root}/work.mjs`, `import { appendFileSync, readFileSync } from 'node:fs'; +const id = process.argv[2]; +appendFileSync('spans.jsonl', JSON.stringify({ id, edge: 'start', at: Date.now() }) + '\\n'); +const deadline = Date.now() + 10000; +while (readFileSync('spans.jsonl', 'utf8').split('\\n').filter(line => line.includes('"edge":"start"')).length < 8) { + if (Date.now() > deadline) throw new Error('eight deterministic children were not admitted'); + await new Promise(resolve => setTimeout(resolve, 20)); +} +await new Promise(resolve => setTimeout(resolve, 500)); +appendFileSync('spans.jsonl', JSON.stringify({ id, edge: 'end', at: Date.now() }) + '\\n'); +`); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('bounded-parallel-run', async f => { + await Promise.all([ + f.run('node work.mjs 0'), f.run('node work.mjs 1'), f.run('node work.mjs 2'), + f.run('node work.mjs 3'), f.run('node work.mjs 4'), f.run('node work.mjs 5'), + f.run('node work.mjs 6'), f.run('node work.mjs 7'), f.run('node work.mjs 8'), + ]); + f.done('success'); +}); +`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(0); + const events = readFileSync(`${fixture.root}/spans.jsonl`, 'utf8').trim().split('\n') + .map(line => JSON.parse(line) as { id: string; edge: 'start' | 'end'; at: number }) + .sort((a, b) => a.at - b.at || (a.edge === 'end' ? -1 : 1)); + expect(events).toHaveLength(18); + let active = 0; + let peak = 0; + for (const event of events) { + active += event.edge === 'start' ? 1 : -1; + peak = Math.max(peak, active); + } + expect(active).toBe(0); + expect(peak).toBe(8); + }, 60_000); + + it('does not admit a queued child after a sibling fails', () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(`${fixture.root}/fail-work.mjs`, `import { appendFileSync, readFileSync } from 'node:fs'; +const id = process.argv[2]; +appendFileSync('fail-starts', id + '\\n'); +const deadline = Date.now() + 10000; +while (readFileSync('fail-starts', 'utf8').trim().split('\\n').length < 8) { + if (Date.now() > deadline) throw new Error('eight children were not admitted'); + await new Promise(resolve => setTimeout(resolve, 20)); +} +if (id === '0') process.exit(7); +await new Promise(resolve => setTimeout(resolve, 500)); +`); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('queued-child-cancellation', async f => { + await Promise.all([ + f.run('node fail-work.mjs 0'), f.run('node fail-work.mjs 1'), f.run('node fail-work.mjs 2'), + f.run('node fail-work.mjs 3'), f.run('node fail-work.mjs 4'), f.run('node fail-work.mjs 5'), + f.run('node fail-work.mjs 6'), f.run('node fail-work.mjs 7'), f.run('touch queued-started'), + ]); + f.done('success'); +}); +`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(1); + expect(readFileSync(`${fixture.root}/fail-starts`, 'utf8').trim().split('\n')).toHaveLength(8); + expect(existsSync(`${fixture.root}/queued-started`)).toBe(false); + }, 60_000); + + it('replays a completed peer and resumes an unfinished peer after a crash', async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('parallel-recovery', async f => { + const outputs = await Promise.all([ + f.run('printf x >> first-count; sleep 1; printf first'), + f.run('test -f stalled-marker || { touch stalled-marker; sleep 120; }; printf second', { timeout: '5m' }), + ]); + await f.run('printf ' + outputs[0] + ':' + outputs[1] + ' > recovered.txt'); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + const rootRunId = await until(() => { + if (!existsSync(`${fixture.data}/runs`)) return undefined; + return runIds(fixture.data)[0]; + }, 'root admission'); + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('parallel-recovery-test'); + await until(async () => { + try { + await reader.journalRead(rootRunId, 1, 1); + return true; + } catch (error) { + if (error instanceof Error && /no such table: meta/u.test(error.message)) return undefined; + throw error; + } + }, 'root journal initialization'); + let firstChildRunId: string; + let secondChildRunId: string; + try { + firstChildRunId = await until(async () => { + const page = await reader.streamRead(rootRunId, AUTHORED_STEP_STREAM, 0, 100); + const record = page.messages.map(message => + (message as { message?: unknown }).message ?? message) + .find(value => (value as { step?: string; state?: string }).step === 'run-1' + && (value as { state?: string }).state === 'completed') as { runId?: string } | undefined; + return record?.runId; + }, 'first child completion'); + await until(() => existsSync(`${fixture.root}/stalled-marker`) ? true : undefined, + 'unfinished peer to start'); + secondChildRunId = await until(async () => { + for (const runId of runIds(fixture.data).filter(id => id !== rootRunId && id !== firstChildRunId)) { + const entries = (await reader.journalRead(runId, 1, 100)).entries; + if (entries.some(entry => (entry as { step_id?: string }).step_id === 'run-2')) return runId; + } + return undefined; + }, 'second child admission'); + } finally { reader.close(); } + + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect(readFileSync(`${fixture.root}/recovered.txt`, 'utf8')).toBe('first:second'); + expect(readFileSync(`${fixture.root}/first-count`, 'utf8')).toBe('x'); + + const after = new JournalClient(socketPathFor(fixture.data)); + await after.connect(); + await after.hello('parallel-recovery-after'); + try { + const records = (await after.streamRead(rootRunId, AUTHORED_STEP_STREAM, 0, 100)).messages + .map(message => (message as { message?: unknown }).message ?? message) as Array<{ + step?: string; runId?: string; state?: string; + }>; + expect(records.find(record => record.step === 'run-1' && record.state === 'completed')?.runId) + .toBe(firstChildRunId); + expect(records.find(record => record.step === 'run-2' && record.state === 'completed')?.runId) + .toBe(secondChildRunId); + const firstEntries = (await after.journalRead(firstChildRunId, 1, 100)).entries; + expect(firstEntries.filter(entry => (entry as { entry_type?: string }).entry_type === 'step.completed')) + .toHaveLength(1); + expect(runIds(fixture.data)).toHaveLength(5); // root, both children, follow-up, completion marker + } finally { after.close(); } + }, 120_000); + + it('replays follow-up steps in parallel branches after a crash', async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('parallel-branch-recovery', async f => { + const left = async () => { + await f.run('sleep 2; printf left-initial'); + await f.run('printf L >> branch-effects; printf left-follow'); + await f.run('printf l >> branch-effects; printf left-last'); + }; + const right = async () => { + await f.run('printf right-initial'); + await f.run('printf R >> branch-effects; printf right-follow'); + await f.run('printf r >> branch-effects; printf right-last'); + }; + await Promise.all([left(), right()]); + await f.run('test -f branch-stalled || { touch branch-stalled; sleep 120; }; printf resumed'); + await f.run('printf ! >> branch-effects'); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + await until(() => existsSync(`${fixture.root}/branch-stalled`) ? true : undefined, 'branch stall'); + expect([...readFileSync(`${fixture.root}/branch-effects`, 'utf8')].sort()).toEqual(['L', 'R', 'l', 'r']); + const rootRunId = runIds(fixture.data)[0]!; + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/branch-effects`, 'utf8')].sort()).toEqual(['!', 'L', 'R', 'l', 'r']); + }, 120_000); + + it.each([ + { + name: 'two branches that each join two runs', + branches: ` + const left = async () => { + await Promise.all([f.run('sleep 1; printf left-a'), f.run('printf left-b')]); + await f.run('printf L >> effects; printf left-effect'); + }; + const right = async () => { + await Promise.all([f.run('printf right-a'), f.run('sleep 1; printf right-b')]); + await f.run('printf R >> effects; printf right-effect'); + };`, + }, + { + name: 'a chain beside a branch with a join', + branches: ` + const left = async () => { + await f.run('sleep 1; printf left-a'); + await f.run('printf left-b'); + await f.run('printf L >> effects; printf left-effect'); + }; + const right = async () => { + await Promise.all([f.run('printf right-a'), f.run('sleep 1; printf right-b')]); + await f.run('printf R >> effects; printf right-effect'); + };`, + }, + ])('does not replay a completed effect after a crash: $name', async ({ branches }) => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('parallel-join-recovery', async f => {${branches} + await Promise.all([left(), right()]); + await f.run('test -f stalled || { touch stalled; sleep 120; }; printf resumed', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 'join recovery stall'); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['L', 'R']); + const rootRunId = runIds(fixture.data)[0]!; + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['L', 'R']); + }, 120_000); + + it.skipIf(process.env.RELAYFLOWS_PREVIOUS_CLI === undefined)( + 'resumes a sequential 2.0.50 run without replaying completed effects', async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('legacy-sequential-resume', async f => { + await f.run('printf A >> effects'); + await f.run('printf B >> effects'); + await f.run('test -f stalled || { touch stalled; sleep 120; }; printf ready', { timeout: '5m' }); + await f.run('printf D >> effects'); + f.done('success'); +}); +`); + const cli = spawn(process.execPath, [process.env.RELAYFLOWS_PREVIOUS_CLI!, 'run', + '--no-observer-link', '--json', '--data-dir', fixture.data, fixture.flowPath, '--input', '{}'], + { cwd: fixture.root, stdio: 'pipe', env: { ...process.env, RELAYFLOWD_BIN: fixture.binary } }); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 'legacy run stall'); + expect(readFileSync(`${fixture.root}/effects`, 'utf8')).toBe('AB'); + const rootRunId = runIds(fixture.data)[0]!; + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect(readFileSync(`${fixture.root}/effects`, 'utf8')).toBe('ABD'); + }, 120_000, + ); + + it.skipIf(process.env.RELAYFLOWS_PREVIOUS_CLI === undefined)( + 'refuses a parallel v2 root under 2.0.50 and lets the new CLI resume it', async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('rollback-parallel-root', async f => { + await Promise.all([f.run('printf A >> effects'), f.run('printf B >> effects')]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf C >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 'rollback stall'); + const before = [...readFileSync(`${fixture.root}/effects`, 'utf8')].sort(); + expect(before).toEqual(['A', 'B']); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('rollback-root-kind-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ kind: 'relayflows.authored-root.parallel.v2', executionMode: 'parallel' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const old = spawnSync(process.execPath, [process.env.RELAYFLOWS_PREVIOUS_CLI!, 'resume', + '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId], + { cwd: fixture.root, env: { ...process.env, RELAYFLOWD_BIN: fixture.binary }, encoding: 'utf8', timeout: 30_000 }); + expect(old.status, old.stderr + old.stdout).not.toBe(0); + expect(old.stderr + old.stdout).toMatch(/malformed authority metadata/u); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(before); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B', 'C']); + }, 120_000, + ); + + it.each([ + { name: 'race', before: ['A', 'B', 'G'], body: ` + await Promise.race([f.run('printf A >> effects'), f.run('sleep 1; printf B >> effects')]); + await f.run('printf G >> effects');` }, + { name: 'any', before: ['A', 'B', 'G'], body: ` + await Promise.any([f.run('printf A >> effects'), f.run('sleep 1; printf B >> effects')]); + await f.run('printf G >> effects');` }, + { name: 'eager', before: ['X', 'Y'], body: ` + const background = (async () => { await f.run('printf X >> effects'); })(); + await new Promise(resolve => setTimeout(resolve, 300)); + await f.run('printf Y >> effects'); + await background;` }, + ])('keeps a $name flow running on serial fallback without replay', async ({ name, before, body }) => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('serial-${name}', async f => {${body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, `${name} stall`, 60_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(before); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('serial-fallback-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ identityVersion: 2, executionMode: 'serial' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual([...before, 'Z'].sort()); + }, 120_000); + + it.each([ + { name: 'llm', localAgent: true, calls: 2, expected: ['L', 'R'], child: undefined, body: ` + const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] }; + const left = async () => { await f.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, + { name: 'agent', localAgent: true, calls: 2, expected: ['L', 'R'], child: undefined, body: ` + const left = async () => { await f.agent('left', { task: 'left', model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.agent('right', { task: 'right', model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, + { name: 'dispatch', localAgent: false, calls: 0, expected: ['L', 'R', 'x', 'y'], + child: `import { flow } from '@relayflows/surface'; +export default flow('child', async (f, input: { token: string }) => { + await Promise.all([f.run('printf first'), f.run('printf second')]); + await f.run('printf ' + input.token + ' >> effects'); + f.done('success'); +}); +`, body: ` + const left = async () => { await f.dispatch('child', { token: 'x' }); await f.run('printf L >> effects'); }; + const right = async () => { await f.dispatch('child', { token: 'y' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);` }, + ])('resumes $name branches without replaying completed effects', async ({ name, localAgent, calls, expected, child, body }) => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + if (child !== undefined) writeFileSync(`${fixture.root}/child.flow.ts`, child); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('serial-${name}'${child === undefined ? '' : ", { use: ['./child.flow.ts'] }"}, async f => {${body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const flags = localAgent ? ['--local-agent'] : []; + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', ...flags, '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + let cliOutput = ''; + cli.stdout?.on('data', chunk => { cliOutput += String(chunk); }); + cli.stderr?.on('data', chunk => { cliOutput += String(chunk); }); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => { + if (cli.exitCode !== null) throw new Error(`${name} exited before stall: ${cliOutput}`); + return existsSync(`${fixture.root}/stalled`) ? true : undefined; + }, `${name} stall`, 90_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(expected); + if (calls > 0) expect(fixture.requests()).toHaveLength(calls); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('mixed-branch-fallback-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ identityVersion: 2, executionMode: 'serial' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', ...flags, + '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual([...expected, 'Z'].sort()); + if (calls > 0) expect(fixture.requests()).toHaveLength(calls); + }, 180_000); + + for (const pause of ['after run-4', 'after run-5'] as const) { + it.skipIf(process.env.RELAYFLOWS_PREVIOUS_CLI === undefined)( + `resumes 2.0.50 consecutive Promise.all groups ${pause} without replay`, async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +import { existsSync, writeFileSync } from 'node:fs'; +export default flow('legacy-consecutive-groups', async f => { + await f.run('printf 1 >> effects'); + await f.run('printf 2 >> effects'); + await Promise.all([f.run('printf 3 >> effects'), f.run('printf 4 >> effects')]); + if (!existsSync('release4')) { + writeFileSync('pause4', ''); + await new Promise(resolve => setTimeout(resolve, 120000)); + } + await Promise.all([ + f.run('printf 5 >> effects'), + f.run('test -f release6 || { touch pause5; sleep 120; }; printf 6 >> effects', { timeout: '5m' }), + ]); + f.done('success'); +}); +`); + if (pause === 'after run-5') writeFileSync(`${fixture.root}/release4`, ''); + else writeFileSync(`${fixture.root}/release6`, ''); + const cli = spawn(process.execPath, [process.env.RELAYFLOWS_PREVIOUS_CLI!, 'run', + '--no-observer-link', '--json', '--data-dir', fixture.data, fixture.flowPath, '--input', '{}'], + { cwd: fixture.root, stdio: 'pipe', env: { ...process.env, RELAYFLOWD_BIN: fixture.binary } }); + let cliOutput = ''; + cli.stdout?.on('data', chunk => { cliOutput += String(chunk); }); + cli.stderr?.on('data', chunk => { cliOutput += String(chunk); }); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + try { + await until(() => { + if (cli.exitCode !== null) throw new Error(`legacy CLI exited ${cli.exitCode}: ${cliOutput}`); + return existsSync(`${fixture.root}/${pause === 'after run-4' ? 'pause4' : 'pause5'}`) + ? true : undefined; + }, `${pause} marker`, 120_000); + } catch (error) { + throw new Error(`${String(error)}; effects=${existsSync(`${fixture.root}/effects`) + ? readFileSync(`${fixture.root}/effects`, 'utf8') : 'missing'}; cli=${cliOutput}`); + } + const rootRunId = runIds(fixture.data)[0]!; + if (pause === 'after run-5') { + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('legacy-group-recovery-test'); + try { + await until(async () => { + for (const runId of runIds(fixture.data).filter(id => id !== rootRunId)) { + try { + const entries = (await reader.journalRead(runId, 1, 100)).entries; + if (entries.some(entry => (entry as { entry_type?: string; step_id?: string }).entry_type + === 'step.completed' && (entry as { step_id?: string }).step_id === 'run-5')) return true; + } catch (error) { + if (error instanceof Error && /no such table: meta/u.test(error.message)) continue; + throw error; + } + } + return undefined; + }, 'legacy run-5 child completion', 60_000); + } finally { reader.close(); } + } + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()) + .toEqual(pause === 'after run-4' ? ['1', '2', '3', '4'] : ['1', '2', '3', '4', '5']); + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/${pause === 'after run-4' ? 'release4' : 'release6'}`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()) + .toEqual(['1', '2', '3', '4', '5', '6']); + }, 240_000, + ); + } + + it.each([ + { name: 'closure-shared readiness', expected: ['A', 'B', 'C'], preamble: ` +let releaseFirst; +const ready = new Promise(resolve => { releaseFirst = resolve; });`, body: ` + const left = async () => { + await f.run('printf A >> effects'); + releaseFirst(); + await f.run('printf B >> effects'); + }; + const right = async () => { + await Promise.all([ready, ready]); + await f.run('printf C >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'shared completion-order array', expected: ['A', 'B'], preamble: '', body: ` + const out = []; + const left = async () => { out.push(await f.run('printf A >> effects; printf a')); }; + const right = async () => { out.push(await f.run('printf B >> effects; printf b')); }; + await Promise.all([left(), right()]); + await f.run('printf ' + out.join('') + ' > order');` }, + { name: 'deep non-step joins with a swallowed refusal', expected: ['A', 'B'], preamble: '', body: ` + const descend = async n => n === 0 ? undefined : Promise.all([descend(n - 1), descend(n - 1)]); + await Promise.all([descend(12), f.run('printf A >> effects')]); + try { await f.run('printf B >> effects'); } catch { /* would silently skip B */ }` }, + ])('keeps $name serial and replays no completed effect', async ({ name, expected, preamble, body }) => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface';${preamble} +export default flow('serial-review-${name.replaceAll(' ', '-')}', async f => {${body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, `${name} stall`, 60_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(expected); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('serial-review-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ kind: 'relayflows.authored-root.v1', executionMode: 'serial' }); + } finally { reader.close(); } + const order = existsSync(`${fixture.root}/order`) ? readFileSync(`${fixture.root}/order`, 'utf8') : undefined; + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual([...expected, 'Z'].sort()); + if (order !== undefined) expect(readFileSync(`${fixture.root}/order`, 'utf8')).toBe(order); + await fixture.close(); + } + }, 240_000); + + it('keeps done inside a branch on the established serial scheduler', async () => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('serial-branch-completion', async f => { + const b = async () => { await f.run('sleep 0.4; printf B >> effects'); await f.run('printf C >> effects'); }; + const a = async () => { await f.run('sleep 0.1; printf A >> effects'); f.done('success'); }; + await Promise.all([b(), a()]); +}); +`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status, result.stderr + result.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B', 'C']); + await fixture.close(); + } + }, 120_000); + + it('retains the base failure when a branch completes before its sibling continues', async () => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('serial-early-completion', async f => { + const a = async () => { await f.run('sleep 0.4; printf A >> effects'); f.done('success'); }; + const b = async () => { await f.run('sleep 0.1; printf B >> effects'); await f.run('printf C >> effects'); }; + await Promise.all([a(), b()]); +}); +`); + const result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + expect(result.status).not.toBe(0); + expect(result.stderr + result.stdout).toMatch(/operation_after_completion/u); + await fixture.close(); + } + }, 120_000); + + it('keeps an arguments-alias LLM body serial without replay across six resumes', async () => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('serial-hidden-llm', async function (f) { + const g = arguments[0]; + const output = { type: 'object', properties: { message: { type: 'string' } }, required: ['message'] }; + const left = async () => { await g.llm('left', { output, model: 'test-model' }); await f.run('printf L >> effects'); }; + const right = async () => { await g.llm('right', { output, model: 'test-model' }); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--local-agent', + '--data-dir', fixture.data, fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 'hidden LLM stall', 90_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['L', 'R']); + expect(fixture.requests()).toHaveLength(2); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('hidden-llm-mode-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ kind: 'relayflows.authored-root.v1', executionMode: 'serial' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = spawnSync(process.execPath, + [resolve('dist/cli.js'), 'resume', '--no-observer-link', '--json', '--local-agent', + '--data-dir', fixture.data, rootRunId], + { cwd: fixture.root, encoding: 'utf8', timeout: 90_000, + env: { ...process.env, RELAYFLOWD_BIN: fixture.binary } }); + // #674: the established serial scheduler can bind a child admission key + // to a different spec when concurrent branches resume in another order. + // It is also reproducible on 2.0.50/2.0.51. The mode and replay checks + // remain required here; the conflict is the only permitted refusal. + if (resumed.status !== 0) { + expect(resumed.status).toBe(1); + expect(resumed.stderr + resumed.stdout).toMatch(/run_admission_conflict/u); + } + const effects = [...readFileSync(`${fixture.root}/effects`, 'utf8')]; + expect(effects.every(effect => effect === 'L' || effect === 'R' || effect === 'Z')).toBe(true); + expect(effects.filter(effect => effect === 'L' || effect === 'R').sort()).toEqual(['L', 'R']); + const zCount = effects.filter(effect => effect === 'Z').length; + expect(zCount).toBeLessThanOrEqual(1); + if (resumed.status === 0) expect(zCount).toBe(1); + expect(fixture.requests()).toHaveLength(2); + await fixture.close(); + } + }, 240_000); + + it.each([ + { name: 'bound module Promise', preamble: `const Promise = { all: globalThis.Promise.all.bind(globalThis.Promise) };`, + body: `await Promise.all([f.run('sleep 0.1; printf A'), f.run('printf B'), f.run('printf C')]); + await f.run('printf X >> effects');`, expected: 'X' }, + { name: 'hand-written module Promise', preamble: `const Promise = { all: values => new globalThis.Promise((resolve, reject) => { + const items = [...values], results = Array(items.length); let remaining = items.length; + items.forEach((item, index) => globalThis.Promise.resolve(item).then(value => { + results[index] = value; if (--remaining === 0) resolve(results); + }, reject)); + }) };`, + body: `await Promise.all([f.run('sleep 0.1; printf A'), f.run('printf B'), f.run('printf C')]); + await f.run('printf X >> effects');`, expected: 'X' }, + { name: 'module Promise class', preamble: `class Promise extends globalThis.Promise { + static all(values) { return super.all(values); } + }`, + body: `await Promise.all([f.run('sleep 0.1; printf A'), f.run('printf B'), f.run('printf C')]); + await f.run('printf X >> effects');`, expected: 'X' }, + { name: 'module Promise Native branches', preamble: `const Promise = { + all: globalThis.Promise.all.bind(globalThis.Promise), + };`, + body: `const left = async () => { await f.run('sleep 0.1; printf A'); await f.run('printf L >> effects'); }; + const right = async () => { await f.run('printf B'); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, expected: 'LR' }, + { name: 'imported Bluebird Promise Native branches', preamble: `import Promise from 'bluebird';`, + body: `const left = async () => { await f.run('sleep 0.1; printf A'); await f.run('printf L >> effects'); }; + const right = async () => { await f.run('printf B'); await f.run('printf R >> effects'); }; + await Promise.all([left(), right()]);`, expected: 'LR' }, + { name: 'empty async branches', preamble: '', + body: `const warm = async () => {}; + await Promise.all([warm(), warm()]); + await f.run('printf X >> effects');`, expected: 'X' }, + ])('keeps $name serial without replay across six resumes', async ({ name, preamble, body, expected }) => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +${preamble} +export default flow('serial-module-${name.replaceAll(' ', '-')}', async f => { + ${body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, `${name} stall`, 60_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort().join('')).toBe(expected); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('module-promise-mode-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ kind: 'relayflows.authored-root.v1', executionMode: 'serial' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort().join('')) + .toBe([...expected, 'Z'].sort().join('')); + await fixture.close(); + } + }, 240_000); + + it('keeps a Bluebird group of direct f.run calls serial across six resumes', async () => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +import Promise from 'bluebird'; +export default flow('serial-bluebird-direct', async f => { + await Promise.all([f.run('printf A >> effects'), f.run('printf B >> effects')]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, 'Bluebird direct stall', 60_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B']); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('bluebird-direct-mode-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ kind: 'relayflows.authored-root.v1', executionMode: 'serial' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect([0, 1]).toContain(resumed.status); + if (resumed.status !== 0) expect(resumed.stderr + resumed.stdout).toMatch(/unawaited_step/u); + const effects = [...readFileSync(`${fixture.root}/effects`, 'utf8')]; + for (const effect of ['A', 'B']) expect(effects.filter(item => item === effect)).toHaveLength(1); + await fixture.close(); + } + }, 240_000); + + it.each([ + { name: 'imported timer helper', delay: `const pause = () => sleep(300);`, wait: ` + await Promise.all([pause(), pause()]);` }, + { name: 'for-await timer', delay: `async function* paused() { await sleep(300); yield 1; }`, wait: ` + for await (const value of paused()) { void value; }` }, + ])('does not replay a completed effect after $name reorder', async ({ name, delay, wait }) => { + for (let repetition = 0; repetition < 6; repetition++) { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +import { setTimeout as sleep } from 'node:timers/promises'; +export default flow('serial-reorder-${name.replaceAll(' ', '-')}', async f => { + ${delay} + const late = async () => { ${wait} + await f.run('printf L >> effects'); + }; + const fast = async () => { + await f.run('sleep 0.2; printf A >> effects'); + await f.run('sleep 0.2; printf B >> effects'); + await f.run('printf C >> effects'); + }; + await Promise.all([fast(), late()]); + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = fixture.invokeAsync('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => existsSync(`${fixture.root}/stalled`) ? true : undefined, `${name} stall`, 60_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(['A', 'B', 'C', 'L']); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('reorder-mode-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ kind: 'relayflows.authored-root.v1', executionMode: 'serial' }); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect([0, 1]).toContain(resumed.status); + const effects = [...readFileSync(`${fixture.root}/effects`, 'utf8')]; + for (const effect of ['A', 'B', 'C', 'L']) expect(effects.filter(item => item === effect)).toHaveLength(1); + await fixture.close(); + } + }, 240_000); + + const legacyUpgradeCases = [ + { name: 'A1 nested joins', effects: ['L', 'R'], body: ` + const left = async () => { + await Promise.all([f.run('sleep 0.3; printf A'), f.run('printf B')]); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('sleep 0.3; printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'B1 chain beside join', effects: ['L', 'R'], body: ` + const left = async () => { + await f.run('printf A'); + await f.run('printf B'); + await f.run('printf L >> effects'); + }; + const right = async () => { + await Promise.all([f.run('printf C'), f.run('printf D')]); + await f.run('printf R >> effects'); + }; + await Promise.all([left(), right()]);` }, + { name: 'N2 independent dependents', effects: ['a', 'b', 'c'], body: ` + const a = async () => { await f.run('printf A'); await f.run('printf a >> effects'); }; + const b = async () => { await f.run('printf B'); await f.run('printf b >> effects'); }; + const c = async () => { await f.run('printf C'); await f.run('printf c >> effects'); }; + await Promise.all([a(), b(), c()]);` }, + ] as const; + for (const { name, effects, body } of legacyUpgradeCases) { + it.skipIf(process.env.RELAYFLOWS_PREVIOUS_CLI === undefined)( + `resumes 2.0.50 ${name} without replay`, async () => { + const fixture = chainFixture(); + closes.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('legacy-${name.replaceAll(' ', '-')}', async f => {${body} + await f.run('test -f release || { touch stalled; sleep 120; }; printf Z >> effects', { timeout: '5m' }); + f.done('success'); +}); +`); + const cli = spawn(process.execPath, [process.env.RELAYFLOWS_PREVIOUS_CLI, 'run', + '--no-observer-link', '--json', '--data-dir', fixture.data, fixture.flowPath, '--input', '{}'], + { cwd: fixture.root, stdio: 'pipe', env: { ...process.env, RELAYFLOWD_BIN: fixture.binary } }); + let cliOutput = ''; + cli.stdout?.on('data', chunk => { cliOutput += String(chunk); }); + cli.stderr?.on('data', chunk => { cliOutput += String(chunk); }); + const cliExited = new Promise(resolve => cli.once('exit', () => resolve())); + closes.push(async () => { + if (cli.exitCode === null && cli.signalCode === null) cli.kill('SIGKILL'); + await cliExited; + }); + await until(() => { + if (cli.exitCode !== null) throw new Error(`${name} old CLI exited before stall: ${cliOutput}`); + return existsSync(`${fixture.root}/stalled`) ? true : undefined; + }, `${name} legacy stall`, 120_000); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual(effects); + const rootRunId = runIds(fixture.data)[0]!; + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('legacy-parallel-upgrade-test'); + try { + const metadata = await readAuthoredRootMetadata(reader, rootRunId); + expect(metadata?.identityVersion).toBeUndefined(); + expect(metadata?.executionMode).toBeUndefined(); + } finally { reader.close(); } + cli.kill('SIGKILL'); + await cliExited; + killDaemon(fixture.data); + writeFileSync(`${fixture.root}/release`, ''); + const resumed = fixture.invoke('resume', '--no-observer-link', '--json', '--data-dir', fixture.data, rootRunId); + expect(resumed.status, resumed.stderr + resumed.stdout).toBe(0); + expect([...readFileSync(`${fixture.root}/effects`, 'utf8')].sort()).toEqual([...effects, 'Z'].sort()); + }, 240_000, + ); + } +}); diff --git a/packages/sdk/tests/authored-root.test.ts b/packages/sdk/tests/authored-root.test.ts index 2dafec039..621f9f3ae 100644 --- a/packages/sdk/tests/authored-root.test.ts +++ b/packages/sdk/tests/authored-root.test.ts @@ -89,6 +89,7 @@ class RootJournal { dispatchOnStart = true; dispatchLeaseMs = 30; resumeCalls = 0; + getCalls = 0; entries: Array> = []; readonly childEntries = new Map>>(); readonly streamed = new Map(); @@ -118,6 +119,11 @@ class RootJournal { } return this.resumeStatus; } + async runGet(runId: string) { + this.getCalls += 1; + return { run_id: runId, status: this.resumeStatus.status, steps: {}, + budget: { tokens_in: 0, tokens_out: 0, dollars: '0' } }; + } async journalRead(runId: string, fromSeq = 1): Promise<{ entries: Array> }> { // Numbered like the kernel's `journal.read`, so paginating readers // (`readOpenHumanWaits`) terminate against the fake too. @@ -155,6 +161,9 @@ describe('durable authored root', () => { it('journals exact source and Surface authority and completes the admitted root', async () => { const loaded = await fixture(); const journal = new RootJournal(); + // This case checks authority and completion, not lease renewal. A 30 ms + // fake lease can expire when the full CI suite pauses the event loop. + journal.dispatchLeaseMs = 30_000; const result = await executeDurableAuthoredFlow( loaded, journal as unknown as JournalClient, { topic: 'relay' }, @@ -172,9 +181,45 @@ describe('durable authored root', () => { }); expect(metadata.sourceSha256).toMatch(/^[a-f0-9]{64}$/u); expect(metadata.extensions).toEqual([]); + expect(metadata).toMatchObject({ identityVersion: 2, executionMode: 'serial' }); expect(journal.peer.completions).toEqual([{ attempt: 1, reason: 'success' }]); }); + it('pins a certified Promise.all run body to parallel mode before dispatch', async () => { + const body = async (f: Ctx) => { + await Promise.all([f.run('printf a'), f.run('printf b')]); + f.done('success'); + }; + const loaded = await fixture(false, 0, body); + await writeFile(loaded.sourcePath, + `import { flow } from '@relayflows/surface';\nexport default flow('flagship', ${Function.prototype.toString.call(body)});\n`); + const journal = new RootJournal(); + journal.startStatus = outcome(journal.runId, 'completed', 'success'); + journal.entries = [completedEntry()]; + await executeDurableAuthoredFlow(loaded, journal as unknown as JournalClient, undefined, + { dataDir: '/unused', admissionKey: 'certified-group' }); + const step = (journal.starts[0]!.spec as { steps: Array<{ instruction: string }> }).steps[0]!; + expect(JSON.parse(step.instruction)).toMatchObject({ + kind: 'relayflows.authored-root.parallel.v2', identityVersion: 2, executionMode: 'parallel', + }); + }); + + it('keeps a synthetic source unrelated to its in-memory body serial', async () => { + const loaded = await fixture(false, 0, async f => { + await Promise.all([f.run('printf a'), f.run('printf b')]); + f.done('success'); + }); + const journal = new RootJournal(); + journal.startStatus = outcome(journal.runId, 'completed', 'success'); + journal.entries = [completedEntry()]; + await executeDurableAuthoredFlow(loaded, journal as unknown as JournalClient, undefined, + { dataDir: '/unused', admissionKey: 'synthetic-source' }); + const step = (journal.starts[0]!.spec as { steps: Array<{ instruction: string }> }).steps[0]!; + expect(JSON.parse(step.instruction)).toMatchObject({ + kind: 'relayflows.authored-root.v1', identityVersion: 2, executionMode: 'serial', + }); + }); + it('stops waiting for a root re-dispatch when the caller cancels', async () => { // The root lease is lost (the daemon refuses the renewal), so the driver // waits up to 45s for the kernel to re-dispatch the root. A caller cancel @@ -598,6 +643,60 @@ describe('durable authored root', () => { expect(journal.peer.completions).toEqual([{ attempt: 2, reason: 'success' }]); }); + it('refuses an unsafe pinned parallel resume before dispatch without failing its root', async () => { + const loaded = await fixture(); + const journal = new RootJournal(); + const spawned = spawnedEntry(loaded); + const step = (spawned as { payload: { spec: { steps: Array<{ instruction: string }> } } }) + .payload.spec.steps[0]!; + step.instruction = JSON.stringify({ ...JSON.parse(step.instruction) as object, + kind: 'relayflows.authored-root.parallel.v2', identityVersion: 2, executionMode: 'parallel' }); + journal.entries = [spawned]; + const previous = process.env['NODE_OPTIONS']; + try { + process.env['NODE_OPTIONS'] = '--require=/tmp/preload.cjs'; + await expect(resumeDurableAuthoredFlow(journal.runId, journal as unknown as JournalClient, + { dataDir: '/unused' })).rejects.toMatchObject({ + code: 'unsafe_parallel_runtime', rootRunId: journal.runId, + }); + } finally { + if (previous === undefined) delete process.env['NODE_OPTIONS']; + else process.env['NODE_OPTIONS'] = previous; + } + expect(journal.resumeCalls).toBe(0); + expect(journal.getCalls).toBe(1); + expect(journal.peer.completions).toEqual([]); + }); + + it('reads a completed parallel root under a preload without dispatching it', async () => { + const loaded = await fixture(); + const journal = new RootJournal(); + const spawned = spawnedEntry(loaded); + const step = (spawned as { payload: { spec: { steps: Array<{ instruction: string }> } } }) + .payload.spec.steps[0]!; + step.instruction = JSON.stringify({ ...JSON.parse(step.instruction) as object, + kind: 'relayflows.authored-root.parallel.v2', identityVersion: 2, executionMode: 'parallel' }); + journal.entries = [spawned, completedEntry()]; + journal.resumeStatus = outcome(journal.runId, 'completed', 'success'); + const onRunReceipt = vi.fn(); + const previous = process.env['NODE_OPTIONS']; + try { + process.env['NODE_OPTIONS'] = '--require=/tmp/preload.cjs'; + await expect(resumeDurableAuthoredFlow(journal.runId, journal as unknown as JournalClient, + { dataDir: '/unused', lifecycle: { onRunReceipt } })).resolves.toMatchObject({ + rootRunId: journal.runId, completionReason: 'success', + }); + } finally { + if (previous === undefined) delete process.env['NODE_OPTIONS']; + else process.env['NODE_OPTIONS'] = previous; + } + expect(journal.getCalls).toBe(1); + expect(journal.resumeCalls).toBe(0); + expect(onRunReceipt).toHaveBeenCalledTimes(1); + expect(onRunReceipt).toHaveBeenCalledWith({ runId: journal.runId, flow: 'flagship' }); + expect(journal.peer.completions).toEqual([]); + }); + it('parks the root attempt on an unanswered f.human instead of completing it', async () => { const loaded = await fixture(false, 0, async f => { await f.human('Ship it?', { to: 'khaliq' }); f.done('success'); }); const journal = new RootJournal(); diff --git a/packages/sdk/tests/authored-status-detail.test.ts b/packages/sdk/tests/authored-status-detail.test.ts index 2c2bafdd6..bc749f374 100644 --- a/packages/sdk/tests/authored-status-detail.test.ts +++ b/packages/sdk/tests/authored-status-detail.test.ts @@ -9,7 +9,7 @@ import { mkdtempSync, rmSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { afterEach, describe, expect, it } from 'vitest'; -import { authoredVerdictOf, AUTHORED_ROOT_KIND } from '../src/authored-verdict.js'; +import { authoredVerdictOf, AUTHORED_PARALLEL_ROOT_KIND, AUTHORED_ROOT_KIND } from '../src/authored-verdict.js'; import { canonicalize } from '../src/canonical.js'; import { parseStatusArgs, runStatus, type StatusOptions } from '../src/cli/status.js'; import type { JournalEvent } from '../src/journal-client.js'; @@ -87,6 +87,8 @@ describe('projecting the authored verdict out of a root journal', () => { it('reads the verdict and its detail', () => { expect(authoredVerdictOf(journal({ detail: FINDING }))) .toEqual({ reason: 'step_failed', detail: FINDING }); + expect(authoredVerdictOf(journal({ kind: AUTHORED_PARALLEL_ROOT_KIND, detail: FINDING }))) + .toEqual({ reason: 'step_failed', detail: FINDING }); }); it('reads a verdict with no detail, and reports no detail key', () => { diff --git a/packages/sdk/tests/authored-step-graph.test.ts b/packages/sdk/tests/authored-step-graph.test.ts index 362a54cf9..234a7f867 100644 --- a/packages/sdk/tests/authored-step-graph.test.ts +++ b/packages/sdk/tests/authored-step-graph.test.ts @@ -72,6 +72,26 @@ async function graphOf(body: (op: Op) => Promise, { stepsFail = false } = const after = (...labels: string[]) => ({ after: labels.sort(), truncated: false }); describe('the authored step DAG', () => { + it('marks race, any, and rejected all as unsafe parallel frontiers', () => { + for (const kind of ['race', 'any', 'all'] as const) { + const aggregate = kind === 'all' ? Promise.reject(new Error('failed')) : Promise.resolve('winner'); + void aggregate.catch(() => {}); + const graph = new AuthoredStepGraph(id => id === 2 ? [1] : []); + graph.registerAggregate(1, aggregate, kind, kind === 'all' ? [4] : []); + expect(graph.predecessorsAt(2).unregisteredAggregate, kind).toBe(true); + } + }); + + it('does not trust a user-built join merely because it is a combinator member', () => { + const graph = new AuthoredStepGraph(id => id === 3 ? [2] : [], undefined, id => id === 2); + graph.registerAggregate(1, Promise.resolve(), 'all', [2]); + expect(graph.predecessorsAt(3).unregisteredAggregate).toBe(true); + const certified = new AuthoredStepGraph(id => id === 3 ? [2] : [], undefined, id => id === 2); + certified.registerAggregate(1, Promise.resolve(), 'all', [2]); + certified.certifyMember(2); + expect(certified.predecessorsAt(3).unregisteredAggregate).toBe(false); + }); + it('draws no edge between siblings of a parallel fan-out', async () => { const graph = await graphOf(async (op) => { const a = op('a', 15); diff --git a/packages/sdk/tests/authored-step-secrets-live.test.ts b/packages/sdk/tests/authored-step-secrets-live.test.ts index 3c504aa9d..983133efa 100644 --- a/packages/sdk/tests/authored-step-secrets-live.test.ts +++ b/packages/sdk/tests/authored-step-secrets-live.test.ts @@ -1,5 +1,8 @@ -import { readFileSync, writeFileSync } from 'node:fs'; +import { readFileSync, readdirSync, writeFileSync } from 'node:fs'; import { afterEach, expect, it } from 'vitest'; +import { JournalClient } from '../src/journal-client.js'; +import { socketPathFor } from '../src/daemon-connection.js'; +import { readAuthoredRootMetadata } from '../src/authored-root.js'; import { chainFixture } from './flow-chain-fixture.js'; const cleanup: Array<() => Promise> = []; @@ -39,3 +42,43 @@ export default flow('scoped-shell', async f => { expect(JSON.parse(readFileSync(`${fixture.root}/observed.json`, 'utf8'))) .toEqual({ plain: ':', granted: 'native-secret' }); }, 60_000); + +it('parallel authored shell children keep their own secret grants', async () => { + const fixture = chainFixture(); + cleanup.push(() => fixture.close()); + writeFileSync(fixture.flowPath, `import { flow } from '@relayflows/surface'; +export default flow('parallel-scoped-shell', async f => { + const outputs = await Promise.all([ + f.run('printf %s "$NATIVE_API_TOKEN"'), + f.run('printf %s "$NATIVE_API_TOKEN"', { secrets: ['NATIVE_API_TOKEN'] }), + ]); + await f.run('printf "%s:%s" "' + outputs[0] + '" "' + outputs[1] + '" > observed.txt'); + f.done('success'); +}); +`); + const previousToken = process.env.NATIVE_API_TOKEN; + const previousManifest = process.env.RELAY_SECRET_ENV_NAMES; + process.env.NATIVE_API_TOKEN = 'parallel-secret'; + process.env.RELAY_SECRET_ENV_NAMES = '["NATIVE_API_TOKEN"]'; + let result; + try { + result = fixture.invoke('run', '--no-observer-link', '--json', '--data-dir', fixture.data, + fixture.flowPath, '--input', '{}'); + } finally { + if (previousToken === undefined) delete process.env.NATIVE_API_TOKEN; + else process.env.NATIVE_API_TOKEN = previousToken; + if (previousManifest === undefined) delete process.env.RELAY_SECRET_ENV_NAMES; + else process.env.RELAY_SECRET_ENV_NAMES = previousManifest; + } + expect(result.status, result.stderr + result.stdout).toBe(0); + expect(readFileSync(`${fixture.root}/observed.txt`, 'utf8')).toBe(':parallel-secret'); + const rootRunId = readdirSync(`${fixture.data}/runs`).find(name => name.endsWith('.sqlite3'))! + .slice(0, -'.sqlite3'.length); + const reader = new JournalClient(socketPathFor(fixture.data)); + await reader.connect(); + await reader.hello('parallel-secret-mode-test'); + try { + expect(await readAuthoredRootMetadata(reader, rootRunId)) + .toMatchObject({ executionMode: 'parallel' }); + } finally { reader.close(); } +}, 60_000); diff --git a/packages/sdk/tests/f-memory.test.ts b/packages/sdk/tests/f-memory.test.ts index 4d15431a2..6fcd8af02 100644 --- a/packages/sdk/tests/f-memory.test.ts +++ b/packages/sdk/tests/f-memory.test.ts @@ -26,6 +26,7 @@ import { AuthoredFlowExecutionError } from '../src/authored-flow-error.js'; import { emptyReport, memoryWriteFailure } from '../src/cli/run.js'; import { JournalClient } from '../src/journal-client.js'; import { preflightMemory } from '../src/preflight.js'; +import { WorkerSlots } from '../src/worker-slots.js'; let dir: string; let scope: string; @@ -37,7 +38,7 @@ beforeEach(() => { execFileSync(process.execPath, [fileURLToPath(new URL('../../../testdata/memory/seed.mjs', import.meta.url)), dbPath, scope]); vi.stubEnv('AI_HIST_DB', dbPath); }); -afterEach(() => { vi.unstubAllEnvs(); rmSync(dir, { recursive: true, force: true }); }); +afterEach(() => { vi.restoreAllMocks(); vi.unstubAllEnvs(); rmSync(dir, { recursive: true, force: true }); }); /** The daemon's stream storage, with the kernel's paging contract (`engine/remote.rs` `read_stream`). */ function streamStore() { @@ -362,6 +363,7 @@ it('publishes the first commit when another attempt on the root committed the sa }); it('lets an in-flight learn land before a body without done() hands the root back', async () => { + const closeSlots = vi.spyOn(WorkerSlots.prototype, 'close'); let release!: () => void; const gate = new Promise(resolve => { release = resolve; }); const realAppend = store.streamAppend.bind(store); @@ -377,12 +379,14 @@ it('lets an in-flight learn land before a body without done() hands the root bac void incomplete.catch(() => { settled = true; }); await new Promise(resolve => setTimeout(resolve, 100)); expect(settled).toBe(false); + expect(closeSlots).toHaveBeenCalledWith(expect.objectContaining({ code: 'missing_completion' })); release(); await expect(incomplete).rejects.toMatchObject({ code: 'missing_completion' }); expect(store.list('root-1', MEMORY_LEARN_STREAM)).toHaveLength(1); }); it('lets an in-flight learn land before a failed body hands the root back', async () => { + const closeSlots = vi.spyOn(WorkerSlots.prototype, 'close'); let release!: () => void; const gate = new Promise(resolve => { release = resolve; }); const realAppend = store.streamAppend.bind(store); @@ -399,6 +403,9 @@ it('lets an in-flight learn land before a failed body hands the root back', asyn void failing.catch(() => { settled = true; }); await new Promise(resolve => setTimeout(resolve, 100)); expect(settled).toBe(false); + // Closing the deterministic/worker queues must not wait for the memory + // commit: otherwise a queued command can be admitted after body failure. + expect(closeSlots).toHaveBeenCalledWith(expect.objectContaining({ message: 'body failed' })); release(); await expect(failing).rejects.toThrow('body failed'); expect(store.list('root-1', MEMORY_LEARN_STREAM)).toHaveLength(1); diff --git a/packages/sdk/tests/journal-client-step-env.test.ts b/packages/sdk/tests/journal-client-step-env.test.ts index df95e0867..16ddd8343 100644 --- a/packages/sdk/tests/journal-client-step-env.test.ts +++ b/packages/sdk/tests/journal-client-step-env.test.ts @@ -206,3 +206,41 @@ it('refuses a grant absent from the delivered-name manifest before run.start', a rmSync(path, { force: true }); } }); + +it('checks isolated run grants against the peer handshake before admission', async () => { + const path = sockPath(); + let hellos = 0; + let starts = 0; + const server = startLoopback(path, { + hello: ctx => { + hellos++; + sendResult(ctx, { protocol: 0, server: 'relayflowd', + features: ['step_env', 'step_secret_scoping'], det_withheld: ['HIDDEN_SECRET'] }); + }, + 'run.start': ctx => { starts++; sendResult(ctx, { run_id: 'run-01', status: 'completed' }); }, + }); + const client = new JournalClient(path); + const priorToken = process.env.HIDDEN_SECRET; + const priorManifest = process.env.RELAY_SECRET_ENV_NAMES; + process.env.HIDDEN_SECRET = 'withheld-value'; + process.env.RELAY_SECRET_ENV_NAMES = '["HIDDEN_SECRET"]'; + try { + await client.connect(); + await client.hello('isolated-secret-grant'); + const spec = { ...HELLO_SPEC, steps: [ + { ...HELLO_SPEC.steps[0]!, secrets: ['HIDDEN_SECRET'] }, + ] }; + await expect(client.runStart(spec, undefined, undefined, false, true)) + .rejects.toThrow('withheld by the daemon'); + expect(hellos).toBe(2); + expect(starts).toBe(0); + } finally { + if (priorToken === undefined) delete process.env.HIDDEN_SECRET; + else process.env.HIDDEN_SECRET = priorToken; + if (priorManifest === undefined) delete process.env.RELAY_SECRET_ENV_NAMES; + else process.env.RELAY_SECRET_ENV_NAMES = priorManifest; + client.close(); + await new Promise(resolve => server.close(() => resolve())); + rmSync(path, { force: true }); + } +});