Skip to content

test(tutorials): correct a stale ignore rationale and re-enable the review panel - #890

Merged
arantespp merged 1 commit into
mainfrom
claude/soat-tutorials-unignore
Aug 8, 2026
Merged

test(tutorials): correct a stale ignore rationale and re-enable the review panel#890
arantespp merged 1 commit into
mainfrom
claude/soat-tutorials-unignore

Conversation

@arantespp

Copy link
Copy Markdown
Member

Summary

Two changes to tests/.tutorialsignore.

orchestrate-a-sonnet-with-workflows — comment corrected, entry kept

The rationale was wrong, and wrong in a way that discouraged anyone from retrying the tutorial. It claimed inherent nondeterminism from on_enter agent dispatch, "same class as review-panel-discussion." Neither half held: the tutorial declares no output_schema anywhere and every on_complete is {"when": true}, so the card advances on any completion regardless of content. Nothing in it depended on model quality.

The real causes were mundane, and all are fixed on main (#881):

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
Stack had no MAX_COMPLETION_TOKENS output unbounded, wall-clock swung by minutes
revise re-entered create_text ten generations per run instead of six
No state declared on_failure a failed generation stalled the card with no route out

The entry stays because what is missing now is evidence, not a fix — nothing has executed the tutorial end to end since those landed. The comment now says exactly that and names the command that would settle it (TUTORIAL_ID=orchestrate-a-sonnet-with-workflows).

review-panel-discussion — removed, so CI runs it again

Its documented cause is unchanged and unaddressed: both agent nodes declare an output_schema, and buildStructuredOutput (outputSchema.ts) validates the model's JSON with ajv, so a 0.5b model emitting a non-conforming object fails the generation and the run. This re-enables it to find out whether that still reproduces — not on the strength of a fix.

I looked for the provider-boundary fix .claude/rules/tests.md prefers over retrying a generation, and did not find one I could justify: ollamaToolChoiceProxy.mjs already forwards bodies verbatim, so whatever the AI SDK sends for Output.object reaches Ollama untouched. Bridging structured output there would be speculative without being able to run the stack, so I did not invent it.

What is and is not verified

Static checks on review-panel-discussion pass, which rules out the bug classes that actually broke the workflows tutorial:

  • 11 CLI blocks, single-quote parity even in every one (no apostrophe-in-comment desync)
  • Both multi-line JSON payloads (ORCH_NODES, ORCH_EDGES) parse after shell interpolation
  • All 11 <Tabs> groups carry cli/sdk/curl
  • Correct qwen2.5:0.5b model; zero SOAT_URL; no annotations to misplace

The runtime question is not verified. No Docker daemon is available in the environment this was written in, so the Tutorials Tests job on this PR is the experiment. Two possible outcomes:

  • Green — the entry stays removed, and the ignore list shrinks to three real entries.
  • Red — the honest conclusion is that output_schema × qwen2.5:0.5b is still the blocker. Revert is re-adding one line; the follow-up would then be either dropping the schemas (which changes what the tutorial teaches) or implementing constrained decoding at the proxy.

Note this is a first-run signal, not a stability signal — the original comment asked for repeated green runs before trusting it, which one PR run does not provide.

Ignore list after this change

Entry Status
index permanent — landing page, no commands
connect-third-party-llms permanent — needs real third-party credentials
orchestrate-a-sonnet-with-workflows temporary — causes fixed, awaiting green runs
call-aws-and-gcp-apis-from-an-agent permanent — needs real AWS/GCP credentials

One gap I left alone to keep this focused: connect-third-party-llms is the only entry with no explanatory comment, and it doubles as the example in the file header, which reads confusingly.

Related: #881

🤖 Generated with Claude Code

https://claude.ai/code/session_01AjeWpxDqRDtkSv1mCDspf9


Generated by Claude Code

…eview panel

Two changes to tests/.tutorialsignore.

**orchestrate-a-sonnet-with-workflows** — the comment was wrong, and it was
wrong in a way that discouraged anyone from retrying the tutorial. It
claimed the tutorial was inherently nondeterministic because of `on_enter`
agent dispatch, "same class as review-panel-discussion". Neither half held:
the tutorial declares no `output_schema` anywhere and every `on_complete`
is `{"when": true}`, so the card advances on any completion regardless of
what the model produced. Nothing in it depended on model quality.

The real causes were mundane and are fixed on main (#881): the provider
pinned `llama3.2`, which this stack never pulls; the `# → 400` annotation
sat after its command so it bound to the next one; the stack had no
`MAX_COMPLETION_TOKENS`, leaving output unbounded; `revise` re-entered
`create_text` for ten generations per run instead of six; and no state
declared `on_failure`, so a failed generation stalled the card.

The entry stays because what is missing now is evidence, not a fix — the
tutorial has not been executed end to end since those landed. The comment
says so and names the command that would settle it.

**review-panel-discussion** — removed from the ignore list, so CI runs it
again. Its documented cause is unchanged and unaddressed: both agent nodes
declare an `output_schema` and `buildStructuredOutput` validates the model's
JSON with ajv, so a 0.5b model that emits a non-conforming object fails the
generation and the run. This re-enables it to find out whether that still
reproduces, rather than on the strength of a fix.

Static checks on the tutorial pass — 11 CLI blocks with even single-quote
parity, both JSON payloads valid, all three tabs on every block, the
correct `qwen2.5:0.5b` model, no `SOAT_URL`, no annotations — so a
structural failure of the kind that broke the workflows tutorial is ruled
out. The runtime question is not.

If it flakes, the revert is re-adding one line.

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-tutorials-unignore BucketWebsiteURL http://soatwebsite-claude-soat-tutorials-uni-staticbucket-54tyormsxaqo.s3-website-us-east-1.amazonaws.com

@arantespp
arantespp merged commit 9d50618 into main Aug 8, 2026
11 checks passed
@arantespp
arantespp deleted the claude/soat-tutorials-unignore branch August 8, 2026 02:34
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