* fix(inspector): pass text through unknown nodes instead of refusing them (#381) The inspector refused any node class missing from the semantics table, so a PromptManagerPair behind an rgthree Any Switch showed "Prompt uses a node the inspector does not support". The inspection resolver (Python and browser) now reads through unknown nodes: a text input is the text, positive/negative route by output slot, a conditioning input is followed alone, otherwise every linked input except core type inputs (pass_through.skip_inputs). PromptManager nodes are authoritative; several different texts become one candidate each ("Several prompts reach the sampler"). A seeded text node with no conditioning input is generated at run time, and a recorded PromptManager execution is not checked against text that passed through an unknown node. INSPECTION_RESOLVER_VERSION goes to 2; ingestion keeps the default profile. A legacy parity gate records every committed graph whose inspection positive matches the legacy parser's; no graph may leave it. * fix(inspector): keep recorded pair text, string-only seed rule, role inputs and unique candidates (#381) Review of the pass-through: a walk through an unknown node never overrides a PromptManagerPair's execution record (any outcome but work-limit is unverifiable while the record is checked); the run-time seed rule reads only string outputs; a node with positive/negative inputs follows only the role of the requested slot, nothing when it is unlinked; one text offered twice is one candidate. * fix(inspector): anchor on the saver that wrote the file and resolve stages on shared links (#381) An inspected file's name now anchors the inspection on the one saver whose filename_prefix (literal or traced) makes the file's stem <prefix>_<digits>[_]; the samplers in that saver's image ancestry are the candidates. No match, several matches or an unreadable walk anchor nothing, so the file stays "several possible prompts". In a latent walk, an earlier sampler reading the same conditioning links as the later one is the same prompt, not an unattributed stage. Python and the browser resolver behave the same; the legacy parity gate states each graph that differs from legacy on purpose. * fix(inspector): skip only plain first stages on shared links; an unfinished prefix scan anchors nothing (#381) Review of the saver anchor: a same-links earlier stage is skipped only when it is not a detailer, sets no prompt override and continues no other sampler, so an earlier prompt or override behind it is never hidden. A work limit while tracing a saver prefix ends the match scan without an anchor instead of counting that saver as no match. * test(inspector): cover every plain-first-stage outcome on both resolvers (#381) The frontend coverage gate found local-resolver-stages.mjs branches at 92.44% (< 93). Each way an earlier stage stops being a plain first stage (no latent, literal, missing or cyclic latent, a sampler-shaped node, a detailer) is now a resolver test and an anchor-first-stage-* parity vector.
108 lines
2.8 KiB
JSON
108 lines
2.8 KiB
JSON
{
|
|
"generation_params": [
|
|
"case:basic",
|
|
"case:shared-prompt-pipeline",
|
|
"tests/fixtures/inspection_parity/f02.png",
|
|
"tests/fixtures/inspection_parity/f03.png",
|
|
"tests/fixtures/inspection_parity/f06c.png",
|
|
"tests/fixtures/inspection_parity/f06e.png",
|
|
"tests/fixtures/inspection_parity/f07a.png",
|
|
"tests/fixtures/inspection_parity/f07b.png",
|
|
"tests/fixtures/inspection_parity/f08.png",
|
|
"tests/fixtures/inspection_parity/f09.png",
|
|
"tests/fixtures/inspection_parity/f10.png",
|
|
"tests/fixtures/inspection_parity/f11.png",
|
|
"tests/fixtures/inspection_parity/f15.png",
|
|
"tests/fixtures/inspection_parity/f16.png",
|
|
"tests/fixtures/inspection_parity/f23.png"
|
|
],
|
|
"inspection_parity": [
|
|
"f02",
|
|
"f03",
|
|
"f06c",
|
|
"f06e",
|
|
"f07a",
|
|
"f07b",
|
|
"f08",
|
|
"f09",
|
|
"f10",
|
|
"f11",
|
|
"f14",
|
|
"f15",
|
|
"f16",
|
|
"f23"
|
|
],
|
|
"local_resolver": [
|
|
"anchor-first-stage-no-latent",
|
|
"anchor-same-links",
|
|
"anchor-same-links-unanchored",
|
|
"built-chars",
|
|
"class-type-missing",
|
|
"class-type-number",
|
|
"combine-equal",
|
|
"controlnet-slot1",
|
|
"custom-cfg",
|
|
"duplicate-key",
|
|
"encode",
|
|
"int-id",
|
|
"latent-encode",
|
|
"overwritten-bad-workflow",
|
|
"pair-execution",
|
|
"pair-execution-bad-json",
|
|
"pair-execution-mismatch",
|
|
"pair-execution-negative-changed",
|
|
"pair-execution-other-node",
|
|
"pair-execution-truncated",
|
|
"pair-execution-two-records",
|
|
"pair-execution-version-float",
|
|
"pair-execution-version-true",
|
|
"pair-graph",
|
|
"pass-through-unknown-role-inputs",
|
|
"passthrough",
|
|
"prompt-and-parameters",
|
|
"prompt-manager",
|
|
"select-detailer-chain-same",
|
|
"select-detailer-no-sampler-upstream",
|
|
"select-detailer-output-walk-exhausted",
|
|
"select-detailer-same-prompt",
|
|
"select-edge-hires-fix-denoised-slot",
|
|
"select-edge-hires-fix-lineage-cycle",
|
|
"select-edge-hires-fix-two-refiners",
|
|
"select-flux-concat",
|
|
"select-flux-reroute-input",
|
|
"select-flux-three-stage",
|
|
"select-hires-fix",
|
|
"select-hires-fix-both-saved",
|
|
"select-hires-fix-reroute",
|
|
"select-hires-fix-unlisted",
|
|
"select-multistage-latent",
|
|
"select-preview-dropped",
|
|
"select-preview-through-bad-node",
|
|
"select-runtime-flux-other-full-prompt",
|
|
"select-runtime-flux-trigger",
|
|
"select-runtime-search-list-append",
|
|
"select-runtime-through-chained",
|
|
"select-runtime-through-concat",
|
|
"select-runtime-through-text-encode",
|
|
"select-runtime-traced-prepend",
|
|
"select-runtime-trigger-append-single",
|
|
"select-runtime-trigger-pair",
|
|
"select-runtime-trigger-prepend",
|
|
"select-three-identical-one-advanced",
|
|
"select-two-identical",
|
|
"select-unconsumed-stage-kept",
|
|
"several-samplers",
|
|
"smz-false",
|
|
"text-at-limit",
|
|
"unknown-encoder",
|
|
"workflow-type-dict",
|
|
"workflow-type-in-subgraph",
|
|
"workflow-type-list",
|
|
"workflow-type-without-id",
|
|
"zeroed"
|
|
],
|
|
"unknown_nodes": [
|
|
"unknown-role-inputs"
|
|
]
|
|
}
|