{"quest":{"id":"c488a683-47f","name":"Agora","description":"Multi-agent debate engine — any agent can participate in scientific debates using real evidence. Open enrollment debate protocol, structured argumentation, evidence citation, and cross-agent deliberation.","layer":"Agora","priority":94,"status":"active","created_at":"2026-04-02T10:00:57.209491+00:00","updated_at":"2026-04-10T14:44:10.355870+00:00"},"tasks":[{"id":"c747c608-2ca1-46b8-a40b-25830c18c05d","title":"[Agora] Run open-question debates for 5 highest-priority knowledge gaps","description":"The SciDEX gap list has 3374 open gaps with 0 debates. Gaps with high priority_score and 0 debate_count are the best targets for new debates.\n\n## Steps\n1. Query: `SELECT id, title, description, priority_score FROM knowledge_gaps WHERE status = 'open' AND (debate_count IS NULL OR debate_count = 0) ORDER BY priority_score DESC LIMIT 5`\n2. For each gap: trigger a 4-round multi-agent debate (Theorist → Skeptic → Expert → Synthesizer) using the existing agent.py debate runner or via POST /api/analyses with the gap as the research question\n3. Store debate transcript and extract hypotheses\n4. Update gap.debate_count += 1 and gap.last_debated_at = NOW()\n\n## Acceptance Criteria\n- [ ] 5 high-priority gaps now have at least 1 debate session\n- [ ] Debate transcripts stored in debate_sessions table\n- [ ] Hypotheses extracted and scored\n- [ ] knowledge_gaps.debate_count updated","status":"open","priority":71,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-25T12:20:19.539018+00:00","updated_at":"2026-04-25T12:20:19.539018+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_debate_coverage_backfill_spec.md","provider":"any","payload_json":"{\"_stall_skip_providers\": [\"glm\"]}"},{"id":"de72acbb-40fa-4e0e-830e-270def29a442","title":"[Agora] Score all debate sessions with quality metrics","description":"0/18 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"open","priority":70,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:18.141658+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"82a49668-896f-46fd-bf50-cb6c33d04b50","title":"[Agora] Reprocess 3 failed analyses after synthesizer fix","description":"After synthesizer truncation fix (task 19fe8586) is merged and API restarted, reprocess these failed analyses: SDA-2026-04-01-gap-20260401231108 (Mitochondrial transfer), SDA-2026-04-01-gap-9137255b (Protein aggregation), SDA-2026-04-01-gap-20260401-225155 (Gut-brain axis). All failed due to JSON truncation, now fixed with max_tokens=8192 for synthesizer.","status":"open","priority":70,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.396826+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/82a49668_896_spec.md","provider":"any","payload_json":"{}"},{"id":"cf1d668b-39c5-4e02-a417-9dd6e65c96c3","title":"[Agora] Inject real literature into persona prompts","description":"A1.2: Before each debate persona speaks, call tools.py research_topic() to fetch real PubMed/Semantic Scholar results. Inject the structured results (PMIDs, titles, abstracts) into each persona's user message so debates reference verifiable literature.\n\nAcceptance: New debate transcripts contain real PMIDs. Spot-check 5 PMIDs resolve to actual PubMed articles.","status":"open","priority":70,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:16.619346+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/cf1d668b_39c_inject_real_literatu_spec.md","provider":"any","payload_json":"{}"},{"id":"8944bb47-3052-436f-a12d-b3f2f8864f77","title":"[Agora] Run debates for 10 analyses without debate sessions","description":"Many analyses do not have debate sessions. Debate coverage is the quality mechanism that turns analyses into tested claims.\n\nVerification:\n- 10 analyses gain debate_sessions rows linked by analysis_id\n- Each debate has transcript_json or a substantive consensus/dissent summary\n- Remaining analyses without debates is reduced\n\nStart by reading this task's spec. Select completed analyses from PostgreSQL (dbname=scidex user=scidex_app) without debate_sessions, prioritizing active gaps and recent analyses. Run or reconstruct the standard Agora debate workflow for each selected analysis. Verify debate_sessions rows, status, and before/after coverage counts.","status":"open","priority":68,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"","updated_at":"2026-04-25T07:47:20.332844+00:00","summary":"","completion_notes":null,"last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_debate_coverage_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"d492747e-7d9d-491f-8e03-da93a880b589","title":"[Agora] Add data-support scores to 20 active hypotheses","description":"Active hypotheses with data_support_score = NULL or 0 lack computational evidence grounding. For 20 such hypotheses, search the knowledge graph and papers for quantitative data supporting or contradicting the hypothesis, compute a data_support_score (0-1 based on number and strength of empirical data points), and update the hypotheses table.\\n\\nVerification:\\n- 20 hypotheses have non-null data_support_score\\n- Each score cites specific data sources (paper PMIDs, KG edges)\\n- hypothesis composite_score recalculated after data_support update","status":"open","priority":67,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"","updated_at":"2026-04-25T07:47:20.508304+00:00","summary":"","completion_notes":null,"last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_data_support_scoring_spec.md","provider":"any","payload_json":"{}"},{"id":"850502f4-5709-4154-b672-28c9b81d8577","title":"[Agora] Run multi-agent debates on 3 high-priority open artifacts","description":"The Artifact Debates quest needs debates run on top-ranked artifacts to improve their quality scores and generate new hypotheses.\n\n## Steps\n1. Query: `SELECT a.id, a.title, a.artifact_type, a.quality_score FROM artifacts a WHERE a.lifecycle_state = 'active' AND NOT EXISTS (SELECT 1 FROM debate_sessions ds WHERE ds.analysis_id = a.id) AND a.quality_score > 0.5 ORDER BY a.quality_score DESC LIMIT 3`\n2. For each artifact: trigger a 4-round debate using POST /api/analyses or by calling agent.py with the artifact as the research question\n3. Link debate session to artifact via analysis_id\n4. Extract hypotheses from the debate synthesis\n\n## Acceptance Criteria\n- [ ] 3 top artifacts now have at least 1 debate session\n- [ ] Debate transcripts stored\n- [ ] Hypotheses extracted and scored\n- [ ] artifact.debate_count updated","status":"open","priority":66,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T06:15:52.237525+00:00","updated_at":"2026-04-25T07:47:20.604346+00:00","summary":"","completion_notes":"","last_error":"rate_limit_retries_exhausted:glm","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"b329beca-8590-4879-aac5-719c97ddd455","title":"[Agora] Run target debates for 25 undebated therapeutic targets","description":"Duplicate check","status":"open","priority":65,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"","updated_at":"2026-04-25T07:47:20.441066+00:00","summary":"","completion_notes":null,"last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"fcf11302-e04e-4e46-8793-f3c8c351902f","title":"[Agora] Add counter-evidence reviews to 10 hypotheses missing evidence_against","description":"Duplicate check","status":"open","priority":65,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"","updated_at":"2026-04-25T07:47:20.379651+00:00","summary":"","completion_notes":null,"last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"q01-a3-024044CF","title":"[Agora] Reprocess 5 failed analyses","description":"Rerun the 5 analyses with status=failed: microglial-subtypes, disrupted-sleep (x2), and others. Investigate failure causes. Fix and re-trigger. Each should produce hypotheses and KG edges.","status":"open","priority":65,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.973414+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"2f931180-845f-432b-bd96-02c13dc9ad14","title":"[Agora] POST /api/debate endpoint to trigger debates","description":"A1.3: Add POST /api/debate to api.py accepting {question, domain, priority}. Creates a knowledge_gap row and triggers scidex_orchestrator.run_single() in a background thread/subprocess. Returns analysis_id immediately.\n\nAcceptance: curl -X POST /api/debate works and eventually produces results.","status":"open","priority":65,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:16.624001+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/2f931180_845_post_api_debate_endp_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 6, \"reasoning\": 7}}"},{"id":"1af06d23-0370-478b-b582-2d4e942690da","title":"[Agora] Debate trigger + progress UI","description":"A1.4: Add GET /api/debate/{id}/status returning {status, rounds_completed, current_persona}. Add 'New Debate' button to dashboard with question form. Show progress indicator while debate runs.\n\nAcceptance: User can trigger a debate from web UI and watch it progress through 4 rounds.","status":"open","priority":60,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:16.628206+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/1af06d23_037_debate_trigger_progr_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 6, \"reasoning\": 7}}"},{"id":"08a597fb-7428-4fe5-9b5e-ad1da4f1e08b","title":"[Agora] Run new analysis: Microglial senescence in ALS","description":"Trigger a new 4-persona debate on microglial senescence mechanisms in ALS using scidex_orchestrator.py. Run post_process.py to generate hypotheses, KG edges, and HTML report. Acceptance: new analysis visible at /analyses/, hypotheses scored, KG edges added.","status":"open","priority":50,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:16.916211+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"1edd3ef6-40d4-46e9-94a8-5913eb1b8ac3","title":"[Agora] Run new analysis: Microglial senescence in neurodegeneration","description":"Trigger a new 4-persona debate on microglial senescence and its role in Alzheimers and Parkinsons disease progression. Use the existing orchestrator pipeline. This grows our analysis count from 23.","status":"open","priority":48,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.117699+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"ffdff6f4-8c66-4647-a4a3-328f03788716","title":"[Agora] Run new analysis: Gut-brain axis in Parkinson's disease","description":"Trigger a new 4-persona debate on gut microbiome-brain interactions in PD pathogenesis. Run full pipeline. Acceptance: new analysis, hypotheses, KG edges, HTML report.","status":"open","priority":48,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:16.933010+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"f26097d5-dae0-4b4f-a70a-1933a84f3fa9","title":"[Agora] Run new analysis: Blood-brain barrier dysfunction biomarkers","description":"Trigger a new 4-persona debate on blood-brain barrier permeability changes as early biomarkers for neurodegeneration. Focus on CSF/blood biomarker panels. Use the existing orchestrator pipeline.","status":"open","priority":46,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.129660+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"290402f5-4928-4ca0-9bd2-94839e3cb47d","title":"[Agora] Run new analysis: Protein aggregation cross-seeding","description":"Trigger a new debate on whether misfolded proteins (tau, alpha-synuclein, TDP-43) can cross-seed across different neurodegenerative diseases. Acceptance: new analysis, hypotheses, KG edges, HTML report.","status":"open","priority":46,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:16.937290+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"6f379c03-70cd-49c2-bf27-3e0a4c24578c","title":"[Agora] Run new analysis: Gut-brain axis and neuroinflammation","description":"Trigger a new 4-persona debate on how gut microbiome dysbiosis contributes to neuroinflammation and neurodegeneration. Focus on toll-like receptor signaling and short-chain fatty acids.","status":"open","priority":45,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.192024+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"78325d1e-17a6-4b24-a326-6ba3e4d2cb68","title":"[Agora] Run new analysis: Mitochondrial transfer between neurons and glia","description":"Trigger a new debate on intercellular mitochondrial transfer mechanisms in the CNS. Focus on tunneling nanotubes, extracellular vesicles, and their therapeutic potential for neurodegeneration.","status":"open","priority":43,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.197661+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"64d4c7d5-dc4a-4404-8435-efad439027ee","title":"[Agora] Run new analysis: Epigenetic clocks in neurodegeneration","description":"Trigger a new debate on DNA methylation clocks, histone modifications, and epigenetic age acceleration in Alzheimers and other neurodegenerative diseases. Focus on biomarker utility.","status":"open","priority":41,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-25T07:47:17.201361+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'done' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"6956d3d9-a7e6-4297-98a3-1b8387a9f784","title":"[Agora] CRITICAL: Hypothesis QUALITY over quantity — reliable high-quality science loop","description":"The goal is NOT 10 hypotheses/day. The goal is RELIABLY PRODUCING HIGH-QUALITY hypotheses that meaningfully improve the world model. One well-grounded, evidence-backed, peer-reviewed hypothesis is worth more than 100 vague ones.\n\nReframed priorities:\n\n1. QUALITY GATES BEFORE VOLUME: The existing quality gates (evidence_gate, score_gate, specificity_gate) must be enforced rigorously. Hypotheses that fail gates should NOT enter the world model. The gap quality scoring (specificity, evidence coverage, actionability) must filter BEFORE debates — don't waste compute on vague gaps.\n\n2. DEBATE AS QUALITY MECHANISM: Multi-agent debate (Theorist vs Skeptic vs Expert vs Synthesizer) IS the quality mechanism. The debate should be HARDER to pass, not easier. A hypothesis that survives rigorous skepticism is valuable. One that doesn't should be archived, not promoted.\n\n3. RELIABLE PIPELINE: The 10-bug stall showed the pipeline is fragile. Fix: post_process handles only new analyses, explicit db.commit after each hypothesis, case-insensitive analysis matching, reverse-sort for freshness. These are correctness fixes, not throughput optimizations.\n\n4. EVIDENCE GROUNDING: Every hypothesis must cite specific evidence (PMIDs, dataset analyses, KG edges). The evidence_gate should be STRICT — no citations, no hypothesis. Data-driven evidence (computational analysis results) should be weighted HIGHER than literature-only claims.\n\n5. WORLD MODEL CURATION: The world model is not just the KG — it includes ALL artifacts (hypotheses, analyses, datasets, papers, debates, notebooks). The world model improves when: (a) a high-quality hypothesis is promoted, (b) a low-quality one is archived, (c) a gap is filled with evidence, (d) duplicates are merged, (e) contradictions are resolved through debate. CURATION is as important as generation.\n\n6. ECONOMICS AS QUALITY SIGNAL: Token rewards should scale with QUALITY, not quantity. A hypothesis that gets promoted to the world model earns 10x a hypothesis that gets archived. Gap bounties should reward resolution quality, not just completion speed. This makes economics the incentive layer for quality, not volume.\n\nPipeline fixes still needed: post_process correctness (done), scidex-agent reliability (done), LLM provider fallback (in progress), gap quality pre-filter (TODO). But framed as RELIABILITY not throughput.","status":"done","priority":99,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T13:41:11.601918+00:00","updated_at":"2026-04-24T13:41:11.601918+00:00","summary":"","completion_notes":"Auto-release: non-recurring task produced no commits this iteration; requeuing for next cycle","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/6956d3d9_a7e_spec.md","provider":"any","payload_json":"{\"_stall_skip_providers\": [\"minimax\", \"max_outlook\", \"codex\", \"max_gmail\"], \"_stall_requeued_by\": \"max_outlook\", \"_stall_requeued_at\": \"2026-04-15 22:04:02\", \"_stall_skip_at\": {\"max_outlook\": \"2026-04-15T22:04:02.341234+00:00\", \"codex\": \"2026-04-14T20:54:53.706413+00:00\", \"max_gmail\": \"2026-04-14T20:57:48.363309+00:00\"}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}"},{"id":"0bf0ab05-767e-4d37-8135-1e5f9e06af07","title":"[Agora] CRITICAL: Hypothesis generation stalled 4 days — investigate and fix","description":"Senate prioritization run 42 (2026-04-11 dff08e77 spec) flagged this as the #1 system priority. Latest hypothesis in scidex.db is from 2026-04-07; zero new hypotheses on Apr 8/9/10/11 despite analyses, debates, and Elo matches all running normally. Investigate: (1) which code path generates hypotheses (likely scidex_orchestrator.py / agent.py), (2) check service logs for the last successful hypothesis insertion + any errors after, (3) verify the LLM calls in the hypothesis path are succeeding (Bedrock auth + capability routing), (4) check if there's a unique constraint or KG-edge dependency blocking inserts, (5) once root cause is found, fix it and verify with: SELECT MAX(created_at) FROM hypotheses; should advance. Document in dff08e77 spec under run 43.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":99,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T18:56:49.060659+00:00","updated_at":"2026-04-19T01:23:29.998744+00:00","summary":"","completion_notes":"","last_error":"Paused after 50 exit-0 runs with no commits on branch=(none); stale worktree deleted","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/0bf0ab05_767_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 8, \"analysis\": 8, \"reasoning\": 8, \"safety\": 7}, \"completion_shas\": [\"76b0c636\"], \"completion_shas_checked_at\": \"2026-04-11T13:17:58.383044+00:00\", \"_stall_skip_providers\": [\"minimax\", \"codex\", \"pro_allen\", \"max_gmail\"], \"_stall_requeued_by\": \"pro_allen\", \"_stall_requeued_at\": \"2026-04-15 21:46:22\", \"_stall_skip_at\": {\"codex\": \"2026-04-14T20:36:06.924858+00:00\", \"pro_allen\": \"2026-04-15T21:46:22.066348+00:00\", \"max_gmail\": \"2026-04-14T20:57:48.749619+00:00\"}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\", \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\", \"_watchdog_repair_task_id\": \"46717e70-de02-4329-95cc-4f38a1cb9149\", \"_watchdog_repair_created_at\": \"2026-04-18T19:02:36.825691+00:00\"}"},{"id":"70239694-155f-45b0-a7a9-7aa0f009a29e","title":"[Agora] D16.2: SEA-AD Single-Cell Analysis - Allen Brain Cell Atlas","description":"Run analysis on Seattle Alzheimer's Disease Brain Cell Atlas (SEA-AD) data from Allen Institute.\n\nGoal: Produce hypotheses about cell-type vulnerability in Alzheimer's using real institutional data with Jupyter notebook artifacts.\n\nDeliverables:\n1. Use Forge tools to query Allen Brain Cell API and fetch gene expression data\n2. Analyze differential gene expression across cell types (neurons, microglia, astrocytes, oligodendrocytes)\n3. Generate hypotheses about cell-type-specific vulnerability mechanisms in AD\n4. Create Jupyter notebook with:\n   - Gene expression heatmaps\n   - Differential expression analysis (volcano plots, MA plots)\n   - Cell-type clustering and trajectory analysis\n   - Top vulnerable genes/pathways per cell type\n5. Link findings to existing KG entities (TREM2, APOE, LRP1, etc.)\n6. Create KG edges connecting new findings to existing hypotheses\n7. Generate HTML report and publish to /analyses/\n\nDataset: SEA-AD single-cell RNA-seq from Allen Brain Cell Atlas (portal.brain-map.org)\nReference: AllenSDK Python package for data access\n\nThis is Quest 16 (Demo Showcase) priority - demonstrates end-to-end SciDEX capabilities with real scientific data.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":98,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-13T19:33:43.551541+00:00","updated_at":"2026-04-13T19:33:43.551541+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/70239694_155_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"codex\", \"_stall_requeued_at\": \"2026-04-13 19:11:40\", \"completion_shas\": [\"20a77a7d2f7cba193ccb72077d921768f269bd97\", \"704f50e109deffcdfee1d2e85cb9cd2efdef5c3c\", \"ee6b184d0e19bd888cd1135b49e5945fada9a6ea\"], \"completion_shas_checked_at\": \"2026-04-13T19:33:43.532339+00:00\", \"completion_shas_missing\": [\"282b21bd9c79b491f856eb954d6515599e6b8e5b\"], \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}"},{"id":"b6caec35-790e-441c-89a8-93956726e7d7","title":"[Agora] D16.3: Aging Mouse Brain Atlas Analysis","description":"Analyze Allen Mouse Brain Aging Atlas to identify age-dependent gene expression changes in neurodegeneration.\n\nGoal: Produce hypotheses about aging-related mechanisms and cross-reference with human AD data from SEA-AD analysis.\n\nDeliverables:\n1. Query Allen Mouse Brain Aging Atlas API for gene expression across age groups\n2. Focus on brain regions: hippocampus, cortex, striatum, substantia nigra\n3. Identify genes with age-dependent expression changes (young vs old mice)\n4. Compare aging-related changes to AD-related changes from SEA-AD\n5. Generate hypotheses about:\n   - Aging as AD risk factor (mechanistic overlap)\n   - Age-dependent vulnerability of specific cell types\n   - Protective vs pathological aging trajectories\n6. Create Jupyter notebook with:\n   - Trajectory analysis of gene expression over age\n   - Volcano plots of age-dependent differential expression\n   - Pathway enrichment for aging-upregulated/downregulated genes\n   - Overlap analysis with AD risk genes (APOE, TREM2, CLU, etc.)\n7. Link findings to existing hypotheses and KG entities\n8. Generate HTML report and publish to /analyses/\n\nDataset: Allen Mouse Brain Aging Atlas (portal.brain-map.org)\nCross-reference: SEA-AD human data (from D16.2 task)\n\nThis is Quest 16 (Demo Showcase) priority - demonstrates comparative analysis across species and disease models.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":97,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-13T20:36:30.608031+00:00","updated_at":"2026-04-13T20:36:30.608031+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/b6caec35_790_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"completion_shas\": [\"d6975b3e513f4df598bd224a49622f3f4748f72a\"], \"completion_shas_checked_at\": \"2026-04-13T20:36:30.590567+00:00\"}"},{"id":"e283ad4b-2308-499d-aeca-ec46bdfd0a81","title":"[Agora] Fix hypothesis status promotion: proposed→active to unblock 70h Elo stall","description":"The Elo tournament (607558a9) has been stalled 70h because it requires hypotheses in 'active' or 'reviewed' status, but 338/349 hypotheses are stuck in 'proposed'. Task 11c2b20c was noted as running in run 44 but is absent from the task DB — the fix was never applied. This task must: (1) audit the hypothesis status state machine in api.py to find the promotion trigger, (2) identify why 'proposed' hypotheses are not being promoted to 'active' after debate, (3) fix the transition logic (likely in the debate completion handler or a missing scheduled promoter), (4) verify Elo matches resume after fix. DO NOT change api.py unless task title explicitly names it. Read the debate session completion handler and hypothesis status update logic first.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":97,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-13T20:20:31.911996+00:00","updated_at":"2026-04-13T20:20:31.911996+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/e283ad4b_230_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 7}, \"completion_shas\": [\"3c862c1894338754daf063f4b75a7cb5e7dc382a\"], \"completion_shas_checked_at\": \"2026-04-13T20:20:31.895444+00:00\"}"},{"id":"46d112e6-7eea-4416-a12c-5116eb098a1f","title":"[Agora] Run debates for undebated analyses — target 50% coverage","description":"Only 18/69 analyses have debates. Pick top 10 undebated analyses by hypothesis count and run full 4-persona debates. Use orchestra to track each.","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T15:33:51.824285+00:00","updated_at":"2026-04-24T15:33:51.824285+00:00","summary":"","completion_notes":"Auto-release: non-recurring task produced no commits this iteration; requeuing for next cycle","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"a7fceb97-68e8-482d-9d17-08692f28ce6c","title":"[Agora] Run debates for undebated analyses — target 50% coverage","description":"Only 18/72 analyses have debates. Pick top 10 undebated analyses by hypothesis count and run full 4-persona debates. Use orchestra to track each.","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T15:25:57.037766+00:00","updated_at":"2026-04-24T15:25:57.037766+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"8f867ef8-a266-40a6-a051-dda1460c8b16","title":"[Agora] Backfill debate_sessions + debate_rounds tables","description":"A1.1: The debate_sessions and debate_rounds DB tables exist but have 0 rows. Backfill from 21 existing debate.json files in analyses/*/. Modify scidex_orchestrator.py to auto-populate these tables for new analyses.\n\nAcceptance: debate_sessions has ~21 rows, debate_rounds has ~84 rows. New analyses auto-populate.","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T13:49:01.560448+00:00","updated_at":"2026-04-24T13:49:01.560448+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/8f867ef8_a26_backfill_debate_sess_spec.md","provider":"any","payload_json":"{}"},{"id":"df2c0240-5ddf-46a6-9e9f-f0f9c7c8131b","title":"[Agora] Fix duplicate /agora route causing 404","description":"Two @app.get('/agora') routes with same function name agora_page exist in api.py (lines 9350 and 9607). The duplicate causes a 404. Remove the older/less complete version.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T11:16:29.830683+00:00","updated_at":"2026-04-16T11:16:29.830683+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/df2c0240_5dd_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7}, \"_stall_skip_providers\": [\"minimax\"], \"_stall_requeued_by\": \"minimax\", \"_stall_requeued_at\": \"2026-04-15 19:34:13\", \"_stall_skip_at\": {\"minimax\": \"2026-04-15T19:34:13.322674+00:00\"}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}"},{"id":"e51f594d-402e-476b-bd7b-9879e59fa09a","title":"[Agora] Fix debate failures - increase max_tool_rounds and add fallback","description":"87.5% of debates failing today due to theorist hitting max_tool_rounds=5 limit. Fix: (1) Increase max_tool_rounds to 15 for theorist in agent.py:525, (2) Add final call without tools when limit is hit (like scidex_orchestrator.py:476), (3) Test on one gap to verify hypotheses are generated\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-15T19:37:34.480137+00:00","updated_at":"2026-04-15T19:37:34.480137+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/e51f594d_402_spec.md","provider":"any","payload_json":"{\"_stall_skip_providers\": [], \"_stall_requeued_by\": \"minimax\", \"_stall_requeued_at\": \"2026-04-13 22:54:41\", \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\", \"completion_shas\": [\"0ebda99fee7d99b57ef9cb63f8c4d0c4586efdba\", \"9a92a253256d5bcdfcd87019128f610c8af5a02d\", \"85a03661ae818862161e9d3e133902a178e1acbf\", \"35585fb0b1f720cebb40c9615222d859d17628d8\", \"eeadcab9e928a38f0882db6c18376b5baa90830f\"], \"completion_shas_checked_at\": \"2026-04-15T19:37:34.462434+00:00\"}"},{"id":"q01-a1-F3999DF8","title":"[Agora] Run SEA-AD analysis debate","description":"Trigger multi-agent debate on: What cell types are most vulnerable in Alzheimers Disease based on SEA-AD transcriptomic data? Use Allen Brain Cell Atlas evidence. Inject relevant papers. Produce scored hypotheses about cell-type vulnerability mechanisms.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-14T13:04:27.803421+00:00","updated_at":"2026-04-14T13:04:27.803421+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"minimax\", \"_stall_requeued_at\": \"2026-04-13 21:21:46\", \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}"},{"id":"b0f617f1-edcb-4812-b334-6f81f8bc0493","title":"[Agora] Fix analysis pipeline: capture NULL failure_reasons","description":"Analysis failure rate is 77-96% with 64-37 failures showing NULL failure_reason. Root cause: silent crashes or exceptions not being caught and written to the analyses table. Task: (1) Find all code paths in api.py that run analyses (the /api/analyses/run or similar endpoint, plus any background runners). (2) Add try/except blocks that write the exception message to failure_reason before setting status=failed. (3) Add a one-time backfill that re-checks recently failed analyses to see if there are log files or partial data that can explain the NULL reasons. (4) Verify the fix by checking a sample of newly failed analyses shows non-NULL reasons.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-14T01:47:58.874080+00:00","updated_at":"2026-04-14T01:47:58.874080+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/b0f617f1_edc_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 6}, \"completion_shas\": [\"a853908d9d4bee8c282b39a53e0c78060ab4784d\"], \"completion_shas_checked_at\": \"2026-04-14T01:47:58.852591+00:00\"}"},{"id":"91557187-1616-4a2c-beb0-2db291d74680","title":"[Agora] Run debates for undebated analyses — target 50% coverage","description":"Only 18/73 analyses have debates. Pick top 10 undebated analyses by hypothesis count and run full 4-persona debates. Use orchestra to track each.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-13T23:56:56.478632+00:00","updated_at":"2026-04-13T23:56:56.478632+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"completion_shas\": [\"7edcabf9829584b4fa53c3c164bd74b698423db1\"], \"completion_shas_checked_at\": \"2026-04-13T23:56:56.457931+00:00\", \"completion_shas_missing\": [\"9365e29028b53802a1a255c0377a96c8f235117d\"]}"},{"id":"15c5bc71-25c8-4059-be20-4023244cb5d1","title":"[Agora] Add /agora page — debate listing and showcase for demo","description":"The /agora route returns 404 but Agora is one of SciDEX's five layers. Create the page showing debate sessions with quality scores, hypothesis links, and persona breakdowns. Essential for demo completeness.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-13T23:01:17.360207+00:00","updated_at":"2026-04-13T23:01:17.360207+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/15c5bc71_25c_spec.md","provider":"any","payload_json":"{\"completion_shas\": [\"980266c1182e9dc5b54fc49d0d774214ed109c6e\", \"9b3b9981555a7f6596999b88a3f8ea7a17e50037\"], \"completion_shas_checked_at\": \"2026-04-13T23:01:17.343167+00:00\"}"},{"id":"fb670424-76f1-4dc5-b8fa-0b60941ec2a3","title":"[Agora] Fix Theorist tool loop - debates failing with MAX_TOOL_ROUNDS","description":"CRITICAL: Debates failing because Theorist hits MAX_TOOL_ROUNDS without generating hypotheses. Recent debate SDA-2026-04-02-gap-aging-mouse-brain-v2-20260402 shows Theorist returned '[MAX TOOL ROUNDS REACHED]' causing subsequent personas to fail. Need to fix prompt engineering so Theorist generates hypotheses FIRST, uses tools only for specific verification. Root cause: current prompts encourage tool use too much, Claude prioritizes tool calls over text generation.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":95,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-13T23:00:56.998520+00:00","updated_at":"2026-04-13T23:00:56.998520+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/fb670424_76f_spec.md","provider":"any","payload_json":"{\"completion_shas\": [\"3df064628e2e176629f13eb442229c86dc4b3b4a\", \"3ab172d7f52490c10ff93b3bdb3591a06fd3d268\"], \"completion_shas_checked_at\": \"2026-04-13T23:00:56.981956+00:00\"}"},{"id":"bf55dff6-867c-4182-b98c-6ee9b5d9148f","title":"[Agora] CI: Trigger debates for analyses with 0 debate sessions","description":"Find analyses with hypotheses but no debate_sessions. Pick the highest-priority one and run a full 4-persona debate.","status":"blocked","priority":94,"task_type":"recurring","frequency":"every-24h","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T21:10:30.161159+00:00","updated_at":"2026-04-24T13:13:26.120557+00:00","summary":"","completion_notes":"Auto-release: recurring task had no work this cycle","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/bf55dff6-867_agora_ci_trigger_debates_for_analyses_w_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 5, \"safety\": 9}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"codex\", \"_stall_requeued_at\": \"2026-04-11 03:26:04\", \"completion_shas\": [\"2263867651339017b92698b238602cbb9140bbf6\", \"3850c945028ab7a515c85e340a697642530f1552\", \"1ec3d21985a6bf58f26412b26df1b9ccdd47ef34\", \"172da987a6c9171bb7fe1effb24838c398612dcb\", \"dac9da5e6f5d66dbaacfbfc2300b6cc6a8bbe8e1\", \"1397c8782d98760c1edcb2cb404df2e880eb02c1\", \"83b1ca462df0b29bd08a4f2277d564b1cdac8849\", \"0a97e1cac50d1e5a4f36d625812a3206cc8f9e51\", \"fbcec330d65b2f6f2db9038bec4f924a72fb943d\", \"6756a052a4354304b19a5059aac72b11d3526ec5\", \"926a76e0c80c5352ce9cdd9ff0d4343ea5287717\", \"4b5e781236bd6ef09faa13b421a14e7edc54a675\", \"d7ced90adc310a3aa6aa855646e7463019adbf94\", \"3376d2a88dcf98cfec1c056ce466dd7093dc9bb7\", \"776b98c4631e106ff5238296dd9afed7fa79c38a\", \"e1dd38f3ce83028f1759300cf721820372b78238\", \"19ae03a14527d42e4142505f9a242cdd2ffa8ee3\", \"da650a6823f3643cad89dd52f622d2e61386f9c5\", \"7c7e6037a55a478851cdd8a8dce2c08f219d83eb\", \"457783a55f10852e0a484ed7989a4f94949fce86\", \"2fe1e506b2a49c6f74e3f8847a874a517f08f465\", \"f8f7d05af477d6e0acbe45de855a3185b689399a\", \"b453a994b9ca2b4c4b8766907ec8de9f7be35c06\", \"35e1208e3dca7f0afb2ee4f13838f46f8254f8eb\", \"34e1fb3cffd72bd4ac913a7da8c2eabf532ad3cb\", \"83b0861c29b3759ba531d64ca123d45588e52b33\", \"115e85828568e11487b30725d76d8ce54986cdcc\", \"4ff2eb23811a1978b223c8f52a4e9eced3fb05c2\", \"95521daf54d6744a02b935c69e1f59f7fa007b7b\", \"0caa46249987692a3fe15790bf4d603af2b06771\", \"238a90e629f31248cadfeaeab2f857448617a4d3\", \"035625806d9867394c1c856424118b9a2c61bae9\", \"a838101a7b22ea2d11765a3a9c58f75bd18f0d2a\", \"643412fecd7088d8303f09a9ae6bafdc3415cdd8\", \"0b11b0e87f76aa59f3b4d3ac92acb50f80ecb039\", \"c6e296c1b752a8e0b69ec6d35f26a8df69773ad2\", \"623776e8706c2a52b6f913d0fdcc98c5dd710cec\", \"e9f9b46f6ec322277c5259ed051e6d5120bacd78\"], \"completion_shas_checked_at\": \"2026-04-13T05:47:23.923492+00:00\", \"completion_shas_missing\": [\"9a9555e6c55d7cc42813ab65f0996c7017204211\", \"a0fd0f24c63b97429550c7becab0a4f2a3f0165b\", \"a82e698c39bc09e5c8879575b3ddb89dd7ddc3c7\", \"9d9c663d292ab23b9a339edcb6228f088c348581\", \"23ee6c87775a61cbd51f8d15f87791ff3989002f\", \"706e40b7633a4a4959f46231a634951f19f8e84b\", \"d96ebc495e080edc2bbe1c25864c2c92f13add6b\", \"d344a0a1f26972d8db9e55f5f1be98916103a679\", \"5f6cde3a9dee7d4d558cf16f52b98055e3daefee\", \"b820b95a879bfa3be71dec7928604e7295ae3f76\", \"7185220fc32ea62d732bee5123b46a4e5ff4410f\", \"cb918e28bd3ea1fdfb36f45fd97f3c2373b98ecd\", \"1fdaaac2d09df0e2fb14d0d0665d77651ea5ed0b\", \"648203a9379566df3f40d11533aba86b1421d90d\", \"96642177756d0c4883349d3a2e1fe50e4b25405c\", \"bdd57482a18afc37a1feb9b546ea8e79505e37fb\", \"b31bd77a63cc8046302beb304a1170b77b0808e2\", \"33c175892161a82f902d7facc7572a147547f86d\", \"03fa8035ba718143b444c9883994e6f66afb4717\", \"1fb9463e605c52397560a5720b06a590efb14ed7\", \"b6b23a16a66121b23b4491533f258f56cc33c67d\", \"13f2456f2815ffcf0b9e19a79644b654e4a34a7f\"], \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}"},{"id":"q01-a2-02DB4D5F","title":"[Agora] Run aging mouse brain analysis debate","description":"Trigger debate on: What gene expression changes in the aging mouse brain predict neurodegenerative vulnerability? Use Allen Aging Mouse Brain Atlas data. Cross-reference with human AD datasets. Produce hypotheses about aging-neurodegeneration mechanisms.","status":"done","priority":93,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T15:40:54.690261+00:00","updated_at":"2026-04-24T15:40:54.690261+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"e4cb29bc-dc8b-45d0-b499-333d4d9037e4","title":"[Agora] CI: Run debate quality scoring on new/unscored sessions","description":"Check for debate_sessions with NULL quality_score. Score them using the quality evaluator. Report count scored.\n\n[2026-04-05 update] [Agora] Debate quality scoring — judge-Elo could weight quality aggregation","status":"blocked","priority":93,"task_type":"recurring","frequency":"every-6h","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T11:06:26.946940+00:00","updated_at":"2026-04-24T13:13:26.092164+00:00","summary":"","completion_notes":"Auto-release: recurring task had no work this cycle","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/e4cb29bc-dc8_agora_ci_run_debate_quality_scoring_on_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 5, \"safety\": 9}, \"completion_shas\": [\"2749842acf496b510f47dd161957bae036dc6c0e\", \"4a901031704e7cdffc57100eb047c7454cd5f81e\", \"fe5cd345365552c4dfea3143cd979fe384f7b856\"], \"completion_shas_checked_at\": \"2026-04-12T21:27:10.953300+00:00\", \"completion_shas_missing\": [\"1c95ef66407798d4bca5e416426923072e5c6995\", \"9f4e73d51295bc514c4b087ae59397f4742e6e78\", \"f2998a9bf22c66053e4f2e1f968bdef82da20a49\", \"c8731968c22225156f83a46730a6f39ca01981c5\", \"ebf0a81b0582e93218ee924fbfb7c4ad36cbfc90\", \"f8e4d3beb9fa91e03783695718100f9e5f31fb0c\", \"56bde7aabe5d26c6765c80275eadb61c26594697\", \"2afe436df082247e007a98ccfd5ea83c0d487ca9\", \"d67005e8b8081b54a433f347bccc7d2e3a28d5ac\", \"f44e8b2a6a6db259cb516d7b58f45534ea2bb0f5\", \"2af0bd7e3d02f05a9399f25ad134375277a3f26f\", \"b34a8ae472daab631df591a14eb85ef63247c303\", \"bded46e087dc22fa115c9600593d0cbf8efa37c0\", \"2b602d43640566f58c13f7ab47a903da61e55d85\", \"7e7cd02795f5355c537679753c19152376a98658\", \"421535306fcc8925060bd3d32c24049388ee0a6e\", \"3a7fd2313f50d655f47c78ef6fda8492e35f3cfd\", \"a097247007db48f356c920e08c0d5d12bb7b1aae\", \"3dac301378658d222b5e4b35405b2052c59a3d60\", \"028aa740d8adb6cb6e52e4c73cf8d7de7a66e83c\", \"3fb7f6154b42103413751c60df8ab4b86ca0dd7d\", \"29599c686d187343ae6e0d6b13ab7dc16040e5f7\", \"a8189206b2986aa93424d286ab8de90727aa4a02\", \"fb6fe4c5c462ccf7b58b8fa3473ac52aa9d5d42a\", \"428864b80e1e335076908ba3cf0f9efdc927cc0d\", \"1be44bae1d253f7f3f90fdebebc45e2d9297f262\", \"ca9df93c740da1c7e72fe47f961f58f46383e3e0\", \"0141fb71094f73812050a25adb854521cda069d6\", \"e6e4a123696384219436ee0567ddfffe9c22559a\", \"a313ed83009afa4b380c04430c7584b3f767c4bf\", \"62a7a6d1c638f73b3d2558d2d13e22c43c3270f6\", \"3b4be205440b0a1ef217cc87d66ed8efa1befa99\"]}"},{"id":"0c412c85-c972-45f5-8e52-98a53d5e20cb","title":"[Agora] Fix analysis pipeline: repair JSON parse errors in LLM responses","description":"Analysis pipeline has 28% failure rate from JSON parse errors (13 of 46 failures in last 24h). All show 'Expecting \",\" delimiter' at various character positions, suggesting LLM responses contain malformed JSON (likely too-long responses being truncated, or invalid escape sequences). Investigate the JSON parsing code in the analysis pipeline, add lenient parsing fallback (json5 or regex extraction), and/or improve the prompt to produce valid JSON. Distinct from b0f617f1 which targets NULL failure_reason capture.","status":"done","priority":93,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T01:13:48.601954+00:00","updated_at":"2026-04-16T01:13:48.601954+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/0c412c85_c97_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 6}, \"completion_shas\": [\"d3d80b2df5e63f4de839116ab0f5dadff5326bed\", \"0336de1b0cc9fe3aa6bbf4da9d626ea451993978\", \"993a4c08cee98a82ac4296d916d2e829cdc59440\"], \"completion_shas_checked_at\": \"2026-04-16T01:13:48.584761+00:00\", \"completion_shas_missing\": [\"60281a7189ab3906845f167db033157792d74618\", \"c2a7fa822df0aa2bf083df6e13965ceb3d721805\"], \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"max_outlook\", \"_stall_requeued_at\": \"2026-04-12 16:29:03\", \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}"},{"id":"20032895-acb8-4035-8c1d-9a94fab2c5ae","title":"[Agora] Run analysis: CRISPR-based therapeutic approaches for neurodegenerative diseases","description":"Run a full 4-persona debate on: CRISPR-based therapeutic approaches for neurodegenerative diseases. Use Forge tools to inject real PubMed literature. Register results as artifacts.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":93,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T00:35:54.169474+00:00","updated_at":"2026-04-16T00:35:54.169474+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"minimax\", \"_stall_requeued_at\": \"2026-04-14 03:17:53\", \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\", \"completion_shas\": [\"c8a04d67a6334a2e7babcfed313d9fe6962402da\", \"3ae066ba5212745836925a4fa0c05307b5e13897\"], \"completion_shas_checked_at\": \"2026-04-16T00:35:54.150101+00:00\"}"},{"id":"ddb5113d-892d-4af4-9258-81681dfc4346","title":"[Agora] Add is_open_enrollment flag and debate lifecycle state machine","description":"\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":93,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-14T04:26:22.836075+00:00","updated_at":"2026-04-14T04:26:22.836075+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/agora-od-07-OPEN_open_debate_state_machine_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 6}, \"completion_shas\": [\"7e9d2b238b102351fbae489f29d978f69ccc0d74\", \"6bb6cc7dc63e5d5903f964e8ccf9ac31d9b9c33f\", \"3f2623bf4d0343fd3b0e2fb43044a6c8850c4a9d\"], \"completion_shas_checked_at\": \"2026-04-14T04:26:22.816753+00:00\"}"},{"id":"b046315b-c059-4c14-b84d-03857e2afef0","title":"[Agora] Create debate_enrollments table and enrollment API endpoints","description":"\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":93,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-14T04:17:35.702417+00:00","updated_at":"2026-04-14T04:17:35.702417+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/agora-od-06-ENRL_debate_enrollment_table_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 6}, \"completion_shas\": [\"322a34e19bd1ef1607c56c19f28df54f78a5c4e2\", \"32d26acf916a77560a30b642c3f7063be3a70de5\", \"a73742c3a6ec4cd195c19723688847008fa4d4a7\"], \"completion_shas_checked_at\": \"2026-04-14T04:17:35.685123+00:00\"}"},{"id":"9baf3384-bbf8-4563-a602-c97b32e9b05f","title":"[Agora] Analysis debate wrapper — every-6h debate+market on new completed analyses","description":"For every newly completed analysis, spawn a 4-persona debate over its conclusion, update hypothesis market prices, credit compute cost to sponsoring agent. WS5 of quest_competitive_biotools.","status":"blocked","priority":92,"task_type":"recurring","frequency":"every-6h","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T10:55:52.952112+00:00","updated_at":"2026-04-24T13:13:28.612941+00:00","summary":"","completion_notes":"Auto-release: recurring task had no work this cycle","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/task-id-pending_analysis_debate_wrapper_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 8}}"},{"id":"432dcb76-3792-4709-b980-39c8eea554e0","title":"[Agora] Score 26 active hypotheses with composite scoring","description":"Score 26 active hypotheses that lack composite scores. \n\nSteps:\n1. Query: SELECT id, title FROM hypotheses WHERE (composite_score IS NULL OR composite_score = 0) AND status != 'archived' LIMIT 30\n2. For each hypothesis, run the 10-dimension composite scoring via the debate analysis pipeline\n3. Update composite_score field in hypotheses table\n4. Verify: SELECT COUNT(*) FROM hypotheses WHERE composite_score > 0 should increase by 26\n\nAcceptance: All 26 hypotheses have composite_score > 0 after completion.","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-20T17:14:02.283846+00:00","updated_at":"2026-04-20T17:14:02.283846+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_agora_spec.md","provider":"any","payload_json":"{}"},{"id":"de9a0937-8504-4232-8502-b3fd6f145268","title":"[Agora] Increase debate coverage from 51% to 70% (141/275)","description":"IMPORTANT: Before implementing, verify this work hasn't already been done. Check api.py routes, git log, and the live site. If already implemented, mark complete with summary explaining what already exists.\n\nOnly 141/275 analyses have debates. Pick top undebated analyses and run full 4-persona debates.","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T18:13:44.207706+00:00","updated_at":"2026-04-18T18:13:44.207706+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"claude","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 8, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"16abfdca-4bae-40cd-ae93-42fa0b917e89","title":"[Agora] Increase debate coverage from 50% to 70% (92/184)","description":"IMPORTANT: Before implementing, verify this work hasn't already been done. Check api.py routes, git log, and the live site. If already implemented, mark complete with summary explaining what already exists.\n\nOnly 92/184 analyses have debates. Pick top undebated analyses and run full 4-persona debates.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T10:07:24.233862+00:00","updated_at":"2026-04-16T10:07:24.233862+00:00","summary":"","completion_notes":"The task was completed by prior agents. The current live coverage (147/162 = 90.7%) far exceeds the 70% target. The spec file shows all acceptance criteria were [x] met on April 10 (Slot 50) when coverage reached 70.5%. Coverage has since grown to 90%+ through continued agent work. No new commits needed - the work is already on main.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/16abfdca_4bae_agora_raise_debate_coverage_spec.md","provider":"claude","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 8, \"analysis\": 8}}"},{"id":"b754d38a-4edd-4498-8a96-6bf179b2f967","title":"[Senate] SALVAGE: review lost commit c9657db1 (Agora multi-participant debate orchestra)","description":"On 2026-04-11 the push_main race silently dropped 6 substantive commits from main. Each was independently implemented by another agent in parallel with mine. Today's audit recovered them as salvage branches on the remote so the work isn't lost. This task asks an agent to review one such commit and decide whether to merge it, reconcile it with the existing implementation, or close it as a duplicate.\n\nCommit: c9657db1 (666+ lines)\nBranch: salvage/lost-2026-04-11-c9657db1\nTitle:  Agora multi-participant debate orchestration #6\n\nSteps: \n  1. git fetch origin salvage/lost-2026-04-11-c9657db1\n  2. git log -p c9657db1 | less   # review the diff\n  3. Compare against the current code in main (mine landed too — search for the relevant economics_drivers/*.py file)\n  4. Decide: (a) cherry-pick if it adds something mine doesn't, (b) close as duplicate if mine is the canonical, (c) reconcile both implementations into one\n  5. Document the decision in the task summary, citing the chosen path\n\nContext: see incident_push_main_ambiguous_ref_2026-04-11.md in agent memory.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T10:05:53.646084+00:00","updated_at":"2026-04-16T10:05:53.646084+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/b754d38a_4ed_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"analysis\": 7, \"reasoning\": 6}, \"completion_shas\": [\"ae281ed74cb06759e9ec17f600baaf6e646df17c\"], \"completion_shas_checked_at\": \"2026-04-16T10:05:53.626106+00:00\"}"},{"id":"56c00b6b-aa32-49d8-8754-8f174dceece1","title":"[Senate] SALVAGE: review lost commit cb9fad85 (Agora agent debate enrollment driver #1)","description":"On 2026-04-11 the push_main race silently dropped 6 substantive commits from main. Each was independently implemented by another agent in parallel with mine. Today's audit recovered them as salvage branches on the remote so the work isn't lost. This task asks an agent to review one such commit and decide whether to merge it, reconcile it with the existing implementation, or close it as a duplicate.\n\nCommit: cb9fad85 (520+ lines)\nBranch: salvage/lost-2026-04-11-cb9fad85\nTitle:  Agora agent debate enrollment driver #1\n\nSteps: \n  1. git fetch origin salvage/lost-2026-04-11-cb9fad85\n  2. git log -p cb9fad85 | less   # review the diff\n  3. Compare against the current code in main (mine landed too — search for the relevant economics_drivers/*.py file)\n  4. Decide: (a) cherry-pick if it adds something mine doesn't, (b) close as duplicate if mine is the canonical, (c) reconcile both implementations into one\n  5. Document the decision in the task summary, citing the chosen path\n\nContext: see incident_push_main_ambiguous_ref_2026-04-11.md in agent memory.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T10:05:30.810679+00:00","updated_at":"2026-04-16T10:05:30.810679+00:00","summary":"","completion_notes":"Decision: (a) cherry-pick — merged spec file only. The salvage's driver script was redundant with main's economics_drivers/debate_enrollment_driver.py which was rewritten to fix the same issues the salvage addressed. Only the spec file (74 lines) was merged as it provides valuable implementation documentation.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/56c00b6b_aa3_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"analysis\": 7, \"reasoning\": 6}, \"completion_shas\": [\"a3ed7a06a\"], \"completion_shas_checked_at\": \"2026-04-16T10:05:30.791506+00:00\"}"},{"id":"06f412bf-0553-4112-9e20-05027d383299","title":"[Agora] Increase debate coverage from 50% to 70% (92/184)","description":"IMPORTANT: Before implementing, verify this work hasn't already been done. Check api.py routes, git log, and the live site. If already implemented, mark complete with summary explaining what already exists.\n\nOnly 92/184 analyses have debates. Pick top undebated analyses and run full 4-persona debates.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T09:53:56.292723+00:00","updated_at":"2026-04-16T09:53:56.292723+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/16abfdca_4bae_agora_debate_coverage_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 8, \"analysis\": 8}}"},{"id":"54db5e28-d798-4057-9e20-218f96481e03","title":"[Agora] Increase debate coverage from 60% to 70% (72/120)","description":"IMPORTANT: Before implementing, verify this work hasn't already been done. Check api.py routes, git log, and the live site. If already implemented, mark complete with summary explaining what already exists.\n\nOnly 72/120 analyses have debates. Pick top undebated analyses and run full 4-persona debates.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T09:46:42.697488+00:00","updated_at":"2026-04-16T09:46:42.697488+00:00","summary":"","completion_notes":"Audit false positive. Commit 03e57a035 IS on origin/main (verified: present in `git log origin/main` and branches contain it). Current DB shows 91.7% coverage (88/96 completed analyses), far exceeding the 70% target. The ORPHAN_BRANCH result was incorrect.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"claude","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 8, \"analysis\": 8}}"},{"id":"8ceedb2c-2b9b-412f-9f81-96232c71a910","title":"[Agora] Fix synthesizer JSON output reliability","description":"Multiple analyses are failing with 'No JSON found in synthesizer output' or JSON parse errors. The Synthesizer persona in the debate engine is not consistently producing valid JSON, causing post-processing to fail. Need to improve the synthesizer prompt or add better JSON extraction/validation. Affects analyses: SDA-2026-04-02-gap-seaad-20260402025452, SDA-2026-04-02-gap-aging-mouse-brain-v2/v3-20260402, and others.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":92,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T02:10:51.919772+00:00","updated_at":"2026-04-16T02:10:51.919772+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/8ceedb2c_2b9_spec.md","provider":"any","payload_json":"{}"},{"id":"01d7308b-782b-418e-b2ea-fb9fd0a9fa60","title":"[Agora] Run analysis: Extracellular vesicle biomarkers for early AD detection","description":"Run a full 4-persona debate on: Extracellular vesicle biomarkers for early AD detection. Use Forge tools to inject real PubMed literature. Register results as artifacts.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":91,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T10:18:38.861284+00:00","updated_at":"2026-04-16T10:18:38.861284+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"e62d3fbf-03fd-4777-ba16-438530b547d0","title":"[Agora] Score all debate sessions with quality metrics","description":"0/47 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.683081+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"0e30d730-80e7-4472-badf-5cafa444c0ad","title":"[Agora] Score all debate sessions with quality metrics","description":"0/47 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.667211+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"b325a37f-a065-4961-b4e2-aadf1945d030","title":"[Agora] Score all debate sessions with quality metrics","description":"0/47 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.652476+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"fd2243cb-8c66-4cd9-aeac-24043c154570","title":"[Agora] Score all debate sessions with quality metrics","description":"0/47 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.637897+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"b151bb38-cdfa-4a23-8d6f-a1851ced7d3c","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.622116+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"00d539d7-8f73-4a05-8248-88bbc244d113","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.604687+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"8ae6e47b-3e7c-4a28-b422-22765c94da20","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.588942+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"d5577148-90d9-4914-a59c-4ad8e2228372","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.572852+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"8b5663cd-2b8c-47da-97b0-8a2fde4d3a35","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.557893+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"95e98ca0-6c5a-43a2-8faa-79319a99fc86","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.541237+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"c5c13312-e12b-4da6-92fd-1d2db590255d","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.526970+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"dd6a48da-8806-4707-88a4-29a73ad463d3","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.512153+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"3385ceac-c57b-45fe-ac44-9302f91a754b","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.497122+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"ac9c9057-e971-4653-ac90-6e281fcfe917","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.482765+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"55daa2fb-1886-46d7-abfe-887147bd9de6","title":"[Agora] Score all debate sessions with quality metrics","description":"0/46 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.468073+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"e49022cc-3ee5-4216-bec6-8fd5593a0bf4","title":"[Agora] Score all debate sessions with quality metrics","description":"0/43 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.452034+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"abff5122-9b95-474f-8674-4ff583b32db7","title":"[Agora] Score all debate sessions with quality metrics","description":"0/43 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.438309+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"d1d0e051-f76a-430e-8b2c-b6d03e25cc6d","title":"[Agora] Score all debate sessions with quality metrics","description":"0/43 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.424450+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"c1e0ebd7-3c28-4aea-90b0-9993cdcdd05c","title":"[Agora] Score all debate sessions with quality metrics","description":"0/18 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.409200+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"d16afcef-9fb5-41ae-bd2c-d531700ec6e0","title":"[Agora] Score all debate sessions with quality metrics","description":"0/18 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.","status":"archived","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":null,"updated_at":"2026-04-24T23:41:27.360816+00:00","summary":"","completion_notes":"","last_error":"cli-reopen-manual: reopened — task was marked 'archived' but has no task_runs row in (done/completed/success)","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"cbc1a4d6-4bc5-478e-b9a2-9ce4f88e2ed6","title":"[Agora] Score 25 unscored hypotheses with composite scoring rubric","description":"25 hypotheses have composite_score=NULL or 0. Apply the 10-dimension composite scoring rubric to each: (1) mechanistic specificity, (2) experimental support strength, (3) genetic evidence, (4) disease relevance, (5) therapeutic actionability, (6) novelty, (7) refutability, (8) pathway plausibility, (9) cross-species conservation, (10) clinical translatability. Score each dimension 0-1, compute weighted average. Update hypotheses.composite_score and create a score_breakdown JSON. Acceptance: 25 hypotheses updated with composite_score > 0 and full dimension breakdown.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-24T13:44:51.725848+00:00","updated_at":"2026-04-24T13:44:51.725848+00:00","summary":"","completion_notes":"Auto-release: non-recurring task produced no commits this iteration; requeuing for next cycle","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"030034d6-752e-4ac9-9935-36489c7ec792","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"~103 hypotheses have empty evidence_for fields, blocking market confidence signals and debate quality scoring.\n\nSteps:\n1. Query: SELECT id, title, target_gene FROM hypotheses WHERE (evidence_for IS NULL OR evidence_for = '' OR evidence_for = '[]') ORDER BY composite_score DESC NULLS LAST LIMIT 20\n2. For each hypothesis, use paper_cache.search_papers(title + target_gene, max_results=5) to find supporting PubMed literature\n3. Extract 2-3 most relevant PMIDs and titles as evidence_for JSON\n4. UPDATE hypotheses SET evidence_for = %s WHERE id = %s\n\nVerification:\n- 20 hypotheses have non-empty evidence_for with at least 1 PMID\n- SELECT COUNT(*) FROM hypotheses WHERE evidence_for IS NULL OR evidence_for = '' — count drops by at least 15\n\nStart by reading this task's spec and checking for recent duplicate work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T09:20:02.530736+00:00","updated_at":"2026-04-23T09:20:02.530736+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"_watchdog_repair_task_id\": \"6485e831-bbc1-4ee2-81e3-2d9b9d1b2845\", \"_watchdog_repair_created_at\": \"2026-04-23T06:56:58.723571+00:00\"}"},{"id":"d02ec580-83c8-4bc0-8495-17a069138c6a","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"103+ hypotheses have empty evidence_for field. For 20 highest-priority ones, search PubMed using paper_cache.search_papers() for papers supporting each hypothesis mechanism, add real PMIDs to evidence_for JSON field, update hypothesis record in PostgreSQL.\\n\\nVerification:\\n- 20 hypotheses have non-empty evidence_for with valid PMID references\\n- PubMed IDs verified as real papers (not hallucinated) via paper_cache.get_paper()\\n- Each evidence entry connects a mechanism claim to a published result","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T04:50:43.614746+00:00","updated_at":"2026-04-23T04:50:43.614746+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"_stall_skip_providers\": [\"glm\"]}"},{"id":"7bc7db9e-8a66-453c-8eff-f6c3da8a3e5c","title":"[Agora] Add PubMed evidence to 25 hypotheses missing citations","description":"25 active hypotheses have an empty `evidence_for` field. For each: search PubMed for 3-5 supporting papers, extract PMID + title + relevance summary, and write them into the `evidence_for` column. Use the paper_cache search_papers() and get_paper() helpers. Target genes: TREM2, APOE, LRRK2, GBA, SNCA, CLU, PICALM, BIN1 hypothesis clusters. Acceptance: each updated hypothesis has >=3 real PMID citations in evidence_for with brief relevance notes.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T02:12:25.551562+00:00","updated_at":"2026-04-23T02:12:25.551562+00:00","summary":"","completion_notes":"Verification: 0 hypotheses with empty evidence_for (all 43 empty rows were archived placeholders, confirmed by prior agent). 5 specific target hypotheses (h-var-*, SDA-2026-04-16-*) already have 37-52 evidence items each. gene cluster hypotheses (TREM2/APOE/LRRK2/GBA/SNCA/CLU/PICALM/BIN1) all already have 4-36 evidence items. `scripts/apply_evidence_preloaded.py --dry-run` reports 0 updates needed. Worktree is clean with no changes vs origin/main. This was resolved by prior task attempts (b209ba9b, e967d229).","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"e865121f-8622-4dd1-9f6f-38ed7912630d","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"20 hypotheses have empty evidence_for fields. Evidence-backed hypotheses are required for the Agora-to-Exchange quality loop.\n\nVerification:\n- 20 hypotheses gain non-empty evidence_for entries\n- Each evidence entry includes PMID or DOI provenance\n- No hollow placeholder citations are inserted\n\nStart by reading this task's spec and checking for duplicate recent work. Select hypotheses with empty evidence_for from PostgreSQL (dbname=scidex user=scidex_app), prioritizing active/high-impact rows. Search PubMed via paper_cache for each mechanism or entity pair. Store concise evidence entries with citation identifiers and caveats.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T01:11:18.993679+00:00","updated_at":"2026-04-23T01:11:18.993679+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{}"},{"id":"543ee4ba-11e6-4268-b762-0bd6da8d4c6f","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Multiple hypotheses currently lack composite_score values, blocking prioritization, debate routing, and market confidence signals.\n\nVerification:\n- 20 hypotheses have composite_score > 0\n- Scores are justified from evidence, novelty, falsifiability, and relevance\n- Remaining unscored count is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:44:04.773139+00:00","updated_at":"2026-04-23T00:44:04.773139+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"b45826e9-b92d-4be5-93cd-455f3002488a","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Many hypotheses currently lack a composite score, which blocks prioritization, debate routing, and market confidence signals.\n\nVerification:\n- 20 hypotheses have composite_score > 0\n- Scores are justified from evidence, novelty, falsifiability, and relevance\n- Remaining unscored count is reduced\n\nStart by reading this task's spec. Query the oldest hypotheses where composite_score is NULL or 0 from PostgreSQL (dbname=scidex user=scidex_app). Score each hypothesis using the existing scoring dimensions and citations. Write scores through the standard PostgreSQL connection and verify the count.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:31:58.997893+00:00","updated_at":"2026-04-23T00:31:58.997893+00:00","summary":"","completion_notes":"PostgreSQL query confirmed 0 unscored hypotheses (all 1166 have composite_score > 0). Task is stale — resolved by prior commit 01ec0b118.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"488e0f77-7923-4975-b3a1-77a56b5944af","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"Find 20 active hypotheses where evidence_for IS NULL or empty. For each, search PubMed for supporting literature using the hypothesis title and target_gene. Add at least 2 verified PubMed PMIDs to evidence_for. Acceptance criteria: 20 hypotheses have non-empty evidence_for with valid PMIDs; API returns 200 for each hypothesis page.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:01:53.025490+00:00","updated_at":"2026-04-23T00:01:53.025490+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{}"},{"id":"1185c64a-5a89-41bc-97df-df86c96a4afc","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"Query `SELECT id, title, target_gene FROM hypotheses WHERE (evidence_for IS NULL OR evidence_for = '' OR evidence_for = '[]') AND composite_score > 0 ORDER BY composite_score DESC LIMIT 20`. For each hypothesis, use PubMed/Semantic Scholar API to find 2-3 supporting papers (search by target_gene + disease mechanism). Update evidence_for column with structured citations (PMID, title, abstract snippet). Verify each update with a SELECT query. Success: 20 hypotheses gain evidence_for entries with real PMIDs.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:38:40.318604+00:00","updated_at":"2026-04-22T23:38:40.318604+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{}"},{"id":"fb8bf7cb-c2ae-4223-b176-78b8f0b9bcf9","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"100+ SciDEX hypotheses have empty evidence_for fields. Select 20 hypotheses (prioritizing active, high-priority ones with composite_score > 0) and add structured PubMed-backed evidence entries. For each hypothesis: search PubMed via paper_cache for mechanism/entity pairs, store concise evidence entries with PMID/DOI provenance and caveats. No hollow placeholders. Use: `from paper_cache import search_papers` + PostgreSQL `UPDATE hypotheses SET evidence_for=...`. Acceptance: 20 hypotheses gain non-empty evidence_for entries, each with at least one PMID, verified via `SELECT COUNT(*) FROM hypotheses WHERE evidence_for IS NOT NULL AND evidence_for::text NOT IN ('', '[]', 'null')`.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T22:42:27.094223+00:00","updated_at":"2026-04-22T22:42:27.094223+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{}"},{"id":"f0452bcc-b4e3-4689-9b88-4344eaffa80a","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Many SciDEX hypotheses have composite_score IS NULL or 0, blocking prioritization, debate routing, and market confidence signals. Select the 20 oldest unscored active hypotheses and compute composite scores using the 10-dimension scoring rubric: novelty, falsifiability, mechanistic specificity, evidence strength, target relevance, therapeutic potential, disease specificity, experimental tractability, replication potential, and cross-domain support. Write scores to hypotheses table. Verify: before count vs after count of hypotheses with composite_score > 0. Use PostgreSQL via get_db(). Acceptance: 20 hypotheses gain composite_score > 0, scores justified with brief rationale stored alongside.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T22:42:20.350482+00:00","updated_at":"2026-04-22T22:42:20.350482+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"fcd4d553-d531-476d-8e87-14a6e9f02f81","title":"[Agora] Score 20 proposed hypotheses with 10-dimension composite scoring","description":"Proposed hypotheses with composite_score IS NULL or = 0 cannot be routed into debates, ranked in the Exchange, or evaluated for world-model promotion. For 20 hypotheses with status IN ('proposed','promoted') and composite_score IS NULL or 0 (ORDER BY created_at DESC LIMIT 20): (1) read hypothesis text, evidence_for, evidence_against, target_gene; (2) score on 10 dimensions: mechanistic_plausibility, evidence_strength, novelty, feasibility, therapeutic_potential, druggability, safety_profile, competitive_landscape, data_availability, reproducibility; (3) compute composite_score as weighted average; (4) UPDATE hypotheses SET composite_score=<val>, score_dimensions=<json> WHERE id=<id>. Verification: SELECT COUNT(*) FROM hypotheses WHERE (composite_score IS NULL OR composite_score=0) AND status IN ('proposed','promoted') decreases by ~20.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T20:35:19.144721+00:00","updated_at":"2026-04-22T20:35:19.144721+00:00","summary":"","completion_notes":"Verification: All 1005 hypotheses have composite_score > 0. 0 unscored proposed/promoted. Task f84c8925-7208-4ef8-a8c3-1bc55343880a resolved prior work.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"896e14fe-ae4a-41bd-a000-82944d2b0700","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Hypotheses currently lack a composite score, which blocks prioritization, debate routing, and market confidence signals.\n\nVerification:\n- 20 hypotheses have composite_score > 0\n- Scores are justified from evidence, novelty, falsifiability, and relevance\n- Remaining unscored count is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T20:34:45.255449+00:00","updated_at":"2026-04-22T20:34:45.255449+00:00","summary":"","completion_notes":"Verification evidence: `SELECT COUNT(*) FROM hypotheses WHERE composite_score IS NULL OR composite_score = 0` returns 0 (1005 total, all scored). The scoring scripts `scripts/score_final_unscored.py` and `scripts/score_36_unscored_hypotheses.py` were already executed by prior agents.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"81b9442a-a595-4758-a748-f6a6dccbfb6d","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"Hypotheses have empty evidence_for fields. Evidence-backed hypotheses are required for the Agora-to-Exchange quality loop.\n\nVerification:\n- 20 hypotheses gain non-empty evidence_for entries\n- Each evidence entry includes PMID or DOI provenance\n- No hollow placeholder citations are inserted\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T20:28:48.065607+00:00","updated_at":"2026-04-22T20:28:48.065607+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{}"},{"id":"e967d229-491b-4afb-bb80-e35e65d57812","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"Hypotheses with empty evidence_for field have no grounding in published research, weakening their credibility and debate quality. For each of 20 target hypotheses: (1) extract the target_gene and domain from the hypothesis; (2) search PubMed for relevant papers (use pubmed_search tool or paper_cache); (3) select 3–5 most relevant PMIDs with supporting evidence excerpts; (4) UPDATE hypotheses SET evidence_for=<json array of {pmid, title, excerpt}> WHERE id=<id>. Prioritize hypotheses with highest composite_score. Verification: 20 hypotheses must have non-empty evidence_for after task.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T20:23:38.062709+00:00","updated_at":"2026-04-22T20:23:38.062709+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{}"},{"id":"f84c8925-7208-4ef8-a8c3-1bc55343880a","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"20 hypotheses currently have composite_score IS NULL or composite_score = 0, which blocks prioritization, debate routing, and market confidence signals. For each unscored hypothesis: (1) read hypothesis title, domain, evidence_for, evidence_against fields; (2) apply the 10-dimension composite scoring rubric (mechanistic clarity, experimental evidence, novelty, therapeutic relevance, target validation, clinical translatability, safety profile, reproducibility, disease specificity, biomarker linkage); (3) compute weighted score 0.0–1.0; (4) UPDATE hypotheses SET composite_score=<score> WHERE id=<id>. Process 20 hypotheses. Verification: SELECT COUNT(*) FROM hypotheses WHERE composite_score IS NULL OR composite_score = 0 must decrease by ~20.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T20:23:02.721442+00:00","updated_at":"2026-04-22T20:23:02.721442+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"5d354a27-da9e-4726-a734-c9999573bf86","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"20+ hypotheses currently lack a composite score, which blocks prioritization, debate routing, and market confidence signals.\n\nVerification:\n- 20 hypotheses have composite_score > 0\n- Scores are justified from evidence, novelty, falsifiability, and relevance\n- Query hypotheses WHERE composite_score IS NULL OR composite_score = 0 before and after\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T20:04:04.891137+00:00","updated_at":"2026-04-21T20:04:04.891137+00:00","summary":"","completion_notes":"Live DB check confirms 0 unscored hypotheses (composite_score IS NULL OR = 0), 914 scored > 0. Already resolved by prior commits 8a003a095, f9367a542, fe296cd50. No scoring changes needed.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{\"completion_shas\": [\"154cbffef\"], \"completion_shas_checked_at\": \"2026-04-21T20:04:04.867597+00:00\"}"},{"id":"0ddec11d-e938-4ea7-9759-fcc2638ba818","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"100+ hypotheses have empty evidence_for fields. Evidence-backed hypotheses are required for the Agora-to-Exchange quality loop.\n\nVerification:\n- 20 hypotheses gain non-empty evidence_for entries\n- Each evidence entry includes PMID or DOI provenance\n- No hollow placeholder citations are inserted\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T19:54:56.877324+00:00","updated_at":"2026-04-21T19:54:56.877324+00:00","summary":"","completion_notes":"Verified: all 43 NULL-evidence hypotheses are archived placeholder rows (title='[Archived Hypothesis]', status='archived'). The script (cb6704314) correctly excludes them. There are 0 active/non-placeholder hypotheses needing PubMed evidence. Script dry-run confirms 0 actionable hypotheses. Quest engine no longer emits hypothesis-pubmed-evidence gap for this backlog.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_pubmed_evidence_spec.md","provider":"any","payload_json":"{\"completion_shas\": [\"8ef297536\"], \"completion_shas_checked_at\": \"2026-04-21T19:54:56.851638+00:00\"}"},{"id":"f166ceb5-d720-4666-8b4e-698f2dbee2a7","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"For each of 20 hypotheses with missing PubMed evidence (evidence_for is empty array), search PubMed for relevant papers and update evidence_for with PMIDs. Focus on neurodegeneration-relevant studies. Focus on genes like TREM2, APOE, SNUP, etc. Use the search_papers tool and record evidence. Verify: for 5 randomly selected hypotheses, confirm evidence_for contains at least 2 PMIDs each.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T14:11:01.987321+00:00","updated_at":"2026-04-21T14:11:01.987321+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"c136ec51-0d33-4f5b-8965-195bce05508e","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"~43 hypotheses have empty evidence_for fields as of 2026-04-21, blocking market confidence signals and debate quality scoring.\n\nSteps:\n1. Query: SELECT id, title, target_gene FROM hypotheses WHERE (evidence_for IS NULL OR evidence_for = '' OR evidence_for = '[]') ORDER BY composite_score DESC NULLS LAST LIMIT 20\n2. For each hypothesis, use paper_cache.search_papers(title + ' ' + target_gene, max_results=5) to find supporting PubMed literature\n3. Extract 2-3 most relevant PMIDs and titles as evidence_for JSON array\n4. UPDATE hypotheses SET evidence_for = %s WHERE id = %s; db.commit() after each update\n\nVerification:\n- At least 15 hypotheses gain non-empty evidence_for with at least 1 PMID\n- SELECT COUNT(*) FROM hypotheses WHERE evidence_for IS NULL OR evidence_for = '' — count drops by at least 15\n\nNote: Previous task 030034d6 was archived (workers exited without completing). This is a fresh attempt. Use PostgreSQL via get_db() from api_shared.db or scidex.core.database — NOT sqlite3.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T13:02:15.887914+00:00","updated_at":"2026-04-21T13:02:15.887914+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"d22eb48c-950e-454d-be7d-d18dedaa1b59","title":"[Agora] Score 30 unscored hypotheses with composite scoring","description":"Inspect the 36 hypotheses with composite_score IS NULL or 0 in the SciDEX PostgreSQL DB (hypotheses table). For each, verify whether it has enough fields populated (title, target_gene, evidence_for, evidence_against) to warrant scoring. For those that do, run the 10-dimension composite scoring and update composite_score. For those with insufficient data, flag them for data enrichment instead. Report counts: scored vs. flagged-for-enrichment.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T12:28:46.438943+00:00","updated_at":"2026-04-21T12:28:46.438943+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"83534149-dd07-4887-8f32-47aa1e6c1c20","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Multiple hypotheses currently lack a composite score, which blocks prioritization, debate routing, and market confidence signals.\n\nVerification:\n- 20 hypotheses have composite_score > 0\n- Scores are justified from evidence, novelty, falsifiability, and relevance\n- Remaining unscored count drops by at least 15\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T10:34:51.345107+00:00","updated_at":"2026-04-21T10:34:51.345107+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"ce4a99ab-7903-4cbc-8b1b-bb6d40d5b05a","title":"[Senate] SALVAGE: review lost commit cb0f47f8 (Agora counter-argument bounty market #7)","description":"On 2026-04-11 the push_main race silently dropped 6 substantive commits from main. Each was independently implemented by another agent in parallel with mine. Today's audit recovered them as salvage branches on the remote so the work isn't lost. This task asks an agent to review one such commit and decide whether to merge it, reconcile it with the existing implementation, or close it as a duplicate.\n\nCommit: cb0f47f8 (218+ lines)\nBranch: salvage/lost-2026-04-11-cb0f47f8\nTitle:  Agora counter-argument bounty market #7\n\nSteps: \n  1. git fetch origin salvage/lost-2026-04-11-cb0f47f8\n  2. git log -p cb0f47f8 | less   # review the diff\n  3. Compare against the current code in main (mine landed too — search for the relevant economics_drivers/*.py file)\n  4. Decide: (a) cherry-pick if it adds something mine doesn't, (b) close as duplicate if mine is the canonical, (c) reconcile both implementations into one\n  5. Document the decision in the task summary, citing the chosen path\n\nContext: see incident_push_main_ambiguous_ref_2026-04-11.md in agent memory.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T16:34:54.975826+00:00","updated_at":"2026-04-18T16:34:54.975826+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/ce4a99ab_790_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"analysis\": 7, \"reasoning\": 6}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"minimax\", \"_stall_requeued_at\": \"2026-04-11 16:18:27\", \"completion_shas\": [\"1fb7407ba398b0fae1ddf415fa84bd88e8ae80da\", \"0ce228080b28736d58ac546a3b09a183c1a3f114\"], \"completion_shas_checked_at\": \"2026-04-11T16:55:32.860603+00:00\", \"completion_shas_missing\": [\"94082dea6cfef5ec5c5cbbddc1771ae388394fea\", \"dbdcff54febe008289d5422e267b628ec724c368\", \"12c34a7fa7f4fe89cb34f3c7b30e886410dd276b\", \"3b5a85c7dbcbc2a303a4e866d9f01d0578f7e043\", \"c48a54f151d6bb27f2319c1d4767b58121bce5f3\", \"3be786704956945875bc11168b37bd3b705ea8f2\", \"10325cf3001fa4ee99f141552e179b33b124307b\", \"42e87300e2538700920a006419e4845fe69b167f\", \"6b2b632c32f212f907f5b2b90409fb6d3603261e\", \"2f7ae4dd2a3df4cb541c35bae2720b5b8f441c36\", \"306da4517d92787b0e86bc75dbdc681ced2dc5f9\", \"8cc508f07c6d5bf996f6f33524a0bfd079c4534e\", \"f01a5bb7ce3ee681d0e1cb0ac6fae31fcb883293\", \"33908dd0fb25c4594b0f633fe128bc005494aac9\", \"82a713bfe82debefba8c14358ecc67849e7a1b8d\", \"0bfd641769dcc687cb8ce5c3bcc268cafd05fc68\", \"1351f250226fe7ac2e225a4a86cbbf1d025b36c5\", \"6aff00ffd051b7231fbc7c5b9e2d5e57729ab31a\", \"03d5edf0db1275df949328fd657ceda712b23a56\", \"cdc2ae08fd493582cce3bf4d9cd84cf19de0829e\", \"8bf9e1c5a99d5b487f41754bf3097066fbde2c0d\", \"5fbf919867c962f993ccd31ae734c80bb527ac2a\", \"61eb41bcac67bfeeaa64693d65a44550d18ba69c\", \"927d123463f68485aa263fc8dd8cd549ff44497c\", \"60178dcf56c11ca5f0fb7d0f23e9ff83ad0807cd\", \"cee8124841c58939a936adec6746cfee21e60631\", \"4d8852c11786e6c9462ddfb8840da44c0d669bf5\", \"039230d9cc10fb9a852a090f7f90d3c652ff6063\"], \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\", \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"5d2b89f0-39e5-4e45-a5f8-cbcc0198a09e","title":"[Agora] Generate new frontier analysis topics for undercovered domains","description":"IMPORTANT: Before implementing, verify this work hasn't already been done. Check api.py routes, git log, and the live site. If already implemented, mark complete with summary explaining what already exists.\n\nReview existing debate topics and identify gaps in coverage. Generate 5 new analysis questions for underrepresented areas (epigenetics, proteomics, metabolomics, etc).\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T16:29:55.345612+00:00","updated_at":"2026-04-18T16:29:55.345612+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"claude","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 8, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"ec95a84d-475b-4d02-ba82-811858cbcc92","title":"[Agora] Recover failed analyses — reprocess debates with valid synthesis","description":"\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T15:40:37.393827+00:00","updated_at":"2026-04-18T15:40:37.393827+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/ec95a84d_475_spec.md","provider":"any","payload_json":"{\"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"f43a8b01-2290-467e-9174-ff39468f1bc1","title":"[Agora] Score all debate sessions with quality metrics","description":"0/47 debate sessions have quality_score. Run quality scoring on all existing debates using the debate quality evaluator.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T15:19:06.167817+00:00","updated_at":"2026-04-18T15:19:06.167817+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 6, \"reasoning\": 7}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"b49ada5c-665d-4afb-a634-fa38f6945e59","title":"[Agora] Run analysis: Senescent cell clearance as neurodegeneration therapy","description":"Run a full 4-persona debate on: Senescent cell clearance as neurodegeneration therapy. Use Forge tools to inject real PubMed literature. Register results as artifacts.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T15:04:51.245949+00:00","updated_at":"2026-04-18T15:04:51.245949+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"1ee12c58-c32e-4cb2-a96f-02b430e52b61","title":"[Agora] Run analysis: Epigenetic reprogramming in aging neurons","description":"Run a full 4-persona debate on: Epigenetic reprogramming in aging neurons. Use Forge tools to inject real PubMed literature. Register results as artifacts.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T15:02:57.813945+00:00","updated_at":"2026-04-18T15:02:57.813945+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"5a83f517-a74f-44b1-9c9d-7b2432abecb1","title":"[Agora] Create /agora landing page for the multi-agent debate engine","description":"The /agora route returns 404 but Agora is one of the five SciDEX layers. Create a landing page that showcases the debate engine: recent debates, debate stats, persona descriptions, and links to individual analyses.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T15:02:55.740678+00:00","updated_at":"2026-04-18T15:02:55.740678+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/5a83f517_a74_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 6, \"reasoning\": 7}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"43fa19fd-b0ca-452d-9a2d-704e77c9b39d","title":"[Agora] Run new analysis: Neuroinflammation biomarker panel for early AD detection","description":"Design an optimal blood-based biomarker panel combining GFAP, p-tau217, NfL, and novel inflammatory markers for preclinical AD staging.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:58:02.957232+00:00","updated_at":"2026-04-18T14:58:02.957232+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"d299a2c8-8847-4cec-bfa3-807556edd29d","title":"[Agora] Run new analysis: Metabolic reprogramming in neurodegenerative disease","description":"Analyze how glucose metabolism shifts, insulin resistance in the brain, and ketone body utilization relate to neuronal survival. Explore metabolic interventions (ketogenic diet, GLP-1 agonists, metformin).\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:43:34.077541+00:00","updated_at":"2026-04-18T14:43:34.077541+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"1f6ab6dd-2bcf-4a52-b8ac-8a257b107675","title":"[Agora] Run new analysis: CRISPR-based gene therapies for inherited neurological disorders","description":"Analyze base editing, prime editing, and AAV-delivered CRISPR approaches for monogenic neurological diseases (SMA, Huntington, Rett syndrome).\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:42:54.260273+00:00","updated_at":"2026-04-18T14:42:54.260273+00:00","summary":"","completion_notes":"Re-opened due to audit flag. Verification confirms task was done Apr 2 but commit e90c4ac64 landed on orphan branch (salvage/literal-HEAD-2026-04-11) and never merged to main. Live system confirms: analysis SDA-2026-04-03-gap-crispr-neurodegeneration-20260402 is completed, HTML report loads at /analyses/SDA-2026-03-gap-crispr-neurodegeneration-20260402.html (200 OK), 15 CRISPR/gene therapy hypotheses + 5 SMA hypotheses exist in DB, gap is partially_addressed, all pages load. No new work needed.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"bef94390-fd06-4de2-b350-182ae8b372ce","title":"[Agora] Run new analysis: Microglial subtypes in neurodegeneration — friend vs foe","description":"Analyze the spectrum of microglial activation states (DAM, homeostatic, inflammatory) and their distinct roles in AD, PD, and ALS. Identify pharmacological targets for shifting microglia toward protective phenotypes.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:37:54.167919+00:00","updated_at":"2026-04-18T14:37:54.167919+00:00","summary":"","completion_notes":"Already addressed on origin/main by commit 85bc79d33 (now part of e37c81750): Fix DEBATE_PERSONAS scope bug and complete microglial subtypes analysis. The DEBATE_PERSONAS constant was moved to module level in scidex/agora/scidex_orchestrator.py, fixing the NameError that prevented debate saving. Analysis SDA-2026-04-16-gap-microglial-subtypes-20260402004119 completed with 6 rounds (Theorist, Skeptic, Domain Expert + 2 Specialists, Synthesizer). The analysis HTML and figures exist in site/. Branch synced and up-to-date with origin/main.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_watchdog_repair_task_id\": \"f434ef2a-94a4-4573-a755-91efe59aa91f\", \"_watchdog_repair_created_at\": \"2026-04-17T08:26:38.664822+00:00\", \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"5ad1810b-8dbe-499c-bd42-9e12833df49f","title":"[Agora] Run new analysis: Glymphatic system failure in dementia","description":"Run a 4-persona debate on the brain glymphatic waste clearance system and its dysfunction in Alzheimers. Focus on aquaporin-4, sleep-dependent clearance, and CSF dynamics.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:34:19.965022+00:00","updated_at":"2026-04-18T14:34:19.965022+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"23cfcfc7-37f6-410d-95d6-c1cf4974e28f","title":"[Agora] Run new analysis: Blood-brain barrier disruption mechanisms in neuroinflammation","description":"Analyze how neuroinflammatory cascades (TNF-alpha, IL-1beta, IL-6) disrupt tight junction proteins (claudin-5, occludin, ZO-1) in the BBB. Focus on therapeutic targets that could restore BBB integrity.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:29:24.227200+00:00","updated_at":"2026-04-18T14:29:24.227200+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"e9262765-5495-41c5-a4f0-e38c4366ae0e","title":"[Agora] Run new analysis: Lipid rafts in synaptic neurodegeneration","description":"Run a 4-persona debate on lipid raft composition changes in synaptic membranes during neurodegeneration. Focus on cholesterol metabolism, sphingolipids, and their role in amyloid-beta processing.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:27:38.683619+00:00","updated_at":"2026-04-18T14:27:38.683619+00:00","summary":"","completion_notes":"Verified all acceptance criteria met: 12 scored hypotheses (0.68-0.89), 178 KG edges, 196KB HTML report deployed, analysis accessible at /analyses/ with 200 status. Task was completed in prior worktree session before the DB reset.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\", \"completion_shas\": [\"2c2567f1e\"], \"completion_shas_checked_at\": \"2026-04-18T14:27:38.658597+00:00\"}"},{"id":"b67ccba5-8f15-4770-9491-1783105d6d18","title":"[Agora] Run new analysis: Ferroptosis in motor neuron disease","description":"Run a 4-persona debate on iron-dependent cell death (ferroptosis) in ALS and motor neuron diseases. Focus on GPX4, lipid peroxidation, and iron chelation therapies.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T14:27:12.048010+00:00","updated_at":"2026-04-18T14:27:12.048010+00:00","summary":"","completion_notes":"Task is verified complete. Work was done in commit bcc15852b (orphan branch that failed to merge) which ran a 5-persona debate producing 6 hypotheses (composite scores 0.48–0.68). The analysis SDA-2026-04-16-gap-ferroptosis-als-d2fb6bf796ed has status=completed in the DB, HTML report is deployed at site/analyses/. Main subsequently advanced past the orphan branch so this work never merged, but the task goal is satisfied — the debate ran and produced output.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"5f9a84ff-c9b3-46d8-aee3-48eda2abd874","title":"[Agora] Design diverse agent persona registry with contribution tracking","description":"Expand beyond 4 debate personas to a diverse agent ecosystem:\n1. Create agents/personas table: id, name, type (debater/analyst/reviewer/builder/etc), specialty, prompt_template, model, created_at, stats_json\n2. Seed initial diverse personas: Domain Experts (by field), Methodologist, Statistician, Clinical Translator, Ethics Reviewer, Data Curator, Devil''s Advocate, Synthesizer, etc.\n3. Track contributions per agent: debates participated, hypotheses influenced, edits made, quality scores\n4. /agents page listing all registered agents with their contribution stats\n5. Link to agents from debate transcripts, hypothesis detail pages, edit history\n6. Remember: users are agents too (actor_type=human in actors table from Quest 11)\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T11:39:57.858134+00:00","updated_at":"2026-04-16T11:39:57.858134+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"b4ad55b6-3ec1-4b81-abcc-20eddfd9c7e2","title":"[Agora] Run new analysis: Tau propagation mechanisms and therapeutic interception points","description":"Analyze prion-like spreading of tau pathology through connected brain regions. Focus on trans-synaptic transfer, extracellular vesicle-mediated spread, and intervention strategies at each propagation step.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T11:36:08.312872+00:00","updated_at":"2026-04-16T11:36:08.312872+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"292d4407-884f-4ec0-8f79-e6e537d89696","title":"[Agora] Run new analysis: Mitochondrial transfer between astrocytes and neurons in neurodegeneration","description":"Investigate the emerging evidence for intercellular mitochondrial transfer as a neuroprotective mechanism. Analyze CD38/cADPR pathway and tunneling nanotubes.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T11:21:24.304481+00:00","updated_at":"2026-04-16T11:21:24.304481+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}}"},{"id":"7500889e-eb56-4dd4-adea-06592615dd51","title":"[Agora] Debate quality scoring","description":"A1.5: After each debate, run a quality assessment via Claude Haiku. Score: citation density, hypothesis specificity, falsifiability, debate engagement. Store quality_score in debate_sessions.\n\nAcceptance: debate_sessions rows have quality_score. Low-quality debates (< 0.3) are flagged.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":90,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-16T11:07:25.748278+00:00","updated_at":"2026-04-16T11:07:25.748278+00:00","summary":"","completion_notes":"Task verified complete. The implementation exists on origin/main:\n- score_debate_quality() at line 1562 using Claude Haiku (model_fast)\n- quality_score stored in debate_sessions INSERT at line 1671\n- Low-quality flagging (< 0.3) at line 1663 with logger.warning\n- 24 quality_score references in scidex_orchestrator.py on main\n\nOriginal branch likely failed to push but code made it to main through other means. No code changes needed; only updated spec to completed status with verification evidence.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/7500889e_eb5_debate_quality_scori_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 6, \"reasoning\": 7}, \"completion_shas\": [\"7a99f75e4\"], \"completion_shas_checked_at\": \"2026-04-16T11:07:25.726362+00:00\"}"},{"id":"96ba74b9-9ba2-44ea-a4b4-bf190f7f4df5","title":"[Agora] Generate 15 falsifiable predictions for top-ranked hypotheses lacking testable claims","description":"Many high-priority hypotheses lack explicit falsifiable predictions — they state a mechanism but don't specify what observable outcome would disprove them. Without falsifiability, they can't be tested or traded on the Exchange.\n\n## Steps\n1. Query: `SELECT id, title, target_gene, description FROM hypotheses WHERE status != 'archived' AND (falsifiable_prediction IS NULL OR falsifiable_prediction = '') ORDER BY composite_score DESC LIMIT 15`\n2. For each hypothesis: read its title/description/mechanism, then write a specific falsifiable prediction (what experiment or data would disprove it)\n3. Update the hypothesis record: `UPDATE hypotheses SET falsifiable_prediction = '...', updated_at = NOW() WHERE id = '...'`\n4. Commit with all 15 predictions\n\n## Acceptance Criteria\n- [ ] 15 hypotheses now have non-null falsifiable_prediction fields\n- [ ] Each prediction is specific, testable, and references a measurable outcome\n- [ ] Changes committed and pushed","status":"done","priority":89,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T05:12:47.681447+00:00","updated_at":"2026-04-23T05:12:47.681447+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_prediction_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"9d4c8c51-c550-4501-885b-8bc7c144dbd8","title":"[Agora] Audit 57 debate sessions at quality_score=0.3 floor and fix root cause","description":"## Goal\n57 debate sessions have `quality_score=0.3` — the initialized floor value — indicating they completed without proper scoring. Identify why these sessions weren't scored and fix the root cause.\n\n## Steps\n1. Query: `SELECT ds.session_id, ds.analysis_id, COUNT(dr.id) as round_count FROM debate_sessions ds LEFT JOIN debate_rounds dr ON ds.session_id = dr.session_id WHERE ds.quality_score = 0.3 GROUP BY ds.session_id, ds.analysis_id ORDER BY round_count ASC LIMIT 20`\n2. For sessions with 0 rounds: investigate why `debate_rounds` is empty despite session existing\n3. For sessions with < 4 rounds: check what persona (theorist/skeptic/expert/synthesizer) is missing\n4. Identify whether the failure is in the scidex-agent debate engine, the post-processor, or the scoring pipeline\n5. Fix the root cause (missing round trigger, scoring bug, or incomplete debate enrollment)\n6. For sessions that are truly unrecoverable (stale analysis), mark quality_score = NULL or set to a sentinel indicating \"incomplete\"\n7. Verify: run `SELECT COUNT(*) FROM debate_sessions WHERE quality_score = 0.3` before and after\n\n## Acceptance Criteria\n- [ ] Root cause identified and documented\n- [ ] >= 10 sessions either scored correctly or marked as unrecoverable\n- [ ] `SELECT COUNT(*) FROM debate_sessions WHERE quality_score = 0.3` decreases\n- [ ] Changes committed and pushed\n\n## Constraints\n- Use `get_db()` from `api_shared.db` for writes; use `get_db_ro()` for reads\n- Do NOT mass-update all 57 sessions without understanding each root cause","status":"done","priority":89,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T04:19:21.479076+00:00","updated_at":"2026-04-23T04:19:21.479076+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"bffc93ef-f1d1-48bc-9a96-4324e47c7c8e","title":"[Agora] Score 20 hypotheses missing composite scoring with evidence review","description":"Many hypotheses lack composite scores despite having evidence available for scoring. Scoring these gaps improves market routing and debate prioritization.\n\nVerification:\n- 20 hypotheses receive composite_score between 0.1 and 1.0 grounded in available evidence\n- Each score references evidence quality, mechanistic novelty, feasibility, and falsifiability\n- No hypotheses are scored above 0.7 without at least 2 supporting citations\n\nStart by selecting hypotheses from PostgreSQL (dbname=scidex user=scidex_app) where composite_score IS NULL, status NOT IN ('archived'), and evidence_for is not empty. Review the evidence and score systematically. Use the standard 10-dimension scoring rubric and write scores through the existing DB path.","status":"done","priority":89,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:57:56.069539+00:00","updated_at":"2026-04-23T00:57:56.069539+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"8e673767-c2e8-44e7-9b45-1d3632f24e64","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Find 20 hypotheses where composite_score IS NULL or 0. For each, run the 10-dimension composite scoring rubric: novelty, mechanistic clarity, experimental testability, clinical relevance, supporting evidence strength, contradicting evidence, target druggability, disease specificity, reproducibility, expert consensus. Record scores in the hypotheses table. Acceptance criteria: 20 hypotheses have composite_score between 0 and 1; each has dimension_scores JSON populated.","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:02:47.988152+00:00","updated_at":"2026-04-23T00:02:47.988152+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_data_support_scoring_spec.md","provider":"any","payload_json":"{}"},{"id":"7fb0de06-4a3a-44c0-b903-897df3f5885a","title":"[Agora] Run 4-round debates for 10 analyses without debate sessions","description":"Find 10 analyses in the database that have no debate_sessions rows. For each, trigger a full 4-round debate (Theorist → Skeptic → Expert → Synthesizer). Ensure each debate produces a transcript, a synthesizer JSON with scored hypotheses, and knowledge graph edges extracted. Acceptance criteria: 10 new debate_sessions rows; each has 4 debate_rounds; analyses have status updated to debated.","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:01:55.731099+00:00","updated_at":"2026-04-23T00:01:55.731099+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_debate_coverage_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"dc3c170e-2351-4fca-a593-9bbf416cadf5","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Query `SELECT id, title, target_gene, evidence_for, evidence_against FROM hypotheses WHERE (composite_score IS NULL OR composite_score = 0) ORDER BY created_at DESC LIMIT 20`. For each hypothesis, apply the 10-dimension scoring rubric (mechanistic specificity, testability, novelty, prior evidence strength, clinical relevance, pathway coherence, target druggability, disease relevance, evidence quality, falsifiability). Write composite_score (0-1) and score_breakdown JSON. Verify with SELECT. Success: 20 hypotheses have non-zero composite_score values.","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:45:12.225510+00:00","updated_at":"2026-04-22T23:45:12.225510+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_score_unscored_hypotheses_spec.md","provider":"any","payload_json":"{}"},{"id":"b29ef9a0-5fec-4180-9bbe-08eb06fcbfab","title":"[Agora] Run 4-round debates for 10 analyses without debate sessions","description":"Query `SELECT a.id, a.title, a.question, a.domain FROM analyses a LEFT JOIN debate_sessions ds ON a.id = ds.analysis_id WHERE ds.analysis_id IS NULL AND a.status = 'complete' ORDER BY a.created_at DESC LIMIT 10`. For each analysis, trigger a 4-round debate (Theorist → Skeptic → Expert → Synthesizer) via the debate engine. Each round must cite evidence. Store rounds in debate_rounds table, create debate_sessions row with quality_score. Success: 10 analyses have complete 4-round debate transcripts with quality_score > 0.","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:38:28.509987+00:00","updated_at":"2026-04-22T23:38:28.509987+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_debate_coverage_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"73907230-c9b5-48eb-aa72-3159e5464a79","title":"[Agora] Run debates for 10 analyses without debate sessions","description":"47 analyses do not have debate sessions. Debate coverage is the quality mechanism that turns analyses into tested claims.\n\nVerification:\n- 10 analyses gain debate_sessions rows linked by analysis_id\n- Each debate has transcript_json or a substantive consensus/dissent summary\n- Remaining analyses without debates is <= 37\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T20:30:22.002412+00:00","updated_at":"2026-04-21T20:30:22.002412+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_debate_coverage_backfill_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 6}}"},{"id":"11c2b20c-7d49-4753-a4fd-97834ecdcdf6","title":"[Agora] Fix hypothesis promotion status transition","description":"Hypothesis promotion never fires: 349 hypotheses in proposed, 0 ever promoted, 92 with confidence>=0.7. Add an automated promotion check: after debate completion, if hypothesis.confidence_score >= 0.7 AND composite_score >= 0.6, set status='promoted'. This is a 12-cycle stale gap identified in alignment report cycle 22. Look for the post-debate completion handler in api.py and add the promotion trigger there.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T01:53:38.373547+00:00","updated_at":"2026-04-19T01:53:38.373547+00:00","summary":"","completion_notes":"Verified: api.py:4853-4865 has the promotion check block. Query selects proposed hypotheses with confidence_score >= 0.7 AND composite_score >= 0.6, updates status to 'promoted', returns promoted_count in response. Commit 767495f0d landed this fix on 2026-04-12. The audit couldn't find it because it's on a merged branch, not visible in origin/main's recent log directly — but HEAD shows it.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/11c2b20c_7d4_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 5}, \"completion_shas\": [\"767495f0d8b7bd3ff2e3f0b75b2715d60468c66a\"], \"completion_shas_checked_at\": \"2026-04-12T14:32:58.568940+00:00\", \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"81b4c208-fbc8-45c0-b60a-bc4134bc74c3","title":"[Agora] Enable open debate enrollment — specialist agents join beyond fixed-4 protocol","description":"Update debate pipeline in scidex_orchestrator.py/post_process.py to accept N agents. Core 4 always participate. Specialists (Pharmacologist, Geneticist, Biostatistician) join based on capability match via match_agents_for_debate(). Each specialist adds a round after the core 4. Token rewards proportional to contribution quality. See spec Phase 2.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T01:39:55.836666+00:00","updated_at":"2026-04-19T01:39:55.836666+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/agent_ecosystem_activation_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 8, \"reasoning\": 7}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"33cef50b-c6f2-42bd-81bc-195df79de2f6","title":"[Agora] Build /debates page — browse 47 debate sessions with transcripts","description":"Build /debates listing page showing all 47 debate sessions with quality scores, round counts, and links to analyses. Enable clicking into individual debate transcripts.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T17:22:47.378623+00:00","updated_at":"2026-04-18T17:22:47.378623+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/33cef50b_c6f_spec.md","provider":"any","payload_json":"{\"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\", \"completion_shas\": [\"2cad1e6b7\"], \"completion_shas_checked_at\": \"2026-04-18T16:51:58.588903+00:00\"}"},{"id":"cb68102c-4510-4c37-94e6-e921739211af","title":"[Agora] Recover 5 failed analyses with valid synthesizer JSON","description":"\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":88,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-18T16:48:48.188223+00:00","updated_at":"2026-04-18T16:48:48.188223+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/cb68102c_451_spec.md","provider":"any","payload_json":"{\"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"37c624e3-1e12-4ab2-8d35-f5c16ba2a457","title":"[Agora] Run target debates for 25 undebated therapeutic targets","description":"Therapeutic targets have debate_count = 0. Target debates are needed to harden target prioritization before markets and allocation decisions rely on them.\n\nVerification:\n- 25 targets have debate_count > 0 or linked target_debates rows\n- Each debate includes substantive pro/con/synthesis content tied to target evidence\n- Remaining undebated target count is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":87,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T01:18:09.387403+00:00","updated_at":"2026-04-23T01:18:09.387403+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_target_debate_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"5b248243-b20a-419e-b689-f60c3d6227a7","title":"[Agora] Run 4-round debates for 10 analyses without debate sessions","description":"Analyses without debate sessions lack the Theorist/Skeptic/Expert/Synthesizer transcripts that drive hypothesis generation and knowledge graph growth. For 10 high-priority analyses (SELECT id, title, question, domain FROM analyses WHERE id NOT IN (SELECT DISTINCT analysis_id FROM debate_sessions) ORDER BY created_at DESC LIMIT 10): trigger a full 4-round debate session per analysis using the existing debate engine. Each session produces: debate_sessions row, 4 debate_rounds rows (Theorist, Skeptic, Expert, Synthesizer), hypothesis extraction, KG edge generation. Verification: 10 new debate_sessions rows with quality_score > 0.","status":"done","priority":87,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:29:32.790470+00:00","updated_at":"2026-04-22T23:29:32.790470+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_debate_coverage_backfill_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 8}}"},{"id":"74999cee-6949-4f0f-8bbb-b1df8e74407d","title":"[Agora] Generate falsifiable predictions for 20 hypotheses lacking testable claims","description":"Hypotheses without falsifiable predictions can't be evaluated by prediction markets or challenge mechanisms. This blocks the Exchange from pricing them.\n\n## Steps\n1. Query: `SELECT id, title, statement, mechanism FROM hypotheses WHERE predictions IS NULL OR predictions = '[]' OR predictions = '{}' ORDER BY composite_score DESC LIMIT 20`\n2. For each hypothesis, generate 2-3 specific, testable predictions:\n   - Must be falsifiable (can be proven wrong by experiment)\n   - Must be time-bounded or have clear measurable outcome\n   - Must relate to the hypothesis mechanism\n   - Example: \"If LRRK2 inhibition reduces α-synuclein aggregation, then LRRK2-KO neurons should show 50% less inclusion bodies in 6-month aging assay\"\n3. Store predictions in `hypotheses.predictions` JSON field as array of objects: `[{\"claim\": \"...\", \"testable_by\": \"in_vitro|in_vivo|clinical\", \"timeframe\": \"...\"}]`\n4. Verify: `SELECT COUNT(*) FROM hypotheses WHERE predictions IS NULL OR predictions = '[]'` decreases\n\n## Acceptance Criteria\n- [ ] 20 hypotheses have non-empty predictions field\n- [ ] Each prediction is specific, falsifiable, and mechanistically connected to the hypothesis\n- [ ] At least 2 predictions per hypothesis\n- [ ] Changes committed and pushed","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T04:21:57.750517+00:00","updated_at":"2026-04-23T04:21:57.750517+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"ad920815-1b42-4290-b95b-b688250188ea","title":"[Agora] Link 40 analyses missing knowledge graph edges from debate outcomes","description":"Completed analyses with debate transcripts may not have all relevant KG edges extracted. Missing edges weaken the knowledge graph and prevent discovery dividend propagation.\n\nVerification:\n- 40 analyses have new knowledge_edges rows extracted from their debate transcripts\n- Each edge has source_type, target_type, relation, analysis_id, evidence_strength\n- knowledge_edges count increases from these analyses\n- Analyses with 0 KG edges are prioritized\n\nQuery: SELECT a.id, a.title, a.domain, COUNT(ke.id) as edge_count FROM analyses a LEFT JOIN knowledge_edges ke ON ke.analysis_id = a.id WHERE a.status = 'completed' GROUP BY a.id HAVING edge_count = 0 ORDER BY a.created_at DESC LIMIT 40. Extract entity-relation-entity triples from debate transcript text. Insert knowledge_edges rows. Verify counts.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T03:32:31.978723+00:00","updated_at":"2026-04-23T03:32:31.978723+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"completion_shas\": [\"cb5e85aa1\"], \"completion_shas_checked_at\": \"2026-04-23T03:31:07.017815+00:00\"}"},{"id":"744bb4ea-7ba7-4d97-8296-926bccf4b2b3","title":"[Agora] Add data-support scores to 20 active hypotheses","description":"Many active hypotheses lack data_support_score values, which weakens quality gates for computationally grounded science.\n\nVerification:\n- 20 active hypotheses have data_support_score between 0 and 1\n- Each score is justified from linked data, citations, KG edges, or an explicit lack of data\n- Remaining active hypotheses without data_support_score is reduced\n\nStart by reading this task's spec. Select active hypotheses from PostgreSQL (dbname=scidex user=scidex_app) missing data_support_score, prioritizing high composite or market scores. Assess computational/data support using linked analyses, KG edges, citations, and datasets. Persist calibrated scores and short rationale without fabricating support.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:59:44.225227+00:00","updated_at":"2026-04-23T00:59:44.225227+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_data_support_scoring_spec.md","provider":"any","payload_json":"{}"},{"id":"f371bb4f-1c59-4c8d-b9e3-9fcce01ffd52","title":"[Agora] Add counter-evidence reviews to 10 hypotheses missing evidence_against","description":"Many active hypotheses have empty evidence_against fields. Counter-evidence review is needed so confidence and market prices reflect uncertainty rather than one-sided support.\n\nVerification:\n- 10 active hypotheses gain evidence_against entries or documented no-counterevidence rationale\n- Each counter-evidence entry includes PMID, DOI, dataset, debate, or explicit search provenance\n- Remaining active hypotheses missing evidence_against is reduced\n\nStart by reading this task's spec. Select active hypotheses with empty evidence_against from PostgreSQL (dbname=scidex user=scidex_app), prioritizing high-confidence or market-relevant rows. Search linked papers, PubMed, debates, and KG contradictions for real counter-evidence. Persist only substantive counter-evidence or an auditable no-counterevidence rationale.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T00:56:15.421496+00:00","updated_at":"2026-04-23T00:56:15.421496+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_negative_evidence_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"c830c075-8f70-4921-bed9-2a5fe1459004","title":"[Agora] Add data-support scores to 20 active hypotheses","description":"Active hypotheses lack data_support_score values, which weakens quality gates for computationally grounded science.\n\nVerification:\n- 20 active hypotheses have data_support_score between 0 and 1\n- Each score is justified from linked data, citations, KG edges, or an explicit lack of data\n- Remaining active hypotheses without data_support_score is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T22:58:58.661972+00:00","updated_at":"2026-04-22T22:58:58.661972+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_data_support_scoring_spec.md","provider":"any","payload_json":"{}"},{"id":"f5a3a9c2-9964-4b52-9182-84276ab03a44","title":"[Agora] Add counter-evidence reviews to 10 hypotheses missing evidence_against","description":"Active hypotheses have empty evidence_against fields. Counter-evidence review is needed so confidence and market prices reflect uncertainty rather than one-sided support.\n\nVerification:\n- 10 active hypotheses gain evidence_against entries or documented no-counterevidence rationale\n- Each counter-evidence entry includes PMID, DOI, dataset, debate, or explicit search provenance\n- Remaining active hypotheses missing evidence_against is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T20:39:54.738779+00:00","updated_at":"2026-04-22T20:39:54.738779+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_negative_evidence_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"f7f4133c-4b99-48ef-888b-fa1b08387a24","title":"[Agora] Add data-support scores to 20 active hypotheses","description":"560 active hypotheses lack data_support_score values, which weakens quality gates for computationally grounded science.\n\nVerification:\n- 20 active hypotheses have data_support_score between 0 and 1\n- Each score is justified from linked data, citations, KG edges, or an explicit lack of data\n- Remaining active hypotheses without data_support_score is <= 540\n\nStart by reading this task spec and checking for duplicate recent work.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T21:55:56.127458+00:00","updated_at":"2026-04-21T21:55:56.127458+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_data_support_scoring_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 6}}"},{"id":"8dbeee14-a293-4c25-ae32-463b9d8aefb8","title":"[Agora] Add data-support scores to 20 active hypotheses","description":"552 active hypotheses lack data_support_score values, which weakens quality gates for computationally grounded science.\n\nVerification:\n- 20 active hypotheses have data_support_score between 0 and 1\n- Each score is justified from linked data, citations, KG edges, or an explicit lack of data\n- Remaining active hypotheses without data_support_score is <= 532\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T20:18:49.305491+00:00","updated_at":"2026-04-21T20:18:49.305491+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_data_support_scoring_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 6, \"safety\": 9}, \"completion_shas\": [\"bf555f68d\", \"d9d6a85b4\", \"41d7e9a36\"], \"completion_shas_checked_at\": \"2026-04-21T20:18:49.263306+00:00\"}"},{"id":"7632123c-f13b-4b7a-b5ba-4d76cd5c500a","title":"[Agora] Add counter-evidence reviews to 10 hypotheses missing evidence_against","description":"Many active hypotheses have empty evidence_against fields. Counter-evidence review is needed so confidence and market prices reflect uncertainty rather than one-sided support.\n\nVerification:\n- 10 active hypotheses gain evidence_against entries or documented no-counterevidence rationale\n- Each counter-evidence entry includes PMID, DOI, dataset, debate, or explicit search provenance\n- Remaining active hypotheses missing evidence_against is recorded before and after\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":86,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T19:57:15.273080+00:00","updated_at":"2026-04-21T19:57:15.273080+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_negative_evidence_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"d6d79b98-5bf8-4798-8b18-3b6f49ad8b12","title":"[Agora] Add counter-evidence citations to 20 hypotheses missing evidence_against","description":"Hypotheses without any evidence_against are scientifically incomplete — a well-supported hypothesis should acknowledge contrary findings. This biases the debate and market pricing.\n\n## Steps\n1. Query: `SELECT id, title, target_gene, evidence_for FROM hypotheses WHERE status != 'archived' AND (evidence_against IS NULL OR evidence_against::text IN ('{}','[]','')) ORDER BY composite_score DESC LIMIT 20`\n2. For each hypothesis: search PubMed for papers that contradict or challenge the mechanism (search 'NOT [gene] mechanism' or 'negative result [gene]')\n3. Add PMIDs to evidence_against field: `UPDATE hypotheses SET evidence_against = '[\"pmid1\",\"pmid2\"]', updated_at = NOW() WHERE id = '...'`\n4. Verify PMIDs are real via paper_cache.get_paper()\n\n## Acceptance Criteria\n- [ ] 20 hypotheses now have non-empty evidence_against\n- [ ] PMIDs verified as real papers discussing contradictory evidence\n- [ ] Changes committed and pushed","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T05:49:39.749820+00:00","updated_at":"2026-04-23T05:49:39.749820+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_negative_evidence_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"9f906ea8-7b92-4628-8dca-081aca7bc932","title":"[Agora] Generate falsifiable predictions for 25 hypotheses with none","description":"Many active hypotheses have predictions_count = 0. Falsifiable predictions make hypotheses testable and support replication, preregistration, and market resolution.\n\nVerification:\n- 25 active hypotheses gain linked hypothesis_predictions rows or documented non-testability rationale\n- Each prediction has measurable outcome, timeframe, and evidence/provenance context\n- Remaining active hypotheses with predictions_count = 0 is reduced\n\nStart by reading this task's spec. Select active hypotheses with predictions_count = 0 from PostgreSQL (dbname=scidex user=scidex_app), prioritizing high impact and confidence. Derive concrete predictions from mechanism, target, disease, evidence, and linked analyses. Insert prediction rows through the standard DB path and verify counts.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T03:37:46.966275+00:00","updated_at":"2026-04-23T03:37:46.966275+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_prediction_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"e510981c-fc23-4c47-a355-830dd4521cfc","title":"[Agora] Calibrate confidence scores for 20 active zero-confidence hypotheses","description":"Many active hypotheses have confidence_score = 0 or NULL. Calibrated confidence is required for debate prioritization and market interpretation.\n\nVerification:\n- 20 active hypotheses have confidence_score between 0 and 1\n- Each score has a concise rationale grounded in evidence, debate, data support, or explicit uncertainty\n- Remaining active zero-confidence hypothesis count is reduced\n\nStart by reading this task's spec. Select active zero-confidence hypotheses from PostgreSQL (dbname=scidex user=scidex_app) with the richest linked evidence first. Calibrate confidence separately from novelty, feasibility, and data support. Persist scores and rationale, then verify before/after counts.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T03:30:54.605141+00:00","updated_at":"2026-04-23T03:30:54.605141+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_confidence_calibration_spec.md","provider":"any","payload_json":"{}"},{"id":"3ab4fd9e-14f9-49c8-9e5d-dc9ac9d93004","title":"[Agora] Score 30 artifacts without quality scores using standard rubric","description":"Many artifacts (papers, figures, analyses) in the SciDEX registry lack quality_score values. Without quality scores, agents cannot reliably filter high-quality evidence from low-quality sources.\n\nVerification:\n- 30 artifacts without quality scores gain quality_score between 0 and 1\n- Each score is grounded in artifact type-specific quality signals (paper: citations/journal/methodology, figure: data quality/clarity, analysis: hypothesis count/debate coverage)\n- artifacts table updated in PostgreSQL with quality_score\n- Remaining unscored artifacts count is reduced\n\nQuery: SELECT id, artifact_type, title FROM artifacts WHERE quality_score IS NULL ORDER BY created_at DESC LIMIT 30. Apply type-appropriate scoring rubric. For papers: impact factor + citation count + methodology. For analyses: hypothesis count + debate rounds + KG edges. Persist scores. Verify counts.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T02:15:02.233052+00:00","updated_at":"2026-04-23T02:15:02.233052+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"51e20e72-bcfb-4733-bf03-40589308bece","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Duplicate check probe","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T01:33:33.590505+00:00","updated_at":"2026-04-23T01:33:33.590505+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"5bf89229-2456-42b7-a84c-8cb3aae973b4","title":"[Agora] Calibrate confidence scores for 20 active zero-confidence hypotheses","description":"Active hypotheses have confidence_score = 0 or NULL. Calibrated confidence is required for debate prioritization and market interpretation.\n\nVerification:\n- 20 active hypotheses have confidence_score between 0 and 1\n- Each score has a concise rationale grounded in evidence, debate, data support, or explicit uncertainty\n- Remaining active zero-confidence hypothesis count is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:15:14.183869+00:00","updated_at":"2026-04-22T23:15:14.183869+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_confidence_calibration_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 8}}"},{"id":"bf6ddfe3-829b-45ad-9c5c-95ee37f2a3f5","title":"[Agora] Generate falsifiable predictions for 25 hypotheses with none","description":"Active hypotheses have predictions_count = 0. Falsifiable predictions make hypotheses testable and support replication, preregistration, and market resolution.\n\nVerification:\n- 25 active hypotheses gain linked hypothesis_predictions rows or documented non-testability rationale\n- Each prediction has measurable outcome, timeframe, and evidence/provenance context\n- Remaining active hypotheses with predictions_count = 0 is reduced\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:08:10.881671+00:00","updated_at":"2026-04-22T23:08:10.881671+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_prediction_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"083dcb5f-ab7d-444e-ba97-093397c320b7","title":"[Agora] Generate falsifiable predictions for 25 hypotheses with none","description":"Many active hypotheses have predictions_count = 0. Falsifiable predictions make hypotheses testable and support replication, preregistration, and market resolution.\n\nVerification:\n- 25 active hypotheses gain linked hypothesis_predictions rows or documented non-testability rationale\n- Each prediction has measurable outcome, timeframe, and evidence/provenance context\n- Remaining active hypotheses with predictions_count = 0 is recorded before and after\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T21:21:24.500891+00:00","updated_at":"2026-04-21T21:21:24.500891+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_prediction_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"6f65e4a3-10f1-4687-8acc-6e7364bad3c9","title":"[Agora] Calibrate confidence scores for 20 active zero-confidence hypotheses","description":"Many active hypotheses have confidence_score = 0 or NULL. Calibrated confidence is required for debate prioritization and market interpretation.\n\nVerification:\n- 20 active hypotheses have confidence_score between 0 and 1\n- Each score has a concise rationale grounded in evidence, debate, data support, or explicit uncertainty\n- Remaining active zero-confidence hypothesis count is recorded before and after\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T21:20:54.500194+00:00","updated_at":"2026-04-21T21:20:54.500194+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_confidence_calibration_spec.md","provider":"any","payload_json":"{}"},{"id":"b03e7c16-d1dd-4482-9d96-163af24b23c2","title":"[Agora] Calibrate confidence scores for 20 active zero-confidence hypotheses","description":"113 active hypotheses have confidence_score = 0 or NULL. Calibrated confidence is required for debate prioritization and market interpretation.\n\nVerification:\n- 20 active hypotheses have confidence_score between 0 and 1\n- Each score has a concise rationale grounded in evidence, debate, data support, or explicit uncertainty\n- Remaining active zero-confidence hypothesis count is <= 93\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T19:39:09.002058+00:00","updated_at":"2026-04-21T19:39:09.002058+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_confidence_calibration_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 6}}"},{"id":"9aae8fc5-9f1d-4fce-a173-5d55a223af2d","title":"[Agora] Run 4-round debates for 10 high-priority analyses lacking transcripts","description":"Debate coverage needs monitoring — approximately 30% of analyses still lack complete 4-round debate transcripts. Generating debates improves hypothesis scoring, knowledge graph edges, and evidence quality.\n\nSteps:\n1. Query analyses without complete debates: SELECT a.id, a.title, a.question FROM analyses a LEFT JOIN debate_sessions ds ON ds.analysis_id = a.id WHERE ds.session_id IS NULL ORDER BY a.created_at DESC LIMIT 10\n2. For each analysis, trigger a 4-round debate using the existing agent.py debate engine patterns:\n   - Use scidex_orchestrator.py or direct LLM calls with Theorist/Skeptic/Expert/Synthesizer personas\n   - Follow existing debate patterns in agent.py\n3. Save debate_rounds and debate_sessions rows to PostgreSQL\n4. Run post_process.py extraction to generate hypotheses from debate synthesizer output\n\nVerification:\n- At least 8 new debate_sessions rows created with quality_score IS NOT NULL\n- SELECT COUNT(DISTINCT analysis_id) FROM debate_sessions — increases by at least 8\n- New hypotheses extracted from synthesizer rounds\n\nUse PostgreSQL via api_shared.db get_db(). Read agent.py for debate engine patterns before implementing.","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T16:19:09.307612+00:00","updated_at":"2026-04-21T16:19:09.307612+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"249d7fd8-d5b3-4259-a953-8d9779abfa51","title":"[Agora] Reprocess 12 failed analyses — fix JSON parse errors in synthesizer output","description":"\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T04:15:30.018585+00:00","updated_at":"2026-04-19T04:15:30.018585+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/249d7fd8_d5b_spec.md","provider":"any","payload_json":"{\"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"18912b95-c845-4484-9985-945875e43af1","title":"[Agora] Run new analysis: Epigenetic clocks and biological aging in neurodegenerative diseases","description":"Investigate DNA methylation age acceleration and histone modification patterns across AD, PD, and ALS. Identify shared epigenetic signatures.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T04:07:03.115249+00:00","updated_at":"2026-04-19T04:07:03.115249+00:00","summary":"","completion_notes":"Task requirements fulfilled by existing analysis sda-2026-04-01-gap-v2-bc5f270e (6 hypotheses: HDAC3, TET2, SIRT6, KDM6A, FOXO3, DNMT1 — covering DNA methylation and histone modifications in neurodegeneration). New analysis gap (gap-epigenetic-comparative-ad-pd-als) created and queued but orchestrator not picking up. Bug fixes applied: agent.py:884,1040 missing `database.` prefix corrected; database FTS index corruption repaired. Analysis accessible at site/analyses/sda-2026-04-01-gap-v2-bc5f270e.html.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"e57ecc2d-eb6c-4ee1-9a92-184b554b7c6c","title":"[Agora] Implement agent attribution in debate system — track who said what","description":"Ensure all debate contributions are attributed to specific agent IDs:\n1. Add agent_id column to debate_rounds if not present\n2. Ensure debate runner records which persona generated each round\n3. Show agent avatars/badges next to debate contributions in UI\n4. Track agent-level debate quality metrics (avg quality score per agent)\n5. Enable filtering debate history by agent/persona\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T03:33:45.506051+00:00","updated_at":"2026-04-19T03:33:45.506051+00:00","summary":"","completion_notes":"Task already resolved on origin/main. Verified: agent_id column exists in debate_rounds (col 17), all 1379/1432 rounds have agent_id, debates_page has persona filter (line 66095), INSERT statements include agent_id in scidex_orchestrator.py (line 1752) and api.py (line 12024), agent badges display in UI. All acceptance criteria met.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"claude","payload_json":"{\"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"e815d52d-eca5-4323-8d56-5d8627402763","title":"[Agora] Run new analysis: Gut-brain axis metabolites in Parkinson disease progression","description":"Analyze how gut microbiome-derived metabolites (SCFAs, LPS, TMAO) influence alpha-synuclein aggregation and dopaminergic neuron survival via vagal nerve signaling.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T03:31:43.411900+00:00","updated_at":"2026-04-19T03:31:43.411900+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"87fba3ae-3551-4133-8d36-f7579e016b8f","title":"[Agora] Run new analysis: Sleep disruption as cause vs consequence of neurodegeneration","description":"Investigate bidirectional relationship between sleep disorders and neurodegenerative diseases. Analyze glymphatic clearance during sleep, amyloid-beta accumulation, and circadian rhythm disruption.\n\n\n## REOPENED TASK — CRITICAL CONTEXT\n\nThis task was previously marked 'done' but the audit could not verify\nthe work actually landed on main. The original work may have been:\n- Lost to an orphan branch / failed push\n- Only a spec-file edit (no code changes)\n- Already addressed by other agents in the meantime\n- Made obsolete by subsequent work\n\n**Before doing anything else:**\n\n1. **Re-evaluate the task in light of CURRENT main state.** Read the\n   spec and the relevant files on origin/main NOW. The original task\n   may have been written against a state of the code that no longer\n   exists.\n\n2. **Verify the task still advances SciDEX's aims.** If the system\n   has evolved past the need for this work (different architecture,\n   different priorities), close the task with reason \"obsolete: <why>\"\n   instead of doing it.\n\n3. **Check if it's already done.** Run `git log --grep='<task-id>'`\n   and read the related commits. If real work landed, complete the\n   task with `--no-sha-check --summary 'Already done in <commit>'`.\n\n4. **Make sure your changes don't regress recent functionality.** Many\n   agents have been working on this codebase. Before committing, run\n   `git log --since='24 hours ago' -- <files-you-touch>` to see what\n   changed in your area, and verify you don't undo any of it.\n\n5. **Stay scoped.** Only do what this specific task asks for. Do not\n   refactor, do not \"fix\" unrelated issues, do not add features that\n   weren't requested. Scope creep at this point is regression risk.\n\nIf you cannot do this task safely (because it would regress, conflict\nwith current direction, or the requirements no longer apply), escalate\nvia `orchestra escalate` with a clear explanation instead of committing.\n","status":"done","priority":85,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-19T02:59:38.676668+00:00","updated_at":"2026-04-19T02:59:38.676668+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 7, \"analysis\": 8}, \"_reset_note\": \"This task was reset after a database incident on 2026-04-17.\\n\\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\\ncorruption. Some work done during Apr 16-17 may have been lost.\\n\\n**Before starting work:**\\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\\n\\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\\nSCIDEX_DB_BACKEND=postgres env var.\", \"_reset_at\": \"2026-04-18T06:29:22.046013+00:00\", \"_reset_from_status\": \"done\"}"},{"id":"844180fa-891c-42aa-a815-ebbec01c4033","title":"[Agora] Cluster 30 hypotheses into mechanism taxonomy groups","description":"Hypotheses without taxonomy group labels are harder to compare, debate, and price. Clustering by mechanism (protein aggregation, neuroinflammation, mitochondrial dysfunction, etc.) enables batch analysis.\n\n## Steps\n1. Query: `SELECT id, title, mechanism, targets FROM hypotheses WHERE taxonomy_group IS NULL ORDER BY composite_score DESC LIMIT 30`\n2. For each hypothesis, assign to a mechanism taxonomy group:\n   - Protein aggregation (amyloid, tau, synuclein, TDP-43, FUS)\n   - Neuroinflammation (microglia, astrocytes, cytokines, complement)\n   - Mitochondrial dysfunction (ATP, ROS, mitophagy, Complex I-IV)\n   - Synaptic dysfunction (glutamate, GABA, LTP, receptor internalization)\n   - Axonal transport (dynein, kinesin, microtubule)\n   - Other / cross-mechanism\n3. Update `hypotheses.taxonomy_group` with the label\n4. Verify: `SELECT taxonomy_group, COUNT(*) FROM hypotheses GROUP BY taxonomy_group` shows meaningful distribution\n\n## Acceptance Criteria\n- [ ] 30 hypotheses have non-null taxonomy_group\n- [ ] At least 4 distinct taxonomy groups represented\n- [ ] Assignment reflects actual mechanism content of the hypothesis\n- [ ] Changes committed and pushed","status":"done","priority":82,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T03:59:31.090685+00:00","updated_at":"2026-04-23T03:59:31.090685+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"0989c57c-11c8-4aff-91ad-83a280fcc358","title":"[Agora] Add GO term annotations to 25 gene hypotheses missing biological process labels","description":"Hypotheses about gene targets lack Gene Ontology (GO) annotations, preventing semantic clustering and cross-linking with GO-aware KG queries.\n\n## Steps\n1. Query: `SELECT h.id, h.title, h.targets FROM hypotheses h WHERE h.go_terms IS NULL AND h.targets IS NOT NULL ORDER BY composite_score DESC LIMIT 25`\n2. For each hypothesis, extract gene names from targets JSON\n3. Fetch GO terms via UniProt/QuickGO API for each gene:\n   - Biological Process terms (GO:0008150 subtree)\n   - Molecular Function terms (GO:0003674 subtree)\n4. Store as `hypotheses.go_terms = [{\"go_id\": \"GO:...\", \"term\": \"...\", \"namespace\": \"biological_process|molecular_function\"}]`\n5. Verify: `SELECT COUNT(*) FROM hypotheses WHERE go_terms IS NOT NULL AND go_terms != '[]'` increases\n\n## Acceptance Criteria\n- [ ] 25 hypotheses have non-empty go_terms field\n- [ ] GO IDs are real GO identifiers (format: GO:XXXXXXX)\n- [ ] At least biological_process namespace covered for each gene\n- [ ] Changes committed and pushed","status":"done","priority":81,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T03:55:56.736522+00:00","updated_at":"2026-04-23T03:55:56.736522+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"771b8a68-eaaf-46ea-946d-c6a4a1bf4892","title":"[Agora] Generate falsifiable predictions for 20 hypotheses lacking predictions","description":"Hypotheses without falsifiable_predictions are scientifically ungrounded — they make claims but specify no experimental test that could refute them. For 20 hypotheses with status IN ('proposed','promoted') and falsifiable_predictions IS NULL (ORDER BY composite_score DESC LIMIT 20): (1) read hypothesis text, mechanism, target_gene; (2) generate 2-3 specific, testable predictions each of the form: 'IF [experimental condition] THEN [measurable outcome] within [timeframe] using [model system]'; (3) predictions must be falsifiable (state what would disprove the hypothesis); (4) UPDATE hypotheses SET falsifiable_predictions=<json_array> WHERE id=<id>. Verification: 20 hypotheses have non-null falsifiable_predictions with at least 2 entries each.","status":"done","priority":79,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:17:32.254014+00:00","updated_at":"2026-04-22T23:17:32.254014+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_hypothesis_prediction_backfill_spec.md","provider":"any","payload_json":"{}"},{"id":"d5fa4de5-ec50-41a0-9f1f-53e92e6316c9","title":"[Agora] Run target debates for 10 therapeutic gene targets without debate coverage","description":"Therapeutic gene targets without any debate sessions lack the Theorist/Skeptic/Expert/Synthesizer analysis needed to generate scored hypotheses and KG edges. For 10 target genes that appear in hypotheses.target_gene but have no linked debate_sessions (SELECT DISTINCT h.target_gene FROM hypotheses h WHERE h.target_gene IS NOT NULL AND h.target_gene NOT IN (SELECT DISTINCT ds.target_gene FROM debate_sessions ds WHERE ds.target_gene IS NOT NULL) LIMIT 10): (1) identify the highest-priority hypothesis for each target gene; (2) trigger a 4-round debate using the existing debate engine for that analysis; (3) record the resulting debate_session, 4 debate_rounds, extracted hypotheses, and KG edges. Verification: 10 target genes now have at least 1 debate_session row.","status":"done","priority":78,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T01:32:09.237792+00:00","updated_at":"2026-04-23T01:32:09.237792+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_target_debate_backfill_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 8}}"},{"id":"6e08b103-a528-45d2-898f-fe153305768b","title":"[Agora] Merge 5 confirmed duplicate hypothesis pairs with high semantic overlap","description":"Duplicate hypotheses fragment the knowledge base — two claims saying the same thing with different wording split evidence, scoring, and market liquidity. From the dedup_scan_results table (SELECT h1_id, h2_id, similarity_score FROM dedup_scan_results WHERE similarity_score > 0.92 AND resolution_status IS NULL LIMIT 5): (1) read both hypothesis texts and compare them manually; (2) if truly duplicates (same mechanism, same gene target, same claim): create a governance decision to merge; UPDATE one hypothesis as superseded_by=<other_id>; redirect all artifacts, evidence_for entries, and market state to the canonical ID; (3) if not duplicates: mark resolution_status='not_duplicate' with a note explaining the difference. Verification: 5 pairs reviewed; merged pairs have artifacts/evidence consolidated to canonical ID.","status":"done","priority":76,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-22T23:21:43.730808+00:00","updated_at":"2026-04-22T23:21:43.730808+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 8}}"},{"id":"c4d9855d-da19-40a8-ba20-805088d794c5","title":"[Agora] Fix: Trigger debates task (bf55dff6) never finds analyses needing debates","description":"Resource audit found [Agora] CI: Trigger debates recurring task (bf55dff6, every-30m) is always no-op (~336 runs/wk wasted). Query analyses table for rows with 0 debate sessions. If count=0 lower frequency to every-24h. If count>0 find and fix the exclusion bug. Related: docs/planning/specs/agora_trigger_debates_noop_fix_spec.md","status":"done","priority":75,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-23T05:56:00.095404+00:00","updated_at":"2026-04-23T05:56:00.095404+00:00","summary":"","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"8b84a1f5-7636-45e7-b785-4048be376bdf","title":"[Agora] Run 4-round debates for 20 high-priority analyses lacking transcripts","description":"Analyze the 118 analyses currently lacking debate transcripts. Select the 20 highest-priority based on: (1) composite_score > 0.5, (2) recent activity, (3) knowledge graph connectivity. Run a 4-round debate (Theorist → Skeptic → Expert → Synthesizer) for each. Persist transcripts and update the debate_session_id and debate_coverage_pct accordingly. Verify before/after counts.","status":"done","priority":50,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T12:26:14.351051+00:00","updated_at":"2026-04-21T12:26:14.351051+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"b79feec1-b155-4816-95a7-ef1a37633247","title":"[Agora] Add PubMed evidence to 20 hypotheses lacking citations","description":"For 20 hypotheses currently lacking PubMed evidence (evidence_for IS NULL or '' or '[]' or 'null'), search PubMed for relevant papers using paper_cache.search_papers and add PMIDs to the evidence_for field. Target: reduce the 110 no-evidence hypotheses by at least 20. Verification: SELECT COUNT(*) FROM hypotheses WHERE evidence_for IS NULL OR evidence_for IN ('','[]','null') is reduced by >= 20.","status":"done","priority":50,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-21T11:17:18.518215+00:00","updated_at":"2026-04-21T11:17:18.518215+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"373eafae-ef90-414f-a828-2557f91ec458","title":"[Agora] Score 20 unscored hypotheses with composite scoring","description":"Score the oldest 20 hypotheses where composite_score IS NULL or 0. Use existing scoring dimensions (evidence, novelty, falsifiability, relevance) and persist scores to PostgreSQL. Verify before/after counts.","status":"done","priority":50,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-20T23:41:18.599304+00:00","updated_at":"2026-04-20T23:41:18.599304+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"},{"id":"fcda018c-e6c9-45ea-9e2f-7cc33d095dea","title":"[Agora] Score 18 unscored hypotheses with composite scoring","description":"Score the 18 unscored hypotheses in scidex.db using the standard 10-dimension composite scoring. For each: run LLM scoring on the hypothesis title, target_gene, evidence_for/against fields to produce a composite_score (0-1). Update the hypotheses table. Verification: SELECT COUNT(*) FROM hypotheses WHERE composite_score IS NULL OR composite_score = 0 returns 0 after running.","status":"done","priority":50,"task_type":"one_shot","frequency":"","assigned_slot":"","started_at":null,"completed_at":"2026-04-20T20:52:02.023839+00:00","updated_at":"2026-04-20T20:52:02.023839+00:00","summary":"","completion_notes":"Auto-completed by supervisor after successful deploy to main","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"any","payload_json":"{}"}],"reviews":[],"effectiveness":{},"spec_content":"---\ntitle: \"Quest: Agora\"\ndescription: \"Multi-agent debate engine — any agent can participate in scientific debates using real evidence. Open enrollment debate protocol, structured argumentation, evidence citation, and cross-agent deliberat\"\ntype: quest\nlayer: Agora\npriority: 90\nstatus: active\nquest_id: c488a683-47f\nspec_path: docs/planning/specs/quest_agora_spec.md\n---\n\n# Quest: Agora\n\n**Layer:** Agora  \n**Priority:** P90  \n**Status:** active  \n**Tasks:** 75 total (50 done, 2 open)\n\n## Vision\n\nMulti-agent debate engine — any agent can participate in scientific debates using real evidence. Open enrollment debate protocol, structured argumentation, evidence citation, and cross-agent deliberation.\n\n## Open Tasks\n\n- [ ] [Agora] CI: Run debate quality scoring on new/unscored sessions (P90)\n- [ ] [Agora] CI: Trigger debates for analyses with 0 debate sessions (P90)\n\n\n## Success Criteria\n\n- [ ] All open tasks completed and verified\n- [ ] Integration tested end-to-end with dependent quests\n- [ ] UI pages rendering correctly for this quest's features\n- [ ] Documentation updated for new capabilities\n\n## Work Log\n\n_No entries yet._\n","spec_html":"<div style=\"font-size:0.85rem\"><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><h2 style=\"color:#4fc3f7;margin:1.5rem 0 0.6rem;font-size:1.2rem;font-weight:700\">Quest: Agora</h2></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><strong style=\"color:#e0e0e0\">Layer:</strong> Agora  \n<strong style=\"color:#e0e0e0\">Priority:</strong> P90  \n<strong style=\"color:#e0e0e0\">Status:</strong> active  \n<strong style=\"color:#e0e0e0\">Tasks:</strong> 75 total (50 done, 2 open)</p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><h3 style=\"color:#4fc3f7;margin:1.4rem 0 0.5rem;font-size:1.1rem;font-weight:700;border-bottom:2px solid rgba(79,195,247,0.3);padding-bottom:0.2rem\">Vision</h3></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\">Multi-agent debate engine — any agent can participate in scientific debates using real evidence. Open enrollment debate protocol, structured argumentation, evidence citation, and cross-agent deliberation.</p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><h3 style=\"color:#4fc3f7;margin:1.4rem 0 0.5rem;font-size:1.1rem;font-weight:700;border-bottom:2px solid rgba(79,195,247,0.3);padding-bottom:0.2rem\">Open Tasks</h3></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><div style=\"margin:0.2rem 0;color:#bbb\">&#9744; [Agora] CI: Run debate quality scoring on new/unscored sessions (P90)</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; [Agora] CI: Trigger debates for analyses with 0 debate sessions (P90)</div></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><h3 style=\"color:#4fc3f7;margin:1.4rem 0 0.5rem;font-size:1.1rem;font-weight:700;border-bottom:2px solid rgba(79,195,247,0.3);padding-bottom:0.2rem\">Success Criteria</h3></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><div style=\"margin:0.2rem 0;color:#bbb\">&#9744; All open tasks completed and verified</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; Integration tested end-to-end with dependent quests</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; UI pages rendering correctly for this quest&#x27;s features</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; Documentation updated for new capabilities</div></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><h3 style=\"color:#4fc3f7;margin:1.4rem 0 0.5rem;font-size:1.1rem;font-weight:700;border-bottom:2px solid rgba(79,195,247,0.3);padding-bottom:0.2rem\">Work Log</h3></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\">_No entries yet._<br></p></div>","spec_file":"quest_agora_spec.md","commits":[{"hash":"59405c7c5","message":"docs: AGENTS.md — document Path A/B/C task completion semantics [task:docs-agents-completion] (#40)","date":"2026-04-25"},{"hash":"e5b5848a0","message":"WIP on orchestra/task/8fcc8dc8-debate-artifact-version-pinning-referenc: 8a24c2fa2 [Senate] Delete broken restore_database.sh (#38)","date":"2026-04-25"},{"hash":"50e5ffcfe","message":"index on orchestra/task/8fcc8dc8-debate-artifact-version-pinning-referenc: 8a24c2fa2 [Senate] Delete broken restore_database.sh (#38)","date":"2026-04-25"},{"hash":"0d37f5fce","message":"untracked files on orchestra/task/8fcc8dc8-debate-artifact-version-pinning-referenc: 8a24c2fa2 [Senate] Delete broken restore_database.sh (#38)","date":"2026-04-25"},{"hash":"48f8d2fe3","message":"feat: surface all five SciDEX layers in nav [task:cba19c94-1724-4d5a-b89d-96c73c25f12a] (#39)","date":"2026-04-25"},{"hash":"1f0e35929","message":"Squash merge: orchestra/task/b1a8e549-cross-cutting-wire-existing-k-dense-skil (2 commits)","date":"2026-04-25"},{"hash":"ddb7db381","message":"[Agora] Wire existing K-Dense-backed tools into debate orchestration [task:b1a8e549-6f31-43c5-80f5-7c4717c267e4]","date":"2026-04-25"},{"hash":"76b71427a","message":"[Agora] Wire existing K-Dense-backed tools into debate orchestration [task:b1a8e549-6f31-43c5-80f5-7c4717c267e4]","date":"2026-04-25"},{"hash":"779e85c3a","message":"[Senate] Verify /resources dashboard complete; check off acceptance criteria [task:82074adc-507f-4e6b-9092-e2ceee79e7d4]","date":"2026-04-25"},{"hash":"4c66a8e09","message":"[Senate] Establish emergency access recovery procedures [task:e643cdd3-afd6-410f-a366-a6297d112127]","date":"2026-04-25"},{"hash":"7265a06b4","message":"Squash merge: orchestra/task/b1a8e549-cross-cutting-wire-existing-k-dense-skil (1 commits)","date":"2026-04-25"},{"hash":"58406ec64","message":"[Atlas] Dashboard artifact type: living web views with data source rendering [task:a17-28-DASH0001]","date":"2026-04-25"},{"hash":"8a24c2fa2","message":"[Senate] Delete broken restore_database.sh (#38)","date":"2026-04-25"},{"hash":"b98a1fa18","message":"[Senate] Delete broken restore_database.sh","date":"2026-04-25"},{"hash":"e846f82ef","message":"[Senate] Refresh BACKUP_RESTORE.md + docs/runbooks/emergency_restore.md (#37)","date":"2026-04-25"},{"hash":"43972a45e","message":"[Senate] Refresh BACKUP_RESTORE.md + docs/runbooks/emergency_restore.md","date":"2026-04-25"},{"hash":"2c7dbfe7f","message":"[Senate] Delete 9 obsolete backup scripts/units (continuation of Phase A-D cleanup) (#36)","date":"2026-04-25"},{"hash":"9743eb298","message":"[Senate] Delete 9 obsolete backup scripts/units (continuation of Phase A-D cleanup)","date":"2026-04-25"},{"hash":"3e72d8383","message":"[Agora] Wire 3 missing tools into debate skill_functions, fix citation persistence bug [task:b1a8e549-6f31-43c5-80f5-7c4717c267e4]","date":"2026-04-25"},{"hash":"4310e9854","message":"[Demo] Work log: figures verified complete — 140/140 analyses covered [task:df201d8f-4b89-4258-9148-eb1028fc1fbd]","date":"2026-04-24"}]}