Rename arc run startarc run (#5)

* arc(01KK7524KNGTPS4090QMF87FJN): implement (success)

Arc-Run: 01KK7524KNGTPS4090QMF87FJN
Arc-Completed: 2
Arc-Checkpoint: 1ff03c704805dfe8e7c37b37f97bd06dfa0e5dc5

* Fix: restore trailing newlines stripped by previous commit

* arc(01KK7524KNGTPS4090QMF87FJN): simplify (success)

Arc-Run: 01KK7524KNGTPS4090QMF87FJN
Arc-Completed: 3
Arc-Checkpoint: 21771adfd26283a1d1e6b8a123a83a0c4277db48

---------

Co-authored-by: arc <arc@local>
Co-authored-by: Arc Assistant <assistant@arc.dev>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-03-08 16:14:50 -04:00 committed by GitHub
parent c3d23d72e9
commit d002aa0b51
35 changed files with 127 additions and 133 deletions

View file

@ -17,4 +17,4 @@ The OpenAPI spec at `docs/api-reference/arc-api.yaml` is the source of truth for
## Testing workflows
When manually testing workflows with `arc run start`, use `--no-retro` to skip the retro step and finish faster.
When manually testing workflows with `arc run`, use `--no-retro` to skip the retro step and finish faster.

View file

@ -49,11 +49,8 @@ enum Command {
},
/// Run an agentic coding session
Exec(arc_agent::cli::AgentArgs),
/// Launch and manage workflow runs
Run {
#[command(subcommand)]
command: RunCommand,
},
/// Launch a workflow run
Run(arc_workflows::cli::RunArgs),
/// Validate a workflow
Validate(arc_workflows::cli::ValidateArgs),
/// Parse a DOT file and print its AST
@ -77,14 +74,17 @@ enum Command {
},
/// Interactive setup wizard for Arc
Setup,
/// List workflow runs
Ps(arc_workflows::cli::runs::RunsListArgs),
/// System maintenance commands
System {
#[command(subcommand)]
command: SystemCommand,
},
}
#[derive(Subcommand)]
enum RunCommand {
/// Launch a workflow from a .dot or .toml task file
Start(arc_workflows::cli::RunArgs),
/// List workflow runs
List(arc_workflows::cli::runs::RunsListArgs),
enum SystemCommand {
/// Delete old workflow runs
Prune(arc_workflows::cli::runs::RunsPruneArgs),
}
@ -130,13 +130,15 @@ async fn main() -> Result<()> {
let command_name = match &cli.command {
Command::Llm { .. } => "llm",
Command::Exec(_) => "exec",
Command::Run { .. } => "run",
Command::Run(_) => "run",
Command::Validate(_) => "validate",
Command::Parse(_) => "parse",
Command::Model { .. } => "model",
Command::Serve(_) => "serve",
Command::Doctor { .. } => "doctor",
Command::Setup => "setup",
Command::Ps(_) => "ps",
Command::System { .. } => "system",
};
let config_log_level = if let Command::Serve(ref args) = cli.command {
@ -216,41 +218,33 @@ async fn main() -> Result<()> {
);
arc_agent::cli::run_with_args(args).await?
}
Command::Run { command } => match command {
RunCommand::Start(mut args) => {
let styles: &'static arc_util::terminal::Styles =
Box::leak(Box::new(arc_util::terminal::Styles::detect_stderr()));
let server_config = arc_api::server_config::load_server_config(None)?;
let cli_config = cli_config::load_cli_config(None)?;
args.verbose = args.verbose || cli_config.verbose;
let github_app = build_github_app_credentials(&server_config);
Command::Run(mut args) => {
let styles: &'static arc_util::terminal::Styles =
Box::leak(Box::new(arc_util::terminal::Styles::detect_stderr()));
let server_config = arc_api::server_config::load_server_config(None)?;
let cli_config = cli_config::load_cli_config(None)?;
args.verbose = args.verbose || cli_config.verbose;
let github_app = build_github_app_credentials(&server_config);
let cli_author = cli_config.git.as_ref().map(|g| &g.author);
let git_author = arc_workflows::git::GitAuthor::from_options(
cli_author
.and_then(|a| a.name.clone())
.or_else(|| server_config.git.author.name.clone()),
cli_author
.and_then(|a| a.email.clone())
.or_else(|| server_config.git.author.email.clone()),
);
let cli_author = cli_config.git.as_ref().map(|g| &g.author);
let git_author = arc_workflows::git::GitAuthor::from_options(
cli_author
.and_then(|a| a.name.clone())
.or_else(|| server_config.git.author.name.clone()),
cli_author
.and_then(|a| a.email.clone())
.or_else(|| server_config.git.author.email.clone()),
);
arc_workflows::cli::run::run_command(
args,
server_config.run_defaults,
styles,
github_app,
git_author,
)
.await?;
}
RunCommand::List(args) => {
arc_workflows::cli::runs::list_command(&args)?;
}
RunCommand::Prune(args) => {
arc_workflows::cli::runs::prune_command(&args)?;
}
},
arc_workflows::cli::run::run_command(
args,
server_config.run_defaults,
styles,
github_app,
git_author,
)
.await?;
}
Command::Validate(args) => {
let styles = arc_util::terminal::Styles::detect_stderr();
arc_workflows::cli::validate::validate_command(&args, &styles)?;
@ -288,6 +282,14 @@ async fn main() -> Result<()> {
Command::Setup => {
setup::run_setup().await?;
}
Command::Ps(args) => {
arc_workflows::cli::runs::list_command(&args)?;
}
Command::System { command } => match command {
SystemCommand::Prune(args) => {
arc_workflows::cli::runs::prune_command(&args)?;
}
},
}
Ok(())

View file

@ -420,7 +420,6 @@ fn dry_run_simple() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"../../test/simple.dot",
@ -434,7 +433,6 @@ fn dry_run_branching() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"../../test/branching.dot",
@ -448,7 +446,6 @@ fn dry_run_conditions() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"../../test/conditions.dot",
@ -462,7 +459,6 @@ fn dry_run_parallel() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"../../test/parallel.dot",
@ -476,7 +472,6 @@ fn dry_run_styled() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"../../test/styled.dot",
@ -490,7 +485,6 @@ fn dry_run_legacy_tool() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"../../test/legacy_tool.dot",
@ -548,7 +542,6 @@ fn dry_run_writes_jsonl_and_live_json() {
arc()
.args([
"run",
"start",
"--dry-run",
"--auto-approve",
"--logs-dir",

View file

@ -35,5 +35,5 @@ It checks:
**Run config validation errors** — Use `--preflight` to validate without executing:
```bash
arc run start run.toml --preflight
arc run run.toml --preflight
```

View file

@ -15,7 +15,7 @@ Arc has two interfaces, both backed by the same workflow engine:
| | CLI mode | API mode |
|---|---|---|
| **Command** | `arc run start workflow.dot` | `arc serve` |
| **Command** | `arc run workflow.dot` | `arc serve` |
| **Best for** | Local development, one-off runs | Production use, web UI, integrations |
| **Execution** | Immediate, single run | Queued, up to N concurrent runs |
| **Human-in-the-loop** | Terminal prompts | HTTP endpoints |
@ -36,7 +36,7 @@ You provide three inputs:
## Parse and validate
When you run `arc run start`, Arc:
When you run `arc run`, Arc:
1. Parses the DOT file into an in-memory graph of nodes and edges
2. Validates the graph structure (exactly one start node, one exit node, all edges point to valid nodes)
@ -96,13 +96,13 @@ See [Observability](/execution/observability) for more on querying run data.
Because Arc checkpoints after every stage, interrupted runs can be resumed from where they left off:
```bash
arc run start --resume path/to/checkpoint.json
arc run --resume path/to/checkpoint.json
```
Or resume from a git run branch:
```bash
arc run start --run-branch arc/runs/abc123
arc run --run-branch arc/runs/abc123
```
The engine restores the full context, node visit counts, and retry state, then continues execution from the next node.

View file

@ -75,11 +75,11 @@ Model stylesheets set per-node models inside the workflow graph, but you can als
### CLI flags
Pass `--model` and optionally `--provider` to `arc run start`:
Pass `--model` and optionally `--provider` to `arc run`:
```bash
arc run start demo/01-hello.dot --model claude-opus-4-6
arc run start demo/04-pipeline.dot --model gemini-3.1-pro-preview --provider gemini
arc run demo/01-hello.dot --model claude-opus-4-6
arc run demo/04-pipeline.dot --model gemini-3.1-pro-preview --provider gemini
```
These flags set the default model for all nodes that don't have an explicit model assigned via a stylesheet.
@ -105,7 +105,7 @@ gemini = ["anthropic", "openai"]
Then launch with:
```bash
arc run start run.toml
arc run run.toml
```
The `[llm.fallbacks]` table is optional. It maps each provider to an ordered list of fallback providers to try when the primary is unavailable.

View file

@ -3,7 +3,7 @@ title: "Workflows"
description: "Core workflow concepts in Arc"
---
A workflow is a directed graph that defines a repeatable process for AI agents, shell commands, and human decisions. Unlike a DAG (directed acyclic graph), an Arc workflow can and often does include loops — for example, implement-test-fix cycles that repeat until tests pass. You write workflows in [Graphviz DOT](/reference/dot-language), check them into version control, and run them with `arc run start`.
A workflow is a directed graph that defines a repeatable process for AI agents, shell commands, and human decisions. Unlike a DAG (directed acyclic graph), an Arc workflow can and often does include loops — for example, implement-test-fix cycles that repeat until tests pass. You write workflows in [Graphviz DOT](/reference/dot-language), check them into version control, and run them with `arc run`.
## Anatomy of a workflow
@ -112,13 +112,13 @@ validate [label="Validate", prompt="Run the test suite and verify all tests pass
From the CLI:
```bash
arc run start workflow.dot
arc run workflow.dot
```
Or from a [run config TOML](/execution/run-configuration) for repeatable, parameterized runs:
```bash
arc run start run.toml
arc run run.toml
```
See the [Quick Start](/getting-started/quick-start) to try it out, or browse the [example workflows](/examples/implement-feature) for real-world patterns.

View file

@ -67,7 +67,7 @@ digraph NLSpecConformance {
```
```bash
arc run start workflows/nlspec-conformance.dot
arc run workflows/nlspec-conformance.dot
```
## How it works

View file

@ -240,7 +240,7 @@ downstream_lang = "go"
Launch with:
```bash
arc run start semport.toml
arc run semport.toml
```
## Adapting this pattern

View file

@ -281,7 +281,7 @@ dockerfile = "FROM python:3.12-slim\nRUN apt-get update && apt-get install -y gi
```
```bash
arc run start build-solitaire.toml
arc run build-solitaire.toml
```
## Adapting this pattern

View file

@ -97,7 +97,7 @@ There are two ways to resume an interrupted run:
Resume from a `checkpoint.json` saved in the logs directory:
```bash
arc run start workflow.dot --resume path/to/logs/checkpoint.json
arc run workflow.dot --resume path/to/logs/checkpoint.json
```
Arc loads the checkpoint, restores the context and execution state, and continues from the next node after the checkpoint.
@ -107,7 +107,7 @@ Arc loads the checkpoint, restores the context and execution state, and continue
Resume from the Git branches created during a previous run:
```bash
arc run start --run-branch arc/run/01JKXYZ...
arc run --run-branch arc/run/01JKXYZ...
```
This reads the checkpoint, manifest, and graph DOT from the metadata branch (`refs/arc/01JKXYZ...`), re-attaches a worktree to the existing run branch, and resumes execution. No workflow file argument is needed — everything is recovered from Git.

View file

@ -20,10 +20,10 @@ Set the sandbox provider via CLI flag, [run config TOML](/execution/run-configur
```bash
# CLI flag
arc run start workflow.dot --sandbox local
arc run start workflow.dot --sandbox docker
arc run start workflow.dot --sandbox daytona
arc run start workflow.dot --sandbox exe
arc run workflow.dot --sandbox local
arc run workflow.dot --sandbox docker
arc run workflow.dot --sandbox daytona
arc run workflow.dot --sandbox exe
```
```toml title="run.toml"
@ -90,7 +90,7 @@ The Docker sandbox is configured through the `DockerSandboxConfig`:
By default, the container is destroyed when the run finishes. To keep it alive for debugging:
```bash
arc run start workflow.dot --sandbox docker --preserve-sandbox
arc run workflow.dot --sandbox docker --preserve-sandbox
```
Or in the run config:
@ -167,7 +167,7 @@ When using server defaults, labels are merged — run config labels override def
Connect to a running Daytona sandbox via SSH for live debugging:
```bash
arc run start workflow.dot --sandbox daytona --ssh
arc run workflow.dot --sandbox daytona --ssh
```
This creates temporary SSH credentials (valid for 60 minutes) and prints the connection command.
@ -177,7 +177,7 @@ This creates temporary SSH credentials (valid for 60 minutes) and prints the con
Like Docker, Daytona sandboxes are destroyed on cleanup by default. Use `--preserve-sandbox` to keep them alive:
```bash
arc run start workflow.dot --sandbox daytona --preserve-sandbox
arc run workflow.dot --sandbox daytona --preserve-sandbox
```
Arc prints the sandbox name so you can find it in the [Daytona dashboard](https://app.daytona.io/dashboard/sandboxes).

View file

@ -68,7 +68,7 @@ The `Interviewer` trait has a simple interface — `ask(question) → answer`
The default for CLI runs. On a TTY, the console interviewer uses interactive widgets (arrow-key selection, checkbox multi-select, confirm prompts) via `dialoguer`. When stdin is piped (non-TTY), it falls back to a line-based reader with numbered options.
```bash
arc run start workflow.dot
arc run workflow.dot
# At a human gate:
# ? Approve Plan
# [1] A - [A] Approve
@ -97,7 +97,7 @@ For fully automated runs or CI pipelines, the auto-approve interviewer answers e
Enable it with the `--auto-approve` flag:
```bash
arc run start workflow.dot --auto-approve
arc run workflow.dot --auto-approve
```
## Timeouts
@ -113,4 +113,3 @@ The human handler then checks the node's `human.default_choice` attribute. If se
```dot
approve [shape=hexagon, label="Approve?", human.default_choice="deploy"]
```

View file

@ -140,7 +140,7 @@ cat ~/.arc/logs/01JKXYZ.../live.json
Arc uses the `tracing` crate to write structured logs to `~/.arc/logs/YYYY-MM-DD.log`. Control the log level with the `ARC_LOG` environment variable:
```bash
ARC_LOG=debug arc run start workflow.dot
ARC_LOG=debug arc run workflow.dot
```
| Level | What's logged |
@ -168,14 +168,14 @@ The CLI displays a live progress bar during execution with per-stage status, dur
### Listing runs
Browse your run history with `arc run list`:
Browse your run history with `arc ps`:
```bash
arc run list
arc run list --workflow PlanImplement
arc run list --before 2026-03-01
arc run list --label team=platform
arc run list --json
arc ps
arc ps --workflow PlanImplement
arc ps --before 2026-03-01
arc ps --label team=platform
arc ps --json
```
This scans `~/.arc/logs/` and displays each run's ID, workflow name, status, and start time. Use `--json` for machine-readable output.

View file

@ -111,7 +111,7 @@ Retro: smooth — Successfully implemented the feature
To skip retro generation, pass `--no-retro`:
```bash
arc run start workflow.dot --no-retro
arc run workflow.dot --no-retro
```
### API

View file

@ -6,7 +6,7 @@ description: "Configure workflow runs with TOML files"
A run config is a TOML file that bundles a workflow graph with all the settings needed to execute it — the goal, model, sandbox, setup commands, variables, and hooks. Instead of passing a dozen CLI flags, you check a `.toml` file into version control and launch with a single command:
```bash
arc run start run.toml
arc run run.toml
```
## Minimal example
@ -331,5 +331,5 @@ Arc validates the run config when it loads:
Use `--preflight` to validate a run config without executing it:
```bash
arc run start run.toml --preflight
arc run run.toml --preflight
```

View file

@ -62,13 +62,13 @@ This checks that your API keys, tools, and environment are working correctly.
Try the hello world workflow:
```bash
./target/release/arc run start demo/01-hello.dot
./target/release/arc run demo/01-hello.dot
```
Or a multi-step plan-approve-implement workflow with a human approval gate:
```bash
./target/release/arc run start demo/10-plan-implement.dot
./target/release/arc run demo/10-plan-implement.dot
```
## Start the API server

View file

@ -11,10 +11,10 @@ SSH access is only available with the Daytona sandbox provider. Local, Docker, a
## Enabling SSH access
Pass the `--ssh` flag to `arc run start`:
Pass the `--ssh` flag to `arc run`:
```bash
arc run start workflow.dot --sandbox daytona --ssh
arc run workflow.dot --sandbox daytona --ssh
```
After the sandbox is created, Arc generates temporary SSH credentials (valid for 60 minutes) and prints the connection command:
@ -31,7 +31,7 @@ Copy and run the `ssh` command in a separate terminal to connect.
By default, Daytona sandboxes are destroyed when the workflow finishes. To keep the sandbox running after the workflow completes — so you can continue debugging — combine `--ssh` with `--preserve-sandbox`:
```bash
arc run start workflow.dot --sandbox daytona --ssh --preserve-sandbox
arc run workflow.dot --sandbox daytona --ssh --preserve-sandbox
```
Without `--preserve-sandbox`, the SSH session is terminated when the run ends and the sandbox is cleaned up.

View file

@ -19,7 +19,7 @@ VS Code remote access requires [SSH access](/human-tools/ssh-access), which is o
1. Start a workflow with SSH access and a preserved sandbox:
```bash
arc run start workflow.dot --sandbox daytona --ssh --preserve-sandbox
arc run workflow.dot --sandbox daytona --ssh --preserve-sandbox
```
2. Arc prints the SSH connection command:

View file

@ -24,7 +24,7 @@ description: "Run Arc workflows in sandboxed Daytona cloud environments"
Set the sandbox provider in your run config TOML or via CLI flag:
```bash
arc run start workflow.dot --sandbox daytona
arc run workflow.dot --sandbox daytona
```
```toml title="run.toml"
@ -113,7 +113,7 @@ for your organization.
Connect to a running Daytona sandbox via SSH for live debugging:
```bash
arc run start workflow.dot --sandbox daytona --ssh
arc run workflow.dot --sandbox daytona --ssh
```
This creates temporary SSH credentials (valid for 60 minutes) and prints the connection command:
@ -135,7 +135,7 @@ Each sandbox gets a unique timestamped name (e.g. `arc-20260307-143022-a3f2`) an
To keep a sandbox alive for debugging:
```bash
arc run start workflow.dot --sandbox daytona --preserve-sandbox
arc run workflow.dot --sandbox daytona --preserve-sandbox
```
Or in the run config:

View file

@ -19,7 +19,7 @@ The exe.dev sandbox provider is **in progress** and not yet available for use. T
## Configuration
```bash
arc run start workflow.dot --sandbox exe
arc run workflow.dot --sandbox exe
```
```toml title="run.toml"

View file

@ -21,7 +21,7 @@ The Sprites sandbox provider is **in progress** and not yet available for use. T
## Configuration
```bash
arc run start workflow.dot --sandbox sprites
arc run workflow.dot --sandbox sprites
```
```toml title="run.toml"

View file

@ -12,7 +12,7 @@ At the core of both modes is the `WorkflowRunEngine`. It parses the DOT graph, w
## CLI mode
```bash
arc run start workflow.dot --goal "Implement the login feature"
arc run workflow.dot --goal "Implement the login feature"
```
The CLI parses the workflow, creates the engine with a `ConsoleInterviewer`, and executes synchronously. Events are printed to stderr, progress is shown with terminal indicators, and human-in-the-loop questions are answered via interactive terminal prompts. When the run finishes, the process exits.
@ -91,7 +91,7 @@ The UI provides:
| Feature | CLI mode | API mode |
|---|---|---|
| Command | `arc run start` | `arc serve` |
| Command | `arc run` | `arc serve` |
| Execution | Synchronous, single run | Async, queued with scheduler |
| Concurrency | One run per process | Configurable (default 5) |
| Human-in-the-loop | Terminal prompts | HTTP endpoints |

View file

@ -35,14 +35,14 @@ CLI flags always override `cli.toml` values, which override hardcoded defaults.
---
## `arc run start`
## `arc run`
Launch a workflow from a `.dot` workflow file or `.toml` task config.
```bash
arc run start <WORKFLOW>
arc run start run.toml
arc run start --run-branch arc/run/abc123
arc run <WORKFLOW>
arc run run.toml
arc run --run-branch arc/run/abc123
```
| Argument / Flag | Description |
@ -68,14 +68,14 @@ arc run start --run-branch arc/run/abc123
`--preflight` conflicts with `--resume`, `--run-branch`, and `--dry-run`. `--run-branch` conflicts with `--resume`.
</Note>
## `arc run list`
## `arc ps`
List workflow runs stored in `~/.arc/logs`.
```bash
arc run list
arc run list --workflow deploy --label env=prod
arc run list --json
arc ps
arc ps --workflow deploy --label env=prod
arc ps --json
```
| Flag | Description |
@ -86,14 +86,14 @@ arc run list --json
| `--orphans` | Include orphan directories (no `manifest.json`) |
| `--json` | Output as JSON |
## `arc run prune`
## `arc system prune`
Delete old workflow runs. Dry-run by default — pass `--yes` to actually delete.
```bash
arc run prune --before 2026-01-01
arc run prune --before 2026-01-01 --yes
arc run prune --orphans --yes
arc system prune --before 2026-01-01
arc system prune --before 2026-01-01 --yes
arc system prune --orphans --yes
```
| Flag | Description |

View file

@ -17,7 +17,7 @@ The log level defaults to `info`. Set `ARC_LOG=debug` or pass `--debug` for verb
## Run directories
Each `arc run start` invocation creates a timestamped directory:
Each `arc run` invocation creates a timestamped directory:
```
~/.arc/logs/arc-run-20260307-143022/
@ -81,12 +81,12 @@ Manager nodes that run sub-workflows write a nested `child/` directory containin
## Browsing runs
Use `arc run list` to scan the logs directory and display a table of all runs with their status, workflow name, and timestamps. Pass `--json` for machine-readable output.
Use `arc ps` to scan the logs directory and display a table of all runs with their status, workflow name, and timestamps. Pass `--json` for machine-readable output.
```bash
arc run list
arc run list --json
arc run list --filter workflow=my-workflow
arc ps
arc ps --json
arc ps --filter workflow=my-workflow
```
## Full directory tree

View file

@ -31,7 +31,7 @@ digraph BranchLoop {
```
```bash
arc run start demo/05-branch-loop.dot
arc run demo/05-branch-loop.dot
```
## Command nodes

View file

@ -52,7 +52,7 @@ digraph Ensemble {
```
```bash
arc run start demo/11-ensemble.dot
arc run demo/11-ensemble.dot
```
<Note>

View file

@ -34,7 +34,7 @@ digraph Hello {
Run it:
```bash
arc run start demo/01-hello.dot
arc run demo/01-hello.dot
```
### What's happening
@ -68,7 +68,7 @@ digraph ToolUse {
```
```bash
arc run start demo/02-tool-use.dot
arc run demo/02-tool-use.dot
```
### What's happening
@ -108,7 +108,7 @@ digraph SubAgent {
```
```bash
arc run start demo/03-subagent.dot
arc run demo/03-subagent.dot
```
### What's happening

View file

@ -36,7 +36,7 @@ digraph MultiModel {
```
```bash
arc run start demo/08-multi-model.dot
arc run demo/08-multi-model.dot
```
## Model stylesheets

View file

@ -40,7 +40,7 @@ digraph Parallel {
```
```bash
arc run start demo/06-parallel.dot
arc run demo/06-parallel.dot
```
## Fan-out with the fork node

View file

@ -32,7 +32,7 @@ digraph PlanImplement {
```
```bash
arc run start demo/10-plan-implement.dot
arc run demo/10-plan-implement.dot
```
## Human gates

View file

@ -62,7 +62,7 @@ digraph SubWorkflow {
```
```bash
arc run start demo/12-sub-workflow.dot
arc run demo/12-sub-workflow.dot
```
## The house node

View file

@ -60,7 +60,7 @@ If the timeout elapses without a response, the workflow continues to the default
For testing or fully automated runs, pass `--auto-approve` to skip all human gates:
```bash
arc run start workflow.dot --auto-approve
arc run workflow.dot --auto-approve
```
Auto-approve selects `Yes` for yes/no gates and the first option for multiple-choice gates.

View file

@ -36,7 +36,7 @@ digraph Check {
}
```
When launched with `arc run start run.toml`, Arc replaces `$repo_name`, `$repo_url`, and `$language` with their values before parsing the graph.
When launched with `arc run run.toml`, Arc replaces `$repo_name`, `$repo_url`, and `$language` with their values before parsing the graph.
### Undefined variables

View file

@ -49,19 +49,19 @@
| 39 | workflows/variables/check.dot | PASS | has run.toml |
| 40 | workflows/variables/example.dot | PASS | added start/exit |
## Phase 2: Dry Run (`arc run start --dry-run --auto-approve`)
## Phase 2: Dry Run (`arc run --dry-run --auto-approve`)
| # | File | Status | Notes |
|---|------|--------|-------|
| 1-40 | (all) | | |
## Phase 3: Haiku (`arc run start --model claude-haiku-4-5 --auto-approve`)
## Phase 3: Haiku (`arc run --model claude-haiku-4-5 --auto-approve`)
| # | File | Status | Notes |
|---|------|--------|-------|
| 1-40 | (all) | | |
## Phase 4: Full (`arc run start --auto-approve`)
## Phase 4: Full (`arc run --auto-approve`)
| # | File | Status | Notes |
|---|------|--------|-------|