@atlashub/smartstack-cli 4.18.0 → 4.20.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.
Files changed (164) hide show
  1. package/package.json +1 -1
  2. package/templates/agents/ba-reader.md +86 -80
  3. package/templates/agents/ba-writer.md +318 -415
  4. package/templates/agents/docs-context-reader.md +3 -3
  5. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -0
  6. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -0
  7. package/templates/skills/apex/SKILL.md +29 -16
  8. package/templates/skills/apex/_shared.md +62 -9
  9. package/templates/skills/apex/references/analysis-methods.md +8 -6
  10. package/templates/skills/apex/references/challenge-questions.md +5 -5
  11. package/templates/skills/apex/references/core-seed-data.md +68 -45
  12. package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +26 -21
  13. package/templates/skills/apex/references/parallel-execution.md +156 -0
  14. package/templates/skills/apex/references/person-extension-pattern.md +12 -12
  15. package/templates/skills/apex/references/post-checks.md +1748 -1726
  16. package/templates/skills/apex/references/smartstack-api.md +63 -57
  17. package/templates/skills/apex/references/smartstack-frontend-compliance.md +594 -0
  18. package/templates/skills/apex/references/smartstack-frontend.md +1246 -1842
  19. package/templates/skills/apex/references/smartstack-layers.md +98 -145
  20. package/templates/skills/apex/steps/step-00-init.md +30 -6
  21. package/templates/skills/apex/steps/step-01-analyze.md +27 -23
  22. package/templates/skills/apex/steps/step-02-plan.md +12 -12
  23. package/templates/skills/apex/steps/step-03-execute.md +198 -143
  24. package/templates/skills/apex/steps/step-04-examine.md +24 -93
  25. package/templates/skills/apex/steps/step-05-deep-review.md +16 -16
  26. package/templates/skills/apex/steps/step-06-resolve.md +9 -9
  27. package/templates/skills/apex/steps/step-07-tests.md +3 -1
  28. package/templates/skills/apex/steps/step-08-run-tests.md +1 -1
  29. package/templates/skills/business-analyse/SKILL.md +182 -301
  30. package/templates/skills/business-analyse/_shared.md +119 -336
  31. package/templates/skills/business-analyse/html/ba-interactive.html +706 -85
  32. package/templates/skills/business-analyse/html/build-html.js +41 -3
  33. package/templates/skills/business-analyse/html/src/partials/cadrage-context.html +34 -0
  34. package/templates/skills/business-analyse/html/src/partials/cadrage-risks.html +48 -0
  35. package/templates/skills/business-analyse/html/src/partials/cadrage-scope.html +49 -0
  36. package/templates/skills/business-analyse/html/src/partials/cadrage-stakeholders.html +55 -0
  37. package/templates/skills/business-analyse/html/src/partials/cadrage-success.html +34 -0
  38. package/templates/skills/business-analyse/html/src/partials/consol-datamodel.html +8 -0
  39. package/templates/skills/business-analyse/html/src/partials/consol-flows.html +29 -0
  40. package/templates/skills/business-analyse/html/src/partials/consol-interactions.html +8 -0
  41. package/templates/skills/business-analyse/html/src/partials/consol-permissions.html +8 -0
  42. package/templates/skills/business-analyse/html/src/partials/decomp-dependencies.html +38 -0
  43. package/templates/skills/business-analyse/html/src/partials/decomp-modules.html +51 -0
  44. package/templates/skills/business-analyse/html/src/partials/handoff-summary.html +24 -0
  45. package/templates/skills/business-analyse/html/src/partials/module-spec-container.html +4 -0
  46. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +17 -1
  47. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +32 -6
  48. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +100 -63
  49. package/templates/skills/business-analyse/html/src/scripts/06-render-mockups.js +372 -0
  50. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +1 -1
  51. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +41 -13
  52. package/templates/skills/business-analyse/html/src/styles/09-mockups-html.css +136 -0
  53. package/templates/skills/business-analyse/html/src/template.html +1 -1
  54. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +7 -5
  55. package/templates/skills/business-analyse/questionnaire/01-context.md +11 -157
  56. package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +101 -0
  57. package/templates/skills/business-analyse/questionnaire/03-data-ui.md +92 -0
  58. package/templates/skills/business-analyse/questionnaire/04-risks-metrics.md +6 -0
  59. package/templates/skills/business-analyse/questionnaire/05-cross-module.md +69 -0
  60. package/templates/skills/business-analyse/questionnaire.md +22 -280
  61. package/templates/skills/business-analyse/react/application-viewer.md +2 -2
  62. package/templates/skills/business-analyse/react/components.md +4 -4
  63. package/templates/skills/business-analyse/react/i18n-template.md +1 -1
  64. package/templates/skills/business-analyse/react/schema.md +14 -14
  65. package/templates/skills/business-analyse/references/acceptance-criteria.md +21 -21
  66. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +3 -3
  67. package/templates/skills/business-analyse/references/compilation-structure-cards.md +1 -1
  68. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +5 -5
  69. package/templates/skills/business-analyse/references/deploy-data-build.md +12 -11
  70. package/templates/skills/business-analyse/references/deploy-modes.md +10 -10
  71. package/templates/skills/business-analyse/references/detection-strategies.md +6 -6
  72. package/templates/skills/business-analyse/references/html-data-mapping.md +15 -15
  73. package/templates/skills/business-analyse/references/naming-conventions.md +4 -4
  74. package/templates/skills/business-analyse/references/review-data-mapping.md +29 -29
  75. package/templates/skills/business-analyse/references/robustness-checks.md +36 -36
  76. package/templates/skills/business-analyse/references/spec-auto-inference.md +2 -2
  77. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
  78. package/templates/skills/business-analyse/references/ui-resource-cards.md +1 -1
  79. package/templates/skills/business-analyse/references/validation-checklist.md +3 -3
  80. package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +2 -2
  81. package/templates/skills/business-analyse/schemas/application-schema.json +8 -8
  82. package/templates/skills/business-analyse/schemas/feature-schema.json +3 -3
  83. package/templates/skills/business-analyse/schemas/index-schema.json +47 -0
  84. package/templates/skills/business-analyse/schemas/project-schema.json +6 -6
  85. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +1 -1
  86. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +5 -3
  87. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +4 -4
  88. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +1 -1
  89. package/templates/skills/business-analyse/schemas/shared/common-defs.json +4 -4
  90. package/templates/skills/business-analyse/steps/step-00-init.md +68 -77
  91. package/templates/skills/business-analyse/steps/step-01-cadrage.md +50 -216
  92. package/templates/skills/business-analyse/steps/step-02-structure.md +175 -0
  93. package/templates/skills/business-analyse/steps/step-03-specify.md +198 -0
  94. package/templates/skills/business-analyse/steps/step-04-consolidate.md +478 -0
  95. package/templates/skills/business-analyse/steps/step-05-deploy.md +220 -0
  96. package/templates/skills/business-analyse/steps/step-06-review.md +51 -69
  97. package/templates/skills/business-analyse/templates/tpl-frd.md +1 -1
  98. package/templates/skills/business-analyse/templates/tpl-handoff.md +20 -17
  99. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +2 -2
  100. package/templates/skills/business-analyse/templates-react.md +2 -2
  101. package/templates/skills/derive-prd/SKILL.md +92 -0
  102. package/templates/skills/derive-prd/references/acceptance-criteria.md +169 -0
  103. package/templates/skills/derive-prd/references/entity-domain-mapping.md +115 -0
  104. package/templates/skills/{business-analyse → derive-prd}/references/handoff-file-templates.md +131 -120
  105. package/templates/skills/{business-analyse → derive-prd}/references/handoff-mappings.md +95 -95
  106. package/templates/skills/{business-analyse → derive-prd}/references/handoff-seeddata-generation.md +312 -312
  107. package/templates/skills/{business-analyse → derive-prd}/references/prd-generation.md +262 -263
  108. package/templates/skills/derive-prd/references/readiness-scoring.md +104 -0
  109. package/templates/skills/derive-prd/schemas/handoff-schema.json +95 -0
  110. package/templates/skills/derive-prd/steps/step-00-validate.md +130 -0
  111. package/templates/skills/derive-prd/steps/step-01-transform.md +206 -0
  112. package/templates/skills/derive-prd/steps/step-02-export.md +181 -0
  113. package/templates/skills/{business-analyse → derive-prd}/templates/tpl-progress.md +172 -172
  114. package/templates/skills/documentation/SKILL.md +7 -0
  115. package/templates/skills/ralph-loop/SKILL.md +2 -1
  116. package/templates/skills/ralph-loop/references/init-resume-recovery.md +1 -1
  117. package/templates/skills/ralph-loop/steps/step-01-task.md +2 -2
  118. package/templates/skills/apex/references/agent-teams-protocol.md +0 -203
  119. package/templates/skills/business-analyse/_architecture.md +0 -124
  120. package/templates/skills/business-analyse/_elicitation.md +0 -206
  121. package/templates/skills/business-analyse/_module-loop.md +0 -115
  122. package/templates/skills/business-analyse/_rules.md +0 -142
  123. package/templates/skills/business-analyse/_suggestions.md +0 -34
  124. package/templates/skills/business-analyse/questionnaire/00-application.md +0 -160
  125. package/templates/skills/business-analyse/questionnaire/00b-project.md +0 -85
  126. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +0 -189
  127. package/templates/skills/business-analyse/questionnaire/03-scope.md +0 -164
  128. package/templates/skills/business-analyse/questionnaire/04-data.md +0 -88
  129. package/templates/skills/business-analyse/questionnaire/05-integrations.md +0 -58
  130. package/templates/skills/business-analyse/questionnaire/06-security.md +0 -68
  131. package/templates/skills/business-analyse/questionnaire/07-ui.md +0 -76
  132. package/templates/skills/business-analyse/questionnaire/08-performance.md +0 -42
  133. package/templates/skills/business-analyse/questionnaire/09-constraints.md +0 -45
  134. package/templates/skills/business-analyse/questionnaire/10-documentation.md +0 -58
  135. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +0 -59
  136. package/templates/skills/business-analyse/questionnaire/12-migration.md +0 -58
  137. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +0 -69
  138. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +0 -135
  139. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +0 -136
  140. package/templates/skills/business-analyse/references/agent-module-prompt.md +0 -366
  141. package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +0 -557
  142. package/templates/skills/business-analyse/references/cache-warming-strategy.md +0 -566
  143. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +0 -41
  144. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +0 -74
  145. package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +0 -115
  146. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +0 -68
  147. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +0 -85
  148. package/templates/skills/business-analyse/references/team-orchestration.md +0 -1093
  149. package/templates/skills/business-analyse/references/validate-incremental-html.md +0 -121
  150. package/templates/skills/business-analyse/steps/step-01b-applications.md +0 -419
  151. package/templates/skills/business-analyse/steps/step-02-decomposition.md +0 -387
  152. package/templates/skills/business-analyse/steps/step-03a-data.md +0 -16
  153. package/templates/skills/business-analyse/steps/step-03a1-setup.md +0 -486
  154. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +0 -300
  155. package/templates/skills/business-analyse/steps/step-03b-ui.md +0 -405
  156. package/templates/skills/business-analyse/steps/step-03c-compile.md +0 -516
  157. package/templates/skills/business-analyse/steps/step-03d-validate.md +0 -691
  158. package/templates/skills/business-analyse/steps/step-04-consolidation.md +0 -17
  159. package/templates/skills/business-analyse/steps/step-04a-collect.md +0 -415
  160. package/templates/skills/business-analyse/steps/step-04b-analyze.md +0 -163
  161. package/templates/skills/business-analyse/steps/step-04c-decide.md +0 -186
  162. package/templates/skills/business-analyse/steps/step-05a-handoff.md +0 -937
  163. package/templates/skills/business-analyse/steps/step-05b-deploy.md +0 -522
  164. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +0 -703
@@ -67,80 +67,11 @@ Verify:
67
67
  - No orphan routes
68
68
  ```
69
69
 
70
- ### 3b. Frontend Page Completeness (BLOCKING)
70
+ ### 3b. Frontend Page Completeness
71
71
 
72
- > **ROOT CAUSE (test-v4-015):** Frontend generation created List + Detail pages but SKIPPED
73
- > Create + Edit pages. ListPage buttons navigated to /create and /:id/edit → white screen / 404.
74
- > Tests were also missing. This section catches that failure mode.
75
-
76
- ```bash
77
- PAGE_DIR=$(find . -path "*/src/pages" -not -path "*/node_modules/*" -type d 2>/dev/null | head -1)
78
- APP_TSX=$(find . -name "App.tsx" -not -path "*/node_modules/*" 2>/dev/null | head -1)
79
-
80
- if [ -n "$PAGE_DIR" ]; then
81
- # Check each module's ListPage for dead navigation links
82
- LIST_PAGES=$(find "$PAGE_DIR" -name "*ListPage.tsx" -o -name "*sPage.tsx" 2>/dev/null | grep -v test | grep -v node_modules)
83
- FAIL=false
84
- for LIST_PAGE in $LIST_PAGES; do
85
- LP_DIR=$(dirname "$LIST_PAGE")
86
- MOD=$(basename "$LP_DIR")
87
-
88
- HAS_CREATE_NAV=$(grep -P "navigate\(.*['/]create" "$LIST_PAGE" 2>/dev/null)
89
- HAS_EDIT_NAV=$(grep -P "navigate\(.*['/]edit" "$LIST_PAGE" 2>/dev/null)
90
-
91
- CREATE_PAGE=$(find "$LP_DIR" -name "*CreatePage.tsx" 2>/dev/null | head -1)
92
- EDIT_PAGE=$(find "$LP_DIR" -name "*EditPage.tsx" 2>/dev/null | head -1)
93
-
94
- if [ -n "$HAS_CREATE_NAV" ] && [ -z "$CREATE_PAGE" ]; then
95
- echo "BLOCKING: $MOD ListPage navigates to /create but CreatePage does NOT exist → dead link"
96
- FAIL=true
97
- fi
98
- if [ -n "$HAS_EDIT_NAV" ] && [ -z "$EDIT_PAGE" ]; then
99
- echo "BLOCKING: $MOD ListPage navigates to /:id/edit but EditPage does NOT exist → dead link"
100
- FAIL=true
101
- fi
102
- done
103
-
104
- # Check route wiring in App.tsx
105
- if [ -n "$APP_TSX" ]; then
106
- CREATE_PAGES=$(find "$PAGE_DIR" -name "*CreatePage.tsx" 2>/dev/null | grep -v test)
107
- EDIT_PAGES=$(find "$PAGE_DIR" -name "*EditPage.tsx" 2>/dev/null | grep -v test)
108
- if [ -n "$CREATE_PAGES" ] && ! grep -qP "path:.*create" "$APP_TSX"; then
109
- echo "BLOCKING: CreatePage exists but no 'create' route in App.tsx"
110
- FAIL=true
111
- fi
112
- if [ -n "$EDIT_PAGES" ] && ! grep -qP "path:.*:id/edit" "$APP_TSX"; then
113
- echo "BLOCKING: EditPage exists but no ':id/edit' route in App.tsx"
114
- FAIL=true
115
- fi
116
- fi
117
-
118
- # Check test files exist for form pages
119
- FORM_PAGES=$(find "$PAGE_DIR" -name "*CreatePage.tsx" -o -name "*EditPage.tsx" 2>/dev/null | grep -v test)
120
- if [ -n "$FORM_PAGES" ]; then
121
- for FP in $FORM_PAGES; do
122
- TF="${FP%.tsx}.test.tsx"
123
- if [ ! -f "$TF" ]; then
124
- echo "BLOCKING: Form page missing test: $FP → expected $TF"
125
- FAIL=true
126
- fi
127
- done
128
- fi
129
-
130
- # Check at least SOME tests exist when pages exist
131
- PAGE_COUNT=$(find "$PAGE_DIR" -name "*.tsx" ! -name "*.test.tsx" 2>/dev/null | grep -v node_modules | wc -l)
132
- TEST_COUNT=$(find "$PAGE_DIR" -name "*.test.tsx" 2>/dev/null | grep -v node_modules | wc -l)
133
- if [ "$PAGE_COUNT" -gt 0 ] && [ "$TEST_COUNT" -eq 0 ]; then
134
- echo "BLOCKING: $PAGE_COUNT pages but ZERO test files"
135
- FAIL=true
136
- fi
137
-
138
- if [ "$FAIL" = true ]; then
139
- echo "Fix: Go back to step-03 and generate missing pages/tests/routes"
140
- # MUST fix before proceeding
141
- fi
142
- fi
143
- ```
72
+ > POST-CHECKs C4, C5, and C6 in `references/post-checks.md` cover this verification (dead navigation links, missing Create/Edit pages, missing test files). Executed in section 6b below.
73
+ >
74
+ > ROOT CAUSE (test-v4-015): Frontend generation created List + Detail pages but SKIPPED Create + Edit pages → white screen / 404.
144
75
 
145
76
  **If ANY check fails → return to step-03 to generate the missing pages, tests, or routes.**
146
77
 
@@ -157,7 +88,7 @@ dotnet clean && dotnet restore && dotnet build
157
88
  npm run typecheck
158
89
  ```
159
90
 
160
- **BLOCKING:** Both must pass. If failure, classify error per `references/error-classification.md` (categories A-F).
91
+ Both must pass. If failure, classify error per `references/error-classification.md` (categories A-F).
161
92
 
162
93
  ---
163
94
 
@@ -190,7 +121,7 @@ fi
190
121
  sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "IF DB_ID('$DB_NAME') IS NOT NULL BEGIN ALTER DATABASE [$DB_NAME] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [$DB_NAME]; END" 2>/dev/null
191
122
  ```
192
123
 
193
- **BLOCKING** if migration fails on SQL Server (common: SQLite-only syntax, column type mismatches, missing FK targets).
124
+ If migration fails on SQL Server (common: SQLite-only syntax, column type mismatches, missing FK targets), fix the DbContext or migration first.
194
125
 
195
126
  ---
196
127
 
@@ -198,9 +129,9 @@ sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "IF DB_ID('$DB_NAME') IS NOT NULL BEGIN AL
198
129
 
199
130
  | File | Checks |
200
131
  |------|--------|
201
- | NavigationApplicationSeedData | MUST be first, random GUID via Guid.NewGuid() (resolved by Code at runtime), 4 lang translations |
202
- | ApplicationRolesSeedData | 4 roles (admin, manager, contributor, viewer), random GUIDs, references NavigationApplicationSeedData.ApplicationId |
203
- | NavigationModuleSeedData | Random GUIDs (`Guid.NewGuid()`), 4 languages (fr, en, it, de), GetModuleEntry + GetTranslationEntries |
132
+ | NavigationApplicationSeedData | MUST be first, 4 lang translations |
133
+ | ApplicationRolesSeedData | 4 roles (admin, manager, contributor, viewer), references NavigationApplicationSeedData.ApplicationId |
134
+ | NavigationModuleSeedData | 4 languages (fr, en, it, de), GetModuleEntry + GetTranslationEntries |
204
135
  | ↳ Section methods (same file) | (conditional: if sections exist) GetSectionEntries + GetSectionTranslationEntries, 4 languages, random GUIDs, query actual module from DB for FK |
205
136
  | ↳ Resource methods (same file) | (conditional: if resources exist) GetResourceEntries + resource translations, 4 languages, random GUIDs, query actual section from DB for FK |
206
137
  | Permissions.cs | Static constants class with `public static class {Module} { Read, Create, Update, Delete }`, paths match PermissionsSeedData |
@@ -211,14 +142,14 @@ sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "IF DB_ID('$DB_NAME') IS NOT NULL BEGIN AL
211
142
 
212
143
  ---
213
144
 
214
- ## 6b. BLOCKING POST-CHECKs
145
+ ## 6b. POST-CHECKs
215
146
 
216
147
  > **MCP FIRST:** Run `validate_conventions`, `validate_security`, and `validate_frontend_routes` before bash checks.
217
148
  > These 3 MCP tools cover ~10 additional checks automatically.
218
149
 
219
- Load and execute all checks from `references/post-checks.md` (6 security defense-in-depth + 44 convention checks).
150
+ Load and execute all checks from `references/post-checks.md` (security + convention + architecture checks).
220
151
 
221
- **If ANY POST-CHECK fails fix in step-03, re-validate.**
152
+ If any POST-CHECK fails, fix in step-03 and re-validate.
222
153
 
223
154
  ---
224
155
 
@@ -259,18 +190,18 @@ AC2: {criterion} → PASS / FAIL (evidence: {file:line or test})
259
190
  | Security | TenantId filter, RequirePermission, no Guid.Empty, no !.Value | PASS / N/A |
260
191
  | Seed data | completeness, random GUIDs (Guid.NewGuid()), no ContextId/RoleId constants | PASS / N/A |
261
192
  | Code quality | PaginatedResult, EntityLookup (no FK select/input), CSS vars, search param | PASS / N/A |
262
- | Migration completeness | ModelSnapshot covers ALL DbSet entities (POST-CHECK 36, 40) | PASS / N/A |
263
- | NavRoute kebab-case | NavRoute + permissions use kebab-case (POST-CHECK 32) | PASS / N/A |
264
- | DateOnly DTOs | Date fields use DateOnly not string (POST-CHECK 39) | PASS / N/A |
265
- | I18n registration | Namespaces registered in i18n config (POST-CHECK 37) | PASS / N/A |
266
- | Validators DI | FluentValidation registered in DI (POST-CHECK 38) | PASS / N/A |
267
- | Route/NavRoute conflict | No [Route] alongside [NavRoute] on controllers (POST-CHECK 41) | PASS / N/A |
268
- | Role-permission matrix | Admin=wildcard, Manager=CRU, Contributor=CR, Viewer=R (POST-CHECK 42) | PASS / N/A |
269
- | PermissionAction enum | No Enum.Parse, only typed enum values 0-10 (POST-CHECK 43) | PASS / N/A |
270
- | Navigation translations | 4 langs per level, section/resource translations present (POST-CHECK 44) | PASS / N/A |
193
+ | Migration completeness | ModelSnapshot covers ALL DbSet entities (POST-CHECK C38, C42) | PASS / N/A |
194
+ | NavRoute kebab-case | NavRoute + permissions use kebab-case (POST-CHECK C34) | PASS / N/A |
195
+ | DateOnly DTOs | Date fields use DateOnly not string (POST-CHECK C41) | PASS / N/A |
196
+ | I18n registration | Namespaces registered in i18n config (POST-CHECK C39) | PASS / N/A |
197
+ | Validators DI | FluentValidation registered in DI (POST-CHECK C40) | PASS / N/A |
198
+ | Route/NavRoute conflict | No [Route] alongside [NavRoute] on controllers (POST-CHECK C43) | PASS / N/A |
199
+ | Role-permission matrix | Admin=wildcard, Manager=CRU, Contributor=CR, Viewer=R (POST-CHECK C44) | PASS / N/A |
200
+ | PermissionAction enum | No Enum.Parse, only typed enum values 0-10 (POST-CHECK C45) | PASS / N/A |
201
+ | Navigation translations | 4 langs per level, section/resource translations present (POST-CHECK C46) | PASS / N/A |
271
202
  | Inline tests (Layer 2) | Backend unit + integration tests | PASS / N/A |
272
203
  | Inline tests (Layer 3) | Frontend form tests | PASS / N/A |
273
- | POST-CHECKs | 3 MCP tools + 50 bash checks (6 security + 44 convention) | PASS / N/A |
204
+ | POST-CHECKs | 3 MCP tools + bash checks (security + convention + architecture) | PASS / N/A |
274
205
  | Acceptance criteria | AC1..ACn | {X}/{Y} PASS |
275
206
  ```
276
207
 
@@ -290,14 +221,14 @@ Write to `{output_dir}/04-examine.md` with validation results.
290
221
  ```
291
222
  IF examine_mode (-x flag):
292
223
  → Load steps/step-05-deep-review.md (adversarial review)
293
- → Then step-06 (resolve) if BLOCKING findings
224
+ → Then step-06 (resolve) if findings need fixing
294
225
  → Then step-07 (Final Test Sweep) — ALWAYS
295
226
 
296
227
  ELSE:
297
228
  → Load steps/step-07-tests.md — IMMEDIATELY after eXamine completes
298
229
  ```
299
230
 
300
- **BLOCKING RULE:** The APEX workflow is NOT complete until steps 07-08 execute.
231
+ **RULE:** The APEX workflow is NOT complete until steps 07-08 execute.
301
232
  The success criteria require: "Tests: 100% pass, >= 80% coverage" — step-07 verifies coverage and adds security tests.
302
233
 
303
234
  ### eXamine Task Lifecycle — Completion
@@ -50,11 +50,11 @@ Call: mcp__smartstack__analyze_code_quality
50
50
  For each changed file, check:
51
51
 
52
52
  **Security (OWASP):**
53
- - [ ] `[RequirePermission]` on every endpoint (not `[Authorize]`)
54
- - [ ] No SQL injection (parameterized queries, EF Core only)
55
- - [ ] No XSS (React auto-escapes, but check dangerouslySetInnerHTML)
56
- - [ ] Multi-tenant isolation (IHasData filter applied)
57
- - [ ] No secrets in code
53
+ - [ ] Require `[RequirePermission]` on every endpoint (not `[Authorize]`)
54
+ - [ ] Verify no SQL injection (parameterized queries, EF Core only)
55
+ - [ ] Check no XSS (React auto-escapes, but verify dangerouslySetInnerHTML)
56
+ - [ ] Confirm multi-tenant isolation (IHasData filter applied)
57
+ - [ ] Ensure no secrets in code
58
58
 
59
59
  **Architecture:**
60
60
  - [ ] Entities in correct Domain folder
@@ -65,19 +65,19 @@ For each changed file, check:
65
65
  - [ ] Frontend in correct hierarchy (App/Module)
66
66
 
67
67
  **SmartStack conventions:**
68
- - [ ] Random GUIDs in seed data via Guid.NewGuid() (no deterministic/sequential/fixed)
68
+ - [ ] Seed data GUIDs via Guid.NewGuid() (see core-seed-data.md §1b)
69
69
  - [ ] 4 languages in translations
70
- - [ ] CSS variables (not hardcoded colors)
70
+ - [ ] CSS variables only (see smartstack-frontend.md §4)
71
71
  - [ ] DataTable (not raw HTML `<table>`) and concrete form markup (not non-existent SmartForm)
72
72
  - [ ] Correct Layout wrapper per application
73
73
 
74
74
  **FK Fields & Forms:**
75
- - [ ] FK Guid fields use `EntityLookup` component (NEVER `<input>`, NEVER `<select>`)
76
- - [ ] No `<select>` with `<option>` elements for FK fields (even API-loaded options)
77
- - [ ] No placeholder text asking user to "Enter ID", "Enter GUID", or "Select {Entity}..."
78
- - [ ] No inline forms in drawers/slide-overs Create/Edit forms are full pages with own routes (ZERO modals/dialogs/drawers)
79
- - [ ] Backend GetAll endpoints support `?search=` param for EntityLookup
80
- - [ ] Each EntityLookup has `apiEndpoint`, `mapOption`, `label` props
75
+ - [ ] FK Guid fields use `EntityLookup` component (do not use `<input>` or `<select>`) (see smartstack-frontend.md §6)
76
+ - [ ] Verify no `<select>` with `<option>` elements for FK fields (even API-loaded options)
77
+ - [ ] Ensure no placeholder text asking user to "Enter ID", "Enter GUID", or "Select {Entity}..."
78
+ - [ ] Verify no inline forms in drawers/slide-overs; Create/Edit forms are full pages with own routes (zero modals/dialogs/drawers) (see smartstack-frontend.md §3b)
79
+ - [ ] Confirm backend GetAll endpoints support `?search=` param for EntityLookup
80
+ - [ ] Verify each EntityLookup has `apiEndpoint`, `mapOption`, `label` props
81
81
 
82
82
  ---
83
83
 
@@ -130,11 +130,11 @@ Write to `{output_dir}/05-deep-review.md` with all findings.
130
130
 
131
131
  ```
132
132
  IF BLOCKING findings exist:
133
- → Load steps/step-06-resolve.md (fix BLOCKING findings first)
134
- → Then step-07-tests.md (tests are MANDATORY)
133
+ → Load steps/step-06-resolve.md (fix findings first)
134
+ → Then step-07-tests.md (tests are required)
135
135
 
136
136
  ELSE:
137
137
  → Load steps/step-07-tests.md — IMMEDIATELY
138
138
  ```
139
139
 
140
- > **REMINDER:** Tests are MANDATORY. Do NOT stop after Deep Review — proceed to step-07.
140
+ Tests are required. Do not stop after Deep Review — proceed to step-07.
@@ -44,10 +44,10 @@ TaskUpdate(taskId: finding_task_id, status: "completed")
44
44
 
45
45
  **Fixing rules:**
46
46
  - Use the SAME skill/MCP that created the original code
47
- - If the finding is in a controller use /controller or MCP scaffold_extension
48
- - If the finding is in seed data use MCP generate_permissions
49
- - If the finding is in frontend use /ui-components or MCP scaffold_routes
50
- - NEVER fix by writing raw SmartStack code
47
+ - If the finding is in a controller, use /controller or MCP scaffold_extension
48
+ - If the finding is in seed data, use MCP generate_permissions
49
+ - If the finding is in frontend, use /ui-components or MCP scaffold_routes
50
+ - Do not fix by writing raw SmartStack code
51
51
 
52
52
  ---
53
53
 
@@ -66,7 +66,7 @@ For each finding:
66
66
 
67
67
  ## 3. Re-Validate
68
68
 
69
- After all BLOCKING findings are fixed:
69
+ After all findings are fixed:
70
70
 
71
71
  ```
72
72
  1. MCP validate_conventions → 0 errors
@@ -89,7 +89,7 @@ fix({module}): resolve review findings {F01, F02, ...}
89
89
  ```
90
90
  **APEX SmartStack - Resolve Complete**
91
91
 
92
- **BLOCKING findings:** {count}
92
+ **Findings:** {count}
93
93
  **Resolved:** {count}
94
94
  **Remaining:** {count} (should be 0)
95
95
 
@@ -110,11 +110,11 @@ Write to `{output_dir}/06-resolve.md` with resolution log.
110
110
  ## 7. Route to Next Step
111
111
 
112
112
  ```
113
- IF remaining BLOCKING > 0:
113
+ IF remaining findings > 0:
114
114
  → Loop: fix remaining, re-validate (max 3 iterations)
115
115
  → If stuck, ask user before continuing
116
116
 
117
- → Load steps/step-07-tests.md — MANDATORY, do NOT skip
117
+ → Load steps/step-07-tests.md — required, do not skip
118
118
  ```
119
119
 
120
- > **REMINDER:** Tests are MANDATORY. After resolving all findings, proceed to step-07 immediately.
120
+ After resolving all findings, proceed to step-07 immediately.
@@ -12,7 +12,7 @@ next_step: steps/step-08-run-tests.md
12
12
  > Backend and frontend tests were already scaffolded and run inline (Layer 2 and Layer 3).
13
13
  > This step focuses on: security tests, coverage gaps, cross-layer scenarios, and remaining failures.
14
14
 
15
- **Goal:** Ensure comprehensive test coverage. Target: >= 80% coverage, 100% pass rate.
15
+ **Goal:** Ensure comprehensive test coverage. Target: >= 80% coverage, 100% pass rate. Acceptable fallback: skip failing tests with TODO comment after 3 fix attempts — escalate to user rather than blocking indefinitely.
16
16
 
17
17
  ---
18
18
 
@@ -29,6 +29,8 @@ TaskUpdate(taskId: progress_tracker_id,
29
29
 
30
30
  ## 0. Ensure Test Infrastructure Exists
31
31
 
32
+ > **Note:** These infrastructure checks are idempotent safety nets. If inline tests (step-03 Layer 2/3) ran successfully, the infrastructure already exists. These checks guard against edge cases where inline test scaffolding was skipped or partially completed.
33
+
32
34
  ### 0a. Frontend Test Tooling (if frontend was generated)
33
35
 
34
36
  > **Before scaffolding additional frontend tests, the test infrastructure must be in place.**
@@ -9,7 +9,7 @@ next_step: COMPLETE
9
9
  # Step 8: Run Final Test Sweep
10
10
 
11
11
  **CRITICAL:** Fix the CODE, not the tests. Tests represent expected behavior.
12
- 100% pass required for Sonar quality gate.
12
+ Target 100% pass for Sonar quality gate. If stuck after max retries, skip with TODO and escalate.
13
13
 
14
14
  ---
15
15