Skip to content

Commit 0b8097d

Browse files
TMHSDigitalclaude
andauthored
fix(ci): run every documented example falsifier in smoke (#443)
Example READMEs documented falsifiers that no job ran. Only one flag per row was in the catalog, and the weekly sweep reads only showcase/. Any of those checks could stop failing unnoticed. Add the 19 remaining non-render falsifiers to their catalog rows: - cross-version-property-delete --unset-instead (7) - gn-zone-iterate --no-offset (4), --unpair-foreach (5), --foreach-main (5) - gn-sim-fountain --euler (4), --prebake-trap (5), --calc-to-frame (6) - gn-bundle-roundtrip --mismatch (3), --bypass (4), --mismatch-mark (5) - exit-pre-sidecar --no-handler, --silent-handler, --wrong-text, --write-in-main (sidecar must fail) - ngon-triangulate --skip-triangulate (4), unapplied-scale-gltf --bake (4), coincident-vert-weld --weld (4) - usd-export-evaluation-mode --evaluation-mode VIEWPORT (4) - gn-modifier-inputs --api dict (5, from 5.2; exits 0 on 5.1) They run on every smoke leg, so they run at least weekly. The READMEs' "Smoke does not pass" sentences now list them as catalog falsifiers, which check_smoke_catalog enforces. The ROADMAP item that deferred this is removed. Render-path diagnostics (--falsify, --close-camera, --probe) and mode switches (--force-run, --obj) stay out of smoke. Closes #362 Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent a31d5eb commit 0b8097d

17 files changed

Lines changed: 29 additions & 27 deletions

File tree

‎ROADMAP.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ Not committed; open subjects only. Remove a subject when it ships (CLAUDE.md §
169169
- Tighten inverted smoke canaries: assert the expected `[FAIL]` marker text (`skipped on ... should run` / `missing post-exit sidecar`) alongside wrapper exit 1, so a canary that dies for the wrong reason does not satisfy the gate
170170
- Overlapping / mirrored UV islands as a *shipped* pathology (not lightmap `--falsify`): SAT hits matching a constructed overlap, then glTF TEXCOORD survival. Deferred — `lightmap-uv-channel` already owns the zero-overlap gate.
171171
- Vendor CC0 asset fixtures (Kenney, Quaternius, ambientCG only — no aggregators) as `.glb` not `.blend`, with per-fixture provenance records mirroring the Free-Game-Dev-Assets frontmatter schema. Permitted only where the assertion is an invariant over the fixture rather than a measurement of it. Deferred pending a decision on repo weight and CI fetch policy.
172-
- Falsification flags on shipped examples (Phases 6–8 `--skip-delete` / `--unpair-*` / `--bypass`, Phase 9 `--silent-handler` / `--wrong-text`, Phase 10 `--no-dissolve` / `--identity` / `--no-duplicate`) were proven local-Windows only — chat and `.scratch`, not CI history. Decide later whether a cron should exercise them or whether flags in the scripts are sufficient record.
173172
- `modal-operators` skill -- `invoke` returning `RUNNING_MODAL`, the `modal()` event handler, modal cancellation patterns
174173
- `usd-pipelines` skill -- USD export options, `evaluation_mode`, instancing, the USD vs glTF tradeoffs
175174
- `mathutils-patterns` skill -- `mathutils.Vector`, `Matrix`, `Quaternion`, common transforms, the `@` operator

‎docs/gallery/cross-version-property-delete/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ <h2 id="run">Run<a class="anchor" href="#run" aria-label="Link to this section">
7979
<h2 id="exit-codes">Exit codes<a class="anchor" href="#exit-codes" aria-label="Link to this section">#</a></h2>
8080
<p>Per-script sequential checks. <code>9</code> is a valid check code; there is no rule against it. <code>10</code> is the shared framing helper.</p>
8181
<div class="table-wrap"><table><thead><tr><th scope="col">Code</th><th scope="col">Meaning</th></tr></thead><tbody><tr><td>0</td><td>Success</td></tr><tr><td>1</td><td>Uncaught exception (FATAL wrapper)</td></tr><tr><td>2</td><td>argparse / usage; also an active object existed after the data-API build</td></tr><tr><td>3</td><td>Custom ID property did not land</td></tr><tr><td>4</td><td><code>property_unset</code> on a custom ID key did not TypeError, or it deleted the key</td></tr><tr><td>5</td><td><code>del</code> did not report removal</td></tr><tr><td>6</td><td>Keep lamp lost the ID property</td></tr><tr><td>7</td><td>Clear lamp still has the ID property (<code>--skip-delete</code> / <code>--unset-instead</code> land here)</td></tr><tr><td>8</td><td>Registered-prop contract broke: attribute/<code>property_unset</code> failed, the prop sits on the wrong side of the 5.0 ID-property split, or <code>scene[&quot;name&quot;]</code> raised <code>KeyError</code> (<code>--subscript-registered</code> on 5.0+; exits 0 on 4.5, where subscript access still works)</td></tr><tr><td>10</td><td>Gallery framing violation</td></tr><tr><td>12</td><td><code>--output</code> produced no file</td></tr></tbody></table></div>
82-
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code> or <code>--unset-instead</code>. Its catalog falsifiers are <code>--skip-delete</code> (expects exit 7); <code>--subscript-registered</code> (expects exit 8; 5.0+ only; SKIP on older Blender).</p>
82+
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code>. Its catalog falsifiers are <code>--skip-delete</code> (expects exit 7); <code>--unset-instead</code> (expects exit 7); <code>--subscript-registered</code> (expects exit 8; 5.0+ only; SKIP on older Blender).</p>
8383
</section>
8484
<section class="detail-section src" id="source">
8585
<h2>Source</h2>

‎docs/gallery/gn-modifier-inputs/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ <h2 id="run">Run<a class="anchor" href="#run" aria-label="Link to this section">
8484
<h2 id="exit-codes">Exit codes<a class="anchor" href="#exit-codes" aria-label="Link to this section">#</a></h2>
8585
<p>Per-script sequential checks. <code>9</code> is a valid check code; there is no rule against it. <code>10</code> is the shared framing helper.</p>
8686
<div class="table-wrap"><table><thead><tr><th scope="col">Code</th><th scope="col">Meaning</th></tr></thead><tbody><tr><td>0</td><td>Success</td></tr><tr><td>1</td><td>Uncaught exception (FATAL wrapper)</td></tr><tr><td>2</td><td>argparse / usage</td></tr><tr><td>3</td><td>Height input identifier missing on the tree interface</td></tr><tr><td>4</td><td>Modifiers do not share one node_group</td></tr><tr><td>5</td><td>Version-path write raised (<code>--api dict</code> on 5.2, <code>--api rna</code> on 4.5)</td></tr><tr><td>6</td><td>Version-path read raised</td></tr><tr><td>7</td><td>Readback ≠ intended height (<code>--same-height</code> lands here)</td></tr><tr><td>8</td><td>Evaluated Z-extent ≠ intended height</td></tr><tr><td>9</td><td>Evaluated mesh not sitting on z=0</td></tr><tr><td>10</td><td>Gallery framing violation</td></tr><tr><td>11</td><td>Evaluated extents not distinct</td></tr><tr><td>12</td><td><code>--output</code> produced no file</td></tr></tbody></table></div>
87-
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code> or <code>--api dict</code>/<code>rna</code>. Its catalog falsifier is <code>--same-height</code> (expects exit 7).</p>
87+
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code>. Forcing the RNA path is not smoke-tested (it raises on 4.5 and is the default on 5.2). Its catalog falsifiers are <code>--same-height</code> (expects exit 7) and <code>--api dict</code> (expects exit 5; 5.2+ only, where the dict write raises; SKIP on older Blender, where it exits 0).</p>
8888
<h2 id="falsification">Falsification<a class="anchor" href="#falsification" aria-label="Link to this section">#</a></h2>
8989
<div class="table-wrap"><table><thead><tr><th scope="col">Probe</th><th scope="col">Binary</th><th scope="col">Result</th></tr></thead><tbody><tr><td><code>--api dict</code></td><td>5.2.1 LTS</td><td>exit 5, <code>TypeError: id properties not supported for this type</code></td></tr><tr><td><code>--api rna</code></td><td>4.5.11 LTS</td><td>exit 5, <code>AttributeError: &#x27;NodesModifier&#x27; object has no attribute &#x27;properties&#x27;</code></td></tr><tr><td><code>--api dict</code></td><td>5.1.2</td><td>exit 0 (5.1 still takes the dict form)</td></tr><tr><td><code>--api rna</code></td><td>5.1.2</td><td>exit 5, <code>AttributeError: &#x27;NodesModifier&#x27; object has no attribute &#x27;properties&#x27;</code></td></tr><tr><td><code>--same-height</code></td><td>5.2.1, 5.1.2, 4.5.11</td><td>exit 7, <code>readback 1.0 != written 2.0 on SpiralStair.H2</code></td></tr><tr><td><code>RAIL_H = -0.5</code> (treads climb past the post)</td><td>5.2.1, 4.5.11</td><td>exit 8, <code>evaluated Z-extent 1.934334 != height 1.0</code></td></tr><tr><td><code>--api auto</code></td><td>5.2.1, 5.1.2, 4.5.11</td><td>exit 0, extents 1.000 / 2.000 / 3.000</td></tr></tbody></table></div>
9090
</section>

‎docs/gallery/gn-sim-fountain/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ <h2 id="falsifiers">Falsifiers<a class="anchor" href="#falsifiers" aria-label="L
8484
<h2 id="exit-codes">Exit codes<a class="anchor" href="#exit-codes" aria-label="Link to this section">#</a></h2>
8585
<p>Per-script sequential checks. <code>10</code> is the shared framing helper.</p>
8686
<div class="table-wrap"><table><thead><tr><th scope="col">Code</th><th scope="col">Meaning</th></tr></thead><tbody><tr><td>0</td><td>Success</td></tr><tr><td>1</td><td>Uncaught exception (FATAL wrapper)</td></tr><tr><td>2</td><td>argparse / usage</td></tr><tr><td>3</td><td>Point count or frame-start state off the launch data</td></tr><tr><td>4</td><td>Stepped frames off the closed-form arc (position or velocity)</td></tr><tr><td>5</td><td>Direct jump did not reproduce the one-step trap</td></tr><tr><td>6</td><td>After the cache fill, random-access frames off the arc (or fill not <code>FINISHED</code>)</td></tr><tr><td>10</td><td>Gallery framing violation</td></tr><tr><td>12</td><td><code>--output</code> produced no file</td></tr></tbody></table></div>
87-
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code> or any falsifier.</p>
87+
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code>. Its catalog falsifiers are the three in the table above: <code>--euler</code> (expects exit 4), <code>--prebake-trap</code> (expects exit 5) and <code>--calc-to-frame</code> (expects exit 6).</p>
8888
</section>
8989
<section class="detail-section src" id="source">
9090
<h2>Source</h2>

‎docs/gallery/gn-zone-iterate/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ <h2 id="run">Run<a class="anchor" href="#run" aria-label="Link to this section">
7777
<h2 id="exit-codes">Exit codes<a class="anchor" href="#exit-codes" aria-label="Link to this section">#</a></h2>
7878
<p>Per-script sequential checks. <code>9</code> is a valid check code; there is no rule against it. <code>10</code> is the shared framing helper.</p>
7979
<div class="table-wrap"><table><thead><tr><th scope="col">Code</th><th scope="col">Meaning</th></tr></thead><tbody><tr><td>0</td><td>Success</td></tr><tr><td>1</td><td>Uncaught exception (FATAL wrapper)</td></tr><tr><td>2</td><td>argparse / usage; also carrier mesh was rewritten</td></tr><tr><td>3</td><td>Repeat evaluated vert/face count off closed form</td></tr><tr><td>4</td><td>Repeat X-centers off closed form</td></tr><tr><td>5</td><td>For Each evaluated vert/face count off closed form</td></tr><tr><td>6</td><td>For Each Z-centers off closed form</td></tr><tr><td>10</td><td>Gallery framing violation</td></tr><tr><td>12</td><td><code>--output</code> produced no file</td></tr></tbody></table></div>
80-
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code>, <code>--no-offset</code>, or <code>--unpair-foreach</code>. Its catalog falsifier is <code>--unpair-repeat</code> (expects exit 3).</p>
80+
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code>. Its catalog falsifiers are <code>--unpair-repeat</code> (expects exit 3), <code>--no-offset</code> (expects exit 4), <code>--unpair-foreach</code> and <code>--foreach-main</code> (each expects exit 5).</p>
8181
</section>
8282
<section class="detail-section src" id="source">
8383
<h2>Source</h2>

‎docs/gallery/usd-export-evaluation-mode/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ <h2 id="run">Run<a class="anchor" href="#run" aria-label="Link to this section">
7474
<h2 id="exit-codes">Exit codes<a class="anchor" href="#exit-codes" aria-label="Link to this section">#</a></h2>
7575
<p>Per-script sequential checks. <code>9</code> is a valid check code; there is no rule against it. <code>10</code> is the shared framing helper.</p>
7676
<div class="table-wrap"><table><thead><tr><th scope="col">Code</th><th scope="col">Meaning</th></tr></thead><tbody><tr><td>0</td><td>Success</td></tr><tr><td>1</td><td>Uncaught exception (FATAL wrapper)</td></tr><tr><td>2</td><td>argparse / usage; also base cube verts ≠ 8</td></tr><tr><td>3</td><td>VIEWPORT TESSELLATE point/face count off closed form</td></tr><tr><td>4</td><td>RENDER TESSELLATE point/face count or scheme off closed form</td></tr><tr><td>5</td><td>BEST_MATCH cage point count or scheme off</td></tr><tr><td>6</td><td>RENDER and VIEWPORT USDA point counts are identical (check), or the re-imported RENDER goblet is not denser than the VIEWPORT one (<code>--output</code>)</td></tr><tr><td>10</td><td>Gallery framing violation</td></tr><tr><td>12</td><td><code>--output</code> produced no file</td></tr></tbody></table></div>
77-
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code> or <code>--evaluation-mode</code>. Its catalog falsifier is <code>--subdivision BEST_MATCH</code> (expects exit 4).</p>
77+
<p>The <code>blender-smoke</code> workflow runs the check on Blender 5.2 LTS and 4.5 LTS (5.1 on the weekly cron, the <code>needs-5.1</code> PR label, or manual dispatch). Smoke does not pass <code>--output</code>. Its catalog falsifiers are <code>--subdivision BEST_MATCH</code> (expects exit 4) and <code>--evaluation-mode VIEWPORT</code> (expects exit 4).</p>
7878
</section>
7979
<section class="detail-section src" id="source">
8080
<h2>Source</h2>

‎examples/coincident-vert-weld/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,4 @@ against it.
8888

8989
The `blender-smoke` workflow runs the check on Blender 5.2 LTS and 4.5 LTS
9090
(5.1 on the weekly cron, the `needs-5.1` PR label, or manual dispatch).
91-
Smoke does not pass `--weld`. Its catalog falsifier is `--no-duplicate` (expects exit 3).
91+
Its catalog falsifiers are `--no-duplicate` (expects exit 3) and `--weld` (expects exit 4).

‎examples/cross-version-property-delete/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,4 @@ against it. `10` is the shared framing helper.
9090

9191
The `blender-smoke` workflow runs the check on Blender 5.2 LTS and 4.5 LTS
9292
(5.1 on the weekly cron, the `needs-5.1` PR label, or manual dispatch).
93-
Smoke does not pass `--output` or `--unset-instead`. Its catalog falsifiers are `--skip-delete` (expects exit 7); `--subscript-registered` (expects exit 8; 5.0+ only; SKIP on older Blender).
93+
Smoke does not pass `--output`. Its catalog falsifiers are `--skip-delete` (expects exit 7); `--unset-instead` (expects exit 7); `--subscript-registered` (expects exit 8; 5.0+ only; SKIP on older Blender).

‎examples/exit-pre-sidecar/README.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,6 @@ against it. `77` is the smoke skip protocol, not a product check.
9696

9797
The `blender-smoke` workflow runs the check on Blender 5.2 LTS (5.1 on the
9898
weekly cron, the `needs-5.1` PR label, or manual dispatch) and skips on 4.5
99-
LTS. Smoke does not pass the falsifier flags.
99+
LTS. Every falsifier in the table above is a catalog falsifier: the harness
100+
must fail the sidecar for `--atexit-instead`, `--no-handler`, `--silent-handler`,
101+
`--wrong-text` and `--write-in-main`. Smoke does not pass `--force-run`.

‎examples/gn-bundle-roundtrip/README.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,5 +102,6 @@ Measured on 4.5.11 / 5.0.1 / 5.1.2 / 5.2.1:
102102

103103
The `blender-smoke` workflow runs the check on Blender 5.2 LTS (5.1 on the
104104
weekly cron, the `needs-5.1` PR label, or manual dispatch) and skips on 4.5
105-
LTS. Its catalog falsifier is `--legacy-rna` (expects exit 7). Smoke does
106-
not pass `--bypass`, `--mismatch`, `--mismatch-mark`, or `--force-run`.
105+
LTS. Its catalog falsifiers are `--legacy-rna` (expects exit 7), `--mismatch`
106+
(expects exit 3), `--bypass` (expects exit 4) and `--mismatch-mark` (expects
107+
exit 5). Smoke does not pass `--force-run`.

0 commit comments

Comments
 (0)