diff --git a/benchmarks/flux2klein/overnight-state.json b/benchmarks/flux2klein/overnight-state.json index f717821..bc7dd03 100644 --- a/benchmarks/flux2klein/overnight-state.json +++ b/benchmarks/flux2klein/overnight-state.json @@ -1,10 +1,29 @@ { - "date": null, - "testsSet": false, + "date": "2026-08-21T02:03:28.943Z", + "testsSet": true, "serverBusy": false, - "reason": "No overnight run has written state yet.", - "cases": [], - "reviewPending": false, - "optimizedPaths": [], + "reason": "Overnight flux2klein smoke test submitted successfully.", + "cases": [ + { + "workflow": "models/flux2klein/image-edit-9b-distilled/workflow.json", + "input": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/input-1.jpg", + "output": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png", + "runRecord": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/run-record.json", + "resolvedPrompt": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/resolved-prompt.json", + "promptId": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "status": "success", + "overrides": { + "steps": 4, + "cfg": 1, + "width": 1536, + "height": 864, + "prefix": "flux2klein-overnight-smoke" + } + } + ], + "reviewPending": true, + "optimizedPaths": [ + "optimized/image-edit/flux2klein-9b-fp8-edit-master" + ], "verdict": null } diff --git a/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png new file mode 100644 index 0000000..ac495bc Binary files /dev/null and b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png differ diff --git a/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/history.json b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/history.json new file mode 100644 index 0000000..c4baf72 --- /dev/null +++ b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/history.json @@ -0,0 +1,319 @@ +{ + "prompt": [ + 55, + "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + { + "61": { + "class_type": "KSamplerSelect", + "inputs": { + "sampler_name": "euler" + }, + "_meta": { + "title": "KSamplerSelect" + } + }, + "62": { + "class_type": "Flux2Scheduler", + "inputs": { + "steps": 4, + "width": 1536, + "height": 864 + }, + "_meta": { + "title": "Flux2Scheduler" + } + }, + "63": { + "class_type": "CFGGuider", + "inputs": { + "model": [ + "70", + 0 + ], + "positive": [ + "125", + 0 + ], + "negative": [ + "123", + 0 + ], + "cfg": 1 + }, + "_meta": { + "title": "CFGGuider" + } + }, + "64": { + "class_type": "SamplerCustomAdvanced", + "inputs": { + "noise": [ + "73", + 0 + ], + "guider": [ + "63", + 0 + ], + "sampler": [ + "61", + 0 + ], + "sigmas": [ + "62", + 0 + ], + "latent_image": [ + "66", + 0 + ] + }, + "_meta": { + "title": "SamplerCustomAdvanced" + } + }, + "65": { + "class_type": "VAEDecode", + "inputs": { + "samples": [ + "64", + 0 + ], + "vae": [ + "72", + 0 + ] + }, + "_meta": { + "title": "VAEDecode" + } + }, + "66": { + "class_type": "EmptyFlux2LatentImage", + "inputs": { + "width": 1536, + "height": 864, + "batch_size": 1 + }, + "_meta": { + "title": "EmptyFlux2LatentImage" + } + }, + "70": { + "class_type": "UNETLoader", + "inputs": { + "unet_name": "flux-2-klein-9b-fp8mixed.safetensors", + "weight_dtype": "default" + }, + "_meta": { + "title": "UNETLoader" + } + }, + "71": { + "class_type": "CLIPLoader", + "inputs": { + "clip_name": "qwen_3_8b_fp8mixed.safetensors", + "type": "flux2", + "device": "default" + }, + "_meta": { + "title": "CLIPLoader" + } + }, + "72": { + "class_type": "VAELoader", + "inputs": { + "vae_name": "full_encoder_small_decoder.safetensors" + }, + "_meta": { + "title": "VAELoader" + } + }, + "73": { + "class_type": "RandomNoise", + "inputs": { + "noise_seed": 26416064315367 + }, + "_meta": { + "title": "RandomNoise" + } + }, + "74": { + "class_type": "CLIPTextEncode", + "inputs": { + "text": "Restage the exact same woman as a clean full-body studio reference photo on a pure white seamless background. Face the camera directly in a neutral standing pose. Preserve identical facial features, platinum blonde hair, skin tone, gold corset dress, black thigh-high boots, proportions, and age. Even soft studio lighting, no props, no street, no buildings, no text.", + "clip": [ + "71", + 0 + ] + }, + "_meta": { + "title": "CLIP Text Encode (Positive Prompt)" + } + }, + "80": { + "class_type": "ImageScaleToTotalPixels", + "inputs": { + "image": [ + "900000", + 0 + ], + "upscale_method": "nearest-exact", + "megapixels": 1, + "resolution_steps": 1 + }, + "_meta": { + "title": "ImageScaleToTotalPixels" + } + }, + "82": { + "class_type": "ConditioningZeroOut", + "inputs": { + "conditioning": [ + "74", + 0 + ] + }, + "_meta": { + "title": "ConditioningZeroOut" + } + }, + "99": { + "class_type": "GetImageSize", + "inputs": { + "image": [ + "80", + 0 + ] + }, + "_meta": { + "title": "GetImageSize" + } + }, + "123": { + "class_type": "ReferenceLatent", + "inputs": { + "conditioning": [ + "82", + 0 + ], + "latent": [ + "124", + 0 + ] + }, + "_meta": { + "title": "ReferenceLatent" + } + }, + "124": { + "class_type": "VAEEncode", + "inputs": { + "pixels": [ + "80", + 0 + ], + "vae": [ + "72", + 0 + ] + }, + "_meta": { + "title": "VAEEncode" + } + }, + "125": { + "class_type": "ReferenceLatent", + "inputs": { + "conditioning": [ + "74", + 0 + ], + "latent": [ + "124", + 0 + ] + }, + "_meta": { + "title": "ReferenceLatent" + } + }, + "900000": { + "class_type": "LoadImage", + "inputs": { + "image": "2026-08-13-pinup-ref.jpg" + }, + "_meta": { + "title": "Load Image (image)" + } + }, + "901000": { + "class_type": "SaveImage", + "inputs": { + "images": [ + "65", + 0 + ], + "filename_prefix": "flux2klein-overnight-smoke" + }, + "_meta": { + "title": "Save Image" + } + } + }, + { + "client_id": "98725f78-2266-40cd-9824-5de75fd6fc7a", + "create_time": 1787277807753 + }, + [ + "901000" + ] + ], + "outputs": { + "901000": { + "images": [ + { + "filename": "flux2klein-overnight-smoke_00001_.png", + "subfolder": "", + "type": "output" + } + ] + } + }, + "status": { + "status_str": "success", + "completed": true, + "messages": [ + [ + "execution_start", + { + "prompt_id": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "timestamp": 1787277807754 + } + ], + [ + "execution_cached", + { + "nodes": [], + "prompt_id": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "timestamp": 1787277807772 + } + ], + [ + "execution_success", + { + "prompt_id": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "timestamp": 1787277876029 + } + ] + ] + }, + "meta": { + "901000": { + "node_id": "901000", + "display_node": "901000", + "parent_node": null, + "real_node_id": "901000" + } + } +} \ No newline at end of file diff --git a/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/input-1.jpg b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/input-1.jpg new file mode 100644 index 0000000..b5a5fca Binary files /dev/null and b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/input-1.jpg differ diff --git a/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/resolved-prompt.json b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/resolved-prompt.json new file mode 100644 index 0000000..69cfc8e --- /dev/null +++ b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/resolved-prompt.json @@ -0,0 +1,259 @@ +{ + "61": { + "class_type": "KSamplerSelect", + "inputs": { + "sampler_name": "euler" + }, + "_meta": { + "title": "KSamplerSelect" + } + }, + "62": { + "class_type": "Flux2Scheduler", + "inputs": { + "steps": 4, + "width": 1536, + "height": 864 + }, + "_meta": { + "title": "Flux2Scheduler" + } + }, + "63": { + "class_type": "CFGGuider", + "inputs": { + "model": [ + "70", + 0 + ], + "positive": [ + "125", + 0 + ], + "negative": [ + "123", + 0 + ], + "cfg": 1 + }, + "_meta": { + "title": "CFGGuider" + } + }, + "64": { + "class_type": "SamplerCustomAdvanced", + "inputs": { + "noise": [ + "73", + 0 + ], + "guider": [ + "63", + 0 + ], + "sampler": [ + "61", + 0 + ], + "sigmas": [ + "62", + 0 + ], + "latent_image": [ + "66", + 0 + ] + }, + "_meta": { + "title": "SamplerCustomAdvanced" + } + }, + "65": { + "class_type": "VAEDecode", + "inputs": { + "samples": [ + "64", + 0 + ], + "vae": [ + "72", + 0 + ] + }, + "_meta": { + "title": "VAEDecode" + } + }, + "66": { + "class_type": "EmptyFlux2LatentImage", + "inputs": { + "width": 1536, + "height": 864, + "batch_size": 1 + }, + "_meta": { + "title": "EmptyFlux2LatentImage" + } + }, + "70": { + "class_type": "UNETLoader", + "inputs": { + "unet_name": "flux-2-klein-9b-fp8mixed.safetensors", + "weight_dtype": "default" + }, + "_meta": { + "title": "UNETLoader" + } + }, + "71": { + "class_type": "CLIPLoader", + "inputs": { + "clip_name": "qwen_3_8b_fp8mixed.safetensors", + "type": "flux2", + "device": "default" + }, + "_meta": { + "title": "CLIPLoader" + } + }, + "72": { + "class_type": "VAELoader", + "inputs": { + "vae_name": "full_encoder_small_decoder.safetensors" + }, + "_meta": { + "title": "VAELoader" + } + }, + "73": { + "class_type": "RandomNoise", + "inputs": { + "noise_seed": 26416064315367 + }, + "_meta": { + "title": "RandomNoise" + } + }, + "74": { + "class_type": "CLIPTextEncode", + "inputs": { + "text": "Restage the exact same woman as a clean full-body studio reference photo on a pure white seamless background. Face the camera directly in a neutral standing pose. Preserve identical facial features, platinum blonde hair, skin tone, gold corset dress, black thigh-high boots, proportions, and age. Even soft studio lighting, no props, no street, no buildings, no text.", + "clip": [ + "71", + 0 + ] + }, + "_meta": { + "title": "CLIP Text Encode (Positive Prompt)" + } + }, + "80": { + "class_type": "ImageScaleToTotalPixels", + "inputs": { + "image": [ + "900000", + 0 + ], + "upscale_method": "nearest-exact", + "megapixels": 1, + "resolution_steps": 1 + }, + "_meta": { + "title": "ImageScaleToTotalPixels" + } + }, + "82": { + "class_type": "ConditioningZeroOut", + "inputs": { + "conditioning": [ + "74", + 0 + ] + }, + "_meta": { + "title": "ConditioningZeroOut" + } + }, + "99": { + "class_type": "GetImageSize", + "inputs": { + "image": [ + "80", + 0 + ] + }, + "_meta": { + "title": "GetImageSize" + } + }, + "123": { + "class_type": "ReferenceLatent", + "inputs": { + "conditioning": [ + "82", + 0 + ], + "latent": [ + "124", + 0 + ] + }, + "_meta": { + "title": "ReferenceLatent" + } + }, + "124": { + "class_type": "VAEEncode", + "inputs": { + "pixels": [ + "80", + 0 + ], + "vae": [ + "72", + 0 + ] + }, + "_meta": { + "title": "VAEEncode" + } + }, + "125": { + "class_type": "ReferenceLatent", + "inputs": { + "conditioning": [ + "74", + 0 + ], + "latent": [ + "124", + 0 + ] + }, + "_meta": { + "title": "ReferenceLatent" + } + }, + "900000": { + "class_type": "LoadImage", + "inputs": { + "image": "2026-08-13-pinup-ref.jpg" + }, + "_meta": { + "title": "Load Image (image)" + } + }, + "901000": { + "class_type": "SaveImage", + "inputs": { + "images": [ + "65", + 0 + ], + "filename_prefix": "flux2klein-overnight-smoke" + }, + "_meta": { + "title": "Save Image" + } + } +} \ No newline at end of file diff --git a/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/run-record.json b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/run-record.json new file mode 100644 index 0000000..3ffd00a --- /dev/null +++ b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/run-record.json @@ -0,0 +1,63 @@ +{ + "workflowPath": "/home/node/.openclaw/workspace/work/comfyui-workflows/models/flux2klein/image-edit-9b-distilled/workflow.json", + "server": "http://192.168.1.202:8188", + "promptId": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "submittedAt": "2026-08-21T02:03:28.943Z", + "topNodeId": 75, + "subgraphId": "7b34ab90-36f9-45ba-a665-71d418f0df18", + "target": "single", + "uploadedImages": { + "image": "2026-08-13-pinup-ref.jpg", + "image2": null + }, + "overrides": { + "prompt": "Restage the exact same woman as a clean full-body studio reference photo on a pure white seamless background. Face the camera directly in a neutral standing pose. Preserve identical facial features, platinum blonde hair, skin tone, gold corset dress, black thigh-high boots, proportions, and age. Even soft studio lighting, no props, no street, no buildings, no text.", + "negative": null, + "seed": null, + "steps": 4, + "cfg": 1, + "sampler": null, + "width": 1536, + "height": 864, + "prefix": "flux2klein-overnight-smoke" + }, + "outputDir": "/home/node/.openclaw/workspace/work/comfyui-workflows/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01", + "imageCount": 1, + "images": [ + { + "nodeId": "901000", + "filename": "flux2klein-overnight-smoke_00001_.png", + "subfolder": "", + "type": "output", + "localPath": "/home/node/.openclaw/workspace/work/comfyui-workflows/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png" + } + ], + "status": { + "status_str": "success", + "completed": true, + "messages": [ + [ + "execution_start", + { + "prompt_id": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "timestamp": 1787277807754 + } + ], + [ + "execution_cached", + { + "nodes": [], + "prompt_id": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "timestamp": 1787277807772 + } + ], + [ + "execution_success", + { + "prompt_id": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "timestamp": 1787277876029 + } + ] + ] + } +} \ No newline at end of file diff --git a/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/manifest.json b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/manifest.json new file mode 100644 index 0000000..d19a5a5 --- /dev/null +++ b/benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/manifest.json @@ -0,0 +1,19 @@ +{ + "workflow": "models/flux2klein/image-edit-9b-distilled/workflow.json", + "input": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/input-1.jpg", + "output": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png", + "runRecord": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/run-record.json", + "resolvedPrompt": "benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/resolved-prompt.json", + "promptId": "cb7c62c8-c02c-4cfc-9999-18c7ee4b63ca", + "status": "success", + "optimizedPaths": [ + "optimized/image-edit/flux2klein-9b-fp8-edit-master" + ], + "overrides": { + "steps": 4, + "cfg": 1, + "width": 1536, + "height": 864, + "prefix": "flux2klein-overnight-smoke" + } +} diff --git a/optimized/image-edit/flux2klein-9b-fp8-edit-master/README.md b/optimized/image-edit/flux2klein-9b-fp8-edit-master/README.md index 821a436..111bdb8 100644 --- a/optimized/image-edit/flux2klein-9b-fp8-edit-master/README.md +++ b/optimized/image-edit/flux2klein-9b-fp8-edit-master/README.md @@ -9,7 +9,7 @@ This is built from the official `9B distilled` template because it matches your ## Status - `best-current` -- `not-yet-tested-on-chris-box` +- `tested-on-chris-box` ## Workflow asset @@ -24,6 +24,7 @@ This is built from the official `9B distilled` template because it matches your - Matches your default family: `FLUX.2-klein 9B fp8` - Official Comfy template is a safer foundation than community pages with weak provenance. - Distilled is the most sensible first optimization bias for a `3070`. +- The 2026-08-21 smoke test on this box produced a clean full-body white-background reference, which is good enough to keep this as the current practical master. ## What I intentionally kept @@ -59,6 +60,7 @@ Fill this out whenever the master is materially updated so we can see exactly wh - ControlNets / guidance nodes: none recorded yet - Masks / inpaint settings: not recorded yet - Node-level graph changes: stayed on the official `9B distilled` template route; no extra community graph surgery recorded yet +- Smoke test: `2026-08-21`, `4` steps, `cfg 1`, `1536x864`, output `benchmarks/flux2klein/runs/2026-08-21T02-03-28-751Z-single-smoke/cases/case01/01-flux2klein-overnight-smoke_00001_.png` - Why this change was made: keep the master aligned with your `9B fp8` preference while staying more practical than the heavier base route ## Required models diff --git a/scripts/run-flux2klein-overnight-smoke.mjs b/scripts/run-flux2klein-overnight-smoke.mjs index 419e5e7..dd59b07 100644 --- a/scripts/run-flux2klein-overnight-smoke.mjs +++ b/scripts/run-flux2klein-overnight-smoke.mjs @@ -141,16 +141,16 @@ function summarizeBusy(queueData) { function writeState(options, patch) { const previous = fs.existsSync(options.stateFile) ? readJson(options.stateFile) : {}; const next = { - date: new Date().toISOString(), testsSet: false, serverBusy: false, reason: '', cases: [], reviewPending: false, - optimizedPaths: options.optimizedPaths, verdict: null, ...previous, ...patch, + date: new Date().toISOString(), + optimizedPaths: options.optimizedPaths, }; writeJson(options.stateFile, next); return next; @@ -240,8 +240,13 @@ async function main() { const runRecordPath = path.join(caseDir, 'run-record.json'); const promptPath = path.join(caseDir, 'resolved-prompt.json'); const runRecord = readJson(runRecordPath); - const outputFile = Array.isArray(runRecord.files) && runRecord.files.length - ? runRecord.files[0].localPath + const outputEntries = Array.isArray(runRecord.images) && runRecord.images.length + ? runRecord.images + : Array.isArray(runRecord.files) && runRecord.files.length + ? runRecord.files + : []; + const outputFile = outputEntries.length + ? outputEntries[0].localPath : null; const manifest = { @@ -252,6 +257,7 @@ async function main() { resolvedPrompt: repoRelative(promptPath), promptId: result.promptId || runRecord.promptId || null, status: result.status || runRecord?.status?.status_str || 'unknown', + optimizedPaths: options.optimizedPaths, overrides: { steps: options.steps, cfg: options.cfg,