fix(studio): no bloquear Generate de imagen por campos residuales del formulario - #276
Closed
cursor[bot] wants to merge 1 commit into
Closed
Conversation
Load Settings and reroll copy H3/video/primary-settings keys into the shared Studio params bag. The closed v2 builder treated those leftovers as fatal, so Generate and reroll of an image failed after pencil. Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
This was referenced Sep 9, 2026
25 tasks
Owner
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumen ejecutivo
Qué cambia
El constructor v2 de comandos de imagen omite las claves ajenas al catálogo que llegan del formulario compartido de Studio (Load Settings, reroll y
primary_settingsnativos). Sigue rechazando inyección de envelope y valores inválidos del contrato.Para qué sirve
Tras el lápiz o un reroll, Generate de imagen dejaba de funcionar: el formulario arrastra política H3, perturbación,
duration_secondsy otros leftovers. El contrato cerrado los trataba como error fatal.Impacto para el usuario
Volver a generar o cargar ajustes de una imagen ya no falla. Vídeo, audio y MCP no cambian.
Riesgo
Estado
Summary
createStudioImageGenerationCommandprojected the complete Studio params bag onto the closed v2 image catalog and threw on any unknown key. That bag is not image-only:loadSettingsFromOutputalways writesminimax_h3_planning_style/minimax_h3_audio_policy.wgp.primary_settingsinto the sidecar (duration_seconds,perturbation_*,stg_scale,keyframe_*, …).rerollGenerationcopies those keys back intoparams, then Generate fails before POST.The builder now drops non-catalog leftovers and
undefinedvalues. Envelope injection, bad references, and invalid catalogued fields still fail closed.Overview
Studio Image Generate →
startGenerationassembles the shared form →prepareStudioSubmission→createStudioImageGenerationCommand. After Load Settings or reroll that form includes video/H3/engine defaults. Those keys are omitted from the durable command; the typed image fields still freeze and POST as before.Detailed changes
Backend
Unchanged.
UI and Wizard
ui/src/features/studio/generationSpec.ts: skip non-catalog form leftovers instead of throwing. Wizardstart_generationuses the same path.Data, provenance and compatibility
No storage or receipt change. MCP clients that already send a typed envelope are unaffected.
Files and ownership
ui/src/features/studio/generationSpec.ts— form projectionui/tests/studioImageGenerationCommands.test.ts— leftover omission + existing fail-closed casesui/tests/studioSubmissionFailure.test.ts— preparation pathIntentionally untouched: server admission, fingerprint, recovery queue.
Validation
Date (UTC): 2026-09-09
Base SHA: fe46f41 (
feat/shared-generation-commands)Head SHA: 8881bda
Validation scope: focused
python scripts/verify_clean_repo.pypython -m compileall -q app/services app/launch.py scriptsFocused Python tests: N/A (UI-only)
cd ui && npm run i18n:checkUI tests:
npx tsx --tsconfig tsconfig.app.json --import ./tests/setupI18n.ts --test tests/studioSubmissionFailure.test.ts tests/studioImageGenerationCommands.test.ts→ 22 passed, 0 failedcd ui && npm run lint -- --max-warnings=0cd ui && npm run buildgit diff --check(clean commit)E2E/smoke: N/A — logic projection; no browser stack with installed image models in this run
Code quality
main: pending CICI and review
CI of this HEAD: pending
Independent agent review of this HEAD: pending
Human merge click (operational, not code review): pending
Pending
Coste de la tarea
Notes and limitations
Active incompatible catalogued values (for example a non-empty
video_guidethat is not translated toimage_guide) still fail closed. This PR only drops keys outside the image catalog.Follow-up work
Merge into #275 before that branch lands, or cherry-pick onto
developmentafter #275.Checklist