Skip to content

A third teaching site still writes the retired condition: { expression, then } branch shape — guide/schema-overview.md, outside #3917's fence #5980

Description

@yinlianghui

Filed unassigned from the #3917 implementation (PR retiring the ActionCondition{ expression, then, else } branch shape). Not fixed there — the card, the 2026-08-09 ruling and the dispatch fence all name exactly two teaching sites; this is a third, discovered by a repo-wide sweep. Recording it rather than widening the fenced PR.

The site

content/docs/guide/schema-overview.md:84, inside the "Advanced Actions" shape excerpt:

constaction: ActionSchema={type: 'action',actionType: 'ajax',api: '/api/submit',chain: [...],condition: {expression: '${...}',then: {...}},// ← line 84onSuccess: {...},tracking: {...}};

Line 311 of the same page (- ✅ Conditional execution with the condition property) stays true — condition survives as a predicate gate; only the { expression, then } spelling is retired.

Why it matters after #3917

Before #3917 this line taught a shape that was accepted by the zod schema and then silently ignored at runtime. After #3917 it teaches a shape ActionSchemarefuses (invalid_union on condition), while the two ruled teaching sites now describe the live vocabulary — condition is a gate; a branch is separate actions with mutually exclusive conditions. The page is the "Schema Overview" entry point, so it is a likely first read.

Why no gate catches it

The block is a declared fragment — the page carries <!-- doc-snippet: fragment — a shape excerpt: chain, condition, onSuccessandtrackingare written as literal[...]/{...} ellipses … --> immediately above it, so scripts/check-doc-snippet-types.mjs counts it in coverage but never compiles it. That declaration is correct on its own terms (the block is full of [...] / {...} ellipses and cannot compile), which is exactly why the stale key spelling inside it survives every gate. Measured on 24d653d5e with the #3917 change in the tree: node scripts/check-doc-snippet-types.mjsSemantic phase: 135 of 135 block(s) judged, 0 failed, exit 0, with this line untouched.

Scope of the sweep that found it

Repo-wide, --include=*.md --include=*.mdx, excluding node_modules and CHANGELOGs: the only pages writing then: under a condition were core/enhanced-actions.mdx (fixed in #3917), api/schema-reference.md (fixed in #3917) and this one. content/docs/utilities/runner.mdx matched the same grep on prose ("…expressions, then looking the component type up…") and is a false positive.

Fix

One line, plus a look at whether the fragment marker's reason text should still name condition: write the excerpt's condition as the predicate (condition: '${...}'). Same edit shape as the two sites #3917 already rewrote.

Related: #3917 (the ruling and the two fenced teaching sites), #5174 (the doc-snippet ledger workstream that owns this page's coverage).

Metadata

Metadata

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions