@atlashub/smartstack-cli 4.50.0 → 4.51.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlashub/smartstack-cli",
3
- "version": "4.50.0",
3
+ "version": "4.51.0",
4
4
  "description": "SmartStack Claude Code automation toolkit - GitFlow, EF Core migrations, prompts and more",
5
5
  "author": {
6
6
  "name": "SmartStack",
@@ -171,6 +171,36 @@ Execute incremental SmartStack development using the APEX methodology. This skil
171
171
 
172
172
  </execution_rules>
173
173
 
174
+ <execution_guarantee>
175
+
176
+ ## Execution Guarantee (CRITICAL — read before ANY step)
177
+
178
+ > **The user is NOT watching. There is NOBODY to answer your questions. Stopping is a FAILURE.**
179
+
180
+ When APEX runs (especially in `-d` delegate mode or `-a` auto mode), the execution is **fully autonomous**. The user has launched the command and walked away. Any pause, question, or numbered option list is a **dead end** — nobody will respond.
181
+
182
+ **YOU MUST NOT:**
183
+ - Stop to ask the user a question between layers
184
+ - Present numbered options ("Would you like to: 1. Continue... 2. Generate... 3. Stop...")
185
+ - Pause between layers to summarize progress and wait for confirmation
186
+ - Stop because the work seems "large" or "complex" — that is expected
187
+ - Add "Let me know if you want me to continue" at any point
188
+
189
+ **YOU MUST:**
190
+ - After Layer N completes, **IMMEDIATELY** load the next sub-step file. No pause, no summary, no question.
191
+ - Execute the full pipeline: Layer 0 → Layer 1 → Layer 2 → Layer 3 → Layer 4 → step-04, with **ZERO pauses** between layers
192
+ - Treat each "Load `steps/step-03X-...md`" instruction as a **mandatory immediate action**, not a suggestion
193
+ - Continue even if a layer produced warnings (only a build gate failure after max retries is a valid stop)
194
+
195
+ **The ONLY valid reasons to stop:**
196
+ 1. A build gate fails after maximum retries (3 attempts)
197
+ 2. ALL layers are completed and step-04 (eXamine) is done
198
+ 3. The user presses Ctrl+C
199
+
200
+ **Anything else — including "being helpful" by asking — is a VIOLATION of the execution guarantee.**
201
+
202
+ </execution_guarantee>
203
+
174
204
  <error_handling>
175
205
 
176
206
  ## Error Handling Strategy
@@ -65,6 +65,13 @@ BEFORE starting Layer N:
65
65
 
66
66
  ## Layer Dispatch
67
67
 
68
+ > **CRITICAL RULES — LAYER EXECUTION GUARANTEE**
69
+ >
70
+ > - **NEVER** stop between layers. NEVER ask the user. NEVER present numbered options between layers.
71
+ > - The pipeline is sequential and mandatory: **0 → 1 → 2 → 3 → 4 → step-04**, with **ZERO pauses**.
72
+ > - After each sub-step completes, IMMEDIATELY load the next one. No summary, no confirmation request.
73
+ > - Stopping between layers is a **VIOLATION** of the execution guarantee defined in SKILL.md.
74
+
68
75
  Load each sub-step sequentially:
69
76
 
70
77
  | Layer | Sub-step | Content |
@@ -136,6 +136,9 @@ feat({module}): [domain+infra] {short description}
136
136
 
137
137
  ---
138
138
 
139
- ## NEXT SUB-STEP
139
+ ## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
140
+
141
+ > **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
142
+ > Stopping here is a VIOLATION of the execution guarantee.
140
143
 
141
144
  Load `steps/step-03b-layer1-seed.md`
@@ -254,6 +254,9 @@ feat({module}): [seed] navigation, permissions, roles
254
254
 
255
255
  ---
256
256
 
257
- ## NEXT SUB-STEP
257
+ ## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
258
+
259
+ > **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
260
+ > Stopping here is a VIOLATION of the execution guarantee.
258
261
 
259
262
  Load `steps/step-03c-layer2-backend.md`
@@ -348,6 +348,9 @@ test({module}): backend unit and integration tests
348
348
 
349
349
  ---
350
350
 
351
- ## NEXT SUB-STEP
351
+ ## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
352
+
353
+ > **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
354
+ > Stopping here is a VIOLATION of the execution guarantee.
352
355
 
353
356
  Load `steps/step-03d-layer3-frontend.md`
@@ -329,6 +329,9 @@ test({module}): frontend form tests
329
329
 
330
330
  ---
331
331
 
332
- ## NEXT SUB-STEP
332
+ ## NEXT SUB-STEP (MANDATORY — IMMEDIATE)
333
+
334
+ > **DO NOT STOP.** DO NOT ask the user. DO NOT present options. IMMEDIATELY load the next sub-step.
335
+ > Stopping here is a VIOLATION of the execution guarantee.
333
336
 
334
337
  Load `steps/step-03e-layer4-devdata.md`
@@ -2394,6 +2394,13 @@ let data = {{FEATURE_DATA}};
2394
2394
  const ORIGINAL_DATA = JSON.parse(JSON.stringify(data));
2395
2395
  const EMBEDDED_ARTIFACTS = {{EMBEDDED_ARTIFACTS}};
2396
2396
 
2397
+ // CRITICAL: Initialize top-level structures FIRST to prevent TypeError crashes
2398
+ data.cadrage = data.cadrage || {};
2399
+ data.modules = data.modules || [];
2400
+ data.dependencies = data.dependencies || [];
2401
+ data.handoff = data.handoff || {};
2402
+ data.cadrage.stakeholders = data.cadrage.stakeholders || [];
2403
+
2397
2404
  // Initialize applications array (multi-app support)
2398
2405
  data.applications = data.applications || [];
2399
2406
 
@@ -6,6 +6,13 @@ let data = {{FEATURE_DATA}};
6
6
  const ORIGINAL_DATA = JSON.parse(JSON.stringify(data));
7
7
  const EMBEDDED_ARTIFACTS = {{EMBEDDED_ARTIFACTS}};
8
8
 
9
+ // CRITICAL: Initialize top-level structures FIRST to prevent TypeError crashes
10
+ data.cadrage = data.cadrage || {};
11
+ data.modules = data.modules || [];
12
+ data.dependencies = data.dependencies || [];
13
+ data.handoff = data.handoff || {};
14
+ data.cadrage.stakeholders = data.cadrage.stakeholders || [];
15
+
9
16
  // Initialize applications array (multi-app support)
10
17
  data.applications = data.applications || [];
11
18
 
@@ -242,6 +242,19 @@ if (errors.length > 0) {
242
242
  > If self-check detects errors, you MUST re-read the source data and re-build the failing moduleSpecs entries.
243
243
  > Do NOT proceed with empty arrays when source data exists.
244
244
 
245
+ **dependencies[] (TOP-LEVEL — CRITICAL for HTML navigation):**
246
+ ```javascript
247
+ dependencies: (master.consolidation?.crossModuleInteractions || master.dependencyGraph?.edges || []).map(i => ({
248
+ from: i.fromModule || i.from || "",
249
+ to: i.toModule || i.to || "",
250
+ description: i.description || ""
251
+ }))
252
+ ```
253
+
254
+ > **WARNING:** `data.dependencies` is used by the sidebar (navigation), module rendering, consolidation views,
255
+ > handoff summary, and export. If this array is missing, the entire HTML page crashes with a TypeError.
256
+ > ALWAYS include it, even if empty (`dependencies: []`).
257
+
245
258
  **consolidation:**
246
259
  ```javascript
247
260
  consolidation: {
@@ -69,6 +69,24 @@ FOR each module in FEATURE_DATA.modules:
69
69
  BLOCKING_ERROR("Module {module.code}: 0 businessRules in HTML but {sourceBRCount} in source")
70
70
  ```
71
71
 
72
+ **Check 7 — No runtime crash (CRITICAL — validates page won't be blank):**
73
+ ```
74
+ Open ba-interactive.html and search for the FEATURE_DATA JSON block.
75
+ Verify these MANDATORY top-level fields exist:
76
+ - "modules": [...] (array, can be empty)
77
+ - "dependencies": [...] (array, can be empty)
78
+ - "cadrage": {...} (object with stakeholders[], scope{})
79
+ - "moduleSpecs": {...} (object, one key per module)
80
+ - "consolidation": {...} (object)
81
+
82
+ IF "dependencies" is missing from FEATURE_DATA:
83
+ Add: "dependencies": [] to the FEATURE_DATA object in the HTML
84
+ (This is the #1 cause of blank HTML pages — TypeError on data.dependencies.length crashes all JS)
85
+
86
+ IF "modules" is missing:
87
+ BLOCKING_ERROR("FEATURE_DATA.modules missing — page will crash")
88
+ ```
89
+
72
90
  > **IF any check fails:** fix the issue and re-run the failing step before completing.
73
91
 
74
92
  ---