You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Self-contained handoff for the v0.6.0 release-cut verification. The full ADR-0012 chain code has landed (#188 / #189 / #190 / #196 / #199 / #204 / #205 / #207-{208,209} / #210 / #211 / #213). We've verified end-to-end at `--limit 2` against `gerchowl/mat-vis-tst` from both macOS uv and anvil-dev (NixOS+podman dagger). What we have NOT verified: full-scale bakes (no limit), the full matrix workflow, and the open #83 chunk-split-at-1.8GB risk during derive.
This issue is the last gate before #179 (prod bake) fires. Each phase has an explicit go/no-go criterion. If anything fails, file a fix, re-run from the failing phase. Stop before phase 7 unless every prior phase is green.
Prerequisites
`HF_TOKEN` with write access to both `gerchowl/mat-vis-tst` AND `gerchowl/mat-vis` (the latter only consumed in phase 7)
`mat-vis-tst` is at clean baseline: `refs` shows only `main`, `audit-orphans` reports `total_lfs == 0`. Reset commands:
uv run --with huggingface_hub python -c "from huggingface_hub import HfApi; from pathlib import Path; api=HfApi(token=Path('~/.cache/huggingface/token').expanduser().read_text().strip()); [api.delete_branch(repo_id='gerchowl/mat-vis-tst', repo_type='dataset', branch=b['name']) for b in api.list_repo_refs(repo_id='gerchowl/mat-vis-tst', repo_type='dataset').branches if b.name != 'main']"
MAT_VIS_AUDIT_FORCE=1 uv run --with-editable . --extra baker mat-vis-baker audit-orphans --repo gerchowl/mat-vis-tst --delete
Phase 2 — per-source full bake (per-source scale, ~30-60 min each)
Goal: exercise full upstream catalog size against HF rate limits, one source at a time. This is where #83 (chunk-split) bites if it's still latent.
For each source: trigger `bake.yml` workflow against `mat-vis-tst` with NO `--limit`. Each source runs serially (don't fan out yet).
TAG=v0.0.0-phase2
forsrcin polyhaven ambientcg gpuopen;do
gh workflow run bake.yml \
-f source=$src -f tier=1k -f release-tag=$TAG \
-f repo-id=gerchowl/mat-vis-tst -f dry-run=false
# Poll: gh run list --workflow=bake.yml --limit 1# Wait for completion before next iter — preserves "single source at a time"done
Go criterion per source:
Workflow exits 0
`/1k/.tier_complete` sentinel landed
`.json` catalog lists every material that was meant to bake
Bake duration < 90 min (HF commit pacing healthy)
No batch with >25k LFS files (HF cap) or >1 GB payload (commit cap)
HF 429 storm (rate limit hit) → file follow-up to add backoff in commit pacing
A material fails with `error` (preflight resume should let us re-run)
Sentinel missing → bake didn't reach completion, re-run with same tag (preflight should resume)
Teardown: keep tag through phase 4 — derives need it.
Phase 3 — full bake matrix (parallel, ~30-60 min wallclock)
Goal: exercise CAS retry under real matrix concurrency.
TAG=v0.0.0-phase3
# Reset state first — this is the matrix dress rehearsal, fresh tag# Trigger all sources in parallel via the matrix workflow
gh workflow run bake.yml \
-f source=__all__ -f tier=1k -f release-tag=$TAG \
-f repo-id=gerchowl/mat-vis-tst -f dry-run=false
If `bake.yml` doesn't yet support `all`, fan out manually:
Go criterion: test passes; final manifest contains every source. If retry exhaustion happens, the test fails — that's the trigger to escalate to fragments+merge (Option B per #210).
No new follow-up issues with severity > P2 opened during staging
When every box is ticked, advance #179 to "ready to merge dev → main" and proceed with phase 7 (prod bake).
Notes for handoff after compact
All anvil-dev infrastructure documented in this issue's body and prior chat; the dagger engine container should still be on the VM (was up at end of last session).
Purpose
Self-contained handoff for the v0.6.0 release-cut verification. The full ADR-0012 chain code has landed (#188 / #189 / #190 / #196 / #199 / #204 / #205 / #207-{208,209} / #210 / #211 / #213). We've verified end-to-end at `--limit 2` against `gerchowl/mat-vis-tst` from both macOS uv and anvil-dev (NixOS+podman dagger). What we have NOT verified: full-scale bakes (no limit), the full matrix workflow, and the open #83 chunk-split-at-1.8GB risk during derive.
This issue is the last gate before #179 (prod bake) fires. Each phase has an explicit go/no-go criterion. If anything fails, file a fix, re-run from the failing phase. Stop before phase 7 unless every prior phase is green.
Prerequisites
Phase 1 — single-material baseline (sanity, ~3 min)
Goal: confirm nothing regressed since the last verification.
Go criterion: all 3 bakes return `ok=1, failed=0`. Manifest at `/resolve/v0.0.0-phase1/release-manifest.json` lists all 3 sources under `tiers.1k`.
Teardown: `api.delete_branch(branch='v0.0.0-phase1')` + audit-orphans `--delete`.
Phase 2 — per-source full bake (per-source scale, ~30-60 min each)
Goal: exercise full upstream catalog size against HF rate limits, one source at a time. This is where #83 (chunk-split) bites if it's still latent.
For each source: trigger `bake.yml` workflow against `mat-vis-tst` with NO `--limit`. Each source runs serially (don't fan out yet).
Go criterion per source:
No-go signals:
Teardown: keep tag through phase 4 — derives need it.
Phase 3 — full bake matrix (parallel, ~30-60 min wallclock)
Goal: exercise CAS retry under real matrix concurrency.
If `bake.yml` doesn't yet support `all`, fan out manually:
Go criterion:
No-go:
Teardown: keep through phase 4.
Phase 4 — derive matrix (1k → 512, ~15-30 min)
Goal: exercise the per-file derive pipeline at full scale.
Go criterion:
Phase 5 — multi-language client verification
Goal: all four reference clients fetch the same bytes from the staged tag.
Go criterion: each suite reports its full pass count (JS 8, shell 13, Rust 16, Python E2E 2). Bytes verified PNG/KTX2 magic.
Phase 6 — opt-in concurrency stress (optional but recommended)
Goal: pressure the CAS retry budget; data-driven Option-B trigger.
MAT_VIS_E2E=1 MAT_VIS_E2E_CONCURRENCY=3 \ uv run --with-editable . --extra baker --with clients/python --with pytest \ pytest tests/e2e/test_per_file_roundtrip.py::TestConcurrentBakesShareTag -vGo criterion: test passes; final manifest contains every source. If retry exhaustion happens, the test fails — that's the trigger to escalate to fragments+merge (Option B per #210).
Phase 7 — handoff to #179 (prod bake)
Only fire if phases 1-5 (and ideally 6) all green.
This is where #179 takes over. Operator runs the same workflows but with `repo-id=gerchowl/mat-vis` and the real CalVer (e.g. `v2026.04.2`):
Post-prod:
Cleanup at any failure point
"We're ready for v0.6.0 release workflow" checklist
When every box is ticked, advance #179 to "ready to merge dev → main" and proceed with phase 7 (prod bake).
Notes for handoff after compact