fix(gamedev): card_art hires roto (UltimateSDUpscale exige batch_size) + INDEX conteo gamedev 10->20

El nodo UltimateSDUpscale declara batch_size como input requerido en /object_info;
comfyui_build_hires_fix_workflow y comfyui_inject_hires_fix no lo proveian, por lo
que card_art con hires=True fallaba en runtime. Se anade batch_size: 1 a ambos
constructores + guards de regresion en los tests (card_art golden hires, builder e
inject). Verificado con una generacion real en ComfyUI (carta 768x1152, sin
node_errors, prompt_id 4033fb0b). Bump de version 1.0.0->1.0.1 en ambos .md con
growth log y gotcha.

INDEX.md: la fila gamedev decia count=10; el cluster de assets 2D documentado en
gamedev-2d.md tiene 20 funciones (15 builders tag gamedev-2d + 5 de apoyo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Egutierrez
2026-06-27 00:00:38 +02:00
parent 8fb10fdf8a
commit ab27c253c5
8 changed files with 44 additions and 5 deletions
@@ -3,7 +3,7 @@ name: comfyui_inject_hires_fix
kind: function
lang: py
domain: ml
version: "1.0.0"
version: "1.0.1"
purity: pure
signature: "def comfyui_inject_hires_fix(workflow: dict, *, upscale_by: float = 1.5, denoise: float = 0.4, steps: int = 20, cfg: float = 7.0, seed: int = 0, upscale_model: str = '4x_foolhardy_Remacri.pth', sampler_name: str = 'euler', scheduler: str = 'normal', tile_width: int = 512, tile_height: int = 512) -> dict"
description: "Inyecta una segunda pasada hires-fix en un workflow ComfyUI ya construido (API format) que termina en VAEDecode -> SaveImage. Anade UpscaleModelLoader + UltimateSDUpscale (re-difusion por tiles) conectados a la imagen del VAEDecode y al model/vae del CheckpointLoaderSimple, y repunta el SaveImage a la imagen ampliada. Version encadenable-sobre-dict de comfyui_build_hires_fix_workflow. Pura: no muta el dict de entrada (copia profunda)."
@@ -39,7 +39,7 @@ params:
desc: "Alto de tile de UltimateSDUpscale (px). keyword-only."
output: "copia del workflow con UpscaleModelLoader + UltimateSDUpscale anadidos (node_ids = max id numerico + 1 y + 2) y el SaveImage repuntado a la salida [ultimatesdupscale_id, 0]. Si no habia SaveImage, se anade uno con filename_prefix 'hires'."
tested: true
tests: ["no muta el dict de entrada (pureza)", "inserta UltimateSDUpscale y UpscaleModelLoader", "repunta el SaveImage al UltimateSDUpscale", "params reflejados (upscale_by/denoise/seed)", "lanza ValueError si falta VAEDecode"]
tests: ["no muta el dict de entrada (pureza)", "inserta UltimateSDUpscale y UpscaleModelLoader", "repunta el SaveImage al UltimateSDUpscale", "params reflejados (upscale_by/denoise/seed) + batch_size", "lanza ValueError si falta VAEDecode"]
test_file_path: "python/functions/ml/tests/test_comfyui_inject_hires_fix.py"
file_path: "python/functions/ml/comfyui_inject_hires_fix.py"
---
@@ -81,3 +81,12 @@ VAEDecode -> SaveImage. Una sola llamada anade la segunda pasada completa.
Para grafos multi-salida construye con un builder dedicado.
- El nuevo node_id es `max(ids numericos) + 1` (y +2). Si tu workflow usa ids no
numericos, el contador cae a `len(workflow) + 1`.
- El nodo `UltimateSDUpscale` declara `batch_size` como input **requerido** en
`/object_info`; la inyección lo fija a `1`. Sin él, el submit pasaba la
validación de POST pero el grafo fallaba en runtime por input faltante.
## Capability growth log
- v1.0.1 (2026-06-27) — bugfix paralelo al de `comfyui_build_hires_fix_workflow`:
el nodo `UltimateSDUpscale` exige `batch_size` (input requerido en `/object_info`);
se añade `batch_size: 1` al nodo inyectado para que el workflow no falle en runtime.