diff --git a/.github/skills/reference-catalog/SKILL.md b/.github/skills/reference-catalog/SKILL.md index 27bfdcc32..476fc7559 100644 --- a/.github/skills/reference-catalog/SKILL.md +++ b/.github/skills/reference-catalog/SKILL.md @@ -31,6 +31,7 @@ Use this skill to audit and update SD.Next model reference catalogs with minimal - Preserve existing field names and conventions used by neighboring entries. - Prefer deterministic normalization (stable key order, consistent value style). - Do not overwrite real thumbnails with placeholders. +- For `size` backfill, use `cli/hf-info.py` as the primary source of truth. ## Validation Checklist @@ -62,13 +63,23 @@ Use this skill to audit and update SD.Next model reference catalogs with minimal - Validate field value formats (e.g. size in GB, date format). - Ensure that all fields are consistent and not null, empty or contain zero values. +7. Size backfill checks (`size: 0`) +- Enumerate all entries with `"size": 0` across `data/reference*.json`. +- For each Hugging Face repo-style path (`owner/name`), run `cli/hf-info.py`. +- Parse `data.size` from tool output when present (format is MB string, e.g. `"23933.4MB"`). +- Convert MB to GB using deterministic rounding: `gb = round(mb / 1024, 2)`. +- Update only the `size` field for resolvable records; do not modify unrelated fields. +- If `cli/hf-info.py` returns `ok: false`, missing `data.size`, or non-repo paths, leave `size` unchanged and report as unresolved. +- Do not invent fallback sizes unless explicitly requested. + ## Safe Edit Workflow 1. Identify target entries and category intent. 2. Audit only relevant catalog files first. -3. Propose minimal edits (or apply when asked). -4. Re-validate JSON and duplicate checks. -5. Summarize exact changed records and rationale. +3. Run size backfill using `cli/hf-info.py`. +4. Propose minimal edits (or apply when asked). +5. Re-validate JSON and duplicate checks. +6. Summarize exact changed records and rationale. ## Common Failure Modes To Prevent @@ -77,6 +88,9 @@ Use this skill to audit and update SD.Next model reference catalogs with minimal - Breaking JSON structure while editing by hand - Inconsistent key naming across similar entries - Creating placeholder thumbnail over an existing asset +- Running `cli/hf-info.py` with the wrong Python environment/interpreter +- Treating `subfolder` variants as unsupported when the repo path itself is valid +- Writing guessed `size` values when `cli/hf-info.py` returns no size ## Output Contract @@ -87,4 +101,5 @@ When using this skill, provide: - Exact records changed (before/after summary) - Duplicate/conflict report across catalogs - Thumbnail sync result for `models/Reference` +- `size: 0` backfill report: total candidates, updated count, unresolved count, unresolved reasons - Residual risks or follow-up items diff --git a/CHANGELOG.md b/CHANGELOG.md index f64803901..fb3218124 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ - wrap `hf-download` methods - additional *typing* and *typechecks*, thanks @awsr - refactor `hash-cache` management, thanks @awsr + - validate all `reference` jsons and backfill all fields - **Fixes** - Prohibit `python==3.14` unless `--experimental` - UI CSS fixes, thanks @awsr @@ -92,7 +93,6 @@ - patch `z-image` for fp16 compatibility, thanks @resonantsky - patch `unipc` for timesteps device placement, thanks @resonantsky - `civitai` search and base-model discovery improvements - - validate all `reference` jsons - ui log formatting ## Update for 2026-04-01 diff --git a/data/reference-distilled.json b/data/reference-distilled.json index ab40f8fe6..ad7b07ddb 100644 --- a/data/reference-distilled.json +++ b/data/reference-distilled.json @@ -62,7 +62,7 @@ "desc": "ERNIE-Image-Turbo is a distilled ERNIE-Image variant optimized for fast generation with fewer denoising steps.", "skip": true, "extras": "sampler: Default, cfg_scale: 1.0, steps: 8", - "size": 0, + "size": 23.37, "tags": "distilled", "date": "2026 April" }, @@ -155,7 +155,7 @@ "extras": "", "tags": "distilled", "skip": true, - "size": 0, + "size": 51.93, "date": "2025 August" }, diff --git a/data/reference-nunchaku.json b/data/reference-nunchaku.json index 8852da7f7..27ffbcad5 100644 --- a/data/reference-nunchaku.json +++ b/data/reference-nunchaku.json @@ -7,7 +7,7 @@ "skip": true, "nunchaku": ["Model", "TE"], "tags": "nunchaku", - "size": 0, + "size": 32.95, "date": "2025 June" }, "FLUX.1-Schnell Nunchaku SVDQuant": { @@ -19,7 +19,7 @@ "nunchaku": ["Model", "TE"], "tags": "nunchaku", "extras": "sampler: Default, cfg_scale: 1.0, steps: 4", - "size": 0, + "size": 32.93, "date": "2025 June" }, "FLUX.1-Kontext Nunchaku SVDQuant": { @@ -30,7 +30,7 @@ "skip": true, "nunchaku": ["Model", "TE"], "tags": "nunchaku", - "size": 0, + "size": 32.95, "date": "2025 June" }, "FLUX.1-Krea Nunchaku SVDQuant": { @@ -41,7 +41,7 @@ "skip": true, "nunchaku": ["Model", "TE"], "tags": "nunchaku", - "size": 0, + "size": 32.95, "date": "2025 June" }, "FLUX.1-Fill Nunchaku SVDQuant": { @@ -53,7 +53,7 @@ "hidden": true, "nunchaku": ["Model", "TE"], "tags": "nunchaku", - "size": 0, + "size": 33.12, "date": "2025 June" }, "FLUX.1-Depth Nunchaku SVDQuant": { @@ -65,7 +65,7 @@ "hidden": true, "nunchaku": ["Model", "TE"], "tags": "nunchaku", - "size": 0, + "size": 42.66, "date": "2025 June" }, "Shuttle Jaguar Nunchaku SVDQuant": { @@ -76,7 +76,7 @@ "skip": true, "nunchaku": ["Model", "TE"], "tags": "nunchaku", - "size": 0, + "size": 32.93, "date": "2025 June" }, "Qwen-Image Nunchaku SVDQuant": { @@ -87,7 +87,7 @@ "skip": true, "nunchaku": ["Model"], "tags": "nunchaku", - "size": 0, + "size": 56.35, "date": "2025 June" }, "Qwen-Lightning (8-step) Nunchaku SVDQuant": { @@ -99,7 +99,7 @@ "nunchaku": ["Model"], "tags": "nunchaku", "extras": "steps: 8", - "size": 0, + "size": 56.35, "date": "2025 June" }, "Qwen-Lightning (4-step) Nunchaku SVDQuant": { @@ -111,7 +111,7 @@ "nunchaku": ["Model"], "tags": "nunchaku", "extras": "steps: 4", - "size": 0, + "size": 56.35, "date": "2025 June" }, "Qwen-Image-Edit Nunchaku SVDQuant": { @@ -122,7 +122,7 @@ "skip": true, "nunchaku": ["Model"], "tags": "nunchaku", - "size": 0, + "size": 56.35, "date": "2025 June" }, "Qwen-Lightning-Edit (8-step) Nunchaku SVDQuant": { @@ -134,7 +134,7 @@ "nunchaku": ["Model"], "tags": "nunchaku", "extras": "steps: 8", - "size": 0, + "size": 56.35, "date": "2025 June" }, "Qwen-Lightning-Edit (4-step) Nunchaku SVDQuant": { @@ -146,7 +146,7 @@ "nunchaku": ["Model"], "tags": "nunchaku", "extras": "steps: 4", - "size": 0, + "size": 56.35, "date": "2025 June" }, "Qwen-Image-Edit-2509 Nunchaku SVDQuant": { @@ -157,7 +157,7 @@ "skip": true, "nunchaku": ["Model"], "tags": "nunchaku", - "size": 0, + "size": 56.35, "date": "2025 September" }, "Sana 1.6B 1k Nunchaku SVDQuant": { @@ -168,7 +168,7 @@ "skip": true, "nunchaku": ["Model"], "tags": "nunchaku", - "size": 0, + "size": 23.3, "date": "2025 June" }, "Z-Image-Turbo Nunchaku SVDQuant": { @@ -180,7 +180,7 @@ "nunchaku": ["Model"], "tags": "nunchaku", "extras": "sampler: Default, cfg_scale: 1.0, steps: 9", - "size": 0, + "size": 32.06, "date": "2025 June" }, "SDXL Base Nunchaku SVDQuant": { @@ -191,7 +191,7 @@ "skip": true, "nunchaku": ["Model"], "tags": "nunchaku", - "size": 0, + "size": 33.55, "date": "2025 June" }, "SDXL Turbo Nunchaku SVDQuant": { @@ -203,7 +203,7 @@ "nunchaku": ["Model"], "tags": "nunchaku", "extras": "sampler: Default, cfg_scale: 1.0, steps: 4", - "size": 0, + "size": 20.33, "date": "2025 June" } } diff --git a/data/reference.json b/data/reference.json index 844006788..8fe66e55d 100644 --- a/data/reference.json +++ b/data/reference.json @@ -472,7 +472,7 @@ "desc": "X-Omni: Reinforcement learning makes discrete autoregressive image generative models great again", "preview": "X-Omni--X-Omni-SFT.jpg", "skip": true, - "size": 0, + "size": 23.8, "date": "2024 September", "experimental": true }, @@ -577,7 +577,7 @@ "preview": "hunyuanvideo-community--HunyuanImage-2.1-Diffusers.jpg", "extras": "", "skip": true, - "size": 0, + "size": 51.88, "date": "2025 August" }, "Tencent HunyuanImage 2.1 Refiner": { @@ -586,7 +586,7 @@ "preview": "hunyuanvideo-community--HunyuanImage-2.1-Diffusers.jpg", "extras": "", "skip": true, - "size": 0, + "size": 48.01, "date": "2025 August" }, "Tencent HunyuanDiT 1.2": { diff --git a/javascript/logMonitor.js b/javascript/logMonitor.js index 186c9dc73..3534b9e51 100644 --- a/javascript/logMonitor.js +++ b/javascript/logMonitor.js @@ -31,7 +31,8 @@ async function logMonitor() { if (l.level === 'WARNING') logWarnings++; if (l.level === 'ERROR') logErrors++; const module = `