Use 4-backtick fences for plan section to prevent LLM-generated
triple backticks from breaking the markdown. Fix singular/plural
grammar for stage, node, and edge counts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reject negative durations in parse_duration (i64 -> u64) to prevent
future cutoff that would delete everything
- Remove orphans flag from has_explicit_filters since --orphans is
additive, not restrictive, and shouldn't disable the 24h staleness guard
- Use parsed label_filters instead of raw args.filter.label so malformed
labels that get silently dropped don't incorrectly disable staleness
- Replace derived Serialize with custom impl delegating to Display for
RunStatus, fixing JSON serialization (was producing null/tagged objects
instead of flat strings)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show colored "error:" prefix with cause chain for all CLI errors. When a
workflow name isn't found in a project with arc.toml, list available
workflows and suggest the closest match using Levenshtein distance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users can now set `[arc] retro = false` in arc.toml instead of passing
`--no-retro` on every `arc run` invocation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
`arc run my-workflow` now resolves to `{arc_root}/workflows/my-workflow/workflow.toml`
when an arc.toml project config exists. Args with file extensions are passed through
unchanged, and missing workflows fall back to the literal arg.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Before worktree creation, compare local and remote ref SHAs to avoid
unnecessary pushes. When already in sync, log at INFO and print nothing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The same timeout(spawn_blocking(git_push)) pattern with a 4-arm match on
Ok(Ok(Ok(()))) appeared in 3 places. Extract a helper that flattens the
triple Result into a single BlockingPushError enum, and extract shared
push error-handling into run_git_push.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When `arc run` creates a worktree, unpushed local commits would appear
in the PR diff even though they didn't originate from the workflow run.
This pushes the user's current branch before worktree setup so the
remote base matches the local HEAD.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Return a PullRequestRecord struct from maybe_open_pull_request instead
of a bare URL, persist it as JSON in the run/logs directory, and strip
markdown heading prefixes (# / ##) from generated PR titles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
arc --version now shows "arc 0.1.0 (abc1234 2026-03-09)" and
arc run displays a Version line in the run header.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allows creating a pull request after the fact for any completed workflow
run, using the persisted manifest, conclusion, and diff from the run's
log directory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use the first line of the goal as the PR title (not the full goal),
truncated to 120 chars. Truncate the PR body to 65,536 chars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CLAUDE.md is often symlinked to AGENTS.md, causing identical content
to be loaded twice and wasting ~50% of the 32KB budget. Track seen
content in a HashSet and skip duplicates before the budget check.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
INFO summary (files + total_bytes) on every call, WARN for
empty files, truncation, and budget exhaustion, DEBUG per-file
detail. Removes redundant debug! calls at call sites.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously, resolve_file_ref only inlined @file references for files
not tracked by git, causing validation failures for committed workflow
prompt files like @prompts/simplify.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously, `arc validate` passed .toml files directly to the DOT parser,
causing a cryptic "grammar error: Tag" parse failure. Now it resolves the
graph path from the TOML config, matching `arc run` behavior.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Disable the osxkeychain credential helper during programmatic pushes
so only inline URL credentials are used. This prevents potential
interference from stale stored credentials causing "Repository not
found" errors on private repos.
Also upgrade the log line to INFO with a redacted URL for better
diagnostics when pushes fail.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add extra parent() traversal in build.rs, include_str!, and test
fixture paths that navigate from crate directories to the repo root.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Updated: package.json workspaces, tsconfig path alias, CI workflow
paths, Dockerfile COPY, AGENTS.md, and doc references.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Updated: Cargo.toml workspace members, CI workflow paths, Dockerfile
COPY, AGENTS.md, skill mapping, and doc references.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>