Automated pipeline that detects new upstream materials, bakes them to the tst HF repo, and presents them for review — without touching the production release tag.
┌─ scheduled cron (weekly?) ─────────────────────────────────────────┐
│ │
│ 1. snapshot_upstream_catalog.py → upstream-catalog-{date}.json │
│ 2. diff against last known catalog → delta (new material IDs) │
│ 3. if delta is empty → exit clean │
│ 4. open PR with: │
│ - updated upstream catalog snapshot │
│ - commit message listing new material IDs per source │
│ 5. dispatch bake.yml for delta materials only (filter_ids input) │
│ → bakes land on tst HF repo under a staging tag │
│ 6. dispatch derive.yml for new materials (resize + ktx2 + thumb) │
│ 7. dispatch pages.yml → rebuild GH Pages catalog with "new" filter │
│ 8. comment on PR: "N new materials baked. Preview: <pages URL>" │
│ │
│ PR stays open until maintainer reviews + merges │
│ merge triggers: tag update on tst HF repo (metadata/manifest) │
│ prod cut: separate manual step (existing preflight gates) │
└─────────────────────────────────────────────────────────────────────┘
The PR is the review gate. New materials land on tst HF and are previewable immediately, but the release tag (what clients see) only advances after human acceptance.
Vision
Automated pipeline that detects new upstream materials, bakes them to the tst HF repo, and presents them for review — without touching the production release tag.
Proposed flow
What already exists
scripts/snapshot_upstream_catalog.py— captures upstream IDs (just needs to be run on a schedule)bake.yml+derive.yml—filter_idsinput (ci(bake): filter-ids workflow input — spot-test specific materials by id (no offset hack) #342) already supports spot-baking specific materialsscripts/check_substrate_coverage.py— wanted vs actual comparison (ci(validate): release-validate should assert manifest-declared features actually ship (wanted vs. is) #293)_preflight.pyPre-flight prod-cut gate: enforce tst-prior + tier-parity + maintainer-only deprecation escape hatch #345) — already gate prod pushes behind tst validationWhat's missing
Key principle
The PR is the review gate. New materials land on tst HF and are previewable immediately, but the release tag (what clients see) only advances after human acceptance.
Related
filter_idsbake input (spot-baking specific materials)