dreamcontext 0.8.3 → 0.8.6
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.
- package/README.md +17 -13
- package/agents/dreamcontext-explore.md +7 -2
- package/agents/sleep-federation.md +28 -2
- package/agents/sleep-product.md +23 -0
- package/agents/sleep-tasks.md +31 -12
- package/dist/agents/dreamcontext-explore.md +7 -2
- package/dist/agents/sleep-federation.md +28 -2
- package/dist/agents/sleep-product.md +23 -0
- package/dist/agents/sleep-tasks.md +31 -12
- package/dist/dashboard/assets/{BrainCanvas3D-CoTzHqzT.js → BrainCanvas3D-CAB2im2F.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-BlQ6XWxs.js → _baseUniq-dsXhE6Mb.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-C4qyHe9L.js → ar-SA-G6X2FPQ2-BmAprFYu.js} +1 -1
- package/dist/dashboard/assets/{arc-uGukQNxI.js → arc-d9gHov8I.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-BhtWTFvf.js → architectureDiagram-Q4EWVU46-C58hXcUE.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-HfK2pIVQ.js → az-AZ-76LH7QW2-BDUks0et.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-L7TlhXli.js → bg-BG-XCXSNQG7-Bdi-CLmM.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-BmPhQEp6.js → blockDiagram-DXYQGD6D-yJn6zNZG.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-DE0uNoU6.js → bn-BD-2XOGV67Q-THuskwuf.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-DtQKYrmP.js → c4Diagram-AHTNJAMY-fGKTGH97.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-7JHCTA6b.js → ca-ES-6MX7JW3Y-CWrsv8xQ.js} +1 -1
- package/dist/dashboard/assets/channel-Do_JtUNy.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-BvnLY9qE.js → chunk-4BX2VUAB-ZCQicbHU.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK--piiFXgS.js → chunk-4TB4RGXK-DGTUpfCU.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-C7uvmawY.js → chunk-55IACEB6-BnK0E2R4.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY-BuWBKOPY.js → chunk-EDXVE4YY-B3YEC9QU.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-C1Le6hxh.js → chunk-FMBD7UC4-DIteC6lG.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-B8JE8Wz4.js → chunk-OYMX7WX6-DC84qLFn.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-U9FJi59p.js → chunk-QZHKN3VN-Uc2Uvh7x.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-BNc94uy1.js → chunk-YZCP3GAM--p-GHUD7.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-Dj8SIYaT.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-Dj8SIYaT.js +1 -0
- package/dist/dashboard/assets/clone-BpmzOucO.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-D0hUzBCj.js → cose-bilkent-S5V4N54A-DBBUVsxi.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-B0rWHDIi.js → cs-CZ-2BRQDIVT-B8STDI2F.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-D_PQO_T0.js → da-DK-5WZEPLOC-CWhAB8Gq.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-B_bjkEDQ.js → dagre-KV5264BT-BcS_NAij.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-D1G4J6Mz.js → de-DE-XR44H4JA-BULNBnuJ.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-B63uEoiS.js → diagram-5BDNPKRD-CmCCHnLC.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-DShdwm3D.js → diagram-G4DWMVQ6-Ba84raDA.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-DdVsHQ-l.js → diagram-MMDJMWI5-xNrgYgGq.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-BdHifyqU.js → diagram-TYMM5635-CMTfUaO1.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-a0CO4RfB.js → el-GR-BZB4AONW-DBD23y9B.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-CYxdxNcb.js → erDiagram-SMLLAGMA-BajnFM-6.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-ejRYVYRf.js → es-ES-U4NZUMDT-C71t6ojw.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-B-4OXJLd.js → eu-ES-A7QVB2H4-B_ttSuYR.js} +1 -1
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-DhOcLy7v.js → fa-IR-HGAKTJCU-Bq4zIqyT.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-CKQF9xKf.js → fi-FI-Z5N7JZ37-CsLCTzrZ.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-azQUtREP.js → flowDiagram-DWJPFMVM-CwfPSiA0.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-CsGekBXq.js → fr-FR-RHASNOE6-3XVH-KvN.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-DjXmGcb4.js → ganttDiagram-T4ZO3ILL-DttgldaZ.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-Dz87wo6e.js → gitGraphDiagram-UUTBAWPF-BD3bGHtr.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-NRfsjlmW.js → gl-ES-HMX3MZ6V-DROoNE8o.js} +1 -1
- package/dist/dashboard/assets/{graph-BMW3t-Jz.js → graph-CDuZp5IO.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-CK4gfEss.js → he-IL-6SHJWFNN-BqAkB-H9.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-CqyBl1jA.js → hi-IN-IWLTKZ5I-Bn1svlpD.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-BO0SthvO.js → hu-HU-A5ZG7DT2-BpbEcSt9.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-CrHxJe1s.js → id-ID-SAP4L64H-BFbKSomM.js} +1 -1
- package/dist/dashboard/assets/index-CgYfjFTP.css +1 -0
- package/dist/dashboard/assets/index-Di8SAJL6.js +480 -0
- package/dist/dashboard/assets/{index-B0pCDfL8.js → index-cIXUPF7a.js} +1 -1
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-zG-8q9HR.js → infoDiagram-42DDH7IO-CrGCfIaU.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-5OzPmL1c.js → ishikawaDiagram-UXIWVN3A-DdanP4Cg.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-CW6fpZrT.js → it-IT-JPQ66NNP-DElAu1GB.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-DMJRiMhd.js → ja-JP-DBVTYXUO-CX5hYCt6.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-f8lbDQ22.js → journeyDiagram-VCZTEJTY-BJYoD993.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-C4yr2X6j.js → kaa-6HZHGXH3-Dv86pOJk.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-BtwhZ5Ak.js → kab-KAB-ZGHBKWFO-BdVPAiBC.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-BJtF1llZ.js → kanban-definition-6JOO6SKY-BCtHyYn3.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-BiS5ISFw.js → kk-KZ-P5N5QNE5-rqy6kPw3.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-CJcAjj0D.js → km-KH-HSX4SM5Z-W6zLGjnE.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-yw6XRj7m.js → ko-KR-MTYHY66A-ACtkqDBa.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-nAwdHGyN.js → ku-TR-6OUDTVRD-D2MiKXrW.js} +1 -1
- package/dist/dashboard/assets/{layout-guqP2e-e.js → layout-G4fEkmiY.js} +1 -1
- package/dist/dashboard/assets/{linear-W2_Ct9N6.js → linear-B2IKexSz.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-D7h1NJrv.js → lt-LT-XHIRWOB4-BXUl6qoc.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-DJfUJgRc.js → lv-LV-5QDEKY6T-CbfqRExf.js} +1 -1
- package/dist/dashboard/assets/{min-BlLHklQU.js → min-CGs-EORe.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-Ch2AO4mc.js → mindmap-definition-QFDTVHPH-BG5rEg9o.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-BV3znx0p.js → mr-IN-CRQNXWMA-BDQS6spB.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-IjUN-e5U.js → my-MM-5M5IBNSE-slOXMPAS.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-MMsvbc2a.js → nb-NO-T6EIAALU-DsUSa36i.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-ByYTJGOK.js → nl-NL-IS3SIHDZ-Bmxt9uv4.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-Bgbgzvhm.js → nn-NO-6E72VCQL-B3EKWZ2E.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-BMBbvfQp.js → oc-FR-POXYY2M6-CQ95AKGA.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-CgcUC9Zd.js → pa-IN-N4M65BXN-DlOGvEPy.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-AuedyVVS.js → percentages-BXMCSKIN-Cghe4Ak9.js} +7 -7
- package/dist/dashboard/assets/{pica-DxO5y0j_.js → pica-BElmNROA.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-q-J8tI3B.js → pieDiagram-DEJITSTG-CM8vpcY4.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-BaZSYTKJ.js → pl-PL-T2D74RX3-ia8QfWiE.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-DSPF7aLm.js → pt-BR-5N22H2LF-Dk0_mzTj.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-aoPTHC3m.js → pt-PT-UZXXM6DQ-DVhHd3sQ.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-CGbfFson.js → quadrantDiagram-34T5L4WZ-DHK8pFQ0.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-ThxVmoCe.js → requirementDiagram-MS252O5E-O5-02BwJ.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-YfCwiIS2.js → ro-RO-JPDTUUEW-BnsPiMQX.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-zIVsVhsz.js → ru-RU-B4JR7IUQ-DGg0hVo9.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-BvEv917s.js → sankeyDiagram-XADWPNL6-CWTRPjWg.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-JrhjN3MG.js → sequenceDiagram-FGHM5R23-DgPVR3Bj.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-CegSAwip.js → si-LK-N5RQ5JYF-tYLdyZ7v.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-C_K-Uoai.js → sk-SK-C5VTKIMK-1xA3G05_.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC-DHGXOoZl.js → sl-SI-NN7IZMDC-DhfNsg9e.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-BzOtZESp.js → stateDiagram-FHFEXIEX-Bca5FGdM.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-DIY7ac6n.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-BWfXaC19.js → subset-shared.chunk-CGU8uh4H.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-DHcqLDUZ.js → subset-worker.chunk-y2R5BeoP.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-BoNob2y3.js → sv-SE-XGPEYMSR-DfzE39Ps.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-C8UHJYct.js → ta-IN-2NMHFXQM-D7LBIYw1.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-D7wP1iSi.js → th-TH-HPSO5L25-Cfm5Dm_a.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-Gwb0w7bX.js → timeline-definition-GMOUNBTQ-C-mJxmUk.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-He51QB-L.js → tr-TR-DEFEU3FU-m5lXhQtR.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-Blg5n9CR.js → uk-UA-QMV73CPH-CDhF3uD5.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-y2S0dZjp.js → vennDiagram-DHZGUBPP-EXa8McYU.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-2z-4xcM3.js → vi-VN-M7AON7JQ-C67Ii_Ev.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-BNThyuCt.js → wardley-RL74JXVD-auY9rf2s.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-Sljri5hz.js → wardleyDiagram-NUSXRM2D-B8qVq-Ss.js} +1 -1
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-BIFYd4_d.js → xychartDiagram-5P7HB3ND-DIfk5B6V.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-DZ8sfmlq.js → zh-CN-LNUGB5OW-8NshHSLl.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-Zvqwoloz.js → zh-HK-E62DVLB3-D22tHzlZ.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-Ck_uDtMQ.js → zh-TW-RAJ6MFWO-BllueYdk.js} +1 -1
- package/dist/dashboard/index.html +2 -2
- package/dist/index.js +3427 -3050
- package/dist/skill-packs/goal-skill/SKILL.md +8 -6
- package/package.json +1 -1
- package/skill/SKILL.md +34 -18
- package/skill-packs/goal-skill/SKILL.md +8 -6
- package/dist/dashboard/assets/channel-3OfE-PZ3.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-Dpt9qwZI.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-Dpt9qwZI.js +0 -1
- package/dist/dashboard/assets/clone-CZ-InUnR.js +0 -1
- package/dist/dashboard/assets/index-rIZLhbl7.js +0 -480
- package/dist/dashboard/assets/index-sax--nf3.css +0 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-CjcHIbj7.js +0 -1
|
@@ -64,7 +64,7 @@ flowchart TD
|
|
|
64
64
|
P5 -->|cap reached| ESC2[ESCALATE to user — do NOT proceed]
|
|
65
65
|
P5 -->|PASS| P6{Phase 6 — goal-validator runs the chosen method: PASS?}
|
|
66
66
|
P6 -->|FAIL| P4
|
|
67
|
-
P6 -->|PASS| DONE[Goal reached — task
|
|
67
|
+
P6 -->|PASS| DONE[Goal reached — validation passed, mark task completed + tell the user]
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### Phase 0 — Scope & validation method (ask the user)
|
|
@@ -143,9 +143,11 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
|
|
|
143
143
|
|
|
144
144
|
- **FAIL** → append the failure report to the task (`dreamcontext tasks log`), and route
|
|
145
145
|
**back to Phase 4** (IMPLEMENT). Loop IMPLEMENT → REVIEW → VALIDATE until validation PASSES.
|
|
146
|
-
- **PASS** → the goal is reached.
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
- **PASS** → the goal is reached. The user-chosen validation method *is* the definition of
|
|
147
|
+
done, and it passed with evidence — so close it: `dreamcontext tasks status <slug> completed
|
|
148
|
+
"all criteria met; validation passed via <method>"`, then **tell the user it's done** (what
|
|
149
|
+
shipped + the evidence). Only leave it in `in_review` instead if the validation surfaced
|
|
150
|
+
something a human should still eyeball before closing.
|
|
149
151
|
|
|
150
152
|
## Convergence rules (how the loops end)
|
|
151
153
|
|
|
@@ -166,7 +168,7 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
|
|
|
166
168
|
| "I'll let the implementer review its own work." | Self-review is not review. Use a clean-context `reviewer`. |
|
|
167
169
|
| "I'll skip asking the user how to validate, tests are obviously the way." | Phase 0 is non-negotiable. Validation criteria are the user's call. |
|
|
168
170
|
| "We've looped 4 times, but I think this next one fixes it." | Cap is 3. Escalate. The user decides whether to keep going. |
|
|
169
|
-
| "I'll
|
|
171
|
+
| "I'll mark it complete because I *think* it's done." | Done is defined by Phase 6 validation passing with evidence — not by your hunch. Complete only after PASS. |
|
|
170
172
|
|
|
171
173
|
## Rationalization table
|
|
172
174
|
|
|
@@ -182,7 +184,7 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
|
|
|
182
184
|
- **Orchestrator never writes production code.** Dispatch sub-agents.
|
|
183
185
|
- **Plan reviewers run in parallel**, in one message. Sequential dispatch defeats the design.
|
|
184
186
|
- **Never skip Phase 0's validation-method question.**
|
|
185
|
-
-
|
|
187
|
+
- **`complete` only after Phase 6 PASS** — validation passing with evidence is the definition of done; never complete on a hunch, and never before validation.
|
|
186
188
|
- **Tell `reviewer` to run `git diff` itself**; don't paste diffs into prompts.
|
|
187
189
|
- **Caps are hard** (3 per loop). At the cap, escalate — never declare done.
|
|
188
190
|
- **Use the `dreamcontext` skill** throughout — the task doc is the source of truth.
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -319,7 +319,7 @@ Sleep debt reminders are injected on every user message (via UserPromptSubmit ho
|
|
|
319
319
|
- user hint mentions knowledge or a feature
|
|
320
320
|
- When unsure, **over-fire** `sleep-product` — it no-ops cheaply.
|
|
321
321
|
- **Conditional fire**: `sleep-migration` when `dreamcontext migrations pending` produces output (pending agent migration tasks exist). Contract: no-content changes only (structure/paths/frontmatter/fences); writes ledger via `dreamcontext migrations record` on completion.
|
|
322
|
-
- **
|
|
322
|
+
- **Do NOT fire `sleep-federation`.** Federation is read-only (live reference); the copy-based drain/distribute path is disabled and parked on the roadmap. Sleep copies NOTHING across vault boundaries — peers are read live at recall time, not synced at sleep. (The `sleep-federation` specialist + `federation sync`/`drain` are retained but inert.)
|
|
323
323
|
- Pass each specialist a small text brief in its prompt: epoch, session IDs, active task slugs, planning version, signals relevant to that specialist, optional user hint. Do **not** include transcript content — specialists call `dreamcontext transcript distill <id>` themselves.
|
|
324
324
|
- **Consolidation discipline (remind both specialists in the brief):** prefer *updating/extending* an existing entity over creating a new one. `sleep-tasks` folds a smaller slice into the task that already covers it (broaden its title + insert sub-items) rather than forking a duplicate or a needless sub-task; `sleep-product` keeps similar verticals/brands/topics in the fewest knowledge files, splitting only on a sharp topical boundary that sharpens tags. Duplicate tasks and fragmented near-duplicate knowledge are the top consolidation failure modes — but genuinely separate concerns/topics still get their own task/file.
|
|
325
325
|
5. Wait for all specialist reports. Each returns a short structured report.
|
|
@@ -408,10 +408,10 @@ dreamcontext tasks insert <name> changelog "Implemented pagination for /api/task
|
|
|
408
408
|
# Lifecycle
|
|
409
409
|
dreamcontext tasks log <name> "what was done" # Quick changelog entry (MANDATORY)
|
|
410
410
|
dreamcontext tasks status <name> in_review "Ready for review" # Bump status (todo|in_progress|in_review|completed)
|
|
411
|
-
dreamcontext tasks complete <name> "summary" #
|
|
411
|
+
dreamcontext tasks complete <name> "summary" # Convenience for marking complete
|
|
412
412
|
```
|
|
413
413
|
|
|
414
|
-
**Status convention:** `todo` -> `in_progress` -> `in_review` -> `completed`. The sleep agent
|
|
414
|
+
**Status convention:** `todo` -> `in_progress` -> `in_review` -> `completed`. The sleep agent picks the status that matches reality — `completed` for work that's demonstrably done, low-risk, and already validated, and `in_review` only when a human genuinely must verify something (a behaviour change, a design decision, a risky/critical-path change). It does **not** reflexively park everything in `in_review`; finished work that needs no review is closed, so neither "task rotting in todo" nor "task rotting half-closed in in_review" happens.
|
|
415
415
|
|
|
416
416
|
Task insert sections: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technical_details`, `notes`, `changelog`
|
|
417
417
|
|
|
@@ -491,29 +491,45 @@ dreamcontext memory status
|
|
|
491
491
|
|
|
492
492
|
## Cross-Project Federation (issue #25)
|
|
493
493
|
|
|
494
|
-
Every `_dream_context/` is normally an island. Federation lets you reach across projects — recall what you worked out in *another* vault — using nothing but the local filesystem (no network, ever).
|
|
494
|
+
Every `_dream_context/` is normally an island. Federation lets you reach across projects — recall what you worked out in *another* vault — using nothing but the local filesystem (no network, ever).
|
|
495
|
+
|
|
496
|
+
**Ambient awareness — you start informed.** The session snapshot includes a `## Connected projects` section listing each readable peer with a one-line description and last activity. At session start you already know which sibling projects exist and roughly what's in them. For an up-to-date summary on demand:
|
|
495
497
|
|
|
496
498
|
```bash
|
|
497
|
-
dreamcontext
|
|
498
|
-
dreamcontext memory recall <query...> --vault <name> # also search a peer vault (repeatable)
|
|
499
|
-
dreamcontext memory recall <query...> --all-vaults # search current + every SHAREABLE registered vault
|
|
500
|
-
dreamcontext memory recall <query...> --connected # search current + out/both connections (degenerate=local until Phase 2)
|
|
501
|
-
dreamcontext snapshot --vault <name> # print a peer vault's context snapshot
|
|
502
|
-
dreamcontext config shareable on|off # opt this project IN/OUT of peer recall (default: off)
|
|
499
|
+
dreamcontext federation peers # compact summary: what each peer is, last activity, active task, top tags
|
|
503
500
|
```
|
|
504
501
|
|
|
505
|
-
**
|
|
502
|
+
**PULL — recall already spans peers.** Plain `memory recall` automatically searches readable peer vaults alongside the current one. No flag needed. You get up to 10 hits, vault-tagged `<vault>::<type>/<slug>` so provenance is always visible:
|
|
506
503
|
|
|
507
|
-
|
|
504
|
+
```bash
|
|
505
|
+
dreamcontext memory recall "<query>" # current vault + all eligible readable peers (default)
|
|
506
|
+
dreamcontext memory recall "<query>" --vault <name> # current + one named peer (repeatable)
|
|
507
|
+
dreamcontext memory recall "<query>" --connected # current + out/both connections
|
|
508
|
+
dreamcontext memory recall "<query>" --all-vaults # current + every shareable vault
|
|
509
|
+
```
|
|
508
510
|
|
|
509
|
-
|
|
511
|
+
Eligible = direction `out`/`both`, status not stale, AND the peer is `shareable: true`. If no eligible connections exist, recall is local-only (unchanged). A peer vault being `shareable` controls whether *others* may read it — it never blocks you from reading a shareable peer, and the current vault is always searched. Non-shareable peers are silently excluded (never an error). Cross-vault hits are namespaced `<vault>::<type>/<slug>` so the same slug in two vaults never collides.
|
|
510
512
|
|
|
511
|
-
|
|
513
|
+
Use `--vault <name>` when you know where the answer likely lives; the default span is the cheapest path when you don't.
|
|
512
514
|
|
|
513
|
-
|
|
514
|
-
2. **Distribute** (`dreamcontext federation sync`) — for each `out`/`both` connection, the sender reads the RECEIVER's `.connections.json` and writes ONLY if the receiver declares `in`/`both` back (the **consent rule**); it computes a recall-filtered digest since `last_synced_at`, writes one file per entry into the peer's inbox, and advances the watermark. Draining first means freshly-ingested peer knowledge is in the corpus when the outbound digest is computed — and is then EXCLUDED from it, because `federated: true` docs are dropped from BOTH digest computation AND cross-vault recall serving (the transitive-leak guard: a third vault never sees what merely passed through this one). Filename dedup + watermark + that exclusion make an A↔B cycle echo-free.
|
|
515
|
+
**Read-only — nothing is ever copied.** Federation is a *live reference*: a connected, shareable peer's CANONICAL docs are surfaced at recall time (PULL, above) and never written into your vault. Each vault stays the single source of truth for its own knowledge. There is no per-situation "when to read" rule — a connection is a standing "may read" agreement, resolved live by recall whenever it's relevant.
|
|
515
516
|
|
|
516
|
-
|
|
517
|
+
```bash
|
|
518
|
+
dreamcontext vaults discover [root] [--register] # find every _dream_context/ under a tree
|
|
519
|
+
dreamcontext connect <vault> --direction out [--topics a,b] # create a read edge (out = read)
|
|
520
|
+
dreamcontext connections list / disconnect <vault> # manage links
|
|
521
|
+
dreamcontext snapshot --vault <name> # print a peer vault's context snapshot
|
|
522
|
+
dreamcontext config shareable on|off # opt this project IN/OUT of peer recall (default: off)
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
**Copy-based sync is parked on the roadmap.** Earlier builds pushed a lossy, truncated *digest* of each vault into its peers at sleep (`federation sync`) and ingested it as `federated: true` copies (`federation drain`). That broke single-source-of-truth: copies were write-once, went stale the moment the source changed, and an edit produced duplicates + false conflict-notes. It is now **disabled** — `federation sync` / `federation drain` are inert no-ops, and the `sleep-federation` specialist is no longer dispatched. Re-introducing a copy/offline-mirror mode needs a proper design first (it's the one thing live read can't do: survive a peer going offline).
|
|
526
|
+
|
|
527
|
+
**Cleaning up old copies.** If a vault still holds `federated: true` knowledge files from the old sync path, remove them deliberately:
|
|
528
|
+
```bash
|
|
529
|
+
dreamcontext federation status # shows connections + any leftover federated copies
|
|
530
|
+
dreamcontext federation purge --all # remove every federated:true copy in this vault
|
|
531
|
+
dreamcontext federation purge --vault <name> # remove only copies that came from one peer
|
|
532
|
+
```
|
|
517
533
|
|
|
518
534
|
---
|
|
519
535
|
|
|
@@ -601,7 +617,7 @@ All commands prefixed with `dreamcontext`. For reading/searching, use native too
|
|
|
601
617
|
| `tasks rice <name> [--reach N] [--impact N] [--confidence N] [--effort N] [--clear]` | Print or update RICE values; no flags prints current values |
|
|
602
618
|
| `tasks insert <name> <section> <content>` | Insert into task section |
|
|
603
619
|
| `tasks status <name> <todo\|in_progress\|in_review\|completed> [reason...]` | Change task status (logs to changelog) |
|
|
604
|
-
| `tasks complete <name>` | Complete task (
|
|
620
|
+
| `tasks complete <name>` | Complete task (convenience for `tasks status <name> completed`) |
|
|
605
621
|
| `tasks log <name> <content>` | Log task progress |
|
|
606
622
|
| `bookmark add "<message>" [-s 1\|2\|3] [--task <slug>]` | Bookmark an important moment with optional task link |
|
|
607
623
|
| `bookmark list` | Show current bookmarks |
|
|
@@ -64,7 +64,7 @@ flowchart TD
|
|
|
64
64
|
P5 -->|cap reached| ESC2[ESCALATE to user — do NOT proceed]
|
|
65
65
|
P5 -->|PASS| P6{Phase 6 — goal-validator runs the chosen method: PASS?}
|
|
66
66
|
P6 -->|FAIL| P4
|
|
67
|
-
P6 -->|PASS| DONE[Goal reached — task
|
|
67
|
+
P6 -->|PASS| DONE[Goal reached — validation passed, mark task completed + tell the user]
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### Phase 0 — Scope & validation method (ask the user)
|
|
@@ -143,9 +143,11 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
|
|
|
143
143
|
|
|
144
144
|
- **FAIL** → append the failure report to the task (`dreamcontext tasks log`), and route
|
|
145
145
|
**back to Phase 4** (IMPLEMENT). Loop IMPLEMENT → REVIEW → VALIDATE until validation PASSES.
|
|
146
|
-
- **PASS** → the goal is reached.
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
- **PASS** → the goal is reached. The user-chosen validation method *is* the definition of
|
|
147
|
+
done, and it passed with evidence — so close it: `dreamcontext tasks status <slug> completed
|
|
148
|
+
"all criteria met; validation passed via <method>"`, then **tell the user it's done** (what
|
|
149
|
+
shipped + the evidence). Only leave it in `in_review` instead if the validation surfaced
|
|
150
|
+
something a human should still eyeball before closing.
|
|
149
151
|
|
|
150
152
|
## Convergence rules (how the loops end)
|
|
151
153
|
|
|
@@ -166,7 +168,7 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
|
|
|
166
168
|
| "I'll let the implementer review its own work." | Self-review is not review. Use a clean-context `reviewer`. |
|
|
167
169
|
| "I'll skip asking the user how to validate, tests are obviously the way." | Phase 0 is non-negotiable. Validation criteria are the user's call. |
|
|
168
170
|
| "We've looped 4 times, but I think this next one fixes it." | Cap is 3. Escalate. The user decides whether to keep going. |
|
|
169
|
-
| "I'll
|
|
171
|
+
| "I'll mark it complete because I *think* it's done." | Done is defined by Phase 6 validation passing with evidence — not by your hunch. Complete only after PASS. |
|
|
170
172
|
|
|
171
173
|
## Rationalization table
|
|
172
174
|
|
|
@@ -182,7 +184,7 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
|
|
|
182
184
|
- **Orchestrator never writes production code.** Dispatch sub-agents.
|
|
183
185
|
- **Plan reviewers run in parallel**, in one message. Sequential dispatch defeats the design.
|
|
184
186
|
- **Never skip Phase 0's validation-method question.**
|
|
185
|
-
-
|
|
187
|
+
- **`complete` only after Phase 6 PASS** — validation passing with evidence is the definition of done; never complete on a hunch, and never before validation.
|
|
186
188
|
- **Tell `reviewer` to run `git diff` itself**; don't paste diffs into prompts.
|
|
187
189
|
- **Caps are hard** (3 per loop). At the cap, escalate — never declare done.
|
|
188
190
|
- **Use the `dreamcontext` skill** throughout — the task doc is the source of truth.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aq as o,ar as n}from"./index-rIZLhbl7.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--piiFXgS.js";import{_ as i}from"./index-rIZLhbl7.js";import"./chunk-FMBD7UC4-C1Le6hxh.js";import"./chunk-YZCP3GAM-BNc94uy1.js";import"./chunk-55IACEB6-C7uvmawY.js";import"./chunk-EDXVE4YY-BuWBKOPY.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--piiFXgS.js";import{_ as i}from"./index-rIZLhbl7.js";import"./chunk-FMBD7UC4-C1Le6hxh.js";import"./chunk-YZCP3GAM-BNc94uy1.js";import"./chunk-55IACEB6-C7uvmawY.js";import"./chunk-EDXVE4YY-BuWBKOPY.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-BMW3t-Jz.js";var e=4;function a(o){return r(o,e)}export{a as c};
|