{ "title": "Verify the sandbox can lint and test the project", "spec": { "run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "settings": { "project": { "name": null, "description": null, "metadata": {} }, "workflow": { "name": null, "description": null, "graph": "workflow.fabro", "metadata": {} }, "run": { "goal": { "type": "inline", "value": "Verify the sandbox can lint and test the project" }, "working_dir": null, "metadata": {}, "inputs": {}, "model": { "provider": "anthropic", "name": "claude-sonnet-4-6", "fallbacks": [], "controls": { "reasoning_effort": null, "speed": null } }, "git": { "author": null }, "prepare": { "commands": [], "timeout_ms": 300000 }, "execution": { "mode": "normal", "approval": "prompt" }, "checkpoint": { "exclude_globs": [], "skip_git_hooks": false }, "clone": { "enabled": true }, "run_branch": { "enabled": true, "push": true }, "meta_branch": { "enabled": true, "push": true }, "sandbox": { "provider": "daytona", "preserve": false, "stop_on_terminal": true, "devcontainer": false, "env": {}, "docker": { "image": "buildpack-deps:noble", "network_mode": null, "memory_limit": 4000000000, "cpu_quota": 200000, "env_vars": {} }, "daytona": { "auto_stop_interval": 30, "labels": { "repo": "fabro-sh/fabro" }, "volumes": [], "snapshot": { "name": "fabro-v11", "cpu": 8, "memory_gb": 16, "disk_gb": 20, "dockerfile": { "type": "inline", "value": "FROM ubuntu:24.04\n\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n curl git ca-certificates build-essential pkg-config libssl-dev unzip python3 \\\n xvfb xfce4 xfce4-terminal x11vnc novnc dbus-x11 \\\n libx11-6 libxrandr2 libxext6 libxrender1 libxfixes3 libxss1 libxtst6 libxi6 \\\n && rm -rf /var/lib/apt/lists/*\n\n# Install real Chromium (not the snap stub) via xtradeb PPA\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n software-properties-common curl gnupg \\\n && add-apt-repository -y ppa:xtradeb/apps \\\n && apt-get update \\\n && apt-get install -y --no-install-recommends chromium \\\n && rm -rf /var/lib/apt/lists/*\n\n# Wrapper: Chromium needs --no-sandbox when running as root in a container,\n# and --disable-dev-shm-usage avoids crashes from small /dev/shm\nRUN printf '#!/bin/bash\\nexec /usr/bin/chromium --no-sandbox --disable-dev-shm-usage \"$@\"\\n' \\\n > /usr/local/bin/chromium-wrapper \\\n && chmod +x /usr/local/bin/chromium-wrapper\n\n# Make the wrapper the default in the system .desktop file and via alternatives\nRUN sed -i 's|^Exec=.*|Exec=/usr/local/bin/chromium-wrapper %U|' \\\n /usr/share/applications/chromium.desktop \\\n && update-alternatives --install /usr/bin/x-www-browser x-www-browser \\\n /usr/local/bin/chromium-wrapper 100\n\n# Tell XFCE's exo-open that Chromium is the WebBrowser helper (system-wide)\nRUN mkdir -p /etc/xdg/xfce4 /usr/share/xfce4/helpers \\\n && printf 'WebBrowser=custom-WebBrowser\\n' > /etc/xdg/xfce4/helpers.rc \\\n && printf '[Desktop Entry]\\n\\\nVersion=1.0\\n\\\nType=X-XFCE-Helper\\n\\\nName=Chromium\\n\\\nIcon=chromium\\n\\\nX-XFCE-Category=WebBrowser\\n\\\nX-XFCE-CommandsWithParameter=/usr/local/bin/chromium-wrapper \"%%s\"\\n\\\nX-XFCE-Commands=/usr/local/bin/chromium-wrapper\\n' \\\n > /usr/share/xfce4/helpers/custom-WebBrowser.desktop\n\n# GitHub CLI\nRUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \\\n | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \\\n && echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" \\\n | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \\\n && apt-get update && apt-get install -y --no-install-recommends gh \\\n && rm -rf /var/lib/apt/lists/*\n\n# Rust\nRUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y\nENV PATH=\"/root/.cargo/bin:${PATH}\"\nRUN rustup toolchain install nightly-2026-04-14 --profile minimal --component clippy,rustfmt\nRUN cargo install cargo-nextest --locked\nENV CARGO_INCREMENTAL=0\n\n# Bun\nRUN curl -fsSL https://bun.sh/install | bash\nENV PATH=\"/root/.bun/bin:${PATH}\"\n\nWORKDIR /root\n" } }, "network": null } }, "notifications": {}, "interviews": { "provider": null, "slack": null }, "agent": { "fabro_tools": false, "permissions": null, "mcps": {} }, "hooks": [], "scm": { "provider": null, "owner": null, "repository": null, "github": null }, "pull_request": { "enabled": true, "draft": false, "auto_merge": false, "merge_strategy": "squash" }, "artifacts": { "include": [] }, "integrations": { "github": { "permissions": {} } } } }, "graph": { "name": "Smoke", "nodes": { "lint_rust": { "id": "lint_rust", "attrs": { "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true }, "script": { "String": "cargo +nightly-2026-04-14 fmt --check --all 2>&1 && cargo +nightly-2026-04-14 clippy -q --workspace --all-targets -- -D warnings 2>&1" }, "label": { "String": "Lint Rust" } } }, "compile_rust": { "id": "compile_rust", "attrs": { "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true }, "label": { "String": "Compile Rust" }, "script": { "String": "cargo check -q --workspace 2>&1" } } }, "test_rust": { "id": "test_rust", "attrs": { "goal_gate": { "Boolean": true }, "script": { "String": "ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1" }, "shape": { "String": "parallelogram" }, "label": { "String": "Test Rust" } } }, "test_typescript": { "id": "test_typescript", "attrs": { "script": { "String": "cd apps/fabro-web && bun test 2>&1" }, "label": { "String": "Test TypeScript" }, "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true } } }, "start": { "id": "start", "attrs": { "shape": { "String": "Mdiamond" }, "label": { "String": "Start" } } }, "compile_typescript": { "id": "compile_typescript", "attrs": { "script": { "String": "cd apps/fabro-web && bun install && bun run typecheck 2>&1" }, "label": { "String": "Compile TypeScript" }, "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true } } }, "exit": { "id": "exit", "attrs": { "shape": { "String": "Msquare" }, "label": { "String": "Exit" } } }, "toolchain": { "id": "toolchain", "attrs": { "label": { "String": "Toolchain" }, "script": { "String": "rustc --version && cargo --version && bun --version 2>&1" }, "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true } } } }, "edges": [ { "from": "start", "to": "toolchain", "attrs": {} }, { "from": "toolchain", "to": "compile_rust", "attrs": {} }, { "from": "compile_rust", "to": "compile_typescript", "attrs": {} }, { "from": "compile_typescript", "to": "lint_rust", "attrs": {} }, { "from": "lint_rust", "to": "test_rust", "attrs": {} }, { "from": "test_rust", "to": "test_typescript", "attrs": {} }, { "from": "test_typescript", "to": "exit", "attrs": {} } ], "attrs": { "goal": { "String": "Verify the sandbox can lint and test the project" }, "retry_target": { "String": "exit" }, "rankdir": { "String": "LR" } } }, "graph_source": "digraph Smoke {\n graph [goal=\"Verify the sandbox can lint and test the project\", retry_target=exit]\n rankdir=LR\n\n start [shape=Mdiamond, label=\"Start\"]\n exit [shape=Msquare, label=\"Exit\"]\n\n toolchain [label=\"Toolchain\", shape=parallelogram, script=\"rustc --version && cargo --version && bun --version 2>&1\", goal_gate=true]\n compile_rust [label=\"Compile Rust\", shape=parallelogram, script=\"cargo check -q --workspace 2>&1\", goal_gate=true]\n compile_typescript [label=\"Compile TypeScript\", shape=parallelogram, script=\"cd apps/fabro-web && bun install && bun run typecheck 2>&1\", goal_gate=true]\n lint_rust [label=\"Lint Rust\", shape=parallelogram, script=\"cargo +nightly-2026-04-14 fmt --check --all 2>&1 && cargo +nightly-2026-04-14 clippy -q --workspace --all-targets -- -D warnings 2>&1\", goal_gate=true]\n test_rust [label=\"Test Rust\", shape=parallelogram, script=\"ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1\", goal_gate=true]\n test_typescript [label=\"Test TypeScript\", shape=parallelogram, script=\"cd apps/fabro-web && bun test 2>&1\", goal_gate=true]\n\n start -> toolchain\n toolchain -> compile_rust\n compile_rust -> compile_typescript\n compile_typescript -> lint_rust\n lint_rust -> test_rust\n test_rust -> test_typescript\n test_typescript -> exit\n}\n", "workflow_slug": "smoke", "source_directory": "/Users/bhelmkamp/p/fabro-sh/fabro", "provenance": { "server": { "version": "0.241.0-nightly.1" }, "client": { "user_agent": "fabro-cli/0.241.0-nightly.1", "name": "fabro-cli", "version": "0.241.0-nightly.1" }, "subject": { "kind": "user", "identity": { "issuer": "https://github.com", "subject": "19" }, "login": "brynary", "auth_method": "github" } }, "manifest_blob": "ac1a9113a4e3ccc749c88e80e8a964055dbcca12b5d26266114cb1941c502dee", "definition_blob": "9162e26c0d3b053af659bd64a188c67e8e82a103eb51b70807a92495c3a136b1", "git": { "origin_url": "https://github.com/fabro-sh/fabro", "branch": "main", "sha": "e67756c10cca21892abea85c0caf87635e556886", "dirty": "dirty", "push_outcome": { "type": "succeeded", "remote": "origin", "branch": "main" } } }, "web_url": "http://127.0.0.1:32276/runs/01KSA36AH4GPG3D8P1EP0HBG7X", "start": { "start_time": "2026-05-23T09:38:39.784533Z", "run_branch": "fabro/run/01KSA36AH4GPG3D8P1EP0HBG7X", "base_sha": "e67756c10cca21892abea85c0caf87635e556886" }, "status": { "kind": "running" }, "status_updated_at": "2026-05-23T09:38:39.784580Z", "last_event_at": "2026-05-23T09:46:37.653277Z", "pending_control": null, "checkpoints": [ { "seq": 19, "checkpoint": { "timestamp": "2026-05-23T09:38:41.493342Z", "current_node": "start", "completed_nodes": [ "start" ], "node_retries": {}, "context_values": { "failure_signature": "", "graph.goal": "Verify the sandbox can lint and test the project", "internal.retry_count.start": 0, "failure_class": "", "current_node": "start", "graph.rankdir": "LR", "internal.fidelity": "compact", "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "internal.thread_id": null, "graph.retry_target": "exit", "internal.node_visit_count": 1, "internal.work_dir": "/home/daytona/workspace/fabro", "outcome": "succeeded" }, "node_outcomes": { "start": { "status": "succeeded", "usage": null } }, "next_node_id": "toolchain", "node_visits": { "start": 1 } }, "diff": {} }, { "seq": 27, "checkpoint": { "timestamp": "2026-05-23T09:38:49.010377Z", "current_node": "toolchain", "completed_nodes": [ "start", "toolchain" ], "node_retries": {}, "context_values": { "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "current_node": "toolchain", "failure_class": "", "graph.retry_target": "exit", "graph.goal": "Verify the sandbox can lint and test the project", "internal.thread_id": "start", "internal.retry_count.toolchain": 0, "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53", "internal.work_dir": "/home/daytona/workspace/fabro", "internal.fidelity": "compact", "outcome": "succeeded", "failure_signature": "", "internal.node_visit_count": 1, "thread.start.current_node": "toolchain", "internal.retry_count.start": 0, "graph.rankdir": "LR" }, "node_outcomes": { "start": { "status": "succeeded", "usage": null }, "toolchain": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53" }, "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "usage": null } }, "next_node_id": "compile_rust", "git_commit_sha": "090dd2e79acb9d123730e392641fab1eac60d503", "node_visits": { "start": 1, "toolchain": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } }, { "seq": 37, "checkpoint": { "timestamp": "2026-05-23T09:41:09.426187Z", "current_node": "compile_rust", "completed_nodes": [ "start", "toolchain", "compile_rust" ], "node_retries": {}, "context_values": { "outcome": "succeeded", "graph.rankdir": "LR", "internal.fidelity": "compact", "failure_class": "", "internal.work_dir": "/home/daytona/workspace/fabro", "command.output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126", "failure_signature": "", "internal.node_visit_count": 1, "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "thread.start.current_node": "toolchain", "internal.retry_count.start": 0, "internal.thread_id": "toolchain", "graph.goal": "Verify the sandbox can lint and test the project", "internal.retry_count.compile_rust": 0, "current_node": "compile_rust", "internal.retry_count.toolchain": 0, "graph.retry_target": "exit", "thread.toolchain.current_node": "compile_rust" }, "node_outcomes": { "start": { "status": "succeeded", "usage": null }, "toolchain": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53" }, "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "usage": null }, "compile_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126" }, "notes": "Script completed: cargo check -q --workspace 2>&1", "usage": null } }, "next_node_id": "compile_typescript", "git_commit_sha": "4913948fbbce01a8a613421c4d18fdbd1986ec00", "node_visits": { "start": 1, "toolchain": 1, "compile_rust": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } }, { "seq": 47, "checkpoint": { "timestamp": "2026-05-23T09:41:24.785786Z", "current_node": "compile_typescript", "completed_nodes": [ "start", "toolchain", "compile_rust", "compile_typescript" ], "node_retries": {}, "context_values": { "graph.goal": "Verify the sandbox can lint and test the project", "failure_class": "", "graph.rankdir": "LR", "internal.thread_id": "compile_rust", "internal.work_dir": "/home/daytona/workspace/fabro", "outcome": "succeeded", "thread.start.current_node": "toolchain", "internal.retry_count.compile_typescript": 0, "thread.toolchain.current_node": "compile_rust", "internal.fidelity": "compact", "internal.retry_count.toolchain": 0, "current_node": "compile_typescript", "graph.retry_target": "exit", "internal.node_visit_count": 1, "command.output": "blob://sha256/ae1ec94de56280a33f605aa6013462a29038cb9c3161b2d19852c8340af71382", "thread.compile_rust.current_node": "compile_typescript", "internal.retry_count.start": 0, "internal.retry_count.compile_rust": 0, "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "failure_signature": "" }, "node_outcomes": { "compile_typescript": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/ae1ec94de56280a33f605aa6013462a29038cb9c3161b2d19852c8340af71382" }, "notes": "Script completed: cd apps/fabro-web && bun install && bun run typecheck 2>&1", "usage": null }, "toolchain": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53" }, "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "usage": null }, "start": { "status": "succeeded", "usage": null }, "compile_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126" }, "notes": "Script completed: cargo check -q --workspace 2>&1", "usage": null } }, "next_node_id": "lint_rust", "git_commit_sha": "53ec9b02161c6196127b6cda9cc40c8f37fde15e", "node_visits": { "toolchain": 1, "compile_typescript": 1, "start": 1, "compile_rust": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } }, { "seq": 58, "checkpoint": { "timestamp": "2026-05-23T09:43:33.823496Z", "current_node": "lint_rust", "completed_nodes": [ "start", "toolchain", "compile_rust", "compile_typescript", "lint_rust" ], "node_retries": {}, "context_values": { "internal.retry_count.lint_rust": 0, "internal.retry_count.start": 0, "internal.retry_count.toolchain": 0, "internal.thread_id": "compile_typescript", "internal.work_dir": "/home/daytona/workspace/fabro", "internal.retry_count.compile_rust": 0, "failure_class": "deterministic", "thread.compile_rust.current_node": "compile_typescript", "thread.start.current_node": "toolchain", "outcome": "failed", "current_node": "lint_rust", "failure_signature": "lint_rust|deterministic|script failed with exit code: ## output error: adding items after statements is confusing,since items exist from the start of the scope --> lib/crates/fabro-sandbox/src/docker.rs:: | | use std::io::read as _; | ^^^^^^^^^^^^^^^", "internal.node_visit_count": 1, "graph.retry_target": "exit", "internal.retry_count.compile_typescript": 0, "thread.compile_typescript.current_node": "lint_rust", "internal.fidelity": "compact", "graph.goal": "Verify the sandbox can lint and test the project", "graph.rankdir": "LR", "command.output": "blob://sha256/cfb3bdc41caef302fd122fc89d93befcfaec06062e8f3fda32985c19663988da", "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "thread.toolchain.current_node": "compile_rust" }, "node_outcomes": { "start": { "status": "succeeded", "usage": null }, "toolchain": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53" }, "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "usage": null }, "lint_rust": { "status": "failed", "context_updates": { "command.output": "blob://sha256/cfb3bdc41caef302fd122fc89d93befcfaec06062e8f3fda32985c19663988da" }, "failure": { "message": "Script failed with exit code: 101\n\n## output\nerror: adding items after statements is confusing, since items exist from the start of the scope\n --> lib/crates/fabro-sandbox/src/docker.rs:232:9\n |\n232 | use std::io::Read as _;\n | ^^^^^^^^^^^^^^^^^^^^^^^\n |\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements\n = note: `-D clippy::items-after-statements` implied by `-D warnings`\n = help: to override `-D warnings` add `#[allow(clippy::items_after_statements)]`\n\nerror: could not compile `fabro-sandbox` (lib) due to 1 previous error\nerror: could not compile `fabro-sandbox` (lib test) due to 1 previous error\n", "category": "deterministic" }, "usage": null }, "compile_typescript": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/ae1ec94de56280a33f605aa6013462a29038cb9c3161b2d19852c8340af71382" }, "notes": "Script completed: cd apps/fabro-web && bun install && bun run typecheck 2>&1", "usage": null }, "compile_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126" }, "notes": "Script completed: cargo check -q --workspace 2>&1", "usage": null } }, "next_node_id": "test_rust", "git_commit_sha": "ca06bc0bfb721e18aff1cd9197937cd29b73edc3", "loop_failure_signatures": { "lint_rust|deterministic|script failed with exit code: ## output error: adding items after statements is confusing,since items exist from the start of the scope --> lib/crates/fabro-sandbox/src/docker.rs:: | | use std::io::read as _; | ^^^^^^^^^^^^^^^": 1 }, "node_visits": { "toolchain": 1, "compile_rust": 1, "lint_rust": 1, "start": 1, "compile_typescript": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } }, { "seq": 68, "checkpoint": { "timestamp": "2026-05-23T09:46:23.468757Z", "current_node": "test_rust", "completed_nodes": [ "start", "toolchain", "compile_rust", "compile_typescript", "lint_rust", "test_rust" ], "node_retries": {}, "context_values": { "internal.fidelity": "compact", "internal.thread_id": "lint_rust", "internal.work_dir": "/home/daytona/workspace/fabro", "failure_class": "", "internal.retry_count.lint_rust": 0, "current_node": "test_rust", "thread.compile_rust.current_node": "compile_typescript", "graph.retry_target": "exit", "internal.retry_count.toolchain": 0, "graph.goal": "Verify the sandbox can lint and test the project", "internal.node_visit_count": 1, "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "thread.lint_rust.current_node": "test_rust", "thread.compile_typescript.current_node": "lint_rust", "thread.start.current_node": "toolchain", "graph.rankdir": "LR", "failure_signature": "", "internal.retry_count.test_rust": 0, "thread.toolchain.current_node": "compile_rust", "command.output": "blob://sha256/23a3bfe69f9c02001e068f5726e2daee140e48b53855b486b14c2c655c1e53ad", "outcome": "succeeded", "internal.retry_count.compile_typescript": 0, "internal.retry_count.start": 0, "internal.retry_count.compile_rust": 0 }, "node_outcomes": { "test_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/23a3bfe69f9c02001e068f5726e2daee140e48b53855b486b14c2c655c1e53ad" }, "notes": "Script completed: ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", "usage": null }, "toolchain": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53" }, "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "usage": null }, "compile_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126" }, "notes": "Script completed: cargo check -q --workspace 2>&1", "usage": null }, "compile_typescript": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/ae1ec94de56280a33f605aa6013462a29038cb9c3161b2d19852c8340af71382" }, "notes": "Script completed: cd apps/fabro-web && bun install && bun run typecheck 2>&1", "usage": null }, "lint_rust": { "status": "failed", "context_updates": { "command.output": "blob://sha256/cfb3bdc41caef302fd122fc89d93befcfaec06062e8f3fda32985c19663988da" }, "failure": { "message": "Script failed with exit code: 101\n\n## output\nerror: adding items after statements is confusing, since items exist from the start of the scope\n --> lib/crates/fabro-sandbox/src/docker.rs:232:9\n |\n232 | use std::io::Read as _;\n | ^^^^^^^^^^^^^^^^^^^^^^^\n |\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements\n = note: `-D clippy::items-after-statements` implied by `-D warnings`\n = help: to override `-D warnings` add `#[allow(clippy::items_after_statements)]`\n\nerror: could not compile `fabro-sandbox` (lib) due to 1 previous error\nerror: could not compile `fabro-sandbox` (lib test) due to 1 previous error\n", "category": "deterministic" }, "usage": null }, "start": { "status": "succeeded", "usage": null } }, "next_node_id": "test_typescript", "git_commit_sha": "e6d9edb2f480315706d8746a8cd35aa1f096ca4f", "loop_failure_signatures": { "lint_rust|deterministic|script failed with exit code: ## output error: adding items after statements is confusing,since items exist from the start of the scope --> lib/crates/fabro-sandbox/src/docker.rs:: | | use std::io::read as _; | ^^^^^^^^^^^^^^^": 1 }, "node_visits": { "lint_rust": 1, "compile_rust": 1, "start": 1, "toolchain": 1, "test_rust": 1, "compile_typescript": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } }, { "seq": 78, "checkpoint": { "timestamp": "2026-05-23T09:46:37.653218Z", "current_node": "test_typescript", "completed_nodes": [ "start", "toolchain", "compile_rust", "compile_typescript", "lint_rust", "test_rust", "test_typescript" ], "node_retries": {}, "context_values": { "thread.lint_rust.current_node": "test_rust", "graph.rankdir": "LR", "internal.retry_count.compile_rust": 0, "graph.retry_target": "exit", "internal.work_dir": "/home/daytona/workspace/fabro", "internal.retry_count.test_typescript": 0, "internal.retry_count.lint_rust": 0, "internal.retry_count.toolchain": 0, "internal.thread_id": "test_rust", "thread.test_rust.current_node": "test_typescript", "outcome": "failed", "internal.run_id": "01KSA36AH4GPG3D8P1EP0HBG7X", "internal.retry_count.compile_typescript": 0, "thread.compile_typescript.current_node": "lint_rust", "failure_class": "canceled", "command.output": "blob://sha256/ecbe3e17d3ea72d24a19d27f2fbc62e7d069259cdc8ce30c60657fbe5f6b66db", "graph.goal": "Verify the sandbox can lint and test the project", "internal.node_visit_count": 1, "internal.retry_count.test_rust": 0, "internal.fidelity": "compact", "failure_signature": "test_typescript|canceled|script failed with exit code: ## output act.dev/warnings/react-test-renderer (pass) filesystempanel render > renders an empty text file without mounting pierre file [.76ms] react-test-renderer is deprecated. see https://react.dev/war", "thread.compile_rust.current_node": "compile_typescript", "thread.start.current_node": "toolchain", "thread.toolchain.current_node": "compile_rust", "current_node": "test_typescript", "internal.retry_count.start": 0 }, "node_outcomes": { "test_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/23a3bfe69f9c02001e068f5726e2daee140e48b53855b486b14c2c655c1e53ad" }, "notes": "Script completed: ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", "usage": null }, "test_typescript": { "status": "failed", "context_updates": { "command.output": "blob://sha256/ecbe3e17d3ea72d24a19d27f2fbc62e7d069259cdc8ce30c60657fbe5f6b66db" }, "failure": { "message": "Script failed with exit code: 1\n\n## output\nact.dev/warnings/react-test-renderer\n(pass) FilesystemPanel render > renders an empty text file without mounting Pierre File [0.76ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) FilesystemPanel render > renders binary fallback when file contents contain a null byte [0.63ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) FilesystemPanel render > renders too-large fallback when declared size exceeds the limit [0.65ms]\n\napp/routes/run-sandbox/services-panel.test.tsx:\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows loading state while fetching with no data [0.73ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows empty state when the services list is empty [0.26ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows an iproute2 tip when services were discovered from procfs [0.67ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows API error state with the error message [0.24ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > renders a non-previewable service without a Preview button [0.29ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > renders a Preview button for a previewable service and triggers with signed args [14.75ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > clicking Preview opens the returned URL in a new tab [0.78ms]\n\napp/routes/run-sandbox/vnc-panel.test.tsx:\n(pass) vncSupported > only daytona is supported [0.09ms]\n(pass) describeVncError > treats 501 as non-recoverable unsupported [0.08ms]\n(pass) describeVncError > treats 409 as recoverable startup failure [0.03ms]\n(pass) describeVncError > treats 404 as non-recoverable [0.03ms]\n(pass) describeVncError > falls back to a generic recoverable error for unknown shapes [0.03ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > disables the query and shows unsupported state for non-Daytona providers [0.72ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > enables the query and shows loading state on Daytona while fetching [0.31ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > renders an iframe with the signed URL on success [0.29ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > renders an actionable error state for 409 startup failures [0.31ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > reconnect button refetches the signed URL [0.28ms]\n\n9 tests failed:\n(fail) run lifecycle actions > cancelRun parses a 200 response [0.23ms]\n(fail) run lifecycle actions > archiveRun parses a 200 response [0.09ms]\n(fail) run lifecycle actions > unarchiveRun parses a 200 response [0.08ms]\n(fail) run lifecycle actions > 404 and 409 preserve the parsed error envelope [0.33ms]\n(fail) run lifecycle actions > non-JSON error bodies fall back to an empty error list [0.15ms]\n(fail) run lifecycle actions > mapError returns user-facing copy for lifecycle conflicts [0.12ms]\n(fail) RunDetail full-height child routes > uses a full-height flex wrapper for fullHeight child routes [13.87ms]\n(fail) RunDetail full-height child routes > keeps blocked full-height children clear of the interview dock without an h-72 sibling [4.87ms]\n(fail) RunDetail full-height child routes > preserves document-flow layout for child routes without fullHeight [3.38ms]\n\n 422 pass\n 9 fail\n 1020 expect() calls\nRan 431 tests across 55 files. [6.96s]\n", "category": "canceled" }, "usage": null }, "compile_rust": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126" }, "notes": "Script completed: cargo check -q --workspace 2>&1", "usage": null }, "toolchain": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53" }, "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "usage": null }, "compile_typescript": { "status": "succeeded", "context_updates": { "command.output": "blob://sha256/ae1ec94de56280a33f605aa6013462a29038cb9c3161b2d19852c8340af71382" }, "notes": "Script completed: cd apps/fabro-web && bun install && bun run typecheck 2>&1", "usage": null }, "lint_rust": { "status": "failed", "context_updates": { "command.output": "blob://sha256/cfb3bdc41caef302fd122fc89d93befcfaec06062e8f3fda32985c19663988da" }, "failure": { "message": "Script failed with exit code: 101\n\n## output\nerror: adding items after statements is confusing, since items exist from the start of the scope\n --> lib/crates/fabro-sandbox/src/docker.rs:232:9\n |\n232 | use std::io::Read as _;\n | ^^^^^^^^^^^^^^^^^^^^^^^\n |\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements\n = note: `-D clippy::items-after-statements` implied by `-D warnings`\n = help: to override `-D warnings` add `#[allow(clippy::items_after_statements)]`\n\nerror: could not compile `fabro-sandbox` (lib) due to 1 previous error\nerror: could not compile `fabro-sandbox` (lib test) due to 1 previous error\n", "category": "deterministic" }, "usage": null }, "start": { "status": "succeeded", "usage": null } }, "next_node_id": "exit", "git_commit_sha": "c5a18b6a1b8d743e18f35e3c84ae88ab07a0b3c3", "loop_failure_signatures": { "lint_rust|deterministic|script failed with exit code: ## output error: adding items after statements is confusing,since items exist from the start of the scope --> lib/crates/fabro-sandbox/src/docker.rs:: | | use std::io::read as _; | ^^^^^^^^^^^^^^^": 1 }, "node_visits": { "compile_rust": 1, "test_typescript": 1, "toolchain": 1, "compile_typescript": 1, "lint_rust": 1, "test_rust": 1, "start": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } } ], "conclusion": { "timestamp": "2026-05-23T09:46:37.666666Z", "status": "failed", "timing": { "wall_time_ms": 477875, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "failure": { "reason": "workflow_error", "detail": { "message": "goal gate unsatisfied for node lint_rust and no retry target", "category": "deterministic" } }, "final_git_commit_sha": "c5a18b6a1b8d743e18f35e3c84ae88ab07a0b3c3", "stages": [ { "stage_id": "start", "stage_label": "start", "timing": { "wall_time_ms": 0, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 }, { "stage_id": "toolchain", "stage_label": "toolchain", "timing": { "wall_time_ms": 2084, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 }, { "stage_id": "compile_rust", "stage_label": "compile_rust", "timing": { "wall_time_ms": 134885, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 }, { "stage_id": "compile_typescript", "stage_label": "compile_typescript", "timing": { "wall_time_ms": 10232, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 }, { "stage_id": "lint_rust", "stage_label": "lint_rust", "timing": { "wall_time_ms": 124859, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 }, { "stage_id": "test_rust", "stage_label": "test_rust", "timing": { "wall_time_ms": 164082, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 }, { "stage_id": "test_typescript", "stage_label": "test_typescript", "timing": { "wall_time_ms": 9289, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "retries": 0 } ], "total_retries": 0, "diff": {} }, "sandbox": { "provider": "daytona", "image": "buildpack-deps:noble", "snapshot": "fabro-v11", "runtime": { "id": "fabro-01KSA36AH4GPG3D8P1EP0HBG7X", "working_directory": "/home/daytona/workspace/fabro", "repo_cloned": true, "clone_origin_url": "https://github.com/fabro-sh/fabro", "clone_branch": "main", "workspace_root": "/home/daytona/workspace", "repos_root": "/home/daytona/repos", "primary_repo_path": "/home/daytona/repos/fabro-sh/fabro", "primary_repo_link": "/home/daytona/workspace/fabro" } }, "pull_request": null, "superseded_by": null, "pending_interviews": {}, "stages": { "toolchain@1": { "first_event_seq": 20, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": "Script completed: rustc --version && cargo --version && bun --version 2>&1", "failure_reason": null, "timestamp": "2026-05-23T09:38:43.577862Z" }, "provider_used": null, "diff": null, "script_invocation": { "script": "rustc --version && cargo --version && bun --version 2>&1", "command": "exec 2>&1\nrustc --version && cargo --version && bun --version 2>&1", "language": "shell" }, "script_timing": { "output": "blob://sha256/b8ca0e4caeb04bc5b1536d59d663fbaf5f6689fccabefcb4ddeb0727a377bb53", "exit_code": 0, "duration_ms": 2078, "termination": "exited", "output_bytes": 79, "live_streaming": true }, "parallel_results": null, "output": null, "output_bytes": 79, "live_streaming": true, "termination": "exited", "started_at": "2026-05-23T09:38:41.493441Z", "handler": "command", "timing": { "wall_time_ms": 2084, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "succeeded" }, "test_rust@1": { "first_event_seq": 61, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": "Script completed: ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", "failure_reason": null, "timestamp": "2026-05-23T09:46:17.909560Z" }, "provider_used": null, "diff": null, "script_invocation": { "script": "ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", "command": "exec 2>&1\nulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", "language": "shell" }, "script_timing": { "output": "blob://sha256/23a3bfe69f9c02001e068f5726e2daee140e48b53855b486b14c2c655c1e53ad", "exit_code": 0, "duration_ms": 164076, "termination": "exited", "output_bytes": 287, "live_streaming": true }, "parallel_results": null, "output": null, "output_bytes": 287, "live_streaming": true, "termination": "exited", "started_at": "2026-05-23T09:43:33.826457Z", "handler": "command", "timing": { "wall_time_ms": 164082, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "succeeded" }, "compile_rust@1": { "first_event_seq": 30, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": "Script completed: cargo check -q --workspace 2>&1", "failure_reason": null, "timestamp": "2026-05-23T09:41:03.897146Z" }, "provider_used": null, "diff": null, "script_invocation": { "script": "cargo check -q --workspace 2>&1", "command": "exec 2>&1\ncargo check -q --workspace 2>&1", "language": "shell" }, "script_timing": { "output": "blob://sha256/12ae32cb1ec02d01eda3581b127c1fee3b0dc53572ed6baf239721a03d82e126", "exit_code": 0, "duration_ms": 134880, "termination": "exited", "output_bytes": 0, "live_streaming": false }, "parallel_results": null, "output": null, "output_bytes": 0, "live_streaming": false, "termination": "exited", "started_at": "2026-05-23T09:38:49.011408Z", "handler": "command", "timing": { "wall_time_ms": 134885, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "succeeded" }, "start@1": { "first_event_seq": 16, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, "timestamp": "2026-05-23T09:38:41.492986Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, "output": null, "started_at": "2026-05-23T09:38:41.492406Z", "handler": "start", "timing": { "wall_time_ms": 0, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "succeeded" }, "lint_rust@1": { "first_event_seq": 50, "prompt": null, "response": null, "completion": { "outcome": "failed", "notes": null, "failure_reason": "Script failed with exit code: 101\n\n## output\nerror: adding items after statements is confusing, since items exist from the start of the scope\n --> lib/crates/fabro-sandbox/src/docker.rs:232:9\n |\n232 | use std::io::Read as _;\n | ^^^^^^^^^^^^^^^^^^^^^^^\n |\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements\n = note: `-D clippy::items-after-statements` implied by `-D warnings`\n = help: to override `-D warnings` add `#[allow(clippy::items_after_statements)]`\n\nerror: could not compile `fabro-sandbox` (lib) due to 1 previous error\nerror: could not compile `fabro-sandbox` (lib test) due to 1 previous error\n", "timestamp": "2026-05-23T09:43:29.649882Z" }, "provider_used": null, "diff": null, "script_invocation": { "script": "cargo +nightly-2026-04-14 fmt --check --all 2>&1 && cargo +nightly-2026-04-14 clippy -q --workspace --all-targets -- -D warnings 2>&1", "command": "exec 2>&1\ncargo +nightly-2026-04-14 fmt --check --all 2>&1 && cargo +nightly-2026-04-14 clippy -q --workspace --all-targets -- -D warnings 2>&1", "language": "shell" }, "script_timing": { "output": "blob://sha256/cfb3bdc41caef302fd122fc89d93befcfaec06062e8f3fda32985c19663988da", "exit_code": 101, "duration_ms": 124855, "termination": "exited", "output_bytes": 666, "live_streaming": true }, "parallel_results": null, "output": null, "output_bytes": 666, "live_streaming": true, "termination": "exited", "started_at": "2026-05-23T09:41:24.787498Z", "handler": "command", "timing": { "wall_time_ms": 124859, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "failed" }, "compile_typescript@1": { "first_event_seq": 40, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": "Script completed: cd apps/fabro-web && bun install && bun run typecheck 2>&1", "failure_reason": null, "timestamp": "2026-05-23T09:41:19.660472Z" }, "provider_used": null, "diff": null, "script_invocation": { "script": "cd apps/fabro-web && bun install && bun run typecheck 2>&1", "command": "exec 2>&1\ncd apps/fabro-web && bun install && bun run typecheck 2>&1", "language": "shell" }, "script_timing": { "output": "blob://sha256/ae1ec94de56280a33f605aa6013462a29038cb9c3161b2d19852c8340af71382", "exit_code": 0, "duration_ms": 10227, "termination": "exited", "output_bytes": 759, "live_streaming": true }, "parallel_results": null, "output": null, "output_bytes": 759, "live_streaming": true, "termination": "exited", "started_at": "2026-05-23T09:41:09.427682Z", "handler": "command", "timing": { "wall_time_ms": 10232, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "succeeded" }, "test_typescript@1": { "first_event_seq": 71, "prompt": null, "response": null, "completion": { "outcome": "failed", "notes": null, "failure_reason": "Script failed with exit code: 1\n\n## output\nact.dev/warnings/react-test-renderer\n(pass) FilesystemPanel render > renders an empty text file without mounting Pierre File [0.76ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) FilesystemPanel render > renders binary fallback when file contents contain a null byte [0.63ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) FilesystemPanel render > renders too-large fallback when declared size exceeds the limit [0.65ms]\n\napp/routes/run-sandbox/services-panel.test.tsx:\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows loading state while fetching with no data [0.73ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows empty state when the services list is empty [0.26ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows an iproute2 tip when services were discovered from procfs [0.67ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > shows API error state with the error message [0.24ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > renders a non-previewable service without a Preview button [0.29ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > renders a Preview button for a previewable service and triggers with signed args [14.75ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) ServicesPanelView > clicking Preview opens the returned URL in a new tab [0.78ms]\n\napp/routes/run-sandbox/vnc-panel.test.tsx:\n(pass) vncSupported > only daytona is supported [0.09ms]\n(pass) describeVncError > treats 501 as non-recoverable unsupported [0.08ms]\n(pass) describeVncError > treats 409 as recoverable startup failure [0.03ms]\n(pass) describeVncError > treats 404 as non-recoverable [0.03ms]\n(pass) describeVncError > falls back to a generic recoverable error for unknown shapes [0.03ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > disables the query and shows unsupported state for non-Daytona providers [0.72ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > enables the query and shows loading state on Daytona while fetching [0.31ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > renders an iframe with the signed URL on success [0.29ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > renders an actionable error state for 409 startup failures [0.31ms]\nreact-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer\n(pass) VncPanel render > reconnect button refetches the signed URL [0.28ms]\n\n9 tests failed:\n(fail) run lifecycle actions > cancelRun parses a 200 response [0.23ms]\n(fail) run lifecycle actions > archiveRun parses a 200 response [0.09ms]\n(fail) run lifecycle actions > unarchiveRun parses a 200 response [0.08ms]\n(fail) run lifecycle actions > 404 and 409 preserve the parsed error envelope [0.33ms]\n(fail) run lifecycle actions > non-JSON error bodies fall back to an empty error list [0.15ms]\n(fail) run lifecycle actions > mapError returns user-facing copy for lifecycle conflicts [0.12ms]\n(fail) RunDetail full-height child routes > uses a full-height flex wrapper for fullHeight child routes [13.87ms]\n(fail) RunDetail full-height child routes > keeps blocked full-height children clear of the interview dock without an h-72 sibling [4.87ms]\n(fail) RunDetail full-height child routes > preserves document-flow layout for child routes without fullHeight [3.38ms]\n\n 422 pass\n 9 fail\n 1020 expect() calls\nRan 431 tests across 55 files. [6.96s]\n", "timestamp": "2026-05-23T09:46:32.760572Z" }, "provider_used": null, "diff": null, "script_invocation": { "script": "cd apps/fabro-web && bun test 2>&1", "command": "exec 2>&1\ncd apps/fabro-web && bun test 2>&1", "language": "shell" }, "script_timing": { "output": "blob://sha256/ecbe3e17d3ea72d24a19d27f2fbc62e7d069259cdc8ce30c60657fbe5f6b66db", "exit_code": 1, "duration_ms": 9279, "termination": "exited", "output_bytes": 151121, "live_streaming": true }, "parallel_results": null, "output": null, "output_bytes": 151121, "live_streaming": true, "termination": "exited", "started_at": "2026-05-23T09:46:23.470788Z", "handler": "command", "timing": { "wall_time_ms": 9289, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "failed" } } }