Skip to content

test(tutorials): re-enable orchestrate-a-sonnet-with-workflows - #893

Merged
arantespp merged 2 commits into
mainfrom
claude/soat-unignore-sonnet-workflows
Aug 8, 2026
Merged

test(tutorials): re-enable orchestrate-a-sonnet-with-workflows#893
arantespp merged 2 commits into
mainfrom
claude/soat-unignore-sonnet-workflows

Conversation

@arantespp

Copy link
Copy Markdown
Member

Summary

Removes the last temporary entry from tests/.tutorialsignore. Its causes were fixed in #881; what the entry was waiting on was a green run, and Tutorials Tests on this PR is that run.

Recap of what #881 fixed:

Cause Effect
Provider pinned llama3.2, which this stack never pulls every generation failed outright
# → 400 sat after its command, so it bound to the next one expected guard rejection went unannotated, failing the run
No MAX_COMPLETION_TOKENS on the tutorials stack output unbounded; wall-clock swung by minutes
revise re-entered create_text ten generations per run instead of six
No on_failure on dispatch states a failed generation stalled the card with no route out

Verified before re-enabling

Checked statically against the merged file, focusing on the annotation placement that broke it before:

  • All three annotations (# → retry 90, # → retry 40, # → 400) sit on their own line immediately before their command — the only placement tests/tutorials-tests.sh honors. Confirmed by reading the lines, not by assuming.
  • STATES and TRANSITIONS both parse as JSON once '"$AGENT_ID"' is substituted. (A first pass reported STATES invalid; that was my substitution replacing an already-quoted interpolation and producing ""X"" — an artifact, not a defect.)
  • Single-quote parity even across all 10 CLI blocks, so no comment desyncs the runner's line accumulator.
  • All 10 tab groups carry cli/sdk/curl; zero SOAT_URL; zero llama3.2; on_failure on every dispatch state; revisestanza_4.

Ignore list after this change

Three entries, all permanent:

Entry Why
index Landing page — no commands to run
connect-third-party-llms Needs real xAI/OpenAI/Anthropic/Bedrock credentials
call-aws-and-gcp-apis-from-an-agent Needs real AWS credentials or a GCP service account

That takes the suite from 24 tutorials to 25 of 28 files running in CI.

Risk

Timing, not correctness. The forward chain is five sequential generations against qwen2.5:0.5b on a CPU-only runner, now capped at 256 output tokens, with a 90-attempt (~90s) retry budget; the revise pass is one generation with 40. At the ~9s/completion the smoke profiling suggests, five generations land around 45s — inside budget, but not by a wide margin.

If it times out rather than failing outright, the fix is raising those retry budgets, not re-ignoring the tutorial. A genuine failure (a stalled card, a dispatch error) would be a different signal and worth reading properly.

As with #890, one green run is a first-run signal, not a stability signal.

Related: #881, #890

🤖 Generated with Claude Code

https://claude.ai/code/session_01AjeWpxDqRDtkSv1mCDspf9


Generated by Claude Code

Removes the last temporary ignore entry. Its causes were fixed in #881 —
the unpulled `llama3.2` model, the annotation bound to the wrong command,
the missing `MAX_COMPLETION_TOKENS`, `revise` re-entering `create_text`
for ten generations instead of six, and no `on_failure` on the dispatch
states. What the entry was waiting on was a green run, and CI on this PR
is that run.

Verified statically against the merged file first, since the annotation
placement is the bug class that broke it before:

- all three annotations (`# → retry 90`, `# → retry 40`, `# → 400`) sit on
  their own line immediately before the command they apply to, which is
  the only placement tests/tutorials-tests.sh honors;
- `STATES` and `TRANSITIONS` both parse as JSON once `'"$AGENT_ID"'` is
  substituted;
- single-quote parity is even in all 10 CLI blocks, so no comment
  desyncs the runner's line accumulator;
- all 10 tab groups carry cli/sdk/curl; zero `SOAT_URL`; zero `llama3.2`;
- `on_failure` present on every dispatch state; `revise` targets
  `stanza_4`, so the rework pass costs one generation rather than five.

The ignore list is now three entries, all of them permanent: `index` (a
landing page with no commands) and two tutorials that need real
third-party or cloud credentials CI should not hold.

Timing is the remaining risk, not correctness. The forward chain is five
sequential generations against `qwen2.5:0.5b` on a CPU-only runner,
capped at 256 output tokens, with a 90-attempt (~90s) retry budget; the
revise pass is one generation with 40. If it times out rather than
failing, raising those budgets is the fix, not re-ignoring.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AjeWpxDqRDtkSv1mCDspf9
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown

Deploy Outputs

Package Stack Output Key Output Value
@soat/website SoatWebsite-claude-soat-unignore-sonnet-workflows BucketWebsiteURL http://soatwebsite-claude-soat-unignore-sonn-staticbucket-61afbakgmkra.s3-website-us-east-1.amazonaws.com

The first CI run of the re-enabled tutorial timed out rather than failing:
the card reached `review` normally, but 90 attempts ran out before it got
there. Server logs show the whole chain completing.

  10:07:11  start
  10:07:44  to_stanza_1  (+32s)
  10:08:55  to_stanza_2  (+72s)
  10:09:32  to_stanza_3  (+36s)
  10:09:54  to_stanza_4  (+22s)
  10:10:10  to_review    (+16s)
  ---------------------------------
  forward chain: 179s

So the workflow logic and every #881 fix are sound; only the budget was
wrong. It was wrong because I sized it by extrapolating the ~9s/completion
implied by the smoke-suite profiling in tests.md. That number does not
transfer: these prompts carry the accumulated poem forward, so input grows
each hop, and per-generation cost here ranged 16-72s. A poll attempt also
costs its 1s sleep plus a CLI round trip, so 90 attempts bought roughly
135s of wall-clock against a 179s chain.

Forward chain 90 -> 240 attempts (~2x the observed total, so ordinary
variance does not fail the run) and the revise pass 40 -> 120. The SDK
tab's `waitForState` loop is raised to match. A budget is a ceiling, not a
cost: the loop exits as soon as the card lands.

The measured timings are now recorded in the step's prose, so the next
person sizing this has data instead of an extrapolation.

Worth weighing separately: this tutorial contributes about three minutes
of Ollama time to an already Ollama-bound job. Cutting the chain from four
stanzas to two would roughly halve that, at the cost of the Shakespearean
structure the tutorial is built around.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AjeWpxDqRDtkSv1mCDspf9
@arantespp
arantespp merged commit 8c62b00 into main Aug 8, 2026
11 checks passed
@arantespp
arantespp deleted the claude/soat-unignore-sonnet-workflows branch August 8, 2026 10:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants