dreamcontext 0.9.2 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +33 -8
  2. package/agents/dreamcontext-explore.md +10 -0
  3. package/agents/sleep-product.md +15 -6
  4. package/dist/agents/dreamcontext-explore.md +10 -0
  5. package/dist/agents/sleep-product.md +15 -6
  6. package/dist/dashboard/assets/{BrainCanvas3D-Czb2UCx5.js → BrainCanvas3D-BuhjqMJE.js} +1 -1
  7. package/dist/dashboard/assets/{_baseUniq-C7bhYu5d.js → _baseUniq-BFywhIrF.js} +1 -1
  8. package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-DTj6PSJF.js → ar-SA-G6X2FPQ2-0wtAtjf3.js} +1 -1
  9. package/dist/dashboard/assets/{arc-CtAwRj-v.js → arc-CbIZg0XW.js} +1 -1
  10. package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-Be8ao9_h.js → architectureDiagram-Q4EWVU46-DcA2m4dL.js} +1 -1
  11. package/dist/dashboard/assets/{az-AZ-76LH7QW2-C7yBzi3o.js → az-AZ-76LH7QW2-DypXzn_9.js} +1 -1
  12. package/dist/dashboard/assets/{bg-BG-XCXSNQG7-D1hJb5wI.js → bg-BG-XCXSNQG7-DqjNOvWi.js} +1 -1
  13. package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-Bn9SXOUb.js → blockDiagram-DXYQGD6D-DGUYSkmu.js} +1 -1
  14. package/dist/dashboard/assets/{bn-BD-2XOGV67Q-wh2xv6Ti.js → bn-BD-2XOGV67Q-DMT15vLO.js} +1 -1
  15. package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-C_MLGRXa.js → c4Diagram-AHTNJAMY-D0ureHL0.js} +1 -1
  16. package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-DBkrY3p1.js → ca-ES-6MX7JW3Y-BIf8pakY.js} +1 -1
  17. package/dist/dashboard/assets/channel-C5uBjxRg.js +1 -0
  18. package/dist/dashboard/assets/{chunk-4BX2VUAB-EMhGJvza.js → chunk-4BX2VUAB-BpMo9p3D.js} +1 -1
  19. package/dist/dashboard/assets/{chunk-4TB4RGXK-_7FEisTX.js → chunk-4TB4RGXK-BjWqEumI.js} +1 -1
  20. package/dist/dashboard/assets/{chunk-55IACEB6-Cz4CusRM.js → chunk-55IACEB6-CoREiws2.js} +1 -1
  21. package/dist/dashboard/assets/{chunk-EDXVE4YY-C5yb7Q9H.js → chunk-EDXVE4YY-DWGx8NFS.js} +1 -1
  22. package/dist/dashboard/assets/{chunk-FMBD7UC4-PlFeuiZ_.js → chunk-FMBD7UC4-BPHXOHEi.js} +1 -1
  23. package/dist/dashboard/assets/{chunk-OYMX7WX6-Bv_6NT0F.js → chunk-OYMX7WX6-Cg-AvRQR.js} +1 -1
  24. package/dist/dashboard/assets/{chunk-QZHKN3VN-BrBdsXuW.js → chunk-QZHKN3VN-oNBf0ZAT.js} +1 -1
  25. package/dist/dashboard/assets/{chunk-YZCP3GAM-DGLXUzMF.js → chunk-YZCP3GAM-BWTEULwI.js} +1 -1
  26. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-MwUwKREr.js +1 -0
  27. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-MwUwKREr.js +1 -0
  28. package/dist/dashboard/assets/clone-CcQlDA5C.js +1 -0
  29. package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-BCnFo_-v.js → cose-bilkent-S5V4N54A-CQAtltI5.js} +1 -1
  30. package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-B7f7FtE4.js → cs-CZ-2BRQDIVT-sgLhn2uw.js} +1 -1
  31. package/dist/dashboard/assets/{da-DK-5WZEPLOC-DGy-rvZb.js → da-DK-5WZEPLOC-56JnY0Ou.js} +1 -1
  32. package/dist/dashboard/assets/{dagre-KV5264BT-C-3lRx-i.js → dagre-KV5264BT-Czzd8AFD.js} +1 -1
  33. package/dist/dashboard/assets/{de-DE-XR44H4JA-CaJWHpe0.js → de-DE-XR44H4JA-CLiIEbrn.js} +1 -1
  34. package/dist/dashboard/assets/{diagram-5BDNPKRD-C4YVbDXp.js → diagram-5BDNPKRD-BYQz4Ej0.js} +1 -1
  35. package/dist/dashboard/assets/{diagram-G4DWMVQ6-BuW9zfOU.js → diagram-G4DWMVQ6-Bi69CX9y.js} +1 -1
  36. package/dist/dashboard/assets/{diagram-MMDJMWI5-BkMYjNGf.js → diagram-MMDJMWI5-C9rH4USL.js} +1 -1
  37. package/dist/dashboard/assets/{diagram-TYMM5635-DrzHjWok.js → diagram-TYMM5635-CtGy_47Q.js} +1 -1
  38. package/dist/dashboard/assets/{el-GR-BZB4AONW-BiJmW-b5.js → el-GR-BZB4AONW-DLKTMVgu.js} +1 -1
  39. package/dist/dashboard/assets/{erDiagram-SMLLAGMA-G0UEz6JN.js → erDiagram-SMLLAGMA-DYwZiwiF.js} +1 -1
  40. package/dist/dashboard/assets/{es-ES-U4NZUMDT-CwBcKV2z.js → es-ES-U4NZUMDT-B8vUZNzj.js} +1 -1
  41. package/dist/dashboard/assets/{eu-ES-A7QVB2H4-wG_Vz3Mp.js → eu-ES-A7QVB2H4-DOBpB_xM.js} +1 -1
  42. package/dist/dashboard/assets/event-BbvoZQ5o.js +1 -0
  43. package/dist/dashboard/assets/{fa-IR-HGAKTJCU-5ydvmmyn.js → fa-IR-HGAKTJCU-BSo8AkJw.js} +1 -1
  44. package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-Wo_BEMPx.js → fi-FI-Z5N7JZ37-IXouAsQf.js} +1 -1
  45. package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-UjoFr5FL.js → flowDiagram-DWJPFMVM-BfsdXM27.js} +1 -1
  46. package/dist/dashboard/assets/{fr-FR-RHASNOE6-oa5BKaB_.js → fr-FR-RHASNOE6-Bq41-iWY.js} +1 -1
  47. package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-Btdbfhcj.js → ganttDiagram-T4ZO3ILL-YFxSZdBo.js} +1 -1
  48. package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-CEOTwDOS.js → gitGraphDiagram-UUTBAWPF-CzLILfBF.js} +1 -1
  49. package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-CauOTr6H.js → gl-ES-HMX3MZ6V-kuzaTFsC.js} +1 -1
  50. package/dist/dashboard/assets/{graph-Dm-hvy_w.js → graph-BOf2JBnY.js} +1 -1
  51. package/dist/dashboard/assets/{he-IL-6SHJWFNN-COrYIlQr.js → he-IL-6SHJWFNN-RQ2NxAvm.js} +1 -1
  52. package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-J1Y95ZoC.js → hi-IN-IWLTKZ5I-D9xTaaPK.js} +1 -1
  53. package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-ViGh9Ezw.js → hu-HU-A5ZG7DT2-L1HNbSdl.js} +1 -1
  54. package/dist/dashboard/assets/{id-ID-SAP4L64H-DXl8yZED.js → id-ID-SAP4L64H-B33X72Ml.js} +1 -1
  55. package/dist/dashboard/assets/index--chDvBkZ.css +32 -0
  56. package/dist/dashboard/assets/{index-Bib6Q7p5.js → index-B-6R-7Ot.js} +1 -1
  57. package/dist/dashboard/assets/index-CwZ3YweD.js +582 -0
  58. package/dist/dashboard/assets/{infoDiagram-42DDH7IO-uLVxhokj.js → infoDiagram-42DDH7IO-DTWl9Wxm.js} +1 -1
  59. package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-B0NEYz4G.js → ishikawaDiagram-UXIWVN3A-C0CAoNgB.js} +1 -1
  60. package/dist/dashboard/assets/{it-IT-JPQ66NNP-D6Y8YA58.js → it-IT-JPQ66NNP-BK_HSf6M.js} +1 -1
  61. package/dist/dashboard/assets/{ja-JP-DBVTYXUO-khAPtZRR.js → ja-JP-DBVTYXUO-BRVQwLJ-.js} +1 -1
  62. package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-5qv0pqIB.js → journeyDiagram-VCZTEJTY-CADHnY3u.js} +1 -1
  63. package/dist/dashboard/assets/{kaa-6HZHGXH3-Cwcw-Gjy.js → kaa-6HZHGXH3-CYGgpUSe.js} +1 -1
  64. package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-K6vT6Crh.js → kab-KAB-ZGHBKWFO-LMEkvoCj.js} +1 -1
  65. package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-BRnbjFyn.js → kanban-definition-6JOO6SKY-D1ijOIDj.js} +1 -1
  66. package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-CMu1AFuh.js → kk-KZ-P5N5QNE5-JIbh9_iv.js} +1 -1
  67. package/dist/dashboard/assets/{km-KH-HSX4SM5Z-L_PHDtZJ.js → km-KH-HSX4SM5Z-CrWx5kgt.js} +1 -1
  68. package/dist/dashboard/assets/{ko-KR-MTYHY66A-bbZlnVhP.js → ko-KR-MTYHY66A-BQFjXlBC.js} +1 -1
  69. package/dist/dashboard/assets/{ku-TR-6OUDTVRD-INvmaG95.js → ku-TR-6OUDTVRD-B6u43c-f.js} +1 -1
  70. package/dist/dashboard/assets/{layout-BVeohT_Z.js → layout-CVIUlzFz.js} +1 -1
  71. package/dist/dashboard/assets/{linear-CK10qcFf.js → linear-TmytBUBH.js} +1 -1
  72. package/dist/dashboard/assets/{lt-LT-XHIRWOB4-D7BRQxtO.js → lt-LT-XHIRWOB4-b8AKF48V.js} +1 -1
  73. package/dist/dashboard/assets/{lv-LV-5QDEKY6T-Ck1JIxzf.js → lv-LV-5QDEKY6T-CRt75m7a.js} +1 -1
  74. package/dist/dashboard/assets/{min-BEPU0Hcm.js → min-CMOJsVTV.js} +1 -1
  75. package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-CVF8OPn3.js → mindmap-definition-QFDTVHPH-DkzlAkBW.js} +1 -1
  76. package/dist/dashboard/assets/{mr-IN-CRQNXWMA-Xa1Wim8s.js → mr-IN-CRQNXWMA-Bw3MaxMe.js} +1 -1
  77. package/dist/dashboard/assets/{my-MM-5M5IBNSE-BjkcPsy7.js → my-MM-5M5IBNSE-Dw_tWZWl.js} +1 -1
  78. package/dist/dashboard/assets/{nb-NO-T6EIAALU-BEEKgrVR.js → nb-NO-T6EIAALU-Ci_2058Y.js} +1 -1
  79. package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-D9OUhxw4.js → nl-NL-IS3SIHDZ-DYyqePg6.js} +1 -1
  80. package/dist/dashboard/assets/{nn-NO-6E72VCQL-DVR3J-3K.js → nn-NO-6E72VCQL-NdjykAxN.js} +1 -1
  81. package/dist/dashboard/assets/{oc-FR-POXYY2M6-DC9Nung3.js → oc-FR-POXYY2M6-DPEyc6hx.js} +1 -1
  82. package/dist/dashboard/assets/{pa-IN-N4M65BXN-OAnX4pD0.js → pa-IN-N4M65BXN-D_4V8i72.js} +1 -1
  83. package/dist/dashboard/assets/{percentages-BXMCSKIN-oaYJtiEf.js → percentages-BXMCSKIN-4Hgy5SgQ.js} +31 -31
  84. package/dist/dashboard/assets/{pica-C6ShZVuu.js → pica-D6rAZEqu.js} +1 -1
  85. package/dist/dashboard/assets/{pieDiagram-DEJITSTG-DiVJdP1C.js → pieDiagram-DEJITSTG-BqsalDEv.js} +1 -1
  86. package/dist/dashboard/assets/{pl-PL-T2D74RX3-J_DzzF6i.js → pl-PL-T2D74RX3-CArl0OSe.js} +1 -1
  87. package/dist/dashboard/assets/{pt-BR-5N22H2LF-CyKqBQxo.js → pt-BR-5N22H2LF-BlA9u7zY.js} +1 -1
  88. package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-Bgz_pc0Y.js → pt-PT-UZXXM6DQ-ByCcYKU2.js} +1 -1
  89. package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-DnxB-MO_.js → quadrantDiagram-34T5L4WZ-BtnExwNB.js} +1 -1
  90. package/dist/dashboard/assets/{requirementDiagram-MS252O5E-BGbxrkf8.js → requirementDiagram-MS252O5E-jDWYOtpC.js} +1 -1
  91. package/dist/dashboard/assets/{ro-RO-JPDTUUEW-DieLjGOA.js → ro-RO-JPDTUUEW-CafHxA38.js} +1 -1
  92. package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-_l3ulIXF.js → ru-RU-B4JR7IUQ-BbJGwp-Z.js} +1 -1
  93. package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-C6Tb_y-j.js → sankeyDiagram-XADWPNL6-BSU4w3_8.js} +1 -1
  94. package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-wi9pOwW3.js → sequenceDiagram-FGHM5R23-DBHLScxa.js} +1 -1
  95. package/dist/dashboard/assets/{si-LK-N5RQ5JYF-BKKA5LJo.js → si-LK-N5RQ5JYF-eDB0s9B0.js} +1 -1
  96. package/dist/dashboard/assets/{sk-SK-C5VTKIMK-CD8v__My.js → sk-SK-C5VTKIMK-qaYN0zkE.js} +1 -1
  97. package/dist/dashboard/assets/{sl-SI-NN7IZMDC-BKlPPNwD.js → sl-SI-NN7IZMDC-BQ4pcyGF.js} +1 -1
  98. package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-CdkAZeqA.js → stateDiagram-FHFEXIEX-DqLkK6dC.js} +1 -1
  99. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-TpuacwBg.js +1 -0
  100. package/dist/dashboard/assets/{subset-shared.chunk-CGeJ-F5W.js → subset-shared.chunk-Hm_CkSQB.js} +1 -1
  101. package/dist/dashboard/assets/{subset-worker.chunk-BlVR16kU.js → subset-worker.chunk-YczznLkp.js} +1 -1
  102. package/dist/dashboard/assets/{sv-SE-XGPEYMSR-C2gDWm3p.js → sv-SE-XGPEYMSR-DD7_8pqE.js} +1 -1
  103. package/dist/dashboard/assets/{ta-IN-2NMHFXQM-u7A0geQC.js → ta-IN-2NMHFXQM-Dd-RFvWz.js} +1 -1
  104. package/dist/dashboard/assets/{th-TH-HPSO5L25-fovs7iJ8.js → th-TH-HPSO5L25-C7x2tZrZ.js} +1 -1
  105. package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-GtnU7ybD.js → timeline-definition-GMOUNBTQ-DILCBtIX.js} +1 -1
  106. package/dist/dashboard/assets/{tr-TR-DEFEU3FU-C6fJP9sP.js → tr-TR-DEFEU3FU-BXDs1FJQ.js} +1 -1
  107. package/dist/dashboard/assets/{uk-UA-QMV73CPH-D_wHjU_A.js → uk-UA-QMV73CPH-Bp-yEHOn.js} +1 -1
  108. package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-BDFvLaix.js → vennDiagram-DHZGUBPP-CnQH3XJu.js} +1 -1
  109. package/dist/dashboard/assets/{vi-VN-M7AON7JQ-DifjZgdC.js → vi-VN-M7AON7JQ-DQOsitU7.js} +1 -1
  110. package/dist/dashboard/assets/{wardley-RL74JXVD-DI8xEOY7.js → wardley-RL74JXVD-FdX4RiE_.js} +1 -1
  111. package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-B3GFPGwx.js → wardleyDiagram-NUSXRM2D-CK4rbC5W.js} +1 -1
  112. package/dist/dashboard/assets/webviewWindow-BbG9Cr7f.js +1 -0
  113. package/dist/dashboard/assets/window-DmNpeJAL.js +1 -0
  114. package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-CfszNsQx.js → xychartDiagram-5P7HB3ND-B6UGr9Rl.js} +1 -1
  115. package/dist/dashboard/assets/{zh-CN-LNUGB5OW-DbrqBAD6.js → zh-CN-LNUGB5OW-BMYbdc2b.js} +1 -1
  116. package/dist/dashboard/assets/{zh-HK-E62DVLB3-1U0sxcfM.js → zh-HK-E62DVLB3-CCcVgqN7.js} +1 -1
  117. package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-B-B3RQ_b.js → zh-TW-RAJ6MFWO-C52SJlwU.js} +1 -1
  118. package/dist/dashboard/favicon.svg +14 -9
  119. package/dist/dashboard/index.html +5 -4
  120. package/dist/dashboard/logo.png +0 -0
  121. package/dist/index.js +6635 -935
  122. package/package.json +8 -2
  123. package/skill/SKILL.md +10 -9
  124. package/skill/references/cli-reference.md +4 -2
  125. package/skill/references/integrations.md +8 -3
  126. package/skill/references/knowledge-and-recall.md +8 -0
  127. package/skill/references/sleep.md +12 -12
  128. package/skill-deep-research/SKILL.md +179 -0
  129. package/dist/dashboard/assets/channel-Cm_3yJBQ.js +0 -1
  130. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-CN3Z7CiL.js +0 -1
  131. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-CN3Z7CiL.js +0 -1
  132. package/dist/dashboard/assets/clone-Cq5lwLPz.js +0 -1
  133. package/dist/dashboard/assets/index-BvNbWm56.js +0 -484
  134. package/dist/dashboard/assets/index-rpfoKwNa.css +0 -1
  135. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-fASGsrsv.js +0 -1
  136. package/dist/dashboard/assets/webviewWindow-Dlc9MvRw.js +0 -1
  137. package/dist/dashboard/assets/window-D0tFurhp.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dreamcontext",
3
- "version": "0.9.2",
3
+ "version": "0.10.2",
4
4
  "description": "dreamcontext — the persistent brain for your AI agents. Remembers what you built, knows how your project works.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -11,6 +11,7 @@
11
11
  "skill",
12
12
  "skill-initializer",
13
13
  "skill-curator",
14
+ "skill-deep-research",
14
15
  "skill-packs",
15
16
  "agents",
16
17
  "README.md",
@@ -51,14 +52,19 @@
51
52
  "commander": "^13.1.0",
52
53
  "fast-glob": "^3.3.3",
53
54
  "gray-matter": "^4.0.3",
54
- "nanoid": "^5.1.2"
55
+ "nanoid": "^5.1.2",
56
+ "ws": "^8.21.0"
55
57
  },
56
58
  "devDependencies": {
57
59
  "@playwright/test": "^1.60.0",
58
60
  "@types/node": "^22.13.4",
61
+ "@types/ws": "^8.18.1",
59
62
  "sharp": "^0.34.5",
60
63
  "tsup": "^8.4.0",
61
64
  "typescript": "^5.7.3",
62
65
  "vitest": "^3.0.6"
66
+ },
67
+ "optionalDependencies": {
68
+ "node-pty": "^1.1.0"
63
69
  }
64
70
  }
package/skill/SKILL.md CHANGED
@@ -196,7 +196,7 @@ When in doubt about a command or flag, open [cli-reference.md](references/cli-re
196
196
 
197
197
  10. **Use `dreamcontext-explore`, not `Explore`.** The default Explore agent is blocked via a PreToolUse hook. `dreamcontext-explore` checks curated context first, saving thousands of tokens.
198
198
 
199
- 11. **Tag before you create.** Before tagging a task/feature/knowledge, consult `dreamcontext taxonomy vocab` and reuse canonical faceted tags (`topic:recall`, `domain:security`) before inventing new ones. Fragmenting tags degrades recall.
199
+ 11. **Tag before you create.** Before tagging a task/feature/knowledge, consult `dreamcontext taxonomy vocab` and reuse canonical faceted tags (`topic:recall`, `domain:security`) before inventing new ones. Fragmenting tags degrades recall. To heal accumulated drift in one shot, run `dreamcontext taxonomy audit --fix` (bulk-normalizes alias/normalizable tags to canonical across the corpus — safe, idempotent, `--dry-run` to preview; orphans are reported, never guessed).
200
200
 
201
201
  12. **Be surgical.** Only touch what changed. ~150-line soft limit on context files — extract detail to knowledge, keep a summary + reference. LIFO inserts go at the top (CHANGELOG, task changelog, constraint sections).
202
202
 
@@ -240,15 +240,15 @@ Sleep debt accumulates automatically via hooks (per Write/Edit). The SessionStar
240
240
 
241
241
  | Debt | Level | Required behavior |
242
242
  |------|-------|-------------------|
243
- | 0–3 | Alert | No action |
244
- | 46 | Drowsy | After completing a task, **inform the user and offer** consolidation |
245
- | 79 | Sleepy | At session start, **inform the user and recommend** consolidation before new work |
246
- | 10+ | Must sleep | **Consolidate now**, before or right after the current task |
243
+ | 0–7 | Alert | No action |
244
+ | 813 | Drowsy | After completing a task, **inform the user and offer** consolidation |
245
+ | 1419 | Sleepy | At session start, **inform the user and recommend** consolidation before new work |
246
+ | 20+ | Must sleep | **Consolidate now**, before or right after the current task |
247
247
 
248
- A ★★★ bookmark or 3+ sessions since last sleep also triggers an advisory.
248
+ A ★★★ bookmark or 5+ sessions since last sleep also triggers an advisory.
249
249
 
250
- **Post-task check (MANDATORY):** after completing any task or major implementation, check debt. If ≥4, tell the user: *"Sleep debt is [N]. I can consolidate now to preserve this work. Want me to run it?"* Never silently finish.
251
- **Auto-sleep (act without asking):** task completed with debt ≥7, or major implementation finished with debt ≥4.
250
+ **Post-task check (MANDATORY):** after completing any task or major implementation, check debt. If ≥8, tell the user: *"Sleep debt is [N]. I can consolidate now to preserve this work. Want me to run it?"* Never silently finish.
251
+ **Auto-sleep (act without asking):** task completed with debt ≥14, or major implementation finished with debt ≥8.
252
252
 
253
253
  **The flow (main agent runs this directly — sub-agents can't reliably fan out):**
254
254
  1. Tell the user you're consolidating.
@@ -301,7 +301,8 @@ Status: `todo → in_progress → in_review → completed`. Sections: `why`, `us
301
301
 
302
302
  ## Sub-Agents
303
303
 
304
- - **`dreamcontext-explore`** — context-accelerated codebase exploration. Use for ALL exploration (default Explore is blocked). Uses the SubagentStart briefing to narrow searches.
304
+ - **`dreamcontext-explore`** — context-accelerated codebase exploration. Use for ALL exploration (default Explore is blocked). Uses the SubagentStart briefing to narrow searches. It is the **fast, single-pass** searcher — one agent, tight budget, one answer.
305
+ - **`dreamcontext-deep-research` skill** — the **iterative, sub-agent-driven corpus-synthesis** orchestrator: the heavy counterpart to `dreamcontext-explore`. Invoke it via the `Skill` tool (or `/dreamcontext-deep-research`) when a question needs **synthesis across a large or multi-project / federated corpus** and one explore pass comes back thin or fragmented — "synthesize/reconcile everything we know about X across my vaults", "deep dive and cite it", "explore is too shallow for this". It fans out parallel `dreamcontext-explore` searchers over the whole curated corpus **and connected peer vaults**, adversarially verifies the load-bearing claims, and returns a **synthesized, cited** report — not raw hits. Read-only. **Escalation rule:** start with `dreamcontext-explore`; escalate to deep-research when one pass and one answer leave a cross-corpus question half-answered. Don't fan out a 10-agent research run at a tiny single-project brain.
305
306
  - **`initializer` skill** — the **interactive, sub-agent-driven brain bootstrap**. Invoke it via the `Skill` tool when this project has **no `_dream_context/`** or a **sparse** one (empty `knowledge/`, zero features, untouched template stubs). It orchestrates scout → confirm-hierarchy → progressive ingest → verify, migrating whatever material the user has into the proper knowledge/feature/task hierarchy. It drives its own sub-agents (`initializer-scout`, `initializer-ingestor`, `initializer-verifier`) and handles codebase-only repos too (a light scout + ingest pass) — there is no separate bootstrap agent.
306
307
  - **Sleep specialists** (`sleep-tasks`, `sleep-state`, `sleep-product`, `sleep-migration`) — dispatched by the main agent during the sleep flow only.
307
308
 
@@ -47,8 +47,9 @@ Every command and flag, grouped. All commands are prefixed with `dreamcontext`.
47
47
  | `tasks status <name> <todo\|in_progress\|in_review\|completed> [reason...]` | Change status (logs to changelog). On the first move to `in_progress`, stamps `start_date` with today if it is unset (a planned start is never overwritten). |
48
48
  | `tasks complete <name> [summary...]` | Mark completed (convenience). |
49
49
  | `tasks delete <name>` | Delete a task (propagates to remote backend on sync). `--yes`. |
50
- | `tasks doctor [name]` | Validate the Workflow flowchart is in sync with Acceptance Criteria (all tasks if name omitted). |
51
- | `tasks sync [push\|pull\|both]` | Sync with the remote backend (no-op on local). `--hook`, `--json`. |
50
+ | `tasks rename <name> <new-name>` | Rename a task: rewrites the name, moves the file to the new slug, and re-keys the sync mapping by the stable dcId so the **same** remote task/issue is updated on next sync never duplicated. Use this instead of hand-editing `name:` + renaming the file. |
51
+ | `tasks doctor [name]` | Validate the Workflow flowchart is in sync with Acceptance Criteria (all tasks if name omitted). `--remote` also checks the remote backend for assignee drift (needs a token). |
52
+ | `tasks sync [push\|pull\|both]` | Sync with the remote backend (no-op on local). `--hook`, `--reconcile` (heal pre-existing assignee drift below the watermark — #78), `--json`. |
52
53
  | `tasks members` | People with access to the remote list (assignee candidates). `--json`. |
53
54
  | `tasks provision` | Create recommended + override-declared custom fields on the remote backend (ClickUp list fields / GitHub labels). Reuses any that already exist by name. |
54
55
  | `tasks sync-hooks install\|uninstall` | Manage best-effort git sync triggers (post-commit, pre-push). |
@@ -142,6 +143,7 @@ See [sleep.md](sleep.md) for the full flow.
142
143
  |---|---|
143
144
  | `taxonomy vocab` | Show the resolved vocabulary (defaults + `core/taxonomy.json`). `--json`, `--facet <facet>`. |
144
145
  | `taxonomy audit` | Audit corpus tags against the vocabulary (read-only). `--json`. |
146
+ | `taxonomy audit --fix` | **Bulk-normalize** alias/normalizable tags → canonical faceted form across every knowledge/feature/task file. Safe + idempotent: already-canonical tags are untouched; orphan tags with no alias/canonical target are reported, never guessed. `--dry-run` previews the rewrite plan and writes nothing; `--json` for automation. Workflow is alias-then-fix: teach a mapping with `taxonomy alias`, then `audit --fix`. |
145
147
  | `taxonomy init` | Scaffold `core/taxonomy.json` (idempotent). |
146
148
  | `taxonomy add <tag>` | Add a tag to the vocabulary. |
147
149
  | `taxonomy alias <alias> <canonical>` | Add an alias→canonical mapping. |
@@ -115,16 +115,21 @@ dreamcontext dashboard --launcher # vault-agnostic launcher mode (resolves
115
115
  ```
116
116
  A SessionStart hook auto-opens it when a session starts and no server is running (opt out with `DREAMCONTEXT_AUTO_DASHBOARD=0`).
117
117
 
118
+ The sidebar is grouped into **Workspace** (Sleepy, Tasks, Council), **Memory** (Core, Knowledge, Features, Taxonomy), **Brain** (Map, Sleep Cycle), and **Control** (Packs, Settings), plus a "What is this?" page.
119
+
118
120
  **What's in it:**
119
- - **Kanban board** — drag-and-drop, multi-select filters (status/priority/urgency/tags/version, +assignee on a cloud backend) with type-ahead, sorting, grouping; Notion-style task detail panel to create tasks, change status, edit start/due dates and custom fields, add changelog entries. The **version filter is sprint-aware** current / planning / released sprints with set-current + mark-complete actions (backed by `state/.active-version.json`).
121
+ - **Sleepy** (Workspace) the dashboard's Search + Ask surface: a scoped recall widget that runs the same engine as the CLI (empty query = browse; typing = live debounced BM25; "Intelligent" = a Haiku intent pass), plus an in-app **interactive Claude Code** agent (multi-session tabs, split panes; desktop-gated, read-only by default). This is the dashboard twin of the desktop Sleepy notch.
122
+ - **Tasks board** — drag-and-drop Kanban with **saved views** (each carrying its own persisted filter/sort/grouping), a two-pane **include/exclude** filter (status/priority/tags/version/assignee) with type-ahead, a **Versions** popover, toggleable card **Properties** badges, and an **At-Risk alert**; view prefs persist shared (`overrides/board.json`) or local (`state/board.local.json`). Notion-style task detail panel to create tasks, change status, edit start/due dates and custom fields, add changelog entries. The **version filter is sprint-aware** — current / planning / released sprints with set-current + mark-complete actions (backed by `state/.active-version.json`).
120
123
  - **Eisenhower matrix** — priority×urgency quadrant planning; **Scatter view** uses RICE scores.
121
124
  - **Time-axis task views** — **Timeline (Gantt)** rendering each task's start→due range, a **Calendar**, and an **Activity heatmap** of completion cadence (all driven by the same `start_date`/`due_date` range).
122
125
  - **Core editor** — split-pane markdown editing + live preview for soul/user/memory/etc.
123
126
  - **Knowledge manager** — search, pin/unpin; **Feature PRD viewer**; **SQL ER diagram** preview for data-structures.
127
+ - **Taxonomy** (Memory) — view and edit the tag vocabulary (facets, aliases) from the UI; mirrors `dreamcontext taxonomy`.
128
+ - **Packs** (Control) — browse and install/refresh skill packs from the UI.
124
129
  - **Version manager** — plan and release versions.
125
130
  - **Settings — cloud tasks** — enter the ClickUp/GitHub API token from the UI (written to gitignored `state/.secrets.json`, masked, never echoed), Test Connection, and **preview-then-provision** custom fields (a dry run lists what would be created vs. already exists); plus a **Task Format & Custom Fields** editor for `overrides/task.md` (raw template + structured field schema).
126
- - **Sleep tracker** — debt gauge, session-history timeline, and a list of every manual change made through the dashboard (recorded to `.sleep.json` so the agent consolidates your edits during sleep).
127
- - **Brain graph** — interactive network of memory/knowledge/features/decisions with explicit + inferred edges.
131
+ - **Sleep Cycle** (sleep tracker) — debt gauge, session-history timeline, and a list of every manual change made through the dashboard (recorded to `.sleep.json` so the agent consolidates your edits during sleep).
132
+ - **Map** (brain graph) — interactive network of memory/knowledge/features/decisions with explicit + inferred edges.
128
133
  - **Council Hall** — every debate as a searchable card grid; detail view with Overview / Agents / Matrix tabs.
129
134
  - **"What is this?"** explainer page with live faculty diagrams.
130
135
 
@@ -102,6 +102,11 @@ Writes a CHANGELOG entry (`type=note`, `scope=quick`); the sleep cycle reconcile
102
102
  - BM25 is keyword/stemming-based, not semantic — "ML practitioner" won't match "data scientist" (haiku mode mitigates this).
103
103
  - Recall does **not** replace the SessionStart snapshot (soul/user/memory/active-tasks/knowledge-index are always pre-loaded). It is not a vector DB or mem0; the corpus is the same set the sleep agents curate.
104
104
 
105
+ ### Two depths of search: explore vs deep-research
106
+ Recall feeds two read surfaces — pick by how much synthesis the question needs:
107
+ - **`dreamcontext-explore`** (fast, single-pass): one sub-agent, recall-then-grep, one answer. Use for "where is X?" / "how does Y work?" on one project. This is the default and handles the vast majority of lookups.
108
+ - **`dreamcontext-deep-research` skill** (iterative, multi-agent): when a question needs **synthesis across a large or multi-project / federated corpus** and one explore pass comes back thin. The main agent decomposes the question, fans out parallel `dreamcontext-explore` searchers across the corpus **and connected peer vaults**, loops to close gaps, **adversarially verifies** the load-bearing claims, then writes a **synthesized, cited** report. Invoke via `/dreamcontext-deep-research`. **Escalation rule:** start with explore; escalate only when one pass and one answer leave a cross-corpus question half-answered. It is read-only — synthesis, not mutation.
109
+
105
110
  ---
106
111
 
107
112
  ## Root-cause analysis pattern
@@ -123,12 +128,15 @@ Consistent tags make recall sharp; fragmented near-duplicate tags degrade it. Be
123
128
  dreamcontext taxonomy vocab [--facet <facet>] [--json] # resolved vocabulary (defaults + core/taxonomy.json)
124
129
  dreamcontext taxonomy resolve <tag> # normalized form, classification, canonical
125
130
  dreamcontext taxonomy audit [--json] # surface non-canonical / orphan tags (read-only)
131
+ dreamcontext taxonomy audit --fix [--dry-run] [--json] # BULK-normalize alias/normalizable tags → canonical
126
132
  dreamcontext taxonomy init # scaffold core/taxonomy.json (idempotent)
127
133
  dreamcontext taxonomy add <facet:value> # add a new vocabulary tag
128
134
  dreamcontext taxonomy alias <alias> <canonical> # merge a shorthand into a canonical tag
129
135
  ```
130
136
  Standard bare tags: `architecture`, `api`, `frontend`, `backend`, `database`, `devops`, `security`, `testing`, `design`, `decisions`, `onboarding`, `domain`. **Never hand-edit `core/taxonomy.json`** — mutate via the CLI. `sleep-product` runs taxonomy maintenance during consolidation.
131
137
 
138
+ **Bulk-healing tag drift (`audit --fix`).** `taxonomy audit` only *reports* drift; `taxonomy audit --fix` *fixes* it in one shot across every knowledge/feature/task file. For each frontmatter tag it computes `normalizeTag → resolveAlias`; if that yields a **different tag that is canonical** in the vocabulary it rewrites it (e.g. `search → topic:recall`, `excalidraw → topic:excalidraw` once you've added that alias, `Architecture → architecture`). It is **safe by construction**: already-canonical tags are never touched (so `decisions` is not churned to `decision`), and orphan tags with no alias/canonical target are left untouched and reported as *"needs a vocab decision"* — resolve those first with `taxonomy add`/`taxonomy alias`, then re-run. The workflow is **alias-then-fix**: `taxonomy alias <orphan> <canonical>` teaches the mapping once, `audit --fix` applies it everywhere. Preview with `--fix --dry-run` (writes nothing), apply with `--fix`, automate with `--fix --json`. Idempotent — a second run is a no-op.
139
+
132
140
  ---
133
141
 
134
142
  ## Excalidraw boards (diagrams)
@@ -8,21 +8,21 @@ Sleep debt accumulates automatically via hooks (per Write/Edit tool use). Hooks
8
8
 
9
9
  | Debt | Level | Per-change score | Required behavior |
10
10
  |------|-------|------------------|-------------------|
11
- | 0–3 | Alert | 1–3 changes → +1 | No action |
12
- | 46 | Drowsy | 4–8 changes → +2 | After completing a task: **inform user + offer** consolidation |
13
- | 79 | Sleepy | 9+ changes → +3 | At session start: **inform user + recommend** consolidation before new work |
14
- | 10+ | Must sleep | — | **Consolidate immediately**, before or right after the current task |
11
+ | 0–7 | Alert | 1–3 changes → +1 | No action |
12
+ | 813 | Drowsy | 4–8 changes → +2 | After completing a task: **inform user + offer** consolidation |
13
+ | 1419 | Sleepy | 9+ changes → +3 | At session start: **inform user + recommend** consolidation before new work |
14
+ | 20+ | Must sleep | — | **Consolidate immediately**, before or right after the current task |
15
15
 
16
- Also triggers an advisory: a **★★★ bookmark** exists (regardless of debt), or **3+ sessions** since last sleep.
16
+ Also triggers an advisory: a **★★★ bookmark** exists (regardless of debt), or **5+ sessions** since last sleep.
17
17
 
18
- Injected directives (SessionStart + every user message via UserPromptSubmit when debt ≥4):
19
- - Debt ≥10 → "CONSOLIDATION REQUIRED"
20
- - Debt ≥7 → "CONSOLIDATION RECOMMENDED"
21
- - Debt ≥4 → offer after the current task
18
+ Injected directives (SessionStart + every user message via UserPromptSubmit when debt ≥8):
19
+ - Debt ≥20 → "CONSOLIDATION REQUIRED"
20
+ - Debt ≥14 → "CONSOLIDATION RECOMMENDED"
21
+ - Debt ≥8 → offer after the current task
22
22
 
23
- **MANDATORY post-task check:** after any task/major implementation, if debt ≥4 tell the user: *"Sleep debt is [N]. I can consolidate now to preserve this work. Want me to run it?"* Never silently finish.
24
- **Auto-sleep (act without asking):** task completed with debt ≥7; major implementation finished with debt ≥4.
25
- **Ask first:** debt 46 after a task; accumulated small changes; user wrapping up.
23
+ **MANDATORY post-task check:** after any task/major implementation, if debt ≥8 tell the user: *"Sleep debt is [N]. I can consolidate now to preserve this work. Want me to run it?"* Never silently finish.
24
+ **Auto-sleep (act without asking):** task completed with debt ≥14; major implementation finished with debt ≥8.
25
+ **Ask first:** debt 813 after a task; accumulated small changes; user wrapping up.
26
26
 
27
27
  For non-file-change work (architecture discussion, a decision with no edits): `dreamcontext sleep add <score> "<reason>"`.
28
28
 
@@ -0,0 +1,179 @@
1
+ ---
2
+ name: dreamcontext-deep-research
3
+ description: >
4
+ Load when a question needs synthesis across a LARGE or MULTI-PROJECT dreamcontext corpus —
5
+ more than `dreamcontext-explore` can answer in a single fast pass — or the user invokes
6
+ `/dreamcontext-deep-research`. Triggers: "deep research the brain", "research this across my
7
+ projects", "synthesize what we know about X across everything", "deep dive across the
8
+ connected vaults", "explore is too shallow for this", "pull together everything on X and
9
+ cite it", "cross-project / cross-corpus question", or any "tons of data, federated/tagged
10
+ vault" question where one explore agent and one answer under-serves. This is the heavy,
11
+ iterative, sub-agent-driven counterpart to `dreamcontext-explore`: it fans out searchers over
12
+ the whole curated corpus (knowledge + features + tasks + memory + CHANGELOG) AND connected
13
+ peer vaults, adversarially verifies the load-bearing claims, and returns a SYNTHESIZED, CITED
14
+ report — not raw hits.
15
+ user-invocable: true
16
+ alwaysApply: false
17
+ tags: [deep-research, recall, synthesis, federation, cross-project, orchestration, sub-agents, dreamcontext]
18
+ ---
19
+
20
+ # Deep Research — iterative, sub-agent-driven corpus synthesis
21
+
22
+ You are the **orchestrator**. Like `curator`, `initializer`, `multi-review`, and `council`,
23
+ **you do not do the bulk of the searching yourself** — you decompose the question, fan out
24
+ `dreamcontext-explore` searchers in parallel, read their cited findings, loop to close gaps,
25
+ adversarially verify the claims that matter, and then **you** write the synthesized report. Your
26
+ value is the decomposition, the gap loop, the verification gate, and the final synthesis — not
27
+ running every `recall` and `grep` by hand.
28
+
29
+ **Why this exists, vs `dreamcontext-explore`.** Explore is tuned for **speed and a single
30
+ answer**: one Haiku agent, a tight tool-call budget, recall-then-grep, return the best hit. That
31
+ is the right tool for "where is X?" / "how does Y work?" on one project. It **under-serves** the
32
+ question that needs *synthesis across many files and many projects*: "what have we decided about
33
+ recall across all my vaults?", "reconcile everything we know about federation", "pull the whole
34
+ history of how the sleep cycle evolved and cite it". For those, a single fast pass returns a
35
+ fragment and stops. Deep research is the escalation: **iterative fan-out → verify → synthesize a
36
+ cited answer**.
37
+
38
+ | | `dreamcontext-explore` | `dreamcontext-deep-research` (this) |
39
+ |---|---|---|
40
+ | Shape | one sub-agent, one pass | main agent orchestrates many searchers + verifiers, looped |
41
+ | Budget | tight (1–20 tool calls) | scaled to the corpus; multiple waves |
42
+ | Scope | one project, narrow | whole corpus + **connected peer vaults** |
43
+ | Output | the best hit, fast | a **synthesized, cited** report reconciling sources |
44
+ | Verify | none | adversarial pass on load-bearing claims |
45
+ | Use when | "where / how is X?" | "synthesize / reconcile / research X across everything" |
46
+
47
+ **It is read-only.** Deep research never mutates the corpus. It may *recommend* capturing a
48
+ finding (a knowledge file, a feedback item) at the end — but only with the user's say-so, via the
49
+ normal CLI. It is not a writer.
50
+
51
+ **Recall is the engine; the corpus index + peer connections are the substrate.** Every wave starts
52
+ from `dreamcontext memory recall` (BM25 + Haiku intent extraction over the curated corpus), which
53
+ already spans readable peers and namespaces cross-vault hits `<vault>::<type>/<slug>`. You are not
54
+ grepping a blind filesystem — you are mining a pre-indexed, cross-project brain.
55
+
56
+ ## When to invoke
57
+
58
+ - `/dreamcontext-deep-research` (primary entry).
59
+ - A `dreamcontext-explore` pass came back thin, fragmented, or "found a piece but not the whole
60
+ picture", and the real question spans many files.
61
+ - The question is explicitly **cross-project / federated**: "across my vaults", "everything we
62
+ know about X", "reconcile what project A and project B decided".
63
+ - "Synthesize", "reconcile", "pull together and cite", "deep dive", "research" over the brain.
64
+
65
+ **Scale the machinery to the corpus.** A small single-project brain rarely needs this — say so and
66
+ just run one `dreamcontext-explore`. Reserve the full fan-out for a genuinely large or multi-project
67
+ tagged corpus where one agent and one answer leave the question half-answered.
68
+
69
+ ## Commitment ritual (do this FIRST)
70
+
71
+ 1. **Announce**: tell the user you're running deep research — that it fans out read-only searchers
72
+ across the whole corpus and any connected peer vaults, verifies the key claims, and ends in a
73
+ cited synthesis. Confirm the question and its scope (which vaults, which time range if any).
74
+ 2. **TodoWrite** the phases (1–6) so the gates are visible. A phase isn't done until its gate passes.
75
+ 3. **Sharpen the question.** If it's underspecified ("research recall"), narrow it with the user
76
+ first (recall *precision*? recall *architecture*? across *which* projects?) — a vague question
77
+ fans out into vague reports. One or two clarifying questions beat a 10-agent wild goose chase.
78
+
79
+ ## The flow (the main agent runs this directly — sub-agents can't nest)
80
+
81
+ In this harness a sub-agent cannot dispatch sub-agents, so **you** own the loop and the fan-out —
82
+ exactly like the sleep cycle. `dreamcontext-explore` is your searcher *and* your verifier; you are
83
+ the planner and the synthesizer.
84
+
85
+ ### Phase 1 — Scope & seed (recall-driven)
86
+
87
+ - Establish the corpus surface: read the **Connected projects** section of the snapshot, or run
88
+ `dreamcontext connections list` / `dreamcontext vaults list`. Decide the span:
89
+ - current vault only → recall as-is (already spans eligible peers by default),
90
+ - specific peers → `--vault <name>` (repeatable),
91
+ - everything readable → `--connected` (out/both peers) or `--all-vaults`.
92
+ - **Seed with recall, in JSON, scoped by type:**
93
+ ```bash
94
+ dreamcontext memory recall "<facet>" --json --top 15 --types knowledge,feature,task,memory,changelog --connected
95
+ ```
96
+ Run it for **2–4 different phrasings/facets** of the question — recall is cheap (<100ms, zero
97
+ token overhead) and different keywords surface different docs. Collect the union of hits.
98
+ - **Decompose** the question into 3–6 sub-questions / facets / per-project slices. This decomposition
99
+ is the fan-out plan. Write it into the Todo.
100
+
101
+ ### Phase 2 — Fan-out search (parallel `dreamcontext-explore`)
102
+
103
+ - Dispatch **one `dreamcontext-explore` per sub-question / corpus slice / project, in parallel**
104
+ (one message, multiple `Agent` calls). Each searcher gets:
105
+ - its narrow sub-question,
106
+ - the seed hits relevant to it (file paths / `<vault>::<slug>` from Phase 1 — so it doesn't
107
+ re-discover them),
108
+ - an explicit instruction: **return findings WITH citations** (absolute path or
109
+ `<vault>::<type>/<slug>`), and flag anything that looks contradictory or stale.
110
+ - Searchers are read-only and recall-first by design — that's the whole point of using them. Scope a
111
+ searcher to a peer when a specific sibling project owns that slice (it can `recall --vault`,
112
+ `snapshot --vault`, or read the peer's files directly).
113
+
114
+ ### Phase 3 — Gap loop (loop-until-dry)
115
+
116
+ - Read every searcher's report. Build a running map: **claim → source(s)**.
117
+ - Identify **gaps** (a facet nobody answered), **contradictions** (two sources disagree), and
118
+ **dangling references** (a doc cites another you haven't read). Dispatch a **second wave** of
119
+ `dreamcontext-explore` aimed only at those.
120
+ - Stop when a wave returns nothing materially new (two dry waves) or the picture is complete enough
121
+ to answer. **Log what you chose not to chase** — silent truncation reads as "covered everything".
122
+
123
+ ### Phase 4 — Adversarial verification (the gate)
124
+
125
+ - For each **load-bearing claim** (the ones the answer actually rests on), dispatch a
126
+ `dreamcontext-explore` **verifier** whose job is to *check the claim against its cited source* —
127
+ open the file, confirm the source says what the claim says, and look for a more recent doc that
128
+ supersedes it. Default to **"unverified"** when the source doesn't actually support the claim.
129
+ - Drop or downgrade claims that don't survive. A plausible-but-uncited assertion does not enter the
130
+ report. This is what separates deep research from a confident hallucination.
131
+
132
+ ### Phase 5 — Synthesize (you write this — not a sub-agent)
133
+
134
+ - **You** write the report from the verified claim→source map. It must be a *synthesis*, not a
135
+ concatenation of searcher outputs:
136
+ - **Answer** — the reconciled conclusion, organized by the question's structure.
137
+ - **Every claim carries a citation** — absolute path or `<vault>::<type>/<slug>`. No citation ⇒
138
+ it doesn't go in (or it's explicitly marked as inference).
139
+ - **Cross-project provenance** — when projects agree, say so; when they diverge, surface the
140
+ divergence with both sources rather than silently picking one.
141
+ - **Contradictions & open questions** — name them; don't paper over them.
142
+ - **Confidence** — note where evidence is thin or a source looked stale.
143
+
144
+ ### Phase 6 — Persist (optional, only on consent)
145
+
146
+ - If durable findings emerged ("we actually decided X across A and B" / "these three docs are
147
+ near-duplicates"), **offer** to capture them — a `dreamcontext knowledge create`, or a
148
+ `dreamcontext feedback` if deep research exposed a recall/structure gap. Never auto-write; the
149
+ user confirms. Deep research is a reader.
150
+
151
+ ## Output contract
152
+
153
+ A **synthesized, cited report** — never a raw hit dump. The minimum bar:
154
+ - Citations are **mandatory** for every load-bearing claim (path or `<vault>::<type>/<slug>`).
155
+ - Cross-vault hits are first-class, not noise — provenance is the point on a multi-project corpus.
156
+ - Contradictions and gaps are surfaced, not hidden.
157
+ - Any coverage you deliberately capped is stated.
158
+
159
+ ## Boundaries
160
+
161
+ - **Read-only.** No writes except the optional, consent-gated Phase 6 capture via the normal CLI.
162
+ - **Reuse `dreamcontext-explore`.** Don't reinvent a searcher — it's the tested, recall-accelerated,
163
+ read-only explorer. This skill is the *orchestration* around it.
164
+ - **Stay in the decisions/knowledge lane.** For raw code *structure* ("who calls this function?")
165
+ the code-graph lane (graphify) owns it — deep research synthesizes curated decisions/knowledge, it
166
+ is not an AST indexer.
167
+ - **Scale to the corpus.** Don't fan out 10 agents at a 12-file single-project brain. Match the
168
+ machinery to the data.
169
+
170
+ ## Relationship to the rest of dreamcontext
171
+
172
+ - **vs `dreamcontext-explore`** — explore is the fast single-pass searcher; this is the iterative
173
+ multi-agent synthesizer that *uses* explore. Escalate from explore → deep-research when one pass
174
+ and one answer leave a cross-corpus question half-answered.
175
+ - **vs `sleep`** — sleep *writes* (consolidates experience into memory); deep research *reads*
176
+ (synthesizes existing memory into an answer). Same fan-out shape, opposite direction.
177
+ - **vs `curator`** — curator refactors the corpus's *shape*; deep research mines its *content*.
178
+ - **vs the generic `deep-research` web skill** — that one researches the open web; this one researches
179
+ *your brain* (the curated corpus + connected vaults). Same harness shape, different substrate.
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./index-BvNbWm56.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-_7FEisTX.js";import{_ as i}from"./index-BvNbWm56.js";import"./chunk-FMBD7UC4-PlFeuiZ_.js";import"./chunk-YZCP3GAM-DGLXUzMF.js";import"./chunk-55IACEB6-Cz4CusRM.js";import"./chunk-EDXVE4YY-C5yb7Q9H.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-_7FEisTX.js";import{_ as i}from"./index-BvNbWm56.js";import"./chunk-FMBD7UC4-PlFeuiZ_.js";import"./chunk-YZCP3GAM-DGLXUzMF.js";import"./chunk-55IACEB6-Cz4CusRM.js";import"./chunk-EDXVE4YY-C5yb7Q9H.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./graph-Dm-hvy_w.js";var e=4;function a(o){return r(o,e)}export{a as c};