diff --git a/CHANGELOG.md b/CHANGELOG.md index a43de73..6ac3838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes are documented here. This project follows Semantic Versionin ### Fixed +- Failed closed on deletion-only zero-context hunks when attributing current changed symbols and call references. Git represents a deletion-only hunk with a zero-length new-side range anchored to a neighboring current line; ProofDiff now reconciles reconstructed current-line spans with Git numstat additions before treating those anchors as changed current code. - Preserved precise changed-line hunks across renames by scoping per-file Git diffs to both the previous and current path. This prevents a rename with content edits from being reinterpreted as a whole-file addition and overstating changed-line or call-reference evidence. - Preserved trailing whitespace in Git repository-root paths. `findRepository()` now removes only Git's record line terminator instead of applying JavaScript `String.trim()`, preventing a repository such as `repository ` from being silently redirected to a sibling path with the trimmed spelling. - Tightened Python test-runner exit-code 5 handling. Pytest and the stdlib `unittest` CLI use code 5 for no-test outcomes, but repository-local modules can also terminate runner imports with code 5 before trustworthy lifecycle observation. ProofDiff now accepts exit 5 as non-failing only when high-confidence exact zero-test observer data corroborates it: directly for targeted pytest, or through the paired targeted observer for opaque pytest/unittest commands. Uncorroborated exit-5 failures remain verification failures. diff --git a/dist/evidence.d.ts.map b/dist/evidence.d.ts.map index 0bcfe31..dbf4614 100644 --- a/dist/evidence.d.ts.map +++ b/dist/evidence.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,WAAW,EAAE,WAAW,EAAgB,cAAc,EAAiD,MAAM,YAAY,CAAC;AAClJ,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqNlD,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,cAAc,CAkEzI"} \ No newline at end of file +{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,WAAW,EAAE,WAAW,EAAgB,cAAc,EAAiD,MAAM,YAAY,CAAC;AAClJ,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqNlD,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,cAAc,CAmEzI"} \ No newline at end of file diff --git a/dist/evidence.js b/dist/evidence.js index 0b4b46b..e43d330 100644 --- a/dist/evidence.js +++ b/dist/evidence.js @@ -1,5 +1,5 @@ import path from "node:path"; -import { impactedFiles, symbolsChanged } from "./graph.js"; +import { hasExactCurrentLineHunks, impactedFiles, symbolsChanged } from "./graph.js"; import { clamp, compareCodeUnits, isTestLikePath, unique } from "./util.js"; function checkApplies(check, file, relatedTests) { if (check.targetFiles) @@ -154,7 +154,7 @@ function verificationFor(file, relatedTests, checks, declaredTests) { return { status: "unverified", evidence, executedTests, testExecutions }; } function callsInChangedLines(file, analysis, limit = 100) { - if (!analysis?.callSites || file.binary || file.change === "deleted") + if (!analysis?.callSites || file.binary || file.change === "deleted" || !hasExactCurrentLineHunks(file)) return { calls: [], truncated: false }; const seen = new Set(); const matching = analysis.callSites.filter((site) => { @@ -273,6 +273,8 @@ export function assessFile(file, graph, checks, declaredTests = []) { limitations.push("Only file-level analysis is available for this file type."); if (file.binary) limitations.push("Binary file contents were not inspected."); + if (!file.binary && file.change !== "deleted" && !hasExactCurrentLineHunks(file)) + limitations.push("Zero-context diff hunks could not be reconciled exactly with Git's current-line addition count, so changed-symbol and changed-call attribution was withheld."); if (changedCallSites.truncated) limitations.push("Call references in changed lines were limited to the first 100 parser-observed sites."); if (declaredTests.length > 0) diff --git a/dist/evidence.js.map b/dist/evidence.js.map index 27fe02d..1fd10d5 100644 --- a/dist/evidence.js.map +++ b/dist/evidence.js.map @@ -1 +1 @@ -{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/graph.d.ts b/dist/graph.d.ts index 9a61aff..2ade0c1 100644 --- a/dist/graph.d.ts +++ b/dist/graph.d.ts @@ -15,5 +15,6 @@ export declare function impactedFiles(graph: RepositoryGraph, file: string, limi files: string[]; truncated: boolean; }; +export declare function hasExactCurrentLineHunks(file: ChangedFile): boolean; export declare function symbolsChanged(file: ChangedFile, analysis: SourceAnalysis | undefined): SymbolInfo[]; //# sourceMappingURL=graph.d.ts.map \ No newline at end of file diff --git a/dist/graph.d.ts.map b/dist/graph.d.ts.map index 043a061..c2292f3 100644 --- a/dist/graph.d.ts.map +++ b/dist/graph.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2D,KAAK,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACzH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,0FAA0F;IAC1F,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,EAAE,wBAAwB,EAAE,CAAC;IAC9C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAsBD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CA0CzI;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAkBxH;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,EAAE,CAqBpG"} \ No newline at end of file +{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2D,KAAK,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACzH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,0FAA0F;IAC1F,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,EAAE,wBAAwB,EAAE,CAAC;IAC9C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAsBD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CA0CzI;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAkBxH;AAMD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAWnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,EAAE,CAsBpG"} \ No newline at end of file diff --git a/dist/graph.js b/dist/graph.js index 1b5d704..dba2954 100644 --- a/dist/graph.js +++ b/dist/graph.js @@ -88,12 +88,29 @@ export function impactedFiles(graph, file, limit = 250) { function overlaps(a, b) { return a.start <= b.end && b.start <= a.end; } +export function hasExactCurrentLineHunks(file) { + if (!Number.isSafeInteger(file.additions) || file.additions < 0) + return false; + let currentLines = 0; + for (const hunk of file.hunks) { + const { start, end } = hunk.newRange; + if (!Number.isSafeInteger(start) || !Number.isSafeInteger(end) || start < 1 || end < start) + return false; + const span = end - start + 1; + if (!Number.isSafeInteger(span) || span > file.additions - currentLines) + return false; + currentLines += span; + } + return currentLines === file.additions; +} export function symbolsChanged(file, analysis) { if (file.change === "deleted") { return file.deletedSymbolHints.map((name) => ({ name, kind: "function", range: { start: 1, end: 1 }, exported: false, confidence: "low" })); } if (!analysis || file.binary) return []; + if (!hasExactCurrentLineHunks(file)) + return []; const changed = analysis.symbols.filter((symbol) => file.hunks.some((hunk) => overlaps(symbol.range, hunk.newRange))); if (changed.length > 0) { return changed.filter((candidate) => !changed.some((other) => other !== candidate && diff --git a/dist/graph.js.map b/dist/graph.js.map index 9878a54..d0012f2 100644 --- a/dist/graph.js.map +++ b/dist/graph.js.map @@ -1 +1 @@ -{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/evidence.ts b/src/evidence.ts index 6ac166f..fe1643c 100644 --- a/src/evidence.ts +++ b/src/evidence.ts @@ -1,7 +1,7 @@ import path from "node:path"; import type { CallInfo, ChangedFile, CheckResult, EvidenceItem, FileAssessment, RiskLevel, SourceAnalysis, VerificationStatus } from "./types.js"; import type { RepositoryGraph } from "./graph.js"; -import { impactedFiles, symbolsChanged } from "./graph.js"; +import { hasExactCurrentLineHunks, impactedFiles, symbolsChanged } from "./graph.js"; import { clamp, compareCodeUnits, isTestLikePath, unique } from "./util.js"; function checkApplies(check: CheckResult, file: ChangedFile, relatedTests: string[]): boolean { @@ -158,7 +158,7 @@ function verificationFor(file: ChangedFile, relatedTests: string[], checks: Chec } function callsInChangedLines(file: ChangedFile, analysis: SourceAnalysis | undefined, limit = 100): { calls: CallInfo[]; truncated: boolean } { - if (!analysis?.callSites || file.binary || file.change === "deleted") return { calls: [], truncated: false }; + if (!analysis?.callSites || file.binary || file.change === "deleted" || !hasExactCurrentLineHunks(file)) return { calls: [], truncated: false }; const seen = new Set(); const matching = analysis.callSites.filter((site) => { if (!file.hunks.some((hunk) => site.line >= hunk.newRange.start && site.line <= hunk.newRange.end)) return false; @@ -236,6 +236,7 @@ export function assessFile(file: ChangedFile, graph: RepositoryGraph, checks: Ch if (file.deletedSymbolHints.length > 0) limitations.push("Deleted symbol names were inferred from removed declaration lines; ranges and full structure are unavailable."); if (file.language === "unknown") limitations.push("Only file-level analysis is available for this file type."); if (file.binary) limitations.push("Binary file contents were not inspected."); + if (!file.binary && file.change !== "deleted" && !hasExactCurrentLineHunks(file)) limitations.push("Zero-context diff hunks could not be reconciled exactly with Git's current-line addition count, so changed-symbol and changed-call attribution was withheld."); if (changedCallSites.truncated) limitations.push("Call references in changed lines were limited to the first 100 parser-observed sites."); if (declaredTests.length > 0) limitations.push(`${declaredTests.length} related test path${declaredTests.length === 1 ? " was" : "s were"} user-declared by --test-map; the declaration itself does not establish runner identity, runtime execution, coverage, assertion relevance, or correctness.`); if (relatedTests.length === 0) limitations.push("No test-like path or runner-qualified target was related to the change; dynamic imports and runtime dispatch may not be visible statically."); diff --git a/src/graph.ts b/src/graph.ts index ac934b3..6882c84 100644 --- a/src/graph.ts +++ b/src/graph.ts @@ -103,11 +103,25 @@ function overlaps(a: { start: number; end: number }, b: { start: number; end: nu return a.start <= b.end && b.start <= a.end; } +export function hasExactCurrentLineHunks(file: ChangedFile): boolean { + if (!Number.isSafeInteger(file.additions) || file.additions < 0) return false; + let currentLines = 0; + for (const hunk of file.hunks) { + const { start, end } = hunk.newRange; + if (!Number.isSafeInteger(start) || !Number.isSafeInteger(end) || start < 1 || end < start) return false; + const span = end - start + 1; + if (!Number.isSafeInteger(span) || span > file.additions - currentLines) return false; + currentLines += span; + } + return currentLines === file.additions; +} + export function symbolsChanged(file: ChangedFile, analysis: SourceAnalysis | undefined): SymbolInfo[] { if (file.change === "deleted") { return file.deletedSymbolHints.map((name) => ({ name, kind: "function", range: { start: 1, end: 1 }, exported: false, confidence: "low" })); } if (!analysis || file.binary) return []; + if (!hasExactCurrentLineHunks(file)) return []; const changed = analysis.symbols.filter((symbol) => file.hunks.some((hunk) => overlaps(symbol.range, hunk.newRange))); if (changed.length > 0) { return changed.filter((candidate) => !changed.some((other) => diff --git a/tests/analyze.test.ts b/tests/analyze.test.ts index f74efa9..0aea3d7 100644 --- a/tests/analyze.test.ts +++ b/tests/analyze.test.ts @@ -26,6 +26,29 @@ test("static-only analysis is useful and does not claim verification", async (co assert.equal(report.checks[0]?.status, "not-run"); }); +test("deletion-only hunks do not attribute unchanged current calls or symbols", async (context) => { + const root = await initializeRepository({ + "src/value.js": "export function helper() { nested(); return 1; }\nconst removed = 1;\nexport const keep = 2;\n", + }); + context.after(() => rm(root, { recursive: true, force: true })); + await writeFiles(root, { + "src/value.js": "export function helper() { nested(); return 1; }\nexport const keep = 2;\n", + }); + + const report = await analyzeRepository({ repo: root }); + const assessment = report.assessments[0]; + assert.equal(assessment?.file.additions, 0); + assert.equal(assessment?.file.deletions, 1); + assert.deepEqual(assessment?.file.hunks, [{ + oldRange: { start: 2, end: 2 }, + newRange: { start: 1, end: 1 }, + }]); + assert.deepEqual(assessment?.changedSymbols, []); + assert.deepEqual(assessment?.changedCalls, []); + assert.equal(assessment?.evidence.some((item) => item.label.includes("call reference")), false); + assert.match(assessment?.limitations.join("\n") ?? "", /could not be reconciled exactly with Git's current-line addition count/); +}); + test("passing related test evidence produces a qualified verified status", async (context) => { const root = await initializeRepository(baseline); context.after(() => rm(root, { recursive: true, force: true }));