{ "title": "Verify the sandbox can lint and test the project", "spec": { "run_id": "01KRYAVTCVT4F3BKACYXJ1GQGH", "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": [] }, "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": { "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": { "compile_typescript": { "id": "compile_typescript", "attrs": { "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true }, "label": { "String": "Compile TypeScript" }, "script": { "String": "cd apps/fabro-web && bun install && bun run typecheck 2>&1" } } }, "exit": { "id": "exit", "attrs": { "label": { "String": "Exit" }, "shape": { "String": "Msquare" } } }, "lint_rust": { "id": "lint_rust", "attrs": { "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" }, "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true } } }, "start": { "id": "start", "attrs": { "shape": { "String": "Mdiamond" }, "label": { "String": "Start" } } }, "test_typescript": { "id": "test_typescript", "attrs": { "shape": { "String": "parallelogram" }, "script": { "String": "cd apps/fabro-web && bun test 2>&1" }, "goal_gate": { "Boolean": true }, "label": { "String": "Test TypeScript" } } }, "compile_rust": { "id": "compile_rust", "attrs": { "script": { "String": "cargo check -q --workspace 2>&1" }, "goal_gate": { "Boolean": true }, "label": { "String": "Compile Rust" }, "shape": { "String": "parallelogram" } } }, "test_rust": { "id": "test_rust", "attrs": { "label": { "String": "Test Rust" }, "script": { "String": "ulimit -n 4096 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1" }, "goal_gate": { "Boolean": true }, "shape": { "String": "parallelogram" } } }, "toolchain": { "id": "toolchain", "attrs": { "label": { "String": "Toolchain" }, "shape": { "String": "parallelogram" }, "goal_gate": { "Boolean": true }, "script": { "String": "rustc --version && cargo --version && bun --version 2>&1" } } } }, "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": { "rankdir": { "String": "LR" }, "retry_target": { "String": "exit" }, "goal": { "String": "Verify the sandbox can lint and test the project" } } }, "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.237.0-nightly.1" }, "client": { "user_agent": "fabro-cli/0.237.0-nightly.1", "name": "fabro-cli", "version": "0.237.0-nightly.1" }, "subject": { "kind": "user", "identity": { "issuer": "https://github.com", "subject": "19" }, "login": "brynary", "auth_method": "github" } }, "manifest_blob": "1b5febbf27f9087d3c74f69d07f1d32404e701ad9b95a31f1bb17dde1a80ce87", "definition_blob": "9162e26c0d3b053af659bd64a188c67e8e82a103eb51b70807a92495c3a136b1", "git": { "origin_url": "https://github.com/fabro-sh/fabro", "branch": "main", "sha": "e7ce0f6a8683d4a49d622d30302672aa344b5434", "dirty": "dirty", "push_outcome": { "type": "not_attempted" } } }, "web_url": "http://127.0.0.1:32276/runs/01KRYAVTCVT4F3BKACYXJ1GQGH", "start": null, "status": { "kind": "starting" }, "status_updated_at": "2026-05-18T20:01:31.074733Z", "last_event_at": "2026-05-18T20:05:18.356621Z", "pending_control": null, "checkpoints": [], "conclusion": null, "sandbox": { "provider": "daytona", "image": "buildpack-deps:noble", "snapshot": "fabro-v11", "runtime": { "id": "fabro-01KRYAVTCVT4F3BKACYXJ1GQGH", "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": {} }