@smartmemory/compose 0.2.8-beta → 0.2.10-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 (67) hide show
  1. package/bin/compose.js +75 -1
  2. package/contracts/gsd-state.json +140 -0
  3. package/contracts/par-merge-bounce.json +39 -0
  4. package/dist/assets/{App-D3ehVPvi.js → App-CG-2euMe.js} +164 -164
  5. package/dist/assets/{arc-Dmf69iHG.js → arc-7QBWoLra.js} +1 -1
  6. package/dist/assets/{architectureDiagram-3BPJPVTR-xYo993Yw.js → architectureDiagram-3BPJPVTR-CUw-7uLm.js} +1 -1
  7. package/dist/assets/{blockDiagram-GPEHLZMM-UX4EF98O.js → blockDiagram-GPEHLZMM-COU1vmr7.js} +1 -1
  8. package/dist/assets/{c4Diagram-AAUBKEIU-DaP9CGWb.js → c4Diagram-AAUBKEIU-XPO9PSJL.js} +1 -1
  9. package/dist/assets/channel-Bcu04MIK.js +1 -0
  10. package/dist/assets/{chunk-2J33WTMH-CKk_RN3A.js → chunk-2J33WTMH-zMzVB2a6.js} +1 -1
  11. package/dist/assets/{chunk-4BX2VUAB-DboAwYKw.js → chunk-4BX2VUAB-Kke_qcHU.js} +1 -1
  12. package/dist/assets/{chunk-55IACEB6-Dsy9RYvI.js → chunk-55IACEB6-hMeFx5Nh.js} +1 -1
  13. package/dist/assets/{chunk-727SXJPM-fAH0QO9v.js → chunk-727SXJPM-DesUnrEw.js} +1 -1
  14. package/dist/assets/{chunk-AQP2D5EJ-DyZYerFP.js → chunk-AQP2D5EJ-1uGGvkxW.js} +1 -1
  15. package/dist/assets/{chunk-FMBD7UC4-BnboGO5t.js → chunk-FMBD7UC4-DYHv1PcZ.js} +1 -1
  16. package/dist/assets/{chunk-ND2GUHAM-Di9tYXme.js → chunk-ND2GUHAM-D0MENOLX.js} +1 -1
  17. package/dist/assets/{chunk-QZHKN3VN-zRPRlAIL.js → chunk-QZHKN3VN-8nn3HP-N.js} +1 -1
  18. package/dist/assets/classDiagram-4FO5ZUOK-DU4yxldU.js +1 -0
  19. package/dist/assets/classDiagram-v2-Q7XG4LA2-DU4yxldU.js +1 -0
  20. package/dist/assets/{cose-bilkent-S5V4N54A-C7Hqukaf.js → cose-bilkent-S5V4N54A-BoZPVIny.js} +1 -1
  21. package/dist/assets/{dagre-BM42HDAG-B-cR-BjI.js → dagre-BM42HDAG-BgZzdLG9.js} +1 -1
  22. package/dist/assets/{diagram-2AECGRRQ-B6-5onDk.js → diagram-2AECGRRQ-CknAnpSu.js} +1 -1
  23. package/dist/assets/{diagram-5GNKFQAL-DoZZgFAM.js → diagram-5GNKFQAL-CZUEbKim.js} +1 -1
  24. package/dist/assets/{diagram-KO2AKTUF-77jEGlJh.js → diagram-KO2AKTUF-DCs-pLdH.js} +1 -1
  25. package/dist/assets/{diagram-LMA3HP47-D3S7XDRD.js → diagram-LMA3HP47-lRaDjIfM.js} +1 -1
  26. package/dist/assets/{diagram-OG6HWLK6-KbYL9aCY.js → diagram-OG6HWLK6-CIGqmehP.js} +1 -1
  27. package/dist/assets/{erDiagram-TEJ5UH35-DezFbJP-.js → erDiagram-TEJ5UH35-Lx3c2N6F.js} +1 -1
  28. package/dist/assets/{flowDiagram-I6XJVG4X-4x31cK9j.js → flowDiagram-I6XJVG4X-VoluKqSq.js} +1 -1
  29. package/dist/assets/{ganttDiagram-6RSMTGT7-FopfSTyZ.js → ganttDiagram-6RSMTGT7-D7hETiNZ.js} +1 -1
  30. package/dist/assets/{gitGraphDiagram-PVQCEYII-DSiQGKbN.js → gitGraphDiagram-PVQCEYII-DenEcUvY.js} +1 -1
  31. package/dist/assets/{index-ClX6LVAf.js → index-B4dv3acY.js} +2 -2
  32. package/dist/assets/{infoDiagram-5YYISTIA-DE6BqzK_.js → infoDiagram-5YYISTIA-v7cq9Er9.js} +1 -1
  33. package/dist/assets/{ishikawaDiagram-YF4QCWOH-Dml8NwQI.js → ishikawaDiagram-YF4QCWOH-CfCCXt2x.js} +1 -1
  34. package/dist/assets/{journeyDiagram-JHISSGLW-CwWeJgjE.js → journeyDiagram-JHISSGLW-Bbokl_xO.js} +1 -1
  35. package/dist/assets/{kanban-definition-UN3LZRKU-DnG956Wh.js → kanban-definition-UN3LZRKU-DhkOZ2hg.js} +1 -1
  36. package/dist/assets/{linear-CA3N7Rpi.js → linear-bHjluRm2.js} +1 -1
  37. package/dist/assets/{mindmap-definition-RKZ34NQL-CxfIOjLX.js → mindmap-definition-RKZ34NQL-C1bHpoXH.js} +1 -1
  38. package/dist/assets/{pieDiagram-4H26LBE5-O7aIwy1x.js → pieDiagram-4H26LBE5-CZb1i55T.js} +1 -1
  39. package/dist/assets/{quadrantDiagram-W4KKPZXB-CPQ2qq7c.js → quadrantDiagram-W4KKPZXB-o37AwRHB.js} +1 -1
  40. package/dist/assets/{requirementDiagram-4Y6WPE33-C23horL4.js → requirementDiagram-4Y6WPE33-BVErWDzU.js} +1 -1
  41. package/dist/assets/{sankeyDiagram-5OEKKPKP-DPY04kOW.js → sankeyDiagram-5OEKKPKP-BhBK8gHQ.js} +1 -1
  42. package/dist/assets/{sequenceDiagram-3UESZ5HK-BKaTfIvo.js → sequenceDiagram-3UESZ5HK-CsICF23P.js} +1 -1
  43. package/dist/assets/{stateDiagram-AJRCARHV-B9na_6mY.js → stateDiagram-AJRCARHV-TN1AXwim.js} +1 -1
  44. package/dist/assets/stateDiagram-v2-BHNVJYJU-BLR6AkKX.js +1 -0
  45. package/dist/assets/{timeline-definition-PNZ67QCA-BBWPqd7X.js → timeline-definition-PNZ67QCA-DftAajbU.js} +1 -1
  46. package/dist/assets/{vennDiagram-CIIHVFJN-tWqiHsOZ.js → vennDiagram-CIIHVFJN-cFTMstT7.js} +1 -1
  47. package/dist/assets/{wardley-L42UT6IY-DorxG6os.js → wardley-L42UT6IY-DL8CivzO.js} +1 -1
  48. package/dist/assets/{wardleyDiagram-YWT4CUSO-B49f8GzW.js → wardleyDiagram-YWT4CUSO-BDZT1hQj.js} +1 -1
  49. package/dist/assets/{xychartDiagram-2RQKCTM6-BgKSj8Qb.js → xychartDiagram-2RQKCTM6-DQQSkfC4.js} +1 -1
  50. package/dist/index.html +1 -1
  51. package/lib/build.js +140 -17
  52. package/lib/gsd-diff-capture.js +34 -0
  53. package/lib/gsd-events.js +61 -0
  54. package/lib/gsd-headless-config.js +110 -0
  55. package/lib/gsd-milestone-report.js +323 -0
  56. package/lib/gsd-state.js +165 -0
  57. package/lib/gsd-supervisor.js +223 -0
  58. package/lib/gsd-timing.js +89 -0
  59. package/lib/gsd.js +504 -49
  60. package/lib/step-prompt.js +6 -0
  61. package/lib/stratum-mcp-client.js +3 -1
  62. package/package.json +1 -1
  63. package/pipelines/gsd.stratum.yaml +12 -4
  64. package/dist/assets/channel-D_RXsFFT.js +0 -1
  65. package/dist/assets/classDiagram-4FO5ZUOK-K6wdB4ic.js +0 -1
  66. package/dist/assets/classDiagram-v2-Q7XG4LA2-K6wdB4ic.js +0 -1
  67. package/dist/assets/stateDiagram-v2-BHNVJYJU-Cf84VDiH.js +0 -1
@@ -162,6 +162,12 @@ function buildConflictSection(conflicts) {
162
162
  return lines.join('\n');
163
163
  }
164
164
 
165
+ // COMP-PAR-MERGE-QUEUE note: pre-merge bounce context (gate_failed / merge_conflict)
166
+ // is injected into a re-dispatched task's prompt SERVER-SIDE, in Stratum's
167
+ // ParallelExecutor._render_prompt — because the server re-resolves the task list
168
+ // from flow state on each re-dispatch, so a Compose-side prompt edit here would
169
+ // never reach the re-run task. See parallel_exec.py `_format_bounce_for_prompt`.
170
+
165
171
  /**
166
172
  * Build a retry prompt when postconditions failed.
167
173
  *
@@ -444,7 +444,9 @@ export class StratumMcpClient {
444
444
  *
445
445
  * @param {string} flowId
446
446
  * @param {string} stepId
447
- * @param {'clean'|'conflict'} mergeStatus
447
+ * @param {'clean'|'conflict'|{status:'clean'|'conflict',bounced_tasks?:object[]}} mergeStatus
448
+ * COMP-PAR-MERGE-QUEUE: either a bare status string (back-compat) or a
449
+ * structured object carrying merge_conflict bounce records. Serializes as-is.
448
450
  * @returns {Promise<object>}
449
451
  */
450
452
  async parallelAdvance(flowId, stepId, mergeStatus) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartmemory/compose",
3
- "version": "0.2.8-beta",
3
+ "version": "0.2.10-beta",
4
4
  "description": "Structured AI dev pipeline — goal-to-product orchestration with gates, iteration loops, and feature lifecycle management.",
5
5
  "author": "SmartMemory",
6
6
  "license": "MIT",
@@ -18,6 +18,9 @@ workflow:
18
18
  gateCommands:
19
19
  type: array
20
20
  required: true # injected by runGsd from loadProjectConfig() with default fallback
21
+ pre_merge_gate:
22
+ type: array
23
+ required: false # COMP-PAR-MERGE-QUEUE: fast per-task enforced gate (lint+build); injected by runGsd
21
24
 
22
25
  contracts:
23
26
  PhaseResult:
@@ -36,6 +39,7 @@ flows:
36
39
  input:
37
40
  featureCode: {type: string}
38
41
  gateCommands: {type: array}
42
+ pre_merge_gate: {type: array} # COMP-PAR-MERGE-QUEUE
39
43
  output: PhaseResult
40
44
  max_rounds: 10
41
45
  steps:
@@ -61,7 +65,7 @@ flows:
61
65
  - "Upstream tasks (spec-level summary; their code lands at end-of-step
62
66
  merge):" + one line per upstream task listing its declared produces
63
67
  - "GATES — you MUST run each command and they MUST pass before
64
- declaring done:" + each command from the gateCommands array
68
+ declaring done:" + each command from the pre_merge_gate array
65
69
  - "Fix and re-run within this invocation. Do NOT declare done while
66
70
  gates are red."
67
71
 
@@ -75,10 +79,12 @@ flows:
75
79
  has no matching task or its File Plan files are split across
76
80
  multiple tasks.
77
81
 
78
- gateCommands to embed: {input.gateCommands}
82
+ pre_merge_gate commands to embed (the fast per-task gate; the full
83
+ test suite runs once at ship): {input.pre_merge_gate}
79
84
  inputs:
80
- featureCode: "$.input.featureCode"
81
- gateCommands: "$.input.gateCommands"
85
+ featureCode: "$.input.featureCode"
86
+ gateCommands: "$.input.gateCommands"
87
+ pre_merge_gate: "$.input.pre_merge_gate"
82
88
  output_contract: TaskGraph
83
89
  ensure:
84
90
  - "no_file_conflicts(result.tasks)"
@@ -93,6 +99,8 @@ flows:
93
99
  max_concurrent: 1
94
100
  isolation: worktree
95
101
  capture_diff: true
102
+ defer_advance: true # COMP-PAR-MERGE-QUEUE: consumer merges + reports status, enabling conflict-bounce
103
+ pre_merge_verify: "$.input.pre_merge_gate" # COMP-PAR-MERGE-QUEUE: enforced fast gate per task worktree
96
104
  require: all
97
105
  merge: sequential_apply
98
106
  retries: 2
@@ -1 +0,0 @@
1
- import{ai as o,aj as n}from"./App-D3ehVPvi.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-fAH0QO9v.js";import{_ as i}from"./App-D3ehVPvi.js";import"./chunk-FMBD7UC4-BnboGO5t.js";import"./chunk-ND2GUHAM-Di9tYXme.js";import"./chunk-55IACEB6-Dsy9RYvI.js";import"./chunk-2J33WTMH-CKk_RN3A.js";import"./mobile-CG5tLa2S.js";import"./index-ClX6LVAf.js";import"./graph-Cs_vqCR0.js";var b={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{b as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-fAH0QO9v.js";import{_ as i}from"./App-D3ehVPvi.js";import"./chunk-FMBD7UC4-BnboGO5t.js";import"./chunk-ND2GUHAM-Di9tYXme.js";import"./chunk-55IACEB6-Dsy9RYvI.js";import"./chunk-2J33WTMH-CKk_RN3A.js";import"./mobile-CG5tLa2S.js";import"./index-ClX6LVAf.js";import"./graph-Cs_vqCR0.js";var b={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{b as diagram};
@@ -1 +0,0 @@
1
- import{s as r,b as e,a,S as s}from"./chunk-AQP2D5EJ-DyZYerFP.js";import{_ as i}from"./App-D3ehVPvi.js";import"./chunk-55IACEB6-Dsy9RYvI.js";import"./chunk-2J33WTMH-CKk_RN3A.js";import"./mobile-CG5tLa2S.js";import"./index-ClX6LVAf.js";import"./graph-Cs_vqCR0.js";var n={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{n as diagram};