From 572f89a6f2b20d2123d57a58b84684d86b543a3b Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Fri, 18 Sep 2026 22:17:15 -0400 Subject: [PATCH] Read the tools, question details, script and condition off Petri's records The Fabro halves of D1, D2 and D3. A stage's `agent_tools` is the union, by name, of the `attractor.tools` payloads its native sessions record, with `invoked` flipped by the envelope's `ToolCallStarted`; the payload carries Petri's origin category, so Pebble's category is `subagent` for a sub-agent tool and `other` for the rest. A pending question carries each option's description and preview and the question's context, and its reference as the review target when Fabro's validation admits it; the interview dock and the Q&A renderer show the previews beside the descriptions, and the attach prompt prints both under each choice. The web's command view reads the script from the node's `meta.script`, the decision renderer the matched condition from `meta.edges[edge].condition`, and `run events --pretty` prints the condition on the transition line and one line per session naming its tool count. The command view notes what the output capture did not keep, from the final `step.finished` loss metrics. The web fixtures are recaptured at the pin, so they carry the new facts. VIEWS.md loses the two gap rows Petri filled and names the sources; the README's list of what the fold leaves default shrinks to match. Co-Authored-By: Claude Fable 5.1 --- .../app/components/interview-dock.test.tsx | 11 +- .../app/components/interview-dock.tsx | 12 +- .../components/stage-renderers/human-qa.tsx | 5 + apps/fabro-web/app/lib/petri-stream.test.ts | 109 + apps/fabro-web/app/lib/petri-stream.ts | 73 +- apps/fabro-web/app/routes/run-stages.tsx | 13 + .../app/test-fixtures/petri/command.json | 1357 ++-- .../app/test-fixtures/petri/gate.json | 1560 +++-- .../app/test-fixtures/petri/hello.json | 1933 +++-- .../app/test-fixtures/petri/parallel.json | 6187 +++++++++-------- lib/apps/fabro-cli/src/commands/run/attach.rs | 11 + .../src/commands/run/petri_stream.rs | 84 +- lib/components/fabro-petri/README.md | 32 +- lib/components/fabro-petri/VIEWS.md | 18 +- lib/components/fabro-petri/src/projection.rs | 95 +- .../fabro-petri/tests/host_tools.rs | 116 +- .../fabro-petri/tests/projection.rs | 96 +- 17 files changed, 6924 insertions(+), 4788 deletions(-) diff --git a/apps/fabro-web/app/components/interview-dock.test.tsx b/apps/fabro-web/app/components/interview-dock.test.tsx index e3eb1e5ed..c3006a024 100644 --- a/apps/fabro-web/app/components/interview-dock.test.tsx +++ b/apps/fabro-web/app/components/interview-dock.test.tsx @@ -191,7 +191,7 @@ describe("InterviewDock", () => { expect(buttons.Revise).toBeDefined(); }); - test("multiple choice renders option descriptions as display text", () => { + test("multiple choice renders option descriptions and previews as display text", () => { const question = makeQuestion({ question_type: QuestionType.MULTIPLE_CHOICE, options: [ @@ -201,6 +201,7 @@ describe("InterviewDock", () => { description: "Deploy the current patch", preview: "not rendered specially", }, + { key: "R", label: "[R] Revise" }, ], }); const tree = render( @@ -209,7 +210,13 @@ describe("InterviewDock", () => { const text = textContent(tree.toJSON()); expect(text).toContain("Approve"); expect(text).toContain("Deploy the current patch"); - expect(text).not.toContain("not rendered specially"); + // The preview is shown as the text it is, never parsed as markup. + expect(text).toContain("not rendered specially"); + const previews = tree.root.findAll( + (node) => node.props["data-testid"] === "interview-option-preview", + ); + expect(previews).toHaveLength(1); + expect(shouldStackOptions(question.options ?? [])).toBe(true); }); test("freeform question renders a textarea and disables send when empty", () => { diff --git a/apps/fabro-web/app/components/interview-dock.tsx b/apps/fabro-web/app/components/interview-dock.tsx index ddf900daf..705d3342d 100644 --- a/apps/fabro-web/app/components/interview-dock.tsx +++ b/apps/fabro-web/app/components/interview-dock.tsx @@ -309,7 +309,9 @@ function ConfirmationBody({ export function shouldStackOptions(options: InterviewOption[]): boolean { return options.some( (option) => - option.label.length > STACK_LABEL_LENGTH || Boolean(option.description), + option.label.length > STACK_LABEL_LENGTH || + Boolean(option.description) || + Boolean(option.preview), ); } @@ -465,6 +467,14 @@ function OptionLabel({ option }: { option: InterviewOption }) { {option.description} )} + {option.preview && ( + + {option.preview} + + )} ); } diff --git a/apps/fabro-web/app/components/stage-renderers/human-qa.tsx b/apps/fabro-web/app/components/stage-renderers/human-qa.tsx index a5e1f854f..f8dd09e84 100644 --- a/apps/fabro-web/app/components/stage-renderers/human-qa.tsx +++ b/apps/fabro-web/app/components/stage-renderers/human-qa.tsx @@ -200,6 +200,11 @@ function QuestionBlock({ {option.description} )} + {option.preview && ( + + {option.preview} + + )} ))} diff --git a/apps/fabro-web/app/lib/petri-stream.test.ts b/apps/fabro-web/app/lib/petri-stream.test.ts index dbe7d9e37..799477e80 100644 --- a/apps/fabro-web/app/lib/petri-stream.test.ts +++ b/apps/fabro-web/app/lib/petri-stream.test.ts @@ -1,9 +1,12 @@ import { describe, expect, test } from "bun:test"; import { loadPetriFixture } from "./petri-fixtures"; +import type { RunStreamItem } from "@qltysh/fabro-api-client"; + import { agentEnvelopesOf, commandOutcomeOf, + commandScriptOf, debugRowsFromStream, deriveRunPhasesFromStream, extractPetriStageContext, @@ -12,6 +15,8 @@ import { isTerminalLifecycleItem, itemsForStage, parallelOverviewFromProjection, + matchedCondition, + outputLossNote, parsePetriInterviewPairs, petriEventName, petriStageLabel, @@ -201,9 +206,113 @@ describe("stage renderers", () => { test("a command stage's outcome is read from its final step.finished", () => { const say = itemsForStage(command.stream, "say@1"); expect(commandOutcomeOf(say).exitCode).toBe(0); + expect(commandOutcomeOf(say).outputLoss).toBeNull(); expect(extractPetriStageContext(say)).toBeNull(); }); + test("an agent stage's projection lists the tools its session was offered", () => { + const names = (hello.projection.stages["greet@1"]?.agent_tools ?? []).map((tool) => tool.name); + expect(names).toContain("read_file"); + expect(names).toContain("shell"); + expect(names).toContain("request_user_input"); + expect(hello.projection.stages["start@1"]?.agent_tools ?? []).toEqual([]); + }); + + test("a command stage's script rides on its node's meta", () => { + const say = itemsForStage(command.stream, "say@1"); + expect(commandScriptOf(say)).toBe("echo hello from petri"); + expect(commandScriptOf(itemsForStage(command.stream, "start@1"))).toBeNull(); + }); + + test("the condition an edge matched is read from the node's edge table", () => { + const applied = (edge: number): RunStreamItem => ({ + run_id: "run", + stream_seq: 9, + kind: "petri", + id: "9", + recorded_at: 1_789_706_579_000, + item: { + id: { log: "execution", execution: 0, seq: 9, index: 0 }, + origin: "core", + context: { invocation: 0, execution: 0 }, + subject: { + node: { + id: 2, + name: "build", + kind: "attractor/command", + meta: { + kind: "command", + edges: { + "0": { to: "ok", label: null, condition: "outcome=succeeded" }, + "1": { to: "bad", label: null }, + }, + }, + }, + firing: 2, + visit: 1, + attempt: 1, + generation: 0, + branch: { role: "none" }, + }, + record: { + seq: 9, + body: { event: "route.applied", kind: "edge", firing: 2, group: 0, edge }, + }, + derived: { target: { name: edge === 0 ? "ok" : "bad" }, transition: "Continue", back: false }, + }, + }); + expect(matchedCondition(applied(0))).toBe("outcome=succeeded"); + expect(matchedCondition(applied(1))).toBeUndefined(); + expect(findPetriEdgeForStage([applied(0)], "build@1")).toEqual({ + fromNode: "build", + toNode: "ok", + reason: "condition", + condition: "outcome=succeeded", + isJump: false, + }); + }); + + test("a command's output loss is read from its metrics and worded for the view", () => { + const finished = (custom: Record): RunStreamItem => ({ + run_id: "run", + stream_seq: 5, + kind: "petri", + id: "5", + recorded_at: 1_789_706_579_000, + item: { + id: { log: "execution", execution: 0, seq: 5, index: 0 }, + origin: "external", + context: { invocation: 0, execution: 0 }, + subject: { node: { id: 2, name: "say", kind: "attractor/command", meta: { kind: "command" } }, firing: 2, visit: 1, attempt: 1, generation: 0, branch: { role: "none" } }, + record: { + seq: 5, + body: { + event: "step.finished", + firing: 2, + attempt: 1, + outcome: { + status: "success", + output: { stdout: "x", exit_status: 0 }, + metrics: { duration_ms: 3, exit_code: 0, custom }, + }, + }, + }, + derived: { final: true, exhausted: false }, + }, + }); + expect(commandOutcomeOf([finished({})]).outputLoss).toBeNull(); + const cut = commandOutcomeOf([ + finished({ "output.dropped_bytes": 2048, "output.truncated_lines": 1 }), + ]).outputLoss; + expect(cut).toEqual({ droppedBytes: 2048, truncatedLines: 1, incomplete: false }); + expect(outputLossNote(cut)).toBe("Output truncated: 2,048 bytes dropped, 1 line cut"); + const silent = commandOutcomeOf([finished({ "output.incomplete": true })]).outputLoss; + expect(outputLossNote(silent)).toBe( + "Output may be incomplete: the capture ended on silence, so the tail may be missing", + ); + expect(outputLossNote(null)).toBeNull(); + }); + test("an agent stage's Pebble envelopes are read with their variant and session", () => { const envelopes = agentEnvelopesOf(itemsForStage(hello.stream, "greet@1")); expect(envelopes.length).toBeGreaterThan(0); diff --git a/apps/fabro-web/app/lib/petri-stream.ts b/apps/fabro-web/app/lib/petri-stream.ts index 6721488c8..a1b71b0cf 100644 --- a/apps/fabro-web/app/lib/petri-stream.ts +++ b/apps/fabro-web/app/lib/petri-stream.ts @@ -499,12 +499,13 @@ export function findPetriEdgeForStage( if (petriStageLabel(item) !== stageLabel) continue; const target = getString(getObject(derived(item), "target"), "name"); if (!target) continue; - const kind = getString(petriBody(item), "kind") ?? "edge"; + const body = petriBody(item); + const kind = getString(body, "kind") ?? "edge"; latest = { fromNode: getString(subjectNode(item), "name") ?? stageLabel, toNode: target, reason: kind === "jump" ? "jump" : "condition", - condition: null, + condition: matchedCondition(item) ?? null, isJump: kind === "jump", }; } @@ -633,28 +634,56 @@ export function agentEnvelopesOf(items: PetriStream): PetriAgentEnvelope[] { return out; } -/** A command stage's script, from its `step.started` record, if recorded. */ +/** + * The condition a `route.applied` item's edge matched, as written: the + * record's `edge` keys the subject node's `meta.edges`, whose entry carries + * the edge's `condition` when it has one (EVENTS.md "Source metadata"). + */ +export function matchedCondition(item: RunStreamItem): string | undefined { + const edge = getNumber(petriBody(item), "edge"); + if (edge === undefined) return undefined; + const edges = getObject(getObject(subjectNode(item), "meta"), "edges"); + return getString(getObject(edges, String(edge)), "condition"); +} + +/** + * A command stage's script: the text the step runs rides on the node's + * `meta.script`, on every event of the stage (EVENTS.md "Source metadata"). + */ export function commandScriptOf(items: PetriStream): string | null { for (const item of items) { - if (petriEventName(item) !== "step.started") continue; - const script = - getString(getObject(petriBody(item), "config"), "script") ?? - getString(getObject(getObject(subjectNode(item), "meta"), "config"), "script"); + const script = getString(getObject(subjectNode(item), "meta"), "script"); if (script) return script; } return null; } /** - * The exit code and duration of the stage's final `step.finished`: the - * command step's output carries `exit_status`, its metrics the duration. + * What a command's output capture did not keep, from the final + * `step.finished` metrics: `output.dropped_bytes` and + * `output.truncated_lines` count what the caps cut; `output.incomplete` + * says the capture ended on silence, so the tail may be missing by an + * amount nobody counted. Absent when the output is whole. + */ +export interface CommandOutputLoss { + droppedBytes: number; + truncatedLines: number; + incomplete: boolean; +} + +/** + * The exit code, duration and output loss of the stage's final + * `step.finished`: the command step's output carries `exit_status`, its + * metrics the duration and the loss counters under `custom`. */ export function commandOutcomeOf(items: PetriStream): { exitCode: number | null; durationMs: number; + outputLoss: CommandOutputLoss | null; } { let exitCode: number | null = null; let durationMs = 0; + let outputLoss: CommandOutputLoss | null = null; for (const item of items) { if (petriEventName(item) !== "step.finished") continue; const outcome = getObject(petriBody(item), "outcome"); @@ -663,8 +692,32 @@ export function commandOutcomeOf(items: PetriStream): { exitCode = getNumber(output, "exit_status") ?? getNumber(metrics, "exit_code") ?? exitCode; durationMs = getNumber(metrics, "duration_ms") ?? durationMs; + const custom = getObject(metrics, "custom"); + const droppedBytes = getNumber(custom, "output.dropped_bytes") ?? 0; + const truncatedLines = getNumber(custom, "output.truncated_lines") ?? 0; + const incomplete = getBool(custom, "output.incomplete") === true; + outputLoss = + droppedBytes > 0 || truncatedLines > 0 || incomplete + ? { droppedBytes, truncatedLines, incomplete } + : null; } - return { exitCode, durationMs }; + return { exitCode, durationMs, outputLoss }; +} + +/** The one-line note the stage view shows beside output that is not whole. */ +export function outputLossNote(loss: CommandOutputLoss | null): string | null { + if (!loss) return null; + const parts: string[] = []; + if (loss.droppedBytes > 0) { + parts.push(`${loss.droppedBytes.toLocaleString()} bytes dropped`); + } + if (loss.truncatedLines > 0) { + parts.push(`${loss.truncatedLines} ${loss.truncatedLines === 1 ? "line" : "lines"} cut`); + } + const counted = parts.length > 0 ? `Output truncated: ${parts.join(", ")}` : null; + if (!loss.incomplete) return counted; + const tail = "the capture ended on silence, so the tail may be missing"; + return counted ? `${counted}; ${tail}` : `Output may be incomplete: ${tail}`; } // ── Stages from the projection ────────────────────────────────────────── diff --git a/apps/fabro-web/app/routes/run-stages.tsx b/apps/fabro-web/app/routes/run-stages.tsx index 68ee296b0..49271cd4e 100644 --- a/apps/fabro-web/app/routes/run-stages.tsx +++ b/apps/fabro-web/app/routes/run-stages.tsx @@ -83,6 +83,7 @@ import { agentEnvelopesOf, commandOutcomeOf, commandScriptOf, + outputLossNote, debugRowSearchText, debugRowsFromStream, extractPetriStageContext, @@ -91,6 +92,7 @@ import { parallelOverviewFromProjection, parsePetriInterviewPairs, reducerTranscriptFromProjection, + type CommandOutputLoss, type DebugRow, } from "../lib/petri-stream"; import { @@ -156,6 +158,8 @@ type TurnType = exitCode: number | null; durationMs: number; outputBytes: number; + /** What the capture did not keep, or null when the output is whole. */ + outputLoss: CommandOutputLoss | null; }; type CommandTurn = Extract; @@ -353,6 +357,7 @@ export function buildPetriStageActivity( exitCode: outcome.exitCode, durationMs: outcome.durationMs || (stage?.timing?.wall_time_ms ?? 0), outputBytes: stage?.output_bytes ?? 0, + outputLoss: outcome.outputLoss, }); } return { turns, pendingTools: [] }; @@ -1510,6 +1515,14 @@ function CommandLogs({ byteCount={turn.outputBytes} enabled={!turn.running} /> + {outputLossNote(turn.outputLoss) && ( +

+ {outputLossNote(turn.outputLoss)} +

+ )} ); } diff --git a/apps/fabro-web/app/test-fixtures/petri/command.json b/apps/fabro-web/app/test-fixtures/petri/command.json index 1c3917773..318c91652 100644 --- a/apps/fabro-web/app/test-fixtures/petri/command.json +++ b/apps/fabro-web/app/test-fixtures/petri/command.json @@ -1,9 +1,9 @@ { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "projection": { "title": "Run one command", "spec": { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "settings": { "project": { "name": null, @@ -17,7 +17,10 @@ "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Run one command" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -108,11 +111,11 @@ "graph": { "name": "Command", "nodes": { - "start": { - "id": "start", + "exit": { + "id": "exit", "attrs": { "shape": { - "String": "Mdiamond" + "String": "Msquare" } } }, @@ -127,11 +130,11 @@ } } }, - "exit": { - "id": "exit", + "start": { + "id": "start", "attrs": { "shape": { - "String": "Msquare" + "String": "Mdiamond" } } } @@ -159,9 +162,9 @@ "workflow_version_id": "a65150b821e21c843ede6b06fe0ed2bc6af498746a3c6883f1ee4328ef6d5c55", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpQt0Lng" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpYIWEW2" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpQt0Lng", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpYIWEW2", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -176,96 +179,261 @@ "auth_method": "dev_token" } }, - "spec_blob": "d2186231edf780f52421815b48f031fc4c4686c140db567df03a5837556a0f75", - "engine": { - "kind": "petri", + "definition_blob": "fff4c863e54b2c6f58114f6c1c3039484f599a6bf77caf4b3ad634dc979edc07", + "spec_blob": "fd9e919594704212a1b22f6ee8042c4583fc745461ffc0a2594e32f550e43d7c", + "admission": { "graph": { - "blob": "e9b2cc84938eeb7fadc0d5e44314892be1f39c1b8e4db8fba5b81694d82aa067", - "digest": "e9b2cc84938eeb7fadc0d5e44314892be1f39c1b8e4db8fba5b81694d82aa067" + "blob": "b5e4170486a4d9c27e63be7cf8ff32f0bb1451e44b54de89c0988372278eb89f", + "digest": "b5e4170486a4d9c27e63be7cf8ff32f0bb1451e44b54de89c0988372278eb89f" } } }, - "web_url": "http://localhost:3000/runs/01M2SG2E0BWG00ZBC6CHDAXKKF", + "web_url": "http://localhost:3000/runs/01M2VPKCKWSE3QXM9BACCRE4WH", "start": { - "start_time": "2026-09-18T05:33:16.738Z" + "start_time": "2026-09-19T02:05:53.017Z", + "run_branch": "fabro/run/01M2VPKCKWSE3QXM9BACCRE4WH", + "base_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e" }, "status": { "kind": "succeeded", "reason": "completed" }, - "status_updated_at": "2026-09-18T05:33:17.309Z", - "last_event_at": "2026-09-18T05:33:17.313Z", + "status_updated_at": "2026-09-19T02:05:55.521Z", + "last_event_at": "2026-09-19T02:05:55.530Z", "pending_control": null, "checkpoints": [ { - "seq": 23, + "seq": 26, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.013Z", + "timestamp": "2026-09-19T02:05:53.896Z", "current_node": "start", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "1ccfea3fb3759c0e78bfe36cb4c2ea7ff0833690" + "git_commit_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e" }, "diff": {} }, { - "seq": 41, + "seq": 39, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.151Z", + "timestamp": "2026-09-19T02:05:54.776Z", "current_node": "say", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "7c85082eb6f054de8419db6cf2f554a45c8e44e1" + "git_commit_sha": "78a882a8aaa5801d29d6530a93bd5ae2174bd620" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 50, + "seq": 51, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.243Z", + "timestamp": "2026-09-19T02:05:55.390Z", "current_node": "exit", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "306ef7b47756945135e5000efefd4005395cbd1b" + "git_commit_sha": "0ef9095fa220a5cc176e543afc234f6a24b11878" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } } ], "conclusion": { - "timestamp": "2026-09-18T05:33:17.309Z", + "timestamp": "2026-09-19T02:05:55.521Z", "status": "succeeded", "timing": { - "wall_time_ms": 571, + "wall_time_ms": 2504, "inference_time_ms": 0, - "tool_time_ms": 35, - "active_time_ms": 35 + "tool_time_ms": 55, + "active_time_ms": 55 }, - "final_git_commit_sha": "306ef7b47756945135e5000efefd4005395cbd1b", + "final_git_commit_sha": "0ef9095fa220a5cc176e543afc234f6a24b11878", + "stages": [ + { + "stage_id": "start", + "stage_label": "start", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "say", + "stage_label": "say", + "timing": { + "wall_time_ms": 55, + "inference_time_ms": 0, + "tool_time_ms": 55, + "active_time_ms": 55 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "exit", + "stage_label": "exit", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + } + ], "total_retries": 0, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, "sandbox": { - "kind": "planned", + "kind": "ready", "plan": { "provider": "local" + }, + "instance": { + "provider": "local", + "runtime": { + "id": "host-g18d696a8a8a7c818-1384-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2VPKCA7SYSXQZTCMFT1Z9SV/storage/scratch/20260918-01M2VPKCKWSE3QXM9BACCRE4WH/petri/scopes/invocation-0-scope-0/work" + }, + "ready_duration_ms": 65, + "retained": true } }, "pull_request": null, "superseded_by": null, + "git_identity": { + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, "pending_interviews": {}, "stages": { - "exit@1": { - "first_event_seq": 469, + "say@1": { + "first_event_seq": 1262, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.243Z" + "timestamp": "2026-09-19T02:05:54.618Z" + }, + "provider_used": null, + "diff": null, + "script_invocation": null, + "script_timing": null, + "parallel_results": null, + "output": "hello from petri\n", + "output_bytes": 17, + "live_streaming": false, + "termination": "exited", + "started_at": "2026-09-19T02:05:53.897Z", + "handler": "command", + "graph_visit": 1, + "timing": { + "wall_time_ms": 55, + "inference_time_ms": 0, + "tool_time_ms": 55, + "active_time_ms": 55 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "state": "succeeded" + }, + "start@1": { + "first_event_seq": 389, + "prompt": null, + "response": null, + "completion": { + "outcome": "succeeded", + "notes": null, + "failure_reason": null, + "timestamp": "2026-09-19T02:05:53.867Z" + }, + "provider_used": null, + "diff": null, + "script_invocation": null, + "script_timing": null, + "parallel_results": null, + "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpYIWEW2 is not a Git repository; the workspace starts empty\n", + "output_bytes": 130, + "live_streaming": false, + "termination": "exited", + "started_at": "2026-09-19T02:05:53.024Z", + "handler": "start", + "graph_visit": 1, + "timing": { + "wall_time_ms": 80, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "state": "succeeded" + }, + "exit@1": { + "first_event_seq": 2142, + "prompt": null, + "response": null, + "completion": { + "outcome": "succeeded", + "notes": null, + "failure_reason": null, + "timestamp": "2026-09-19T02:05:55.285Z" }, "provider_used": null, "diff": null, @@ -275,7 +443,7 @@ "output": null, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.151Z", + "started_at": "2026-09-19T02:05:54.777Z", "handler": "exit", "graph_visit": 1, "timing": { @@ -294,101 +462,23 @@ } }, "state": "succeeded" - }, - "start@1": { - "first_event_seq": 60, - "prompt": null, - "response": null, - "completion": { - "outcome": "succeeded", - "notes": null, - "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.013Z" - }, - "provider_used": null, - "diff": null, - "script_invocation": null, - "script_timing": null, - "parallel_results": null, - "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpQt0Lng is not a Git repository; the workspace starts empty\n", - "output_bytes": 130, - "live_streaming": false, - "termination": "exited", - "started_at": "2026-09-18T05:33:16.742Z", - "handler": "start", - "graph_visit": 1, - "timing": { - "wall_time_ms": 10, - "inference_time_ms": 0, - "tool_time_ms": 0, - "active_time_ms": 0 - }, - "usage": { - "tokens": { - "input": 0, - "output": 0, - "reasoning": 0, - "cache_read": 0, - "cache_write": 0 - } - }, - "state": "succeeded" - }, - "say@1": { - "first_event_seq": 332, - "prompt": null, - "response": null, - "completion": { - "outcome": "succeeded", - "notes": null, - "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.151Z" - }, - "provider_used": null, - "diff": null, - "script_invocation": null, - "script_timing": null, - "parallel_results": null, - "output": "hello from petri\n", - "output_bytes": 17, - "live_streaming": false, - "termination": "exited", - "started_at": "2026-09-18T05:33:17.014Z", - "handler": "command", - "graph_visit": 1, - "timing": { - "wall_time_ms": 35, - "inference_time_ms": 0, - "tool_time_ms": 35, - "active_time_ms": 35 - }, - "usage": { - "tokens": { - "input": 0, - "output": 0, - "reasoning": 0, - "cache_read": 0, - "cache_write": 0 - } - }, - "state": "succeeded" } } }, "stream": [ { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 1, "kind": "platform", "id": "1", - "recorded_at": 1789709596683, + "recorded_at": 1789783552863, "item": { "seq": 1, - "recorded_at": 1789709596683, + "recorded_at": 1789783552863, "record": { "kind": "run.created", "spec": { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "settings": { "project": { "name": null, @@ -402,7 +492,10 @@ "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Run one command" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -493,11 +586,14 @@ "graph": { "name": "Command", "nodes": { - "start": { - "id": "start", + "say": { + "id": "say", "attrs": { + "script": { + "String": "echo hello from petri" + }, "shape": { - "String": "Mdiamond" + "String": "parallelogram" } } }, @@ -509,14 +605,11 @@ } } }, - "say": { - "id": "say", + "start": { + "id": "start", "attrs": { - "script": { - "String": "echo hello from petri" - }, "shape": { - "String": "parallelogram" + "String": "Mdiamond" } } } @@ -544,9 +637,9 @@ "workflow_version_id": "a65150b821e21c843ede6b06fe0ed2bc6af498746a3c6883f1ee4328ef6d5c55", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpQt0Lng" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpYIWEW2" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpQt0Lng", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpYIWEW2", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -561,29 +654,29 @@ "auth_method": "dev_token" } }, - "spec_blob": "d2186231edf780f52421815b48f031fc4c4686c140db567df03a5837556a0f75", - "engine": { - "kind": "petri", + "definition_blob": "fff4c863e54b2c6f58114f6c1c3039484f599a6bf77caf4b3ad634dc979edc07", + "spec_blob": "fd9e919594704212a1b22f6ee8042c4583fc745461ffc0a2594e32f550e43d7c", + "admission": { "graph": { - "blob": "e9b2cc84938eeb7fadc0d5e44314892be1f39c1b8e4db8fba5b81694d82aa067", - "digest": "e9b2cc84938eeb7fadc0d5e44314892be1f39c1b8e4db8fba5b81694d82aa067" + "blob": "b5e4170486a4d9c27e63be7cf8ff32f0bb1451e44b54de89c0988372278eb89f", + "digest": "b5e4170486a4d9c27e63be7cf8ff32f0bb1451e44b54de89c0988372278eb89f" } } }, "title": "Run one command", - "web_url": "http://localhost:3000/runs/01M2SG2E0BWG00ZBC6CHDAXKKF" + "web_url": "http://localhost:3000/runs/01M2VPKCKWSE3QXM9BACCRE4WH" } } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 2, "kind": "platform", "id": "2", - "recorded_at": 1789709596727, + "recorded_at": 1789783552864, "item": { "seq": 2, - "recorded_at": 1789709596727, + "recorded_at": 1789783552864, "record": { "kind": "run.lifecycle", "transition": "submitted", @@ -594,14 +687,14 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 3, "kind": "platform", "id": "3", - "recorded_at": 1789709596731, + "recorded_at": 1789783552981, "item": { "seq": 3, - "recorded_at": 1789709596731, + "recorded_at": 1789783552981, "record": { "kind": "run.lifecycle", "transition": "start_requested", @@ -610,14 +703,14 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 4, "kind": "platform", "id": "4", - "recorded_at": 1789709596733, + "recorded_at": 1789783552993, "item": { "seq": 4, - "recorded_at": 1789709596733, + "recorded_at": 1789783552993, "record": { "kind": "run.lifecycle", "transition": "runnable", @@ -629,14 +722,14 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 5, "kind": "platform", "id": "5", - "recorded_at": 1789709596735, + "recorded_at": 1789783553002, "item": { "seq": 5, - "recorded_at": 1789709596735, + "recorded_at": 1789783553002, "record": { "kind": "run.lifecycle", "transition": "starting", @@ -647,14 +740,14 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 6, "kind": "platform", "id": "6", - "recorded_at": 1789709596736, + "recorded_at": 1789783553008, "item": { "seq": 6, - "recorded_at": 1789709596736, + "recorded_at": 1789783553008, "record": { "kind": "run.lifecycle", "transition": "running", @@ -665,11 +758,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 7, "kind": "petri", "id": "coordinator/0/0", - "recorded_at": 1789709596738, + "recorded_at": 1789783553017, "item": { "id": { "log": "coordinator", @@ -680,15 +773,15 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596738, + "recorded_at": 1789783553017, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596738, + "recorded_at": 1789783553017, "body": { "event": "run.started", - "format_version": 5, - "key": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "format_version": 7, + "key": "01M2VPKCKWSE3QXM9BACCRE4WH", "root": 0, "middleware_chain": [ "circuit-breaker" @@ -698,11 +791,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 8, "kind": "petri", "id": "coordinator/1/0", - "recorded_at": 1789709596739, + "recorded_at": 1789783553019, "item": { "id": { "log": "coordinator", @@ -711,24 +804,24 @@ }, "origin": "external", "context": {}, - "recorded_at": 1789709596739, + "recorded_at": 1789783553019, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596739, + "recorded_at": 1789783553019, "body": { "event": "graph.registered", - "digest": "e9b2cc84938eeb7fadc0d5e44314892be1f39c1b8e4db8fba5b81694d82aa067" + "digest": "b5e4170486a4d9c27e63be7cf8ff32f0bb1451e44b54de89c0988372278eb89f" } } } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 9, "kind": "petri", "id": "coordinator/2/0", - "recorded_at": 1789709596740, + "recorded_at": 1789783553021, "item": { "id": { "log": "coordinator", @@ -739,16 +832,16 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596740, + "recorded_at": 1789783553021, "record": { "seq": 2, "origin": "external", - "recorded_at": 1789709596740, + "recorded_at": 1789783553021, "body": { "event": "invocation.declared", "invocation": 0, "call": null, - "graph": "e9b2cc84938eeb7fadc0d5e44314892be1f39c1b8e4db8fba5b81694d82aa067", + "graph": "b5e4170486a4d9c27e63be7cf8ff32f0bb1451e44b54de89c0988372278eb89f", "context": {}, "secret_bindings": "none", "sandbox": "isolated" @@ -757,11 +850,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 10, "kind": "petri", "id": "coordinator/3/0", - "recorded_at": 1789709596740, + "recorded_at": 1789783553022, "item": { "id": { "log": "coordinator", @@ -773,11 +866,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596740, + "recorded_at": 1789783553022, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596740, + "recorded_at": 1789783553022, "body": { "event": "execution.declared", "execution": 0, @@ -805,11 +898,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 11, "kind": "petri", "id": "execution 0/0/0", - "recorded_at": 1789709596741, + "recorded_at": 1789783553024, "item": { "id": { "log": "execution", @@ -822,11 +915,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596741, + "recorded_at": 1789783553024, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596741, + "recorded_at": 1789783553024, "body": { "event": "execution.started", "entry": "graph_entries", @@ -839,11 +932,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 12, "kind": "petri", "id": "execution 0/1/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "item": { "id": { "log": "execution", @@ -856,11 +949,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "body": { "event": "admission.decided", "decision_id": "execution_start", @@ -871,11 +964,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 13, "kind": "petri", "id": "execution 0/1/1", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "item": { "id": { "log": "execution", @@ -919,7 +1012,7 @@ "role": "none" } }, - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "derived": { "event": "visit.started", "inputs": [ @@ -934,11 +1027,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 14, "kind": "petri", "id": "execution 0/1/2", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "item": { "id": { "log": "execution", @@ -982,7 +1075,7 @@ "role": "none" } }, - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -990,11 +1083,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 15, "kind": "petri", "id": "execution 0/2/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "item": { "id": { "log": "execution", @@ -1007,11 +1100,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "record": { "seq": 2, "origin": "core", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "body": { "event": "token.emitted", "edge": 2, @@ -1023,11 +1116,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 16, "kind": "petri", "id": "execution 0/3/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "item": { "id": { "log": "execution", @@ -1071,11 +1164,11 @@ "role": "none" } }, - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783553024, "body": { "event": "admission.decided", "decision_id": { @@ -1091,11 +1184,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", "stream_seq": 17, "kind": "petri", "id": "execution 0/4/0", - "recorded_at": 1789709596825, + "recorded_at": 1789783553090, "item": { "id": { "log": "execution", @@ -1108,6 +1201,42 @@ "invocation": 0, "execution": 0 }, + "recorded_at": 1789783553090, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783553090, + "body": { + "event": "scope.acquired", + "scope": 0, + "lease": 0, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696a8a8a7c818-1384-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPKCKWSE3QXM9BACCRE4WH/petri/scopes/invocation-0-scope-0/work", + "duration_ms": 65 + } + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 18, + "kind": "petri", + "id": "execution 0/5/0", + "recorded_at": 1789783553090, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 5, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, "subject": { "node": { "id": 0, @@ -1139,11 +1268,11 @@ "role": "none" } }, - "recorded_at": 1789709596825, + "recorded_at": 1789783553090, "record": { - "seq": 4, + "seq": 5, "origin": "external", - "recorded_at": 1789709596825, + "recorded_at": 1789783553090, "body": { "event": "step.started", "firing": 1, @@ -1153,16 +1282,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 18, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 19, "kind": "petri", - "id": "execution 0/4/1", - "recorded_at": 1789709596825, + "id": "execution 0/5/1", + "recorded_at": 1789783553090, "item": { "id": { "log": "execution", "execution": 0, - "seq": 4, + "seq": 5, "index": 1 }, "origin": "derived", @@ -1201,7 +1330,7 @@ "role": "none" } }, - "recorded_at": 1789709596825, + "recorded_at": 1789783553090, "derived": { "event": "wait.state.changed", "state": "running" @@ -1209,16 +1338,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 19, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 20, "kind": "petri", - "id": "execution 0/5/0", - "recorded_at": 1789709596835, + "id": "execution 0/6/0", + "recorded_at": 1789783553170, "item": { "id": { "log": "execution", "execution": 0, - "seq": 5, + "seq": 6, "index": 0 }, "origin": "external", @@ -1257,18 +1386,18 @@ "role": "none" } }, - "recorded_at": 1789709596835, + "recorded_at": 1789783553170, "record": { - "seq": 5, + "seq": 6, "origin": "external", - "recorded_at": 1789709596835, + "recorded_at": 1789783553170, "body": { "event": "step.progress.recorded", "firing": 1, "ev": { "log": { "stream": "stderr", - "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpQt0Lng is not a Git repository; the workspace starts empty" + "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpYIWEW2 is not a Git repository; the workspace starts empty" } } } @@ -1276,16 +1405,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 20, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 21, "kind": "petri", - "id": "execution 0/6/0", - "recorded_at": 1789709597013, + "id": "execution 0/7/0", + "recorded_at": 1789783553867, "item": { "id": { "log": "execution", "execution": 0, - "seq": 6, + "seq": 7, "index": 0 }, "origin": "external", @@ -1324,11 +1453,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553867, "record": { - "seq": 6, + "seq": 7, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553867, "body": { "event": "step.progress.recorded", "firing": 1, @@ -1341,7 +1470,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "1ccfea3fb3759c0e78bfe36cb4c2ea7ff0833690", + "git_commit_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e", "reused": false } } @@ -1359,7 +1488,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "1ccfea3fb3759c0e78bfe36cb4c2ea7ff0833690", + "git_commit_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e", "reused": false } } @@ -1368,16 +1497,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 21, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 22, "kind": "petri", - "id": "execution 0/7/0", - "recorded_at": 1789709597013, + "id": "execution 0/8/0", + "recorded_at": 1789783553867, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 0 }, "origin": "external", @@ -1416,11 +1545,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553867, "record": { - "seq": 7, + "seq": 8, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553867, "body": { "event": "step.finished", "firing": 1, @@ -1432,7 +1561,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 10 + "duration_ms": 80 }, "context_updates": { "failure_class": "", @@ -1448,16 +1577,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 22, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 23, "kind": "petri", - "id": "execution 0/7/1", - "recorded_at": 1789709597013, + "id": "execution 0/8/1", + "recorded_at": 1789783553867, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 1 }, "origin": "derived", @@ -1496,7 +1625,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553867, "derived": { "event": "visit.completed", "outcome": { @@ -1506,7 +1635,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 10 + "duration_ms": 80 }, "context_updates": { "failure_class": "", @@ -1519,21 +1648,63 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 23, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 24, "kind": "platform", "id": "7", - "recorded_at": 1789709597013, + "recorded_at": 1789783553866, "item": { "seq": 7, - "recorded_at": 1789709597013, + "recorded_at": 1789783553866, + "record": { + "kind": "run.branch", + "run_branch": "fabro/run/01M2VPKCKWSE3QXM9BACCRE4WH", + "base_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e", + "workspace": "invocation-0-scope-0" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 25, + "kind": "platform", + "id": "8", + "recorded_at": 1789783553867, + "item": { + "seq": 8, + "recorded_at": 1789783553867, + "record": { + "kind": "git.identity", + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 26, + "kind": "platform", + "id": "9", + "recorded_at": 1789783553896, + "item": { + "seq": 9, + "recorded_at": 1789783553896, "record": { "kind": "checkpoint", "execution": 0, "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "1ccfea3fb3759c0e78bfe36cb4c2ea7ff0833690", + "git_commit_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e", "operation": { "execution": 0, "decision": { @@ -1552,16 +1723,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 24, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 27, "kind": "petri", - "id": "execution 0/8/0", - "recorded_at": 1789709597014, + "id": "execution 0/9/0", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 0 }, "origin": "external", @@ -1600,11 +1771,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "record": { - "seq": 8, + "seq": 9, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "body": { "event": "routing.resolved", "decision_id": { @@ -1642,6 +1813,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -1656,16 +1828,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 25, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 28, "kind": "petri", - "id": "execution 0/8/1", - "recorded_at": 1789709597014, + "id": "execution 0/9/1", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 1 }, "origin": "derived", @@ -1687,6 +1859,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -1703,7 +1876,7 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "derived": { "event": "visit.started", "inputs": [ @@ -1721,16 +1894,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 26, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 29, "kind": "petri", - "id": "execution 0/8/2", - "recorded_at": 1789709597014, + "id": "execution 0/9/2", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 2 }, "origin": "derived", @@ -1752,6 +1925,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -1768,7 +1942,7 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -1776,16 +1950,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 27, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 30, "kind": "petri", - "id": "execution 0/9/0", - "recorded_at": 1789709597014, + "id": "execution 0/10/0", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 9, + "seq": 10, "index": 0 }, "origin": "core", @@ -1824,11 +1998,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "record": { - "seq": 9, + "seq": 10, "origin": "core", - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "body": { "event": "route.applied", "kind": "edge", @@ -1851,6 +2025,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -1865,16 +2040,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 28, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 31, "kind": "petri", - "id": "execution 0/10/0", - "recorded_at": 1789709597014, + "id": "execution 0/11/0", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 10, + "seq": 11, "index": 0 }, "origin": "core", @@ -1913,11 +2088,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "record": { - "seq": 10, + "seq": 11, "origin": "core", - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "body": { "event": "token.emitted", "edge": 0, @@ -1932,16 +2107,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 29, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 32, "kind": "petri", - "id": "execution 0/11/0", - "recorded_at": 1789709597014, + "id": "execution 0/12/0", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 11, + "seq": 12, "index": 0 }, "origin": "external", @@ -1963,6 +2138,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -1979,11 +2155,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "record": { - "seq": 11, + "seq": 12, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "body": { "event": "admission.decided", "decision_id": { @@ -1999,16 +2175,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 30, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 33, "kind": "petri", - "id": "execution 0/12/0", - "recorded_at": 1789709597014, + "id": "execution 0/13/0", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 0 }, "origin": "external", @@ -2030,6 +2206,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2046,11 +2223,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "record": { - "seq": 12, + "seq": 13, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "body": { "event": "step.started", "firing": 2, @@ -2060,16 +2237,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 31, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 34, "kind": "petri", - "id": "execution 0/12/1", - "recorded_at": 1789709597014, + "id": "execution 0/13/1", + "recorded_at": 1789783553897, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 1 }, "origin": "derived", @@ -2091,6 +2268,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2107,7 +2285,7 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553897, "derived": { "event": "wait.state.changed", "state": "running" @@ -2115,16 +2293,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 32, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 35, "kind": "petri", - "id": "execution 0/13/0", - "recorded_at": 1789709597021, + "id": "execution 0/14/0", + "recorded_at": 1789783553923, "item": { "id": { "log": "execution", "execution": 0, - "seq": 13, + "seq": 14, "index": 0 }, "origin": "external", @@ -2146,6 +2324,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2162,11 +2341,11 @@ "role": "none" } }, - "recorded_at": 1789709597021, + "recorded_at": 1789783553923, "record": { - "seq": 13, + "seq": 14, "origin": "external", - "recorded_at": 1789709597021, + "recorded_at": 1789783553923, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2181,16 +2360,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 33, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 36, "kind": "petri", - "id": "execution 0/14/0", - "recorded_at": 1789709597150, + "id": "execution 0/15/0", + "recorded_at": 1789783554618, "item": { "id": { "log": "execution", "execution": 0, - "seq": 14, + "seq": 15, "index": 0 }, "origin": "external", @@ -2212,6 +2391,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2228,11 +2408,11 @@ "role": "none" } }, - "recorded_at": 1789709597150, + "recorded_at": 1789783554618, "record": { - "seq": 14, + "seq": 15, "origin": "external", - "recorded_at": 1789709597150, + "recorded_at": 1789783554618, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2245,7 +2425,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "7c85082eb6f054de8419db6cf2f554a45c8e44e1", + "git_commit_sha": "78a882a8aaa5801d29d6530a93bd5ae2174bd620", "reused": false } } @@ -2263,7 +2443,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "7c85082eb6f054de8419db6cf2f554a45c8e44e1", + "git_commit_sha": "78a882a8aaa5801d29d6530a93bd5ae2174bd620", "reused": false } } @@ -2272,16 +2452,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 34, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 37, "kind": "petri", - "id": "execution 0/15/0", - "recorded_at": 1789709597151, + "id": "execution 0/16/0", + "recorded_at": 1789783554618, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 0 }, "origin": "external", @@ -2303,6 +2483,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2319,11 +2500,11 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554618, "record": { - "seq": 15, + "seq": 16, "origin": "external", - "recorded_at": 1789709597151, + "recorded_at": 1789783554618, "body": { "event": "step.finished", "firing": 2, @@ -2337,7 +2518,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 35 + "duration_ms": 55 }, "context_updates": { "command.output": "hello from petri\n", @@ -2353,16 +2534,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 35, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 38, "kind": "petri", - "id": "execution 0/15/1", - "recorded_at": 1789709597151, + "id": "execution 0/16/1", + "recorded_at": 1789783554618, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 1 }, "origin": "derived", @@ -2384,6 +2565,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2400,7 +2582,7 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554618, "derived": { "event": "visit.completed", "outcome": { @@ -2412,7 +2594,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 35 + "duration_ms": 55 }, "context_updates": { "command.output": "hello from petri\n", @@ -2425,16 +2607,54 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 36, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 39, + "kind": "platform", + "id": "10", + "recorded_at": 1789783554776, + "item": { + "seq": 10, + "recorded_at": 1789783554776, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 2, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "78a882a8aaa5801d29d6530a93bd5ae2174bd620", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 2, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 2 + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 40, "kind": "petri", - "id": "execution 0/16/0", - "recorded_at": 1789709597151, + "id": "execution 0/17/0", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 0 }, "origin": "external", @@ -2456,6 +2676,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2472,11 +2693,11 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "record": { - "seq": 16, + "seq": 17, "origin": "external", - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "body": { "event": "routing.resolved", "decision_id": { @@ -2522,16 +2743,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 37, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 41, "kind": "petri", - "id": "execution 0/16/1", - "recorded_at": 1789709597151, + "id": "execution 0/17/1", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 1 }, "origin": "derived", @@ -2563,7 +2784,7 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "derived": { "event": "visit.started", "inputs": [ @@ -2583,16 +2804,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 38, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 42, "kind": "petri", - "id": "execution 0/16/2", - "recorded_at": 1789709597151, + "id": "execution 0/17/2", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 2 }, "origin": "derived", @@ -2624,7 +2845,7 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -2632,16 +2853,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 39, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 43, "kind": "petri", - "id": "execution 0/17/0", - "recorded_at": 1789709597151, + "id": "execution 0/18/0", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 17, + "seq": 18, "index": 0 }, "origin": "core", @@ -2663,6 +2884,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2679,11 +2901,11 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "record": { - "seq": 17, + "seq": 18, "origin": "core", - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "body": { "event": "route.applied", "kind": "edge", @@ -2714,16 +2936,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 40, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 44, "kind": "petri", - "id": "execution 0/18/0", - "recorded_at": 1789709597151, + "id": "execution 0/19/0", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 18, + "seq": 19, "index": 0 }, "origin": "core", @@ -2745,6 +2967,7 @@ "line": 5, "column": 5 }, + "script": "echo hello from petri", "edges": { "1": { "to": "exit", @@ -2761,11 +2984,11 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "record": { - "seq": 18, + "seq": 19, "origin": "core", - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "body": { "event": "token.emitted", "edge": 1, @@ -2782,49 +3005,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 41, - "kind": "platform", - "id": "8", - "recorded_at": 1789709597151, - "item": { - "seq": 8, - "recorded_at": 1789709597151, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 2, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "7c85082eb6f054de8419db6cf2f554a45c8e44e1", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 2, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 2 - } - } - }, - { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 42, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 45, "kind": "petri", - "id": "execution 0/19/0", - "recorded_at": 1789709597151, + "id": "execution 0/20/0", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 19, + "seq": 20, "index": 0 }, "origin": "external", @@ -2856,11 +3046,11 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "record": { - "seq": 19, + "seq": 20, "origin": "external", - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "body": { "event": "admission.decided", "decision_id": { @@ -2876,16 +3066,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 43, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 46, "kind": "petri", - "id": "execution 0/20/0", - "recorded_at": 1789709597151, + "id": "execution 0/21/0", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 20, + "seq": 21, "index": 0 }, "origin": "external", @@ -2917,11 +3107,11 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "record": { - "seq": 20, + "seq": 21, "origin": "external", - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "body": { "event": "step.started", "firing": 3, @@ -2931,16 +3121,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 44, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 47, "kind": "petri", - "id": "execution 0/20/1", - "recorded_at": 1789709597151, + "id": "execution 0/21/1", + "recorded_at": 1789783554777, "item": { "id": { "log": "execution", "execution": 0, - "seq": 20, + "seq": 21, "index": 1 }, "origin": "derived", @@ -2972,7 +3162,7 @@ "role": "none" } }, - "recorded_at": 1789709597151, + "recorded_at": 1789783554777, "derived": { "event": "wait.state.changed", "state": "running" @@ -2980,50 +3170,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 45, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 48, "kind": "petri", - "id": "coordinator/4/0", - "recorded_at": 1789709597243, - "item": { - "id": { - "log": "coordinator", - "seq": 4, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "recorded_at": 1789709597243, - "record": { - "seq": 4, - "origin": "external", - "recorded_at": 1789709597243, - "body": { - "event": "execution.finished", - "execution": 0, - "exit": { - "terminal": { - "status": "success" - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 46, - "kind": "petri", - "id": "execution 0/21/0", - "recorded_at": 1789709597243, + "id": "execution 0/22/0", + "recorded_at": 1789783555284, "item": { "id": { "log": "execution", "execution": 0, - "seq": 21, + "seq": 22, "index": 0 }, "origin": "external", @@ -3055,11 +3211,11 @@ "role": "none" } }, - "recorded_at": 1789709597243, + "recorded_at": 1789783555284, "record": { - "seq": 21, + "seq": 22, "origin": "external", - "recorded_at": 1789709597243, + "recorded_at": 1789783555284, "body": { "event": "step.progress.recorded", "firing": 3, @@ -3072,7 +3228,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "306ef7b47756945135e5000efefd4005395cbd1b", + "git_commit_sha": "0ef9095fa220a5cc176e543afc234f6a24b11878", "reused": false } } @@ -3090,7 +3246,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "306ef7b47756945135e5000efefd4005395cbd1b", + "git_commit_sha": "0ef9095fa220a5cc176e543afc234f6a24b11878", "reused": false } } @@ -3099,16 +3255,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 47, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 49, "kind": "petri", - "id": "execution 0/22/0", - "recorded_at": 1789709597243, + "id": "execution 0/23/0", + "recorded_at": 1789783555285, "item": { "id": { "log": "execution", "execution": 0, - "seq": 22, + "seq": 23, "index": 0 }, "origin": "external", @@ -3140,11 +3296,11 @@ "role": "none" } }, - "recorded_at": 1789709597243, + "recorded_at": 1789783555285, "record": { - "seq": 22, + "seq": 23, "origin": "external", - "recorded_at": 1789709597243, + "recorded_at": 1789783555285, "body": { "event": "step.finished", "firing": 3, @@ -3171,16 +3327,16 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 48, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 50, "kind": "petri", - "id": "execution 0/22/1", - "recorded_at": 1789709597243, + "id": "execution 0/23/1", + "recorded_at": 1789783555285, "item": { "id": { "log": "execution", "execution": 0, - "seq": 22, + "seq": 23, "index": 1 }, "origin": "derived", @@ -3212,7 +3368,7 @@ "role": "none" } }, - "recorded_at": 1789709597243, + "recorded_at": 1789783555285, "derived": { "event": "visit.completed", "outcome": { @@ -3234,16 +3390,54 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 49, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 51, + "kind": "platform", + "id": "11", + "recorded_at": 1789783555390, + "item": { + "seq": 11, + "recorded_at": 1789783555390, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 3, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "0ef9095fa220a5cc176e543afc234f6a24b11878", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 3, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 3 + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 52, "kind": "petri", - "id": "execution 0/23/0", - "recorded_at": 1789709597243, + "id": "execution 0/24/0", + "recorded_at": 1789783555390, "item": { "id": { "log": "execution", "execution": 0, - "seq": 23, + "seq": 24, "index": 0 }, "origin": "external", @@ -3275,11 +3469,11 @@ "role": "none" } }, - "recorded_at": 1789709597243, + "recorded_at": 1789783555390, "record": { - "seq": 23, + "seq": 24, "origin": "external", - "recorded_at": 1789709597243, + "recorded_at": 1789783555390, "body": { "event": "routing.resolved", "decision_id": { @@ -3297,44 +3491,66 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 50, - "kind": "platform", - "id": "9", - "recorded_at": 1789709597243, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 53, + "kind": "petri", + "id": "coordinator/4/0", + "recorded_at": 1789783555470, "item": { - "seq": 9, - "recorded_at": 1789709597243, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 3, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "306ef7b47756945135e5000efefd4005395cbd1b", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 3, - "attempt": 1 - } - }, - "effect": "checkpoint" - } + "id": { + "log": "coordinator", + "seq": 4, + "index": 0 }, - "position": { - "execution": 0, - "firing": 3 + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "recorded_at": 1789783555470, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783555470, + "body": { + "event": "execution.finished", + "execution": 0, + "exit": { + "terminal": { + "status": "success" + } + } + } } } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 51, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 54, + "kind": "platform", + "id": "12", + "recorded_at": 1789783555470, + "item": { + "seq": 12, + "recorded_at": 1789783555470, + "record": { + "kind": "run.diff", + "base_sha": "e8610b1414cef15a0ab7889a651b2221fd80086e", + "head_sha": "0ef9095fa220a5cc176e543afc234f6a24b11878", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 55, "kind": "petri", "id": "coordinator/5/0", - "recorded_at": 1789709597243, + "recorded_at": 1789783555471, "item": { "id": { "log": "coordinator", @@ -3346,11 +3562,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709597243, + "recorded_at": 1789783555471, "record": { "seq": 5, "origin": "external", - "recorded_at": 1789709597243, + "recorded_at": 1789783555471, "body": { "event": "invocation.finished", "invocation": 0, @@ -3370,11 +3586,11 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 52, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 56, "kind": "petri", "id": "coordinator/6/0", - "recorded_at": 1789709597309, + "recorded_at": 1789783555519, "item": { "id": { "log": "coordinator", @@ -3382,12 +3598,49 @@ "index": 0 }, "origin": "external", - "context": {}, - "recorded_at": 1789709597309, + "context": { + "invocation": 0 + }, + "recorded_at": 1789783555519, "record": { "seq": 6, "origin": "external", - "recorded_at": 1789709597309, + "recorded_at": 1789783555519, + "body": { + "event": "scope.released", + "invocation": 0, + "lease": 0, + "scope": { + "declared": 0 + }, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696a8a8a7c818-1384-0", + "outcome": "succeeded", + "retained": true + } + } + } + }, + { + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 57, + "kind": "petri", + "id": "coordinator/7/0", + "recorded_at": 1789783555521, + "item": { + "id": { + "log": "coordinator", + "seq": 7, + "index": 0 + }, + "origin": "external", + "context": {}, + "recorded_at": 1789783555521, + "record": { + "seq": 7, + "origin": "external", + "recorded_at": 1789783555521, "body": { "event": "run.finished", "status": "success" @@ -3396,14 +3649,14 @@ } }, { - "run_id": "01M2SG2E0BWG00ZBC6CHDAXKKF", - "stream_seq": 53, + "run_id": "01M2VPKCKWSE3QXM9BACCRE4WH", + "stream_seq": 58, "kind": "platform", - "id": "10", - "recorded_at": 1789709597313, + "id": "13", + "recorded_at": 1789783555530, "item": { - "seq": 10, - "recorded_at": 1789709597313, + "seq": 13, + "recorded_at": 1789783555530, "record": { "kind": "run.lifecycle", "transition": "succeeded", diff --git a/apps/fabro-web/app/test-fixtures/petri/gate.json b/apps/fabro-web/app/test-fixtures/petri/gate.json index 9e13c401c..5dec0ed80 100644 --- a/apps/fabro-web/app/test-fixtures/petri/gate.json +++ b/apps/fabro-web/app/test-fixtures/petri/gate.json @@ -1,9 +1,9 @@ { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "projection": { "title": "Ask before running", "spec": { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "settings": { "project": { "name": null, @@ -17,7 +17,10 @@ "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Ask before running" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -112,21 +115,13 @@ "id": "yes", "attrs": { "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/yes" + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/yes" }, "shape": { "String": "parallelogram" } } }, - "start": { - "id": "start", - "attrs": { - "shape": { - "String": "Mdiamond" - } - } - }, "exit": { "id": "exit", "attrs": { @@ -135,28 +130,36 @@ } } }, + "gate": { + "id": "gate", + "attrs": { + "shape": { + "String": "hexagon" + }, + "label": { + "String": "Go?" + }, + "question_type": { + "String": "yes_no" + } + } + }, "no": { "id": "no", "attrs": { "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/no" + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no" }, "shape": { "String": "parallelogram" } } }, - "gate": { - "id": "gate", + "start": { + "id": "start", "attrs": { - "label": { - "String": "Go?" - }, "shape": { - "String": "hexagon" - }, - "question_type": { - "String": "yes_no" + "String": "Mdiamond" } } } @@ -202,14 +205,14 @@ } } }, - "graph_source": "digraph Gate {\n graph [goal=\"Ask before running\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n gate [shape=hexagon, label=\"Go?\", question_type=\"yes_no\"]\n yes [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/yes\"]\n no [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/no\"]\n start -> gate\n gate -> yes [label=\"[Y] Yes\"]\n gate -> no [label=\"[N] No\"]\n yes -> exit\n no -> exit\n}", + "graph_source": "digraph Gate {\n graph [goal=\"Ask before running\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n gate [shape=hexagon, label=\"Go?\", question_type=\"yes_no\"]\n yes [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/yes\"]\n no [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no\"]\n start -> gate\n gate -> yes [label=\"[Y] Yes\"]\n gate -> no [label=\"[N] No\"]\n yes -> exit\n no -> exit\n}", "workflow_slug": "workflow", - "workflow_version_id": "1d8cc56da9a35251971537e032912fbeb154d66c4ae546ed2f970c7d03fbc244", + "workflow_version_id": "cbc42255519dd8d75cdc69446de1df9ffb66cbe05adce1915ba538af30be6769", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdHiMg3" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpbgdamH" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdHiMg3", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpbgdamH", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -224,125 +227,236 @@ "auth_method": "dev_token" } }, - "spec_blob": "2d6c77e9cc030208cd35d778a57411f681950485aa5b73261f5c724c9217332a", - "engine": { - "kind": "petri", + "definition_blob": "7eaa47f89f68f8117a63b03232b5b2ccc385d84cbcf7373e761fc2b3c2553b9a", + "spec_blob": "4d18f978520d8bd02d53edf84bbb4bd8a76353b18a247f4747c19f612d3572dd", + "admission": { "graph": { - "blob": "2cfe649e870e1e244168106779790cce67cd186c19bd5ad7614324579e4e5281", - "digest": "2cfe649e870e1e244168106779790cce67cd186c19bd5ad7614324579e4e5281" + "blob": "71e1d9f8ec3ac4b2c64344477132e279e8a18569342a50473c56238e00b608ad", + "digest": "71e1d9f8ec3ac4b2c64344477132e279e8a18569342a50473c56238e00b608ad" } } }, - "web_url": "http://localhost:3000/runs/01M2SG2E0BEBVXSJCT8MZE19FT", + "web_url": "http://localhost:3000/runs/01M2VPKCKJ26JE3FNEJRZJCZK0", "start": { - "start_time": "2026-09-18T05:33:16.738Z" + "start_time": "2026-09-19T02:05:52.769Z", + "run_branch": "fabro/run/01M2VPKCKJ26JE3FNEJRZJCZK0", + "base_sha": "965e6fd20fa20aba86e49ce17906e3867904b548" }, "status": { "kind": "succeeded", "reason": "completed" }, - "status_updated_at": "2026-09-18T05:33:17.412Z", - "last_event_at": "2026-09-18T05:33:17.416Z", + "status_updated_at": "2026-09-19T02:05:55.828Z", + "last_event_at": "2026-09-19T02:05:55.840Z", "pending_control": null, "checkpoints": [ { - "seq": 28, + "seq": 26, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.013Z", + "timestamp": "2026-09-19T02:05:53.658Z", "current_node": "start", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "f8b1940177c323c419061d1d56758fdc39bfcd05" + "git_commit_sha": "965e6fd20fa20aba86e49ce17906e3867904b548" }, "diff": {} }, { - "seq": 41, + "seq": 44, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.134Z", + "timestamp": "2026-09-19T02:05:54.307Z", "current_node": "gate", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "d55c6e89fe209be998b0c18db7c4590315af1841" + "git_commit_sha": "510e5b2c8c16458b679d288f7eee6183f52d7707" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 53, + "seq": 56, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.264Z", + "timestamp": "2026-09-19T02:05:55.119Z", "current_node": "no", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "67996dc3f38bf41af0da8b24a0afebb2277554e1" + "git_commit_sha": "66c55d2858904b2bb1eb2a42c6a60932920d7633" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 65, + "seq": 68, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.370Z", + "timestamp": "2026-09-19T02:05:55.630Z", "current_node": "exit", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "49d77497eb2088a5a84c05fe03824f20621e3a3b" + "git_commit_sha": "3a5e4349b77394aba3ffef05e359a6ca192f9708" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } } ], "conclusion": { - "timestamp": "2026-09-18T05:33:17.412Z", + "timestamp": "2026-09-19T02:05:55.828Z", "status": "succeeded", "timing": { - "wall_time_ms": 674, + "wall_time_ms": 3059, "inference_time_ms": 0, - "tool_time_ms": 35, - "active_time_ms": 35 + "tool_time_ms": 57, + "active_time_ms": 57 }, - "final_git_commit_sha": "49d77497eb2088a5a84c05fe03824f20621e3a3b", + "final_git_commit_sha": "3a5e4349b77394aba3ffef05e359a6ca192f9708", + "stages": [ + { + "stage_id": "start", + "stage_label": "start", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "gate", + "stage_label": "gate", + "timing": { + "wall_time_ms": 31, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "no", + "stage_label": "no", + "timing": { + "wall_time_ms": 57, + "inference_time_ms": 0, + "tool_time_ms": 57, + "active_time_ms": 57 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "exit", + "stage_label": "exit", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + } + ], "total_retries": 0, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, "sandbox": { - "kind": "planned", + "kind": "ready", "plan": { "provider": "local" + }, + "instance": { + "provider": "local", + "runtime": { + "id": "host-g18d696a89e0c30b0-691-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2VPKCA7RX3BPKYAV61WX2FR/storage/scratch/20260918-01M2VPKCKJ26JE3FNEJRZJCZK0/petri/scopes/invocation-0-scope-0/work" + }, + "ready_duration_ms": 95, + "retained": true } }, "pull_request": null, "superseded_by": null, + "git_identity": { + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, "pending_interviews": {}, "stages": { - "no@1": { - "first_event_seq": 453, + "start@1": { + "first_event_seq": 179, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.264Z" + "timestamp": "2026-09-19T02:05:53.598Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, - "output": null, + "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpbgdamH is not a Git repository; the workspace starts empty\n", + "output_bytes": 130, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.135Z", - "handler": "command", + "started_at": "2026-09-19T02:05:52.804Z", + "handler": "start", "graph_visit": 1, "timing": { - "wall_time_ms": 35, + "wall_time_ms": 80, "inference_time_ms": 0, - "tool_time_ms": 35, - "active_time_ms": 35 + "tool_time_ms": 0, + "active_time_ms": 0 }, "usage": { "tokens": { @@ -356,14 +470,14 @@ "state": "succeeded" }, "exit@1": { - "first_event_seq": 583, + "first_event_seq": 2496, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.370Z" + "timestamp": "2026-09-19T02:05:55.485Z" }, "provider_used": null, "diff": null, @@ -373,7 +487,7 @@ "output": null, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.265Z", + "started_at": "2026-09-19T02:05:55.121Z", "handler": "exit", "graph_visit": 1, "timing": { @@ -393,33 +507,33 @@ }, "state": "succeeded" }, - "gate@1": { - "first_event_seq": 331, + "no@1": { + "first_event_seq": 1683, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.134Z" + "timestamp": "2026-09-19T02:05:55.020Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, - "output": "waiting for an answer: Go?\n", - "output_bytes": 27, + "output": "", + "output_bytes": 0, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.013Z", - "handler": "human", + "started_at": "2026-09-19T02:05:54.308Z", + "handler": "command", "graph_visit": 1, "timing": { - "wall_time_ms": 17, + "wall_time_ms": 57, "inference_time_ms": 0, - "tool_time_ms": 0, - "active_time_ms": 0 + "tool_time_ms": 57, + "active_time_ms": 57 }, "usage": { "tokens": { @@ -432,30 +546,30 @@ }, "state": "succeeded" }, - "start@1": { - "first_event_seq": 60, + "gate@1": { + "first_event_seq": 1033, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.013Z" + "timestamp": "2026-09-19T02:05:54.202Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, - "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdHiMg3 is not a Git repository; the workspace starts empty\n", - "output_bytes": 130, + "output": "waiting for an answer: Go?\n", + "output_bytes": 27, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:16.742Z", - "handler": "start", + "started_at": "2026-09-19T02:05:53.658Z", + "handler": "human", "graph_visit": 1, "timing": { - "wall_time_ms": 10, + "wall_time_ms": 31, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 @@ -475,18 +589,18 @@ }, "stream": [ { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 1, "kind": "platform", "id": "1", - "recorded_at": 1789709596683, + "recorded_at": 1789783552668, "item": { "seq": 1, - "recorded_at": 1789709596683, + "recorded_at": 1789783552668, "record": { "kind": "run.created", "spec": { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "settings": { "project": { "name": null, @@ -500,7 +614,10 @@ "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Ask before running" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -599,17 +716,11 @@ } } }, - "gate": { - "id": "gate", + "start": { + "id": "start", "attrs": { - "label": { - "String": "Go?" - }, - "question_type": { - "String": "yes_no" - }, "shape": { - "String": "hexagon" + "String": "Mdiamond" } } }, @@ -620,26 +731,32 @@ "String": "parallelogram" }, "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/no" + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no" } } }, - "start": { - "id": "start", + "gate": { + "id": "gate", "attrs": { + "question_type": { + "String": "yes_no" + }, + "label": { + "String": "Go?" + }, "shape": { - "String": "Mdiamond" + "String": "hexagon" } } }, "yes": { "id": "yes", "attrs": { + "script": { + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/yes" + }, "shape": { "String": "parallelogram" - }, - "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/yes" } } } @@ -685,14 +802,14 @@ } } }, - "graph_source": "digraph Gate {\n graph [goal=\"Ask before running\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n gate [shape=hexagon, label=\"Go?\", question_type=\"yes_no\"]\n yes [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/yes\"]\n no [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdAZvaU/no\"]\n start -> gate\n gate -> yes [label=\"[Y] Yes\"]\n gate -> no [label=\"[N] No\"]\n yes -> exit\n no -> exit\n}", + "graph_source": "digraph Gate {\n graph [goal=\"Ask before running\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n gate [shape=hexagon, label=\"Go?\", question_type=\"yes_no\"]\n yes [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/yes\"]\n no [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no\"]\n start -> gate\n gate -> yes [label=\"[Y] Yes\"]\n gate -> no [label=\"[N] No\"]\n yes -> exit\n no -> exit\n}", "workflow_slug": "workflow", - "workflow_version_id": "1d8cc56da9a35251971537e032912fbeb154d66c4ae546ed2f970c7d03fbc244", + "workflow_version_id": "cbc42255519dd8d75cdc69446de1df9ffb66cbe05adce1915ba538af30be6769", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdHiMg3" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpbgdamH" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdHiMg3", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpbgdamH", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -707,29 +824,29 @@ "auth_method": "dev_token" } }, - "spec_blob": "2d6c77e9cc030208cd35d778a57411f681950485aa5b73261f5c724c9217332a", - "engine": { - "kind": "petri", + "definition_blob": "7eaa47f89f68f8117a63b03232b5b2ccc385d84cbcf7373e761fc2b3c2553b9a", + "spec_blob": "4d18f978520d8bd02d53edf84bbb4bd8a76353b18a247f4747c19f612d3572dd", + "admission": { "graph": { - "blob": "2cfe649e870e1e244168106779790cce67cd186c19bd5ad7614324579e4e5281", - "digest": "2cfe649e870e1e244168106779790cce67cd186c19bd5ad7614324579e4e5281" + "blob": "71e1d9f8ec3ac4b2c64344477132e279e8a18569342a50473c56238e00b608ad", + "digest": "71e1d9f8ec3ac4b2c64344477132e279e8a18569342a50473c56238e00b608ad" } } }, "title": "Ask before running", - "web_url": "http://localhost:3000/runs/01M2SG2E0BEBVXSJCT8MZE19FT" + "web_url": "http://localhost:3000/runs/01M2VPKCKJ26JE3FNEJRZJCZK0" } } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 2, "kind": "platform", "id": "2", - "recorded_at": 1789709596727, + "recorded_at": 1789783552670, "item": { "seq": 2, - "recorded_at": 1789709596727, + "recorded_at": 1789783552670, "record": { "kind": "run.lifecycle", "transition": "submitted", @@ -740,14 +857,14 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 3, "kind": "platform", "id": "3", - "recorded_at": 1789709596732, + "recorded_at": 1789783552712, "item": { "seq": 3, - "recorded_at": 1789709596732, + "recorded_at": 1789783552712, "record": { "kind": "run.lifecycle", "transition": "start_requested", @@ -756,14 +873,14 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 4, "kind": "platform", "id": "4", - "recorded_at": 1789709596733, + "recorded_at": 1789783552720, "item": { "seq": 4, - "recorded_at": 1789709596733, + "recorded_at": 1789783552720, "record": { "kind": "run.lifecycle", "transition": "runnable", @@ -775,14 +892,14 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 5, "kind": "platform", "id": "5", - "recorded_at": 1789709596735, + "recorded_at": 1789783552735, "item": { "seq": 5, - "recorded_at": 1789709596735, + "recorded_at": 1789783552735, "record": { "kind": "run.lifecycle", "transition": "starting", @@ -793,14 +910,14 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 6, "kind": "platform", "id": "6", - "recorded_at": 1789709596736, + "recorded_at": 1789783552749, "item": { "seq": 6, - "recorded_at": 1789709596736, + "recorded_at": 1789783552749, "record": { "kind": "run.lifecycle", "transition": "running", @@ -811,11 +928,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 7, "kind": "petri", "id": "coordinator/0/0", - "recorded_at": 1789709596738, + "recorded_at": 1789783552769, "item": { "id": { "log": "coordinator", @@ -826,15 +943,15 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596738, + "recorded_at": 1789783552769, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596738, + "recorded_at": 1789783552769, "body": { "event": "run.started", - "format_version": 5, - "key": "01M2SG2E0BEBVXSJCT8MZE19FT", + "format_version": 7, + "key": "01M2VPKCKJ26JE3FNEJRZJCZK0", "root": 0, "middleware_chain": [ "circuit-breaker" @@ -844,11 +961,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 8, "kind": "petri", "id": "coordinator/1/0", - "recorded_at": 1789709596739, + "recorded_at": 1789783552782, "item": { "id": { "log": "coordinator", @@ -857,24 +974,24 @@ }, "origin": "external", "context": {}, - "recorded_at": 1789709596739, + "recorded_at": 1789783552782, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596739, + "recorded_at": 1789783552782, "body": { "event": "graph.registered", - "digest": "2cfe649e870e1e244168106779790cce67cd186c19bd5ad7614324579e4e5281" + "digest": "71e1d9f8ec3ac4b2c64344477132e279e8a18569342a50473c56238e00b608ad" } } } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 9, "kind": "petri", "id": "coordinator/2/0", - "recorded_at": 1789709596740, + "recorded_at": 1789783552783, "item": { "id": { "log": "coordinator", @@ -885,16 +1002,16 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596740, + "recorded_at": 1789783552783, "record": { "seq": 2, "origin": "external", - "recorded_at": 1789709596740, + "recorded_at": 1789783552783, "body": { "event": "invocation.declared", "invocation": 0, "call": null, - "graph": "2cfe649e870e1e244168106779790cce67cd186c19bd5ad7614324579e4e5281", + "graph": "71e1d9f8ec3ac4b2c64344477132e279e8a18569342a50473c56238e00b608ad", "context": {}, "secret_bindings": "none", "sandbox": "isolated" @@ -903,11 +1020,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 10, "kind": "petri", "id": "coordinator/3/0", - "recorded_at": 1789709596740, + "recorded_at": 1789783552788, "item": { "id": { "log": "coordinator", @@ -919,11 +1036,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596740, + "recorded_at": 1789783552788, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596740, + "recorded_at": 1789783552788, "body": { "event": "execution.declared", "execution": 0, @@ -951,11 +1068,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 11, "kind": "petri", "id": "execution 0/0/0", - "recorded_at": 1789709596741, + "recorded_at": 1789783552802, "item": { "id": { "log": "execution", @@ -968,11 +1085,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596741, + "recorded_at": 1789783552802, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596741, + "recorded_at": 1789783552802, "body": { "event": "execution.started", "entry": "graph_entries", @@ -985,11 +1102,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 12, "kind": "petri", "id": "execution 0/1/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "item": { "id": { "log": "execution", @@ -1002,11 +1119,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "body": { "event": "admission.decided", "decision_id": "execution_start", @@ -1017,11 +1134,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 13, "kind": "petri", "id": "execution 0/1/1", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "item": { "id": { "log": "execution", @@ -1065,7 +1182,7 @@ "role": "none" } }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "derived": { "event": "visit.started", "inputs": [ @@ -1080,11 +1197,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 14, "kind": "petri", "id": "execution 0/1/2", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "item": { "id": { "log": "execution", @@ -1128,7 +1245,7 @@ "role": "none" } }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -1136,11 +1253,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 15, "kind": "petri", "id": "execution 0/2/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "item": { "id": { "log": "execution", @@ -1153,11 +1270,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "record": { "seq": 2, "origin": "core", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "body": { "event": "token.emitted", "edge": 5, @@ -1169,11 +1286,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 16, "kind": "petri", "id": "execution 0/3/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "item": { "id": { "log": "execution", @@ -1217,11 +1334,11 @@ "role": "none" } }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783552804, "body": { "event": "admission.decided", "decision_id": { @@ -1237,11 +1354,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", "stream_seq": 17, "kind": "petri", "id": "execution 0/4/0", - "recorded_at": 1789709596825, + "recorded_at": 1789783552900, "item": { "id": { "log": "execution", @@ -1254,6 +1371,42 @@ "invocation": 0, "execution": 0 }, + "recorded_at": 1789783552900, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783552900, + "body": { + "event": "scope.acquired", + "scope": 0, + "lease": 0, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696a89e0c30b0-691-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPKCKJ26JE3FNEJRZJCZK0/petri/scopes/invocation-0-scope-0/work", + "duration_ms": 95 + } + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 18, + "kind": "petri", + "id": "execution 0/5/0", + "recorded_at": 1789783552900, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 5, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, "subject": { "node": { "id": 0, @@ -1285,11 +1438,11 @@ "role": "none" } }, - "recorded_at": 1789709596825, + "recorded_at": 1789783552900, "record": { - "seq": 4, + "seq": 5, "origin": "external", - "recorded_at": 1789709596825, + "recorded_at": 1789783552900, "body": { "event": "step.started", "firing": 1, @@ -1299,16 +1452,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 18, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 19, "kind": "petri", - "id": "execution 0/4/1", - "recorded_at": 1789709596825, + "id": "execution 0/5/1", + "recorded_at": 1789783552900, "item": { "id": { "log": "execution", "execution": 0, - "seq": 4, + "seq": 5, "index": 1 }, "origin": "derived", @@ -1347,7 +1500,7 @@ "role": "none" } }, - "recorded_at": 1789709596825, + "recorded_at": 1789783552900, "derived": { "event": "wait.state.changed", "state": "running" @@ -1355,16 +1508,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 19, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 20, "kind": "petri", - "id": "execution 0/5/0", - "recorded_at": 1789709596836, + "id": "execution 0/6/0", + "recorded_at": 1789783552981, "item": { "id": { "log": "execution", "execution": 0, - "seq": 5, + "seq": 6, "index": 0 }, "origin": "external", @@ -1403,18 +1556,18 @@ "role": "none" } }, - "recorded_at": 1789709596836, + "recorded_at": 1789783552981, "record": { - "seq": 5, + "seq": 6, "origin": "external", - "recorded_at": 1789709596836, + "recorded_at": 1789783552981, "body": { "event": "step.progress.recorded", "firing": 1, "ev": { "log": { "stream": "stderr", - "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpdHiMg3 is not a Git repository; the workspace starts empty" + "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpbgdamH is not a Git repository; the workspace starts empty" } } } @@ -1422,16 +1575,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 20, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 21, "kind": "petri", - "id": "execution 0/6/0", - "recorded_at": 1789709597013, + "id": "execution 0/7/0", + "recorded_at": 1789783553598, "item": { "id": { "log": "execution", "execution": 0, - "seq": 6, + "seq": 7, "index": 0 }, "origin": "external", @@ -1470,11 +1623,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553598, "record": { - "seq": 6, + "seq": 7, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553598, "body": { "event": "step.progress.recorded", "firing": 1, @@ -1487,7 +1640,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "f8b1940177c323c419061d1d56758fdc39bfcd05", + "git_commit_sha": "965e6fd20fa20aba86e49ce17906e3867904b548", "reused": false } } @@ -1505,7 +1658,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "f8b1940177c323c419061d1d56758fdc39bfcd05", + "git_commit_sha": "965e6fd20fa20aba86e49ce17906e3867904b548", "reused": false } } @@ -1514,16 +1667,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 21, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 22, "kind": "petri", - "id": "execution 0/7/0", - "recorded_at": 1789709597013, + "id": "execution 0/8/0", + "recorded_at": 1789783553598, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 0 }, "origin": "external", @@ -1562,11 +1715,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553598, "record": { - "seq": 7, + "seq": 8, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553598, "body": { "event": "step.finished", "firing": 1, @@ -1578,7 +1731,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 10 + "duration_ms": 80 }, "context_updates": { "failure_class": "", @@ -1594,16 +1747,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 22, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 23, "kind": "petri", - "id": "execution 0/7/1", - "recorded_at": 1789709597013, + "id": "execution 0/8/1", + "recorded_at": 1789783553598, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 1 }, "origin": "derived", @@ -1642,7 +1795,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553598, "derived": { "event": "visit.completed", "outcome": { @@ -1652,7 +1805,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 10 + "duration_ms": 80 }, "context_updates": { "failure_class": "", @@ -1665,16 +1818,91 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 23, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 24, + "kind": "platform", + "id": "7", + "recorded_at": 1789783553597, + "item": { + "seq": 7, + "recorded_at": 1789783553597, + "record": { + "kind": "run.branch", + "run_branch": "fabro/run/01M2VPKCKJ26JE3FNEJRZJCZK0", + "base_sha": "965e6fd20fa20aba86e49ce17906e3867904b548", + "workspace": "invocation-0-scope-0" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 25, + "kind": "platform", + "id": "8", + "recorded_at": 1789783553597, + "item": { + "seq": 8, + "recorded_at": 1789783553597, + "record": { + "kind": "git.identity", + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 26, + "kind": "platform", + "id": "9", + "recorded_at": 1789783553658, + "item": { + "seq": 9, + "recorded_at": 1789783553658, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 1, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "965e6fd20fa20aba86e49ce17906e3867904b548", + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 1, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 27, "kind": "petri", - "id": "execution 0/8/0", - "recorded_at": 1789709597013, + "id": "execution 0/9/0", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 0 }, "origin": "external", @@ -1713,11 +1941,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "record": { - "seq": 8, + "seq": 9, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "body": { "event": "routing.resolved", "decision_id": { @@ -1773,16 +2001,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 24, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 28, "kind": "petri", - "id": "execution 0/8/1", - "recorded_at": 1789709597013, + "id": "execution 0/9/1", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 1 }, "origin": "derived", @@ -1824,7 +2052,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "derived": { "event": "visit.started", "inputs": [ @@ -1842,16 +2070,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 25, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 29, "kind": "petri", - "id": "execution 0/8/2", - "recorded_at": 1789709597013, + "id": "execution 0/9/2", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 2 }, "origin": "derived", @@ -1893,7 +2121,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -1901,16 +2129,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 26, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 30, "kind": "petri", - "id": "execution 0/9/0", - "recorded_at": 1789709597013, + "id": "execution 0/10/0", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 9, + "seq": 10, "index": 0 }, "origin": "core", @@ -1949,11 +2177,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "record": { - "seq": 9, + "seq": 10, "origin": "core", - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "body": { "event": "route.applied", "kind": "edge", @@ -1994,16 +2222,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 27, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 31, "kind": "petri", - "id": "execution 0/10/0", - "recorded_at": 1789709597013, + "id": "execution 0/11/0", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 10, + "seq": 11, "index": 0 }, "origin": "core", @@ -2042,11 +2270,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "record": { - "seq": 10, + "seq": 11, "origin": "core", - "recorded_at": 1789709597013, + "recorded_at": 1789783553658, "body": { "event": "token.emitted", "edge": 0, @@ -2061,49 +2289,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 28, - "kind": "platform", - "id": "7", - "recorded_at": 1789709597013, - "item": { - "seq": 7, - "recorded_at": 1789709597013, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 1, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "f8b1940177c323c419061d1d56758fdc39bfcd05", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 1, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 1 - } - } - }, - { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 29, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 32, "kind": "petri", - "id": "execution 0/11/0", - "recorded_at": 1789709597014, + "id": "execution 0/12/0", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 11, + "seq": 12, "index": 0 }, "origin": "external", @@ -2145,11 +2340,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553658, "record": { - "seq": 11, + "seq": 12, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553658, "body": { "event": "admission.decided", "decision_id": { @@ -2165,16 +2360,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 30, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 33, "kind": "petri", - "id": "execution 0/12/0", - "recorded_at": 1789709597014, + "id": "execution 0/13/0", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 0 }, "origin": "external", @@ -2216,11 +2411,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553658, "record": { - "seq": 12, + "seq": 13, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553658, "body": { "event": "step.started", "firing": 2, @@ -2230,16 +2425,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 31, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 34, "kind": "petri", - "id": "execution 0/12/1", - "recorded_at": 1789709597014, + "id": "execution 0/13/1", + "recorded_at": 1789783553658, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 1 }, "origin": "derived", @@ -2281,7 +2476,7 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553658, "derived": { "event": "wait.state.changed", "state": "running" @@ -2289,16 +2484,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 32, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 35, "kind": "petri", - "id": "execution 0/13/0", - "recorded_at": 1789709597014, + "id": "execution 0/14/0", + "recorded_at": 1789783553659, "item": { "id": { "log": "execution", "execution": 0, - "seq": 13, + "seq": 14, "index": 0 }, "origin": "external", @@ -2340,11 +2535,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553659, "record": { - "seq": 13, + "seq": 14, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553659, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2398,16 +2593,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 33, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 36, "kind": "petri", - "id": "execution 0/13/1", - "recorded_at": 1789709597014, + "id": "execution 0/14/1", + "recorded_at": 1789783553659, "item": { "id": { "log": "execution", "execution": 0, - "seq": 13, + "seq": 14, "index": 1 }, "origin": "derived", @@ -2449,7 +2644,7 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553659, "derived": { "event": "wait.state.changed", "state": "awaiting_answer" @@ -2457,16 +2652,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 34, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 37, "kind": "petri", - "id": "execution 0/14/0", - "recorded_at": 1789709597014, + "id": "execution 0/15/0", + "recorded_at": 1789783553660, "item": { "id": { "log": "execution", "execution": 0, - "seq": 14, + "seq": 15, "index": 0 }, "origin": "external", @@ -2508,11 +2703,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553660, "record": { - "seq": 14, + "seq": 15, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553660, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2527,16 +2722,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 35, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 38, "kind": "petri", - "id": "execution 0/15/0", - "recorded_at": 1789709597031, + "id": "execution 0/16/0", + "recorded_at": 1789783553689, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 0 }, "origin": "external", @@ -2578,11 +2773,11 @@ "role": "none" } }, - "recorded_at": 1789709597031, + "recorded_at": 1789783553689, "record": { - "seq": 15, + "seq": 16, "origin": "external", - "recorded_at": 1789709597031, + "recorded_at": 1789783553689, "body": { "event": "control.requested", "firing": 2, @@ -2606,16 +2801,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 36, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 39, "kind": "petri", - "id": "execution 0/15/1", - "recorded_at": 1789709597031, + "id": "execution 0/16/1", + "recorded_at": 1789783553689, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 1 }, "origin": "derived", @@ -2657,7 +2852,7 @@ "role": "none" } }, - "recorded_at": 1789709597031, + "recorded_at": 1789783553689, "derived": { "event": "wait.state.changed", "state": "running" @@ -2665,14 +2860,14 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 37, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 40, "kind": "platform", - "id": "8", - "recorded_at": 1789709597031, + "id": "10", + "recorded_at": 1789783553689, "item": { - "seq": 8, - "recorded_at": 1789709597031, + "seq": 10, + "recorded_at": 1789783553689, "record": { "kind": "interview.answered", "question": "gate#2", @@ -2684,21 +2879,22 @@ }, "login": "dev", "auth_method": "dev_token" - } + }, + "answer": "no" } } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 38, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 41, "kind": "petri", - "id": "execution 0/16/0", - "recorded_at": 1789709597134, + "id": "execution 0/17/0", + "recorded_at": 1789783554201, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 0 }, "origin": "external", @@ -2740,11 +2936,11 @@ "role": "none" } }, - "recorded_at": 1789709597134, + "recorded_at": 1789783554201, "record": { - "seq": 16, + "seq": 17, "origin": "external", - "recorded_at": 1789709597134, + "recorded_at": 1789783554201, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2757,7 +2953,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "d55c6e89fe209be998b0c18db7c4590315af1841", + "git_commit_sha": "510e5b2c8c16458b679d288f7eee6183f52d7707", "reused": false } } @@ -2775,7 +2971,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "d55c6e89fe209be998b0c18db7c4590315af1841", + "git_commit_sha": "510e5b2c8c16458b679d288f7eee6183f52d7707", "reused": false } } @@ -2784,16 +2980,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 39, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 42, "kind": "petri", - "id": "execution 0/17/0", - "recorded_at": 1789709597134, + "id": "execution 0/18/0", + "recorded_at": 1789783554202, "item": { "id": { "log": "execution", "execution": 0, - "seq": 17, + "seq": 18, "index": 0 }, "origin": "external", @@ -2835,11 +3031,11 @@ "role": "none" } }, - "recorded_at": 1789709597134, + "recorded_at": 1789783554202, "record": { - "seq": 17, + "seq": 18, "origin": "external", - "recorded_at": 1789709597134, + "recorded_at": 1789783554202, "body": { "event": "step.finished", "firing": 2, @@ -2856,7 +3052,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 17 + "duration_ms": 31 }, "context_updates": { "failure_class": "", @@ -2876,16 +3072,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 40, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 43, "kind": "petri", - "id": "execution 0/17/1", - "recorded_at": 1789709597134, + "id": "execution 0/18/1", + "recorded_at": 1789783554202, "item": { "id": { "log": "execution", "execution": 0, - "seq": 17, + "seq": 18, "index": 1 }, "origin": "derived", @@ -2927,7 +3123,7 @@ "role": "none" } }, - "recorded_at": 1789709597134, + "recorded_at": 1789783554202, "derived": { "event": "visit.completed", "outcome": { @@ -2942,7 +3138,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 17 + "duration_ms": 31 }, "context_updates": { "failure_class": "", @@ -2959,21 +3155,26 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 41, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 44, "kind": "platform", - "id": "9", - "recorded_at": 1789709597134, + "id": "11", + "recorded_at": 1789783554307, "item": { - "seq": 9, - "recorded_at": 1789709597134, + "seq": 11, + "recorded_at": 1789783554307, "record": { "kind": "checkpoint", "execution": 0, "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "d55c6e89fe209be998b0c18db7c4590315af1841", + "git_commit_sha": "510e5b2c8c16458b679d288f7eee6183f52d7707", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, "operation": { "execution": 0, "decision": { @@ -2992,16 +3193,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 42, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 45, "kind": "petri", - "id": "execution 0/18/0", - "recorded_at": 1789709597135, + "id": "execution 0/19/0", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 18, + "seq": 19, "index": 0 }, "origin": "external", @@ -3043,11 +3244,11 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "record": { - "seq": 18, + "seq": 19, "origin": "external", - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "body": { "event": "routing.resolved", "decision_id": { @@ -3085,6 +3286,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3099,16 +3301,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 43, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 46, "kind": "petri", - "id": "execution 0/18/1", - "recorded_at": 1789709597135, + "id": "execution 0/19/1", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 18, + "seq": 19, "index": 1 }, "origin": "derived", @@ -3130,6 +3332,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3146,7 +3349,7 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "derived": { "event": "visit.started", "inputs": [ @@ -3169,16 +3372,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 44, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 47, "kind": "petri", - "id": "execution 0/18/2", - "recorded_at": 1789709597135, + "id": "execution 0/19/2", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 18, + "seq": 19, "index": 2 }, "origin": "derived", @@ -3200,6 +3403,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3216,7 +3420,7 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -3224,16 +3428,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 45, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 48, "kind": "petri", - "id": "execution 0/19/0", - "recorded_at": 1789709597135, + "id": "execution 0/20/0", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 19, + "seq": 20, "index": 0 }, "origin": "core", @@ -3275,11 +3479,11 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "record": { - "seq": 19, + "seq": 20, "origin": "core", - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "body": { "event": "route.applied", "kind": "edge", @@ -3302,6 +3506,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3316,16 +3521,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 46, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 49, "kind": "petri", - "id": "execution 0/20/0", - "recorded_at": 1789709597135, + "id": "execution 0/21/0", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 20, + "seq": 21, "index": 0 }, "origin": "core", @@ -3367,11 +3572,11 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "record": { - "seq": 20, + "seq": 21, "origin": "core", - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "body": { "event": "token.emitted", "edge": 2, @@ -3391,16 +3596,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 47, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 50, "kind": "petri", - "id": "execution 0/21/0", - "recorded_at": 1789709597135, + "id": "execution 0/22/0", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 21, + "seq": 22, "index": 0 }, "origin": "external", @@ -3422,6 +3627,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3438,11 +3644,11 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "record": { - "seq": 21, + "seq": 22, "origin": "external", - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "body": { "event": "admission.decided", "decision_id": { @@ -3458,16 +3664,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 48, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 51, "kind": "petri", - "id": "execution 0/22/0", - "recorded_at": 1789709597135, + "id": "execution 0/23/0", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 22, + "seq": 23, "index": 0 }, "origin": "external", @@ -3489,6 +3695,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3505,11 +3712,11 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "record": { - "seq": 22, + "seq": 23, "origin": "external", - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "body": { "event": "step.started", "firing": 3, @@ -3519,16 +3726,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 49, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 52, "kind": "petri", - "id": "execution 0/22/1", - "recorded_at": 1789709597135, + "id": "execution 0/23/1", + "recorded_at": 1789783554308, "item": { "id": { "log": "execution", "execution": 0, - "seq": 22, + "seq": 23, "index": 1 }, "origin": "derived", @@ -3550,6 +3757,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3566,7 +3774,7 @@ "role": "none" } }, - "recorded_at": 1789709597135, + "recorded_at": 1789783554308, "derived": { "event": "wait.state.changed", "state": "running" @@ -3574,16 +3782,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 50, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 53, "kind": "petri", - "id": "execution 0/23/0", - "recorded_at": 1789709597264, + "id": "execution 0/24/0", + "recorded_at": 1789783555020, "item": { "id": { "log": "execution", "execution": 0, - "seq": 23, + "seq": 24, "index": 0 }, "origin": "external", @@ -3605,6 +3813,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3621,11 +3830,11 @@ "role": "none" } }, - "recorded_at": 1789709597264, + "recorded_at": 1789783555020, "record": { - "seq": 23, + "seq": 24, "origin": "external", - "recorded_at": 1789709597264, + "recorded_at": 1789783555020, "body": { "event": "step.progress.recorded", "firing": 3, @@ -3638,7 +3847,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "67996dc3f38bf41af0da8b24a0afebb2277554e1", + "git_commit_sha": "66c55d2858904b2bb1eb2a42c6a60932920d7633", "reused": false } } @@ -3656,7 +3865,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "67996dc3f38bf41af0da8b24a0afebb2277554e1", + "git_commit_sha": "66c55d2858904b2bb1eb2a42c6a60932920d7633", "reused": false } } @@ -3665,16 +3874,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 51, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 54, "kind": "petri", - "id": "execution 0/24/0", - "recorded_at": 1789709597264, + "id": "execution 0/25/0", + "recorded_at": 1789783555020, "item": { "id": { "log": "execution", "execution": 0, - "seq": 24, + "seq": 25, "index": 0 }, "origin": "external", @@ -3696,6 +3905,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3712,11 +3922,11 @@ "role": "none" } }, - "recorded_at": 1789709597264, + "recorded_at": 1789783555020, "record": { - "seq": 24, + "seq": 25, "origin": "external", - "recorded_at": 1789709597264, + "recorded_at": 1789783555020, "body": { "event": "step.finished", "firing": 3, @@ -3730,7 +3940,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 35 + "duration_ms": 57 }, "context_updates": { "command.output": "", @@ -3746,16 +3956,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 52, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 55, "kind": "petri", - "id": "execution 0/24/1", - "recorded_at": 1789709597264, + "id": "execution 0/25/1", + "recorded_at": 1789783555020, "item": { "id": { "log": "execution", "execution": 0, - "seq": 24, + "seq": 25, "index": 1 }, "origin": "derived", @@ -3777,6 +3987,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3793,7 +4004,7 @@ "role": "none" } }, - "recorded_at": 1789709597264, + "recorded_at": 1789783555020, "derived": { "event": "visit.completed", "outcome": { @@ -3805,7 +4016,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 35 + "duration_ms": 57 }, "context_updates": { "command.output": "", @@ -3818,21 +4029,26 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 53, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 56, "kind": "platform", - "id": "10", - "recorded_at": 1789709597264, + "id": "12", + "recorded_at": 1789783555119, "item": { - "seq": 10, - "recorded_at": 1789709597264, + "seq": 12, + "recorded_at": 1789783555119, "record": { "kind": "checkpoint", "execution": 0, "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "67996dc3f38bf41af0da8b24a0afebb2277554e1", + "git_commit_sha": "66c55d2858904b2bb1eb2a42c6a60932920d7633", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, "operation": { "execution": 0, "decision": { @@ -3851,16 +4067,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 54, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 57, "kind": "petri", - "id": "execution 0/25/0", - "recorded_at": 1789709597265, + "id": "execution 0/26/0", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 25, + "seq": 26, "index": 0 }, "origin": "external", @@ -3882,6 +4098,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -3898,11 +4115,11 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "record": { - "seq": 25, + "seq": 26, "origin": "external", - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "body": { "event": "routing.resolved", "decision_id": { @@ -3948,16 +4165,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 55, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 58, "kind": "petri", - "id": "execution 0/25/1", - "recorded_at": 1789709597265, + "id": "execution 0/26/1", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 25, + "seq": 26, "index": 1 }, "origin": "derived", @@ -3989,7 +4206,7 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "derived": { "event": "visit.started", "inputs": [ @@ -4009,16 +4226,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 56, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 59, "kind": "petri", - "id": "execution 0/25/2", - "recorded_at": 1789709597265, + "id": "execution 0/26/2", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 25, + "seq": 26, "index": 2 }, "origin": "derived", @@ -4050,7 +4267,7 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -4058,16 +4275,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 57, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 60, "kind": "petri", - "id": "execution 0/26/0", - "recorded_at": 1789709597265, + "id": "execution 0/27/0", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 26, + "seq": 27, "index": 0 }, "origin": "core", @@ -4089,6 +4306,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -4105,11 +4323,11 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "record": { - "seq": 26, + "seq": 27, "origin": "core", - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "body": { "event": "route.applied", "kind": "edge", @@ -4140,16 +4358,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 58, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 61, "kind": "petri", - "id": "execution 0/27/0", - "recorded_at": 1789709597265, + "id": "execution 0/28/0", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 27, + "seq": 28, "index": 0 }, "origin": "core", @@ -4171,6 +4389,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpWwhqJ5/no", "edges": { "4": { "to": "exit", @@ -4187,11 +4406,11 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "record": { - "seq": 27, + "seq": 28, "origin": "core", - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "body": { "event": "token.emitted", "edge": 4, @@ -4208,16 +4427,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 59, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 62, "kind": "petri", - "id": "execution 0/28/0", - "recorded_at": 1789709597265, + "id": "execution 0/29/0", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 28, + "seq": 29, "index": 0 }, "origin": "external", @@ -4249,11 +4468,11 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "record": { - "seq": 28, + "seq": 29, "origin": "external", - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "body": { "event": "admission.decided", "decision_id": { @@ -4269,16 +4488,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 60, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 63, "kind": "petri", - "id": "execution 0/29/0", - "recorded_at": 1789709597265, + "id": "execution 0/30/0", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 30, "index": 0 }, "origin": "external", @@ -4310,11 +4529,11 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "record": { - "seq": 29, + "seq": 30, "origin": "external", - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "body": { "event": "step.started", "firing": 4, @@ -4324,16 +4543,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 61, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 64, "kind": "petri", - "id": "execution 0/29/1", - "recorded_at": 1789709597265, + "id": "execution 0/30/1", + "recorded_at": 1789783555121, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 30, "index": 1 }, "origin": "derived", @@ -4365,7 +4584,7 @@ "role": "none" } }, - "recorded_at": 1789709597265, + "recorded_at": 1789783555121, "derived": { "event": "wait.state.changed", "state": "running" @@ -4373,16 +4592,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 62, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 65, "kind": "petri", - "id": "execution 0/30/0", - "recorded_at": 1789709597370, + "id": "execution 0/31/0", + "recorded_at": 1789783555485, "item": { "id": { "log": "execution", "execution": 0, - "seq": 30, + "seq": 31, "index": 0 }, "origin": "external", @@ -4414,11 +4633,11 @@ "role": "none" } }, - "recorded_at": 1789709597370, + "recorded_at": 1789783555485, "record": { - "seq": 30, + "seq": 31, "origin": "external", - "recorded_at": 1789709597370, + "recorded_at": 1789783555485, "body": { "event": "step.progress.recorded", "firing": 4, @@ -4431,7 +4650,7 @@ "firing": 4, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "49d77497eb2088a5a84c05fe03824f20621e3a3b", + "git_commit_sha": "3a5e4349b77394aba3ffef05e359a6ca192f9708", "reused": false } } @@ -4449,7 +4668,7 @@ "firing": 4, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "49d77497eb2088a5a84c05fe03824f20621e3a3b", + "git_commit_sha": "3a5e4349b77394aba3ffef05e359a6ca192f9708", "reused": false } } @@ -4458,16 +4677,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 63, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 66, "kind": "petri", - "id": "execution 0/31/0", - "recorded_at": 1789709597370, + "id": "execution 0/32/0", + "recorded_at": 1789783555485, "item": { "id": { "log": "execution", "execution": 0, - "seq": 31, + "seq": 32, "index": 0 }, "origin": "external", @@ -4499,11 +4718,11 @@ "role": "none" } }, - "recorded_at": 1789709597370, + "recorded_at": 1789783555485, "record": { - "seq": 31, + "seq": 32, "origin": "external", - "recorded_at": 1789709597370, + "recorded_at": 1789783555485, "body": { "event": "step.finished", "firing": 4, @@ -4530,16 +4749,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 64, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 67, "kind": "petri", - "id": "execution 0/31/1", - "recorded_at": 1789709597370, + "id": "execution 0/32/1", + "recorded_at": 1789783555485, "item": { "id": { "log": "execution", "execution": 0, - "seq": 31, + "seq": 32, "index": 1 }, "origin": "derived", @@ -4571,7 +4790,7 @@ "role": "none" } }, - "recorded_at": 1789709597370, + "recorded_at": 1789783555485, "derived": { "event": "visit.completed", "outcome": { @@ -4593,21 +4812,26 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 65, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 68, "kind": "platform", - "id": "11", - "recorded_at": 1789709597370, + "id": "13", + "recorded_at": 1789783555630, "item": { - "seq": 11, - "recorded_at": 1789709597370, + "seq": 13, + "recorded_at": 1789783555630, "record": { "kind": "checkpoint", "execution": 0, "firing": 4, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "49d77497eb2088a5a84c05fe03824f20621e3a3b", + "git_commit_sha": "3a5e4349b77394aba3ffef05e359a6ca192f9708", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, "operation": { "execution": 0, "decision": { @@ -4626,50 +4850,16 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 66, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 69, "kind": "petri", - "id": "coordinator/4/0", - "recorded_at": 1789709597371, - "item": { - "id": { - "log": "coordinator", - "seq": 4, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "recorded_at": 1789709597371, - "record": { - "seq": 4, - "origin": "external", - "recorded_at": 1789709597371, - "body": { - "event": "execution.finished", - "execution": 0, - "exit": { - "terminal": { - "status": "success" - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 67, - "kind": "petri", - "id": "execution 0/32/0", - "recorded_at": 1789709597371, + "id": "execution 0/33/0", + "recorded_at": 1789783555633, "item": { "id": { "log": "execution", "execution": 0, - "seq": 32, + "seq": 33, "index": 0 }, "origin": "external", @@ -4701,11 +4891,11 @@ "role": "none" } }, - "recorded_at": 1789709597371, + "recorded_at": 1789783555633, "record": { - "seq": 32, + "seq": 33, "origin": "external", - "recorded_at": 1789709597371, + "recorded_at": 1789783555633, "body": { "event": "routing.resolved", "decision_id": { @@ -4723,11 +4913,66 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 68, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 70, + "kind": "platform", + "id": "14", + "recorded_at": 1789783555740, + "item": { + "seq": 14, + "recorded_at": 1789783555740, + "record": { + "kind": "run.diff", + "base_sha": "965e6fd20fa20aba86e49ce17906e3867904b548", + "head_sha": "3a5e4349b77394aba3ffef05e359a6ca192f9708", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 71, + "kind": "petri", + "id": "coordinator/4/0", + "recorded_at": 1789783555741, + "item": { + "id": { + "log": "coordinator", + "seq": 4, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "recorded_at": 1789783555741, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783555741, + "body": { + "event": "execution.finished", + "execution": 0, + "exit": { + "terminal": { + "status": "success" + } + } + } + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 72, "kind": "petri", "id": "coordinator/5/0", - "recorded_at": 1789709597371, + "recorded_at": 1789783555741, "item": { "id": { "log": "coordinator", @@ -4739,11 +4984,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709597371, + "recorded_at": 1789783555741, "record": { "seq": 5, "origin": "external", - "recorded_at": 1789709597371, + "recorded_at": 1789783555741, "body": { "event": "invocation.finished", "invocation": 0, @@ -4768,11 +5013,11 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 69, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 73, "kind": "petri", "id": "coordinator/6/0", - "recorded_at": 1789709597412, + "recorded_at": 1789783555827, "item": { "id": { "log": "coordinator", @@ -4780,12 +5025,49 @@ "index": 0 }, "origin": "external", - "context": {}, - "recorded_at": 1789709597412, + "context": { + "invocation": 0 + }, + "recorded_at": 1789783555827, "record": { "seq": 6, "origin": "external", - "recorded_at": 1789709597412, + "recorded_at": 1789783555827, + "body": { + "event": "scope.released", + "invocation": 0, + "lease": 0, + "scope": { + "declared": 0 + }, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696a89e0c30b0-691-0", + "outcome": "succeeded", + "retained": true + } + } + } + }, + { + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 74, + "kind": "petri", + "id": "coordinator/7/0", + "recorded_at": 1789783555828, + "item": { + "id": { + "log": "coordinator", + "seq": 7, + "index": 0 + }, + "origin": "external", + "context": {}, + "recorded_at": 1789783555828, + "record": { + "seq": 7, + "origin": "external", + "recorded_at": 1789783555828, "body": { "event": "run.finished", "status": "success" @@ -4794,14 +5076,14 @@ } }, { - "run_id": "01M2SG2E0BEBVXSJCT8MZE19FT", - "stream_seq": 70, + "run_id": "01M2VPKCKJ26JE3FNEJRZJCZK0", + "stream_seq": 75, "kind": "platform", - "id": "12", - "recorded_at": 1789709597416, + "id": "15", + "recorded_at": 1789783555840, "item": { - "seq": 12, - "recorded_at": 1789709597416, + "seq": 15, + "recorded_at": 1789783555840, "record": { "kind": "run.lifecycle", "transition": "succeeded", diff --git a/apps/fabro-web/app/test-fixtures/petri/hello.json b/apps/fabro-web/app/test-fixtures/petri/hello.json index 31eedc4c3..c7f6fe4ed 100644 --- a/apps/fabro-web/app/test-fixtures/petri/hello.json +++ b/apps/fabro-web/app/test-fixtures/petri/hello.json @@ -1,9 +1,9 @@ { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "projection": { "title": "Say hello and demonstrate a basic Fabro workflow", "spec": { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "settings": { "project": { "name": null, @@ -14,11 +14,13 @@ "name": null, "description": null, "graph": "workflow.fabro", - "metadata": {}, - "engine": "petri" + "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Say hello and demonstrate a basic Fabro workflow" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -109,14 +111,25 @@ "graph": { "name": "Hello", "nodes": { + "greet": { + "id": "greet", + "attrs": { + "prompt": { + "String": "Add a haiku to the README" + }, + "label": { + "String": "Greet" + } + } + }, "start": { "id": "start", "attrs": { - "label": { - "String": "Start" - }, "shape": { "String": "Mdiamond" + }, + "label": { + "String": "Start" } } }, @@ -130,17 +143,6 @@ "String": "Msquare" } } - }, - "greet": { - "id": "greet", - "attrs": { - "prompt": { - "String": "Add a haiku to the README" - }, - "label": { - "String": "Greet" - } - } } }, "edges": [ @@ -166,12 +168,12 @@ }, "graph_source": "digraph Hello {\n graph [goal=\"Say hello and demonstrate a basic Fabro workflow\"]\n rankdir=LR\n\n start [shape=Mdiamond, label=\"Start\"]\n exit [shape=Msquare, label=\"Exit\"]\n\n greet [label=\"Greet\", prompt=\"Add a haiku to the README\"]\n\n start -> greet -> exit\n}\n", "workflow_slug": "workflow", - "workflow_version_id": "170dd4ba80b17475c7c2ad832fe0765d26ed889b45f4c923e8cc590fa56ceee2", + "workflow_version_id": "3aba4a48a86eda3c3043c582f780fa46adc7c531e015733569130d4aaa0fc48f", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpMzvKN4" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpItGaRs" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpMzvKN4", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpItGaRs", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -186,74 +188,145 @@ "auth_method": "dev_token" } }, - "spec_blob": "f47d0e4c48a1e5ee5ec9dcc377e494e95f1b079cff233a850cd7483cce99864b", - "engine": { - "kind": "petri", + "definition_blob": "a1b423f152cfc1ebba2ccea4eacaa393a40a317d22c0a91fe816a148c1c63283", + "spec_blob": "b7080f38f52a5f4186f597552fe6fb51526d2508346f25f9de259ce61083f260", + "admission": { "graph": { - "blob": "11a2b8697a0f230a5e2e764ee5540136c443c8336479e1ad89f7dc6e502eb44f", - "digest": "11a2b8697a0f230a5e2e764ee5540136c443c8336479e1ad89f7dc6e502eb44f" + "blob": "3d5fa6773611db781782ec6d3b6e9a79d1542c6ac2d5bcdeed010cc68c794a58", + "digest": "3d5fa6773611db781782ec6d3b6e9a79d1542c6ac2d5bcdeed010cc68c794a58" } } }, - "web_url": "http://localhost:3000/runs/01M2SG2E0BHHDQEF0ZKBQXR921", + "web_url": "http://localhost:3000/runs/01M2VPKCM0SYNCF8Q7A3QCG0P6", "start": { - "start_time": "2026-09-18T05:33:16.741Z" + "start_time": "2026-09-19T02:05:52.792Z", + "run_branch": "fabro/run/01M2VPKCM0SYNCF8Q7A3QCG0P6", + "base_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b" }, "status": { "kind": "succeeded", "reason": "completed" }, - "status_updated_at": "2026-09-18T05:33:17.534Z", - "last_event_at": "2026-09-18T05:33:17.538Z", + "status_updated_at": "2026-09-19T02:05:55.638Z", + "last_event_at": "2026-09-19T02:05:55.714Z", "pending_control": null, "checkpoints": [ { - "seq": 28, + "seq": 26, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.013Z", + "timestamp": "2026-09-19T02:05:53.536Z", "current_node": "start", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "4e6cae6457c67dff216f14eaa83d942a15dd49a0" + "git_commit_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b" }, "diff": {} }, { - "seq": 57, + "seq": 53, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.390Z", + "timestamp": "2026-09-19T02:05:54.962Z", "current_node": "greet", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "577da173f630270470d5b7e484b0b4838f6e2506" + "git_commit_sha": "531cb7e8e33e491ed9d8bdc3bfb1820976a0f57e" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 61, + "seq": 65, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.492Z", + "timestamp": "2026-09-19T02:05:55.466Z", "current_node": "exit", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "fc290eb55d3149ca2be57b3e39ee609904a5663d" + "git_commit_sha": "b1d707486ad86083f78cb6dc86cebbb4a37632e9" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } } ], "conclusion": { - "timestamp": "2026-09-18T05:33:17.534Z", + "timestamp": "2026-09-19T02:05:55.638Z", "status": "succeeded", "timing": { - "wall_time_ms": 793, - "inference_time_ms": 0, + "wall_time_ms": 2846, + "inference_time_ms": 3, "tool_time_ms": 0, - "active_time_ms": 0 + "active_time_ms": 3 }, - "final_git_commit_sha": "fc290eb55d3149ca2be57b3e39ee609904a5663d", + "final_git_commit_sha": "b1d707486ad86083f78cb6dc86cebbb4a37632e9", + "stages": [ + { + "stage_id": "start", + "stage_label": "start", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "greet", + "stage_label": "greet", + "timing": { + "wall_time_ms": 480, + "inference_time_ms": 3, + "tool_time_ms": 0, + "active_time_ms": 3 + }, + "usage": { + "tokens": { + "input": 1, + "output": 5, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + }, + "cost": { + "usd_micros": 77, + "source": "catalog" + } + }, + "retries": 0 + }, + { + "stage_id": "exit", + "stage_label": "exit", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + } + ], "usage": { "tokens": { "input": 1, @@ -268,27 +341,47 @@ } }, "total_retries": 0, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, "sandbox": { - "kind": "planned", + "kind": "ready", "plan": { "provider": "local" + }, + "instance": { + "provider": "local", + "runtime": { + "id": "host-g18d696a89b0378d8-445-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2VPKCAY21HNVPD5Y50C6QQB/storage/scratch/20260918-01M2VPKCM0SYNCF8Q7A3QCG0P6/petri/scopes/invocation-0-scope-0/work" + }, + "ready_duration_ms": 47, + "retained": true } }, "pull_request": null, "superseded_by": null, + "git_identity": { + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, "pending_interviews": {}, "stages": { "greet@1": { - "first_event_seq": 331, + "first_event_seq": 898, "prompt": null, "response": "A haiku, added.", "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.390Z" + "timestamp": "2026-09-19T02:05:54.749Z" }, "provider_used": { "mode": "agent", @@ -303,14 +396,14 @@ "output_bytes": 16, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.013Z", + "started_at": "2026-09-19T02:05:53.537Z", "handler": "agent", "graph_visit": 1, "timing": { - "wall_time_ms": 268, - "inference_time_ms": 0, + "wall_time_ms": 480, + "inference_time_ms": 3, "tool_time_ms": 0, - "active_time_ms": 0 + "active_time_ms": 3 }, "usage": { "tokens": { @@ -329,8 +422,127 @@ "provider": "openai", "model_id": "gpt-5.4" }, + "agent_tools": [ + { + "name": "apply_patch", + "description": "Use the `apply_patch` tool to edit files. This is a FREEFORM tool, so do not wrap the patch in JSON.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "close_agent", + "description": "Close a running or completed subagent that is no longer needed.", + "source": { + "kind": "native" + }, + "category": "subagent", + "invoked": false + }, + { + "name": "glob", + "description": "Find files by search-root-relative path using a glob pattern. Use path to choose the search root. `*` stays within one path segment and `**` searches recursively. Patterns match files, so a trailing `/` is rejected. Prefer this over shell find or ls when locating repository files.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "grep", + "description": "Search file contents with a regex pattern. Use path to choose the search root, glob_filter to limit matching files, case_insensitive for case folding, and max_results to cap output.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "read_file", + "description": "Read files before editing them. Returns line-numbered text and supports offset/limit for large files. Use this instead of shell cat, head, tail, or sed when inspecting repository files.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "request_user_input", + "description": "Ask the human one or more questions and wait for their answers before continuing this stage.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "send_input", + "description": "Send a follow-up message to a subagent. A running agent receives it at a safe turn boundary. A completed agent starts another turn in the same session with its existing history.", + "source": { + "kind": "native" + }, + "category": "subagent", + "invoked": false + }, + { + "name": "shell", + "description": "Execute Bash commands for terminal operations, package managers, tests and builds. Use dedicated tools for file reads, file edits, filename searches, and content searches. Provide timeout_ms for long-running commands.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "spawn_agent", + "description": "Spawn a subagent for independent work or context isolation. Use it for tasks that can proceed separately, and avoid duplicating the same work in the parent session.", + "source": { + "kind": "native" + }, + "category": "subagent", + "invoked": false + }, + { + "name": "update_plan", + "description": "Update the multi-step plan for the current task. Submit the entire plan; existing steps are reconciled by exact step text.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "wait", + "description": "Wait for a subagent to complete, then use the result to synthesize the outcome for the user. Omit agent_id to wait for every running subagent at once.", + "source": { + "kind": "native" + }, + "category": "subagent", + "invoked": false + }, + { + "name": "web_fetch", + "description": "Fetch content from a URL that starts with http:// or https://. Pass a prompt to extract specific information or summarize the page; omit prompt to return the page content.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + }, + { + "name": "write_file", + "description": "Create new files, or overwrite an existing file only when replacement is explicitly intended. Prefer edit_file for targeted changes to existing files because write_file overwrites the full file content.", + "source": { + "kind": "native" + }, + "category": "other", + "invoked": false + } + ], "agent": { - "root_session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "root_session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "route": { "provider": "openai", "model": "gpt-5.4" @@ -359,7 +571,7 @@ "usage_percent": 0.00009523809523809524, "count_method": "response_usage_scaled_breakdown", "staleness": "live", - "generated_at": "2026-09-18T05:33:17.281Z", + "generated_at": "2026-09-19T02:05:54.013Z", "breakdown": [ { "category": "system_prompt", @@ -429,7 +641,7 @@ "usage_percent": 0.00009523809523809524, "count_method": "response_usage_scaled_breakdown", "staleness": "live", - "generated_at": "2026-09-18T05:33:17.281Z", + "generated_at": "2026-09-19T02:05:54.013Z", "breakdown": [ { "category": "system_prompt", @@ -472,29 +684,30 @@ }, "state": "succeeded" }, - "exit@1": { - "first_event_seq": 708, + "start@1": { + "first_event_seq": 173, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.492Z" + "timestamp": "2026-09-19T02:05:53.501Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, - "output": null, + "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpItGaRs is not a Git repository; the workspace starts empty\n", + "output_bytes": 130, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.390Z", - "handler": "exit", + "started_at": "2026-09-19T02:05:52.812Z", + "handler": "start", "graph_visit": 1, "timing": { - "wall_time_ms": 0, + "wall_time_ms": 39, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 @@ -510,30 +723,29 @@ }, "state": "succeeded" }, - "start@1": { - "first_event_seq": 61, + "exit@1": { + "first_event_seq": 2324, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.013Z" + "timestamp": "2026-09-19T02:05:55.340Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, - "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpMzvKN4 is not a Git repository; the workspace starts empty\n", - "output_bytes": 130, + "output": null, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:16.743Z", - "handler": "start", + "started_at": "2026-09-19T02:05:54.963Z", + "handler": "exit", "graph_visit": 1, "timing": { - "wall_time_ms": 9, + "wall_time_ms": 0, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 @@ -553,18 +765,18 @@ }, "stream": [ { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 1, "kind": "platform", "id": "1", - "recorded_at": 1789709596683, + "recorded_at": 1789783552667, "item": { "seq": 1, - "recorded_at": 1789709596683, + "recorded_at": 1789783552667, "record": { "kind": "run.created", "spec": { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "settings": { "project": { "name": null, @@ -575,11 +787,13 @@ "name": null, "description": null, "graph": "workflow.fabro", - "metadata": {}, - "engine": "petri" + "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Say hello and demonstrate a basic Fabro workflow" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -673,11 +887,22 @@ "start": { "id": "start", "attrs": { - "shape": { - "String": "Mdiamond" - }, "label": { "String": "Start" + }, + "shape": { + "String": "Mdiamond" + } + } + }, + "exit": { + "id": "exit", + "attrs": { + "shape": { + "String": "Msquare" + }, + "label": { + "String": "Exit" } } }, @@ -691,17 +916,6 @@ "String": "Add a haiku to the README" } } - }, - "exit": { - "id": "exit", - "attrs": { - "label": { - "String": "Exit" - }, - "shape": { - "String": "Msquare" - } - } } }, "edges": [ @@ -727,12 +941,12 @@ }, "graph_source": "digraph Hello {\n graph [goal=\"Say hello and demonstrate a basic Fabro workflow\"]\n rankdir=LR\n\n start [shape=Mdiamond, label=\"Start\"]\n exit [shape=Msquare, label=\"Exit\"]\n\n greet [label=\"Greet\", prompt=\"Add a haiku to the README\"]\n\n start -> greet -> exit\n}\n", "workflow_slug": "workflow", - "workflow_version_id": "170dd4ba80b17475c7c2ad832fe0765d26ed889b45f4c923e8cc590fa56ceee2", + "workflow_version_id": "3aba4a48a86eda3c3043c582f780fa46adc7c531e015733569130d4aaa0fc48f", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpMzvKN4" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpItGaRs" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpMzvKN4", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpItGaRs", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -747,29 +961,29 @@ "auth_method": "dev_token" } }, - "spec_blob": "f47d0e4c48a1e5ee5ec9dcc377e494e95f1b079cff233a850cd7483cce99864b", - "engine": { - "kind": "petri", + "definition_blob": "a1b423f152cfc1ebba2ccea4eacaa393a40a317d22c0a91fe816a148c1c63283", + "spec_blob": "b7080f38f52a5f4186f597552fe6fb51526d2508346f25f9de259ce61083f260", + "admission": { "graph": { - "blob": "11a2b8697a0f230a5e2e764ee5540136c443c8336479e1ad89f7dc6e502eb44f", - "digest": "11a2b8697a0f230a5e2e764ee5540136c443c8336479e1ad89f7dc6e502eb44f" + "blob": "3d5fa6773611db781782ec6d3b6e9a79d1542c6ac2d5bcdeed010cc68c794a58", + "digest": "3d5fa6773611db781782ec6d3b6e9a79d1542c6ac2d5bcdeed010cc68c794a58" } } }, "title": "Say hello and demonstrate a basic Fabro workflow", - "web_url": "http://localhost:3000/runs/01M2SG2E0BHHDQEF0ZKBQXR921" + "web_url": "http://localhost:3000/runs/01M2VPKCM0SYNCF8Q7A3QCG0P6" } } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 2, "kind": "platform", "id": "2", - "recorded_at": 1789709596731, + "recorded_at": 1789783552670, "item": { "seq": 2, - "recorded_at": 1789709596731, + "recorded_at": 1789783552670, "record": { "kind": "run.lifecycle", "transition": "submitted", @@ -780,14 +994,14 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 3, "kind": "platform", "id": "3", - "recorded_at": 1789709596736, + "recorded_at": 1789783552712, "item": { "seq": 3, - "recorded_at": 1789709596736, + "recorded_at": 1789783552712, "record": { "kind": "run.lifecycle", "transition": "start_requested", @@ -796,14 +1010,14 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 4, "kind": "platform", "id": "4", - "recorded_at": 1789709596736, + "recorded_at": 1789783552719, "item": { "seq": 4, - "recorded_at": 1789709596736, + "recorded_at": 1789783552719, "record": { "kind": "run.lifecycle", "transition": "runnable", @@ -815,14 +1029,14 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 5, "kind": "platform", "id": "5", - "recorded_at": 1789709596738, + "recorded_at": 1789783552736, "item": { "seq": 5, - "recorded_at": 1789709596738, + "recorded_at": 1789783552736, "record": { "kind": "run.lifecycle", "transition": "starting", @@ -833,14 +1047,14 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 6, "kind": "platform", "id": "6", - "recorded_at": 1789709596739, + "recorded_at": 1789783552749, "item": { "seq": 6, - "recorded_at": 1789709596739, + "recorded_at": 1789783552749, "record": { "kind": "run.lifecycle", "transition": "running", @@ -851,11 +1065,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 7, "kind": "petri", "id": "coordinator/0/0", - "recorded_at": 1789709596741, + "recorded_at": 1789783552792, "item": { "id": { "log": "coordinator", @@ -866,15 +1080,15 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596741, + "recorded_at": 1789783552792, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596741, + "recorded_at": 1789783552792, "body": { "event": "run.started", - "format_version": 5, - "key": "01M2SG2E0BHHDQEF0ZKBQXR921", + "format_version": 7, + "key": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "root": 0, "middleware_chain": [ "circuit-breaker" @@ -884,11 +1098,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 8, "kind": "petri", "id": "coordinator/1/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783552802, "item": { "id": { "log": "coordinator", @@ -897,24 +1111,24 @@ }, "origin": "external", "context": {}, - "recorded_at": 1789709596742, + "recorded_at": 1789783552802, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783552802, "body": { "event": "graph.registered", - "digest": "11a2b8697a0f230a5e2e764ee5540136c443c8336479e1ad89f7dc6e502eb44f" + "digest": "3d5fa6773611db781782ec6d3b6e9a79d1542c6ac2d5bcdeed010cc68c794a58" } } } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 9, "kind": "petri", "id": "coordinator/2/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783552805, "item": { "id": { "log": "coordinator", @@ -925,16 +1139,16 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552805, "record": { "seq": 2, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783552805, "body": { "event": "invocation.declared", "invocation": 0, "call": null, - "graph": "11a2b8697a0f230a5e2e764ee5540136c443c8336479e1ad89f7dc6e502eb44f", + "graph": "3d5fa6773611db781782ec6d3b6e9a79d1542c6ac2d5bcdeed010cc68c794a58", "context": {}, "secret_bindings": "none", "sandbox": "isolated" @@ -943,11 +1157,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 10, "kind": "petri", "id": "coordinator/3/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783552808, "item": { "id": { "log": "coordinator", @@ -959,11 +1173,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783552808, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783552808, "body": { "event": "execution.declared", "execution": 0, @@ -991,11 +1205,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 11, "kind": "petri", "id": "execution 0/0/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "item": { "id": { "log": "execution", @@ -1008,11 +1222,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "body": { "event": "execution.started", "entry": "graph_entries", @@ -1025,11 +1239,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 12, "kind": "petri", "id": "execution 0/1/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "item": { "id": { "log": "execution", @@ -1042,11 +1256,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "body": { "event": "admission.decided", "decision_id": "execution_start", @@ -1057,11 +1271,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 13, "kind": "petri", "id": "execution 0/1/1", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "item": { "id": { "log": "execution", @@ -1105,7 +1319,7 @@ "role": "none" } }, - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "derived": { "event": "visit.started", "inputs": [ @@ -1120,11 +1334,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 14, "kind": "petri", "id": "execution 0/1/2", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "item": { "id": { "log": "execution", @@ -1168,7 +1382,7 @@ "role": "none" } }, - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -1176,11 +1390,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 15, "kind": "petri", "id": "execution 0/2/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "item": { "id": { "log": "execution", @@ -1193,11 +1407,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "record": { "seq": 2, "origin": "core", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "body": { "event": "token.emitted", "edge": 2, @@ -1209,11 +1423,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 16, "kind": "petri", "id": "execution 0/3/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "item": { "id": { "log": "execution", @@ -1257,11 +1471,11 @@ "role": "none" } }, - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596743, + "recorded_at": 1789783552812, "body": { "event": "admission.decided", "decision_id": { @@ -1277,11 +1491,11 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", "stream_seq": 17, "kind": "petri", "id": "execution 0/4/0", - "recorded_at": 1789709596829, + "recorded_at": 1789783552859, "item": { "id": { "log": "execution", @@ -1294,6 +1508,42 @@ "invocation": 0, "execution": 0 }, + "recorded_at": 1789783552859, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783552859, + "body": { + "event": "scope.acquired", + "scope": 0, + "lease": 0, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696a89b0378d8-445-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPKCM0SYNCF8Q7A3QCG0P6/petri/scopes/invocation-0-scope-0/work", + "duration_ms": 47 + } + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 18, + "kind": "petri", + "id": "execution 0/5/0", + "recorded_at": 1789783552859, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 5, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, "subject": { "node": { "id": 0, @@ -1325,11 +1575,11 @@ "role": "none" } }, - "recorded_at": 1789709596829, + "recorded_at": 1789783552859, "record": { - "seq": 4, + "seq": 5, "origin": "external", - "recorded_at": 1789709596829, + "recorded_at": 1789783552859, "body": { "event": "step.started", "firing": 1, @@ -1339,16 +1589,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 18, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 19, "kind": "petri", - "id": "execution 0/4/1", - "recorded_at": 1789709596829, + "id": "execution 0/5/1", + "recorded_at": 1789783552859, "item": { "id": { "log": "execution", "execution": 0, - "seq": 4, + "seq": 5, "index": 1 }, "origin": "derived", @@ -1387,7 +1637,7 @@ "role": "none" } }, - "recorded_at": 1789709596829, + "recorded_at": 1789783552859, "derived": { "event": "wait.state.changed", "state": "running" @@ -1395,16 +1645,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 19, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 20, "kind": "petri", - "id": "execution 0/5/0", - "recorded_at": 1789709596838, + "id": "execution 0/6/0", + "recorded_at": 1789783552899, "item": { "id": { "log": "execution", "execution": 0, - "seq": 5, + "seq": 6, "index": 0 }, "origin": "external", @@ -1443,18 +1693,18 @@ "role": "none" } }, - "recorded_at": 1789709596838, + "recorded_at": 1789783552899, "record": { - "seq": 5, + "seq": 6, "origin": "external", - "recorded_at": 1789709596838, + "recorded_at": 1789783552899, "body": { "event": "step.progress.recorded", "firing": 1, "ev": { "log": { "stream": "stderr", - "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpMzvKN4 is not a Git repository; the workspace starts empty" + "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpItGaRs is not a Git repository; the workspace starts empty" } } } @@ -1462,16 +1712,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 20, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 21, "kind": "petri", - "id": "execution 0/6/0", - "recorded_at": 1789709597012, + "id": "execution 0/7/0", + "recorded_at": 1789783553501, "item": { "id": { "log": "execution", "execution": 0, - "seq": 6, + "seq": 7, "index": 0 }, "origin": "external", @@ -1510,11 +1760,11 @@ "role": "none" } }, - "recorded_at": 1789709597012, + "recorded_at": 1789783553501, "record": { - "seq": 6, + "seq": 7, "origin": "external", - "recorded_at": 1789709597012, + "recorded_at": 1789783553501, "body": { "event": "step.progress.recorded", "firing": 1, @@ -1527,7 +1777,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "4e6cae6457c67dff216f14eaa83d942a15dd49a0", + "git_commit_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b", "reused": false } } @@ -1545,7 +1795,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "4e6cae6457c67dff216f14eaa83d942a15dd49a0", + "git_commit_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b", "reused": false } } @@ -1554,16 +1804,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 21, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 22, "kind": "petri", - "id": "execution 0/7/0", - "recorded_at": 1789709597013, + "id": "execution 0/8/0", + "recorded_at": 1789783553501, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 0 }, "origin": "external", @@ -1602,11 +1852,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553501, "record": { - "seq": 7, + "seq": 8, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553501, "body": { "event": "step.finished", "firing": 1, @@ -1618,7 +1868,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 9 + "duration_ms": 39 }, "context_updates": { "failure_class": "", @@ -1634,16 +1884,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 22, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 23, "kind": "petri", - "id": "execution 0/7/1", - "recorded_at": 1789709597013, + "id": "execution 0/8/1", + "recorded_at": 1789783553501, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 1 }, "origin": "derived", @@ -1682,7 +1932,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553501, "derived": { "event": "visit.completed", "outcome": { @@ -1692,7 +1942,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 9 + "duration_ms": 39 }, "context_updates": { "failure_class": "", @@ -1705,16 +1955,91 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 23, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 24, + "kind": "platform", + "id": "7", + "recorded_at": 1789783553497, + "item": { + "seq": 7, + "recorded_at": 1789783553497, + "record": { + "kind": "run.branch", + "run_branch": "fabro/run/01M2VPKCM0SYNCF8Q7A3QCG0P6", + "base_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b", + "workspace": "invocation-0-scope-0" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 25, + "kind": "platform", + "id": "8", + "recorded_at": 1789783553501, + "item": { + "seq": 8, + "recorded_at": 1789783553501, + "record": { + "kind": "git.identity", + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 26, + "kind": "platform", + "id": "9", + "recorded_at": 1789783553536, + "item": { + "seq": 9, + "recorded_at": 1789783553536, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 1, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b", + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 1, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 27, "kind": "petri", - "id": "execution 0/8/0", - "recorded_at": 1789709597013, + "id": "execution 0/9/0", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 0 }, "origin": "external", @@ -1753,11 +2078,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "record": { - "seq": 8, + "seq": 9, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "body": { "event": "routing.resolved", "decision_id": { @@ -1809,16 +2134,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 24, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 28, "kind": "petri", - "id": "execution 0/8/1", - "recorded_at": 1789709597013, + "id": "execution 0/9/1", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 1 }, "origin": "derived", @@ -1856,7 +2181,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "derived": { "event": "visit.started", "inputs": [ @@ -1875,16 +2200,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 25, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 29, "kind": "petri", - "id": "execution 0/8/2", - "recorded_at": 1789709597013, + "id": "execution 0/9/2", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 2 }, "origin": "derived", @@ -1922,7 +2247,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -1930,16 +2255,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 26, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 30, "kind": "petri", - "id": "execution 0/9/0", - "recorded_at": 1789709597013, + "id": "execution 0/10/0", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 9, + "seq": 10, "index": 0 }, "origin": "core", @@ -1978,11 +2303,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "record": { - "seq": 9, + "seq": 10, "origin": "core", - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "body": { "event": "route.applied", "kind": "edge", @@ -2019,16 +2344,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 27, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 31, "kind": "petri", - "id": "execution 0/10/0", - "recorded_at": 1789709597013, + "id": "execution 0/11/0", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 10, + "seq": 11, "index": 0 }, "origin": "core", @@ -2067,11 +2392,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "record": { - "seq": 10, + "seq": 11, "origin": "core", - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "body": { "event": "token.emitted", "edge": 0, @@ -2087,49 +2412,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 28, - "kind": "platform", - "id": "7", - "recorded_at": 1789709597013, - "item": { - "seq": 7, - "recorded_at": 1789709597013, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 1, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "4e6cae6457c67dff216f14eaa83d942a15dd49a0", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 1, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 1 - } - } - }, - { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 29, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 32, "kind": "petri", - "id": "execution 0/11/0", - "recorded_at": 1789709597013, + "id": "execution 0/12/0", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 11, + "seq": 12, "index": 0 }, "origin": "external", @@ -2167,11 +2459,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "record": { - "seq": 11, + "seq": 12, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "body": { "event": "admission.decided", "decision_id": { @@ -2187,16 +2479,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 30, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 33, "kind": "petri", - "id": "execution 0/12/0", - "recorded_at": 1789709597013, + "id": "execution 0/13/0", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 0 }, "origin": "external", @@ -2234,11 +2526,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "record": { - "seq": 12, + "seq": 13, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "body": { "event": "step.started", "firing": 2, @@ -2248,16 +2540,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 31, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 34, "kind": "petri", - "id": "execution 0/12/1", - "recorded_at": 1789709597013, + "id": "execution 0/13/1", + "recorded_at": 1789783553537, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 1 }, "origin": "derived", @@ -2295,7 +2587,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783553537, "derived": { "event": "wait.state.changed", "state": "running" @@ -2303,16 +2595,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 32, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 35, "kind": "petri", - "id": "execution 0/13/0", - "recorded_at": 1789709597014, + "id": "execution 0/14/0", + "recorded_at": 1789783553540, "item": { "id": { "log": "execution", "execution": 0, - "seq": 13, + "seq": 14, "index": 0 }, "origin": "external", @@ -2350,11 +2642,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553540, "record": { - "seq": 13, + "seq": 14, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553540, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2377,16 +2669,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 33, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 36, "kind": "petri", - "id": "execution 0/14/0", - "recorded_at": 1789709597014, + "id": "execution 0/15/0", + "recorded_at": 1789783553540, "item": { "id": { "log": "execution", "execution": 0, - "seq": 14, + "seq": 15, "index": 0 }, "origin": "external", @@ -2424,11 +2716,11 @@ "role": "none" } }, - "recorded_at": 1789709597014, + "recorded_at": 1789783553540, "record": { - "seq": 14, + "seq": 15, "origin": "external", - "recorded_at": 1789709597014, + "recorded_at": 1789783553540, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2459,16 +2751,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 34, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 37, "kind": "petri", - "id": "execution 0/15/0", - "recorded_at": 1789709597052, + "id": "execution 0/16/0", + "recorded_at": 1789783553609, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 0 }, "origin": "external", @@ -2506,11 +2798,11 @@ "role": "none" } }, - "recorded_at": 1789709597052, + "recorded_at": 1789783553609, "record": { - "seq": 15, + "seq": 16, "origin": "external", - "recorded_at": 1789709597052, + "recorded_at": 1789783553609, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2523,15 +2815,15 @@ "node": "greet", "event": { "seq": 1, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "SessionStarted": { "provider": "openai", "model": "gpt-5.4" } }, - "timestamp": "2026-09-18T05:33:17.052Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:53.608Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -2540,16 +2832,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 35, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 38, "kind": "petri", - "id": "execution 0/16/0", - "recorded_at": 1789709597195, + "id": "execution 0/17/0", + "recorded_at": 1789783553851, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 0 }, "origin": "external", @@ -2587,11 +2879,11 @@ "role": "none" } }, - "recorded_at": 1789709597195, + "recorded_at": 1789783553851, "record": { - "seq": 16, + "seq": 17, "origin": "external", - "recorded_at": 1789709597195, + "recorded_at": 1789783553851, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2604,7 +2896,7 @@ "node": "greet", "event": { "seq": 2, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "MemoryLoaded": { "profile": "openai", @@ -2613,8 +2905,8 @@ "budget_bytes": 32768 } }, - "timestamp": "2026-09-18T05:33:17.194Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:53.851Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -2623,16 +2915,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 36, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 39, "kind": "petri", - "id": "execution 0/17/0", - "recorded_at": 1789709597195, + "id": "execution 0/18/0", + "recorded_at": 1789783553852, "item": { "id": { "log": "execution", "execution": 0, - "seq": 17, + "seq": 18, "index": 0 }, "origin": "external", @@ -2670,11 +2962,11 @@ "role": "none" } }, - "recorded_at": 1789709597195, + "recorded_at": 1789783553852, "record": { - "seq": 17, + "seq": 18, "origin": "external", - "recorded_at": 1789709597195, + "recorded_at": 1789783553852, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2687,21 +2979,21 @@ "node": "greet", "event": { "seq": 3, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "SkillsDiscovered": { "profile": "openai", "source_dirs": [ "/Users/bhelmkamp/.fabro/skills", - "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2SG2DYCTTKW929NH2KXTGK1/storage/scratch/20260918-01M2SG2E0BHHDQEF0ZKBQXR921/petri/scopes/invocation-0-scope-0/work/.fabro/skills", - "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2SG2DYCTTKW929NH2KXTGK1/storage/scratch/20260918-01M2SG2E0BHHDQEF0ZKBQXR921/petri/scopes/invocation-0-scope-0/work/skills" + "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPKCM0SYNCF8Q7A3QCG0P6/petri/scopes/invocation-0-scope-0/work/.fabro/skills", + "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPKCM0SYNCF8Q7A3QCG0P6/petri/scopes/invocation-0-scope-0/work/skills" ], "skills": [], "skipped": [] } }, - "timestamp": "2026-09-18T05:33:17.194Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:53.851Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -2710,16 +3002,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 37, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 40, "kind": "petri", - "id": "execution 0/18/0", - "recorded_at": 1789709597195, + "id": "execution 0/19/0", + "recorded_at": 1789783553853, "item": { "id": { "log": "execution", "execution": 0, - "seq": 18, + "seq": 19, "index": 0 }, "origin": "external", @@ -2757,11 +3049,11 @@ "role": "none" } }, - "recorded_at": 1789709597195, + "recorded_at": 1789783553853, "record": { - "seq": 18, + "seq": 19, "origin": "external", - "recorded_at": 1789709597195, + "recorded_at": 1789783553853, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2778,11 +3070,11 @@ "source": "configured" }, { - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2SG2DYCTTKW929NH2KXTGK1/storage/scratch/20260918-01M2SG2E0BHHDQEF0ZKBQXR921/petri/scopes/invocation-0-scope-0/work/.fabro/skills", + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2VPKCAY21HNVPD5Y50C6QQB/storage/scratch/20260918-01M2VPKCM0SYNCF8Q7A3QCG0P6/petri/scopes/invocation-0-scope-0/work/.fabro/skills", "source": "project_fabro" }, { - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2SG2DYCTTKW929NH2KXTGK1/storage/scratch/20260918-01M2SG2E0BHHDQEF0ZKBQXR921/petri/scopes/invocation-0-scope-0/work/skills", + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2VPKCAY21HNVPD5Y50C6QQB/storage/scratch/20260918-01M2VPKCM0SYNCF8Q7A3QCG0P6/petri/scopes/invocation-0-scope-0/work/skills", "source": "project" } ] @@ -2793,16 +3085,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 38, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 41, "kind": "petri", - "id": "execution 0/19/0", - "recorded_at": 1789709597280, + "id": "execution 0/20/0", + "recorded_at": 1789783554001, "item": { "id": { "log": "execution", "execution": 0, - "seq": 19, + "seq": 20, "index": 0 }, "origin": "external", @@ -2840,11 +3132,186 @@ "role": "none" } }, - "recorded_at": 1789709597280, + "recorded_at": 1789783554001, "record": { - "seq": 19, + "seq": 20, "origin": "external", - "recorded_at": 1789709597280, + "recorded_at": 1789783554001, + "body": { + "event": "step.progress.recorded", + "firing": 2, + "ev": { + "custom": { + "kind": "attractor.tools", + "node": "greet", + "firing": 2, + "attempt": 1, + "session": "ses_d37e5647-a4e1-4767-a254-3ab489064914", + "tools": [ + { + "name": "apply_patch", + "description": "Use the `apply_patch` tool to edit files. This is a FREEFORM tool, so do not wrap the patch in JSON.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "close_agent", + "description": "Close a running or completed subagent that is no longer needed.", + "source": { + "kind": "native" + }, + "category": "subagent" + }, + { + "name": "glob", + "description": "Find files by search-root-relative path using a glob pattern. Use path to choose the search root. `*` stays within one path segment and `**` searches recursively. Patterns match files, so a trailing `/` is rejected. Prefer this over shell find or ls when locating repository files.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "grep", + "description": "Search file contents with a regex pattern. Use path to choose the search root, glob_filter to limit matching files, case_insensitive for case folding, and max_results to cap output.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "read_file", + "description": "Read files before editing them. Returns line-numbered text and supports offset/limit for large files. Use this instead of shell cat, head, tail, or sed when inspecting repository files.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "request_user_input", + "description": "Ask the human one or more questions and wait for their answers before continuing this stage.", + "source": { + "kind": "native" + }, + "category": "question" + }, + { + "name": "send_input", + "description": "Send a follow-up message to a subagent. A running agent receives it at a safe turn boundary. A completed agent starts another turn in the same session with its existing history.", + "source": { + "kind": "native" + }, + "category": "subagent" + }, + { + "name": "shell", + "description": "Execute Bash commands for terminal operations, package managers, tests and builds. Use dedicated tools for file reads, file edits, filename searches, and content searches. Provide timeout_ms for long-running commands.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "spawn_agent", + "description": "Spawn a subagent for independent work or context isolation. Use it for tasks that can proceed separately, and avoid duplicating the same work in the parent session.", + "source": { + "kind": "native" + }, + "category": "subagent" + }, + { + "name": "update_plan", + "description": "Update the multi-step plan for the current task. Submit the entire plan; existing steps are reconciled by exact step text.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "wait", + "description": "Wait for a subagent to complete, then use the result to synthesize the outcome for the user. Omit agent_id to wait for every running subagent at once.", + "source": { + "kind": "native" + }, + "category": "subagent" + }, + { + "name": "web_fetch", + "description": "Fetch content from a URL that starts with http:// or https://. Pass a prompt to extract specific information or summarize the page; omit prompt to return the page content.", + "source": { + "kind": "native" + }, + "category": "builtin" + }, + { + "name": "write_file", + "description": "Create new files, or overwrite an existing file only when replacement is explicitly intended. Prefer edit_file for targeted changes to existing files because write_file overwrites the full file content.", + "source": { + "kind": "native" + }, + "category": "builtin" + } + ] + } + } + } + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 42, + "kind": "petri", + "id": "execution 0/21/0", + "recorded_at": 1789783554007, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 21, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "subject": { + "node": { + "id": 2, + "name": "greet", + "kind": "attractor/agent", + "meta": { + "label": "Greet", + "shape": "box", + "kind": "agent", + "classes": [], + "span": { + "line": 8, + "column": 5 + }, + "edges": { + "1": { + "to": "exit", + "label": null + } + } + } + }, + "firing": 2, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "none" + } + }, + "recorded_at": 1789783554007, + "record": { + "seq": 21, + "origin": "external", + "recorded_at": 1789783554007, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2857,14 +3324,14 @@ "node": "greet", "event": { "seq": 4, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "UserInput": { "text": "Goal: Say hello and demonstrate a basic Fabro workflow\n\n\nAdd a haiku to the README" } }, - "timestamp": "2026-09-18T05:33:17.280Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.007Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -2873,16 +3340,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 39, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 43, "kind": "petri", - "id": "execution 0/20/0", - "recorded_at": 1789709597280, + "id": "execution 0/22/0", + "recorded_at": 1789783554010, "item": { "id": { "log": "execution", "execution": 0, - "seq": 20, + "seq": 22, "index": 0 }, "origin": "external", @@ -2920,11 +3387,11 @@ "role": "none" } }, - "recorded_at": 1789709597280, + "recorded_at": 1789783554010, "record": { - "seq": 20, + "seq": 22, "origin": "external", - "recorded_at": 1789709597280, + "recorded_at": 1789783554010, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2937,14 +3404,14 @@ "node": "greet", "event": { "seq": 5, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "LlmRequestStarted": { "requested_model": "gpt-5.4" } }, - "timestamp": "2026-09-18T05:33:17.280Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.010Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -2953,16 +3420,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 40, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 44, "kind": "petri", - "id": "execution 0/21/0", - "recorded_at": 1789709597281, + "id": "execution 0/23/0", + "recorded_at": 1789783554014, "item": { "id": { "log": "execution", "execution": 0, - "seq": 21, + "seq": 23, "index": 0 }, "origin": "external", @@ -3000,11 +3467,11 @@ "role": "none" } }, - "recorded_at": 1789709597281, + "recorded_at": 1789783554014, "record": { - "seq": 21, + "seq": 23, "origin": "external", - "recorded_at": 1789709597281, + "recorded_at": 1789783554014, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3017,14 +3484,14 @@ "node": "greet", "event": { "seq": 6, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "LlmFirstOutput": { "kind": "text" } }, - "timestamp": "2026-09-18T05:33:17.281Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.013Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -3033,16 +3500,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 41, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 45, "kind": "petri", - "id": "execution 0/22/0", - "recorded_at": 1789709597281, + "id": "execution 0/24/0", + "recorded_at": 1789783554015, "item": { "id": { "log": "execution", "execution": 0, - "seq": 22, + "seq": 24, "index": 0 }, "origin": "external", @@ -3080,11 +3547,11 @@ "role": "none" } }, - "recorded_at": 1789709597281, + "recorded_at": 1789783554015, "record": { - "seq": 22, + "seq": 24, "origin": "external", - "recorded_at": 1789709597281, + "recorded_at": 1789783554015, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3097,14 +3564,14 @@ "node": "greet", "event": { "seq": 7, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "TextDelta": { "delta": "A haiku, added." } }, - "timestamp": "2026-09-18T05:33:17.281Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.013Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -3113,16 +3580,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 42, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 46, "kind": "petri", - "id": "execution 0/23/0", - "recorded_at": 1789709597282, + "id": "execution 0/25/0", + "recorded_at": 1789783554016, "item": { "id": { "log": "execution", "execution": 0, - "seq": 23, + "seq": 25, "index": 0 }, "origin": "external", @@ -3160,11 +3627,11 @@ "role": "none" } }, - "recorded_at": 1789709597282, + "recorded_at": 1789783554016, "record": { - "seq": 23, + "seq": 25, "origin": "external", - "recorded_at": 1789709597282, + "recorded_at": 1789783554016, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3177,7 +3644,7 @@ "node": "greet", "event": { "seq": 8, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": { "AssistantMessage": { "text": "A haiku, added.", @@ -3204,7 +3671,7 @@ "usage_percent": 0.00009523809523809524, "count_method": "response_usage_scaled_breakdown", "staleness": "live", - "generated_at": "2026-09-18T05:33:17.281Z", + "generated_at": "2026-09-19T02:05:54.013Z", "breakdown": [ { "category": "system_prompt", @@ -3231,8 +3698,8 @@ } } }, - "timestamp": "2026-09-18T05:33:17.281Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.013Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -3241,16 +3708,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 43, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 47, "kind": "petri", - "id": "execution 0/24/0", - "recorded_at": 1789709597282, + "id": "execution 0/26/0", + "recorded_at": 1789783554017, "item": { "id": { "log": "execution", "execution": 0, - "seq": 24, + "seq": 26, "index": 0 }, "origin": "external", @@ -3288,11 +3755,11 @@ "role": "none" } }, - "recorded_at": 1789709597282, + "recorded_at": 1789783554017, "record": { - "seq": 24, + "seq": 26, "origin": "external", - "recorded_at": 1789709597282, + "recorded_at": 1789783554017, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3305,10 +3772,10 @@ "node": "greet", "event": { "seq": 9, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": "ProcessingEnd", - "timestamp": "2026-09-18T05:33:17.282Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.017Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -3317,16 +3784,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 44, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 48, "kind": "petri", - "id": "execution 0/25/0", - "recorded_at": 1789709597282, + "id": "execution 0/27/0", + "recorded_at": 1789783554018, "item": { "id": { "log": "execution", "execution": 0, - "seq": 25, + "seq": 27, "index": 0 }, "origin": "external", @@ -3364,11 +3831,11 @@ "role": "none" } }, - "recorded_at": 1789709597282, + "recorded_at": 1789783554018, "record": { - "seq": 25, + "seq": 27, "origin": "external", - "recorded_at": 1789709597282, + "recorded_at": 1789783554018, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3383,16 +3850,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 45, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 49, "kind": "petri", - "id": "execution 0/26/0", - "recorded_at": 1789709597282, + "id": "execution 0/28/0", + "recorded_at": 1789783554018, "item": { "id": { "log": "execution", "execution": 0, - "seq": 26, + "seq": 28, "index": 0 }, "origin": "external", @@ -3430,11 +3897,11 @@ "role": "none" } }, - "recorded_at": 1789709597282, + "recorded_at": 1789783554018, "record": { - "seq": 26, + "seq": 28, "origin": "external", - "recorded_at": 1789709597282, + "recorded_at": 1789783554018, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3447,10 +3914,10 @@ "node": "greet", "event": { "seq": 10, - "stream_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09", + "stream_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914", "event": "SessionEnded", - "timestamp": "2026-09-18T05:33:17.282Z", - "session_id": "ses_951f513e-ed1c-4c82-ad49-be68d093de09" + "timestamp": "2026-09-19T02:05:54.018Z", + "session_id": "ses_d37e5647-a4e1-4767-a254-3ab489064914" } } } @@ -3459,16 +3926,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 46, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 50, "kind": "petri", - "id": "execution 0/27/0", - "recorded_at": 1789709597389, + "id": "execution 0/29/0", + "recorded_at": 1789783554749, "item": { "id": { "log": "execution", "execution": 0, - "seq": 27, + "seq": 29, "index": 0 }, "origin": "external", @@ -3506,11 +3973,11 @@ "role": "none" } }, - "recorded_at": 1789709597389, + "recorded_at": 1789783554749, "record": { - "seq": 27, + "seq": 29, "origin": "external", - "recorded_at": 1789709597389, + "recorded_at": 1789783554749, "body": { "event": "step.progress.recorded", "firing": 2, @@ -3523,7 +3990,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "577da173f630270470d5b7e484b0b4838f6e2506", + "git_commit_sha": "531cb7e8e33e491ed9d8bdc3bfb1820976a0f57e", "reused": false } } @@ -3541,7 +4008,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "577da173f630270470d5b7e484b0b4838f6e2506", + "git_commit_sha": "531cb7e8e33e491ed9d8bdc3bfb1820976a0f57e", "reused": false } } @@ -3550,16 +4017,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 47, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 51, "kind": "petri", - "id": "execution 0/28/0", - "recorded_at": 1789709597390, + "id": "execution 0/30/0", + "recorded_at": 1789783554749, "item": { "id": { "log": "execution", "execution": 0, - "seq": 28, + "seq": 30, "index": 0 }, "origin": "external", @@ -3597,11 +4064,11 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554749, "record": { - "seq": 28, + "seq": 30, "origin": "external", - "recorded_at": 1789709597390, + "recorded_at": 1789783554749, "body": { "event": "step.finished", "firing": 2, @@ -3615,7 +4082,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 268, + "duration_ms": 480, "custom": { "pebble.compaction_usage": { "tokens": { @@ -3627,7 +4094,7 @@ } }, "pebble.compactions": 0, - "pebble.inference_ms": 0, + "pebble.inference_ms": 3, "pebble.prompts": 1, "pebble.subagents": { "spawned": 0, @@ -3678,16 +4145,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 48, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 52, "kind": "petri", - "id": "execution 0/28/1", - "recorded_at": 1789709597390, + "id": "execution 0/30/1", + "recorded_at": 1789783554749, "item": { "id": { "log": "execution", "execution": 0, - "seq": 28, + "seq": 30, "index": 1 }, "origin": "derived", @@ -3725,7 +4192,7 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554749, "derived": { "event": "visit.completed", "outcome": { @@ -3737,7 +4204,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 268, + "duration_ms": 480, "custom": { "pebble.compaction_usage": { "tokens": { @@ -3749,7 +4216,7 @@ } }, "pebble.compactions": 0, - "pebble.inference_ms": 0, + "pebble.inference_ms": 3, "pebble.prompts": 1, "pebble.subagents": { "spawned": 0, @@ -3797,16 +4264,54 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 49, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 53, + "kind": "platform", + "id": "10", + "recorded_at": 1789783554962, + "item": { + "seq": 10, + "recorded_at": 1789783554962, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 2, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "531cb7e8e33e491ed9d8bdc3bfb1820976a0f57e", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 2, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 2 + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 54, "kind": "petri", - "id": "execution 0/29/0", - "recorded_at": 1789709597390, + "id": "execution 0/31/0", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 31, "index": 0 }, "origin": "external", @@ -3844,11 +4349,11 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "record": { - "seq": 29, + "seq": 31, "origin": "external", - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "body": { "event": "routing.resolved", "decision_id": { @@ -3894,16 +4399,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 50, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 55, "kind": "petri", - "id": "execution 0/29/1", - "recorded_at": 1789709597390, + "id": "execution 0/31/1", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 31, "index": 1 }, "origin": "derived", @@ -3935,7 +4440,7 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "derived": { "event": "visit.started", "inputs": [ @@ -3955,16 +4460,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 51, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 56, "kind": "petri", - "id": "execution 0/29/2", - "recorded_at": 1789709597390, + "id": "execution 0/31/2", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 31, "index": 2 }, "origin": "derived", @@ -3996,7 +4501,7 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -4004,16 +4509,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 52, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 57, "kind": "petri", - "id": "execution 0/30/0", - "recorded_at": 1789709597390, + "id": "execution 0/32/0", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 30, + "seq": 32, "index": 0 }, "origin": "core", @@ -4051,11 +4556,11 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "record": { - "seq": 30, + "seq": 32, "origin": "core", - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "body": { "event": "route.applied", "kind": "edge", @@ -4086,16 +4591,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 53, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 58, "kind": "petri", - "id": "execution 0/31/0", - "recorded_at": 1789709597390, + "id": "execution 0/33/0", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 31, + "seq": 33, "index": 0 }, "origin": "core", @@ -4133,11 +4638,11 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "record": { - "seq": 31, + "seq": 33, "origin": "core", - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "body": { "event": "token.emitted", "edge": 1, @@ -4154,16 +4659,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 54, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 59, "kind": "petri", - "id": "execution 0/32/0", - "recorded_at": 1789709597390, + "id": "execution 0/34/0", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 32, + "seq": 34, "index": 0 }, "origin": "external", @@ -4195,11 +4700,11 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "record": { - "seq": 32, + "seq": 34, "origin": "external", - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "body": { "event": "admission.decided", "decision_id": { @@ -4215,16 +4720,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 55, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 60, "kind": "petri", - "id": "execution 0/33/0", - "recorded_at": 1789709597390, + "id": "execution 0/35/0", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 33, + "seq": 35, "index": 0 }, "origin": "external", @@ -4256,11 +4761,11 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "record": { - "seq": 33, + "seq": 35, "origin": "external", - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "body": { "event": "step.started", "firing": 3, @@ -4270,16 +4775,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 56, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 61, "kind": "petri", - "id": "execution 0/33/1", - "recorded_at": 1789709597390, + "id": "execution 0/35/1", + "recorded_at": 1789783554963, "item": { "id": { "log": "execution", "execution": 0, - "seq": 33, + "seq": 35, "index": 1 }, "origin": "derived", @@ -4311,7 +4816,7 @@ "role": "none" } }, - "recorded_at": 1789709597390, + "recorded_at": 1789783554963, "derived": { "event": "wait.state.changed", "state": "running" @@ -4319,49 +4824,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 57, - "kind": "platform", - "id": "8", - "recorded_at": 1789709597390, - "item": { - "seq": 8, - "recorded_at": 1789709597390, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 2, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "577da173f630270470d5b7e484b0b4838f6e2506", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 2, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 2 - } - } - }, - { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 58, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 62, "kind": "petri", - "id": "execution 0/34/0", - "recorded_at": 1789709597492, + "id": "execution 0/36/0", + "recorded_at": 1789783555340, "item": { "id": { "log": "execution", "execution": 0, - "seq": 34, + "seq": 36, "index": 0 }, "origin": "external", @@ -4393,11 +4865,11 @@ "role": "none" } }, - "recorded_at": 1789709597492, + "recorded_at": 1789783555340, "record": { - "seq": 34, + "seq": 36, "origin": "external", - "recorded_at": 1789709597492, + "recorded_at": 1789783555340, "body": { "event": "step.progress.recorded", "firing": 3, @@ -4410,7 +4882,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "fc290eb55d3149ca2be57b3e39ee609904a5663d", + "git_commit_sha": "b1d707486ad86083f78cb6dc86cebbb4a37632e9", "reused": false } } @@ -4428,7 +4900,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "fc290eb55d3149ca2be57b3e39ee609904a5663d", + "git_commit_sha": "b1d707486ad86083f78cb6dc86cebbb4a37632e9", "reused": false } } @@ -4437,16 +4909,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 59, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 63, "kind": "petri", - "id": "execution 0/35/0", - "recorded_at": 1789709597492, + "id": "execution 0/37/0", + "recorded_at": 1789783555340, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 37, "index": 0 }, "origin": "external", @@ -4478,11 +4950,11 @@ "role": "none" } }, - "recorded_at": 1789709597492, + "recorded_at": 1789783555340, "record": { - "seq": 35, + "seq": 37, "origin": "external", - "recorded_at": 1789709597492, + "recorded_at": 1789783555340, "body": { "event": "step.finished", "firing": 3, @@ -4509,16 +4981,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 60, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 64, "kind": "petri", - "id": "execution 0/35/1", - "recorded_at": 1789709597492, + "id": "execution 0/37/1", + "recorded_at": 1789783555340, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 37, "index": 1 }, "origin": "derived", @@ -4550,7 +5022,7 @@ "role": "none" } }, - "recorded_at": 1789709597492, + "recorded_at": 1789783555340, "derived": { "event": "visit.completed", "outcome": { @@ -4572,21 +5044,26 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 61, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 65, "kind": "platform", - "id": "9", - "recorded_at": 1789709597492, + "id": "11", + "recorded_at": 1789783555466, "item": { - "seq": 9, - "recorded_at": 1789709597492, + "seq": 11, + "recorded_at": 1789783555466, "record": { "kind": "checkpoint", "execution": 0, "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "fc290eb55d3149ca2be57b3e39ee609904a5663d", + "git_commit_sha": "b1d707486ad86083f78cb6dc86cebbb4a37632e9", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, "operation": { "execution": 0, "decision": { @@ -4605,92 +5082,16 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 62, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 66, "kind": "petri", - "id": "coordinator/4/0", - "recorded_at": 1789709597493, - "item": { - "id": { - "log": "coordinator", - "seq": 4, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "recorded_at": 1789709597493, - "record": { - "seq": 4, - "origin": "external", - "recorded_at": 1789709597493, - "body": { - "event": "execution.finished", - "execution": 0, - "exit": { - "terminal": { - "status": "success" - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 63, - "kind": "petri", - "id": "coordinator/5/0", - "recorded_at": 1789709597493, - "item": { - "id": { - "log": "coordinator", - "seq": 5, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "recorded_at": 1789709597493, - "record": { - "seq": 5, - "origin": "external", - "recorded_at": 1789709597493, - "body": { - "event": "invocation.finished", - "invocation": 0, - "result": { - "status": "success", - "failure": null, - "final_execution": 0, - "output": null, - "context": { - "failure_class": "", - "internal.run_id": "petri", - "last_response": "A haiku, added.", - "last_stage": "greet", - "response.greet": "A haiku, added." - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 64, - "kind": "petri", - "id": "execution 0/36/0", - "recorded_at": 1789709597493, + "id": "execution 0/38/0", + "recorded_at": 1789783555466, "item": { "id": { "log": "execution", "execution": 0, - "seq": 36, + "seq": 38, "index": 0 }, "origin": "external", @@ -4722,11 +5123,11 @@ "role": "none" } }, - "recorded_at": 1789709597493, + "recorded_at": 1789783555466, "record": { - "seq": 36, + "seq": 38, "origin": "external", - "recorded_at": 1789709597493, + "recorded_at": 1789783555466, "body": { "event": "routing.resolved", "decision_id": { @@ -4744,11 +5145,108 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 65, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 67, + "kind": "platform", + "id": "12", + "recorded_at": 1789783555537, + "item": { + "seq": 12, + "recorded_at": 1789783555537, + "record": { + "kind": "run.diff", + "base_sha": "a12a305478d2f8eec932f61f3b9d7aa681c6986b", + "head_sha": "b1d707486ad86083f78cb6dc86cebbb4a37632e9", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 68, + "kind": "petri", + "id": "coordinator/4/0", + "recorded_at": 1789783555538, + "item": { + "id": { + "log": "coordinator", + "seq": 4, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "recorded_at": 1789783555538, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783555538, + "body": { + "event": "execution.finished", + "execution": 0, + "exit": { + "terminal": { + "status": "success" + } + } + } + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 69, + "kind": "petri", + "id": "coordinator/5/0", + "recorded_at": 1789783555539, + "item": { + "id": { + "log": "coordinator", + "seq": 5, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "recorded_at": 1789783555539, + "record": { + "seq": 5, + "origin": "external", + "recorded_at": 1789783555539, + "body": { + "event": "invocation.finished", + "invocation": 0, + "result": { + "status": "success", + "failure": null, + "final_execution": 0, + "output": null, + "context": { + "failure_class": "", + "internal.run_id": "petri", + "last_response": "A haiku, added.", + "last_stage": "greet", + "response.greet": "A haiku, added." + } + } + } + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 70, "kind": "petri", "id": "coordinator/6/0", - "recorded_at": 1789709597534, + "recorded_at": 1789783555633, "item": { "id": { "log": "coordinator", @@ -4756,12 +5254,49 @@ "index": 0 }, "origin": "external", - "context": {}, - "recorded_at": 1789709597534, + "context": { + "invocation": 0 + }, + "recorded_at": 1789783555633, "record": { "seq": 6, "origin": "external", - "recorded_at": 1789709597534, + "recorded_at": 1789783555633, + "body": { + "event": "scope.released", + "invocation": 0, + "lease": 0, + "scope": { + "declared": 0 + }, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696a89b0378d8-445-0", + "outcome": "succeeded", + "retained": true + } + } + } + }, + { + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 71, + "kind": "petri", + "id": "coordinator/7/0", + "recorded_at": 1789783555638, + "item": { + "id": { + "log": "coordinator", + "seq": 7, + "index": 0 + }, + "origin": "external", + "context": {}, + "recorded_at": 1789783555638, + "record": { + "seq": 7, + "origin": "external", + "recorded_at": 1789783555638, "body": { "event": "run.finished", "status": "success" @@ -4770,14 +5305,14 @@ } }, { - "run_id": "01M2SG2E0BHHDQEF0ZKBQXR921", - "stream_seq": 66, + "run_id": "01M2VPKCM0SYNCF8Q7A3QCG0P6", + "stream_seq": 72, "kind": "platform", - "id": "10", - "recorded_at": 1789709597538, + "id": "13", + "recorded_at": 1789783555714, "item": { - "seq": 10, - "recorded_at": 1789709597538, + "seq": 13, + "recorded_at": 1789783555714, "record": { "kind": "run.lifecycle", "transition": "succeeded", diff --git a/apps/fabro-web/app/test-fixtures/petri/parallel.json b/apps/fabro-web/app/test-fixtures/petri/parallel.json index 1a7ecb031..cd1752e1b 100644 --- a/apps/fabro-web/app/test-fixtures/petri/parallel.json +++ b/apps/fabro-web/app/test-fixtures/petri/parallel.json @@ -1,9 +1,9 @@ { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "projection": { "title": "Run two branches", "spec": { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "settings": { "project": { "name": null, @@ -17,7 +17,10 @@ "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Run two branches" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -108,22 +111,6 @@ "graph": { "name": "Parallel", "nodes": { - "exit": { - "id": "exit", - "attrs": { - "shape": { - "String": "Msquare" - } - } - }, - "start": { - "id": "start", - "attrs": { - "shape": { - "String": "Mdiamond" - } - } - }, "fork": { "id": "fork", "attrs": { @@ -132,17 +119,6 @@ } } }, - "a": { - "id": "a", - "attrs": { - "shape": { - "String": "parallelogram" - }, - "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo a" - } - } - }, "merge": { "id": "merge", "attrs": { @@ -151,6 +127,33 @@ } } }, + "exit": { + "id": "exit", + "attrs": { + "shape": { + "String": "Msquare" + } + } + }, + "a": { + "id": "a", + "attrs": { + "shape": { + "String": "parallelogram" + }, + "script": { + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a" + } + } + }, + "start": { + "id": "start", + "attrs": { + "shape": { + "String": "Mdiamond" + } + } + }, "b": { "id": "b", "attrs": { @@ -158,7 +161,7 @@ "String": "parallelogram" }, "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo b" + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b" } } } @@ -201,14 +204,14 @@ } } }, - "graph_source": "digraph Parallel {\n graph [goal=\"Run two branches\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n fork [shape=component]\n a [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo a\"]\n b [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo b\"]\n merge [shape=tripleoctagon]\n start -> fork\n fork -> a\n fork -> b\n a -> merge\n b -> merge\n merge -> exit\n}", + "graph_source": "digraph Parallel {\n graph [goal=\"Run two branches\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n fork [shape=component]\n a [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a\"]\n b [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b\"]\n merge [shape=tripleoctagon]\n start -> fork\n fork -> a\n fork -> b\n a -> merge\n b -> merge\n merge -> exit\n}", "workflow_slug": "workflow", - "workflow_version_id": "03d033a0c4364ef6084e2d3020cce8abf0dc7c02e6ecefacf320857ca7eb70df", + "workflow_version_id": "48483c50a28bc752b3948ee34ae743510f837416a4bac55271db990fb96a84f1", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpmiL7PK" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpp9jIWh" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpmiL7PK", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpp9jIWh", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -223,283 +226,328 @@ "auth_method": "dev_token" } }, - "spec_blob": "3006b809a73d1f6e228bb091c016b75a7a3121aaef0eb00d33baf1ae8ee105dc", - "engine": { - "kind": "petri", + "definition_blob": "8e2cf033a327dd94a817904e9477d1be5b7303c147c11a5eab47dad50a8ef7d4", + "spec_blob": "bb9c3ce44635c649048edf6015120cd83aed353ba71894fbb76b4965337f79aa", + "admission": { "graph": { - "blob": "7401352516fb5ee5ebeedf2057e6235cee8d7ffedbbc2a116bb30ea24f7b2a61", - "digest": "7401352516fb5ee5ebeedf2057e6235cee8d7ffedbbc2a116bb30ea24f7b2a61" + "blob": "bfad8663939c3d45379c979c399134d4ce07db9ba18f55b54227da1518316ad4", + "digest": "bfad8663939c3d45379c979c399134d4ce07db9ba18f55b54227da1518316ad4" }, "children": [ { - "blob": "2b8e4e9c97881bdf04d48f57815fc6633959c953fbc786c7f0ce76488d718542", - "digest": "2b8e4e9c97881bdf04d48f57815fc6633959c953fbc786c7f0ce76488d718542" + "blob": "3451a12b7871dff3e9b2d26f0432cbd0daee7588a9bd8735268aba34c224d9eb", + "digest": "3451a12b7871dff3e9b2d26f0432cbd0daee7588a9bd8735268aba34c224d9eb" }, { - "blob": "940ba00308da213651f5dfcfbe78408688ae4d5deb9f96a4356536e2ddf51883", - "digest": "940ba00308da213651f5dfcfbe78408688ae4d5deb9f96a4356536e2ddf51883" + "blob": "44d5a839074e756c1e79d413355777394f35b9fa10e1ec43fc1a807ecbf9e49d", + "digest": "44d5a839074e756c1e79d413355777394f35b9fa10e1ec43fc1a807ecbf9e49d" } ] } }, - "web_url": "http://localhost:3000/runs/01M2SG2E0BQSRJ1G31WRPX542Y", + "web_url": "http://localhost:3000/runs/01M2VPGKR72ZE18JBQ3BAK6V3E", "start": { - "start_time": "2026-09-18T05:33:16.740Z" + "start_time": "2026-09-19T02:04:21.776Z", + "run_branch": "fabro/run/01M2VPGKR72ZE18JBQ3BAK6V3E", + "base_sha": "11a87723221691c9b65992c9c8471173c5418b23" }, "status": { "kind": "succeeded", "reason": "completed" }, - "status_updated_at": "2026-09-18T05:33:17.838Z", - "last_event_at": "2026-09-18T05:33:17.843Z", + "status_updated_at": "2026-09-19T02:04:25.467Z", + "last_event_at": "2026-09-19T02:04:25.488Z", "pending_control": null, "checkpoints": [ { - "seq": 33, + "seq": 28, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.013Z", + "timestamp": "2026-09-19T02:04:22.436Z", "current_node": "start", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "ba079ac5c25e2c349df023cc66ec5875d11e2b18" + "git_commit_sha": "11a87723221691c9b65992c9c8471173c5418b23" }, "diff": {} }, { - "seq": 47, + "seq": 40, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.117Z", + "timestamp": "2026-09-19T02:04:22.920Z", "current_node": "fork", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "beeaef66193b2dc4b53a704b6293e68e0db5aa27" + "git_commit_sha": "7f6e87d18eeb928b747785dd963129c30f9580a9" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 83, + "seq": 87, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.317Z", + "timestamp": "2026-09-19T02:04:23.512Z", "current_node": "a", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "abda2b70b2a2627e829428c1d0aa50169b7b17f8" + "git_commit_sha": "be5dce50d1facb4b1591f4c0be61456afda8a8af" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 91, + "seq": 95, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.433Z", + "timestamp": "2026-09-19T02:04:23.891Z", "current_node": "b", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "572c40a80a2b6456e7dd68d63a0fce6416805fab" + "git_commit_sha": "5a4674c2d55bf9f7e3d7895bdc44e616b3190556" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 101, + "seq": 103, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.525Z", + "timestamp": "2026-09-19T02:04:24.216Z", "current_node": "a", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "d19179e7075e6d260660832c2f26e3a31efecd20" + "git_commit_sha": "5dea449d2706449671001d14c7557488b34a26c2" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 117, + "seq": 110, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.618Z", + "timestamp": "2026-09-19T02:04:24.565Z", "current_node": "b", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "9606890ac1f59546498ea7167131f9e542edd05f" + "git_commit_sha": "aa1cb14653e56360973d2d858c716eb9b8745cb4" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 129, + "seq": 126, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.709Z", + "timestamp": "2026-09-19T02:04:25.007Z", "current_node": "merge", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "f99391338a6f1b460ca44095fed82a92dfe7e0a0" + "git_commit_sha": "0a16c149957a05e989cbd1ca2dec03c6b6c9e480" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, { - "seq": 136, + "seq": 138, "checkpoint": { - "timestamp": "2026-09-18T05:33:17.798Z", + "timestamp": "2026-09-19T02:04:25.367Z", "current_node": "exit", - "completed_nodes": [], - "node_retries": {}, - "context_values": {}, - "git_commit_sha": "a1f942a57396c23c378fde187c43b15adbb7e648" + "git_commit_sha": "66f4cde81754e446c1c584551ed912a95218eb50" }, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } } ], "conclusion": { - "timestamp": "2026-09-18T05:33:17.838Z", + "timestamp": "2026-09-19T02:04:25.467Z", "status": "succeeded", "timing": { - "wall_time_ms": 1098, + "wall_time_ms": 3691, "inference_time_ms": 0, - "tool_time_ms": 194, - "active_time_ms": 194 + "tool_time_ms": 233, + "active_time_ms": 233 }, - "final_git_commit_sha": "a1f942a57396c23c378fde187c43b15adbb7e648", + "final_git_commit_sha": "66f4cde81754e446c1c584551ed912a95218eb50", + "stages": [ + { + "stage_id": "start", + "stage_label": "start", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "fork", + "stage_label": "fork", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "a", + "stage_label": "a", + "timing": { + "wall_time_ms": 117, + "inference_time_ms": 0, + "tool_time_ms": 117, + "active_time_ms": 117 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "b", + "stage_label": "b", + "timing": { + "wall_time_ms": 116, + "inference_time_ms": 0, + "tool_time_ms": 116, + "active_time_ms": 116 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "merge", + "stage_label": "merge", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + }, + { + "stage_id": "exit", + "stage_label": "exit", + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "retries": 0 + } + ], "total_retries": 0, - "diff": {} + "diff": { + "summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } }, "sandbox": { - "kind": "planned", + "kind": "ready", "plan": { "provider": "local" + }, + "instance": { + "provider": "local", + "runtime": { + "id": "host-g18d696936a9d7dc0-1174-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/fabro-test-01M2VPGKMSCGJNZVT15DB59RJ8/storage/scratch/20260918-01M2VPGKR72ZE18JBQ3BAK6V3E/petri/scopes/invocation-0-scope-0/work" + }, + "ready_duration_ms": 68, + "retained": true } }, "pull_request": null, "superseded_by": null, + "git_identity": { + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, "pending_interviews": {}, "stages": { - "a@1": { - "first_event_seq": 440, - "prompt": null, - "response": null, - "completion": { - "outcome": "succeeded", - "notes": null, - "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.317Z" - }, - "provider_used": null, - "diff": null, - "script_invocation": null, - "script_timing": null, - "parallel_results": null, - "parallel_branch_id": "fork@1:0", - "output": "a\n", - "output_bytes": 2, - "live_streaming": false, - "termination": "exited", - "started_at": "2026-09-18T05:33:17.122Z", - "handler": "command", - "graph_visit": 1, - "timing": { - "wall_time_ms": 96, - "inference_time_ms": 0, - "tool_time_ms": 96, - "active_time_ms": 96 - }, - "usage": { - "tokens": { - "input": 0, - "output": 0, - "reasoning": 0, - "cache_read": 0, - "cache_write": 0 - } - }, - "state": "succeeded" - }, - "start@1": { - "first_event_seq": 61, - "prompt": null, - "response": null, - "completion": { - "outcome": "succeeded", - "notes": null, - "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.013Z" - }, - "provider_used": null, - "diff": null, - "script_invocation": null, - "script_timing": null, - "parallel_results": null, - "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpmiL7PK is not a Git repository; the workspace starts empty\n", - "output_bytes": 130, - "live_streaming": false, - "termination": "exited", - "started_at": "2026-09-18T05:33:16.743Z", - "handler": "start", - "graph_visit": 1, - "timing": { - "wall_time_ms": 10, - "inference_time_ms": 0, - "tool_time_ms": 0, - "active_time_ms": 0 - }, - "usage": { - "tokens": { - "input": 0, - "output": 0, - "reasoning": 0, - "cache_read": 0, - "cache_write": 0 - } - }, - "state": "succeeded" - }, - "exit@1": { - "first_event_seq": 1027, - "prompt": null, - "response": null, - "completion": { - "outcome": "succeeded", - "notes": null, - "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.798Z" - }, - "provider_used": null, - "diff": null, - "script_invocation": null, - "script_timing": null, - "parallel_results": null, - "output": null, - "live_streaming": false, - "termination": "exited", - "started_at": "2026-09-18T05:33:17.709Z", - "handler": "exit", - "graph_visit": 1, - "timing": { - "wall_time_ms": 0, - "inference_time_ms": 0, - "tool_time_ms": 0, - "active_time_ms": 0 - }, - "usage": { - "tokens": { - "input": 0, - "output": 0, - "reasoning": 0, - "cache_read": 0, - "cache_write": 0 - } - }, - "state": "succeeded" - }, "fork@1": { - "first_event_seq": 331, + "first_event_seq": 799, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.117Z" + "timestamp": "2026-09-19T02:04:22.815Z" }, "provider_used": null, "diff": null, @@ -522,7 +570,7 @@ "output": null, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.013Z", + "started_at": "2026-09-19T02:04:22.437Z", "handler": "parallel", "graph_visit": 1, "timing": { @@ -543,14 +591,14 @@ "state": "succeeded" }, "b@1": { - "first_event_seq": 438, + "first_event_seq": 1292, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.433Z" + "timestamp": "2026-09-19T02:04:23.754Z" }, "provider_used": null, "diff": null, @@ -562,14 +610,131 @@ "output_bytes": 2, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.120Z", + "started_at": "2026-09-19T02:04:22.930Z", "handler": "command", "graph_visit": 1, "timing": { - "wall_time_ms": 98, + "wall_time_ms": 116, "inference_time_ms": 0, - "tool_time_ms": 98, - "active_time_ms": 98 + "tool_time_ms": 116, + "active_time_ms": 116 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "state": "succeeded" + }, + "a@1": { + "first_event_seq": 1287, + "prompt": null, + "response": null, + "completion": { + "outcome": "succeeded", + "notes": null, + "failure_reason": null, + "timestamp": "2026-09-19T02:04:23.384Z" + }, + "provider_used": null, + "diff": null, + "script_invocation": null, + "script_timing": null, + "parallel_results": null, + "parallel_branch_id": "fork@1:0", + "output": "a\n", + "output_bytes": 2, + "live_streaming": false, + "termination": "exited", + "started_at": "2026-09-19T02:04:22.925Z", + "handler": "command", + "graph_visit": 1, + "timing": { + "wall_time_ms": 117, + "inference_time_ms": 0, + "tool_time_ms": 117, + "active_time_ms": 117 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "state": "succeeded" + }, + "start@1": { + "first_event_seq": 156, + "prompt": null, + "response": null, + "completion": { + "outcome": "succeeded", + "notes": null, + "failure_reason": null, + "timestamp": "2026-09-19T02:04:22.397Z" + }, + "provider_used": null, + "diff": null, + "script_invocation": null, + "script_timing": null, + "parallel_results": null, + "output": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpp9jIWh is not a Git repository; the workspace starts empty\n", + "output_bytes": 130, + "live_streaming": false, + "termination": "exited", + "started_at": "2026-09-19T02:04:21.794Z", + "handler": "start", + "graph_visit": 1, + "timing": { + "wall_time_ms": 39, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 + }, + "usage": { + "tokens": { + "input": 0, + "output": 0, + "reasoning": 0, + "cache_read": 0, + "cache_write": 0 + } + }, + "state": "succeeded" + }, + "exit@1": { + "first_event_seq": 3369, + "prompt": null, + "response": null, + "completion": { + "outcome": "succeeded", + "notes": null, + "failure_reason": null, + "timestamp": "2026-09-19T02:04:25.305Z" + }, + "provider_used": null, + "diff": null, + "script_invocation": null, + "script_timing": null, + "parallel_results": null, + "output": null, + "live_streaming": false, + "termination": "exited", + "started_at": "2026-09-19T02:04:25.007Z", + "handler": "exit", + "graph_visit": 1, + "timing": { + "wall_time_ms": 0, + "inference_time_ms": 0, + "tool_time_ms": 0, + "active_time_ms": 0 }, "usage": { "tokens": { @@ -583,14 +748,14 @@ "state": "succeeded" }, "merge@1": { - "first_event_seq": 936, + "first_event_seq": 2929, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, - "timestamp": "2026-09-18T05:33:17.709Z" + "timestamp": "2026-09-19T02:04:24.904Z" }, "provider_used": null, "diff": null, @@ -600,7 +765,7 @@ "output": null, "live_streaming": false, "termination": "exited", - "started_at": "2026-09-18T05:33:17.618Z", + "started_at": "2026-09-19T02:04:24.567Z", "handler": "parallel.fan_in", "graph_visit": 1, "timing": { @@ -624,18 +789,18 @@ }, "stream": [ { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 1, "kind": "platform", "id": "1", - "recorded_at": 1789709596683, + "recorded_at": 1789783461650, "item": { "seq": 1, - "recorded_at": 1789709596683, + "recorded_at": 1789783461650, "record": { "kind": "run.created", "spec": { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "settings": { "project": { "name": null, @@ -649,7 +814,10 @@ "metadata": {} }, "run": { - "goal": null, + "goal": { + "type": "inline", + "value": "Run two branches" + }, "working_dir": null, "metadata": {}, "inputs": {}, @@ -740,22 +908,6 @@ "graph": { "name": "Parallel", "nodes": { - "fork": { - "id": "fork", - "attrs": { - "shape": { - "String": "component" - } - } - }, - "merge": { - "id": "merge", - "attrs": { - "shape": { - "String": "tripleoctagon" - } - } - }, "start": { "id": "start", "attrs": { @@ -779,18 +931,34 @@ "String": "parallelogram" }, "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo a" + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a" } } }, "b": { "id": "b", "attrs": { - "script": { - "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo b" - }, "shape": { "String": "parallelogram" + }, + "script": { + "String": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b" + } + } + }, + "merge": { + "id": "merge", + "attrs": { + "shape": { + "String": "tripleoctagon" + } + } + }, + "fork": { + "id": "fork", + "attrs": { + "shape": { + "String": "component" } } } @@ -833,14 +1001,14 @@ } } }, - "graph_source": "digraph Parallel {\n graph [goal=\"Run two branches\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n fork [shape=component]\n a [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo a\"]\n b [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpFCclqg/go ]; do sleep 0.05; done; echo b\"]\n merge [shape=tripleoctagon]\n start -> fork\n fork -> a\n fork -> b\n a -> merge\n b -> merge\n merge -> exit\n}", + "graph_source": "digraph Parallel {\n graph [goal=\"Run two branches\"]\n start [shape=Mdiamond]\n exit [shape=Msquare]\n fork [shape=component]\n a [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a\"]\n b [shape=parallelogram, script=\"touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b\"]\n merge [shape=tripleoctagon]\n start -> fork\n fork -> a\n fork -> b\n a -> merge\n b -> merge\n merge -> exit\n}", "workflow_slug": "workflow", - "workflow_version_id": "03d033a0c4364ef6084e2d3020cce8abf0dc7c02e6ecefacf320857ca7eb70df", + "workflow_version_id": "48483c50a28bc752b3948ee34ae743510f837416a4bac55271db990fb96a84f1", "target": { "kind": "folder", - "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpmiL7PK" + "path": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpp9jIWh" }, - "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpmiL7PK", + "source_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpp9jIWh", "provenance": { "server": { "version": "0.357.0-nightly.0" @@ -855,39 +1023,39 @@ "auth_method": "dev_token" } }, - "spec_blob": "3006b809a73d1f6e228bb091c016b75a7a3121aaef0eb00d33baf1ae8ee105dc", - "engine": { - "kind": "petri", + "definition_blob": "8e2cf033a327dd94a817904e9477d1be5b7303c147c11a5eab47dad50a8ef7d4", + "spec_blob": "bb9c3ce44635c649048edf6015120cd83aed353ba71894fbb76b4965337f79aa", + "admission": { "graph": { - "blob": "7401352516fb5ee5ebeedf2057e6235cee8d7ffedbbc2a116bb30ea24f7b2a61", - "digest": "7401352516fb5ee5ebeedf2057e6235cee8d7ffedbbc2a116bb30ea24f7b2a61" + "blob": "bfad8663939c3d45379c979c399134d4ce07db9ba18f55b54227da1518316ad4", + "digest": "bfad8663939c3d45379c979c399134d4ce07db9ba18f55b54227da1518316ad4" }, "children": [ { - "blob": "2b8e4e9c97881bdf04d48f57815fc6633959c953fbc786c7f0ce76488d718542", - "digest": "2b8e4e9c97881bdf04d48f57815fc6633959c953fbc786c7f0ce76488d718542" + "blob": "3451a12b7871dff3e9b2d26f0432cbd0daee7588a9bd8735268aba34c224d9eb", + "digest": "3451a12b7871dff3e9b2d26f0432cbd0daee7588a9bd8735268aba34c224d9eb" }, { - "blob": "940ba00308da213651f5dfcfbe78408688ae4d5deb9f96a4356536e2ddf51883", - "digest": "940ba00308da213651f5dfcfbe78408688ae4d5deb9f96a4356536e2ddf51883" + "blob": "44d5a839074e756c1e79d413355777394f35b9fa10e1ec43fc1a807ecbf9e49d", + "digest": "44d5a839074e756c1e79d413355777394f35b9fa10e1ec43fc1a807ecbf9e49d" } ] } }, "title": "Run two branches", - "web_url": "http://localhost:3000/runs/01M2SG2E0BQSRJ1G31WRPX542Y" + "web_url": "http://localhost:3000/runs/01M2VPGKR72ZE18JBQ3BAK6V3E" } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 2, "kind": "platform", "id": "2", - "recorded_at": 1789709596730, + "recorded_at": 1789783461651, "item": { "seq": 2, - "recorded_at": 1789709596730, + "recorded_at": 1789783461651, "record": { "kind": "run.lifecycle", "transition": "submitted", @@ -898,14 +1066,14 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 3, "kind": "platform", "id": "3", - "recorded_at": 1789709596735, + "recorded_at": 1789783461662, "item": { "seq": 3, - "recorded_at": 1789709596735, + "recorded_at": 1789783461662, "record": { "kind": "run.lifecycle", "transition": "start_requested", @@ -914,14 +1082,14 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 4, "kind": "platform", "id": "4", - "recorded_at": 1789709596736, + "recorded_at": 1789783461669, "item": { "seq": 4, - "recorded_at": 1789709596736, + "recorded_at": 1789783461669, "record": { "kind": "run.lifecycle", "transition": "runnable", @@ -933,14 +1101,14 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 5, "kind": "platform", "id": "5", - "recorded_at": 1789709596737, + "recorded_at": 1789783461680, "item": { "seq": 5, - "recorded_at": 1789709596737, + "recorded_at": 1789783461680, "record": { "kind": "run.lifecycle", "transition": "starting", @@ -951,14 +1119,14 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 6, "kind": "platform", "id": "6", - "recorded_at": 1789709596738, + "recorded_at": 1789783461688, "item": { "seq": 6, - "recorded_at": 1789709596738, + "recorded_at": 1789783461688, "record": { "kind": "run.lifecycle", "transition": "running", @@ -969,11 +1137,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 7, "kind": "petri", "id": "coordinator/0/0", - "recorded_at": 1789709596740, + "recorded_at": 1789783461776, "item": { "id": { "log": "coordinator", @@ -984,15 +1152,15 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596740, + "recorded_at": 1789783461776, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596740, + "recorded_at": 1789783461776, "body": { "event": "run.started", - "format_version": 5, - "key": "01M2SG2E0BQSRJ1G31WRPX542Y", + "format_version": 7, + "key": "01M2VPGKR72ZE18JBQ3BAK6V3E", "root": 0, "middleware_chain": [ "circuit-breaker" @@ -1002,11 +1170,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 8, "kind": "petri", "id": "coordinator/1/0", - "recorded_at": 1789709596741, + "recorded_at": 1789783461781, "item": { "id": { "log": "coordinator", @@ -1015,24 +1183,24 @@ }, "origin": "external", "context": {}, - "recorded_at": 1789709596741, + "recorded_at": 1789783461781, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596741, + "recorded_at": 1789783461781, "body": { "event": "graph.registered", - "digest": "7401352516fb5ee5ebeedf2057e6235cee8d7ffedbbc2a116bb30ea24f7b2a61" + "digest": "bfad8663939c3d45379c979c399134d4ce07db9ba18f55b54227da1518316ad4" } } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 9, "kind": "petri", "id": "coordinator/2/0", - "recorded_at": 1789709596741, + "recorded_at": 1789783461782, "item": { "id": { "log": "coordinator", @@ -1041,24 +1209,24 @@ }, "origin": "external", "context": {}, - "recorded_at": 1789709596741, + "recorded_at": 1789783461782, "record": { "seq": 2, "origin": "external", - "recorded_at": 1789709596741, + "recorded_at": 1789783461782, "body": { "event": "graph.registered", - "digest": "2b8e4e9c97881bdf04d48f57815fc6633959c953fbc786c7f0ce76488d718542" + "digest": "3451a12b7871dff3e9b2d26f0432cbd0daee7588a9bd8735268aba34c224d9eb" } } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 10, "kind": "petri", "id": "coordinator/3/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783461785, "item": { "id": { "log": "coordinator", @@ -1067,24 +1235,24 @@ }, "origin": "external", "context": {}, - "recorded_at": 1789709596742, + "recorded_at": 1789783461785, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783461785, "body": { "event": "graph.registered", - "digest": "940ba00308da213651f5dfcfbe78408688ae4d5deb9f96a4356536e2ddf51883" + "digest": "44d5a839074e756c1e79d413355777394f35b9fa10e1ec43fc1a807ecbf9e49d" } } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 11, "kind": "petri", "id": "coordinator/4/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783461786, "item": { "id": { "log": "coordinator", @@ -1095,16 +1263,16 @@ "context": { "invocation": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783461786, "record": { "seq": 4, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783461786, "body": { "event": "invocation.declared", "invocation": 0, "call": null, - "graph": "7401352516fb5ee5ebeedf2057e6235cee8d7ffedbbc2a116bb30ea24f7b2a61", + "graph": "bfad8663939c3d45379c979c399134d4ce07db9ba18f55b54227da1518316ad4", "context": {}, "secret_bindings": "none", "sandbox": "isolated" @@ -1113,11 +1281,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 12, "kind": "petri", "id": "coordinator/5/0", - "recorded_at": 1789709596742, + "recorded_at": 1789783461787, "item": { "id": { "log": "coordinator", @@ -1129,11 +1297,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596742, + "recorded_at": 1789783461787, "record": { "seq": 5, "origin": "external", - "recorded_at": 1789709596742, + "recorded_at": 1789783461787, "body": { "event": "execution.declared", "execution": 0, @@ -1161,11 +1329,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 13, "kind": "petri", "id": "execution 0/0/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783461793, "item": { "id": { "log": "execution", @@ -1178,11 +1346,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596743, + "recorded_at": 1789783461793, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709596743, + "recorded_at": 1789783461793, "body": { "event": "execution.started", "entry": "graph_entries", @@ -1195,11 +1363,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 14, "kind": "petri", "id": "execution 0/1/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "item": { "id": { "log": "execution", @@ -1212,11 +1380,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "body": { "event": "admission.decided", "decision_id": "execution_start", @@ -1227,11 +1395,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 15, "kind": "petri", "id": "execution 0/1/1", - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "item": { "id": { "log": "execution", @@ -1275,7 +1443,7 @@ "role": "none" } }, - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "derived": { "event": "visit.started", "inputs": [ @@ -1290,11 +1458,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 16, "kind": "petri", "id": "execution 0/1/2", - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "item": { "id": { "log": "execution", @@ -1338,7 +1506,7 @@ "role": "none" } }, - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -1346,11 +1514,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 17, "kind": "petri", "id": "execution 0/2/0", - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "item": { "id": { "log": "execution", @@ -1363,11 +1531,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "record": { "seq": 2, "origin": "core", - "recorded_at": 1789709596743, + "recorded_at": 1789783461794, "body": { "event": "token.emitted", "edge": 8, @@ -1379,11 +1547,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 18, "kind": "petri", "id": "execution 0/3/0", - "recorded_at": 1789709596744, + "recorded_at": 1789783461796, "item": { "id": { "log": "execution", @@ -1427,11 +1595,11 @@ "role": "none" } }, - "recorded_at": 1789709596744, + "recorded_at": 1789783461796, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709596744, + "recorded_at": 1789783461796, "body": { "event": "admission.decided", "decision_id": { @@ -1447,11 +1615,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 19, "kind": "petri", "id": "execution 0/4/0", - "recorded_at": 1789709596825, + "recorded_at": 1789783461864, "item": { "id": { "log": "execution", @@ -1464,6 +1632,42 @@ "invocation": 0, "execution": 0 }, + "recorded_at": 1789783461864, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783461864, + "body": { + "event": "scope.acquired", + "scope": 0, + "lease": 0, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696936a9d7dc0-1174-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPGKR72ZE18JBQ3BAK6V3E/petri/scopes/invocation-0-scope-0/work", + "duration_ms": 68 + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 20, + "kind": "petri", + "id": "execution 0/5/0", + "recorded_at": 1789783461864, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 5, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, "subject": { "node": { "id": 0, @@ -1495,11 +1699,11 @@ "role": "none" } }, - "recorded_at": 1789709596825, + "recorded_at": 1789783461864, "record": { - "seq": 4, + "seq": 5, "origin": "external", - "recorded_at": 1789709596825, + "recorded_at": 1789783461864, "body": { "event": "step.started", "firing": 1, @@ -1509,16 +1713,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 20, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 21, "kind": "petri", - "id": "execution 0/4/1", - "recorded_at": 1789709596825, + "id": "execution 0/5/1", + "recorded_at": 1789783461864, "item": { "id": { "log": "execution", "execution": 0, - "seq": 4, + "seq": 5, "index": 1 }, "origin": "derived", @@ -1557,7 +1761,7 @@ "role": "none" } }, - "recorded_at": 1789709596825, + "recorded_at": 1789783461864, "derived": { "event": "wait.state.changed", "state": "running" @@ -1565,16 +1769,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 21, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 22, "kind": "petri", - "id": "execution 0/5/0", - "recorded_at": 1789709596835, + "id": "execution 0/6/0", + "recorded_at": 1789783461903, "item": { "id": { "log": "execution", "execution": 0, - "seq": 5, + "seq": 6, "index": 0 }, "origin": "external", @@ -1613,18 +1817,18 @@ "role": "none" } }, - "recorded_at": 1789709596835, + "recorded_at": 1789783461903, "record": { - "seq": 5, + "seq": 6, "origin": "external", - "recorded_at": 1789709596835, + "recorded_at": 1789783461903, "body": { "event": "step.progress.recorded", "firing": 1, "ev": { "log": { "stream": "stderr", - "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpmiL7PK is not a Git repository; the workspace starts empty" + "line": "checkout: /private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpp9jIWh is not a Git repository; the workspace starts empty" } } } @@ -1632,16 +1836,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 22, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 23, "kind": "petri", - "id": "execution 0/6/0", - "recorded_at": 1789709597013, + "id": "execution 0/7/0", + "recorded_at": 1789783462396, "item": { "id": { "log": "execution", "execution": 0, - "seq": 6, + "seq": 7, "index": 0 }, "origin": "external", @@ -1680,11 +1884,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462396, "record": { - "seq": 6, + "seq": 7, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783462396, "body": { "event": "step.progress.recorded", "firing": 1, @@ -1697,7 +1901,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "ba079ac5c25e2c349df023cc66ec5875d11e2b18", + "git_commit_sha": "11a87723221691c9b65992c9c8471173c5418b23", "reused": false } } @@ -1715,7 +1919,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "ba079ac5c25e2c349df023cc66ec5875d11e2b18", + "git_commit_sha": "11a87723221691c9b65992c9c8471173c5418b23", "reused": false } } @@ -1724,16 +1928,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 23, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 24, "kind": "petri", - "id": "execution 0/7/0", - "recorded_at": 1789709597013, + "id": "execution 0/8/0", + "recorded_at": 1789783462397, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 0 }, "origin": "external", @@ -1772,11 +1976,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462397, "record": { - "seq": 7, + "seq": 8, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783462397, "body": { "event": "step.finished", "firing": 1, @@ -1788,7 +1992,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 10 + "duration_ms": 39 }, "context_updates": { "failure_class": "", @@ -1804,16 +2008,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 24, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 25, "kind": "petri", - "id": "execution 0/7/1", - "recorded_at": 1789709597013, + "id": "execution 0/8/1", + "recorded_at": 1789783462397, "item": { "id": { "log": "execution", "execution": 0, - "seq": 7, + "seq": 8, "index": 1 }, "origin": "derived", @@ -1852,7 +2056,7 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462397, "derived": { "event": "visit.completed", "outcome": { @@ -1862,7 +2066,7 @@ "failure_class": "" }, "metrics": { - "duration_ms": 10 + "duration_ms": 39 }, "context_updates": { "failure_class": "", @@ -1875,16 +2079,91 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 25, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 26, + "kind": "platform", + "id": "7", + "recorded_at": 1789783462395, + "item": { + "seq": 7, + "recorded_at": 1789783462395, + "record": { + "kind": "run.branch", + "run_branch": "fabro/run/01M2VPGKR72ZE18JBQ3BAK6V3E", + "base_sha": "11a87723221691c9b65992c9c8471173c5418b23", + "workspace": "invocation-0-scope-0" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 27, + "kind": "platform", + "id": "8", + "recorded_at": 1789783462395, + "item": { + "seq": 8, + "recorded_at": 1789783462395, + "record": { + "kind": "git.identity", + "name": "Fabro", + "email": "noreply@fabro.sh", + "source": "default" + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 28, + "kind": "platform", + "id": "9", + "recorded_at": 1789783462436, + "item": { + "seq": 9, + "recorded_at": 1789783462436, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 1, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "11a87723221691c9b65992c9c8471173c5418b23", + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 1, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 29, "kind": "petri", - "id": "execution 0/8/0", - "recorded_at": 1789709597013, + "id": "execution 0/9/0", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 0 }, "origin": "external", @@ -1923,11 +2202,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "record": { - "seq": 8, + "seq": 9, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "body": { "event": "routing.resolved", "decision_id": { @@ -1973,16 +2252,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 26, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 30, "kind": "petri", - "id": "execution 0/8/1", - "recorded_at": 1789709597013, + "id": "execution 0/9/1", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 1 }, "origin": "derived", @@ -2015,7 +2294,7 @@ "branches": 2 } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "derived": { "event": "visit.started", "inputs": [ @@ -2033,16 +2312,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 27, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 31, "kind": "petri", - "id": "execution 0/8/2", - "recorded_at": 1789709597013, + "id": "execution 0/9/2", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 8, + "seq": 9, "index": 2 }, "origin": "derived", @@ -2075,7 +2354,7 @@ "branches": 2 } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -2083,16 +2362,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 28, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 32, "kind": "petri", - "id": "execution 0/9/0", - "recorded_at": 1789709597013, + "id": "execution 0/10/0", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 9, + "seq": 10, "index": 0 }, "origin": "core", @@ -2131,11 +2410,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "record": { - "seq": 9, + "seq": 10, "origin": "core", - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "body": { "event": "route.applied", "kind": "edge", @@ -2166,16 +2445,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 29, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 33, "kind": "petri", - "id": "execution 0/10/0", - "recorded_at": 1789709597013, + "id": "execution 0/11/0", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 10, + "seq": 11, "index": 0 }, "origin": "core", @@ -2214,11 +2493,11 @@ "role": "none" } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "record": { - "seq": 10, + "seq": 11, "origin": "core", - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "body": { "event": "token.emitted", "edge": 0, @@ -2233,16 +2512,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 30, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 34, "kind": "petri", - "id": "execution 0/11/0", - "recorded_at": 1789709597013, + "id": "execution 0/12/0", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 11, + "seq": 12, "index": 0 }, "origin": "external", @@ -2275,11 +2554,11 @@ "branches": 2 } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "record": { - "seq": 11, + "seq": 12, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "body": { "event": "admission.decided", "decision_id": { @@ -2295,16 +2574,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 31, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 35, "kind": "petri", - "id": "execution 0/12/0", - "recorded_at": 1789709597013, + "id": "execution 0/13/0", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 0 }, "origin": "external", @@ -2337,11 +2616,11 @@ "branches": 2 } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "record": { - "seq": 12, + "seq": 13, "origin": "external", - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "body": { "event": "step.started", "firing": 2, @@ -2351,16 +2630,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 32, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 36, "kind": "petri", - "id": "execution 0/12/1", - "recorded_at": 1789709597013, + "id": "execution 0/13/1", + "recorded_at": 1789783462437, "item": { "id": { "log": "execution", "execution": 0, - "seq": 12, + "seq": 13, "index": 1 }, "origin": "derived", @@ -2393,7 +2672,7 @@ "branches": 2 } }, - "recorded_at": 1789709597013, + "recorded_at": 1789783462437, "derived": { "event": "wait.state.changed", "state": "running" @@ -2401,49 +2680,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 33, - "kind": "platform", - "id": "7", - "recorded_at": 1789709597013, - "item": { - "seq": 7, - "recorded_at": 1789709597013, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 1, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "ba079ac5c25e2c349df023cc66ec5875d11e2b18", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 1, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 1 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 34, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 37, "kind": "petri", - "id": "execution 0/13/0", - "recorded_at": 1789709597117, + "id": "execution 0/14/0", + "recorded_at": 1789783462815, "item": { "id": { "log": "execution", "execution": 0, - "seq": 13, + "seq": 14, "index": 0 }, "origin": "external", @@ -2476,11 +2722,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462815, "record": { - "seq": 13, + "seq": 14, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462815, "body": { "event": "step.progress.recorded", "firing": 2, @@ -2493,7 +2739,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "beeaef66193b2dc4b53a704b6293e68e0db5aa27", + "git_commit_sha": "7f6e87d18eeb928b747785dd963129c30f9580a9", "reused": false } } @@ -2511,7 +2757,7 @@ "firing": 2, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "beeaef66193b2dc4b53a704b6293e68e0db5aa27", + "git_commit_sha": "7f6e87d18eeb928b747785dd963129c30f9580a9", "reused": false } } @@ -2520,16 +2766,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 35, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 38, "kind": "petri", - "id": "execution 0/14/0", - "recorded_at": 1789709597117, + "id": "execution 0/15/0", + "recorded_at": 1789783462815, "item": { "id": { "log": "execution", "execution": 0, - "seq": 14, + "seq": 15, "index": 0 }, "origin": "external", @@ -2562,11 +2808,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462815, "record": { - "seq": 14, + "seq": 15, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462815, "body": { "event": "step.finished", "firing": 2, @@ -2597,16 +2843,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 36, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 39, "kind": "petri", - "id": "execution 0/14/1", - "recorded_at": 1789709597117, + "id": "execution 0/15/1", + "recorded_at": 1789783462815, "item": { "id": { "log": "execution", "execution": 0, - "seq": 14, + "seq": 15, "index": 1 }, "origin": "derived", @@ -2639,7 +2885,7 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462815, "derived": { "event": "visit.completed", "outcome": { @@ -2665,16 +2911,54 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 37, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 40, + "kind": "platform", + "id": "10", + "recorded_at": 1789783462920, + "item": { + "seq": 10, + "recorded_at": 1789783462920, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 2, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "7f6e87d18eeb928b747785dd963129c30f9580a9", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 2, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 2 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 41, "kind": "petri", - "id": "execution 0/15/0", - "recorded_at": 1789709597117, + "id": "execution 0/16/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 0 }, "origin": "external", @@ -2707,11 +2991,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 15, + "seq": 16, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "routing.resolved", "decision_id": { @@ -2757,6 +3041,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -2787,6 +3072,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -2807,16 +3093,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 38, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 42, "kind": "petri", - "id": "execution 0/15/1", - "recorded_at": 1789709597117, + "id": "execution 0/16/1", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 1 }, "origin": "derived", @@ -2838,6 +3124,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -2862,7 +3149,7 @@ "index": 0 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "visit.started", "inputs": [ @@ -2887,16 +3174,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 39, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 43, "kind": "petri", - "id": "execution 0/15/2", - "recorded_at": 1789709597117, + "id": "execution 0/16/2", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 2 }, "origin": "derived", @@ -2918,6 +3205,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -2942,7 +3230,7 @@ "index": 0 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -2950,16 +3238,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 40, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 44, "kind": "petri", - "id": "execution 0/15/3", - "recorded_at": 1789709597117, + "id": "execution 0/16/3", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 3 }, "origin": "derived", @@ -2981,6 +3269,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -3005,7 +3294,7 @@ "index": 1 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "visit.started", "inputs": [ @@ -3030,16 +3319,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 41, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 45, "kind": "petri", - "id": "execution 0/15/4", - "recorded_at": 1789709597117, + "id": "execution 0/16/4", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 15, + "seq": 16, "index": 4 }, "origin": "derived", @@ -3061,6 +3350,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -3085,7 +3375,7 @@ "index": 1 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -3093,16 +3383,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 42, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 46, "kind": "petri", - "id": "execution 0/16/0", - "recorded_at": 1789709597117, + "id": "execution 0/17/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 0 }, "origin": "core", @@ -3135,11 +3425,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 16, + "seq": 17, "origin": "core", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "route.applied", "kind": "edge", @@ -3162,6 +3452,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -3182,16 +3473,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 43, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 47, "kind": "petri", - "id": "execution 0/16/1", - "recorded_at": 1789709597117, + "id": "execution 0/17/1", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 16, + "seq": 17, "index": 1 }, "origin": "derived", @@ -3224,7 +3515,7 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "fork.started", "occurrence": { @@ -3248,16 +3539,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 44, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 48, "kind": "petri", - "id": "execution 0/17/0", - "recorded_at": 1789709597117, + "id": "execution 0/18/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 17, + "seq": 18, "index": 0 }, "origin": "core", @@ -3290,11 +3581,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 17, + "seq": 18, "origin": "core", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "route.applied", "kind": "edge", @@ -3317,6 +3608,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -3337,16 +3629,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 45, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 49, "kind": "petri", - "id": "execution 0/18/0", - "recorded_at": 1789709597117, + "id": "execution 0/19/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 18, + "seq": 19, "index": 0 }, "origin": "core", @@ -3379,11 +3671,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 18, + "seq": 19, "origin": "core", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "token.emitted", "edge": 6, @@ -3405,16 +3697,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 46, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 50, "kind": "petri", - "id": "execution 0/19/0", - "recorded_at": 1789709597117, + "id": "execution 0/20/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 19, + "seq": 20, "index": 0 }, "origin": "core", @@ -3447,11 +3739,11 @@ "branches": 2 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 19, + "seq": 20, "origin": "core", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "token.emitted", "edge": 7, @@ -3473,104 +3765,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 47, - "kind": "platform", - "id": "8", - "recorded_at": 1789709597117, - "item": { - "seq": 8, - "recorded_at": 1789709597117, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 2, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "beeaef66193b2dc4b53a704b6293e68e0db5aa27", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 2, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 2 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 48, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 51, "kind": "petri", - "id": "coordinator/6/0", - "recorded_at": 1789709597117, - "item": { - "id": { - "log": "coordinator", - "seq": 6, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "recorded_at": 1789709597117, - "record": { - "seq": 6, - "origin": "external", - "recorded_at": 1789709597117, - "body": { - "event": "invocation.declared", - "invocation": 1, - "call": { - "parent": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - }, - "graph": "940ba00308da213651f5dfcfbe78408688ae4d5deb9f96a4356536e2ddf51883", - "context": { - "failure_class": "", - "internal.run_id": "petri" - }, - "secret_bindings": "inherit", - "sandbox": { - "inherited": { - "lease": 0 - } - }, - "admission": { - "gate": "fork@0", - "max_parallel": 4 - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 49, - "kind": "petri", - "id": "execution 0/20/0", - "recorded_at": 1789709597117, + "id": "execution 0/21/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 20, + "seq": 21, "index": 0 }, "origin": "external", @@ -3592,6 +3796,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -3616,11 +3821,11 @@ "index": 0 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 20, + "seq": 21, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "admission.decided", "decision_id": { @@ -3636,16 +3841,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 50, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 52, "kind": "petri", - "id": "execution 0/21/0", - "recorded_at": 1789709597117, + "id": "execution 0/22/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 21, + "seq": 22, "index": 0 }, "origin": "external", @@ -3667,6 +3872,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -3691,11 +3897,11 @@ "index": 0 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 21, + "seq": 22, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "step.started", "firing": 3, @@ -3705,16 +3911,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 51, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 53, "kind": "petri", - "id": "execution 0/21/1", - "recorded_at": 1789709597117, + "id": "execution 0/22/1", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 21, + "seq": 22, "index": 1 }, "origin": "derived", @@ -3736,6 +3942,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -3760,7 +3967,7 @@ "index": 0 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "wait.state.changed", "state": "running" @@ -3768,16 +3975,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 52, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 54, "kind": "petri", - "id": "execution 0/22/0", - "recorded_at": 1789709597117, + "id": "execution 0/23/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 22, + "seq": 23, "index": 0 }, "origin": "external", @@ -3799,6 +4006,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -3823,11 +4031,11 @@ "index": 1 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 22, + "seq": 23, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "admission.decided", "decision_id": { @@ -3843,16 +4051,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 53, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 55, "kind": "petri", - "id": "execution 0/23/0", - "recorded_at": 1789709597117, + "id": "execution 0/24/0", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 23, + "seq": 24, "index": 0 }, "origin": "external", @@ -3874,6 +4082,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -3898,11 +4107,11 @@ "index": 1 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "record": { - "seq": 23, + "seq": 24, "origin": "external", - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "body": { "event": "step.started", "firing": 4, @@ -3912,16 +4121,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 54, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 56, "kind": "petri", - "id": "execution 0/23/1", - "recorded_at": 1789709597117, + "id": "execution 0/24/1", + "recorded_at": 1789783462921, "item": { "id": { "log": "execution", "execution": 0, - "seq": 23, + "seq": 24, "index": 1 }, "origin": "derived", @@ -3943,6 +4152,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -3967,7 +4177,7 @@ "index": 1 } }, - "recorded_at": 1789709597117, + "recorded_at": 1789783462921, "derived": { "event": "wait.state.changed", "state": "running" @@ -3975,20 +4185,20 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 55, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 57, "kind": "petri", - "id": "coordinator/7/0", - "recorded_at": 1789709597119, + "id": "coordinator/6/0", + "recorded_at": 1789783462922, "item": { "id": { "log": "coordinator", - "seq": 7, + "seq": 6, "index": 0 }, "origin": "external", "context": { - "invocation": 2, + "invocation": 1, "parent": { "execution": 0, "firing": 3, @@ -3996,21 +4206,21 @@ "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597119, + "recorded_at": 1789783462922, "record": { - "seq": 7, + "seq": 6, "origin": "external", - "recorded_at": 1789709597119, + "recorded_at": 1789783462922, "body": { "event": "invocation.declared", - "invocation": 2, + "invocation": 1, "call": { "parent": 0, "firing": 3, "attempt": 1, "slot": "branch:fork@2:0:a" }, - "graph": "2b8e4e9c97881bdf04d48f57815fc6633959c953fbc786c7f0ce76488d718542", + "graph": "3451a12b7871dff3e9b2d26f0432cbd0daee7588a9bd8735268aba34c224d9eb", "context": { "failure_class": "", "internal.run_id": "petri" @@ -4030,11 +4240,66 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 56, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 58, + "kind": "petri", + "id": "coordinator/7/0", + "recorded_at": 1789783462923, + "item": { + "id": { + "log": "coordinator", + "seq": 7, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783462923, + "record": { + "seq": 7, + "origin": "external", + "recorded_at": 1789783462923, + "body": { + "event": "invocation.declared", + "invocation": 2, + "call": { + "parent": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + }, + "graph": "44d5a839074e756c1e79d413355777394f35b9fa10e1ec43fc1a807ecbf9e49d", + "context": { + "failure_class": "", + "internal.run_id": "petri" + }, + "secret_bindings": "inherit", + "sandbox": { + "inherited": { + "lease": 0 + } + }, + "admission": { + "gate": "fork@0", + "max_parallel": 4 + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 59, "kind": "petri", "id": "coordinator/8/0", - "recorded_at": 1789709597119, + "recorded_at": 1789783462925, "item": { "id": { "log": "coordinator", @@ -4047,16 +4312,16 @@ "execution": 1, "parent": { "execution": 0, - "firing": 4, + "firing": 3, "attempt": 1, - "slot": "branch:fork@2:1:b" + "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597119, + "recorded_at": 1789783462925, "record": { "seq": 8, "origin": "external", - "recorded_at": 1789709597119, + "recorded_at": 1789783462925, "body": { "event": "execution.declared", "execution": 1, @@ -4087,573 +4352,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 57, - "kind": "petri", - "id": "execution 0/24/0", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 0, - "seq": 24, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "subject": { - "node": { - "id": 4, - "name": "b", - "kind": "attractor/branch", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "parallel.branch", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch": { - "fork": "fork", - "target": "b", - "index": 1 - }, - "synthetic": true - } - }, - "firing": 4, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597120, - "record": { - "seq": 24, - "origin": "external", - "recorded_at": 1789709597120, - "body": { - "event": "step.progress.recorded", - "firing": 4, - "ev": { - "custom": { - "fork": "fork", - "occurrence": { - "fork": "fork", - "firing": 2 - }, - "branch": "b", - "index": 1, - "item_label": null, - "kind": "attractor.parallel.branch.started", - "invocation": 1 - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 58, - "kind": "petri", - "id": "execution 1/0/0", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 0, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "recorded_at": 1789709597120, - "record": { - "seq": 0, - "origin": "external", - "recorded_at": 1789709597120, - "body": { - "event": "execution.started", - "entry": "graph_entries", - "context": { - "failure_class": "", - "internal.run_id": "petri" - }, - "prior_firings": {}, - "execution_index": 0, - "max_executions": 32 - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 59, - "kind": "petri", - "id": "execution 1/1/0", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 1, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "recorded_at": 1789709597120, - "record": { - "seq": 1, - "origin": "external", - "recorded_at": 1789709597120, - "body": { - "event": "admission.decided", - "decision_id": "execution_start", - "decision": "admit", - "trace": [] - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", "stream_seq": 60, "kind": "petri", - "id": "execution 1/1/1", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 1, - "index": 1 - }, - "origin": "derived", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597120, - "derived": { - "event": "visit.started", - "inputs": [ - { - "edge": 0, - "generation": 0, - "payload": null, - "from": 0 - } - ] - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 61, - "kind": "petri", - "id": "execution 1/1/2", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 1, - "index": 2 - }, - "origin": "derived", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597120, - "derived": { - "event": "wait.state.changed", - "state": "awaiting_admission" - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 62, - "kind": "petri", - "id": "execution 1/2/0", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 2, - "index": 0 - }, - "origin": "core", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "recorded_at": 1789709597120, - "record": { - "seq": 2, - "origin": "core", - "recorded_at": 1789709597120, - "body": { - "event": "token.emitted", - "edge": 0, - "generation": 0, - "payload": null, - "from": 0 - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 63, - "kind": "petri", - "id": "execution 1/3/0", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 3, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597120, - "record": { - "seq": 3, - "origin": "external", - "recorded_at": 1789709597120, - "body": { - "event": "admission.decided", - "decision_id": { - "attempt_start": { - "firing": 1, - "attempt": 1 - } - }, - "decision": "admit", - "trace": [] - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 64, - "kind": "petri", - "id": "execution 1/4/0", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 4, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597120, - "record": { - "seq": 4, - "origin": "external", - "recorded_at": 1789709597120, - "body": { - "event": "step.started", - "firing": 1, - "attempt": 1 - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 65, - "kind": "petri", - "id": "execution 1/4/1", - "recorded_at": 1789709597120, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 4, - "index": 1 - }, - "origin": "derived", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597120, - "derived": { - "event": "wait.state.changed", - "state": "running" - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 66, - "kind": "petri", "id": "coordinator/9/0", - "recorded_at": 1789709597120, + "recorded_at": 1789783462925, "item": { "id": { "log": "coordinator", @@ -4666,16 +4369,16 @@ "execution": 2, "parent": { "execution": 0, - "firing": 3, + "firing": 4, "attempt": 1, - "slot": "branch:fork@2:0:a" + "slot": "branch:fork@2:1:b" } }, - "recorded_at": 1789709597120, + "recorded_at": 1789783462925, "record": { "seq": 9, "origin": "external", - "recorded_at": 1789709597120, + "recorded_at": 1789783462925, "body": { "event": "execution.declared", "execution": 2, @@ -4706,11 +4409,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 67, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 61, "kind": "petri", "id": "execution 0/25/0", - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "item": { "id": { "log": "execution", @@ -4737,6 +4440,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -4761,11 +4465,11 @@ "index": 0 } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "record": { "seq": 25, "origin": "external", - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "body": { "event": "step.progress.recorded", "firing": 3, @@ -4780,7 +4484,7 @@ "index": 0, "item_label": null, "kind": "attractor.parallel.branch.started", - "invocation": 2 + "invocation": 1 } } } @@ -4788,22 +4492,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 68, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 62, "kind": "petri", - "id": "execution 2/0/0", - "recorded_at": 1789709597122, + "id": "execution 1/0/0", + "recorded_at": 1789783462925, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 0, "index": 0 }, "origin": "external", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -4811,11 +4515,11 @@ "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "record": { "seq": 0, "origin": "external", - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "body": { "event": "execution.started", "entry": "graph_entries", @@ -4831,22 +4535,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 69, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 63, "kind": "petri", - "id": "execution 2/1/0", - "recorded_at": 1789709597122, + "id": "execution 1/1/0", + "recorded_at": 1789783462925, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 1, "index": 0 }, "origin": "external", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -4854,11 +4558,11 @@ "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "record": { "seq": 1, "origin": "external", - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "body": { "event": "admission.decided", "decision_id": "execution_start", @@ -4869,22 +4573,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 70, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 64, "kind": "petri", - "id": "execution 2/1/1", - "recorded_at": 1789709597122, + "id": "execution 1/1/1", + "recorded_at": 1789783462925, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 1, "index": 1 }, "origin": "derived", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -4906,6 +4610,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -4928,7 +4633,7 @@ "index": 0 } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "derived": { "event": "visit.started", "inputs": [ @@ -4943,22 +4648,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 71, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 65, "kind": "petri", - "id": "execution 2/1/2", - "recorded_at": 1789709597122, + "id": "execution 1/1/2", + "recorded_at": 1789783462925, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 1, "index": 2 }, "origin": "derived", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -4980,6 +4685,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -5002,7 +4708,7 @@ "index": 0 } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -5010,22 +4716,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 72, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 66, "kind": "petri", - "id": "execution 2/2/0", - "recorded_at": 1789709597122, + "id": "execution 1/2/0", + "recorded_at": 1789783462925, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 2, "index": 0 }, "origin": "core", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -5033,11 +4739,11 @@ "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "record": { "seq": 2, "origin": "core", - "recorded_at": 1789709597122, + "recorded_at": 1789783462925, "body": { "event": "token.emitted", "edge": 0, @@ -5049,22 +4755,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 73, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 67, "kind": "petri", - "id": "execution 2/3/0", - "recorded_at": 1789709597122, + "id": "execution 1/3/0", + "recorded_at": 1789783462926, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 3, "index": 0 }, "origin": "external", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -5086,6 +4792,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -5108,11 +4815,11 @@ "index": 0 } }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462926, "record": { "seq": 3, "origin": "external", - "recorded_at": 1789709597122, + "recorded_at": 1789783462926, "body": { "event": "admission.decided", "decision_id": { @@ -5128,22 +4835,22 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 74, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 68, "kind": "petri", - "id": "execution 2/4/0", - "recorded_at": 1789709597122, + "id": "execution 1/4/0", + "recorded_at": 1789783462926, "item": { "id": { "log": "execution", - "execution": 2, + "execution": 1, "seq": 4, "index": 0 }, "origin": "external", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -5151,145 +4858,30 @@ "slot": "branch:fork@2:0:a" } }, - "subject": { - "node": { - "id": 0, - "name": "a", - "kind": "attractor/command", - "meta": { - "label": "a", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 6, - "column": 5 - }, - "edges": { - "1": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 0 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 0 - } - }, - "recorded_at": 1789709597122, + "recorded_at": 1789783462926, "record": { "seq": 4, "origin": "external", - "recorded_at": 1789709597122, + "recorded_at": 1789783462926, "body": { - "event": "step.started", - "firing": 1, - "attempt": 1 + "event": "scope.acquired", + "scope": 0, + "lease": 0, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696936a9d7dc0-1174-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPGKR72ZE18JBQ3BAK6V3E/petri/scopes/invocation-0-scope-0/work", + "duration_ms": 0 } } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 75, - "kind": "petri", - "id": "execution 2/4/1", - "recorded_at": 1789709597122, - "item": { - "id": { - "log": "execution", - "execution": 2, - "seq": 4, - "index": 1 - }, - "origin": "derived", - "context": { - "invocation": 2, - "execution": 2, - "parent": { - "execution": 0, - "firing": 3, - "attempt": 1, - "slot": "branch:fork@2:0:a" - } - }, - "subject": { - "node": { - "id": 0, - "name": "a", - "kind": "attractor/command", - "meta": { - "label": "a", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 6, - "column": 5 - }, - "edges": { - "1": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 0 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 0 - } - }, - "recorded_at": 1789709597122, - "derived": { - "event": "wait.state.changed", - "state": "running" - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 76, - "kind": "platform", - "id": "9", - "recorded_at": 1789709597157, - "item": { - "seq": 9, - "recorded_at": 1789709597157, - "record": { - "kind": "run.notice", - "level": "info", - "code": "test.between_branches", - "message": "recorded while both branches ran" - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 77, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 69, "kind": "petri", "id": "execution 1/5/0", - "recorded_at": 1789709597190, + "recorded_at": 1789783462926, "item": { "id": { "log": "execution", @@ -5301,84 +4893,6 @@ "context": { "invocation": 1, "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597190, - "record": { - "seq": 5, - "origin": "external", - "recorded_at": 1789709597190, - "body": { - "event": "step.progress.recorded", - "firing": 1, - "ev": { - "log": { - "stream": "stdout", - "line": "b" - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 78, - "kind": "petri", - "id": "execution 2/5/0", - "recorded_at": 1789709597190, - "item": { - "id": { - "log": "execution", - "execution": 2, - "seq": 5, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 2, - "execution": 2, "parent": { "execution": 0, "firing": 3, @@ -5400,6 +4914,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -5422,237 +4937,36 @@ "index": 0 } }, - "recorded_at": 1789709597190, + "recorded_at": 1789783462926, "record": { "seq": 5, "origin": "external", - "recorded_at": 1789709597190, + "recorded_at": 1789783462926, "body": { - "event": "step.progress.recorded", + "event": "step.started", "firing": 1, - "ev": { - "log": { - "stream": "stdout", - "line": "a" - } - } + "attempt": 1 } } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 79, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 70, "kind": "petri", - "id": "execution 2/6/0", - "recorded_at": 1789709597317, + "id": "execution 1/5/1", + "recorded_at": 1789783462926, "item": { "id": { "log": "execution", - "execution": 2, - "seq": 6, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 2, - "execution": 2, - "parent": { - "execution": 0, - "firing": 3, - "attempt": 1, - "slot": "branch:fork@2:0:a" - } - }, - "subject": { - "node": { - "id": 0, - "name": "a", - "kind": "attractor/command", - "meta": { - "label": "a", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 6, - "column": 5 - }, - "edges": { - "1": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 0 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 0 - } - }, - "recorded_at": 1789709597317, - "record": { - "seq": 6, - "origin": "external", - "recorded_at": 1789709597317, - "body": { - "event": "step.progress.recorded", - "firing": 1, - "ev": { - "custom": { - "$note": { - "kind": "fabro.checkpoint", - "payload": { - "execution": 2, - "firing": 1, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "abda2b70b2a2627e829428c1d0aa50169b7b17f8", - "reused": false - } - } - } - } - } - }, - "derived": { - "parsed": { - "kind": "note", - "note": { - "kind": "fabro.checkpoint", - "payload": { - "execution": 2, - "firing": 1, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "abda2b70b2a2627e829428c1d0aa50169b7b17f8", - "reused": false - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 80, - "kind": "petri", - "id": "execution 2/7/0", - "recorded_at": 1789709597317, - "item": { - "id": { - "log": "execution", - "execution": 2, - "seq": 7, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 2, - "execution": 2, - "parent": { - "execution": 0, - "firing": 3, - "attempt": 1, - "slot": "branch:fork@2:0:a" - } - }, - "subject": { - "node": { - "id": 0, - "name": "a", - "kind": "attractor/command", - "meta": { - "label": "a", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 6, - "column": 5 - }, - "edges": { - "1": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 0 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 0 - } - }, - "recorded_at": 1789709597317, - "record": { - "seq": 7, - "origin": "external", - "recorded_at": 1789709597317, - "body": { - "event": "step.finished", - "firing": 1, - "attempt": 1, - "outcome": { - "status": "success", - "output": { - "exit_status": 0, - "stdout": "a\n", - "outcome": "succeeded", - "failure_class": "" - }, - "metrics": { - "duration_ms": 96 - }, - "context_updates": { - "command.output": "a\n", - "failure_class": "" - } - } - } - }, - "derived": { - "final": true, - "exhausted": false - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 81, - "kind": "petri", - "id": "execution 2/7/1", - "recorded_at": 1789709597317, - "item": { - "id": { - "log": "execution", - "execution": 2, - "seq": 7, + "execution": 1, + "seq": 5, "index": 1 }, "origin": "derived", "context": { - "invocation": 2, - "execution": 2, + "invocation": 1, + "execution": 1, "parent": { "execution": 0, "firing": 3, @@ -5674,6 +4988,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -5696,245 +5011,19 @@ "index": 0 } }, - "recorded_at": 1789709597317, + "recorded_at": 1789783462926, "derived": { - "event": "visit.completed", - "outcome": { - "status": "success", - "output": { - "exit_status": 0, - "stdout": "a\n", - "outcome": "succeeded", - "failure_class": "" - }, - "metrics": { - "duration_ms": 96 - }, - "context_updates": { - "command.output": "a\n", - "failure_class": "" - } - }, - "executed": true, - "attempts": 1 + "event": "wait.state.changed", + "state": "running" } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 82, - "kind": "petri", - "id": "execution 2/8/0", - "recorded_at": 1789709597317, - "item": { - "id": { - "log": "execution", - "execution": 2, - "seq": 8, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 2, - "execution": 2, - "parent": { - "execution": 0, - "firing": 3, - "attempt": 1, - "slot": "branch:fork@2:0:a" - } - }, - "subject": { - "node": { - "id": 0, - "name": "a", - "kind": "attractor/command", - "meta": { - "label": "a", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 6, - "column": 5 - }, - "edges": { - "1": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 0 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 0 - } - }, - "recorded_at": 1789709597317, - "record": { - "seq": 8, - "origin": "external", - "recorded_at": 1789709597317, - "body": { - "event": "routing.resolved", - "decision_id": { - "route": { - "firing": 1, - "attempt": 1 - } - }, - "groups": [] - } - }, - "derived": { - "groups": [] - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 83, - "kind": "platform", - "id": "10", - "recorded_at": 1789709597317, - "item": { - "seq": 10, - "recorded_at": 1789709597317, - "record": { - "kind": "checkpoint", - "execution": 2, - "firing": 1, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "abda2b70b2a2627e829428c1d0aa50169b7b17f8", - "operation": { - "execution": 2, - "decision": { - "attempt_start": { - "firing": 1, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 2, - "firing": 1 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 84, - "kind": "petri", - "id": "coordinator/10/0", - "recorded_at": 1789709597317, - "item": { - "id": { - "log": "coordinator", - "seq": 10, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 2, - "execution": 2, - "parent": { - "execution": 0, - "firing": 3, - "attempt": 1, - "slot": "branch:fork@2:0:a" - } - }, - "recorded_at": 1789709597317, - "record": { - "seq": 10, - "origin": "external", - "recorded_at": 1789709597317, - "body": { - "event": "execution.finished", - "execution": 2, - "exit": { - "terminal": { - "status": "success" - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 85, - "kind": "petri", - "id": "coordinator/11/0", - "recorded_at": 1789709597317, - "item": { - "id": { - "log": "coordinator", - "seq": 11, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 2, - "execution": 2, - "parent": { - "execution": 0, - "firing": 3, - "attempt": 1, - "slot": "branch:fork@2:0:a" - } - }, - "recorded_at": 1789709597317, - "record": { - "seq": 11, - "origin": "external", - "recorded_at": 1789709597317, - "body": { - "event": "invocation.finished", - "invocation": 2, - "result": { - "status": "success", - "failure": null, - "final_execution": 2, - "output": { - "exit_status": 0, - "stdout": "a\n", - "outcome": "succeeded", - "failure_class": "" - }, - "context": { - "command.output": "a\n", - "failure_class": "", - "internal.run_id": "petri" - }, - "updates": { - "command.output": "a\n", - "failure_class": "" - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 86, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 71, "kind": "petri", "id": "execution 0/26/0", - "recorded_at": 1789709597318, + "recorded_at": 1789783462930, "item": { "id": { "log": "execution", @@ -5949,50 +5038,51 @@ }, "subject": { "node": { - "id": 3, - "name": "a", + "id": 4, + "name": "b", "kind": "attractor/branch", "meta": { - "label": "a", + "label": "b", "shape": "parallelogram", "kind": "parallel.branch", "classes": [], "span": { - "line": 6, + "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { - "1": { + "2": { "to": "merge", "label": null } }, "branch": { "fork": "fork", - "target": "a", - "index": 0 + "target": "b", + "index": 1 }, "synthetic": true } }, - "firing": 3, + "firing": 4, "visit": 1, "attempt": 1, "generation": 0, "branch": { "role": "member", "fork": 2, - "index": 0 + "index": 1 } }, - "recorded_at": 1789709597318, + "recorded_at": 1789783462930, "record": { "seq": 26, "origin": "external", - "recorded_at": 1789709597318, + "recorded_at": 1789783462930, "body": { "event": "step.progress.recorded", - "firing": 3, + "firing": 4, "ev": { "custom": { "fork": "fork", @@ -6000,15 +5090,11 @@ "fork": "fork", "firing": 2 }, - "branch": "a", - "index": 0, + "branch": "b", + "index": 1, "item_label": null, - "kind": "attractor.parallel.branch.completed", - "invocation": 2, - "status": "succeeded", - "disposition": "completed", - "started": true, - "duration_ms": 200 + "kind": "attractor.parallel.branch.started", + "invocation": 2 } } } @@ -6016,22 +5102,103 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 87, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 72, "kind": "petri", - "id": "execution 1/6/0", - "recorded_at": 1789709597433, + "id": "execution 2/0/0", + "recorded_at": 1789783462930, "item": { "id": { "log": "execution", - "execution": 1, - "seq": 6, + "execution": 2, + "seq": 0, "index": 0 }, "origin": "external", "context": { - "invocation": 1, - "execution": 1, + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783462930, + "record": { + "seq": 0, + "origin": "external", + "recorded_at": 1789783462930, + "body": { + "event": "execution.started", + "entry": "graph_entries", + "context": { + "failure_class": "", + "internal.run_id": "petri" + }, + "prior_firings": {}, + "execution_index": 0, + "max_executions": 32 + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 73, + "kind": "petri", + "id": "execution 2/1/0", + "recorded_at": 1789783462930, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 1, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783462930, + "record": { + "seq": 1, + "origin": "external", + "recorded_at": 1789783462930, + "body": { + "event": "admission.decided", + "decision_id": "execution_start", + "decision": "admit", + "trace": [] + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 74, + "kind": "petri", + "id": "execution 2/1/1", + "recorded_at": 1789783462930, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 1, + "index": 1 + }, + "origin": "derived", + "context": { + "invocation": 2, + "execution": 2, "parent": { "execution": 0, "firing": 4, @@ -6053,6 +5220,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -6075,11 +5243,632 @@ "index": 1 } }, - "recorded_at": 1789709597433, + "recorded_at": 1789783462930, + "derived": { + "event": "visit.started", + "inputs": [ + { + "edge": 0, + "generation": 0, + "payload": null, + "from": 0 + } + ] + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 75, + "kind": "petri", + "id": "execution 2/1/2", + "recorded_at": 1789783462930, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 1, + "index": 2 + }, + "origin": "derived", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783462930, + "derived": { + "event": "wait.state.changed", + "state": "awaiting_admission" + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 76, + "kind": "petri", + "id": "execution 2/2/0", + "recorded_at": 1789783462930, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 2, + "index": 0 + }, + "origin": "core", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783462930, + "record": { + "seq": 2, + "origin": "core", + "recorded_at": 1789783462930, + "body": { + "event": "token.emitted", + "edge": 0, + "generation": 0, + "payload": null, + "from": 0 + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 77, + "kind": "petri", + "id": "execution 2/3/0", + "recorded_at": 1789783462931, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 3, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783462931, + "record": { + "seq": 3, + "origin": "external", + "recorded_at": 1789783462931, + "body": { + "event": "admission.decided", + "decision_id": { + "attempt_start": { + "firing": 1, + "attempt": 1 + } + }, + "decision": "admit", + "trace": [] + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 78, + "kind": "petri", + "id": "execution 2/4/0", + "recorded_at": 1789783462931, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 4, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783462931, + "record": { + "seq": 4, + "origin": "external", + "recorded_at": 1789783462931, + "body": { + "event": "scope.acquired", + "scope": 0, + "lease": 0, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696936a9d7dc0-1174-0", + "working_directory": "/private/var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/REDACTED/storage/scratch/20260918-01M2VPGKR72ZE18JBQ3BAK6V3E/petri/scopes/invocation-0-scope-0/work", + "duration_ms": 0 + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 79, + "kind": "petri", + "id": "execution 2/5/0", + "recorded_at": 1789783462931, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 5, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783462931, + "record": { + "seq": 5, + "origin": "external", + "recorded_at": 1789783462931, + "body": { + "event": "step.started", + "firing": 1, + "attempt": 1 + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 80, + "kind": "petri", + "id": "execution 2/5/1", + "recorded_at": 1789783462931, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 5, + "index": 1 + }, + "origin": "derived", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783462931, + "derived": { + "event": "wait.state.changed", + "state": "running" + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 81, + "kind": "platform", + "id": "11", + "recorded_at": 1789783462966, + "item": { + "seq": 11, + "recorded_at": 1789783462966, + "record": { + "kind": "run.notice", + "level": "info", + "code": "test.between_branches", + "message": "recorded while both branches ran" + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 82, + "kind": "petri", + "id": "execution 1/6/0", + "recorded_at": 1789783463016, + "item": { + "id": { + "log": "execution", + "execution": 1, + "seq": 6, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 1, + "execution": 1, + "parent": { + "execution": 0, + "firing": 3, + "attempt": 1, + "slot": "branch:fork@2:0:a" + } + }, + "subject": { + "node": { + "id": 0, + "name": "a", + "kind": "attractor/command", + "meta": { + "label": "a", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 6, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", + "edges": { + "1": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 0 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 0 + } + }, + "recorded_at": 1789783463016, "record": { "seq": 6, "origin": "external", - "recorded_at": 1789709597433, + "recorded_at": 1789783463016, + "body": { + "event": "step.progress.recorded", + "firing": 1, + "ev": { + "log": { + "stream": "stdout", + "line": "a" + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 83, + "kind": "petri", + "id": "execution 2/6/0", + "recorded_at": 1789783463027, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 6, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783463027, + "record": { + "seq": 6, + "origin": "external", + "recorded_at": 1789783463027, + "body": { + "event": "step.progress.recorded", + "firing": 1, + "ev": { + "log": { + "stream": "stdout", + "line": "b" + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 84, + "kind": "petri", + "id": "execution 1/7/0", + "recorded_at": 1789783463384, + "item": { + "id": { + "log": "execution", + "execution": 1, + "seq": 7, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 1, + "execution": 1, + "parent": { + "execution": 0, + "firing": 3, + "attempt": 1, + "slot": "branch:fork@2:0:a" + } + }, + "subject": { + "node": { + "id": 0, + "name": "a", + "kind": "attractor/command", + "meta": { + "label": "a", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 6, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", + "edges": { + "1": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 0 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 0 + } + }, + "recorded_at": 1789783463384, + "record": { + "seq": 7, + "origin": "external", + "recorded_at": 1789783463384, "body": { "event": "step.progress.recorded", "firing": 1, @@ -6092,7 +5881,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "572c40a80a2b6456e7dd68d63a0fce6416805fab", + "git_commit_sha": "be5dce50d1facb4b1591f4c0be61456afda8a8af", "reused": false } } @@ -6110,7 +5899,7 @@ "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "572c40a80a2b6456e7dd68d63a0fce6416805fab", + "git_commit_sha": "be5dce50d1facb4b1591f4c0be61456afda8a8af", "reused": false } } @@ -6119,16 +5908,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 88, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 85, "kind": "petri", - "id": "execution 1/7/0", - "recorded_at": 1789709597433, + "id": "execution 1/8/0", + "recorded_at": 1789783463384, "item": { "id": { "log": "execution", "execution": 1, - "seq": 7, + "seq": 8, "index": 0 }, "origin": "external", @@ -6137,34 +5926,35 @@ "execution": 1, "parent": { "execution": 0, - "firing": 4, + "firing": 3, "attempt": 1, - "slot": "branch:fork@2:1:b" + "slot": "branch:fork@2:0:a" } }, "subject": { "node": { "id": 0, - "name": "b", + "name": "a", "kind": "attractor/command", "meta": { - "label": "b", + "label": "a", "shape": "parallelogram", "kind": "command", "classes": [], "span": { - "line": 7, + "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { - "2": { + "1": { "to": "merge", "label": null } }, "branch_role": { "fork": 2, - "index": 1 + "index": 0 } } }, @@ -6175,14 +5965,14 @@ "branch": { "role": "member", "fork": 2, - "index": 1 + "index": 0 } }, - "recorded_at": 1789709597433, + "recorded_at": 1789783463384, "record": { - "seq": 7, + "seq": 8, "origin": "external", - "recorded_at": 1789709597433, + "recorded_at": 1789783463384, "body": { "event": "step.finished", "firing": 1, @@ -6191,15 +5981,15 @@ "status": "success", "output": { "exit_status": 0, - "stdout": "b\n", + "stdout": "a\n", "outcome": "succeeded", "failure_class": "" }, "metrics": { - "duration_ms": 98 + "duration_ms": 117 }, "context_updates": { - "command.output": "b\n", + "command.output": "a\n", "failure_class": "" } } @@ -6212,16 +6002,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 89, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 86, "kind": "petri", - "id": "execution 1/7/1", - "recorded_at": 1789709597433, + "id": "execution 1/8/1", + "recorded_at": 1789783463384, "item": { "id": { "log": "execution", "execution": 1, - "seq": 7, + "seq": 8, "index": 1 }, "origin": "derived", @@ -6230,34 +6020,35 @@ "execution": 1, "parent": { "execution": 0, - "firing": 4, + "firing": 3, "attempt": 1, - "slot": "branch:fork@2:1:b" + "slot": "branch:fork@2:0:a" } }, "subject": { "node": { "id": 0, - "name": "b", + "name": "a", "kind": "attractor/command", "meta": { - "label": "b", + "label": "a", "shape": "parallelogram", "kind": "command", "classes": [], "span": { - "line": 7, + "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { - "2": { + "1": { "to": "merge", "label": null } }, "branch_role": { "fork": 2, - "index": 1 + "index": 0 } } }, @@ -6268,25 +6059,25 @@ "branch": { "role": "member", "fork": 2, - "index": 1 + "index": 0 } }, - "recorded_at": 1789709597433, + "recorded_at": 1789783463384, "derived": { "event": "visit.completed", "outcome": { "status": "success", "output": { "exit_status": 0, - "stdout": "b\n", + "stdout": "a\n", "outcome": "succeeded", "failure_class": "" }, "metrics": { - "duration_ms": 98 + "duration_ms": 117 }, "context_updates": { - "command.output": "b\n", + "command.output": "a\n", "failure_class": "" } }, @@ -6296,102 +6087,26 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 90, - "kind": "petri", - "id": "execution 1/8/0", - "recorded_at": 1789709597433, - "item": { - "id": { - "log": "execution", - "execution": 1, - "seq": 8, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 1, - "execution": 1, - "parent": { - "execution": 0, - "firing": 4, - "attempt": 1, - "slot": "branch:fork@2:1:b" - } - }, - "subject": { - "node": { - "id": 0, - "name": "b", - "kind": "attractor/command", - "meta": { - "label": "b", - "shape": "parallelogram", - "kind": "command", - "classes": [], - "span": { - "line": 7, - "column": 5 - }, - "edges": { - "2": { - "to": "merge", - "label": null - } - }, - "branch_role": { - "fork": 2, - "index": 1 - } - } - }, - "firing": 1, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "member", - "fork": 2, - "index": 1 - } - }, - "recorded_at": 1789709597433, - "record": { - "seq": 8, - "origin": "external", - "recorded_at": 1789709597433, - "body": { - "event": "routing.resolved", - "decision_id": { - "route": { - "firing": 1, - "attempt": 1 - } - }, - "groups": [] - } - }, - "derived": { - "groups": [] - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 91, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 87, "kind": "platform", - "id": "11", - "recorded_at": 1789709597433, + "id": "12", + "recorded_at": 1789783463512, "item": { - "seq": 11, - "recorded_at": 1789709597433, + "seq": 12, + "recorded_at": 1789783463512, "record": { "kind": "checkpoint", "execution": 1, "firing": 1, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "572c40a80a2b6456e7dd68d63a0fce6416805fab", + "git_commit_sha": "be5dce50d1facb4b1591f4c0be61456afda8a8af", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, "operation": { "execution": 1, "decision": { @@ -6410,15 +6125,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 92, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 88, "kind": "petri", - "id": "coordinator/12/0", - "recorded_at": 1789709597434, + "id": "execution 1/9/0", + "recorded_at": 1789783463513, "item": { "id": { - "log": "coordinator", - "seq": 12, + "log": "execution", + "execution": 1, + "seq": 9, "index": 0 }, "origin": "external", @@ -6427,16 +6143,97 @@ "execution": 1, "parent": { "execution": 0, - "firing": 4, + "firing": 3, "attempt": 1, - "slot": "branch:fork@2:1:b" + "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597434, + "subject": { + "node": { + "id": 0, + "name": "a", + "kind": "attractor/command", + "meta": { + "label": "a", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 6, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", + "edges": { + "1": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 0 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 0 + } + }, + "recorded_at": 1789783463513, "record": { - "seq": 12, + "seq": 9, "origin": "external", - "recorded_at": 1789709597434, + "recorded_at": 1789783463513, + "body": { + "event": "routing.resolved", + "decision_id": { + "route": { + "firing": 1, + "attempt": 1 + } + }, + "groups": [] + } + }, + "derived": { + "groups": [] + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 89, + "kind": "petri", + "id": "coordinator/10/0", + "recorded_at": 1789783463522, + "item": { + "id": { + "log": "coordinator", + "seq": 10, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 1, + "execution": 1, + "parent": { + "execution": 0, + "firing": 3, + "attempt": 1, + "slot": "branch:fork@2:0:a" + } + }, + "recorded_at": 1789783463522, + "record": { + "seq": 10, + "origin": "external", + "recorded_at": 1789783463522, "body": { "event": "execution.finished", "execution": 1, @@ -6450,15 +6247,15 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 93, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 90, "kind": "petri", - "id": "coordinator/13/0", - "recorded_at": 1789709597434, + "id": "coordinator/11/0", + "recorded_at": 1789783463522, "item": { "id": { "log": "coordinator", - "seq": 13, + "seq": 11, "index": 0 }, "origin": "external", @@ -6467,16 +6264,16 @@ "execution": 1, "parent": { "execution": 0, - "firing": 4, + "firing": 3, "attempt": 1, - "slot": "branch:fork@2:1:b" + "slot": "branch:fork@2:0:a" } }, - "recorded_at": 1789709597434, + "recorded_at": 1789783463522, "record": { - "seq": 13, + "seq": 11, "origin": "external", - "recorded_at": 1789709597434, + "recorded_at": 1789783463522, "body": { "event": "invocation.finished", "invocation": 1, @@ -6484,6 +6281,591 @@ "status": "success", "failure": null, "final_execution": 1, + "output": { + "exit_status": 0, + "stdout": "a\n", + "outcome": "succeeded", + "failure_class": "" + }, + "context": { + "command.output": "a\n", + "failure_class": "", + "internal.run_id": "petri" + }, + "updates": { + "command.output": "a\n", + "failure_class": "" + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 91, + "kind": "petri", + "id": "execution 0/27/0", + "recorded_at": 1789783463523, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 27, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "subject": { + "node": { + "id": 3, + "name": "a", + "kind": "attractor/branch", + "meta": { + "label": "a", + "shape": "parallelogram", + "kind": "parallel.branch", + "classes": [], + "span": { + "line": 6, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", + "edges": { + "1": { + "to": "merge", + "label": null + } + }, + "branch": { + "fork": "fork", + "target": "a", + "index": 0 + }, + "synthetic": true + } + }, + "firing": 3, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 0 + } + }, + "recorded_at": 1789783463523, + "record": { + "seq": 27, + "origin": "external", + "recorded_at": 1789783463523, + "body": { + "event": "step.progress.recorded", + "firing": 3, + "ev": { + "custom": { + "fork": "fork", + "occurrence": { + "fork": "fork", + "firing": 2 + }, + "branch": "a", + "index": 0, + "item_label": null, + "kind": "attractor.parallel.branch.completed", + "invocation": 1, + "status": "succeeded", + "disposition": "completed", + "started": true, + "duration_ms": 601 + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 92, + "kind": "petri", + "id": "execution 2/7/0", + "recorded_at": 1789783463754, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 7, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783463754, + "record": { + "seq": 7, + "origin": "external", + "recorded_at": 1789783463754, + "body": { + "event": "step.progress.recorded", + "firing": 1, + "ev": { + "custom": { + "$note": { + "kind": "fabro.checkpoint", + "payload": { + "execution": 2, + "firing": 1, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "5a4674c2d55bf9f7e3d7895bdc44e616b3190556", + "reused": false + } + } + } + } + } + }, + "derived": { + "parsed": { + "kind": "note", + "note": { + "kind": "fabro.checkpoint", + "payload": { + "execution": 2, + "firing": 1, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "5a4674c2d55bf9f7e3d7895bdc44e616b3190556", + "reused": false + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 93, + "kind": "petri", + "id": "execution 2/8/0", + "recorded_at": 1789783463754, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 8, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783463754, + "record": { + "seq": 8, + "origin": "external", + "recorded_at": 1789783463754, + "body": { + "event": "step.finished", + "firing": 1, + "attempt": 1, + "outcome": { + "status": "success", + "output": { + "exit_status": 0, + "stdout": "b\n", + "outcome": "succeeded", + "failure_class": "" + }, + "metrics": { + "duration_ms": 116 + }, + "context_updates": { + "command.output": "b\n", + "failure_class": "" + } + } + } + }, + "derived": { + "final": true, + "exhausted": false + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 94, + "kind": "petri", + "id": "execution 2/8/1", + "recorded_at": 1789783463754, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 8, + "index": 1 + }, + "origin": "derived", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783463754, + "derived": { + "event": "visit.completed", + "outcome": { + "status": "success", + "output": { + "exit_status": 0, + "stdout": "b\n", + "outcome": "succeeded", + "failure_class": "" + }, + "metrics": { + "duration_ms": 116 + }, + "context_updates": { + "command.output": "b\n", + "failure_class": "" + } + }, + "executed": true, + "attempts": 1 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 95, + "kind": "platform", + "id": "13", + "recorded_at": 1789783463891, + "item": { + "seq": 13, + "recorded_at": 1789783463891, + "record": { + "kind": "checkpoint", + "execution": 2, + "firing": 1, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "5a4674c2d55bf9f7e3d7895bdc44e616b3190556", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 2, + "decision": { + "attempt_start": { + "firing": 1, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 2, + "firing": 1 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 96, + "kind": "petri", + "id": "execution 2/9/0", + "recorded_at": 1789783463895, + "item": { + "id": { + "log": "execution", + "execution": 2, + "seq": 9, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "subject": { + "node": { + "id": 0, + "name": "b", + "kind": "attractor/command", + "meta": { + "label": "b", + "shape": "parallelogram", + "kind": "command", + "classes": [], + "span": { + "line": 7, + "column": 5 + }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", + "edges": { + "2": { + "to": "merge", + "label": null + } + }, + "branch_role": { + "fork": 2, + "index": 1 + } + } + }, + "firing": 1, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "member", + "fork": 2, + "index": 1 + } + }, + "recorded_at": 1789783463895, + "record": { + "seq": 9, + "origin": "external", + "recorded_at": 1789783463895, + "body": { + "event": "routing.resolved", + "decision_id": { + "route": { + "firing": 1, + "attempt": 1 + } + }, + "groups": [] + } + }, + "derived": { + "groups": [] + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 97, + "kind": "petri", + "id": "coordinator/12/0", + "recorded_at": 1789783463907, + "item": { + "id": { + "log": "coordinator", + "seq": 12, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783463907, + "record": { + "seq": 12, + "origin": "external", + "recorded_at": 1789783463907, + "body": { + "event": "execution.finished", + "execution": 2, + "exit": { + "terminal": { + "status": "success" + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 98, + "kind": "petri", + "id": "coordinator/13/0", + "recorded_at": 1789783463909, + "item": { + "id": { + "log": "coordinator", + "seq": 13, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 2, + "execution": 2, + "parent": { + "execution": 0, + "firing": 4, + "attempt": 1, + "slot": "branch:fork@2:1:b" + } + }, + "recorded_at": 1789783463909, + "record": { + "seq": 13, + "origin": "external", + "recorded_at": 1789783463909, + "body": { + "event": "invocation.finished", + "invocation": 2, + "result": { + "status": "success", + "failure": null, + "final_execution": 2, "output": { "exit_status": 0, "stdout": "b\n", @@ -6505,16 +6887,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 94, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 99, "kind": "petri", - "id": "execution 0/27/0", - "recorded_at": 1789709597434, + "id": "execution 0/28/0", + "recorded_at": 1789783463911, "item": { "id": { "log": "execution", "execution": 0, - "seq": 27, + "seq": 28, "index": 0 }, "origin": "external", @@ -6536,6 +6918,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -6560,11 +6943,11 @@ "index": 1 } }, - "recorded_at": 1789709597434, + "recorded_at": 1789783463911, "record": { - "seq": 27, + "seq": 28, "origin": "external", - "recorded_at": 1789709597434, + "recorded_at": 1789783463911, "body": { "event": "step.progress.recorded", "firing": 4, @@ -6579,11 +6962,11 @@ "index": 1, "item_label": null, "kind": "attractor.parallel.branch.completed", - "invocation": 1, + "invocation": 2, "status": "succeeded", "disposition": "completed", "started": true, - "duration_ms": 316 + "duration_ms": 989 } } } @@ -6591,16 +6974,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 95, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 100, "kind": "petri", - "id": "execution 0/28/0", - "recorded_at": 1789709597525, + "id": "execution 0/29/0", + "recorded_at": 1789783464109, "item": { "id": { "log": "execution", "execution": 0, - "seq": 28, + "seq": 29, "index": 0 }, "origin": "external", @@ -6622,6 +7005,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -6646,11 +7030,11 @@ "index": 0 } }, - "recorded_at": 1789709597525, + "recorded_at": 1789783464109, "record": { - "seq": 28, + "seq": 29, "origin": "external", - "recorded_at": 1789709597525, + "recorded_at": 1789783464109, "body": { "event": "step.progress.recorded", "firing": 3, @@ -6663,7 +7047,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "d19179e7075e6d260660832c2f26e3a31efecd20", + "git_commit_sha": "5dea449d2706449671001d14c7557488b34a26c2", "reused": false } } @@ -6681,7 +7065,7 @@ "firing": 3, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "d19179e7075e6d260660832c2f26e3a31efecd20", + "git_commit_sha": "5dea449d2706449671001d14c7557488b34a26c2", "reused": false } } @@ -6690,16 +7074,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 96, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 101, "kind": "petri", - "id": "execution 0/29/0", - "recorded_at": 1789709597525, + "id": "execution 0/30/0", + "recorded_at": 1789783464109, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 30, "index": 0 }, "origin": "external", @@ -6721,6 +7105,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -6745,11 +7130,11 @@ "index": 0 } }, - "recorded_at": 1789709597525, + "recorded_at": 1789783464109, "record": { - "seq": 29, + "seq": 30, "origin": "external", - "recorded_at": 1789709597525, + "recorded_at": 1789783464109, "body": { "event": "step.finished", "firing": 3, @@ -6765,7 +7150,7 @@ } }, "metrics": { - "duration_ms": 200 + "duration_ms": 601 } } } @@ -6777,16 +7162,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 97, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 102, "kind": "petri", - "id": "execution 0/29/1", - "recorded_at": 1789709597525, + "id": "execution 0/30/1", + "recorded_at": 1789783464109, "item": { "id": { "log": "execution", "execution": 0, - "seq": 29, + "seq": 30, "index": 1 }, "origin": "derived", @@ -6808,6 +7193,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -6832,7 +7218,7 @@ "index": 0 } }, - "recorded_at": 1789709597525, + "recorded_at": 1789783464109, "derived": { "event": "visit.completed", "outcome": { @@ -6846,7 +7232,7 @@ } }, "metrics": { - "duration_ms": 200 + "duration_ms": 601 } }, "executed": true, @@ -6855,16 +7241,54 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 98, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 103, + "kind": "platform", + "id": "14", + "recorded_at": 1789783464216, + "item": { + "seq": 14, + "recorded_at": 1789783464216, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 3, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "5dea449d2706449671001d14c7557488b34a26c2", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 3, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 3 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 104, "kind": "petri", - "id": "execution 0/30/0", - "recorded_at": 1789709597525, + "id": "execution 0/31/0", + "recorded_at": 1789783464216, "item": { "id": { "log": "execution", "execution": 0, - "seq": 30, + "seq": 31, "index": 0 }, "origin": "external", @@ -6886,6 +7310,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -6910,11 +7335,11 @@ "index": 0 } }, - "recorded_at": 1789709597525, + "recorded_at": 1789783464216, "record": { - "seq": 30, + "seq": 31, "origin": "external", - "recorded_at": 1789709597525, + "recorded_at": 1789783464216, "body": { "event": "routing.resolved", "decision_id": { @@ -6966,16 +7391,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 99, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 105, "kind": "petri", - "id": "execution 0/31/0", - "recorded_at": 1789709597525, + "id": "execution 0/32/0", + "recorded_at": 1789783464216, "item": { "id": { "log": "execution", "execution": 0, - "seq": 31, + "seq": 32, "index": 0 }, "origin": "core", @@ -6997,6 +7422,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -7021,11 +7447,11 @@ "index": 0 } }, - "recorded_at": 1789709597525, + "recorded_at": 1789783464216, "record": { - "seq": 31, + "seq": 32, "origin": "core", - "recorded_at": 1789709597525, + "recorded_at": 1789783464216, "body": { "event": "route.applied", "kind": "edge", @@ -7062,16 +7488,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 100, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 106, "kind": "petri", - "id": "execution 0/32/0", - "recorded_at": 1789709597525, + "id": "execution 0/33/0", + "recorded_at": 1789783464216, "item": { "id": { "log": "execution", "execution": 0, - "seq": 32, + "seq": 33, "index": 0 }, "origin": "core", @@ -7093,6 +7519,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -7117,11 +7544,11 @@ "index": 0 } }, - "recorded_at": 1789709597525, + "recorded_at": 1789783464216, "record": { - "seq": 32, + "seq": 33, "origin": "core", - "recorded_at": 1789709597525, + "recorded_at": 1789783464216, "body": { "event": "token.emitted", "edge": 4, @@ -7147,49 +7574,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 101, - "kind": "platform", - "id": "12", - "recorded_at": 1789709597525, - "item": { - "seq": 12, - "recorded_at": 1789709597525, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 3, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "d19179e7075e6d260660832c2f26e3a31efecd20", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 3, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 3 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 102, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 107, "kind": "petri", - "id": "execution 0/33/0", - "recorded_at": 1789709597618, + "id": "execution 0/34/0", + "recorded_at": 1789783464462, "item": { "id": { "log": "execution", "execution": 0, - "seq": 33, + "seq": 34, "index": 0 }, "origin": "external", @@ -7211,6 +7605,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7235,11 +7630,11 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464462, "record": { - "seq": 33, + "seq": 34, "origin": "external", - "recorded_at": 1789709597618, + "recorded_at": 1789783464462, "body": { "event": "step.progress.recorded", "firing": 4, @@ -7252,7 +7647,7 @@ "firing": 4, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "9606890ac1f59546498ea7167131f9e542edd05f", + "git_commit_sha": "aa1cb14653e56360973d2d858c716eb9b8745cb4", "reused": false } } @@ -7270,7 +7665,7 @@ "firing": 4, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "9606890ac1f59546498ea7167131f9e542edd05f", + "git_commit_sha": "aa1cb14653e56360973d2d858c716eb9b8745cb4", "reused": false } } @@ -7279,16 +7674,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 103, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 108, "kind": "petri", - "id": "execution 0/34/0", - "recorded_at": 1789709597618, + "id": "execution 0/35/0", + "recorded_at": 1789783464462, "item": { "id": { "log": "execution", "execution": 0, - "seq": 34, + "seq": 35, "index": 0 }, "origin": "external", @@ -7310,6 +7705,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7334,11 +7730,11 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464462, "record": { - "seq": 34, + "seq": 35, "origin": "external", - "recorded_at": 1789709597618, + "recorded_at": 1789783464462, "body": { "event": "step.finished", "firing": 4, @@ -7354,7 +7750,7 @@ } }, "metrics": { - "duration_ms": 316 + "duration_ms": 989 } } } @@ -7366,16 +7762,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 104, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 109, "kind": "petri", - "id": "execution 0/34/1", - "recorded_at": 1789709597618, + "id": "execution 0/35/1", + "recorded_at": 1789783464462, "item": { "id": { "log": "execution", "execution": 0, - "seq": 34, + "seq": 35, "index": 1 }, "origin": "derived", @@ -7397,6 +7793,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7421,7 +7818,7 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464462, "derived": { "event": "visit.completed", "outcome": { @@ -7435,7 +7832,7 @@ } }, "metrics": { - "duration_ms": 316 + "duration_ms": 989 } }, "executed": true, @@ -7444,16 +7841,54 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 105, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 110, + "kind": "platform", + "id": "15", + "recorded_at": 1789783464565, + "item": { + "seq": 15, + "recorded_at": 1789783464565, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 4, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "aa1cb14653e56360973d2d858c716eb9b8745cb4", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 4, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 4 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 111, "kind": "petri", - "id": "execution 0/35/0", - "recorded_at": 1789709597618, + "id": "execution 0/36/0", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 36, "index": 0 }, "origin": "external", @@ -7475,6 +7910,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7499,11 +7935,11 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "record": { - "seq": 35, + "seq": 36, "origin": "external", - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "body": { "event": "routing.resolved", "decision_id": { @@ -7555,16 +7991,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 106, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 112, "kind": "petri", - "id": "execution 0/35/1", - "recorded_at": 1789709597618, + "id": "execution 0/36/1", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 36, "index": 1 }, "origin": "derived", @@ -7586,6 +8022,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -7610,7 +8047,7 @@ "index": 0 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "derived": { "event": "branch.completed", "occurrence": { @@ -7638,6 +8075,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -7674,16 +8112,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 107, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 113, "kind": "petri", - "id": "execution 0/35/2", - "recorded_at": 1789709597618, + "id": "execution 0/36/2", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 36, "index": 2 }, "origin": "derived", @@ -7705,6 +8143,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7729,7 +8168,7 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "derived": { "event": "branch.completed", "occurrence": { @@ -7757,6 +8196,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7793,16 +8233,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 108, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 114, "kind": "petri", - "id": "execution 0/35/3", - "recorded_at": 1789709597618, + "id": "execution 0/36/3", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 36, "index": 3 }, "origin": "derived", @@ -7841,7 +8281,7 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "derived": { "event": "fork.completed", "occurrence": { @@ -7885,6 +8325,7 @@ "line": 6, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/a.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo a", "edges": { "1": { "to": "merge", @@ -7935,6 +8376,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -7973,16 +8415,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 109, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 115, "kind": "petri", - "id": "execution 0/35/4", - "recorded_at": 1789709597618, + "id": "execution 0/36/4", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 36, "index": 4 }, "origin": "derived", @@ -8021,7 +8463,7 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "derived": { "event": "visit.started", "inputs": [ @@ -8070,16 +8512,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 110, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 116, "kind": "petri", - "id": "execution 0/35/5", - "recorded_at": 1789709597618, + "id": "execution 0/36/5", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 35, + "seq": 36, "index": 5 }, "origin": "derived", @@ -8118,7 +8560,7 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -8126,16 +8568,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 111, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 117, "kind": "petri", - "id": "execution 0/36/0", - "recorded_at": 1789709597618, + "id": "execution 0/37/0", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 36, + "seq": 37, "index": 0 }, "origin": "core", @@ -8157,6 +8599,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -8181,11 +8624,11 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "record": { - "seq": 36, + "seq": 37, "origin": "core", - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "body": { "event": "route.applied", "kind": "edge", @@ -8222,16 +8665,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 112, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 118, "kind": "petri", - "id": "execution 0/37/0", - "recorded_at": 1789709597618, + "id": "execution 0/38/0", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 37, + "seq": 38, "index": 0 }, "origin": "core", @@ -8253,6 +8696,7 @@ "line": 7, "column": 5 }, + "script": "touch /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/b.started; while [ ! -f /var/folders/nm/bd2dwzy52t1ckn3tklsfmy1c0000gn/T/.tmpww04pk/go ]; do sleep 0.05; done; echo b", "edges": { "2": { "to": "merge", @@ -8277,11 +8721,11 @@ "index": 1 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "record": { - "seq": 37, + "seq": 38, "origin": "core", - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "body": { "event": "token.emitted", "edge": 5, @@ -8307,16 +8751,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 113, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 119, "kind": "petri", - "id": "execution 0/38/0", - "recorded_at": 1789709597618, + "id": "execution 0/39/0", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 38, + "seq": 39, "index": 0 }, "origin": "external", @@ -8355,11 +8799,11 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "record": { - "seq": 38, + "seq": 39, "origin": "external", - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "body": { "event": "admission.decided", "decision_id": { @@ -8375,16 +8819,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 114, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 120, "kind": "petri", - "id": "execution 0/39/0", - "recorded_at": 1789709597618, + "id": "execution 0/40/0", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 39, + "seq": 40, "index": 0 }, "origin": "external", @@ -8423,11 +8867,11 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "record": { - "seq": 39, + "seq": 40, "origin": "external", - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "body": { "event": "step.started", "firing": 5, @@ -8437,16 +8881,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 115, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 121, "kind": "petri", - "id": "execution 0/39/1", - "recorded_at": 1789709597618, + "id": "execution 0/40/1", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 39, + "seq": 40, "index": 1 }, "origin": "derived", @@ -8485,7 +8929,7 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "derived": { "event": "wait.state.changed", "state": "running" @@ -8493,16 +8937,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 116, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 122, "kind": "petri", - "id": "execution 0/40/0", - "recorded_at": 1789709597618, + "id": "execution 0/41/0", + "recorded_at": 1789783464567, "item": { "id": { "log": "execution", "execution": 0, - "seq": 40, + "seq": 41, "index": 0 }, "origin": "external", @@ -8541,11 +8985,11 @@ "fork": 2 } }, - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "record": { - "seq": 40, + "seq": 41, "origin": "external", - "recorded_at": 1789709597618, + "recorded_at": 1789783464567, "body": { "event": "step.progress.recorded", "firing": 5, @@ -8569,49 +9013,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 117, - "kind": "platform", - "id": "13", - "recorded_at": 1789709597618, - "item": { - "seq": 13, - "recorded_at": 1789709597618, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 4, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "9606890ac1f59546498ea7167131f9e542edd05f", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 4, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 4 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 118, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 123, "kind": "petri", - "id": "execution 0/41/0", - "recorded_at": 1789709597709, + "id": "execution 0/42/0", + "recorded_at": 1789783464904, "item": { "id": { "log": "execution", "execution": 0, - "seq": 41, + "seq": 42, "index": 0 }, "origin": "external", @@ -8650,11 +9061,11 @@ "fork": 2 } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783464904, "record": { - "seq": 41, + "seq": 42, "origin": "external", - "recorded_at": 1789709597709, + "recorded_at": 1789783464904, "body": { "event": "step.progress.recorded", "firing": 5, @@ -8667,7 +9078,7 @@ "firing": 5, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "f99391338a6f1b460ca44095fed82a92dfe7e0a0", + "git_commit_sha": "0a16c149957a05e989cbd1ca2dec03c6b6c9e480", "reused": false } } @@ -8685,7 +9096,7 @@ "firing": 5, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "f99391338a6f1b460ca44095fed82a92dfe7e0a0", + "git_commit_sha": "0a16c149957a05e989cbd1ca2dec03c6b6c9e480", "reused": false } } @@ -8694,16 +9105,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 119, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 124, "kind": "petri", - "id": "execution 0/42/0", - "recorded_at": 1789709597709, + "id": "execution 0/43/0", + "recorded_at": 1789783464904, "item": { "id": { "log": "execution", "execution": 0, - "seq": 42, + "seq": 43, "index": 0 }, "origin": "external", @@ -8742,11 +9153,11 @@ "fork": 2 } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783464904, "record": { - "seq": 42, + "seq": 43, "origin": "external", - "recorded_at": 1789709597709, + "recorded_at": 1789783464904, "body": { "event": "step.finished", "firing": 5, @@ -8805,16 +9216,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 120, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 125, "kind": "petri", - "id": "execution 0/42/1", - "recorded_at": 1789709597709, + "id": "execution 0/43/1", + "recorded_at": 1789783464904, "item": { "id": { "log": "execution", "execution": 0, - "seq": 42, + "seq": 43, "index": 1 }, "origin": "derived", @@ -8853,7 +9264,7 @@ "fork": 2 } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783464904, "derived": { "event": "visit.completed", "outcome": { @@ -8907,16 +9318,54 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 121, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 126, + "kind": "platform", + "id": "16", + "recorded_at": 1789783465007, + "item": { + "seq": 16, + "recorded_at": 1789783465007, + "record": { + "kind": "checkpoint", + "execution": 0, + "firing": 5, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "0a16c149957a05e989cbd1ca2dec03c6b6c9e480", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, + "operation": { + "execution": 0, + "decision": { + "attempt_start": { + "firing": 5, + "attempt": 1 + } + }, + "effect": "checkpoint" + } + }, + "position": { + "execution": 0, + "firing": 5 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 127, "kind": "petri", - "id": "execution 0/43/0", - "recorded_at": 1789709597709, + "id": "execution 0/44/0", + "recorded_at": 1789783465007, "item": { "id": { "log": "execution", "execution": 0, - "seq": 43, + "seq": 44, "index": 0 }, "origin": "external", @@ -8955,11 +9404,11 @@ "fork": 2 } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "record": { - "seq": 43, + "seq": 44, "origin": "external", - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "body": { "event": "routing.resolved", "decision_id": { @@ -9005,16 +9454,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 122, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 128, "kind": "petri", - "id": "execution 0/43/1", - "recorded_at": 1789709597709, + "id": "execution 0/44/1", + "recorded_at": 1789783465007, "item": { "id": { "log": "execution", "execution": 0, - "seq": 43, + "seq": 44, "index": 1 }, "origin": "derived", @@ -9046,7 +9495,7 @@ "role": "none" } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "derived": { "event": "visit.started", "inputs": [ @@ -9078,16 +9527,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 123, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 129, "kind": "petri", - "id": "execution 0/43/2", - "recorded_at": 1789709597709, + "id": "execution 0/44/2", + "recorded_at": 1789783465007, "item": { "id": { "log": "execution", "execution": 0, - "seq": 43, + "seq": 44, "index": 2 }, "origin": "derived", @@ -9119,7 +9568,7 @@ "role": "none" } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "derived": { "event": "wait.state.changed", "state": "awaiting_admission" @@ -9127,16 +9576,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 124, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 130, "kind": "petri", - "id": "execution 0/44/0", - "recorded_at": 1789709597709, + "id": "execution 0/45/0", + "recorded_at": 1789783465007, "item": { "id": { "log": "execution", "execution": 0, - "seq": 44, + "seq": 45, "index": 0 }, "origin": "core", @@ -9175,11 +9624,11 @@ "fork": 2 } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "record": { - "seq": 44, + "seq": 45, "origin": "core", - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "body": { "event": "route.applied", "kind": "edge", @@ -9210,16 +9659,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 125, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 131, "kind": "petri", - "id": "execution 0/45/0", - "recorded_at": 1789709597709, + "id": "execution 0/46/0", + "recorded_at": 1789783465007, "item": { "id": { "log": "execution", "execution": 0, - "seq": 45, + "seq": 46, "index": 0 }, "origin": "core", @@ -9258,11 +9707,11 @@ "fork": 2 } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "record": { - "seq": 45, + "seq": 46, "origin": "core", - "recorded_at": 1789709597709, + "recorded_at": 1789783465007, "body": { "event": "token.emitted", "edge": 3, @@ -9291,16 +9740,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 126, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 132, "kind": "petri", - "id": "execution 0/46/0", - "recorded_at": 1789709597709, + "id": "execution 0/47/0", + "recorded_at": 1789783465008, "item": { "id": { "log": "execution", "execution": 0, - "seq": 46, + "seq": 47, "index": 0 }, "origin": "external", @@ -9332,11 +9781,11 @@ "role": "none" } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465008, "record": { - "seq": 46, + "seq": 47, "origin": "external", - "recorded_at": 1789709597709, + "recorded_at": 1789783465008, "body": { "event": "admission.decided", "decision_id": { @@ -9352,16 +9801,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 127, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 133, "kind": "petri", - "id": "execution 0/47/0", - "recorded_at": 1789709597709, + "id": "execution 0/48/0", + "recorded_at": 1789783465008, "item": { "id": { "log": "execution", "execution": 0, - "seq": 47, + "seq": 48, "index": 0 }, "origin": "external", @@ -9393,11 +9842,11 @@ "role": "none" } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465008, "record": { - "seq": 47, + "seq": 48, "origin": "external", - "recorded_at": 1789709597709, + "recorded_at": 1789783465008, "body": { "event": "step.started", "firing": 6, @@ -9407,16 +9856,16 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 128, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 134, "kind": "petri", - "id": "execution 0/47/1", - "recorded_at": 1789709597709, + "id": "execution 0/48/1", + "recorded_at": 1789783465008, "item": { "id": { "log": "execution", "execution": 0, - "seq": 47, + "seq": 48, "index": 1 }, "origin": "derived", @@ -9448,7 +9897,7 @@ "role": "none" } }, - "recorded_at": 1789709597709, + "recorded_at": 1789783465008, "derived": { "event": "wait.state.changed", "state": "running" @@ -9456,26 +9905,251 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 129, - "kind": "platform", - "id": "14", - "recorded_at": 1789709597709, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 135, + "kind": "petri", + "id": "execution 0/49/0", + "recorded_at": 1789783465305, "item": { - "seq": 14, - "recorded_at": 1789709597709, + "id": { + "log": "execution", + "execution": 0, + "seq": 49, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "subject": { + "node": { + "id": 1, + "name": "exit", + "kind": "attractor/stage", + "meta": { + "label": "exit", + "shape": "Msquare", + "kind": "exit", + "classes": [], + "span": { + "line": 4, + "column": 5 + } + } + }, + "firing": 6, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "none" + } + }, + "recorded_at": 1789783465305, + "record": { + "seq": 49, + "origin": "external", + "recorded_at": 1789783465305, + "body": { + "event": "step.progress.recorded", + "firing": 6, + "ev": { + "custom": { + "$note": { + "kind": "fabro.checkpoint", + "payload": { + "execution": 0, + "firing": 6, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "66f4cde81754e446c1c584551ed912a95218eb50", + "reused": false + } + } + } + } + } + }, + "derived": { + "parsed": { + "kind": "note", + "note": { + "kind": "fabro.checkpoint", + "payload": { + "execution": 0, + "firing": 6, + "attempt": 1, + "workspace": "invocation-0-scope-0", + "git_commit_sha": "66f4cde81754e446c1c584551ed912a95218eb50", + "reused": false + } + } + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 136, + "kind": "petri", + "id": "execution 0/50/0", + "recorded_at": 1789783465305, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 50, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "subject": { + "node": { + "id": 1, + "name": "exit", + "kind": "attractor/stage", + "meta": { + "label": "exit", + "shape": "Msquare", + "kind": "exit", + "classes": [], + "span": { + "line": 4, + "column": 5 + } + } + }, + "firing": 6, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "none" + } + }, + "recorded_at": 1789783465305, + "record": { + "seq": 50, + "origin": "external", + "recorded_at": 1789783465305, + "body": { + "event": "step.finished", + "firing": 6, + "attempt": 1, + "outcome": { + "status": "success", + "output": { + "outcome": "succeeded", + "failure_class": "" + }, + "metrics": { + "duration_ms": 0 + }, + "context_updates": { + "failure_class": "" + } + } + } + }, + "derived": { + "final": true, + "exhausted": false + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 137, + "kind": "petri", + "id": "execution 0/50/1", + "recorded_at": 1789783465305, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 50, + "index": 1 + }, + "origin": "derived", + "context": { + "invocation": 0, + "execution": 0 + }, + "subject": { + "node": { + "id": 1, + "name": "exit", + "kind": "attractor/stage", + "meta": { + "label": "exit", + "shape": "Msquare", + "kind": "exit", + "classes": [], + "span": { + "line": 4, + "column": 5 + } + } + }, + "firing": 6, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "none" + } + }, + "recorded_at": 1789783465305, + "derived": { + "event": "visit.completed", + "outcome": { + "status": "success", + "output": { + "outcome": "succeeded", + "failure_class": "" + }, + "metrics": { + "duration_ms": 0 + }, + "context_updates": { + "failure_class": "" + } + }, + "executed": true, + "attempts": 1 + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 138, + "kind": "platform", + "id": "17", + "recorded_at": 1789783465367, + "item": { + "seq": 17, + "recorded_at": 1789783465367, "record": { "kind": "checkpoint", "execution": 0, - "firing": 5, + "firing": 6, "attempt": 1, "workspace": "invocation-0-scope-0", - "git_commit_sha": "f99391338a6f1b460ca44095fed82a92dfe7e0a0", + "git_commit_sha": "66f4cde81754e446c1c584551ed912a95218eb50", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + }, "operation": { "execution": 0, "decision": { "attempt_start": { - "firing": 5, + "firing": 6, "attempt": 1 } }, @@ -9484,16 +10158,100 @@ }, "position": { "execution": 0, - "firing": 5 + "firing": 6 } } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 130, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 139, + "kind": "petri", + "id": "execution 0/51/0", + "recorded_at": 1789783465367, + "item": { + "id": { + "log": "execution", + "execution": 0, + "seq": 51, + "index": 0 + }, + "origin": "external", + "context": { + "invocation": 0, + "execution": 0 + }, + "subject": { + "node": { + "id": 1, + "name": "exit", + "kind": "attractor/stage", + "meta": { + "label": "exit", + "shape": "Msquare", + "kind": "exit", + "classes": [], + "span": { + "line": 4, + "column": 5 + } + } + }, + "firing": 6, + "visit": 1, + "attempt": 1, + "generation": 0, + "branch": { + "role": "none" + } + }, + "recorded_at": 1789783465367, + "record": { + "seq": 51, + "origin": "external", + "recorded_at": 1789783465367, + "body": { + "event": "routing.resolved", + "decision_id": { + "route": { + "firing": 6, + "attempt": 1 + } + }, + "groups": [] + } + }, + "derived": { + "groups": [] + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 140, + "kind": "platform", + "id": "18", + "recorded_at": 1789783465413, + "item": { + "seq": 18, + "recorded_at": 1789783465413, + "record": { + "kind": "run.diff", + "base_sha": "11a87723221691c9b65992c9c8471173c5418b23", + "head_sha": "66f4cde81754e446c1c584551ed912a95218eb50", + "diff_summary": { + "files_changed": 0, + "additions": 0, + "deletions": 0 + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 141, "kind": "petri", "id": "coordinator/14/0", - "recorded_at": 1789709597798, + "recorded_at": 1789783465415, "item": { "id": { "log": "coordinator", @@ -9505,11 +10263,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709597798, + "recorded_at": 1789783465415, "record": { "seq": 14, "origin": "external", - "recorded_at": 1789709597798, + "recorded_at": 1789783465415, "body": { "event": "execution.finished", "execution": 0, @@ -9523,11 +10281,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 131, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 142, "kind": "petri", "id": "coordinator/15/0", - "recorded_at": 1789709597798, + "recorded_at": 1789783465418, "item": { "id": { "log": "coordinator", @@ -9539,11 +10297,11 @@ "invocation": 0, "execution": 0 }, - "recorded_at": 1789709597798, + "recorded_at": 1789783465418, "record": { "seq": 15, "origin": "external", - "recorded_at": 1789709597798, + "recorded_at": 1789783465418, "body": { "event": "invocation.finished", "invocation": 0, @@ -9581,327 +10339,11 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 132, - "kind": "petri", - "id": "execution 0/48/0", - "recorded_at": 1789709597798, - "item": { - "id": { - "log": "execution", - "execution": 0, - "seq": 48, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "subject": { - "node": { - "id": 1, - "name": "exit", - "kind": "attractor/stage", - "meta": { - "label": "exit", - "shape": "Msquare", - "kind": "exit", - "classes": [], - "span": { - "line": 4, - "column": 5 - } - } - }, - "firing": 6, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "none" - } - }, - "recorded_at": 1789709597798, - "record": { - "seq": 48, - "origin": "external", - "recorded_at": 1789709597798, - "body": { - "event": "step.progress.recorded", - "firing": 6, - "ev": { - "custom": { - "$note": { - "kind": "fabro.checkpoint", - "payload": { - "execution": 0, - "firing": 6, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "a1f942a57396c23c378fde187c43b15adbb7e648", - "reused": false - } - } - } - } - } - }, - "derived": { - "parsed": { - "kind": "note", - "note": { - "kind": "fabro.checkpoint", - "payload": { - "execution": 0, - "firing": 6, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "a1f942a57396c23c378fde187c43b15adbb7e648", - "reused": false - } - } - } - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 133, - "kind": "petri", - "id": "execution 0/49/0", - "recorded_at": 1789709597798, - "item": { - "id": { - "log": "execution", - "execution": 0, - "seq": 49, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "subject": { - "node": { - "id": 1, - "name": "exit", - "kind": "attractor/stage", - "meta": { - "label": "exit", - "shape": "Msquare", - "kind": "exit", - "classes": [], - "span": { - "line": 4, - "column": 5 - } - } - }, - "firing": 6, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "none" - } - }, - "recorded_at": 1789709597798, - "record": { - "seq": 49, - "origin": "external", - "recorded_at": 1789709597798, - "body": { - "event": "step.finished", - "firing": 6, - "attempt": 1, - "outcome": { - "status": "success", - "output": { - "outcome": "succeeded", - "failure_class": "" - }, - "metrics": { - "duration_ms": 0 - }, - "context_updates": { - "failure_class": "" - } - } - } - }, - "derived": { - "final": true, - "exhausted": false - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 134, - "kind": "petri", - "id": "execution 0/49/1", - "recorded_at": 1789709597798, - "item": { - "id": { - "log": "execution", - "execution": 0, - "seq": 49, - "index": 1 - }, - "origin": "derived", - "context": { - "invocation": 0, - "execution": 0 - }, - "subject": { - "node": { - "id": 1, - "name": "exit", - "kind": "attractor/stage", - "meta": { - "label": "exit", - "shape": "Msquare", - "kind": "exit", - "classes": [], - "span": { - "line": 4, - "column": 5 - } - } - }, - "firing": 6, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "none" - } - }, - "recorded_at": 1789709597798, - "derived": { - "event": "visit.completed", - "outcome": { - "status": "success", - "output": { - "outcome": "succeeded", - "failure_class": "" - }, - "metrics": { - "duration_ms": 0 - }, - "context_updates": { - "failure_class": "" - } - }, - "executed": true, - "attempts": 1 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 135, - "kind": "petri", - "id": "execution 0/50/0", - "recorded_at": 1789709597798, - "item": { - "id": { - "log": "execution", - "execution": 0, - "seq": 50, - "index": 0 - }, - "origin": "external", - "context": { - "invocation": 0, - "execution": 0 - }, - "subject": { - "node": { - "id": 1, - "name": "exit", - "kind": "attractor/stage", - "meta": { - "label": "exit", - "shape": "Msquare", - "kind": "exit", - "classes": [], - "span": { - "line": 4, - "column": 5 - } - } - }, - "firing": 6, - "visit": 1, - "attempt": 1, - "generation": 0, - "branch": { - "role": "none" - } - }, - "recorded_at": 1789709597798, - "record": { - "seq": 50, - "origin": "external", - "recorded_at": 1789709597798, - "body": { - "event": "routing.resolved", - "decision_id": { - "route": { - "firing": 6, - "attempt": 1 - } - }, - "groups": [] - } - }, - "derived": { - "groups": [] - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 136, - "kind": "platform", - "id": "15", - "recorded_at": 1789709597798, - "item": { - "seq": 15, - "recorded_at": 1789709597798, - "record": { - "kind": "checkpoint", - "execution": 0, - "firing": 6, - "attempt": 1, - "workspace": "invocation-0-scope-0", - "git_commit_sha": "a1f942a57396c23c378fde187c43b15adbb7e648", - "operation": { - "execution": 0, - "decision": { - "attempt_start": { - "firing": 6, - "attempt": 1 - } - }, - "effect": "checkpoint" - } - }, - "position": { - "execution": 0, - "firing": 6 - } - } - }, - { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 137, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 143, "kind": "petri", "id": "coordinator/16/0", - "recorded_at": 1789709597838, + "recorded_at": 1789783465467, "item": { "id": { "log": "coordinator", @@ -9909,12 +10351,49 @@ "index": 0 }, "origin": "external", - "context": {}, - "recorded_at": 1789709597838, + "context": { + "invocation": 0 + }, + "recorded_at": 1789783465467, "record": { "seq": 16, "origin": "external", - "recorded_at": 1789709597838, + "recorded_at": 1789783465467, + "body": { + "event": "scope.released", + "invocation": 0, + "lease": 0, + "scope": { + "declared": 0 + }, + "workspace": "invocation-0-scope-0", + "provider": "host", + "instance": "host-g18d696936a9d7dc0-1174-0", + "outcome": "succeeded", + "retained": true + } + } + } + }, + { + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 144, + "kind": "petri", + "id": "coordinator/17/0", + "recorded_at": 1789783465467, + "item": { + "id": { + "log": "coordinator", + "seq": 17, + "index": 0 + }, + "origin": "external", + "context": {}, + "recorded_at": 1789783465467, + "record": { + "seq": 17, + "origin": "external", + "recorded_at": 1789783465467, "body": { "event": "run.finished", "status": "success" @@ -9923,14 +10402,14 @@ } }, { - "run_id": "01M2SG2E0BQSRJ1G31WRPX542Y", - "stream_seq": 138, + "run_id": "01M2VPGKR72ZE18JBQ3BAK6V3E", + "stream_seq": 145, "kind": "platform", - "id": "16", - "recorded_at": 1789709597843, + "id": "19", + "recorded_at": 1789783465488, "item": { - "seq": 16, - "recorded_at": 1789709597843, + "seq": 19, + "recorded_at": 1789783465488, "record": { "kind": "run.lifecycle", "transition": "succeeded", diff --git a/lib/apps/fabro-cli/src/commands/run/attach.rs b/lib/apps/fabro-cli/src/commands/run/attach.rs index a3119b2b9..02b99ece5 100644 --- a/lib/apps/fabro-cli/src/commands/run/attach.rs +++ b/lib/apps/fabro-cli/src/commands/run/attach.rs @@ -472,6 +472,17 @@ async fn ask_attach_question(question: Question, styles: &'static Styles) -> Ans opt.key, opt.label, ); + // What choosing the option means, and a sample of what it + // would do, when the asking stage said. + for detail in [opt.description.as_deref(), opt.preview.as_deref()] + .into_iter() + .flatten() + .filter(|detail| !detail.trim().is_empty()) + { + for line in detail.lines() { + eprintln!(" {}", styles.dim.apply_to(line)); + } + } } if question.allow_freeform { eprintln!(" Or type a free-text response"); diff --git a/lib/apps/fabro-cli/src/commands/run/petri_stream.rs b/lib/apps/fabro-cli/src/commands/run/petri_stream.rs index fb3269551..e60ec49ca 100644 --- a/lib/apps/fabro-cli/src/commands/run/petri_stream.rs +++ b/lib/apps/fabro-cli/src/commands/run/petri_stream.rs @@ -161,6 +161,17 @@ impl<'a> PetriItem<'a> { pub(crate) fn str_at(self, pointer: &str) -> Option<&'a str> { self.value().pointer(pointer)?.as_str() } + + /// The condition the applied route matched, as written: the edge a + /// `route.applied` record names is a key into the subject node's + /// `meta.edges`, whose entry carries the edge's `condition` when it + /// has one. + pub(crate) fn matched_condition(self) -> Option<&'a str> { + let edge = self.body()?.get("edge")?.as_u64()?; + self.node()? + .pointer(&format!("/meta/edges/{edge}/condition"))? + .as_str() + } } /// Whether the item is the platform record of the run's terminal lifecycle @@ -393,15 +404,20 @@ pub(crate) fn format_pretty( .and_then(Value::as_bool) .unwrap_or(false); let detail = if back { " (loop)" } else { "" }; + // The condition the edge matched, when it has one. + let condition = view + .matched_condition() + .map_or_else(String::new, |condition| format!(" when {condition}")); // Petri records the route after the next visit started, so the // line names both ends of the edge. Some(format!( - "{ts} {} {} {} {}{}", + "{ts} {} {} {} {}{}{}", styles.dim.apply_to(view.node_name().unwrap_or("?")), styles.dim.apply_to("\u{2192}"), target, styles.dim.apply_to(&transition), styles.dim.apply_to(detail), + styles.dim.apply_to(&condition), )) } "fork.started" => { @@ -592,6 +608,19 @@ fn format_progress(ts: &str, view: PetriItem<'_>, label: &str, styles: &Styles) let body = indented(styles, response, " "); Some(format!("{header}\n{body}\n")) } + "attractor.tools" => { + // The tools one native session was offered, once per session. + let count = custom + .get("tools") + .and_then(Value::as_array) + .map_or(0, Vec::len); + let noun = if count == 1 { "tool" } else { "tools" }; + Some(format!( + "{ts} {} {}", + styles.dim.apply_to("\u{2699}"), + styles.dim.apply_to(format!("{count} {noun} available")), + )) + } "attractor.checkout" => { let repository = custom .get("repository") @@ -1106,6 +1135,59 @@ mod tests { assert!(line.contains("answered by dev"), "{line}"); } + #[test] + fn a_route_line_names_the_condition_the_edge_matched() { + let styles = Styles::new(false); + let mut state = PrettyState::default(); + let mut subject = subject("build", "command"); + subject["node"]["meta"]["edges"] = json!({ + "0": {"to": "ok", "label": null, "condition": "outcome=succeeded"}, + "1": {"to": "bad", "label": null} + }); + let applied = |edge: u64| { + petri( + 7, + json!({ + "origin": "core", + "context": {"invocation": 0, "execution": 0}, + "subject": subject, + "record": {"seq": 9, "body": {"event": "route.applied", "kind": "edge", + "firing": 2, "group": 0, "edge": edge}}, + "derived": {"target": {"name": if edge == 0 { "ok" } else { "bad" }}, + "transition": "Continue", "back": false} + }), + ) + }; + let line = format_pretty(&applied(0), &styles, &mut state).expect("a route line"); + assert!( + line.contains("build \u{2192} ok continue when outcome=succeeded"), + "{line}" + ); + let line = format_pretty(&applied(1), &styles, &mut state).expect("a route line"); + assert!(line.ends_with("build \u{2192} bad continue"), "{line}"); + } + + #[test] + fn a_sessions_tool_list_renders_as_its_count() { + let styles = Styles::new(false); + let mut state = PrettyState::default(); + let listed = petri( + 8, + json!({ + "origin": "external", + "context": {"invocation": 0, "execution": 0}, + "subject": subject("work", "agent"), + "record": {"seq": 10, "body": {"event": "step.progress.recorded", "firing": 2, + "ev": {"custom": {"kind": "attractor.tools", "session": "ses_1", "tools": [ + {"name": "shell", "description": "Run a command", "source": {"kind": "native"}, "category": "builtin"}, + {"name": "fabro_run_create", "description": "Create a run", "source": {"kind": "application"}, "category": "host"} + ]}}}} + }), + ); + let line = format_pretty(&listed, &styles, &mut state).expect("a tools line"); + assert!(line.contains("2 tools available"), "{line}"); + } + #[test] fn the_engine_finish_decides_the_exit_code() { let finished = petri( diff --git a/lib/components/fabro-petri/README.md b/lib/components/fabro-petri/README.md index 2ab442f59..1b55eca77 100644 --- a/lib/components/fabro-petri/README.md +++ b/lib/components/fabro-petri/README.md @@ -122,14 +122,30 @@ prompt or agent stage carries the stub's text as its `response`. `VIEWS.md` rows with no source yet, or whose source this crate does not read yet, keep their default value in the projection: `Checkpoint`'s engine-derived maps (`completed_nodes`, `node_retries`, `context_values`, -`node_outcomes`, `next_node_id`), `agent_tools`, `permission_level`, -`script_invocation` and `script_timing`, a stage's `notes`, -`StageCompletion` details for a `parsed.note`, the sandbox instance's -clone fields and workspace roots (Petri's checkout is a copy of the bound -repository, not a clone; the roots are the provider's, read live), -`Run.ask_fabro`, an interview option's `description` and -`preview`, the pull request `creation` state, and the run's notices, -notifications and pairings (recorded, not shown). +`node_outcomes`, `next_node_id`), `permission_level`, +`script_invocation` and `script_timing` (a command's script is on the +stream, as `subject.node.meta.script`, and the web's command view reads it +there), a stage's `notes`, `StageCompletion` details for a `parsed.note`, +the sandbox instance's clone fields and workspace roots (Petri's checkout +is a copy of the bound repository, not a clone; the roots are the +provider's, read live), `Run.ask_fabro`, the pull request `creation` +state, and the run's notices, notifications and pairings (recorded, not +shown). + +Three facts the views once lacked a source for are read now. A stage's +`agent_tools` is the union, by name, of the `attractor.tools` payloads its +native sessions record (the node's own session, then each child session), +with `invoked` flipped by the envelope's `ToolCallStarted`; the payload +carries Petri's origin category, so Pebble's `category` is `subagent` for +a sub-agent tool and `other` for the rest. A pending question carries each +option's `description` and `preview` and the question's `context` as +`context_display`, and its `reference` as `review_target` when Fabro's +validation admits it. A decision's matched condition and a command's +script ride on the node's `meta` (`edges[edge].condition`, `script`), which +the CLI's `run events --pretty` and the web's stage renderers read off +the stream, beside the command's output loss counters +(`output.dropped_bytes`, `output.truncated_lines`, `output.incomplete`) on +its final `step.finished`. ### Retention diff --git a/lib/components/fabro-petri/VIEWS.md b/lib/components/fabro-petri/VIEWS.md index e3cd96624..788978640 100644 --- a/lib/components/fabro-petri/VIEWS.md +++ b/lib/components/fabro-petri/VIEWS.md @@ -140,10 +140,11 @@ stages live in the child invocation and list under the fork (see Parallel). | provider and model | `RunStage.provider_used`, `StageProjection.provider_used`, `model`, `permission_level` | `custom attractor.fallback.plan {requested, routes}` then envelope `SessionStarted {provider, model}`; `custom attractor.prompt {model}`; the node's config in the registered graph (`graph.registered`, blob by digest) for `reasoning_effort`, `speed`, `permission_level` and an ACP node's settings | attempt | | prompt | `StageProjection.prompt`, the chat tab's `stage.prompt` | `custom attractor.prompt {prompt, sources}`; envelope `SessionStarted` and the first user message on the stream for an agent | attempt | | response | `StageProjection.response`, `prompt.completed` | `custom attractor.prompt.completed {response, calls, repairs, usage, duration_ms}`; the final `step.finished` `outcome.output` for an agent | attempt | -| output, output bytes, streaming, termination | `StageProjection.output`, `output_bytes`, `live_streaming`, `termination`, `command.started` `script`, `command.completed` `exit_code`, the command log endpoint | `step.started`; `step.progress.recorded` `log {stream, line}` (the live log); `step.finished` `outcome.output`, `metrics.exit_code`, `metrics.duration_ms`; `timed_out` and `cancelled` statuses for `termination`; a `blob://` output through `get_blob`; the script from the node config | attempt | +| output, output bytes, streaming, termination | `StageProjection.output`, `output_bytes`, `live_streaming`, `termination`, `command.started` `script`, `command.completed` `exit_code`, the command log endpoint | `step.started`; `step.progress.recorded` `log {stream, line}` (the live log); `step.finished` `outcome.output`, `metrics.exit_code`, `metrics.duration_ms`; `timed_out` and `cancelled` statuses for `termination`; a `blob://` output through `get_blob`; the script is `subject.node.meta.script` on every event of the stage (the web's command view reads it off the stream) | attempt | +| output loss | the command view's "output truncated" note | the final `step.finished` `metrics.custom` `output.dropped_bytes`, `output.truncated_lines` (what the caps cut) and `output.incomplete` (the capture ended on silence); absent when the output is whole | attempt | | script invocation and timing | `script_invocation`, `script_timing` | the node config; `metrics.duration_ms` | attempt | | context updates, routing directive | `stage.completed` `context_updates`, `preferred_label`, `suggested_next_ids`, `jump_to_node` | `step.finished` `outcome.context_updates`; `routing.resolved` (per group the decision, overrides, jumps, blocks, the weighted draw; `derived.groups[].target`) | attempt | -| edge selected, loop restart | `edge.selected`, `loop.restart` | `route.applied` (`derived.target`, `transition`, `back`); a restart is `execution.finished {restart}` then `execution.declared {predecessor}` | stage, execution | +| edge selected, loop restart, the condition that matched | `edge.selected`, `loop.restart`, the decision renderer's `condition`, the `run events --pretty` transition line | `route.applied` (`derived.target`, `transition`, `back`); its `edge` keys `subject.node.meta.edges`, whose entry carries the edge's `condition` as written (absent on an unconditional edge); a restart is `execution.finished {restart}` then `execution.declared {predecessor}` | stage, execution | | notes | `StageCompletion.notes` | `step.finished` `outcome` notes; `parsed.note {result_prepared, transition}` | attempt | | files touched | `stage.completed` `files_touched` | Pebble's fold of envelope `ToolCallCompleted` (see Agent activity) | session | | stage diff | `StageProjection.diff` | platform record `checkpoint {execution, firing, patch_blob}` | stage | @@ -178,9 +179,9 @@ interviews. | Fabro fact | Fields | Source | Keyed on | | --- | --- | --- | --- | -| pending | `pending_interviews[id] {question, started_at}`, `current_question`, `interview.started` | `step.progress.recorded` with `parsed.question` (`id`, `text`, `options[] {key, label}`, `default`, `freeform`, `sensitive`, `kind`, `reference {label, url, kind}`, `timeout_ms`); `wait.state.changed {awaiting_answer}`; pending until a closing row below | question | +| pending | `pending_interviews[id] {question, started_at}`, `current_question`, `interview.started` | `step.progress.recorded` with `parsed.question` (`id`, `text`, `options[] {key, label, description, preview}`, `default`, `freeform`, `sensitive`, `kind`, `reference {label, url, kind}`, `timeout_ms`, `context`); `wait.state.changed {awaiting_answer}`; pending until a closing row below | question | | question fields | `InterviewQuestionRecord.id`, `text`, `stage`, `question_type`, `options`, `allow_freeform`, `timeout_seconds`, `review_target` | `parsed.question`: `kind` is `question_type`, `freeform` is `allow_freeform`, `reference` is `review_target`, `timeout_ms` is `timeout_seconds`; `stage` is the subject's label | question | -| option description and preview, context display | `InterviewOption.description`, `preview`, `context_display` | gap | question | +| option description and preview, context display | `InterviewOption.description`, `preview`, `context_display` | `parsed.question`: each option's `description` and `preview`, the question's `context` (a human gate reads them from its edges' `human.description` and `human.preview` and from the previous stage's response; a native agent's question carries Pebble's); `reference` is `review_target` when Fabro's validation admits it | question | | answered | `interview.completed {answer, duration_ms}`, the `actor` | `control.requested` with `derived.answer` and `derived.deliverable = true`; a sensitive answer stays `{"$secret": "answer:"}`; `wait.state.changed {running}` follows; duration is `control.requested` minus the question's `recorded_at`; the actor is platform record `interview.answered {question, principal}` | question | | late answer | none today | `control.requested` with `derived.deliverable = false` | question | | expired | `interview.timeout` | `parsed.question_expired {question, waited_ms, default}`; the gate's `step.finished` follows (success with the default, else class `retry_requested`) | question | @@ -237,7 +238,7 @@ keeps its shape. | route and failover | `route`, `failovers[]`, `failover_stopped`, `prompt.failover` | `custom attractor.fallback.plan {requested, routes, notices}`; envelope `RouteFailover {from, to, attempt, usage, error, continuation}`, `RouteFailoverStopped {route, reason, error}`; `crates/petri/lib/tests/fallback_events.rs` is the rebuild | attempt, session | | messages, tokens, cost | `messages`, `usage`, `agent.message {text, usage, tool_call_count}`, `prompts` | envelope `AssistantMessage {usage, tool_call_count, …}`; sum per session; the stage total is `pebble.usage` | session | | tool calls | `tools{name: {calls, errors, open}}`, `agent.tool.started`, `agent.tool.completed`, `files_touched`, `last_file_touched`, `pending_writes` | envelope `ToolCallStarted {tool_name, tool_call_id, arguments}`, `ToolCallCompleted {tool_call_id, is_error, error_kind}`; Fabro's own run tools appear the same way (the `HostTools` capability) | tool call | -| tools available | `agent_tools` (`ToolSummary {name, description, source, category, invoked}`), `agent.tools.available` | gap for the list; `invoked` derives from `ToolCallStarted` | session | +| tools available | `agent_tools` (`ToolSummary {name, description, source, category, invoked}`), `agent.tools.available`, the `run events --pretty` tool count line | `custom attractor.tools {session, tools[] {name, description, source, category}}`, once per native session (the node's own, then each child session); the stage's list is the union by name; `source` is Pebble's as recorded; `category` is Pebble's class only for a `subagent` tool, `other` for the rest (the payload carries Petri's origin category, not Pebble's permission class); `invoked` derives from envelope `ToolCallStarted` | session | | MCP servers | `mcp_servers{}`, `agent.mcp.*` | envelope `McpServerReady {server, tools, startup_ms}`, `McpServerFailed`, `McpServerDisconnected`; `custom attractor.mcp.unavailable {server, error}` | session | | skills | `skills.available`, `skills.activated` | `custom attractor.skills` (directories and sources), `attractor.skills.warning`; envelope `SkillsDiscovered`, `SkillActivated` | session | | sub-agents | `subagents[]`, `subagent_counts`, `descendants` | envelope `SubAgentSpawned {agent_id, depth, task}`, `SubAgentTurnStarted`, `SubAgentCompleted`, `SubAgentFailed`, `SubAgentClosed` under the parent session; the child's events under its own session with `parent_session_id`; `pebble.subagents` on `step.finished` | session | @@ -339,7 +340,7 @@ where it belongs to a stage. The proposed `record_json` fields follow. | `live_inference_ms`, `live_tool_ms`, `tool_batch`, `inference`, `acp_started_at` | envelope brackets (Agent activity); `step.started` for ACP | | `usage`, `usage_by_model`, `model` | `pebble.usage`, `prompt.usage`, `pebble.subagents.sessions`, envelope `AssistantMessage` per session | | `permission_level` | the node config | -| `agent_tools` | gap | +| `agent_tools` | `custom attractor.tools` per session; `invoked` from envelope `ToolCallStarted` | | `agent` | Pebble's fold over the stage's envelopes, unchanged | | `state` | the Stages state rows | @@ -370,7 +371,7 @@ and served on the events stream, and no view row reads them. | `cancel.requested`, `kill.requested` | Run summary: cancel reason; Questions: interrupted; Parallel: cancelled fork | | `control.requested`, `derived.deliverable`, `derived.answer` | Questions: answered, late, interrupted, steer, interrupt; Agent activity: pair | | `token.emitted` | not shown: the engine's token flow; `visit.started` carries the join's inputs | -| `route.applied` | Stages: edge selected; Run summary: current stage | +| `route.applied` | Stages: edge selected and the condition that matched; Run summary: current stage | | `node.expanded` | Parallel: fork started (`for_each`) | | `visit.started`, `visit.completed` | Stages: list, state, timing, retries; Run summary: current stage | | `wait.state.changed` | Stages: state; Questions: pending; Run summary: blocked | @@ -381,6 +382,7 @@ and served on the events stream, and no view row reads them. | `parsed.note` `hook`, `hook.activity`, `parsed.hook_activity` | Stages: hook decisions; Agent activity: hook agents | | `custom attractor.prompt`, `attractor.prompt.completed` | Stages: prompt, response; Parallel: fan-in prompt | | `custom attractor.thread` | Agent activity: sessions | +| `custom attractor.tools` | Agent activity: tools available | | `custom attractor.fallback.plan` | Agent activity: route; Stages: provider and model; Run summary: models | | `custom attractor.mcp.unavailable` | Agent activity: MCP servers | | `custom attractor.skills`, `attractor.skills.warning` | Agent activity: skills | @@ -425,8 +427,6 @@ record where Fabro does. | Fact | Views | Smallest source | | --- | --- | --- | -| tools available to an agent | `agent_tools`, the insights sidebar's tool list | a `custom attractor.tools {node, firing, attempt, session, tools[] {name, description, source, category}}` from the native backend once per session, where it calls the `HostTools` builders; Pebble's `SessionStarted` carries only the provider and model | -| question option `description` and `preview`, `context_display` | the interview dock, the human Q&A renderer | optional fields on Petri's `QuestionOption` (`description`, `preview`) and `Question` (`context`), set by the human gate from the edge attributes Fabro's lowering already reads | | who answered | `interview.completed` `actor`, Slack attribution | platform record `interview.answered {question, principal, channel}` written by Fabro's interviewer beside its `InterviewReply` | | run branch and base sha | `StartRecord`, `run diff`, the commits picker | platform record `run.branch {run_branch, base_sha}` written when Fabro creates the run branch, at that checkpoint's stage position | | Git identity | `git_identity` | platform record `git.identity {name, email, source}` | diff --git a/lib/components/fabro-petri/src/projection.rs b/lib/components/fabro-petri/src/projection.rs index e096adde6..2b08f520c 100644 --- a/lib/components/fabro-petri/src/projection.rs +++ b/lib/components/fabro-petri/src/projection.rs @@ -36,12 +36,13 @@ use fabro_types::{ BlockedReason, CheckpointRecord as ViewCheckpoint, CodingAgentEvent, CodingEvent, Conclusion, FailureCategory, FailureDetail, FailureReason, InterviewOption, InterviewQuestionRecord, ModelRef, ModelUsage, ParallelBranchId, ParallelBranchResult, PendingInterviewRecord, - PullRequestCreation, PullRequestCreationStatus, PullRequestLink, RunApproval, RunApprovalState, - RunArtifact, RunControlAction, RunDiff, RunFailure, RunId, RunProjection, RunSandbox, - RunSandboxFailure, RunSandboxInstance, RunSandboxPlan, RunSandboxRuntime, RunStatus, RunTiming, - SandboxProviderKind, StageCompletion, StageHandler, StageId, StageInferenceProjection, - StageModelUsage, StageOutcome, StageProjection, StageState, StageTiming, StartRecord, - SuccessReason, first_event_seq, format_blob_ref, parse_blob_ref, timing, usage_rollup, + PullRequestCreation, PullRequestCreationStatus, PullRequestLink, ReviewTarget, + ReviewTargetKind, RunApproval, RunApprovalState, RunArtifact, RunControlAction, RunDiff, + RunFailure, RunId, RunProjection, RunSandbox, RunSandboxFailure, RunSandboxInstance, + RunSandboxPlan, RunSandboxRuntime, RunStatus, RunTiming, SandboxProviderKind, StageCompletion, + StageHandler, StageId, StageInferenceProjection, StageModelUsage, StageOutcome, + StageProjection, StageState, StageTiming, StartRecord, SuccessReason, ToolCategory, ToolSource, + ToolSummary, first_event_seq, format_blob_ref, parse_blob_ref, timing, usage_rollup, }; use lithos_llm::catalog::{ModelId, ProviderId}; use lithos_llm::types::Usage; @@ -49,6 +50,7 @@ use petri_execution::events::{Derived, NodeRef, Parsed, RunEvent, Subject, ViewE use petri_execution::{CoordinatorEvent, ExecutionId, InvocationId}; use petri_runtime::engine::{Admission, Event}; use petri_runtime::ir::{Metrics, SandboxInstance, Status, StepEvent}; +use petri_runtime::steps::QuestionReference; use serde::{Deserialize, Serialize}; use serde_json::Value; use tracing::debug; @@ -848,6 +850,27 @@ impl RunView { } } } + // The tools a native session was offered, once per + // session (VIEWS.md "Agent activity", tools available): + // the stage's list is the union over its sessions, by + // name, in the order the sessions listed them. + "attractor.tools" => { + if let Some(stage) = self.stage_of(execution, event.subject.as_ref()) { + let tools = payload.get("tools").and_then(Value::as_array); + for tool in tools.into_iter().flatten() { + let Some(summary) = tool_summary(tool) else { + continue; + }; + if !stage + .agent_tools + .iter() + .any(|known| known.name == summary.name) + { + stage.agent_tools.push(summary); + } + } + } + } "attractor.parallel.branch.started" => { let invocation = payload.get("invocation").and_then(Value::as_u64); let index = payload @@ -916,16 +939,16 @@ impl RunView { .map(|option| InterviewOption { key: option.key.clone(), label: option.label.clone(), - description: None, - preview: None, + description: option.description.clone(), + preview: option.preview.clone(), }) .collect(), allow_freeform: question.freeform, timeout_seconds: question .timeout_ms .map(|timeout| timeout as f64 / 1000.0), - context_display: None, - review_target: None, + context_display: question.context.clone(), + review_target: question.reference.as_ref().and_then(review_target), }, started_at: at, }); @@ -1004,6 +1027,16 @@ impl RunView { if stage.completion.is_none() { stage.usage = agent.usage.saturating_add(agent.descendant_usage()); } + // A tool the stage's list names was called, by any of its sessions. + if let CodingEvent::ToolCallStarted { tool_name, .. } = &envelope.event { + if let Some(tool) = stage + .agent_tools + .iter_mut() + .find(|tool| tool.name == *tool_name) + { + tool.invoked = true; + } + } let is_root = envelope.parent_session_id.is_none(); #[expect( clippy::wildcard_enum_match_arm, @@ -1589,6 +1622,48 @@ fn failure_message(status: &Status) -> Option { /// The finished attempt's metrics onto its stage: the timing and the usage /// the backend reported. +/// One tool of an `attractor.tools` payload as the stage's list carries +/// it: the name and description as recorded, Pebble's `source` as it is, +/// and Pebble's behavioural category where Petri's says which (a +/// sub-agent tool); every other tool is `other`, because the payload +/// carries Petri's origin category (`builtin`, `mcp`, `host`, `question`), +/// not Pebble's permission class. `invoked` starts false and flips on the +/// session's `ToolCallStarted`. +fn tool_summary(tool: &Value) -> Option { + let name = tool.get("name").and_then(Value::as_str)?; + let description = tool + .get("description") + .and_then(Value::as_str) + .unwrap_or_default(); + let source = tool + .get("source") + .cloned() + .and_then(|source| serde_json::from_value::(source).ok()) + .unwrap_or_default(); + let category = match tool.get("category").and_then(Value::as_str) { + Some("subagent") => ToolCategory::Subagent, + _ => ToolCategory::Other, + }; + Some(ToolSummary { + name: name.to_string(), + description: description.to_string(), + source, + category, + invoked: false, + }) +} + +/// The question's `reference` as Fabro's review target, when it is one +/// Fabro's validation admits (a `document`, or a reference without a kind, +/// with a label and an absolute HTTP URL within Fabro's limits). +fn review_target(reference: &QuestionReference) -> Option { + let kind = match reference.kind.as_deref() { + Some("document") | None => ReviewTargetKind::Document, + Some(_) => return None, + }; + ReviewTarget::new(reference.label.clone(), reference.url.clone(), kind).ok() +} + fn apply_metrics(stage: &mut StageProjection, metrics: &Metrics) { let custom = &metrics.custom; let inference = custom diff --git a/lib/components/fabro-petri/tests/host_tools.rs b/lib/components/fabro-petri/tests/host_tools.rs index ec6456053..f641bb092 100644 --- a/lib/components/fabro-petri/tests/host_tools.rs +++ b/lib/components/fabro-petri/tests/host_tools.rs @@ -23,9 +23,14 @@ use std::sync::Arc; use std::time::Duration; use fabro_petri::host_tools::recorded::{self, ExecutionId, InvocationId}; +use fabro_petri::projection::{Item, RunView}; use fabro_petri::runtime::RuntimeSpec; +use fabro_store::platform_records::{PlatformRecord, RunCreatedRecord, StoredPlatformRecord}; use fabro_tool::fabro_client::ClientBackend; -use fabro_types::{BlobHash, RunId, WorkflowVersionId}; +use fabro_types::{ + BlobHash, RunId, StageId, ToolCategory, ToolSource, WorkflowVersionId, + test_support as types_support, +}; use fabro_workflow::run_tools::register_fabro_run_tools; use fabro_workflow::services::FabroRunToolServices; use httpmock::{Method, MockServer}; @@ -33,12 +38,13 @@ use lithos_llm::types::Request; use pebble_coding_agent::test_support::{ ScriptedCall, ScriptedProvider, scripted_client, text_response, tool_call_response, }; +use petri_execution::events::replay_run; use petri_execution::host::{self, HostRun}; use petri_runtime::executor::Retention; use petri_runtime::frontend::CompileInputs; use petri_runtime::ir::RunStatus; use petri_runtime::{RunOptions, Runtime}; -use petri_store::{MemoryRunStore, RunKey, RunStore}; +use petri_store::{Access, MemoryRunStore, RunKey, RunStore}; use serde_json::json; use tokio::fs; @@ -258,6 +264,112 @@ async fn a_petri_stage_calls_a_run_tool_bound_to_the_run() { assert_eq!(calls[0].payload["is_error"], true, "{:?}", calls[0].payload); } +/// The stage's projection lists the tools its session was offered, host +/// tools included, as the `attractor.tools` payload records them: the +/// same names the model was advertised, each with its description and +/// Pebble's source, the sub-agent tools under Pebble's category, and the +/// one tool the model called marked invoked. +#[tokio::test] +async fn the_projection_lists_the_stages_tools_and_marks_the_one_called() { + if host_plugin().is_none() { + return; + } + let root = tempfile::tempdir().expect("a temp dir"); + let workflow = install_bundle(root.path()).await; + let run_id = RunId::new(); + let version_id: WorkflowVersionId = BlobHash::new(b"child workflow").into(); + let server = MockServer::start_async().await; + server + .mock_async(|when, then| { + when.method(Method::POST).path("/api/v1/runs"); + then.status(422).body("native admission rejection"); + }) + .await; + let (client, provider) = scripted_model(&version_id.to_string()); + let store = Arc::new(MemoryRunStore::new()); + let rt = runtime( + &root.path().join("run"), + &run_id.to_string(), + client, + Some(services(&server, run_id)), + &store, + ); + + run(&rt, &workflow).await; + + // The run's events, folded as the projector folds them: the run's + // `run.created` record first, then Petri's events in record order. + let logs = store + .open(&RunKey::new(run_id.to_string()), Access::Read) + .await + .expect("the run opens"); + let events = replay_run(&*logs).await.expect("the record replays"); + let mut spec = types_support::test_run_spec(); + spec.run_id = run_id; + let created = StoredPlatformRecord { + seq: 1, + recorded_at: 0, + record: PlatformRecord::RunCreated(RunCreatedRecord { + spec, + title: Some("Start a child run".to_string()), + parent_id: None, + retried_from: None, + web_url: None, + }), + position: None, + }; + let mut view = RunView::new(); + view.fold(&Item::Platform(&created), 1); + for (index, event) in events.iter().enumerate() { + view.fold(&Item::Petri(event), index as u64 + 2); + } + let projection = view.projection().expect("the run has a projection"); + let stage = projection + .stage(&StageId::new("work", 1)) + .expect("the agent stage is projected"); + + let mut listed: Vec<(String, String)> = stage + .agent_tools + .iter() + .map(|tool| (tool.name.clone(), tool.description.clone())) + .collect(); + listed.sort(); + let requests = provider.requests(); + let mut offered = advertised(&requests[0]); + offered.sort(); + assert_eq!( + listed, offered, + "the list is what the model was offered, by name and description" + ); + let create = stage + .agent_tools + .iter() + .find(|tool| tool.name == "fabro_run_create") + .expect("the host tool is listed"); + assert!(create.invoked, "the model called it"); + assert_eq!(create.source, ToolSource::Application); + assert_eq!(create.category, ToolCategory::Other); + let shell = stage + .agent_tools + .iter() + .find(|tool| tool.name == "shell") + .expect("Pebble's own tool is listed"); + assert!(!shell.invoked, "the model never called it"); + assert_eq!(shell.source, ToolSource::Native); + assert!( + stage + .agent_tools + .iter() + .any(|tool| tool.category == ToolCategory::Subagent), + "Pebble's sub-agent tools keep their category: {:?}", + stage + .agent_tools + .iter() + .map(|tool| (&tool.name, tool.category)) + .collect::>() + ); +} + /// Services bound to another run give the stage no run tools: the model /// is not advertised them, and its call is refused as an unknown tool /// rather than parenting a child run to the wrong run. diff --git a/lib/components/fabro-petri/tests/projection.rs b/lib/components/fabro-petri/tests/projection.rs index 8ac98ca8f..31f6e6ca1 100644 --- a/lib/components/fabro-petri/tests/projection.rs +++ b/lib/components/fabro-petri/tests/projection.rs @@ -104,6 +104,29 @@ fn gate_workflow(markers: &Path, gate_attrs: &str) -> String { ) } +/// A gate after a stage with a response, whose affirmative edge says what +/// choosing it means and shows a sample: the facts the interview dock +/// shows beside the choices. +fn described_gate_workflow(markers: &Path) -> String { + format!( + r#"digraph Gate {{ + graph [goal="Ask with context"] + start [shape=Mdiamond] + exit [shape=Msquare] + plan [shape=parallelogram, output_schema="routing", script="echo '{{\"outcome\": \"succeeded\", \"context_updates\": {{\"last_stage\": \"plan\", \"response.plan\": \"Ship the fix in one commit.\"}}}}'"] + gate [shape=hexagon, label="Deploy?", timeout="1500ms", human.default_choice="no"] + yes [shape=parallelogram, script="touch {dir}/yes"] + no [shape=parallelogram, script="touch {dir}/no"] + start -> plan -> gate + gate -> yes [label="[Y] Yes", "human.description"="Merge and deploy to production", "human.preview"="deploy --prod"] + gate -> no [label="[N] No"] + yes -> exit + no -> exit +}}"#, + dir = markers.display() + ) +} + fn host_plugin() -> Option { let found = env::var_os(HOST_PLUGIN_OVERRIDE) .map(PathBuf::from) @@ -1156,12 +1179,16 @@ struct GateRun { } async fn gate_run(gate_attrs: &str) -> GateRun { + gate_run_of(|markers| gate_workflow(markers, gate_attrs)).await +} + +async fn gate_run_of(workflow: impl FnOnce(&Path) -> String) -> GateRun { let root = tempfile::tempdir().expect("a marker dir"); let markers = root.path().join("markers"); fs::create_dir_all(&markers) .await .expect("the marker dir creates"); - let workflow = gate_workflow(&markers, gate_attrs); + let workflow = workflow(&markers); let scenario = scenario( "gate", &[("workflow.fabro", &workflow), ("workflow.toml", SETTINGS)], @@ -1209,6 +1236,24 @@ impl GateRun { self.projector.settle(self.scenario.run_id).await; } + /// The stored projection once a question is pending in it. + async fn pending(&self) -> fabro_types::RunProjection { + let deadline = Instant::now() + Duration::from_secs(30); + loop { + let stored = projector::stored_projection(&self.scenario.pool, self.scenario.run_id) + .await + .expect("the stored projection reads"); + if let Some(stored) = stored.filter(|stored| !stored.pending_interviews.is_empty()) { + return stored; + } + assert!( + Instant::now() < deadline, + "the question never showed as pending" + ); + sleep(Duration::from_millis(10)).await; + } + } + async fn stored(&self) -> fabro_types::RunProjection { projector::stored_projection(&self.scenario.pool, self.scenario.run_id) .await @@ -1299,6 +1344,55 @@ async fn an_expired_question_is_pending_while_the_gate_waits_and_closes_on_the_e assert_view_equals_rebuild(&gate.scenario.pool, gate.scenario.run_id).await; } +/// A gate's choices carry what choosing them means and a sample of what +/// they would do, and the question carries the previous stage's response +/// as its context: the pending question in the projection shows all +/// three, as Petri's question record carries them, and leaves them absent +/// on a choice that has none. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn a_pending_question_carries_its_choice_descriptions_previews_and_context() { + if host_plugin().is_none() { + return; + } + let gate = Arc::new(gate_run_of(described_gate_workflow).await); + let running = { + let gate = Arc::clone(&gate); + tokio::spawn(async move { gate.run(Approval::Prompt).await }) + }; + let pending = gate.pending().await; + let (_, record) = pending + .pending_interviews + .iter() + .next() + .expect("one pending question"); + let question = &record.question; + assert_eq!(question.stage, "gate@1"); + assert_eq!(question.text, "Deploy?"); + assert_eq!( + question.context_display.as_deref(), + Some("Ship the fix in one commit."), + "the context is the previous stage's response" + ); + assert_eq!(question.options.len(), 2, "{:?}", question.options); + assert_eq!(question.options[0].key, "Y"); + assert_eq!( + question.options[0].description.as_deref(), + Some("Merge and deploy to production") + ); + assert_eq!( + question.options[0].preview.as_deref(), + Some("deploy --prod") + ); + assert_eq!(question.options[1].key, "N"); + assert_eq!(question.options[1].description, None); + assert_eq!(question.options[1].preview, None); + assert!(question.review_target.is_none()); + + running.await.expect("the run task ends"); + assert!(gate.markers.join("no").exists(), "the default ran"); + assert_view_equals_rebuild(&gate.scenario.pool, gate.scenario.run_id).await; +} + /// An auto-approved run answers its gate at once: the delivered answer /// closes the question in the projection, the affirmative branch runs, and /// the view rebuilds the same.