From 47f1ca73e7b72e7a13adc0a9022408c4124b48aa Mon Sep 17 00:00:00 2001 From: profit Date: Wed, 22 Apr 2026 22:24:25 -0500 Subject: [PATCH] =?UTF-8?q?auditor:=20Level=201=20correction=20=E2=80=94?= =?UTF-8?q?=20keep=20think=3Dtrue,=20only=20temp=3D0=20is=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous Level 1 commit set think=false which broke the cloud inference check on real PR audits. gpt-oss:120b is a reasoning model; at think=false on large prompts (40KB diff + 14 claims) it returned empty content — verified by inspecting verdict 8-8e4ebbe4b38a which showed "cloud returned unparseable output — skipped" with 13421 tokens used and head:. Small-prompt tests passed because the model could respond without needing to think. Real audits with the full diff + claims context require the reasoning channel to produce any output at all. The determinism we need comes from temp=0 (greedy sampling). The reasoning trace at think=true varies in prose but greedy sampling converges to the same FINAL classification from identical starting state, so signatures remain stable. max_tokens restored to 3000 for the think trace + response. --- auditor/checks/inference.ts | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/auditor/checks/inference.ts b/auditor/checks/inference.ts index 5cddbc7..c6c3dbf 100644 --- a/auditor/checks/inference.ts +++ b/auditor/checks/inference.ts @@ -112,19 +112,22 @@ export async function runInferenceCheck(claims: Claim[], diff: string): Promise< { role: "system", content: systemMsg }, { role: "user", content: userMsg }, ], - // Deterministic classification mode — temp=0 is greedy-sample, - // so identical input → identical output on the same model - // version. think=false disables the reasoning trace that was - // letting variable prose leak into the classification output - // and inflate the audit_lessons signature set (observed as - // sig_count creep across the 9-run empirical test). + // Deterministic classification — temp=0 is greedy-sample, so + // identical input yields identical output on the same model + // version. This kills the signature creep we observed in the + // 9-run empirical test (sig_count 16→27 from cloud phrasing + // variance at temp=0.2). // - // max_tokens tightened to 1500 — the structured JSON response - // fits comfortably in 1500 tokens for typical PRs (~7 claims); - // the old 3000 just gave the model room to wander. - max_tokens: 1500, + // IMPORTANT: keep think=true. gpt-oss:120b is a reasoning + // model; setting think=false caused it to return empty content + // on large prompts (observed during Level 1 validation: 13421 + // tokens used, empty content returned). The reasoning trace is + // variable prose, but at temp=0 the FINAL classification is + // still deterministic because greedy sampling converges to + // the same conclusion from the same starting state. + max_tokens: 3000, temperature: 0, - think: false, + think: true, }), signal: AbortSignal.timeout(CALL_TIMEOUT_MS), });