{"quest":{"id":"q-resource-intelligence","name":"Resource Intelligence","description":"Value-based resource allocation — continually evaluate the relative value of quests, tasks, \nhypotheses, gaps, and artifacts, then allocate LLM tokens, CPU, and disk proportionally.\n\nThis quest is the DECISION layer between:\n  - Economics (pricing signals, token economy) → tells us what things are WORTH\n  - Resource Governance (caps, quotas, enforcement) → tells us what we CAN spend\n  - Resource Intelligence (THIS) → decides what we SHOULD spend on\n\nCore loop:\n  1. Score every open task/quest by expected-value-per-token:\n     EV = (importance × tractability × downstream_impact) / estimated_cost\n  2. Rank by EV descending → priority queue\n  3. Allocate budget: top-k items get resources proportional to EV rank\n  4. After completion, measure actual impact → update EV model (feedback loop)\n\nSignals feeding the scorer:\n  - Elo tournament ratings (hypothesis quality signal)\n  - LMSR market prices (belief-weighted value)\n  - Gap value_if_resolved scores\n  - Quest priority × task count\n  - Historical cost-per-completion from resource_usage + cost_ledger\n  - Freshness: penalize stale items, boost newly-identified opportunities\n\nResources tracked:\n  - LLM tokens (by provider: max, codex, bedrock)\n  - CPU seconds (cgroup tracking via cgroup_isolation.py)\n  - Disk (artifact storage)\n  - Agent slots (concurrent execution capacity)\n\nConnects to:\n  - resource_allocations table (currently empty → needs populating)\n  - quest_resource_analyzer.py (correlates completion with consumption)\n  - monthly_resource_adjustment.py (periodic rebalancing)\n  - token_ledger.py (virtual economy)\n  - cost_ledger in orchestra.db (real spend)\n\nSpec: docs/planning/specs/q-resource-intelligence_spec.md","layer":"Senate","priority":92,"status":"active","created_at":"2026-04-09T21:11:14.236039+00:00","updated_at":"2026-04-10T14:44:10.355870+00:00"},"tasks":[{"id":"cc99287d-1cc1-4e25-ac13-45f7785c1648","title":"[Senate] Capital → compute allocation (driver #12)","description":"Recurring driver. Read total wallet balances per agent from token_accounts, compute next-cycle compute share = balance * reputation / total_balance, write to a compute_allocations table (create if missing). The Orchestra supervisor reads compute_allocations to weight slot assignments. On no agents with balances, release as no-op. See driver #12.","status":"open","priority":92,"frequency":"every-6h","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-29T04:55:00.678647+00:00","updated_at":"2026-04-29T04:55:00.678647+00:00","summary":"","completion_summary":"Driver #12 completed successfully. The cycle ran and wrote **236 compute allocations** to `compute_allocations` for the current 6-hour bucket, with shares summing to ~1.0 across all agents. The top slot holder is `orchestra_workers` at 59.45% of compute share. No code changes were needed — the driver was already implemented and healthy.","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/economics_participation_drivers_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"analysis\": 6}, \"completion_shas\": [\"bac88f56778eec14fb737e91b6aa3c2068e54c6f\", \"800ec4376c996ccdb907ad30d72a1a2ed631b37f\", \"793ebcd13ac80f388ce8f8dd95db23d7aeb270db\", \"451e54046396aa45869272097ef39771607ae5a1\", \"5c00f7b1559091f82206f3eb8fb00b8479c34b75\"], \"completion_shas_checked_at\": \"2026-04-13T05:43:55.369790+00:00\", \"completion_shas_missing\": [\"38f3dce80f45ba31bbb5423e8645d48868087ed6\", \"5c64cbe657c980d057cf733bda3ccdafd8a85044\", \"b1cb2e24dabb890551086f07e53145a7e740d107\", \"b6ce8e501e59aae096ba08af33fff3ac6524b827\", \"6a2cd18e31117b8f75a6e51714195746d9501ee5\", \"8645f2cc0f58d482ddb0b6cfc442f6fdf65c2d01\", \"d8ddb7d2a6514406080de85a548f6cb663acee88\", \"8e7276d9f6c58b24d19a5e16017f3e02329016d9\", \"1882882ab30403f245286475f88a394e82cd09bb\", \"46fe7c2919b68c51625f7e378e37228561c2b4eb\", \"b68e55b6aed7931672b84865568061a71f5bb8a2\", \"413568dd02771e8fabaf79d424f1c43a01859bd4\", \"357313e93e1ba6bf6aab420bbe9e64a8aaadad79\", \"f95b79a08a544f414860b81ebc041869426b6201\", \"7fc9a57e7f8b150439d8cf3b2af955889960de76\", \"b2c6e1f1dc5f38758026bca01cb160f4ed287b9b\", \"8d10b545fdb5b2310b8d77c176bb37295f57247a\", \"cc29579676b02faedff5ef67211552379e3bdc95\", \"bc990f520805ef4f3176dcad1bbad446f1dd0a55\", \"351df4f26424b7804b1649246f12d9b5bfee5d0c\", \"cd3464ca0f1a521ba67cf2da029538bef5b299d5\", \"8ace262f168048ae3288b5da4bf5a0d2b171cb44\", \"f9790de22edefd6aacb934d8ce6be3479f90eea5\", \"f74da162eb4cc214e7e30bef58c8ab914df08b81\", \"95aa54860d64d57db304eb7be8f62699bb7214ea\", \"6dbf1ff37ee88ec874643a1d67c6a89fb1122cb0\", \"2f04652a0308833009807f7346d78f91dece5a08\"]}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":"pass","verification_notes":"Wrote 105 compute allocations for cycle 2026-04-24T12:00:00+00:00 (total_weight=5239017.19, shares_sum=1.00000007). Top slot: orchestra_workers with 67.4% share. Driver code was already correct on main — no code changes needed this cycle.","task_type":"recurring","pr_links":[],"commit_links":[]},{"id":"72f84abe-7f53-4144-8485-3cf409bc9708","title":"[Senate] Cross-account model router - Opus to highest-EV tasks only","description":"Route each task to cheapest model class meeting --requires; reserve Opus/GPT-5 for top-EV tasks.","status":"done","priority":92,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-27T08:38:37.056826+00:00","updated_at":"2026-04-27T08:38:37.056826+00:00","summary":"","completion_summary":"[Senate] Add cross-account model router; route Opus to highest-EV tasks only [task:72f84abe-7f53-4144-8485-3cf409bc9708]","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/q-ri-cross-account-model-router_spec.md","provider":"any","payload_json":"{}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"300713e6-171b-4e6e-9138-4868ba1cc72e","title":"[Senate] Compute-as-currency bid market for agent slots","description":"Replace proportional ev_scorer budget split with continuous double-auction; agents bid wallet tokens.","status":"done","priority":91,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-27T08:52:47.426197+00:00","updated_at":"2026-04-27T08:52:47.426197+00:00","summary":"","completion_summary":"[Senate] Compute-as-currency bid market for agent slots [task:300713e6-171b-4e6e-9138-4868ba1cc72e]","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/q-ri-compute-as-currency_spec.md","provider":"any","payload_json":"{}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"77108663-5f84-473e-8037-3787f49224ae","title":"[Senate] Per-quest budget vs. actual variance with anomaly alerts","description":"Daily variance computation between quest_budget_allocations and cost_ledger; attribution + Senate proposals on >2sigma overruns.","status":"done","priority":88,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-27T11:43:24.326907+00:00","updated_at":"2026-04-27T11:43:24.326907+00:00","summary":"","completion_summary":"[Senate] Per-quest budget variance with anomaly alerting [task:77108663-5f84-473e-8037-3787f49224ae]","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/q-ri-budget-variance-dashboard_spec.md","provider":"any","payload_json":"{}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"13d17351-9a09-46f8-bbf9-accbf99a9c54","title":"[Resources] EV scorer: rank tasks/quests by expected-value-per-token","description":"Implement a scorer that computes EV = (importance × tractability × downstream_impact) / estimated_cost for every open task. Use: quest priority, task priority, gap value_if_resolved, hypothesis composite_score, Elo ratings where available, historical cost from cost_ledger. Output: ranked priority queue that the supervisor can use for task selection. Store in resource_allocations table.\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,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T01:34:47.280984+00:00","updated_at":"2026-04-19T01:34:47.280984+00:00","summary":"","completion_summary":"Already resolved: commits 9134491c1 (EV scorer delivery) and e6f28d7e9 (Orchestra DB read-only + Elo ratings) both on origin/main. ev_scorer.py implements full EV formula with task/hypothesis/gap scoring, resource_allocations table, and /senate/resource-allocation dashboard + /api/resources/ev-scores endpoint.","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"","provider":"claude","payload_json":"{\"requirements\": {\"analysis\": 7, \"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\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"4181e659-3d60-4c6c-b2cd-eb4d468cd2bc","title":"[Senate] Waste detector - auto-archive tasks abandoned 3+ times","description":"Detect tasks with 3+ failed task_runs/no commit, auto-archive, refund wallet, emit Senate proposal.","status":"done","priority":86,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-27T17:18:10.658451+00:00","updated_at":"2026-04-27T17:18:10.658451+00:00","summary":"","completion_summary":"Implemented waste detector that auto-archives tasks abandoned 3+ times: scan() finds tasks with ≥3 failed runs (no commit) and no successful run in 14 days; archive_waste() sets status=archived, writes waste_archive_log, refunds via token_ledger; unarchive_task() restores to open; run_once() runs the full pipeline; daily scheduled task (1440 min); 3 API endpoints; /senate/waste-archive HTML page with un-archive buttons; WASTE_DETECTOR_DRY_RUN defaults to 1 for shadow period; 10 tests all passing. PR #786 merged.","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/q-ri-waste-detector_spec.md","provider":"any","payload_json":"{\"completion_shas\": [\"e2cc15f6c\", \"92f2e60e15ae4868f2045295f81d1c0eb85e835d\"], \"completion_shas_checked_at\": \"\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":"92f2e60e15ae4868f2045295f81d1c0eb85e835d","merge_verified_at":"2026-04-27T17:18:03.122894+00:00","verification_result":"pass","verification_notes":"All 10 tests pass. All acceptance criteria met. PR #786 squash-merged into main as 92f2e60e1.","task_type":"one_shot","pr_links":[],"commit_links":[{"sha":"92f2e60e15ae4868f2045295f81d1c0eb85e835d","role":"merge_commit"}]},{"id":"ae7556ff-1e75-4398-8f0d-afa0ef38cee1","title":"[Resources] Budget allocation: distribute daily token budget across quests","description":"Given the daily token budget (from cost_budgets), allocate proportionally to quests based on their aggregate EV score. Top quests get more agent slots + higher priority. Track allocation vs actual spend per quest. Surface on /resources page as 'Quest Budget Allocation' chart.\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,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T04:58:33.359083+00:00","updated_at":"2026-04-19T04:58:33.359083+00:00","summary":"","completion_summary":"[Verify] Quest budget allocation: confirm all code on origin/main [task:ae7556ff-1e75-4398-8f0d-afa0ef38cee1]","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":"{\"_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\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"9dd66da2-18db-4084-bca2-132afae412ec","title":"[Resources] Feedback loop: measure actual impact per token spent","description":"After task completion, measure: hypotheses generated, KG edges added, debate quality, gap progress, market price changes. Compute impact-per-token ratio. Use to update the EV model — tasks/quests that historically deliver high impact/token get boosted. Connects cost_ledger to artifact creation timestamps.\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":82,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T05:40:55.190446+00:00","updated_at":"2026-04-19T05:40:55.190446+00:00","summary":"","completion_summary":"Already addressed: implementation landed on main in d14fe3a59/e970b4d43/f93940851. impact_tracker.py (652 lines), ev_scorer.py with impact multipliers, and all 4 API endpoints confirmed on origin/main.","completion_notes":"","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\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"aa8c3204-2746-4acf-83b2-40f309f9d90b","title":"[Resources] Resource dashboard: real-time allocation + efficiency view","description":"Extend /resources page with: (1) per-quest budget allocation pie chart, (2) efficiency rankings (impact per $1 spent), (3) resource utilization timeline, (4) provider breakdown (max vs codex vs bedrock), (5) 'wasted' resources (tasks that consumed tokens but produced nothing). Make it the go-to page for understanding where resources are going.\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":80,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T10:17:52.387491+00:00","updated_at":"2026-04-19T10:17:52.387491+00:00","summary":"","completion_summary":"Already addressed by main — all 5 sections implemented in api.py resources_dashboard()","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/aa8c3204_2746_resource_dashboard_spec.md","provider":"claude","payload_json":"{\"requirements\": {\"coding\": 7, \"analysis\": 6, \"reasoning\": 6}, \"completion_shas\": [\"78c1befe2\"], \"completion_shas_checked_at\": \"2026-04-17T10:04:44.711277+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\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"one_shot","pr_links":[],"commit_links":[]}],"reviews":[],"effectiveness":{},"prs":[],"commits":[{"hash":"92f2e60e15ae4868f2045295f81d1c0eb85e835d","message":"Implemented waste detector that auto-archives tasks abandoned 3+ times: scan() finds tasks with ≥3 failed runs (no commit) and no successful run in 14 days; archive_waste() sets status=archived, writes waste_archive_log, refunds via token_ledger; unarchive_task() restores to open; run_once() runs the full pipeline; daily scheduled task (1440 min); 3 API endpoints; /senate/waste-archive HTML page with un-archive buttons; WASTE_DETECTOR_DRY_RUN defaults to 1 for shadow period; 10 tests all passing. PR #786 merged.","date":"2026-04-27","role":"merge_commit","url":"https://github.com/SciDEX-AI/SciDEX/commit/92f2e60e15ae4868f2045295f81d1c0eb85e835d","task_id":"4181e659-3d60-4c6c-b2cd-eb4d468cd2bc","task_title":"[Senate] Waste detector - auto-archive tasks abandoned 3+ times"}]}