Living Evidence Observatory
A research monitor that preserves disagreement, provenance, and what was known at the time
The problem worth solving
Research summaries become unreliable when they silently merge different experimental conditions, count several mirrors of one study as independent support, or fail to update a conclusion after a correction. Build an observatory for a narrow nonclinical question family, such as whether retrieval strategies improve agent task completion under specified budgets. The assistant monitors a frozen source collection and replayed updates, links claims to exact evidence, preserves contradictory results, and explains how an evidence assessment changed between two dates.
What could make it stand out
Scientific claim verification, provenance modeling, and publication-update metadata already exist. This proposal combines them in a deliberately bounded longitudinal experiment. The distinctive output is an inspectable evidence-change record: which claim changed, which source or version caused it, whether two results truly share the same scope, and which conclusions remain unresolved. It treats a newer paper as a new piece of evidence rather than automatic truth. The contribution should be framed as a tested workflow for traceable updates, not a claim that an agent can determine scientific consensus autonomously.
On a held-out replay of research updates, a provenance-aware and time-aware claim graph will reduce stale or overconfident evidence summaries by at least 35% relative to snapshot RAG, while retrieving the adjudicated supporting and conflicting evidence with at least 85% recall. The hypothesis fails if improvements depend on manually prelabeling the final answer, or if conflict detection largely mistakes differences in task, dataset, or budget for genuine contradiction.
System architecture
| Component | Responsibility |
|---|---|
| Source registry and snapshotter | Store canonical identifiers, source URLs, version identifiers, observed time, publication time, license notes, and content hashes. Preserve metadata and permitted excerpts needed to reproduce retrieval without redistributing unlicensed full text. |
| Scoped claim extractor | Represent each claim with intervention, comparator, metric, dataset, model setting, and budget. Mark missing scope fields rather than assuming two similarly worded statements describe the same experiment. |
| Evidence and provenance graph | Link claims to supporting, refuting, or insufficient evidence spans, and distinguish independent studies from mirrors and derivative summaries. Record correction and withdrawal relationships without deleting historical provenance. |
| Temporal update reducer | Replay source arrivals and updates into an as-of evidence state. Separate when a result was published from when the observatory learned about it, and flag affected summaries for regeneration. |
| Research review assistant | Answer narrow questions with cited evidence and explicit unresolved conflicts. Present a before-and-after change log, scope comparisons, source lineage, and an analyst review queue for uncertain relations. |
Data and reproducibility
Choose approximately 60 open research papers about agent evaluation or retrieval, then annotate 150 scoped claim-evidence pairs and create 40 replayed update scenarios. Use real source metadata and permitted evidence spans, while labeling synthetic corrections and contradictory additions conspicuously as simulation. SciFact informs the verification task; Crossref supplies metadata structure rather than guaranteed complete knowledge of every correction.
Start with a synthetic benchmark
Start with manually checked factual scope labels and source relationships. Build replay events for a duplicate mirror, a delayed paper, a changed version, an explicit correction, and a scope-mismatched apparent contradiction. Keep synthetic update content separate from genuine publication metadata. Split by claim family and paper lineage so different versions of one study cannot leak across development and test. Have a peer independently check a sample when available; otherwise report delayed self-review as self-consistency, not inter-rater agreement.
Baselines you must beat
- Snapshot RAG that indexes all available text without explicit publication or observation times.
- Latest-document retrieval that selects the newest source and generates a single summary, revealing the cost of treating recency as authority.
- A provenance graph without scope matching, isolating false contradiction detection caused by different experimental conditions.
Measure the claim
Targets below are proposed success criteria. No results have been achieved on your behalf.
| Metric | Definition and target |
|---|---|
| Stale or overconfident summary rate | Fraction of summaries that cite superseded evidence as current, hide an adjudicated same-scope conflict, or assert support stronger than the available evidence labels justify. Target, not achieved result: at least 35% relative reduction versus snapshot RAG on held-out update replays, with claim-level error counts. |
| Evidence recall and citation precision | Recall of adjudicated relevant supporting and conflicting sources, plus the fraction of citations whose identified span actually supports the attributed statement under matching scope. Target, not achieved result: at least 85% evidence recall and 95% citation precision on the annotated test set. |
| Update localization | Fraction of affected claim summaries refreshed after a source event and fraction of unaffected summaries unnecessarily regenerated; count duplicate mirrors as one study lineage. Target, not achieved result: at least 95% affected-summary recall, with unnecessary regeneration below 15% in the replay suite. |
Experiments and ablations
- Replay a sequence where early supporting evidence is followed by a conflicting study and then a correction. Compare what each system claims at the time of observation, not with hindsight from the complete event log.
- Add five mirrors or derivative articles for one source and verify that the evidence assessment does not count them as five independent studies. Remove lineage deduplication to quantify the resulting distortion.
- Present apparently contradictory results from different budgets or datasets. Test scope matching with and without structured claim fields and manually inspect all false conflict alerts.
Your execution plan
0 of 12 deliverables checked. Tick a deliverable after recording evidence in your project repository.
Bound the research question and annotation rules
Build the source and replay corpus
Establish retrieval baselines
Implement temporal evidence changes
Evaluate update reasoning
Publish an evidence-backed project report
Working seed
Run this small, deterministic core first. It demonstrates the central mechanism. The complete system, experiments, and deployment are your capstone work.
"""Living Evidence: event replay with origin deduplication and withdrawal."""
from dataclasses import dataclass
import json
@dataclass(frozen=True)
class Event:
observed_at: int
kind: str
origin: str
claim: str
stance: str = ""
published_at: int = 0
record_id: str = ""
def evidence_state(events, claim, as_of):
# Stances are authored fixture labels, not automated scientific judgements.
origins = {}
withdrawals = set()
lineage = {}
for event in sorted(events, key=lambda e: (e.observed_at, e.record_id)):
if event.observed_at > as_of or event.claim != claim:
continue
if event.published_at > as_of:
continue
lineage.setdefault(event.origin, set()).add(event.record_id)
if event.kind == "withdraw":
withdrawals.add(event.origin)
elif event.kind == "evidence":
if event.stance not in {"supports", "refutes"}:
raise ValueError("Unknown stance")
previous = origins.get(event.origin)
if previous and previous != event.stance:
raise ValueError("Conflicting same-origin labels need adjudication")
origins[event.origin] = event.stance
active = {origin: stance for origin, stance in origins.items() if origin not in withdrawals}
labels = set(active.values())
status = "insufficient_evidence"
if labels == {"supports"}:
status = "supporting_evidence_only"
elif labels == {"refutes"}:
status = "refuting_evidence_only"
elif len(labels) == 2:
status = "contested_evidence"
return {"as_of": as_of, "status": status, "active_origins": sorted(active),
"withdrawn_origins": sorted(withdrawals),
"lineage": {k: sorted(v) for k, v in sorted(lineage.items())}}
def main():
events = [
Event(1, "evidence", "study_a", "cache_reduces_latency", "supports", 1, "paper_a"),
Event(2, "evidence", "study_a", "cache_reduces_latency", "supports", 1, "mirror_a"),
Event(3, "evidence", "study_b", "cache_reduces_latency", "refutes", 2, "paper_b"),
Event(4, "withdraw", "study_b", "cache_reduces_latency", "", 4, "notice_b"),
]
states = [evidence_state(events, "cache_reduces_latency", t) for t in (1, 2, 3, 4)]
assert states[0]["status"] == "supporting_evidence_only"
assert len(states[1]["active_origins"]) == 1
assert states[2]["status"] == "contested_evidence"
assert states[3]["withdrawn_origins"] == ["study_b"]
assert evidence_state(list(reversed(events)), "cache_reduces_latency", 3) == states[2]
print(json.dumps(states, sort_keys=True, indent=2))
if __name__ == "__main__":
main()
Failure modes to investigate
- Similar wording can conceal different study conditions. Compare metric, dataset, intervention, and budget before assigning a contradiction relation, and send unresolved cases to review.
- Metadata services may lack an update or expose it after a delay. Preserve both publication and observed timestamps and describe source coverage without claiming completeness.
- A graph can make weak evidence look authoritative. Keep evidence spans inspectable, separate study independence from citation count, and avoid translating an evidence status directly into a truth guarantee.
Your demo, moment by moment
- Ask a tightly scoped research question and open the evidence spans supporting the current assessment.
- Replay a conflicting paper with the same experimental scope. Show the summary becoming contested and compare the two studies' conditions.
- Add several mirrors of one paper, then a clearly labeled simulated correction. Show source deduplication and the specific summaries invalidated by the update.
- Move the as-of date backward and recover the assessment justified by evidence available then, followed by the held-out evaluation and a false-conflict example.
Write the resume bullet after the experiment
Replace every placeholder with your actual measurements. Keep the dataset size, baseline, and evaluation conditions available for interview questions.
A research extension
After the replay study, add opt-in periodic metadata refreshes for the chosen corpus and measure real detection delay without claiming comprehensive coverage. A research extension studies analyst attention: rank changes by the number and importance of downstream claims affected, then compare review effort with a chronological update feed. Preserve a frozen offline replay so live source changes do not erase reproducibility.
Related work to challenge your idea
Introduces scientific claim verification with evidence and rationales. This proposal adds temporal update replay, scope checks, and lineage-aware monitoring for a chosen nonclinical topic.
Documents relationships among publication updates, corrections, and retractions. The project uses such metadata as evidence of an update, not as an exhaustive guarantee about every paper.
Provides provenance concepts for linking sources and derived artifacts. The capstone tests whether explicit lineage improves update handling and avoids duplicate-study counting.