mirror of
https://github.com/Comfy-Org/comfy-remote-nodes.git
synced 2026-11-04 23:37:22 +00:00
[PR #11] [MERGED] fix(local-validate): traverse AUTOGROW templates and DYNAMIC_COMBO branches #11
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/comfy-remote-nodes#11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/comfy-remote-nodes/pull/11
Author: @Kosinkadink
Created: 5/15/2026
Status: ✅ Merged
Merged: 5/15/2026
Merged by: @Kosinkadink
Base:
main← Head:fix/local-validate-nested-traversal📝 Commits (1)
6ab2371fix(local-validate): traverse AUTOGROW templates and DYNAMIC_COMBO branches📊 Changes
2 files changed (+309 additions, -19 deletions)
View changed files
📝
notes/run_image_max_batch.py(+174 -1)📝
proxy_node.py(+135 -18)📄 Description
Summary
Closes the blocking follow-up flagged in the PR-2 / PR-3 code review: the descriptor-driven
image_max_batchcap was firing client-side only for top-level IMAGE inputs (Flux2images, LTXV i2vimage). The four providers whose cap rides a nested AUTOGROW template inside a DYNAMIC_COMBO branch — GPT Image V2 (16), Grok ImageEditV2 (3 / 1 by branch), Grok VideoReference (7) — silently fell through to the server's defense-in-depth, defeating theno paid round tripguarantee PR-3 (#10) promised.This PR teaches the client validator to walk those nested shapes.
Changes
_collect_local_validaterecurses via the new_rules_from_input_spechelper. AUTOGROW specs surface their template's rules under a private__template__key; DYNAMIC_COMBO specs surface a__branches__map of{branch_key: {sub_name: rules}}._enforce_local_validatewalks__template__against each Autogrow slot value ({"image0": <env>, "image1": <env>, ...}) and__branches__against the DynamicCombo runtime dict, dispatching onvalue[<name>]to pick the active branch's sub-input rules.image_max_batchchecking lifted into a dedicated_check_image_max_batchhelper so the recursive enforcer keeps a single rule-application code path.parent.slot[.sub]label — e.g.\ninput 'model.images.image0' accepts at most 3 image frames…\nfor nested cases.notes/run_image_max_batch.pyextended with two fixtures (_autogrow_descriptor,_dyncombo_with_autogrow_descriptor) and 9 new sub-cases covering AUTOGROW slot over-cap, AUTOGROW None-slot tolerance, AUTOGROW all-under-cap, DYNAMIC_COMBO branch-A over-cap, DYNAMIC_COMBO branch-A under-cap, DYNAMIC_COMBO branch-B (cap=1) single-frame copy, DYNAMIC_COMBO unknown-branch defensive no-op, plus collected-rules shape assertions.model.images.image0cap=3 and cap=1 branches), GrokVideoReferenceNode_RNP (model.reference_images.reference0cap=7), OpenAIGPTImageNodeV2_RNP (model.images.image0cap=16) — all four nested-cap providers now fail fast client-side.Lockstep
Client-only fix. Server already publishes the rules on the nested templates (comfy-rnp-server#15,
feat(descriptor): declare image_max_batch local_validate caps); no paired server PR required. Wire shape unchanged — this PR just makes the client honour what the server already declared.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.