Skip to content

Commit 1773c61

Browse files
artokunclaude
andcommitted
docs(#1359): record the measurement behind the zero-coverage threshold
Verified the direction that would have been catastrophic: does collectNodeTypes return the same strings that appear as /object_info KEYS? If not, `t in object_info` is always false and this refuses EVERY live-canvas strip. Measured against this machine's live /object_info and three real pack workflows: anima 52 types, 36 covered, 16 missing anima-img2img 39 types, 33 covered, 6 missing krea2-identity 14 types, 13 covered, 1 missing Zero would be refused. The misses are all legitimate — frontend-only virtual nodes (Note, GetNode, SetNode, "Label (rgthree)"), UUID-typed subgraph nodes, and uninstalled packs — which also settles the quantifier: "refuse if ANY type is missing" would refuse all three. The over-broad direction is not hypothetical here, it is the default outcome, and the numbers now sit in the source so nobody tightens it later on the reasonable-sounding argument. Refs #1359 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent b5c7b28 commit 1773c61

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

src/orchestrator/panel-tools.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1590,9 +1590,25 @@ The conversion is refused rather than retried against ` +
15901590
// else entirely — at which point the converter skips every node and returns an empty
15911591
// workflow that reads as a success.
15921592
//
1593-
// Only a total miss refuses. PARTIAL coverage converts and warns, because an uninstalled
1594-
// custom node is a real and legitimate case, and refusing a whole strip over one missing
1595-
// type would be the over-broad direction that makes a guard worse than the bug.
1593+
// Only a total miss refuses. PARTIAL coverage converts and warns, and that is not a
1594+
// judgement call — MEASURED against this machine's live /object_info and three real pack
1595+
// workflows:
1596+
//
1597+
// anima 52 types, 36 covered, 16 missing
1598+
// anima-img2img 39 types, 33 covered, 6 missing
1599+
// krea2-identity 14 types, 13 covered, 1 missing
1600+
//
1601+
// Every real workflow has misses, and all of them are legitimate: frontend-only virtual
1602+
// nodes (Note, GetNode, SetNode, "Label (rgthree)"), UUID-typed SUBGRAPH nodes, and
1603+
// uninstalled packs. So "refuse if ANY type is missing" would refuse ALL THREE — the
1604+
// over-broad direction is not hypothetical here, it is the default outcome. Zero coverage
1605+
// never occurred, which is what makes it a usable signal for "this payload is not about
1606+
// this canvas".
1607+
//
1608+
// That measurement also settles the direction that would have been catastrophic:
1609+
// `collectNodeTypes` does return the same strings that appear as /object_info KEYS. If it
1610+
// did not, `t in object_info` would always be false and this would refuse EVERY
1611+
// live-canvas strip.
15961612
if (neededTypes.length > 0) {
15971613
const covered = neededTypes.filter((t) => t in (r.object_info as Record<string, unknown>));
15981614
if (covered.length === 0) {

0 commit comments

Comments
 (0)