Repository navigation
cosmos3-generate-media: eval-derived fixes (stacked on #324) - #327
Conversation
…tes and migration record — baseline The fixes PR content as reviewed privately, applied 1:1 on top of the migration branch as the baseline for the token-cost comparison: TensorRT-LLM wheel route and venv-explicit installs, uv pin handling, headless OpenCV, server readiness/teardown, distilled-student memory gates and verified fp8 route, SGLang/vLLM-Omni launch flags (guardrail switch, HF_TOKEN), NIM cache preflight / guardrail env / bounded readiness, output verification, the cross-variant skill notes (references/skill-notes.md), the source re-pin with the in-repo cookbook links, and the record of every fix in docs/cookbook_to_skill_migration.md. Only the record's wording about the private review was neutralised (no private commit ids or repository names); eval/eval.config is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
Skill eval — b7ad087 · run #4066068759144 / 44 cells done · 44 passed · 0 failed · 0 no report · 0 errors · 0 reused · started 2026-10-28 08:59:06 UTC · updated 2026-10-28 10:53:31 UTC
|
| Case | claude | codex | cursor | opencode |
|---|---|---|---|---|
diffusers-edge-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
diffusers-edge-t2v |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
framework-edge-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
vllm-omni-edge-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
sglang-edge-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
trtllm-edge-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
distilled-trtllm-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
nim-generator-i2v |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
diffusers-nano-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
framework-nano-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
trtllm-nano-t2i |
✅ PASS · report | ✅ PASS · report | ✅ PASS · report | ✅ PASS · report |
Legend: ⏳ queued · 🟢 running · ✅ PASS · ❌ FAIL · cells= with no result of this skill version yet · (not re-run: n report-less attempts) = 3 consecutive NO-REPORT/ERROR results for this skill version, treated as a harness-side failure (force or cells= re-runs it) · not run = the runner lost docker (job stopped)
✅ done — 44/44 passed (0 failed, 0 no report, 0 errors)
…ights name the TensorRT-LLM venv explicitly trt-llm.md § 7.2: `uv pip install --python "$TRTLLM_VENV/bin/python"`, `"$TRTLLM_VENV/bin/python" -c …` and `"$TRTLLM_VENV/bin/trtllm-serve"` so a later shell call still targets the venv (the F2c mechanism of Variant 1): one trtllm-nano × cursor run installed the wheel set into the evaluator's own venv after losing the activation between calls. Recorded in docs/cookbook_to_skill_migration.md. Same change as the private fixes branch, so the two PRs stay identical. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
…kills/generate-media-fixes-public Takes the base branch's removal of docs/cookbook_to_skill_migration.md (modify/delete conflict resolved as delete: the F2d note that lived there is in the PR description), the docs-nav entry removal and the authoring-skill pointer change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
…../../ Four pointers to the cookbooks tree (diffusers.md, payloads.md, skill-notes.md, trt-llm.md) used ../cookbooks/…, which resolves one directory too high from references/; no other change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
…x a relative path in payloads.md The authoring skill and its eval guide referred to the pull requests, dashboard groups, commits and branch names of the repository the skill was developed in; they now cite this repository's #324 / #327, the groups ci-pr324-b50b766 and ci-pr327-b7ad087 and the public branch names. references/payloads.md: the NIM api-reference link is written from references/, so it needs ../../cookbooks/. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
…kills/generate-media-fixes-public Brings the authoring skill's public PR/group/branch citations; the payloads.md path fix is identical on both sides. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
lfengad
left a comment
There was a problem hiding this comment.
Thanks for working through the evaluation-derived fixes. I have left two inline notes about keeping filesystem changes scoped to task-owned resources, and one small non-blocking suggestion about selecting the requested generation mode.
…kills/generate-media-fixes-public Takes the base branch's skill-eval CI change (cursor cells no longer pinned to one runner); no skill file changes. Signed-off-by: Christina Wang <christwang@nvidia.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…kills/generate-media-fixes-public Brings the base branch's vLLM-Omni notebook update (#329 port), the migration record and the CI follow-ups. Conflicts in SKILL.md Variant 3 and references/vllm-omni.md § 2 resolved for the notebook's final text: the F9b addition of `-e HF_TOKEN` is now notebook text, so its § 2 skill note is dropped and § 7.1 records the history. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
|
| Case | claude | codex | cursor | opencode |
|---|---|---|---|---|
vllm-omni-edge-t2i |
✅ PASS · 2.09M · 4m49s | ✅ PASS · 1.53M · 4m43s | ✅ PASS · 651K · 2m57s | ✅ PASS · 971K · 4m59s |
Tokens (all cells): 5.24M. Legend: ✅ PASS · ❌ FAIL · ↻ = passed after self-correction (none here) · tokens = the agent's total · duration = the cell's wall time.
🤖 Generated with Claude Code
…erlay, cache repair only when safe, Edge mode selection - distilled-trt-llm.md § 7.2 (fp8 route): the overlay directory is a fresh mktemp -d next to the source by default; a caller-set FP8_DST must not exist yet and must not be FP8_SRC or a path inside it — the unconditional rm -rf is gone. - SKILL.md Variant 7: the cache preflight tests write access as the NIM user (uid 1000) first and repairs ownership only for an empty cache this run created or with NIM_CACHE_REPAIR=1 (explicit opt-in); otherwise it fails with guidance. The host-side recursive chmod of a possibly shared cache is dropped too. - diffusers.md § 8.4: one setup block plus one block per mode (t2i_edge, t2v_edge_noaudio); SKILL.md Variant 1 asks for the setup block plus only the requested mode's block, so a text-to-image task no longer renders a video as well. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
…; note the TensorRT-LLM pin drift; point Variant 3 at the FP8 section The shared setup guide on main moved to cosmos_guardrail 0.3.2 (no separate NLTK data step any more) and pins TensorRT-LLM commit cc63e66 (#332). trt-llm.md § 7.6 quotes the current guide; § 7.1 notes that the skill's validated routes stay at bca6761 / 1.3.0rc27 until a re-run moves the pins together. SKILL.md Variant 3 names the vLLM-Omni reference's FP8 "Quantized Checkpoints" section (#329). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Christina Wang <christwang@nvidia.com>
e1a3ff1
into
skills/generate-media-migration-and-eval-public
…erived fixes, cosmos3-skill-authoring guide, opt-in skill-eval CI (#324) **Includes the eval-derived fixes PR #327**, merged into this branch on 2026-10-29 (`e1a3ff1`): the migration and the fixes that take the eval matrix from 42/44 to 44/44 first-attempt PASS go to `main` together. Everything is applied as a diff on top of `main`, not as a copy. First cookbook→skill migration (**cosmos3-generate-media**), the **cosmos3-skill-authoring** guide, and an opt-in **skill-eval CI** on self-hosted H100 runners. No eval (GPU) job runs on push or merge. ### What this PR delivers - **One skill for the seven Cosmos3 audiovisual serving paths** — diffusers, cosmos_framework, vLLM-Omni, SGLang, TensorRT-LLM, distilled TensorRT-LLM, NIM — with the sample prompts, reference images and negative prompts under `assets/`. - **The cookbook notebooks migrated 1:1 into `references/`** (one file per backend plus `payloads.md` for shared content). A format change only: Jupyter plumbing removed, nothing corrected or rewritten; `references/vllm-omni.md` follows the vLLM-Omni notebook's last version on `main` (#329: launch mounts, `HF_TOKEN`, the FP8 "Quantized Checkpoints" section), since that notebook changed after the migration's pin and before its retirement here; the six notebooks and the audiovisual cookbook README are retired from `.agents/skills/cookbooks/` (links in the cookbook READMEs and the docs site now point at the skill). Known gap: the video-to-video input clip (an LFS object) is not vendored. - **NIM (Variant 7) follows the Cosmos3 NIM 2.1.0 cookbook.** `run_with_nim.ipynb` was already retired in this repository by #296 in favour of `.agents/skills/cookbooks/cosmos3/nim/`, so the skill carries no `references/nim.md` copy of it: Variant 7 delegates to that cookbook and its `cosmos3-nim-user` skill (pointers, the README's 2.1.0 launch, the readiness and selection checks of `deployment.md`, and the `examples/i2v.py` request built from the bundled assets). Record: `docs/cookbook_to_skill_migration.md`. - **SKILL.md quotes each backend's smoke path 1:1** from the notebooks, the cookbook README or the setup guide, and makes the reference files required reading before the first command. Review requests from the first review round are applied (the framework example initialises `COSMOS3_UV_GROUP` / `COSMOS3_UV_ENV` as the notebook does; the live CI comment uses a sequence guard and per-cell ledger lines). - **Eval-derived fixes (from #327)**: F1–F18 and F2d — every fatal failure and repeated self-correction of the 44-cell matrix, fixed as marked skill notes or declared in-block deviations with the notebook text kept verbatim; `eval/eval.config` is unchanged, so before and after are measured on the same prompts (tables below). - **11 eval cases** (3 Nano, 6 Edge, 1 distilled Super, 1 NIM); the two framework cases clone this repository's `main`. Known wording leftover in `eval/eval.config`: the NIM case says the Generator NIM serves text-to-video and image-to-video only, which was true of the retired 1.0.0 NIM; the pinned 2.1.0 NIM also serves text-to-image and video-to-video. The case exercises image-to-video, so results are unaffected; the sentence is corrected in the next `eval.config` revision together with a re-run (the file is frozen here so the migration head and the fixes are measured on the same prompts). - **Skill-eval CI (opt-in)**: `.github/workflows/skill-eval.yml` and the orchestrator in `.github/scripts/skill_eval/` run a PR's skills on self-hosted H100 runners — one job per case × agent, one live PR comment that always shows the newest result per cell, dashboard groups per skill version, the inference key from a repository secret, a GitHub-hosted job for the orchestrator's unit tests, and a GitHub-hosted **gate** that admits only repository members with the write, maintain or admin role (details below). - **cosmos3-skill-authoring**: how to write a skill that passes the eval on the first attempt, how the evaluator judges, how to run the eval in CI or locally, and the fix loop (a stacked fixes PR, gated by the owner) that gets every cell to first-attempt PASS (`references/running-the-eval.md`). ### Evaluation results #### Migration head `b50b766` (before the fixes) Head `b50b766`, 11 cases × 4 agents (claude = Claude Opus 5.5, codex = GPT-6 Astra, cursor = Claude Sonnet 5.5, opencode = Kimi K2.6), [run 40639480322](https://github.com/NVIDIA/cosmos-framework/actions/runs/40639480322) on the four self-hosted H100 runners, [dashboard group ci-pr324-b50b766](http://internal-cosmos-skills-eval.nvidia.com/skills/cosmos3-generate-media/groups/ci-pr324-b50b766/): **42/44 PASS** (14/44 first-attempt, 2 FAIL, 0 no report, 0 errors; static assessment 100/100) | Case | claude | codex | cursor | opencode | |---|---|---|---|---| | `diffusers-edge-t2i` | ✅ 1.84M ↻ | ✅ 2.89M ↻ | ✅ 1.07M ↻ | ✅ 1.41M ↻ | | `diffusers-edge-t2v` | ✅ 2.81M ↻ | ✅ 3.32M ↻ | ✅ 594K ↻ | ✅ 1.31M ↻ | | `diffusers-nano-t2i` | ✅ 2.08M | ✅ 3.28M ↻ | ✅ 529K ↻ | ✅ 869K ↻ | | `distilled-trtllm-t2i` | ✅ 8.95M ↻ | ✅ 9.73M ↻ | ✅ 2.11M ↻ | ❌ 4.51M ↻ | | `framework-edge-t2i` | ✅ 2.56M ↻ | ✅ 3.73M | ✅ 465K ↻ | ✅ 2.76M ↻ | | `framework-nano-t2i` | ✅ 2.71M ↻ | ✅ 4.59M | ✅ 488K ↻ | ✅ 2.32M | | `nim-generator-i2v` | ✅ 3.46M | ✅ 3.22M | ✅ 390K | ✅ 2.67M ↻ | | `sglang-edge-t2i` | ✅ 2.93M | ✅ 2.30M ↻ | ✅ 584K ↻ | ✅ 1.13M | | `trtllm-edge-t2i` | ✅ 6.12M ↻ | ✅ 18.32M ↻ | ✅ 864K ↻ | ❌ 5.53M ↻ | | `trtllm-nano-t2i` | ✅ 5.43M | ✅ 19.52M ↻ | ✅ 1.46M ↻ | ✅ 7.62M ↻ | | `vllm-omni-edge-t2i` | ✅ 1.88M | ✅ 1.41M | ✅ 645K | ✅ 2.02M | Tokens (all cells): 154.42M. ↻ = passed after self-correction. The two FAILs are the opencode agent on the two TensorRT-LLM wheel cases — the documentation gap (no notebook or README says how to obtain a TensorRT-LLM build with Cosmos3 VisualGen) that the fixes below close; nothing the agents self-corrected was changed by the migration itself. #### After the fixes (`b7ad087`, the #327 head at validation) **Baseline (first commit `b7ad087`)** — [run 40660687591](https://github.com/NVIDIA/cosmos-framework/actions/runs/40660687591), [dashboard group ci-pr327-b7ad087](http://internal-cosmos-skills-eval.nvidia.com/skills/cosmos3-generate-media/groups/ci-pr327-b7ad087/): **44/44 PASS** (44/44 first-attempt, 0 FAIL, 0 no report, 0 errors; static assessment 100/100) **Baseline vs #324** ([compare](http://internal-cosmos-skills-eval.nvidia.com/skills/cosmos3-generate-media/compare?a=group%3Aci-pr324-b50b766&b=group%3Aci-pr327-b7ad087); the [branch compare](http://internal-cosmos-skills-eval.nvidia.com/skills/cosmos3-generate-media/compare?a=branch%3Askills%2Fgenerate-media-migration-and-eval-public&b=branch%3Askills%2Fgenerate-media-fixes-public) always shows the newest result per cell of each branch): **A** `group:ci-pr324-b50b766`: 42/44 PASS, 14 first-attempt · **B** `group:ci-pr327-b7ad087`: 44/44 PASS, 44 first-attempt · improved 2, regressed 0 | Case | Metric | claude | codex | cursor | opencode | |---|---|---|---|---|---| | `diffusers-edge-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ❌→✅ | ❌→✅ | ❌→✅ | ❌→✅ | | `diffusers-edge-t2v` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ❌→✅ | ❌→✅ | ❌→✅ | ❌→✅ | | `diffusers-nano-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ✅→✅ | ❌→✅ | ❌→✅ | ❌→✅ | | `distilled-trtllm-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ❌→✅ | | | First time success | ❌→✅ | ❌→✅ | ❌→✅ | ❌→✅ | | `framework-edge-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ❌→✅ | ✅→✅ | ❌→✅ | ❌→✅ | | `framework-nano-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ❌→✅ | ✅→✅ | ❌→✅ | ✅→✅ | | `nim-generator-i2v` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ✅→✅ | ✅→✅ | ✅→✅ | ❌→✅ | | `sglang-edge-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ✅→✅ | ❌→✅ | ❌→✅ | ✅→✅ | | `trtllm-edge-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ❌→✅ | | | First time success | ❌→✅ | ❌→✅ | ❌→✅ | ❌→✅ | | `trtllm-nano-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ✅→✅ | ❌→✅ | ❌→✅ | ❌→✅ | | `vllm-omni-edge-t2i` | Completion | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | | | First time success | ✅→✅ | ✅→✅ | ✅→✅ | ✅→✅ | Completion: overall verdict before → after (✅ PASS, ❌ FAIL). First time success: passed on the first attempt, without a self-correction, before → after. **Added after the validation run:** F2d (`bad39b1`); four relative-link path corrections in `references/` (`../cookbooks/…` → `../../cookbooks/…`); and the vLLM-Omni notebook's final version (#329: `$PWD` mounts, `-e HF_TOKEN`, the FP8 "Quantized Checkpoints" section in `vllm-omni.md` § 2 and SKILL.md Variant 3; the FP8 pointer in `payloads.md` § 1) — validated locally with the four vllm-omni-edge-t2i cells, 4/4 PASS on the first attempt twice (after the port and after the merge of the fixes). `git diff b7ad087 e1a3ff1 -- .agents/skills/cosmos3-generate-media` shows exactly these, plus the review follow-ups below. ### Eval-derived fixes (merged from #327) Where = `file:lines` at `e1a3ff1` (permalinks; `SKILL.md` = `.agents/skills/cosmos3-generate-media/SKILL.md`, reference names = `references/<name>`). Problem → fix, in priority order; F2d was added after the validation run (see Validation). | ID | Pri | Problem | Fix applied | Where | |---|---|---|---|---| | F1 | P0 | Variant 5 gave only the Docker devel source build (tag left `<tag>`) plus a dead `TRTLLM_USE_PRECOMPILED` hint; no wheel version anywhere, so cursor/opencode pip-installed stable 1.2.x, which lacks VisualGen | Route A (default): prebuilt wheel `tensorrt_llm==1.3.0rc27` + `torch==2.13.0+cu130` from pypi.nvidia.com/cu130 (uv `--index-strategy unsafe-best-match`), VisualGen preflight, pinned checkout for YAMLs only; Route B = source build; mirrored as skill notes in trt-llm.md / distilled-trt-llm.md | SKILL.md [296–299](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L296-L299) · distilled-trt-llm.md [61](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L61) · trt-llm.md [29](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L29) [583–589](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L583-L589) [595–639](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L595-L639) [656–658](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L656-L658) [722](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L722) | | F2 | P1 | Framework `pyproject.toml` pins uv `==0.11.29`; `uv venv/pip/sync` abort with uv 0.13 and `uv self update` refuses | Variant 1: `--no-config`; Variant 2: pinned-uv preflight (side-by-side install or `uvx --from 'uv==0.11.29'`); one note in "Read this first"; skill notes in diffusers.md, cosmos-framework.md, payloads.md | SKILL.md [31–35](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L31-L35) [104–108](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L104-L108) [120](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L120) [142–143](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L142-L143) [177–184](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L177-L184) · cosmos-framework.md [202](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/cosmos-framework.md#L202) [409–410](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/cosmos-framework.md#L409-L410) · diffusers.md [136](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L136) [138](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L138) [157](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L157) · payloads.md [85](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/payloads.md#L85) [99](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/payloads.md#L99) | | F2b | P1 | An agent installed uv 0.11.29 (the Variant 2 preflight) for the TRT-LLM venv; that uv cannot resolve `nvidia-cutlass-dsl==4.8.0.dev0` without `--prerelease=allow`, which then pulls mpmath 1.5.0a1 | "Read this first" / Variant 5 / Variant 2 state which uv each variant uses (stock 0.13+ with `--no-config` for Variants 1/5/6; 0.11.29 only for `uv sync`) | SKILL.md [36–37](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L36-L37) [183](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L183) · skill-notes.md [141–145](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L141-L145) · trt-llm.md [605](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L605) | | F2c | P1 | In a full run of the fixes branch the opencode agent ran the Variant 1 install block across separate shell calls; the `export` and `source …/activate` of the first call were gone in the second, so `uv pip install` went into the evaluator's own venv and the import check ran against the wrong interpreter (then a needless OpenCV downgrade: the same block passed first-attempt in the other eleven diffusers cells of that run) | The three `uv pip` commands of the Variant 1 block and of diffusers.md § 3 carry `--python "$COSMOS3_DIFFUSERS_VENV"` (declared in-block addition; with the variable unset uv stops instead of installing elsewhere), the import check and the generation snippets run with `"$COSMOS3_DIFFUSERS_VENV/bin/python"`, and the block says it is one shell call | SKILL.md [110–126](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L110-L126) · diffusers.md [138–151](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L138-L151) [157](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L157) [161](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L161) [453–454](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L453-L454) | | F3 | P1 | Diffusers venv not headless: `cosmos_guardrail` pulls GUI opencv; the pipeline imports it even with the safety checker off | Headless OpenCV swap + import check inside the Variant 1 venv block; apt fallback reworded (`apt-get update`, root caveat); skill notes in diffusers.md / payloads.md | SKILL.md [98–100](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L98-L100) [116–126](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L116-L126) · diffusers.md [74](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L74) [159](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L159) [437–446](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L437-L446) · payloads.md [81](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/payloads.md#L81) | | F3b | P1 | Headless OpenCV swap was a separate command after the install line; one agent ran the pipeline import first and hit `libxcb.so.1` | Swap folded into the `uv pip install` command in SKILL.md Variant 1 and, as a declared in-block deviation, in diffusers.md § 3 | SKILL.md [116–126](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L116-L126) · diffusers.md [138–151](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L138-L151) [157](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L157) [159](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L159) | | F4 | P1 | Bare-host prerequisites of the wheel undocumented: OpenMPI, `CUDA_HOME`, CUDA-13 libs via the cu130 index, seeded venv, ffmpeg | Prerequisite lines + comments inside the Route A block (Variant 6 inherits); upstream pip-install page cited in the references | distilled-trt-llm.md [61](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L61) · trt-llm.md [29](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L29) [601–606](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L601-L606) [624–635](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L624-L635) [703–706](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L703-L706) | | F5 | P1 | `TRTLLM_USE_PRECOMPILED=1 pip install -e .` resolves an unpublished `1.3.0rc26+bca6761ab8` wheel; rc26 binaries lack an op the pinned Python needs | Hint deleted; "do not use the shortcut on this checkout" paragraph; one-sentence skill notes in both TRT references | distilled-trt-llm.md [61](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L61) · trt-llm.md [29](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L29) [669](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L669) [674–687](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L674-L687) | | F6 | P1 | No output-verification step; ffprobe/ffmpeg/Pillow absent on the host; the NIM container's ffmpeg cannot demux its own VP9 output | New "Verify the output" section (ffprobe, root-free `av`, PIL; expected smoke facts) + pointers; NIM headless-check note | SKILL.md [41–43](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L41-L43) [454–467](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L454-L467) · diffusers.md [437–446](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L437-L446) [482](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L482) · payloads.md [101](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/payloads.md#L101) | | F7 | P1 | Server variants lack a headless start / readiness-poll / teardown recipe; SGLang `/health` 503 while warming undocumented; NIM `docker run -d --rm` destroys the logs | Shared named-container + trtllm-serve patterns (start, poll, logs, teardown) with per-variant pointers; SGLang readiness documented; NIM `--rm` dropped (recorded deviation); Nano/Super t2i request body stated in Variant 5 | SKILL.md [230–231](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L230-L231) [274–279](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L274-L279) [319–321](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L319-L321) [372–374](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L372-L374) [401](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L401) [451–452](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L451-L452) · payloads.md [216–217](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/payloads.md#L216-L217) · sglang.md [21](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/sglang.md#L21) · skill-notes.md [58–101](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L58-L101) · trt-llm.md [43](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L43) [733](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L733) | | F7b | P2 | Servers started in a backgrounded subshell died with the shell; SIGINT to the process group did not stop a server; a second server was started while the first still held the GPU | Headless pattern: launch from a script with `setsid … &`, SIGINT → SIGTERM → SIGKILL escalation, leftover check by PID; never start a second server on a busy GPU (the launch script enforces it) | SKILL.md [372–377](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L372-L377) · distilled-trt-llm.md [465–474](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L465-L474) · skill-notes.md [75–94](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L75-L94) | | F8 | P1 | Distilled 4-Step students are ~122 GiB bf16, not "32B / single GPU": the 1-GPU launch OOMs on 80 GB; the verified `cpu_offload_config` route was undocumented | Model-table note + Variant 6 offload block (measured) + warning that FP8 variants are unverified; same in distilled-trt-llm.md | SKILL.md [79–84](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L79-L84) [339–343](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L339-L343) · distilled-trt-llm.md [22](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L22) [35](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L35) [84–99](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L84-L99) [101](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L101) [103](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L103) [366–370](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L366-L370) [431–439](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L431-L439) [443–447](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L443-L447) · skill-notes.md [101](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L101) | | F8b | P1 | Distilled launch still OOM-prone in practice: agents ran the notebook's plain bf16 launch first (OOM on 80–94 GB GPUs, and a second launch then OOMed against the still-loading server); on 125 GiB-RAM hosts the offload route is OOM-killed | Variant 6 is one gated launch script: GPU memory → plain route only at ≥ 128,000 MiB; host RAM (incl. cgroup ceiling) → bf16 + `cpu_offload_config` at ≥ 128 GiB, else the Hugging Face `fp8` branch with the `embed_tokens` ignore-list patch (eval-verified); refuses to start on a busy GPU; one `setsid trtllm-serve` + `/health` poll with a 1800 s deadline | SKILL.md [345–348](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L345-L348) [372–377](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L372-L377) · distilled-trt-llm.md [63](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L63) [339–416](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L339-L416) | | F9 | P1 | SGLang `docker run` passes no `-e HF_TOKEN` and omits `SGLANG_DISABLE_COSMOS3_GUARDRAILS=1`; the server exits with GatedRepoError 401 | Guardrail-table row fixed; `-e SGLANG_DISABLE_COSMOS3_GUARDRAILS=1 -e HF_TOKEN` in every launch block; request body `guardrails: false` | SKILL.md [249–254](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L249-L254) [262–263](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L262-L263) [284](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L284) [291](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L291) · payloads.md [67](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/payloads.md#L67) · sglang.md [23](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/sglang.md#L23) [35](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/sglang.md#L35) [41–42](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/sglang.md#L41-L42) [80](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/sglang.md#L80) [371](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/sglang.md#L371) · skill-notes.md [42–49](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L42-L49) [53–57](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L53-L57) | | F9b | P1 | vLLM-Omni `docker run` blocks passed no `-e HF_TOKEN`: on a fresh node with a cold Hugging Face cache the first launch crashed with HTTP 429 during the anonymous model lookup | Superseded by the notebook's final version (#329), which passes `-e HF_TOKEN` in every `vllm serve` launch; the skill carries that text 1:1 (vllm-omni.md § 2, SKILL.md Variant 3) and `vllm-omni.md` § 7.1 records why the token matters — export `HF_TOKEN` before the launch | SKILL.md [213](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L213) · vllm-omni.md [602–608](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/vllm-omni.md#L602-L608) | | F10 | P1 | NIM profile discovery/pinning (`list-model-profiles`, `NIM_MODEL_PROFILE`, `/v1/manifest`) and guardrail env switches missing from the launch block | profile preflight and `/v1/metadata` check in the Variant 7 launch; env lines in both launch blocks; `/v1/manifest` + `selectedModelProfileId` in the inspect lists | SKILL.md [391–397](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L391-L397) [407–408](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L407-L408) [417–418](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L417-L418) [423](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L423) | | F11 | P1 | NIM cache bind mount not writable by uid 1000; the client-side `chmod -R 777` never reaches a daemon-created mount | Cache preflight in the Variant 7 launch: the write test as the NIM user (uid 1000) runs first; the ownership repair (`docker run --user 0 … chown 1000:1000`) runs only for an empty cache this run created or with `NIM_CACHE_REPAIR=1`, otherwise the launch stops with guidance (review follow-up, see below) | SKILL.md [395–396](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L395-L396) [409–411](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L409-L411) · skill-notes.md [102–108](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L102-L108) | | F12 | P1 | rc26 returns HTTP 500 on `/v1/images/generations`; `/health` 200 does not exercise the image route | rc27 pinned with the reason inside Route A; "a 200 on /health does not exercise the image route" sentence; skill note at trt-llm.md § 2 | trt-llm.md [70](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L70) [564](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L564) [612–620](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L612-L620) [636–637](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L636-L637) [737–740](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L737-L740) | | F13 | P2 | Model table had no measured memory figures, no small-GPU path | Measured paragraph under the table (Edge/Nano, labelled as eval measurements) + fp8 pointer; Nano YAML note in Variant 5 / trt-llm.md | skill-notes.md [26–38](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L26-L38) · trt-llm.md [43](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L43) [722–733](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L722-L733) | | F14 | P2 | Variant 6 returns a one-frame MP4/AVI, the eval asks for a PNG | `ffmpeg -frames:v 1` extraction documented in Variant 6 and distilled-trt-llm.md | SKILL.md [358–361](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L358-L361) · distilled-trt-llm.md [267](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L267) [277–286](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L277-L286) | | F14b | P2 | On the fp8 server the one-frame `/v1/videos/generations` returned HTTP 500 after a successful denoise | Documented fallback: `/v1/images/generations` with `output_type: "image"` (explicit body; needs rc27), recorded in result_summary.md | SKILL.md [361](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L361) · distilled-trt-llm.md [279](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L279) [451–461](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/distilled-trt-llm.md#L451-L461) | | F15 | P2 | Wheel path only needs `examples/visual_gen/configs/*.yaml`, yet the block prescribed full clone + submodules + LFS | Direct SHA fetch (`git fetch --depth 1 origin <sha>`), LFS skipped; shallow-clone warning; Edge needs no checkout | trt-llm.md [636–642](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L636-L642) [647–652](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L647-L652) [703–706](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L703-L706) | | F16 | P2 | `pip install cosmos_guardrail==0.3.0` unconditional although guardrails are disabled; unresolvable on 1.2.1 | Moved to an optional "only if you keep guardrails on" step quoting the setup guide's current pin, `cosmos_guardrail==0.3.2` (its former NLTK data step is gone, #332), with the transformers>=5 caveat | trt-llm.md [669](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L669) [691–699](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L691-L699) | | F17 | P2 | SKILL.md said the NIM "takes plain-text prompts"; `/v1/infer` accepted the compact-JSON assets | Reworded intro + compact-JSON rule; Variant 7 request guidance; the Variant 7 request block | SKILL.md [428–429](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L428-L429) [436–439](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/SKILL.md#L436-L439) · skill-notes.md [8–10](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L8-L10) [13–15](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L13-L15) | | F18 | P2 | Variant 1 had no runnable Edge t2i/t2v snippet, no cwd comment, benign load warnings undocumented | Edge block composed from the README sentence and the notebook branches; cwd comment; two measured bullets | diffusers.md [465](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L465) [486–517](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/diffusers.md#L486-L517) · skill-notes.md [122–130](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/skill-notes.md#L122-L130) | | F2d | P1 | Variant 5 Route A: `uv pip install` run in a later shell call than the venv activation landed the wheel set in whichever Python was first on PATH (eval: the evaluator's own venv, where `llist` has no wheel and the source build wanted `clang`) | The § 7.2 install block and its preflights name the venv explicitly: `uv pip install --python "$TRTLLM_VENV/bin/python"`, `"$TRTLLM_VENV/bin/python" -c …`, `"$TRTLLM_VENV/bin/trtllm-serve"` (the F2c mechanism applied to the TensorRT-LLM launch; added after the validation run) | trt-llm.md [608–611](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L608-L611) [621](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L621) [628](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L628) [634–635](https://github.com/NVIDIA/cosmos-framework/blob/e1a3ff1/.agents/skills/cosmos3-generate-media/references/trt-llm.md#L634-L635) | ### Review follow-ups (2026-10-29) Three adjustments after the review, all in one commit (`ddb28a2`), no eval re-run: (1) the fp8 route of `distilled-trt-llm.md` § 7.2 no longer deletes anything — the overlay is a fresh `mktemp -d` directory, and a caller-set `FP8_DST` must not exist yet and must not be `FP8_SRC` or a path inside it; (2) the Variant 7 cache preflight tests write access as the NIM user first and repairs ownership only for an empty cache this run created or with `NIM_CACHE_REPAIR=1`, otherwise it fails with guidance (the host-side recursive `chmod` is gone too); (3) `diffusers.md` § 8.4 is a shared setup block plus one block per mode, and Variant 1 asks for the setup block plus only the requested mode's block. A later commit (`55f0f0f`) follows the setup guide's move to `cosmos_guardrail==0.3.2` (trt-llm.md § 7.6; its former NLTK step is gone), notes in § 7.1 that the guide now pins TensorRT-LLM `cc63e66` while the skill's validated routes stay at `bca6761` / 1.3.0rc27, and points Variant 3 at the FP8 "Quantized Checkpoints" section. ### Skill-eval CI (opt-in; every `.github` change lives on this branch) - **Who may start it**: every trigger passes a GitHub-hosted `gate` job first (no checkout). It reads the role of the person who commented, applied the label or dispatched from the collaborators API and accepts `write`, `maintain` or `admin` only — organisation membership, a read/triage role or a PR from a fork is refused before any self-hosted runner is used (`plan` refuses fork heads a second time). - **Trigger**: comment `/run-skill-eval [args]` on the PR (reads the workflow copy on `main`, so it works after this PR merges), apply one of the labels `run-skill-eval` / `run-skill-eval-smoke` / `run-skill-eval-failed` / `run-skill-eval-force` (works before the merge — the PR's own workflow copy runs; the label is removed again at the end), or dispatch manually: `gh workflow run skill-eval.yml --ref <branch> -f pr_number=<N> -f scope=full -f args='…'`. Args: `force`, `rerun-failed`, `smoke-only` (alias `smoke`), `with-smoke`, `cells=<agent>/<case>,…`, `group=<id>`. Never per-commit. - **What runs**: every touched skill with an `eval/eval.config`, one job per case × agent over the idle H100 runners; the CPU canary only on request. One live PR comment per head commit that always shows the newest result per cell (re-runs of the same commit update it; a new commit gets a new comment that lists the PR's earlier runs), plus the dashboard; results are informational. - **Results are keyed by skill content**: PASS / FAIL cells are reused across commits that do not change the skill; a partial rerun replaces only the cells it ran. - **Agents**: Claude Code, Codex CLI, Cursor CLI and OpenCode; the cursor cells run Claude Sonnet 5.5 (`cursor_model` in `.github/skill-eval.yml`) so the four backends exercise four model families. - **Runners**: self-hosted runners registered to this repository with the labels `cosmos-skill-eval` + `h100`; the `gpu`/`h200` runners of `gpu-tests.yml` are not used (disjoint label sets). Deployment values (evaluator image, dashboard URL) are repository variables, the inference key a repository secret. - **Credentials and isolation**: the inference key comes from the repository secret, never from the image; the checkout mounted into the agent container carries no job token. - **Tests**: a GitHub-hosted job runs the orchestrator's 109 unit tests on changes under `.github/scripts/skill_eval/`. ### Authoring-skill revision Rewritten from the generate-media campaign: a description with trigger boundaries; structure and section order; writing commands that pass on the first attempt; how the evaluator judges; eval.config rules; running the eval and reading the dashboard; the fix loop (a stacked fixes PR, gated by the owner); submitting. Generic by design — the generate-media skill is linked as the worked example. Full runbook in `references/running-the-eval.md`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: Christina Wang <christwang@nvidia.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: liang.feng <liangf@nvidia.com>
Summary
Stacked PR: based on #324's branch
skills/generate-media-migration-and-eval-public; merge this PR into that branch first, then #324 carries both tomain. Skill-only:.githubis identical to the base.Follow-up to #324: fixes every fatal failure and repeated self-correction of the
cosmos3-generate-mediaeval matrix (11 cases × claude, codex, cursor, opencode). Baseline (groupci-pr324-b50b766): 42/44 PASS, 14/44 first-attempt. With the fixes (groupci-pr327-b7ad087): 44/44 PASS, 44/44 first-attempt.eval/eval.configis unchanged from the base branch, so before and after are measured on the same prompts, assertions and checks. Notebook-verbatim text inreferences/stays verbatim; every skill addition is a marked skill note ("Skill note (not in the notebook): …") or a declared in-block deviation.Fixes
Where =
file:linesat55f0f0f(permalinks;SKILL.md=.agents/skills/cosmos3-generate-media/SKILL.md, reference names =references/<name>). Problem → fix, in priority order; F2d was added after the validation run (see Validation).<tag>) plus a deadTRTLLM_USE_PRECOMPILEDhint; no wheel version anywhere, so cursor/opencode pip-installed stable 1.2.x, which lacks VisualGentensorrt_llm==1.3.0rc27+torch==2.13.0+cu130from pypi.nvidia.com/cu130 (uv--index-strategy unsafe-best-match), VisualGen preflight, pinned checkout for YAMLs only; Route B = source build; mirrored as skill notes in trt-llm.md / distilled-trt-llm.mdpyproject.tomlpins uv==0.11.29;uv venv/pip/syncabort with uv 0.13 anduv self updaterefuses--no-config; Variant 2: pinned-uv preflight (side-by-side install oruvx --from 'uv==0.11.29'); one note in "Read this first"; skill notes in diffusers.md, cosmos-framework.md, payloads.mdnvidia-cutlass-dsl==4.8.0.dev0without--prerelease=allow, which then pulls mpmath 1.5.0a1--no-configfor Variants 1/5/6; 0.11.29 only foruv sync)exportandsource …/activateof the first call were gone in the second, souv pip installwent into the evaluator's own venv and the import check ran against the wrong interpreter (then a needless OpenCV downgrade: the same block passed first-attempt in the other eleven diffusers cells of that run)uv pipcommands of the Variant 1 block and of diffusers.md § 3 carry--python "$COSMOS3_DIFFUSERS_VENV"(declared in-block addition; with the variable unset uv stops instead of installing elsewhere), the import check and the generation snippets run with"$COSMOS3_DIFFUSERS_VENV/bin/python", and the block says it is one shell callcosmos_guardrailpulls GUI opencv; the pipeline imports it even with the safety checker offapt-get update, root caveat); skill notes in diffusers.md / payloads.mdlibxcb.so.1uv pip installcommand in SKILL.md Variant 1 and, as a declared in-block deviation, in diffusers.md § 3CUDA_HOME, CUDA-13 libs via the cu130 index, seeded venv, ffmpegTRTLLM_USE_PRECOMPILED=1 pip install -e .resolves an unpublished1.3.0rc26+bca6761ab8wheel; rc26 binaries lack an op the pinned Python needsav, PIL; expected smoke facts) + pointers; NIM headless-check note/health503 while warming undocumented; NIMdocker run -d --rmdestroys the logs--rmdropped (recorded deviation); Nano/Super t2i request body stated in Variant 5setsid … &, SIGINT → SIGTERM → SIGKILL escalation, leftover check by PID; never start a second server on a busy GPU (the launch script enforces it)cpu_offload_configroute was undocumentedcpu_offload_configat ≥ 128 GiB, else the Hugging Facefp8branch with theembed_tokensignore-list patch (eval-verified); refuses to start on a busy GPU; onesetsid trtllm-serve+/healthpoll with a 1800 s deadlinedocker runpasses no-e HF_TOKENand omitsSGLANG_DISABLE_COSMOS3_GUARDRAILS=1; the server exits with GatedRepoError 401-e SGLANG_DISABLE_COSMOS3_GUARDRAILS=1 -e HF_TOKENin every launch block; request bodyguardrails: falsedocker runblocks passed no-e HF_TOKEN: on a fresh node with a cold Hugging Face cache the first launch crashed with HTTP 429 during the anonymous model lookup-e HF_TOKENin everyvllm servelaunch; the skill carries that text 1:1 (vllm-omni.md § 2, SKILL.md Variant 3) andvllm-omni.md§ 7.1 records why the token matters — exportHF_TOKENbefore the launchlist-model-profiles,NIM_MODEL_PROFILE,/v1/manifest) and guardrail env switches missing from the launch block/v1/metadatacheck in the Variant 7 launch; env lines in both launch blocks;/v1/manifest+selectedModelProfileIdin the inspect listschmod -R 777never reaches a daemon-created mountdocker run --user 0 … chown 1000:1000) runs only for an empty cache this run created or withNIM_CACHE_REPAIR=1, otherwise the launch stops with guidance (review follow-up, see below)/v1/images/generations;/health200 does not exercise the image routeffmpeg -frames:v 1extraction documented in Variant 6 and distilled-trt-llm.md/v1/videos/generationsreturned HTTP 500 after a successful denoise/v1/images/generationswithoutput_type: "image"(explicit body; needs rc27), recorded in result_summary.mdexamples/visual_gen/configs/*.yaml, yet the block prescribed full clone + submodules + LFSgit fetch --depth 1 origin <sha>), LFS skipped; shallow-clone warning; Edge needs no checkoutpip install cosmos_guardrail==0.3.0unconditional although guardrails are disabled; unresolvable on 1.2.1cosmos_guardrail==0.3.2(its former NLTK data step is gone, #332), with the transformers>=5 caveat/v1/inferaccepted the compact-JSON assetsuv pip installrun in a later shell call than the venv activation landed the wheel set in whichever Python was first on PATH (eval: the evaluator's own venv, wherellisthas no wheel and the source build wantedclang)uv pip install --python "$TRTLLM_VENV/bin/python","$TRTLLM_VENV/bin/python" -c …,"$TRTLLM_VENV/bin/trtllm-serve"(the F2c mechanism applied to the TensorRT-LLM launch; added after the validation run)Review follow-ups (2026-10-29)
Three adjustments after the review, all in one commit (
ddb28a2), no eval re-run: (1) the fp8 route ofdistilled-trt-llm.md§ 7.2 no longer deletes anything — the overlay is a freshmktemp -ddirectory, and a caller-setFP8_DSTmust not exist yet and must not beFP8_SRCor a path inside it; (2) the Variant 7 cache preflight tests write access as the NIM user first and repairs ownership only for an empty cache this run created or withNIM_CACHE_REPAIR=1, otherwise it fails with guidance (the host-side recursivechmodis gone too); (3)diffusers.md§ 8.4 is a shared setup block plus one block per mode, and Variant 1 asks for the setup block plus only the requested mode's block.Validation
Baseline (first commit
b7ad087) — run 40660687591, dashboard group ci-pr327-b7ad087:44/44 PASS (44/44 first-attempt, 0 FAIL, 0 no report, 0 errors; static assessment 100/100)
Baseline vs #324 (compare; the branch compare always shows the newest result per cell of each branch):
A
group:ci-pr324-b50b766: 42/44 PASS, 14 first-attempt · Bgroup:ci-pr327-b7ad087: 44/44 PASS, 44 first-attempt · improved 2, regressed 0diffusers-edge-t2idiffusers-edge-t2vdiffusers-nano-t2idistilled-trtllm-t2iframework-edge-t2iframework-nano-t2inim-generator-i2vsglang-edge-t2itrtllm-edge-t2itrtllm-nano-t2ivllm-omni-edge-t2iCompletion: overall verdict before → after (✅ PASS, ❌ FAIL). First time success: passed on the first attempt, without a self-correction, before → after.
Added after the validation run: F2d (
bad39b1); four relative-link path corrections inreferences/(../cookbooks/…→../../cookbooks/…); and, merged from #324, the vLLM-Omni notebook's final version (#329:$PWDmounts,-e HF_TOKEN, the FP8 "Quantized Checkpoints" section invllm-omni.md§ 2 and SKILL.md Variant 3; the FP8 pointer inpayloads.md§ 1) — validated locally with the four vllm-omni-edge-t2i cells on the base branch, 4/4 PASS first attempt.git diff b7ad087 55f0f0f -- .agents/skills/cosmos3-generate-mediashows exactly these.🤖 Generated with Claude Code