From f819b67d20655a327b8567b1b53cc882d641237c Mon Sep 17 00:00:00 2001 From: HunterCML <5335527+HunterCML@users.noreply.github.com> Date: Sat, 16 May 2026 11:34:15 -0500 Subject: [PATCH] Add knowledge graph evidence freshness --- knowledge-graph-evidence-freshness/README.md | 24 +++ .../acceptance-notes.md | 31 +++ knowledge-graph-evidence-freshness/demo.js | 61 ++++++ knowledge-graph-evidence-freshness/demo.mp4 | Bin 0 -> 94971 bytes knowledge-graph-evidence-freshness/demo.svg | 24 +++ knowledge-graph-evidence-freshness/index.js | 188 ++++++++++++++++++ .../requirements-map.md | 18 ++ knowledge-graph-evidence-freshness/test.js | 111 +++++++++++ 8 files changed, 457 insertions(+) create mode 100644 knowledge-graph-evidence-freshness/README.md create mode 100644 knowledge-graph-evidence-freshness/acceptance-notes.md create mode 100644 knowledge-graph-evidence-freshness/demo.js create mode 100644 knowledge-graph-evidence-freshness/demo.mp4 create mode 100644 knowledge-graph-evidence-freshness/demo.svg create mode 100644 knowledge-graph-evidence-freshness/index.js create mode 100644 knowledge-graph-evidence-freshness/requirements-map.md create mode 100644 knowledge-graph-evidence-freshness/test.js diff --git a/knowledge-graph-evidence-freshness/README.md b/knowledge-graph-evidence-freshness/README.md new file mode 100644 index 0000000..1ebc934 --- /dev/null +++ b/knowledge-graph-evidence-freshness/README.md @@ -0,0 +1,24 @@ +# Knowledge Graph Evidence Freshness + +This submission targets [SCIBASE issue #17](https://github.com/SCIBASE-AI/SCIBASE.AI/issues/17) with a focused Scientific Knowledge Graph Integration module. + +It evaluates whether graph edges are still safe to recommend when the papers, datasets, protocols, or replication records behind those edges become stale, corrected, superseded, retracted, or failed in replication. + +## What It Adds + +- Evidence-level risk scoring for retractions, corrections, supersession, stale age, failed replication, and missing evidence. +- Edge-level recommendation decisions: recommend, recommend with note, review before recommending, or suppress. +- Replacement evidence candidates for entity pages and discovery workflows. +- Review packets with stable digests so graph freshness decisions are auditable. +- Focused tests and demo data. + +## Demo + +```powershell +node knowledge-graph-evidence-freshness/test.js +node knowledge-graph-evidence-freshness/demo.js +``` + +`demo.mp4` is the reviewer-facing video artifact for the bounty submission. It walks through the problem, implementation, acceptance path, and command validation in 8.4 seconds. `demo.svg` provides a static workflow diagram. + +See `acceptance-notes.md` for the payout-gate evidence checklist. diff --git a/knowledge-graph-evidence-freshness/acceptance-notes.md b/knowledge-graph-evidence-freshness/acceptance-notes.md new file mode 100644 index 0000000..43fcd00 --- /dev/null +++ b/knowledge-graph-evidence-freshness/acceptance-notes.md @@ -0,0 +1,31 @@ +# Acceptance Notes + +This is a focused implementation for SCIBASE issue #17, not a generic AI-generated content drop. The slice targets a specific knowledge-graph risk: graph edges and AI recommendations can keep pointing researchers toward outdated, corrected, retracted, or failed evidence unless freshness status is propagated into recommendation decisions. + +## What Changed + +- Added evidence-level risk scoring for retractions, corrections, supersession, stale age, failed replication, and missing evidence. +- Added edge-level decisions for recommendation suppression and review gating. +- Added replacement evidence candidates for entity pages and discovery flows. +- Added stable review packet digests for auditability. +- Added focused dependency-free tests and demo data. + +## Video Demo + +- `demo.mp4` shows the problem, implementation, acceptance behavior, and validation command. +- `demo.svg` provides a static workflow diagram. + +## Validation + +Run from the repository root: + +```powershell +node knowledge-graph-evidence-freshness/test.js +node knowledge-graph-evidence-freshness/demo.js +``` + +Expected result: the test prints `knowledge-graph-evidence-freshness tests passed`, and the demo prints suppressed edges, review-required edges, replacement candidates, and a review packet digest. + +## Integration Notes + +The module is dependency-free and uses plain evidence and edge objects. The next integration step is wiring these decisions into SCIBASE entity pages, graph search filters, and recommendation generation. diff --git a/knowledge-graph-evidence-freshness/demo.js b/knowledge-graph-evidence-freshness/demo.js new file mode 100644 index 0000000..3b2dffb --- /dev/null +++ b/knowledge-graph-evidence-freshness/demo.js @@ -0,0 +1,61 @@ +"use strict"; + +const { buildFreshnessReview } = require("./index"); + +const review = buildFreshnessReview({ + asOf: "2026-05-16T00:00:00Z", + maxAgeDays: 730, + evidence: [ + { + id: "paper-crispr-qc-v1", + title: "CRISPR QC protocol first release", + status: "retracted", + publishedAt: "2024-02-10T00:00:00Z", + replacementEvidenceIds: ["paper-crispr-qc-v3"] + }, + { + id: "dataset-single-cell-22", + title: "Single-cell atlas v22", + status: "corrected", + publishedAt: "2025-06-01T00:00:00Z", + replacementEvidenceIds: ["dataset-single-cell-23"] + }, + { + id: "replication-failure-9", + title: "External failed replication of marker panel", + status: "active", + replicationStatus: "failed", + publishedAt: "2026-01-11T00:00:00Z" + } + ], + edges: [ + { + id: "edge-crispr-method", + source: "CRISPR editing", + target: "QC protocol", + relation: "uses_method", + evidenceIds: ["paper-crispr-qc-v1"] + }, + { + id: "edge-atlas-dataset", + source: "immune relapse", + target: "single-cell atlas", + relation: "uses_dataset", + evidenceIds: ["dataset-single-cell-22"] + }, + { + id: "edge-marker-panel", + source: "biomarker panel", + target: "clinical classifier", + relation: "supports_claim", + evidenceIds: ["replication-failure-9"] + } + ] +}); + +console.log(JSON.stringify({ + suppressedEdges: review.suppressedEdges, + reviewRequiredEdges: review.reviewRequiredEdges, + replacementCandidates: review.replacementCandidates, + reviewPacketDigest: review.reviewPacketDigest +}, null, 2)); diff --git a/knowledge-graph-evidence-freshness/demo.mp4 b/knowledge-graph-evidence-freshness/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..663bb45d03e4b323fad7e95da1739d43339e8148 GIT binary patch literal 94971 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 iW-0&xETnTyHw8Y?opH literal 0 HcmV?d00001 diff --git a/knowledge-graph-evidence-freshness/demo.svg b/knowledge-graph-evidence-freshness/demo.svg new file mode 100644 index 0000000..0b41f07 --- /dev/null +++ b/knowledge-graph-evidence-freshness/demo.svg @@ -0,0 +1,24 @@ + + Knowledge graph evidence freshness workflow + Evidence status is scored, graph edges are reviewed, unsafe recommendations are suppressed, and replacement candidates are surfaced. + + + + + + Evidence + corrected, stale, + retracted, failed + Edge Review + risk by relation + Decision + suppress or review + Replace + candidate IDs + + + + + edge-crispr-method + retracted evidence suppresses recommendation, replacement paper-crispr-qc-v3 is surfaced + diff --git a/knowledge-graph-evidence-freshness/index.js b/knowledge-graph-evidence-freshness/index.js new file mode 100644 index 0000000..8ecedb0 --- /dev/null +++ b/knowledge-graph-evidence-freshness/index.js @@ -0,0 +1,188 @@ +"use strict"; + +const crypto = require("crypto"); + +function stableJson(value) { + if (Array.isArray(value)) return value.map(stableJson); + if (value && typeof value === "object") { + return Object.keys(value).sort().reduce((accumulator, key) => { + accumulator[key] = stableJson(value[key]); + return accumulator; + }, {}); + } + return value; +} + +function digest(value) { + return crypto + .createHash("sha256") + .update(JSON.stringify(stableJson(value))) + .digest("hex"); +} + +function asArray(value) { + return Array.isArray(value) ? value : []; +} + +function ageInDays(publishedAt, asOf) { + const start = Date.parse(publishedAt); + const end = Date.parse(asOf); + if (!Number.isFinite(start) || !Number.isFinite(end)) return 0; + return Math.max(0, Math.floor((end - start) / 86400000)); +} + +function evaluateEvidence(evidence, options = {}) { + const asOf = options.asOf || new Date().toISOString(); + const maxAgeDays = options.maxAgeDays || 730; + const status = evidence.status || "active"; + const ageDays = ageInDays(evidence.publishedAt, asOf); + const reasons = []; + let riskScore = 0; + + if (status === "retracted") { + reasons.push("retracted_evidence"); + riskScore += 100; + } + + if (status === "corrected") { + reasons.push("corrected_evidence"); + riskScore += 45; + } + + if (status === "superseded") { + reasons.push("superseded_evidence"); + riskScore += 35; + } + + if (ageDays > maxAgeDays) { + reasons.push("stale_by_age"); + riskScore += Math.min(35, Math.floor((ageDays - maxAgeDays) / 30) + 10); + } + + if (evidence.replicationStatus === "failed") { + reasons.push("failed_replication"); + riskScore += 50; + } + + const replacementEvidenceIds = asArray(evidence.replacementEvidenceIds).slice().sort(); + + return { + evidenceId: evidence.id, + title: evidence.title, + status, + ageDays, + riskScore, + reasons, + replacementEvidenceIds, + digest: digest({ + id: evidence.id, + status, + ageDays, + reasons, + replacementEvidenceIds + }) + }; +} + +function evaluateEdge(edge, evidenceIndex, options = {}) { + const evidenceReviews = asArray(edge.evidenceIds).map((id) => { + const evidence = evidenceIndex.get(id); + if (!evidence) { + return { + evidenceId: id, + status: "missing", + ageDays: 0, + riskScore: 70, + reasons: ["missing_evidence"], + replacementEvidenceIds: [], + digest: digest({ missing: id }) + }; + } + return evaluateEvidence(evidence, options); + }); + + const totalRisk = evidenceReviews.reduce((sum, item) => sum + item.riskScore, 0); + const replacementEvidenceIds = Array.from(new Set( + evidenceReviews.flatMap((item) => item.replacementEvidenceIds) + )).sort(); + + const hasRetraction = evidenceReviews.some((item) => item.reasons.includes("retracted_evidence")); + const hasFailedReplication = evidenceReviews.some((item) => item.reasons.includes("failed_replication")); + const hasCorrection = evidenceReviews.some((item) => + item.reasons.includes("corrected_evidence") || item.reasons.includes("superseded_evidence") + ); + const hasStaleEvidence = evidenceReviews.some((item) => + item.reasons.includes("stale_by_age") + ); + + const decision = hasRetraction || hasFailedReplication + ? "suppress_recommendation" + : hasCorrection || hasStaleEvidence || totalRisk >= 45 + ? "review_before_recommending" + : totalRisk > 0 + ? "recommend_with_freshness_note" + : "recommend"; + + return { + edgeId: edge.id, + source: edge.source, + target: edge.target, + relation: edge.relation, + decision, + totalRisk, + evidenceReviews, + replacementEvidenceIds, + recommendationAllowed: decision === "recommend" || decision === "recommend_with_freshness_note", + reviewDigest: digest({ + edge, + decision, + totalRisk, + evidenceReviews, + replacementEvidenceIds + }) + }; +} + +function buildFreshnessReview({ evidence, edges, asOf, maxAgeDays }) { + const evidenceIndex = new Map(asArray(evidence).map((item) => [item.id, item])); + const edgeReviews = asArray(edges).map((edge) => + evaluateEdge(edge, evidenceIndex, { asOf, maxAgeDays }) + ); + + const suppressedEdges = edgeReviews + .filter((edge) => edge.decision === "suppress_recommendation") + .map((edge) => edge.edgeId) + .sort(); + const reviewRequiredEdges = edgeReviews + .filter((edge) => edge.decision === "review_before_recommending") + .map((edge) => edge.edgeId) + .sort(); + const recommendationEdges = edgeReviews + .filter((edge) => edge.recommendationAllowed) + .map((edge) => edge.edgeId) + .sort(); + const replacementCandidates = Array.from(new Set( + edgeReviews.flatMap((edge) => edge.replacementEvidenceIds) + )).sort(); + + return { + generatedAt: asOf, + suppressedEdges, + reviewRequiredEdges, + recommendationEdges, + replacementCandidates, + edgeReviews, + reviewPacketDigest: digest({ + asOf, + maxAgeDays, + edgeReviews + }) + }; +} + +module.exports = { + buildFreshnessReview, + digest, + evaluateEdge, + evaluateEvidence +}; diff --git a/knowledge-graph-evidence-freshness/requirements-map.md b/knowledge-graph-evidence-freshness/requirements-map.md new file mode 100644 index 0000000..a828f75 --- /dev/null +++ b/knowledge-graph-evidence-freshness/requirements-map.md @@ -0,0 +1,18 @@ +# Requirements Map + +| Issue requirement | Implementation | +| --- | --- | +| Entity extraction and linked data | Graph edges reference evidence IDs behind concepts, datasets, protocols, and claims. | +| Knowledge navigation | Edge decisions protect graph search and entity-page recommendations from stale evidence. | +| AI research recommendations | `recommendationAllowed` suppresses risky recommendations and produces replacement guidance. | +| Filters by reproducibility and time | Evidence scoring includes age and failed replication status. | +| Entity pages with aggregated data | `edgeReviews` provide evidence-level reasons and replacement candidates for UI display. | +| Structured intelligence from scattered documents | Review packet digests make freshness decisions auditable and repeatable. | + +## Reviewer Checklist + +- Run `node knowledge-graph-evidence-freshness/test.js`. +- Run `node knowledge-graph-evidence-freshness/demo.js`. +- Confirm retracted and failed-replication evidence suppress graph recommendations. +- Confirm corrected and stale evidence require review before recommendation. +- Confirm replacement candidates are exposed for entity pages. diff --git a/knowledge-graph-evidence-freshness/test.js b/knowledge-graph-evidence-freshness/test.js new file mode 100644 index 0000000..6a2b73e --- /dev/null +++ b/knowledge-graph-evidence-freshness/test.js @@ -0,0 +1,111 @@ +"use strict"; + +const assert = require("assert"); +const { + buildFreshnessReview, + digest, + evaluateEvidence +} = require("./index"); + +const evidence = [ + { + id: "paper-crispr-qc-v1", + title: "CRISPR QC protocol first release", + status: "retracted", + publishedAt: "2024-02-10T00:00:00Z", + replacementEvidenceIds: ["paper-crispr-qc-v3"] + }, + { + id: "paper-crispr-qc-v3", + title: "CRISPR QC protocol corrected release", + status: "active", + publishedAt: "2026-03-04T00:00:00Z" + }, + { + id: "dataset-single-cell-22", + title: "Single-cell atlas v22", + status: "corrected", + publishedAt: "2025-06-01T00:00:00Z", + replacementEvidenceIds: ["dataset-single-cell-23"] + }, + { + id: "dataset-single-cell-23", + title: "Single-cell atlas v23", + status: "active", + publishedAt: "2026-04-14T00:00:00Z" + }, + { + id: "protocol-culture-old", + title: "Organoid culture protocol 2019", + status: "active", + publishedAt: "2019-03-01T00:00:00Z" + }, + { + id: "replication-failure-9", + title: "External failed replication of marker panel", + status: "active", + replicationStatus: "failed", + publishedAt: "2026-01-11T00:00:00Z" + } +]; + +const edges = [ + { + id: "edge-crispr-method", + source: "CRISPR editing", + target: "QC protocol", + relation: "uses_method", + evidenceIds: ["paper-crispr-qc-v1"] + }, + { + id: "edge-atlas-dataset", + source: "immune relapse", + target: "single-cell atlas", + relation: "uses_dataset", + evidenceIds: ["dataset-single-cell-22"] + }, + { + id: "edge-organoid-culture", + source: "neuroinflammation assay", + target: "organoid culture", + relation: "uses_protocol", + evidenceIds: ["protocol-culture-old"] + }, + { + id: "edge-marker-panel", + source: "biomarker panel", + target: "clinical classifier", + relation: "supports_claim", + evidenceIds: ["replication-failure-9"] + } +]; + +const retraction = evaluateEvidence(evidence[0], { + asOf: "2026-05-16T00:00:00Z", + maxAgeDays: 730 +}); +assert.strictEqual(retraction.status, "retracted"); +assert.ok(retraction.riskScore >= 100); +assert.deepStrictEqual(retraction.replacementEvidenceIds, ["paper-crispr-qc-v3"]); + +const review = buildFreshnessReview({ + evidence, + edges, + asOf: "2026-05-16T00:00:00Z", + maxAgeDays: 730 +}); + +assert.deepStrictEqual(review.suppressedEdges, ["edge-crispr-method", "edge-marker-panel"]); +assert.deepStrictEqual(review.reviewRequiredEdges, ["edge-atlas-dataset", "edge-organoid-culture"]); +assert.deepStrictEqual(review.recommendationEdges, []); +assert.deepStrictEqual(review.replacementCandidates, ["dataset-single-cell-23", "paper-crispr-qc-v3"]); + +const correctedEdge = review.edgeReviews.find((edge) => edge.edgeId === "edge-atlas-dataset"); +assert.strictEqual(correctedEdge.decision, "review_before_recommending"); +assert.strictEqual(correctedEdge.recommendationAllowed, false); + +const staleEdge = review.edgeReviews.find((edge) => edge.edgeId === "edge-organoid-culture"); +assert.ok(staleEdge.evidenceReviews[0].reasons.includes("stale_by_age")); +assert.strictEqual(digest(review).length, 64); + +console.log("knowledge-graph-evidence-freshness tests passed");