Skip to content

feat: AI asset pipeline track, Phase 3 (pipeline template) - #135

Merged
TMHSDigital merged 3 commits into
mainfrom
feat/ai-asset-pipeline-phase-3
Sep 12, 2026
Merged

feat: AI asset pipeline track, Phase 3 (pipeline template)#135
TMHSDigital merged 3 commits into
mainfrom
feat/ai-asset-pipeline-phase-3

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Third template: templates/ai-asset-pipeline-template/. Headless GLB in, engine-ready LOD set plus optional collider out. Composes ai-mesh-cleanup, lod-decimate-chain, collision-hull-proxy, and engine-export-presets by duplicating the named snippets (templates are not a package; same convention as snippets/lod_chain.py).

Does not touch VERSION, CHANGELOG.md, release.yml, the smoke version matrix, examples, or LICENSE.

Follow-up: #134 (add 5.1 to the PR smoke matrix). This PR does not change that matrix.

Part A (leftover branch, done locally)

feat/property-delete-and-usd-witnesses at b5cac0b was squash-merged as PR #126 (MERGED 2026-09-09, merge SHA 764c90f). Content is on main (examples/cross-version-property-delete/, examples/usd-export-evaluation-mode/). Local leftover deleted with git branch -D. Not unmerged work.

Exit-code convention (inspection, then live-run of the codes)

There is no repo-wide exit-code table. examples/export-preset-axis/ exit 9 is example-local.

This template conforms to templates/headless-batch-script-template/script.py and its README: 0 success, 2+ distinct failure modes, argparse usage also exits 2. Documented in templates/ai-asset-pipeline-template/README.md and the pipeline.py header.

Code Meaning
0 Success
2 Input missing, or argparse rejected flags (including unsupported --preset)
3 Input is not a readable GLB
4 --lod-budgets missing, non-positive, or not strictly decreasing
5 Import produced no mesh (not canaried with a committed GLB; inspection + code path)
6 outdir is not a directory, or export wrote nothing / raised

Test plan

  • Validate + drift-check green on this PR
  • Blender 5.2 smoke green (CI)
  • Blender 4.5 smoke green (CI)
  • Socket checks not pending/failing
  • 5.1 is not in the PR matrix; local result below is not CI evidence

Evidence labels

Live-run-proven (local Windows)

Binaries (each blender.exe --version):

  • .scratch/blender-4.5.11-windows-x64/blender.exe4.5.11 LTS (4db51e9d1e1e)
  • .scratch/blender-5.1.2-windows-x64/blender.exe5.1.2 (ec6e62d40fa9)
  • .scratch/blender-5.2.1-windows-x64/blender.exe5.2.1 LTS (9e2066aef7ef)

Happy path: runtime-generated UV sphere fixture (u=48,v=24), then pipeline. Identical counts on all three series: evaluated_tris=2208, LOD budgets 1024 / 256 / 64 exact, exit 0.

Binary Preset Collider Exit
5.2.1 unity convex (1106 verts) 0
4.5.11 godot box (8 verts) 0
5.1.2 unreal box (8 verts) 0
5.2.1 unreal box (8 verts) 0

5.1.2 result is local live-run only. blender-smoke.yml runs 4.5 and 5.2 on PRs; 5.1 is Monday cron. Absence of a 5.1 PR job is not a pass. See #134.

B4 canaries (5.2.1 only, verbatim)

===== missing-input =====
ERROR: input file missing: E:\Blender-Developer-Tools\.scratch\pipeline-test\missing.glb
EXIT:2
===== not-glb =====
ERROR: input is not a readable GLB: E:\Blender-Developer-Tools\.scratch\pipeline-test\not.glb
EXIT:3
===== bad-preset =====
usage: blender.exe [-h] --input INPUT --outdir OUTDIR
                   --preset {unity,godot,unreal} [--lod-budgets LOD_BUDGETS]
                   [--collider {convex,box,none}] [--draco]
blender.exe: error: argument --preset: invalid choice: 'source' (choose from unity, godot, unreal)
EXIT:2
===== budgets-nonmonotonic =====
ERROR: --lod-budgets must be comma-separated positive ints, strictly decreasing
EXIT:4
===== budgets-nonpositive =====
ERROR: --lod-budgets must be comma-separated positive ints, strictly decreasing
EXIT:4
===== export-outdir-not-dir =====
ERROR: outdir is not a directory: E:\Blender-Developer-Tools\.scratch\pipeline-test\notdir
EXIT:6

Canaries were gitignored under .scratch/pipeline-test/ and were not committed. Exit 5 (no mesh after import) was not fired with a committed asset; the path is inspection-only.

Inspection-only

  • Inventory counts (15 / 9 / 3 / 24 / 54) vs filesystem and plugin.json
  • Roadmap template sub-track marked delivered; agent bridge still unpinned
  • Smoke YAML steps mirror the existing headless glTF template (fixture, exit 0 + magic, one failure exit)
  • No 4.5 / 5.1 / 5.2 output divergence on the measured triangle counts
  • Skills/rules/snippets were not modified

Out of scope (unchanged)

Live-session agent bridge. LICENSE / #131. All 54 examples. VERSION / CHANGELOG.md / release.yml. Smoke version matrix. Vendor integrations. New examples.

TMHSDigital and others added 3 commits September 11, 2026 22:03
Headless entry point composing cleanup, LOD, collider, and engine-preset export.
Helpers are duplicated from the named snippets because templates are not a package.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Same blender-smoke.yml pattern as the headless glTF template: generate a fixture, assert exit 0 and glTF magic, then assert missing-input exit 2. Does not add 5.1 to the PR matrix.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Inventory counts go to 3 templates. The live-session agent bridge stays unpinned.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added templates documentation Improvements or additions to documentation ci labels Sep 12, 2026
@TMHSDigital
TMHSDigital merged commit b5d5893 into main Sep 12, 2026
10 checks passed
@TMHSDigital
TMHSDigital deleted the feat/ai-asset-pipeline-phase-3 branch September 12, 2026 11:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci documentation Improvements or additions to documentation templates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant