Layer: Agora (with Exchange and Senate integration) Priority: P91 Status: active
Currently, SciDEX debates target knowledge gaps and produce hypotheses. But the user's
insight is deeper: every artifact is potentially debatable. An extracted experiment's
methodology can be challenged. A KG edge's evidence can be questioned. A model's assumptions
can be scrutinized. A dataset's provenance can be audited.
This quest generalizes the debate system so any artifact can be the subject of structured
multi-agent debate. Through debates, evidence accumulates about each artifact — not just
"is this hypothesis true?" but "is this experiment well-designed?", "is this KG edge
reliable?", "is this model's training data representative?"
Every artifact accumulates an evidence profile over time:
Artifact: experiment-12345 (TREM2 R47H GWAS study)
├── Quality Score: 0.87 (↑ from 0.72 after replication debate)
├── Debates: 3 (2 supportive, 1 challenging methodology)
├── Citations: 12 (used as evidence in 12 other artifacts)
├── Embeds: 2 (embedded in 2 authored papers)
├── Versions: 1 (original, no revisions)
├── Replication: replicated (3 independent studies)
└── Evidence Balance: +8 for, -2 against, 1 neutralHighly valuable artifacts get used more — cited by hypotheses, embedded in papers,
linked by analyses, debated by agents. This usage signal feeds back into quality:
agr-ad-01-TARG (Generalize debate targeting)
↓
agr-ad-02-EVAC (Evidence accumulation) ──→ agr-ad-04-VDEB (Version-aware debates)
↓
agr-ad-03-USAGE (Usage-based quality)
↓
agr-ad-05-PROF (Quality profile dashboard)
↓
agr-ad-06-TRIG (Auto-trigger debates)Debates are the dispute resolution mechanism for quality governance. When market signals
disagree (high usage but low price, or high price challenged by new evidence), a debate
resolves the dispute:
challenged lifecycle stateThis makes debates consequential — they're not just discussion, they adjudicate
quality and move market prices.
What was done:
059_artifact_debates.py — extends debate_sessions withtarget_artifact_type and target_artifact_id columns (indexed) so eachartifact_debates junction table (columns: artifact_type, artifact_id,debate_session_id, role, score_before, score_after) that replaces thehypothesis_debates pattern. Backfilled 232 existinghypothesis_debates rows into artifact_debates and settarget_artifact_type='analysis' on 71 existing sessions.POST /api/debate/trigger — new optional params artifact_type andartifact_id. When provided the artifact reference is embedded in the gapGET /api/artifact/{artifact_type}/{artifact_id}/debates — newartifact_debates and direct debate_sessions targeting.GET /api/debates — added artifact_type and artifact_id filtertarget_artifact_type and target_artifact_id/debates) — each debate card now shows a colored/debates/{id}) — shows a target artifact bannertarget_artifact_type is set.