You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
needs-runtime-test open questions don't gate findings: the same run said "source alone cannot determine which" and then shipped one candidate as strong inference / fix before porting #122
A phase can ship a finding as strong inference with action fix before porting while an open
question registered in the same run states that source alone cannot settle that exact point.
Nothing cross-checks the two, so the run contradicts itself and the confident version is the one
that reaches the reader.
Reproduction
Ran pipeline-full-with-deep-audit.yaml over a Windows-only local LLM frontend
(ElodineOfficial/GobboNet at 5524fd4), then verified the findings by executing the product.
defect-scan-mechanical registers q-logit-bias-root-cause, kind: needs-runtime-test,
description ending: "the breakage is either upstream (llama-server ignoring/not supporting
logit_bias on the pinned build), a request-shape mismatch, or a tokenizer mismatch. Source
alone cannot determine which."
The same phase routes the shape hypothesis onward as mech-CF3.
defect-scan-semantic Pass 5 CodeCartographer for [Pi] #2 then closes mech-CF3 by asserting the request-shape
candidate: the client sends logit_bias as a map where /v1/chat/completions expects an array
of {id, bias}, labelled strong inference, action fix before porting, with a one-line
reshape as the recommended fix.
Both artifacts ship. q-logit-bias-root-cause is still listed unresolved in status.yaml
while the finding that presumes it resolved carries an actionable label.
Expected behavior
If a run registers an open question whose stated reason is that source cannot settle a point, no
finding in that run should assert one of that question's candidates with an action label implying
it is settled. Either the question closes with evidence, or the finding inherits the question's
uncertainty.
Concretely, one of:
Block fix before porting on any finding that closes a carry-forward derived from an unresolved needs-runtime-test question, and force a weaker action such as needs-runtime-test or port differently.
Add an evidence level below strong inference for claims about external-system behavior, since
server-side payload parsing, API contracts and engine-version behavior are not observable from
client source at any read depth.
At minimum, have validation flag the contradiction so the orchestrator sees it before completion.
Actual behavior
Both findings shipped confidently and both were wrong when executed. The confident label survived;
the hedge did not travel with it.
Case 1, and this one was harmful. Runtime testing against the pinned engine (b9294,
temperature 0, three deterministic runs per cell) inverted the finding:
logit_bias shape
Result on /v1/chat/completions
{"13753": -20} (what the client sends)
suppresses the token, works
[{"id":13753,"bias":-20}] (the recommended fix)
silently ignored, HTTP 200, no parse complaint, output byte-identical to no bias
Re-verified on b10509, 1,215 builds later: same result. The recommended one-line reshape would
have converted a working feature into the one shape the engine ignores, with no error surfacing.
The real cause was a tokenizer-level ceiling that the audited code already documented in a comment
the scan had read.
Case 2, same family.defect-scan-mechanical recorded in its coverage limits that "the encoded search-proxy command (launch.bat:1608) was not fully decoded."defect-scan-semantic
Pass 4 #1 then asserted, as observed fact, that "the search proxy forwards verbatim to https://ollama.com/api" and concluded the project's privacy claim was "false as written."
Decoding and running that component showed it builds a fresh header hashtable and drops browser
headers, so the claim was substantially true. An upstream phase's declared coverage gap did not
stop a downstream phase asserting a conclusion inside it.
Environment
Surface: MCP server
Pipeline: pipeline-full-with-deep-audit.yaml
Phase that failed: defect-scan-semantic (both cases); contributing gap in defect-scan-mechanical
LLM provider / model: Claude, Opus 5
Node version: v22.22.3
CodeCartographer version: v0.16.0
OS: Fedora Linux 7.1.8 (audited target is Windows-only; runtime verification ran on both)
Additional context
The two findings the run ranked highest in its own summaries were the two that were wrong. What
survived verification was the mechanical material: missing request-body size caps, an over-broad
static file handler, a credential prefix written to a browser console, wildcard CORS. Inventory and
omission-spotting held up well. Every claim about what another process does with a payload did not,
and both were stated in the same register as the verifiable ones.
Three smaller instances of the same habit, from the same run, all plausible-looking specifics
stated flatly and all wrong: the engine zip recorded as ~300 MB when it is 32.8 MB; a logit_bias example strength of -5 when the product's default is -20; and "the call site" for a
reshape when there are two.
Suggested reading if useful: the runtime write-ups are on a public branch, TheAmericanMaker/GobboNet @ audit/logit-bias-runtime-result, under .codecarto/findings/runtime-egress-verification/ (TEST-PLAN-logit-bias.md, TEST-RESULT-logit-bias.md, egress-verification.md).
Summary
A phase can ship a finding as
strong inferencewith actionfix before portingwhile an openquestion registered in the same run states that source alone cannot settle that exact point.
Nothing cross-checks the two, so the run contradicts itself and the confident version is the one
that reaches the reader.
Reproduction
Ran
pipeline-full-with-deep-audit.yamlover a Windows-only local LLM frontend(ElodineOfficial/GobboNet at 5524fd4), then verified the findings by executing the product.
defect-scan-mechanicalregistersq-logit-bias-root-cause,kind: needs-runtime-test,description ending: "the breakage is either upstream (llama-server ignoring/not supporting
logit_bias on the pinned build), a request-shape mismatch, or a tokenizer mismatch. Source
alone cannot determine which."
mech-CF3.defect-scan-semanticPass 5 CodeCartographer for [Pi] #2 then closesmech-CF3by asserting the request-shapecandidate: the client sends
logit_biasas a map where/v1/chat/completionsexpects an arrayof
{id, bias}, labelledstrong inference, actionfix before porting, with a one-linereshape as the recommended fix.
q-logit-bias-root-causeis still listed unresolved instatus.yamlwhile the finding that presumes it resolved carries an actionable label.
Expected behavior
If a run registers an open question whose stated reason is that source cannot settle a point, no
finding in that run should assert one of that question's candidates with an action label implying
it is settled. Either the question closes with evidence, or the finding inherits the question's
uncertainty.
Concretely, one of:
fix before portingon any finding that closes a carry-forward derived from an unresolvedneeds-runtime-testquestion, and force a weaker action such asneeds-runtime-testorport differently.strong inferencefor claims about external-system behavior, sinceserver-side payload parsing, API contracts and engine-version behavior are not observable from
client source at any read depth.
Actual behavior
Both findings shipped confidently and both were wrong when executed. The confident label survived;
the hedge did not travel with it.
Case 1, and this one was harmful. Runtime testing against the pinned engine (
b9294,temperature 0, three deterministic runs per cell) inverted the finding:
logit_biasshape/v1/chat/completions{"13753": -20}(what the client sends)[{"id":13753,"bias":-20}](the recommended fix)Re-verified on
b10509, 1,215 builds later: same result. The recommended one-line reshape wouldhave converted a working feature into the one shape the engine ignores, with no error surfacing.
The real cause was a tokenizer-level ceiling that the audited code already documented in a comment
the scan had read.
Case 2, same family.
defect-scan-mechanicalrecorded in its coverage limits that"the encoded search-proxy command (launch.bat:1608) was not fully decoded."
defect-scan-semanticPass 4 #1 then asserted, as
observed fact, that "the search proxy forwards verbatim tohttps://ollama.com/api" and concluded the project's privacy claim was "false as written."Decoding and running that component showed it builds a fresh header hashtable and drops browser
headers, so the claim was substantially true. An upstream phase's declared coverage gap did not
stop a downstream phase asserting a conclusion inside it.
Environment
pipeline-full-with-deep-audit.yamldefect-scan-semantic(both cases); contributing gap indefect-scan-mechanicalAdditional context
The two findings the run ranked highest in its own summaries were the two that were wrong. What
survived verification was the mechanical material: missing request-body size caps, an over-broad
static file handler, a credential prefix written to a browser console, wildcard CORS. Inventory and
omission-spotting held up well. Every claim about what another process does with a payload did not,
and both were stated in the same register as the verifiable ones.
Three smaller instances of the same habit, from the same run, all plausible-looking specifics
stated flatly and all wrong: the engine zip recorded as ~300 MB when it is 32.8 MB; a
logit_biasexample strength of -5 when the product's default is -20; and "the call site" for areshape when there are two.
Suggested reading if useful: the runtime write-ups are on a public branch,
TheAmericanMaker/GobboNet@audit/logit-bias-runtime-result, under.codecarto/findings/runtime-egress-verification/(TEST-PLAN-logit-bias.md,TEST-RESULT-logit-bias.md,egress-verification.md).