@smartmemory/compose 0.1.28-beta → 0.1.30-beta

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 (103) hide show
  1. package/README.md +1 -0
  2. package/bin/compose.js +27 -0
  3. package/contracts/goal-result.json +128 -0
  4. package/contracts/judge-result.json +152 -0
  5. package/contracts/review-result.json +2 -2
  6. package/contracts/task-result.json +60 -0
  7. package/contracts/taskgraph-gsd.json +94 -0
  8. package/dist/assets/App-CB0U2nlm.js +768 -0
  9. package/dist/assets/arc-Ib57etRP.js +1 -0
  10. package/dist/assets/architectureDiagram-3BPJPVTR-3N4ul7Lp.js +36 -0
  11. package/dist/assets/blockDiagram-GPEHLZMM-iPkpmFIG.js +132 -0
  12. package/dist/assets/{c4Diagram-AHTNJAMY-CqzLpnSp.js → c4Diagram-AAUBKEIU-BCKTL1Dk.js} +3 -3
  13. package/dist/assets/channel-Bd09RsPV.js +1 -0
  14. package/dist/assets/chunk-2J33WTMH-Daqe8HpE.js +1 -0
  15. package/dist/assets/{chunk-4BX2VUAB-D27n9FGy.js → chunk-4BX2VUAB-BjnNKI2i.js} +1 -1
  16. package/dist/assets/chunk-55IACEB6-DRsniyrS.js +1 -0
  17. package/dist/assets/chunk-727SXJPM-BiShnVey.js +206 -0
  18. package/dist/assets/chunk-AQP2D5EJ-Dd9CkPhT.js +231 -0
  19. package/dist/assets/{chunk-FMBD7UC4-B-C0Qn-h.js → chunk-FMBD7UC4-CrED-oPn.js} +1 -1
  20. package/dist/assets/chunk-ND2GUHAM-dk4lChMO.js +1 -0
  21. package/dist/assets/{chunk-QZHKN3VN-DV2v0Qii.js → chunk-QZHKN3VN-a1SBIOVJ.js} +1 -1
  22. package/dist/assets/classDiagram-4FO5ZUOK-D_vAH5lP.js +1 -0
  23. package/dist/assets/classDiagram-v2-Q7XG4LA2-D_vAH5lP.js +1 -0
  24. package/dist/assets/cose-bilkent-S5V4N54A-CXtbzn7R.js +1 -0
  25. package/dist/assets/dagre-BM42HDAG-By5-LlQC.js +4 -0
  26. package/dist/assets/{defaultLocale-DX6XiGOO.js → defaultLocale-CrowFXzY.js} +1 -1
  27. package/dist/assets/diagram-2AECGRRQ-BWFSnxuX.js +43 -0
  28. package/dist/assets/diagram-5GNKFQAL-DtyjjvQp.js +10 -0
  29. package/dist/assets/diagram-KO2AKTUF-D2Y15IJ0.js +3 -0
  30. package/dist/assets/diagram-LMA3HP47-CE-THjCD.js +24 -0
  31. package/dist/assets/diagram-OG6HWLK6-Blju-noD.js +24 -0
  32. package/dist/assets/{erDiagram-SMLLAGMA-B1zsRPqn.js → erDiagram-TEJ5UH35-DI6ayS27.js} +1 -1
  33. package/dist/assets/{flowDiagram-DWJPFMVM-AvlZ6pTE.js → flowDiagram-I6XJVG4X-BQf0uOzY.js} +4 -4
  34. package/dist/assets/ganttDiagram-6RSMTGT7-_upG_Ajl.js +292 -0
  35. package/dist/assets/gitGraphDiagram-PVQCEYII-5sVMQhO3.js +106 -0
  36. package/dist/assets/graph-BEmEBUp_.js +1 -0
  37. package/dist/assets/{graph-CfEl_ohV.js → graph-DPbJeZyN.js} +2 -2
  38. package/dist/assets/{index-CF7jc-By.js → index-DLF-s4tP.js} +3 -3
  39. package/dist/assets/infoDiagram-5YYISTIA-4Hpw9ky_.js +2 -0
  40. package/dist/assets/{ishikawaDiagram-UXIWVN3A-COnZHJuM.js → ishikawaDiagram-YF4QCWOH-CuHQNWRf.js} +5 -5
  41. package/dist/assets/{journeyDiagram-VCZTEJTY-Bsssj2jr.js → journeyDiagram-JHISSGLW-PFwOct4G.js} +1 -1
  42. package/dist/assets/{kanban-definition-6JOO6SKY-1o5Em0Ia.js → kanban-definition-UN3LZRKU-M70jtg2M.js} +7 -7
  43. package/dist/assets/katex-CQk2-UhE.js +257 -0
  44. package/dist/assets/layout-Bw0msyOw.js +1 -0
  45. package/dist/assets/linear-BkYLp90p.js +1 -0
  46. package/dist/assets/{mindmap-definition-QFDTVHPH-79V6zmXV.js → mindmap-definition-RKZ34NQL-1KQv07E1.js} +10 -10
  47. package/dist/assets/{mobile-BOyZ87uL.js → mobile-CsuriFuT.js} +3 -3
  48. package/dist/assets/pieDiagram-4H26LBE5-B8lh9yMA.js +30 -0
  49. package/dist/assets/quadrantDiagram-W4KKPZXB-DUPV_-qJ.js +7 -0
  50. package/dist/assets/{requirementDiagram-MS252O5E-9YEiDjlT.js → requirementDiagram-4Y6WPE33-ChYWhFld.js} +3 -3
  51. package/dist/assets/sankeyDiagram-5OEKKPKP-HsjvNkHR.js +40 -0
  52. package/dist/assets/sequenceDiagram-3UESZ5HK-CR5iTMTw.js +162 -0
  53. package/dist/assets/stateDiagram-AJRCARHV-BwMjQVHC.js +1 -0
  54. package/dist/assets/stateDiagram-v2-BHNVJYJU-X1hOVHVI.js +1 -0
  55. package/dist/assets/{timeline-definition-GMOUNBTQ-DGpUOjs3.js → timeline-definition-PNZ67QCA-BI88FufN.js} +3 -3
  56. package/dist/assets/vennDiagram-CIIHVFJN-BKg5ydB8.js +34 -0
  57. package/dist/assets/wardley-L42UT6IY-CtYx0E7z.js +173 -0
  58. package/dist/assets/wardleyDiagram-YWT4CUSO-CAColVNQ.js +78 -0
  59. package/dist/assets/{xychartDiagram-5P7HB3ND-C6hwimqo.js → xychartDiagram-2RQKCTM6-CJqak-xY.js} +4 -4
  60. package/dist/index.html +2 -2
  61. package/lib/gsd-blackboard.js +135 -0
  62. package/lib/gsd-decompose-enrich.js +171 -0
  63. package/lib/gsd-prompt.js +82 -0
  64. package/lib/gsd.js +364 -0
  65. package/package.json +1 -1
  66. package/pipelines/gsd.stratum.yaml +141 -0
  67. package/dist/assets/App-Dj7XWWxC.js +0 -768
  68. package/dist/assets/_baseUniq-tNOA7dYy.js +0 -1
  69. package/dist/assets/arc-BAmAJ19S.js +0 -1
  70. package/dist/assets/architectureDiagram-Q4EWVU46-BPWGVKHW.js +0 -36
  71. package/dist/assets/blockDiagram-DXYQGD6D-CVlFbWKF.js +0 -132
  72. package/dist/assets/channel-Ddcaj0fR.js +0 -1
  73. package/dist/assets/chunk-4TB4RGXK-BNXf8s1x.js +0 -206
  74. package/dist/assets/chunk-55IACEB6-kGd4Gwx6.js +0 -1
  75. package/dist/assets/chunk-EDXVE4YY-Ci9gWeIv.js +0 -1
  76. package/dist/assets/chunk-OYMX7WX6-CosYsxuv.js +0 -231
  77. package/dist/assets/chunk-YZCP3GAM-BlgKQRCn.js +0 -1
  78. package/dist/assets/classDiagram-6PBFFD2Q-DfGxrNIN.js +0 -1
  79. package/dist/assets/classDiagram-v2-HSJHXN6E-DfGxrNIN.js +0 -1
  80. package/dist/assets/clone-DVujR_lO.js +0 -1
  81. package/dist/assets/cose-bilkent-S5V4N54A-CSkzhGHO.js +0 -1
  82. package/dist/assets/dagre-KV5264BT-zp76534d.js +0 -4
  83. package/dist/assets/diagram-5BDNPKRD-CAsORZBT.js +0 -10
  84. package/dist/assets/diagram-G4DWMVQ6-Da2z6fvR.js +0 -24
  85. package/dist/assets/diagram-MMDJMWI5-R9NZEWPF.js +0 -43
  86. package/dist/assets/diagram-TYMM5635-DXabRna8.js +0 -24
  87. package/dist/assets/ganttDiagram-T4ZO3ILL-Bnj-jTcM.js +0 -292
  88. package/dist/assets/gitGraphDiagram-UUTBAWPF-82ysfuqG.js +0 -106
  89. package/dist/assets/graph-6nRhlKgL.js +0 -1
  90. package/dist/assets/infoDiagram-42DDH7IO-DSGEEGYr.js +0 -2
  91. package/dist/assets/katex-DkKDou_j.js +0 -257
  92. package/dist/assets/layout-C6Mitjz_.js +0 -1
  93. package/dist/assets/linear-DoGSpDWQ.js +0 -1
  94. package/dist/assets/min-BqH4I4oK.js +0 -1
  95. package/dist/assets/pieDiagram-DEJITSTG-nXz4HiT6.js +0 -30
  96. package/dist/assets/quadrantDiagram-34T5L4WZ-BuwKLcii.js +0 -7
  97. package/dist/assets/sankeyDiagram-XADWPNL6-gX8lhWn5.js +0 -10
  98. package/dist/assets/sequenceDiagram-FGHM5R23-CkssrD67.js +0 -157
  99. package/dist/assets/stateDiagram-FHFEXIEX-DPmEy2eV.js +0 -1
  100. package/dist/assets/stateDiagram-v2-QKLJ7IA2-BGZzYkLq.js +0 -1
  101. package/dist/assets/vennDiagram-DHZGUBPP-CIvkd661.js +0 -34
  102. package/dist/assets/wardley-RL74JXVD-BqRTpa3K.js +0 -162
  103. package/dist/assets/wardleyDiagram-NUSXRM2D-B93hOd7R.js +0 -20
@@ -0,0 +1,141 @@
1
+ # metadata:
2
+ # id: gsd
3
+ # label: "GSD — Per-Task Fresh-Context Dispatch"
4
+ # description: "Long-run autonomous mode. Decompose blueprint+Boundary Map into tasks, dispatch each as a fresh-context worktree-isolated agent, sequential by default. Reads existing blueprint.md."
5
+ # category: development
6
+ # steps: 3
7
+ # estimated_minutes: 60
8
+
9
+ version: "0.3"
10
+
11
+ workflow:
12
+ name: gsd
13
+ description: "Per-task fresh-context dispatch from existing blueprint+Boundary Map (COMP-GSD-2)"
14
+ input:
15
+ featureCode:
16
+ type: string
17
+ required: true
18
+ gateCommands:
19
+ type: array
20
+ required: true # injected by runGsd from loadProjectConfig() with default fallback
21
+
22
+ contracts:
23
+ PhaseResult:
24
+ phase: {type: string}
25
+ artifact: {type: string}
26
+ outcome: {type: string, values: [complete, skipped, failed]}
27
+ summary: {type: string}
28
+
29
+ # TaskGraph is a v0.3 built-in contract — must NOT be redeclared.
30
+ # The richer TaskGraphGsd shape (per-task produces/consumes) is enforced
31
+ # post-decompose by lib/gsd-decompose-enrich.js + contracts/taskgraph-gsd.json
32
+ # rather than via Stratum's contract layer.
33
+
34
+ flows:
35
+ gsd:
36
+ input:
37
+ featureCode: {type: string}
38
+ gateCommands: {type: array}
39
+ output: PhaseResult
40
+ max_rounds: 10
41
+ steps:
42
+ # Phase: Decompose blueprint + Boundary Map into TaskGraphGsd
43
+ - id: decompose_gsd
44
+ type: decompose
45
+ agent: claude
46
+ intent: >
47
+ Read docs/features/{input.featureCode}/blueprint.md including its
48
+ ## Boundary Map section. Decompose into independent tasks.
49
+
50
+ For each task emit: id, files_owned, files_read, depends_on, AND a
51
+ rich `description` string that bundles all the spec context Stratum's
52
+ parallel_dispatch interpolation cannot carry on its own.
53
+
54
+ Each task's `description` MUST include these labeled sections:
55
+ - "Symbols you must produce:" + the matching Boundary Map slice's
56
+ produces entries (file → symbols (kind))
57
+ - "Symbols you may consume from upstream tasks:" + the slice's
58
+ consumes entries
59
+ - "Boundary Map slice (the contract for this task):" + the verbatim
60
+ slice block from blueprint.md
61
+ - "Upstream tasks (spec-level summary; their code lands at end-of-step
62
+ merge):" + one line per upstream task listing its declared produces
63
+ - "GATES — you MUST run each command and they MUST pass before
64
+ declaring done:" + each command from the gateCommands array
65
+ - "Fix and re-run within this invocation. Do NOT declare done while
66
+ gates are red."
67
+
68
+ Stratum's parallel_dispatch only interpolates {task.id},
69
+ {task.description}, {task.files_owned}, {task.files_read},
70
+ {task.depends_on}, {task.index}, {input.<field>}. Pack everything else
71
+ into description.
72
+
73
+ Each Boundary Map slice maps to exactly one task whose files_owned ⊇
74
+ the slice's File Plan files. The decomposition is invalid if a slice
75
+ has no matching task or its File Plan files are split across
76
+ multiple tasks.
77
+
78
+ gateCommands to embed: {input.gateCommands}
79
+ inputs:
80
+ featureCode: "$.input.featureCode"
81
+ gateCommands: "$.input.gateCommands"
82
+ output_contract: TaskGraph
83
+ ensure:
84
+ - "no_file_conflicts(result.tasks)"
85
+ - "len(result.tasks) >= 1"
86
+ retries: 2
87
+
88
+ # Phase: Execute — sequential per-task fresh-context dispatch
89
+ - id: execute
90
+ type: parallel_dispatch
91
+ source: "$.steps.decompose_gsd.output.tasks"
92
+ agent: claude
93
+ max_concurrent: 1
94
+ isolation: worktree
95
+ capture_diff: true
96
+ require: all
97
+ merge: sequential_apply
98
+ retries: 2
99
+ intent_template: >
100
+ Implement task {task.id} using TDD.
101
+
102
+ Files you own (write): {task.files_owned}
103
+ Files you may read: {task.files_read}
104
+ Depends on: {task.depends_on}
105
+
106
+ {task.description}
107
+
108
+ When done, write TaskResult JSON to
109
+ .compose/gsd/{input.featureCode}/results/{task.id}.json
110
+ (schema: contracts/task-result.json) and INCLUDE that file in your diff.
111
+ depends_on: [decompose_gsd]
112
+
113
+ # Phase: Ship — verify, update docs, commit, push
114
+ - id: ship_gsd
115
+ agent: "claude::critical"
116
+ intent: >
117
+ Final verification and ship for feature {input.featureCode}.
118
+
119
+ You MUST:
120
+ 1. Run the project test suite. If tests fail, fix them.
121
+ 2. Run the project build. Must pass.
122
+ 3. Update ROADMAP.md — find COMP-GSD-2's row and mark it COMPLETE.
123
+ If this completes a parent feature, update the parent header.
124
+ 4. Update CHANGELOG.md — add an entry under today's date with
125
+ COMP-GSD-2 and a bullet list of what was built. Read the
126
+ existing format first.
127
+ 5. Update CLAUDE.md ONLY if a new convention/command/architecture
128
+ surface emerged. Skip otherwise.
129
+ 6. Stage changed files explicitly (no worktrees, pycache, build
130
+ artifacts). Commit with message:
131
+ "feat(COMP-GSD-2): per-task fresh-context dispatch"
132
+ (Note: push is deferred to the user — `compose gsd` does not
133
+ auto-push, mirroring `compose build`'s ship behavior.)
134
+ 7. Report commit hash and files_changed in result JSON.
135
+ inputs:
136
+ featureCode: "$.input.featureCode"
137
+ output_contract: PhaseResult
138
+ ensure:
139
+ - "result.outcome == 'complete'"
140
+ retries: 2
141
+ depends_on: [execute]