spec: #992 is not a connect bug — four mechanisms eliminated, two now stale - #998
Draft
artokun wants to merge 3 commits into
Draft
spec: #992 is not a connect bug — four mechanisms eliminated, two now stale#998artokun wants to merge 3 commits into
artokun wants to merge 3 commits into
Conversation
Draft opened before investigation, per the working loop. Nothing measured yet. Refs #992
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…tale The investigation lived only in the PR body, so an empty branch carried it and nothing in the repo recorded it. Writes it to docs/design/ and labels every claim by HOW it was established — measured on a rig, or reasoned from source. Re-checked against main (189 commits touched web/ since the branch point): - Elimination 2 (reapplyDefsToLiveNodes) is STALE. fix(1172) added a refreshComboOptionsFromDefs call inside the sweep; its own comment says the sweep previously never touched options.values. The measured function is not the shipped one. The conclusion likely survives, but as reasoning. - Elimination 4 is transitively affected — panel_refresh_nodes runs registerNodesFromDefs and the changed sweep in one pass. - Elimination 3 holds (signature gained a #1193 per-type cache param only). - Elimination 1 should be re-run — set-widget.js changed on 2026-08-11. - The reframing holds, and is now pinned to the REPORTER's build: connect-verify.js is blob 5fae91a in 0.11.43, at the merge-base and on main, with the isLinkPersisted call site wired in 0.11.43. Tag containment cannot show this (tagging began at v0.11.83); ancestry against the release commit can. Refs #992
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.
Investigation of #992. Ships a document, not a fix — deliberately.
Refs #992 — still OPEN, blocked on the reporter since 2026-08-10.
Until now this branch was a single empty commit and the whole investigation lived in this
PR description, so nothing in the repo recorded it and merging would have changed nothing. It
now adds
docs/design/992-connect-link-drop-eliminations.md, which labels every claim byhow it was established — measured on a rig, or reasoned from source.
Reported
panel_connectreturned success for a link that was gone by queue time(
Required input is missing (latent_image)), on aVAEEncode.LATENTfan-out to threeKSamplers. The first of the three vanished. Reporter on panel0.11.43,ComfyUI
0.31.1, frontend1.48.7.Measured on a live canvas (the reporter's ComfyUI/frontend build)
Against the panel at the branch point (
0.11.90), on 2026-08-10:set_widgeton KSampler #1reapplyDefsToLiveNodesrefreshComboOptionsFromDefsapp.registerNodesFromDefs(whatpanel_refresh_nodesdrives)Sizes stayed
270x262throughout. The reporter's affected node went270x262 → 392x286 → 392x262. None of the four resizes a node, so none reproduces the only fingerprint.Re-checked 2026-08-14 — two eliminations went stale
mainmoved 189 commits touchingweb/since the branch point.67e05b53(fix(1172), landed 2026-08-14) added arefreshComboOptionsFromDefscall insidereapplyDefsToLiveNodes; the commit's owncomment says the sweep previously "never touched
options.values". The function that wasmeasured is not the one that ships. The conclusion probably survives — combo rebuilding
writes
w.options.values, nevernode.inputsorgraph.links— but that is nowreasoning that replaced a measurement.
panel_refresh_nodesrunsregisterNodesFromDefsand the changed sweep in one pass.mergedInputsper-type cache (The refresh run budget is thin: refreshComboInNodes alone measures ~4.8s of a 9s run #1193); thewidget loop is unchanged.
set-widget.jschanged on 2026-08-11 (fix(1087)).The reframing — reasoned from source, now pinned to the reporter's build
graph_connectdoes not report success on LiteGraph's return value; that was #397 and itwas fixed.
isLinkPersistedrequiresgraph.links[link.id]to exist and the target inputto back-reference that same id, synchronously, failing closed — and the success payload is
unreachable unless it passed. So the payload was accurate when issued: the link existed and
was destroyed later. The reporter's retry succeeding and persisting fits.
The original version of this claim compared against current source, which does not establish
what the reporter was running. Now measured by blob identity:
web/js/lib/connect-verify.jsis blob
5fae91a2— byte-identical in0.11.43(release commita1ac583f), at themerge-base, and on
main— with theisLinkPersistedcall site wired in0.11.43.A fifth mechanism, ruled out from the report itself
LiteGraph destroys the wire a connect replaces; the panel discloses that as
replaced_link,and the disclosure existed in
0.11.43.142.latent_imagewas connected exactly once and thatpayload carried no
replaced_link— so replacement-on-reconnect did not destroy this link.Why this ships no fix
Hardening
panel_connectwith a re-verification pass would be ceremony aimed at the wrongmechanism: it would leave the actual link-destroyer in place, slow every graph build, muddy the
tool's contract, and let the issue be closed as addressed.
Still blocked on the reporter for the
panel_edit_noderesize calls on 141/144/147 — a resizeis the only operation in their sequence that changes node geometry, which is the one
fingerprint left.
Verification
origin/main(clean, no conflict markers).npm run test:unit: all four gates green (i18n, i18n-render, tool-vocabulary, panel-scope);4397/4399 pass, 1 todo. The single failure is
manager-install.test.mjs"panel_install_node times out while the canvas remains responsive #671verifyInstalled … inside the reply window", a wall-clock budget assertion that measured
19212 ms under full-suite parallel load; the file passes 122/122 run alone. This branch
changes no executable code.