From a519124532e901a3bef4072b9746ca64f46ac213 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Fri, 6 Mar 2026 15:01:21 -0500 Subject: [PATCH] Fix dry-run issues: stub scripts, runner cd, transition weight MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add stub scripts for clone-substack (validate-*.sh, fix-fmt.sh) - Update runner to cd into dot file directory so relative script paths resolve correctly - Add weight=10 to transition-patterns approve edge to avoid review→fix loop in dry-run (mock LLM has no routing directives) 35/36 pass dry-run. clone-substack hits dry-run's hard 10-visit safety limit on its implement loop — expected for complex looping workflows with mock LLMs. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../clone-substack/scripts/fix-fmt.sh | 2 + .../scripts/validate-artifacts.sh | 2 + .../scripts/validate-browser.sh | 2 + .../clone-substack/scripts/validate-build.sh | 2 + .../clone-substack/scripts/validate-fmt.sh | 2 + .../clone-substack/scripts/validate-test.sh | 2 + test/docs/run_tests.sh | 44 +++++++------------ .../transitions/transition-patterns.dot | 2 +- 8 files changed, 29 insertions(+), 29 deletions(-) create mode 100755 test/docs/examples/clone-substack/scripts/fix-fmt.sh create mode 100755 test/docs/examples/clone-substack/scripts/validate-artifacts.sh create mode 100755 test/docs/examples/clone-substack/scripts/validate-browser.sh create mode 100755 test/docs/examples/clone-substack/scripts/validate-build.sh create mode 100755 test/docs/examples/clone-substack/scripts/validate-fmt.sh create mode 100755 test/docs/examples/clone-substack/scripts/validate-test.sh diff --git a/test/docs/examples/clone-substack/scripts/fix-fmt.sh b/test/docs/examples/clone-substack/scripts/fix-fmt.sh new file mode 100755 index 000000000..a0b8dd282 --- /dev/null +++ b/test/docs/examples/clone-substack/scripts/fix-fmt.sh @@ -0,0 +1,2 @@ +#\!/bin/sh +echo "stub: $0" diff --git a/test/docs/examples/clone-substack/scripts/validate-artifacts.sh b/test/docs/examples/clone-substack/scripts/validate-artifacts.sh new file mode 100755 index 000000000..a0b8dd282 --- /dev/null +++ b/test/docs/examples/clone-substack/scripts/validate-artifacts.sh @@ -0,0 +1,2 @@ +#\!/bin/sh +echo "stub: $0" diff --git a/test/docs/examples/clone-substack/scripts/validate-browser.sh b/test/docs/examples/clone-substack/scripts/validate-browser.sh new file mode 100755 index 000000000..a0b8dd282 --- /dev/null +++ b/test/docs/examples/clone-substack/scripts/validate-browser.sh @@ -0,0 +1,2 @@ +#\!/bin/sh +echo "stub: $0" diff --git a/test/docs/examples/clone-substack/scripts/validate-build.sh b/test/docs/examples/clone-substack/scripts/validate-build.sh new file mode 100755 index 000000000..a0b8dd282 --- /dev/null +++ b/test/docs/examples/clone-substack/scripts/validate-build.sh @@ -0,0 +1,2 @@ +#\!/bin/sh +echo "stub: $0" diff --git a/test/docs/examples/clone-substack/scripts/validate-fmt.sh b/test/docs/examples/clone-substack/scripts/validate-fmt.sh new file mode 100755 index 000000000..a0b8dd282 --- /dev/null +++ b/test/docs/examples/clone-substack/scripts/validate-fmt.sh @@ -0,0 +1,2 @@ +#\!/bin/sh +echo "stub: $0" diff --git a/test/docs/examples/clone-substack/scripts/validate-test.sh b/test/docs/examples/clone-substack/scripts/validate-test.sh new file mode 100755 index 000000000..a0b8dd282 --- /dev/null +++ b/test/docs/examples/clone-substack/scripts/validate-test.sh @@ -0,0 +1,2 @@ +#\!/bin/sh +echo "stub: $0" diff --git a/test/docs/run_tests.sh b/test/docs/run_tests.sh index 6008e9189..04c030ea3 100755 --- a/test/docs/run_tests.sh +++ b/test/docs/run_tests.sh @@ -13,14 +13,18 @@ total=0 run_one() { local dot="$1" + local dot_dir + dot_dir="$(dirname "$dot")" + local dot_name + dot_name="$(basename "$dot")" local rel - rel="$(realpath --relative-to="$SCRIPT_DIR" "$dot" 2>/dev/null || echo "$dot")" + rel="$(python3 -c "import os; print(os.path.relpath('$dot', '$SCRIPT_DIR'))")" # Check for companion run.toml (run-.toml in same dir) local stem stem="$(basename "${dot%.dot}")" local toml - toml="$(dirname "$dot")/run-${stem}.toml" + toml="${dot_dir}/run-${stem}.toml" total=$((total + 1)) @@ -34,32 +38,16 @@ run_one() { fail=$((fail + 1)) fi ;; - dry-run) - local target="$dot" - [[ -f "$toml" ]] && target="$toml" - if "$ARC" run start "$target" --dry-run --auto-approve 2>&1; then - echo " PASS $rel" - pass=$((pass + 1)) - else - echo " FAIL $rel" - fail=$((fail + 1)) - fi - ;; - haiku) - local target="$dot" - [[ -f "$toml" ]] && target="$toml" - if "$ARC" run start "$target" --model claude-haiku-4-5 --auto-approve 2>&1; then - echo " PASS $rel" - pass=$((pass + 1)) - else - echo " FAIL $rel" - fail=$((fail + 1)) - fi - ;; - full) - local target="$dot" - [[ -f "$toml" ]] && target="$toml" - if "$ARC" run start "$target" --auto-approve 2>&1; then + dry-run|haiku|full) + # cd into the dot file's directory so relative script paths resolve + local target="$dot_name" + [[ -f "$toml" ]] && target="run-${stem}.toml" + + local flags=(--auto-approve) + [[ "$PHASE" == "dry-run" ]] && flags+=(--dry-run) + [[ "$PHASE" == "haiku" ]] && flags+=(--model claude-haiku-4-5) + + if (cd "$dot_dir" && "$ARC" run start "$target" "${flags[@]}" 2>&1); then echo " PASS $rel" pass=$((pass + 1)) else diff --git a/test/docs/workflows/transitions/transition-patterns.dot b/test/docs/workflows/transitions/transition-patterns.dot index 623c8467c..898f452a0 100644 --- a/test/docs/workflows/transitions/transition-patterns.dot +++ b/test/docs/workflows/transitions/transition-patterns.dot @@ -42,7 +42,7 @@ digraph TransitionPatterns { start -> plan -> review review -> fix [label="Fix"] - review -> gate [label="Approve"] + review -> gate [label="Approve", weight=10] fix -> review