{"quest":{"id":"q-44eeb3788f50","name":"Gap Factory","description":"Automated knowledge gap generation, decomposition, and value-scoring pipeline.\n\nCore principles:\n- Gaps are almost never \"resolved\" — they represent open questions that require extraordinary convergent evidence (5+ analyses, 2+ debates, composite score ≥0.85) to close.\n- Gaps have VALUE proportional to: importance × log(1 + dependent_hypotheses) × tractability.\n- Gaps decompose into subproblems (gap_subproblems table) and form dependency networks (gap_dependencies: blocks / informs / subsumes / requires / contradicts).\n- New gaps are identified by: debate transcript analysis, KG contradiction detection, paper frontier scanning, hypothesis-gap mismatch analysis.\n\nStatus model (graduated evidence thresholds):\n  open → investigating → partially_addressed → substantially_addressed → resolved\n\nInfrastructure delivered (2026-04-06):\n- Migration 054: gap_dependencies, gap_subproblems, value_if_resolved column, resolution_criteria\n- update_gap_statuses() with graduated thresholds\n- Dashboard shows \"Active Gaps\" (non-resolved) instead of \"Open Gaps\"\n\nOpen workstreams:\n1. Gap identification: scan new papers/debates for unresolved questions\n2. Gap decomposition: LLM-driven subproblem extraction from gap descriptions\n3. Gap dependency mapping: connect gaps to hypotheses and other gaps\n4. Gap value scoring: count downstream impact on hypothesis portfolios\n5. Gap tournaments: Elo-rank gaps by \"most important to solve\" via LLM judge\n6. Gap-hypothesis matching: surface which hypotheses address which gaps","layer":"Atlas","priority":85,"status":"active","created_at":"2026-04-03T20:28:32.766222","updated_at":"2026-04-06T02:38:13.197813+00:00"},"tasks":[{"id":"99990586-2e01-4743-8f99-c15d30601584","title":"[Gaps] Automated gap dependency mapping from KG + hypothesis graph","description":"Scan knowledge_edges and hypotheses to infer gap_dependencies. If two gaps share target entities, hypotheses, or pathways, create 'informs' links. If one gap's resolution criteria include another gap's title, create 'requires' link. Use LLM for relationship classification.","status":"open","priority":95,"frequency":"every-1d","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-29T06:11:08.811439+00:00","updated_at":"2026-04-29T06:11:08.811439+00:00","summary":"","completion_summary":"**Summary of work completed:** [already on main: 0f2a2fcf]","completion_notes":"Released by supervisor slot 13 because credential acquisition failed after pre-claim. Reason: worktree_creation_failed:branch_held_by_other:held_by=/tmp/gap-deps-worktree","last_error":"acquire_fail:worktree_creation_failed:branch_held_by_other:held_by=/tmp/gap-deps-worktree","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/gap_dependency_mapping_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 5, \"reasoning\": 6, \"safety\": 9}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"codex\", \"_stall_requeued_at\": \"2026-04-11 03:46:07\", \"completion_shas\": [\"2a74a9998ee2217a6b85a8ac43f2ee53570bafd4\", \"74a3ea9296142ee1c79b95ba3998a3bb0939d867\", \"d26b00c205f2dea898a525d7edfd3e1671e38472\"], \"completion_shas_checked_at\": \"2026-04-12T17:27:12.848230+00:00\", \"completion_shas_missing\": [\"90c7de08cf950d124356823ad394632b07f3fa65\", \"df8806c6e4297baf5e45a8f02d5e5bf131b6d3c9\", \"6777266af0282226a8389aff8f7afa26a6cea377\", \"079cd25841e39a7907e460c8cdca8696bf9edc4e\", \"e2785902b197af87ca7c9a0c1187fb9c8c8962c1\", \"ea806553ea92e5df832a97deb5875e940def231d\", \"1e3401d900ba2f58be140883dea07edb61b84da1\", \"1410a61627fc4892fece83e06d79b154da6fcd2a\", \"f87482538836ec408a28441fe87aac9adc46d98d\", \"68a7ed3e5b2d80f06af78c1cb24b57584d665a26\", \"1d65f1ee112eec0bac52fed06e5fb2407fd37ca1\", \"b46b24d65cf2fe468ea916b7db67f0f7a83e546d\", \"1f76d7c9710d63a7f0ad67fc062d1dbe03f175a8\", \"cc0045628cc994828ef6898bda3501be0be64719\", \"95a6e469d9cbcf3d7acd734d240f7c9a7eaea1be\", \"40dcbc9c883a3b04291ad406c9bb59051529a17a\", \"425eccede5a88088d1c68e3f9d84d6c832852536\", \"dc9a176f4ec080eda08e3fa11d0382c6557971bf\", \"55aa40bf9d3e9906805da5d0c231e1f2fb02e224\", \"349420849bfd5bf98ebe6f6617bc7b2b0340f46b\", \"cfaa23f950569cd11a99bb127dc5a463faf970cb\"], \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"recurring","pr_links":[],"commit_links":[]},{"id":"f0d7cb9d-d588-4964-a3d6-a696e1c6a974","title":"[Gaps] New gap identification from debate transcripts and paper abstracts","description":"Extend debate_gap_extractor.py to also scan PubMed abstracts for contradictions, unexplained observations, and explicitly stated open questions. Each identified gap gets importance/tractability scores and enters the gap pipeline. Target: 5-10 new gaps per week from automated scanning.","status":"open","priority":91,"frequency":"every-1d","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-28T06:23:49.326926+00:00","updated_at":"2026-04-28T06:23:49.326926+00:00","summary":"","completion_summary":"[Agora] Gap mining: fix paper miner bugs + run debate/paper pipelines [task:f0d7cb9d-d588-4964-a3d6-a696e1c6a974]","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/f0d7cb9d_gaps_gap_identification_debate_pubmed_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 5, \"reasoning\": 6}, \"_stall_skip_providers\": [], \"_stall_requeued_by\": \"codex\", \"_stall_requeued_at\": \"2026-04-11 03:52:14\", \"completion_shas\": [\"2ed2a670bc6aca2156194d6fad3564ff69ee3331\"], \"completion_shas_checked_at\": \"2026-04-12T17:18:17.913403+00:00\", \"completion_shas_missing\": [\"90018273fe91aa647f18e6de08e45b97c3032005\", \"c617ef7ee1b18b20b55f3915e821733736f8d5e6\", \"36c909a93c7b2dd83a96d47d19bf561989075a18\", \"d962a453aafdd9120ee894816c208ad01ab2aac3\", \"1acdf5d58b91b7c086aec50f14a7754edcd47b71\", \"97e188812eef923169db5365882f60eb5f44a7e2\", \"4554388f050b818bb9a7d93cc47c8aa84a1a09c1\", \"7d4da947e0b63b64e56e3b755843941138cfaee3\", \"74b5c5ef955fa3d80a1657df6c8bbce539d077aa\", \"66e73b08733c2d5f2c004ded03b883f3525ce216\", \"ff8b9fef484c31571ff7e7b4b9cf8fc084ecb93e\", \"2f702c3696ea24029cb6a48561bf9d839471a50a\", \"bd1a60dbfcb3298aa84f6f5c5f89160bfeeda5ad\", \"3498b44f4d41459adebfec4c8830cfe7002220ab\", \"8abf843eecf2b7f5677b17eb27ad6c5263e4067b\", \"45f0ba36dc8f901b1b73fb08dd5c15dc5079cde0\", \"5c83a8d1c6223b97e31a0405e9aec9d9d69d8703\", \"e7b07e66ef5ffd391e0c9c9d8d8781ec37545d3d\", \"7232cdd420727da7a7d79fe140fa359ac618cf6d\", \"6cecbfcf8f880b3a46bef1f5318b52b28faeccd4\", \"ea3091fe818962744f13ff5439e65f0ef2ad5b4f\", \"0ef9f5c890b8e2eb1ed30bc3f46ee4b12ed3e918\", \"a80696e526f693fabeb43e7f3f10150d3e826db6\", \"803b6ded1219d3a896822cb779064380400750ae\", \"4a9054ff444ad3ea6f950c6e0eaa25e7f47ca25d\", \"05db0bf13a1da21c648ff20bd0cddb83207dde62\", \"f4b1ae2866ef68b8589a749a0eba674bc6441093\", \"5cd0986651a017aa048b609487d2c6e58d8a75fd\", \"318e864144f23597a488fa04d23d074bbf8c9392\", \"eb02e312a300f4bb630bb47bc867086b6e4ff133\", \"177310a6916cfb91b2d47b4b588414bbbacfcf95\", \"b44dafe941396d3d51d161a02710b040bccb2d54\", \"47707f768983c28807f6ef03115bfd7eb4cdba79\", \"ae6b51da225cd40e9470db3acc61a7064d795136\", \"a7da313dfe78e48474ca3d46d2576fe0b810f066\", \"4afd081dc8a3ddc868741011fda4911ad2985c16\", \"c23c32ee1e17e0299837596db8cc67764e8eca7b\", \"b3d77a070e6a9597eebaee45f1f1d4cdfcf8bc75\", \"e6f63f08ac2cc3d1367da6c885698c41ee136867\", \"adef1486aea68b0e5ea1f845646a81af6e53fdb1\", \"aa30623061970498a6162aa4ce849a16bf1f0d2a\", \"f25842f9ab9ed23daa06f0c3ea1e9bf354d8c841\", \"103e2aabf0197ff79f36267c5d927f1f055adee7\", \"f2dfcab7302b78aeb03cd3531cd6b49d364db20a\", \"cfbad9012829a68f31770d05f60ed2174edad4dc\", \"b98e68c8f6e0095e3c118c52a041a818aa8a41c3\", \"ae3edd8b660c1613fa18249ec22f2d6f27f2b922\", \"dc45532bf61a2e21478fce7ed5155f5fce0236d3\", \"57a427189f2218964a90bbd599fc5a818174d832\", \"ae690e4a0b2462465de58ead70c804e9c79604c9\", \"50ac518daa2797768d5d334c8841659b8a859103\", \"7571a4829ae1d93ecd705f14801e2b32c95c2473\", \"981344e555c4452f7cbc7688f7bbcd1dd5d093ea\", \"9485a0d82621f38414666260ee73c507e7a5117f\", \"01dd1d6bdfac1cde3d239f401a5b6eed673252e1\", \"f283866f4c8953171bad91bee0f0733eb5ea46ab\", \"4e2e75b8d6f8c47293f8e9e09559fa806cf3756c\", \"42e6e0b5a4b7c7c9c052fbef69b809d024dd07bb\", \"c451ca4ef4986a31a1a68a2e155187607d166899\", \"fd4529adf75eb3248ecd9f69e8061b86b70bc41f\", \"3593c8a520c96b66fd20a0f04195ab05f7a68f88\", \"bf974cc0ae43b0ae45e44ff0fef4071d70526927\", \"917351100f3c5780c07f6a4e656248ac9fa09a29\", \"1376faf2547f535c2cdd2ac6e73ae8ea8d99f4d5\", \"b00641634d81c7e14cd864fa7cd8ebea7c4d49b1\", \"b67887dfe3585f38fd46a2904cc173653824e2be\", \"3784433a7747802541afbf6be82e56f4c9b84856\", \"1751aa5d6486fdb861c6abd4445b0be0fc49a684\", \"33425f230588de56e7f63629d4658af81efb42b9\", \"68ca1347f66eae3caec54d0b7081ade3ffe11c5d\", \"883514eb32faaf1b17be3adab74610963d7dccd3\", \"7d60e8d7266d532ec045441c3b711b32c2b08045\", \"5e9ce33c227ab048558060b3c2387fd8e6f1a30e\", \"8179eb07d13b1142592b36637c59e510987ac809\", \"257c5cf92013b6e12d1dbdeee66de263ae882e80\", \"19f48101aedf33696560451729cb12e9d2b950ab\", \"a4264bebcc298553d8c2ca17fdde73b1af9326cb\", \"345c521b0e9e7f3f97f15a86ef5a63cc3aac13ea\", \"02ce6388e1c56bb035925395de3c15093b728b2f\", \"def8e77f5cea6000f2d094d3a741825d424b10d3\", \"7e4dcde75c4b58bde2c44e889cbd0f9262ff89f4\", \"f5a8f73f809f1f214f2de56805ff382346802379\", \"165b1cab0eed3785571b7fcdaaf523ae2473a392\", \"2c4f34d6ef6af58dfb2dfc09bdbd5751b4f9f691\", \"ad87bed9930509abe3940e2060b3d25a1ae166be\", \"76d78fa9a9d9d229e240265656d010a06a551990\", \"0b15cfac71f2e14e78b299f95ae0b073d69a9155\", \"2c60a29a7e5d674a9c8e00f322422cb333230cf2\", \"5dd262d39b97cf4feca76d70c06c7ea90bd7452e\", \"87152525e44afc281421e7f9f5a007e7dac5f930\", \"6996fddc60baae85e77713e208ebd6cfd35e3bc3\", \"56592587cebc50d591b8b2abac15e41b4da9658d\", \"73191df00de8de0e69b0a2a9aa8408e62cdbf88c\", \"d7f6cc1cebb27d0fa1d9a3a8a46b41cac833a74f\", \"85317dd6a4bdcf7e8aa0d727bac9a06debbcdbfe\", \"7eabec4e8cc06ce05e8fa87164fbe140467826be\", \"cd3ba25093f042058958a20192eda8f16ba61795\", \"41f9078b15f288706d0549d7683c09587b9a324c\", \"7c5a54f839e4372401fe73efe33970f2ecc6eab4\"], \"_stall_skip_at\": {}, \"_stall_skip_pruned_at\": \"2026-04-14T10:37:14.022390+00:00\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":null,"verification_notes":null,"task_type":"recurring","pr_links":[],"commit_links":[]},{"id":"1f699995ef18","title":"[Atlas] Create background gap-generation agent that runs continuously","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,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-18T17:11:14.773745+00:00","updated_at":"2026-04-18T17:11:14.773745+00:00","summary":"","completion_summary":"[Atlas] Update spec work log — audit reopen fix; [Atlas] Fix gap scanner service paths to match new locations","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/1f699995ef18_atlas_create_background_gap_generation_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":"ad1353c7-e041-44ce-87f3-e84926e20e7b","title":"[Gaps] LLM-driven subproblem decomposition for top-value gaps","description":"For each gap with value_if_resolved > threshold, use LLM to extract 3-5 tractable sub-questions. Store in gap_subproblems table. Sub-questions should be independently investigable and together constitute progress on the parent gap.\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:49:23.264216+00:00","updated_at":"2026-04-19T04:49:23.264216+00:00","summary":"","completion_summary":"Gap subproblem decomposition already on main — script archived at scripts/archive/oneoff_scripts/decompose_gap_subproblems.py, migration 054 defines schema, all acceptance criteria met","completion_notes":"Verification confirms: script `scripts/archive/oneoff_scripts/decompose_gap_subproblems.py` (184 lines, 253 original lines before Senate consolidation) and migration `migrations/054_gap_decomposition_and_value.py` (122 lines) both exist on origin/main. The script was authored in commit 0741e9358 and merged via squash commit efe5e166f. All 5 acceptance criteria are satisfied. Production DB is currently corrupted due to unrelated Senate DB health issues, but the script is re-runnable once DB is repaired.","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\", \"completion_shas\": [\"ad2c212d1\"], \"completion_shas_checked_at\": \"2026-04-19T04:49:23.245706+00:00\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":"pass","verification_notes":"Gap subproblem decomposition already on main — script archived at scripts/archive/oneoff_scripts/decompose_gap_subproblems.py, migration 054 defines schema, all acceptance criteria met","task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"720161b0-f95a-4d08-89e3-94264ee4471c","title":"[Atlas] Assign trust scores to 50 knowledge edges missing trust_score","description":"700446 knowledge_edges have NULL or zero trust_score, limiting Atlas confidence ranking.\n\n## Acceptance criteria\n\n- 50 high-traffic or recent KG edges receive trust_score values between 0 and 1\n- Scores consider evidence_strength, source type, provenance, and epistemic_status\n- Remaining KG edges missing trust_score is <= 700396\n\n## Approach\n\n1. Select edges linked to active hypotheses, analyses, or high-degree entities first.\n2. Score trust using existing evidence_sources and provenance fields.\n3. Persist trust_score/trust_computation_factors and verify before/after counts.\n\nGenerated by the quest-engine low-queue cycle after live DB gap verification. Re-check for duplicate recent work before editing, and document any stronger framing you find.\n","status":"done","priority":84,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-27T02:33:07.249948+00:00","updated_at":"2026-04-27T02:33:07.249948+00:00","summary":"","completion_summary":"Completed: remote branch acd83a184 contains only the KG trust scoring script and spec work log; live PostgreSQL has 76 task-tagged scored knowledge_edges with scores 0.384-0.68 and remaining missing trust_score count is 700396.","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_gap_quality_scoring_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 6}}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":"pass","verification_notes":"Completed: remote branch acd83a184 contains only the KG trust scoring script and spec work log; live PostgreSQL has 76 task-tagged scored knowledge_edges with scores 0.384-0.68 and remaining missing trust_score count is 700396.","task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"5598bc13-a13e-4883-bd65-514d98c4586f","title":"[Gaps] Gap-hypothesis matching: which hypotheses address which gaps","description":"For each gap, find hypotheses whose description or target_gene/pathway overlaps with the gap's domain. Store as evidence_summary on the gap. Update dependent_hypothesis_count. Surface on /gaps page as 'hypotheses working on this gap'.\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:24:35.620401+00:00","updated_at":"2026-04-19T05:24:35.620401+00:00","summary":"","completion_summary":"Already on main: gap_hypothesis_matcher.py (228 lines) + api.py /gaps page hypothesis matching — 57 gaps populated with 511 total hypothesis links via evidence_summary + dependent_hypothesis_count, Sort by Hypotheses button present","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":"pass","verification_notes":"Already on main: gap_hypothesis_matcher.py (228 lines) + api.py /gaps page hypothesis matching — 57 gaps populated with 511 total hypothesis links via evidence_summary + dependent_hypothesis_count, Sort by Hypotheses button present","task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"ad1984b9-2e45-4007-b00d-a28fa3346306","title":"[Atlas] Add trust computation factors to 50 KG edges missing confidence provenance","description":"Many KG edges lack trust_computation_factors even when trust scoring is needed for downstream ranking.\n\n## Acceptance criteria\n\n- 50 KG edges gain trust_computation_factors or documented insufficient-provenance rationale\n- Factors describe source type, evidence sources, analysis link, and uncertainty\n- Updated rows remain compatible with existing trust_score fields\n\n## Approach\n\n1. Select KG edges tied to active hypotheses/analyses and missing trust factors.\n2. Inspect evidence_sources, source/target types, and analysis provenance.\n3. Persist compact JSON factors and verify graph queries still work.\n\nGenerated by the quest-engine low-queue cycle from live DB gap checks; re-check duplicates before editing and avoid placeholder content.\n","status":"done","priority":81,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-27T06:36:46.941998+00:00","updated_at":"2026-04-27T06:36:46.941998+00:00","summary":"","completion_summary":"[Atlas] Add trust_computation_factors to 50+ KG edges missing confidence provenance [task:ad1984b9-2e45-4007-b00d-a28fa3346306]","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_gap_quality_scoring_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 7, \"reasoning\": 6}}","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":"c737bd1b6a6a","title":"[Atlas] Implement KG frontier analysis — find sparse regions in knowledge graph","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":80,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T06:08:58.269518+00:00","updated_at":"2026-04-19T06:08:58.269518+00:00","summary":"","completion_summary":"KG frontier analysis implementation verified on main. /api/kg/frontier endpoint exists at line 9083 on origin/main, committed via eb941afb8. Implementation complete with limit/max_connections/node_type params, 5-min caching, sparse region detection. 500 errors are pre-existing DB corruption, not code issue.","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/c737bd1b6a6a_atlas_implement_kg_frontier_analysis_fi_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 6}, \"_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":"6681bce36b39","title":"[Atlas] Add gap prioritization scoring based on research impact potential","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":80,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T05:47:54.261765+00:00","updated_at":"2026-04-19T05:47:54.261765+00:00","summary":"","completion_summary":"Gap prioritization scoring already on main at api.py:7962 (POST /api/gaps/{gap_id}/score) backed by scidex/agora/gap_scoring.py (147 lines, 5-dimension LLM scoring). Verification commit pushed.","completion_notes":"Verification commit 012293768 pushed ahead of origin/main. Gap prioritization scoring (POST /api/gaps/{gap_id}/score + scidex/agora/gap_scoring.py) confirmed present on origin/main at HEAD 8f0852579 via git show commands. No duplicate work needed.","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/6681bce36b39_atlas_add_gap_prioritization_scoring_ba_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\"}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":"pass","verification_notes":"Gap prioritization scoring already on main at api.py:7962 (POST /api/gaps/{gap_id}/score) backed by scidex/agora/gap_scoring.py (147 lines, 5-dimension LLM scoring). Verification commit pushed.","task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"6b13b3a3-c618-44ba-aa23-201560394601","title":"[Atlas] Add references to 25 wiki pages missing refs_json","description":"1875 wiki pages lack refs_json citations. Citation backfill strengthens Atlas provenance and page quality gates.\n\nVerification:\n- 25 wiki pages gain non-empty refs_json with real citation identifiers\n- References come from existing page content, PubMed, papers table, or NeuroWiki provenance\n- Remaining wiki pages without refs_json is <= 1850\n\nStart by reading this task's spec and checking for duplicate recent work.","status":"done","priority":77,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-21T19:52:20.985778+00:00","updated_at":"2026-04-21T19:52:20.985778+00:00","summary":"","completion_summary":"Already resolved: 10b572855 backfilled 25 pages with real PubMed refs. DB shows only 2 test pages remain without refs_json (target ≤1850).","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/quest_engine_wiki_reference_backfill_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 6, \"reasoning\": 5}}","pr_links_json":"[]","commit_links_json":"[]","merge_commit_sha":null,"merge_verified_at":null,"verification_result":"pass","verification_notes":"Already resolved: 10b572855 backfilled 25 pages with real PubMed refs. DB shows only 2 test pages remain without refs_json (target ≤1850).","task_type":"one_shot","pr_links":[],"commit_links":[]},{"id":"f456463e9e67","title":"[Atlas] Build automated gap scanner — analyze new papers for contradictions and unknowns","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":77,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T11:03:44.857501+00:00","updated_at":"2026-04-19T11:03:44.857501+00:00","summary":"","completion_summary":"[Atlas] Update spec work log: gap scanner shim fix [task:f456463e9e67]; [Atlas] Fix gap scanner shim with dynamic paths instead of hardcoded worktree [task:f456463e9e67]","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/f456463e9e67_atlas_build_automated_gap_scanner_analy_spec.md","provider":"any","payload_json":"{\"requirements\": {\"coding\": 7, \"reasoning\": 6}, \"_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":"d184ae0f4be7","title":"[Atlas] Create gap generation from debate transcripts — extract unresolved questions","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":75,"frequency":"","max_iterations":null,"assigned_slot":"","started_at":null,"completed_at":"2026-04-19T11:06:07.613643+00:00","updated_at":"2026-04-19T11:06:07.613643+00:00","summary":"","completion_summary":"Already resolved: debate_gap_extractor.py (770 lines) exists at scripts/deprecated/debate_gap_extractor.py on origin/main and gap_scanner.py correctly delegates to scripts/deprecated/gap_scanner.py. Gap extraction from debate transcripts is fully operational. Verified via git log and file presence. No code work needed.","completion_notes":"","last_error":"","time_estimate_hours":0.0,"completion_count":0,"spec_path":"docs/planning/specs/d184ae0f4be7_atlas_create_gap_generation_from_debate_spec.md","provider":"any","payload_json":"{\"requirements\": {\"analysis\": 5}, \"_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":"pass","verification_notes":"Already resolved: debate_gap_extractor.py (770 lines) exists at scripts/deprecated/debate_gap_extractor.py on origin/main and gap_scanner.py correctly delegates to scripts/deprecated/gap_scanner.py. Gap extraction from debate transcripts is fully operational. Verified via git log and file presence. No code work needed.","task_type":"one_shot","pr_links":[],"commit_links":[]}],"reviews":[],"effectiveness":{},"prs":[],"commits":[],"spec_content":"---\ntitle: \"Quest: Gap Factory\"\ndescription: \"Automated knowledge gap generation pipeline — continuously scan papers, KG edges, hypotheses, and debate transcripts to identify missing knowledge. Background agents systematically probe frontier boun\"\ntype: quest\nlayer: Atlas\npriority: 85\nstatus: active\nquest_id: q-44eeb3788f50\nspec_path: docs/planning/specs/quest_gap_factory_spec.md\n---\n\n# Quest: Gap Factory\n\n**Layer:** Atlas  \n**Priority:** P85  \n**Status:** active  \n**Tasks:** 5 total (0 done, 5 open)\n\n## Vision\n\nAutomated knowledge gap generation pipeline — continuously scan papers, KG edges, hypotheses, and debate transcripts to identify missing knowledge. Background agents systematically probe frontier boundaries, detect contradictions, and surface under-explored research areas. Goal: ensure gaps grow proportionally to knowledge ingestion.\n\n## Open Tasks\n\n- [ ] [Atlas] Build automated gap scanner — analyze new papers for contradictions and unknowns (P3)\n- [ ] [Atlas] Create gap generation from debate transcripts — extract unresolved questions (P3)\n- [ ] [Atlas] Create background gap-generation agent that runs continuously (P3)\n- [ ] [Atlas] Implement KG frontier analysis — find sparse regions in knowledge graph (P2)\n- [ ] [Atlas] Add gap prioritization scoring based on research impact potential (P2)\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## Quality Requirements\n\n> Generated gaps must not be obvious/trivial. Gap prioritization ranks by research impact potential and novelty relative to existing literature. Agents reject gaps that contradict or merely restate hypotheses already scored >0.7. Acceptance: >70% of generated gaps are cited in hypothesis refinements or experiments within 30 days. Batch-generating ≥10 gaps must use parallel agents.\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: Gap Factory</h2></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\"><strong style=\"color:#e0e0e0\">Layer:</strong> Atlas  \n<strong style=\"color:#e0e0e0\">Priority:</strong> P85  \n<strong style=\"color:#e0e0e0\">Status:</strong> active  \n<strong style=\"color:#e0e0e0\">Tasks:</strong> 5 total (0 done, 5 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\">Automated knowledge gap generation pipeline — continuously scan papers, KG edges, hypotheses, and debate transcripts to identify missing knowledge. Background agents systematically probe frontier boundaries, detect contradictions, and surface under-explored research areas. Goal: ensure gaps grow proportionally to knowledge ingestion.</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; [Atlas] Build automated gap scanner — analyze new papers for contradictions and unknowns (P3)</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; [Atlas] Create gap generation from debate transcripts — extract unresolved questions (P3)</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; [Atlas] Create background gap-generation agent that runs continuously (P3)</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; [Atlas] Implement KG frontier analysis — find sparse regions in knowledge graph (P2)</div>\n<div style=\"margin:0.2rem 0;color:#bbb\">&#9744; [Atlas] Add gap prioritization scoring based on research impact potential (P2)</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\">Quality Requirements</h3></p><p style=\"color:#bbb;line-height:1.6;margin:0.4rem 0\">&gt; Generated gaps must not be obvious/trivial. Gap prioritization ranks by research impact potential and novelty relative to existing literature. Agents reject gaps that contradict or merely restate hypotheses already scored &gt;0.7. Acceptance: &gt;70% of generated gaps are cited in hypothesis refinements or experiments within 30 days. Batch-generating ≥10 gaps must use parallel agents.</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_gap_factory_spec.md"}