Task 011 implement evidence matrix and claim gate

This commit is contained in:
2026-05-21 22:52:41 +03:00
parent 7d4a79acb5
commit 7e1b05067c
23 changed files with 2090 additions and 17 deletions
@@ -0,0 +1,65 @@
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import ts from "typescript";
const testDir = path.dirname(fileURLToPath(import.meta.url));
const sourcePath = path.resolve(testDir, "../src/features/evidence-matrix/model.ts");
const source = readFileSync(sourcePath, "utf8");
const compiled = ts.transpileModule(source, {
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022 },
});
const moduleExports = {};
new Function("exports", compiled.outputText)(moduleExports);
const {
buildEvidenceRows,
buildClaimRows,
filterUnsupportedClaims,
filterClaimsBySection,
} = moduleExports;
const evidenceRows = buildEvidenceRows([
{
id: "e1",
article_id: "a1",
source_title: "Source",
source_url: "https://example.com",
source_type: "primary",
source_quality_score: 0.9,
summary: "Summary",
supports_claims: [],
artifact_manifest_id: "m1",
retrieved_at: "2026-05-21T00:00:00Z",
review_status: "APPROVED",
},
]);
assert.equal(evidenceRows[0].sourceTitle, "Source");
assert.equal(evidenceRows[0].reviewStatus, "APPROVED");
const claimRows = buildClaimRows([
{
id: "c1",
article_id: "a1",
section_id: "s1",
claim_text: "Unsupported",
support_status: "UNSUPPORTED",
risk_level: "high",
evidence_item_ids: [],
},
{
id: "c2",
article_id: "a1",
section_id: "s2",
claim_text: "Supported",
support_status: "SUPPORTED",
risk_level: "low",
evidence_item_ids: ["e1"],
},
]);
assert.equal(filterUnsupportedClaims(claimRows).length, 1);
assert.equal(filterClaimsBySection(claimRows, "s2")[0].claimText, "Supported");