@atlashub/smartstack-cli 4.17.0 → 4.18.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 +1 -1
- package/templates/agents/ba-reader.md +9 -9
- package/templates/agents/ba-writer.md +13 -8
- package/templates/skills/business-analyse/SKILL.md +4 -4
- package/templates/skills/business-analyse/_rules.md +142 -0
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +22 -7
- package/templates/skills/business-analyse/references/acceptance-criteria.md +4 -4
- package/templates/skills/business-analyse/references/agent-module-prompt.md +13 -9
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +2 -2
- package/templates/skills/business-analyse/references/deploy-data-build.md +3 -2
- package/templates/skills/business-analyse/references/prd-generation.md +15 -10
- package/templates/skills/business-analyse/references/robustness-checks.md +12 -9
- package/templates/skills/business-analyse/references/team-orchestration.md +77 -6
- package/templates/skills/business-analyse/references/validation-checklist.md +7 -4
- package/templates/skills/business-analyse/schemas/shared/common-defs.json +2 -1
- package/templates/skills/business-analyse/steps/step-00-init.md +31 -63
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +97 -7
- package/templates/skills/business-analyse/steps/step-03a1-setup.md +3 -23
- package/templates/skills/business-analyse/steps/step-03a2-analysis.md +2 -3
- package/templates/skills/business-analyse/steps/step-03b-ui.md +2 -22
- package/templates/skills/business-analyse/steps/step-03c-compile.md +44 -139
- package/templates/skills/business-analyse/steps/step-03d-validate.md +198 -290
- package/templates/skills/business-analyse/steps/step-05a-handoff.md +117 -20
- package/templates/skills/ralph-loop/SKILL.md +8 -3
- package/templates/skills/ralph-loop/references/category-completeness.md +20 -4
- package/templates/skills/ralph-loop/references/compact-loop.md +80 -48
- package/templates/skills/ralph-loop/references/init-resume-recovery.md +3 -1
- package/templates/skills/ralph-loop/references/parallel-execution.md +27 -27
- package/templates/skills/ralph-loop/steps/step-00-init.md +19 -9
- package/templates/skills/ralph-loop/steps/step-01-task.md +10 -2
- package/templates/skills/ralph-loop/steps/step-02-execute.md +9 -4
- package/templates/skills/ralph-loop/steps/step-03-commit.md +1 -1
- package/templates/skills/ralph-loop/steps/step-04-check.md +5 -21
- package/templates/skills/ralph-loop/steps/step-05-report.md +6 -1
|
@@ -47,9 +47,12 @@ fi
|
|
|
47
47
|
|
|
48
48
|
### 1.7. Category Completeness Check (RUNS EVERY ITERATION)
|
|
49
49
|
|
|
50
|
-
See `references/category-completeness.md` for
|
|
50
|
+
> **Implementation:** See `references/category-completeness.md` for the full `checkCategoryCompleteness()` function and artifact verification logic.
|
|
51
|
+
> Do NOT duplicate the implementation here — load and execute the reference.
|
|
51
52
|
|
|
52
53
|
```javascript
|
|
54
|
+
// Load references/category-completeness.md — execute checkCategoryCompleteness() as defined there
|
|
55
|
+
// (includes guardrail injection AND artifact verification)
|
|
53
56
|
const { missing, guardrailsNeeded } = checkCategoryCompleteness(prd);
|
|
54
57
|
|
|
55
58
|
if (guardrailsNeeded.length > 0) {
|
|
@@ -57,26 +60,7 @@ if (guardrailsNeeded.length > 0) {
|
|
|
57
60
|
writeJSON('.ralph/prd.json', prd);
|
|
58
61
|
console.log(`PRD updated: +${guardrailsNeeded.length} guardrails, ${prd.tasks.filter(t => t.status === 'pending').length} pending tasks`);
|
|
59
62
|
}
|
|
60
|
-
|
|
61
|
-
// Artifact verification (check if completed tasks have files)
|
|
62
|
-
const completedCats = new Set(prd.tasks.filter(t => t.status === 'completed').map(t => t.category));
|
|
63
|
-
const artifactChecks = {
|
|
64
|
-
'frontend': () => glob.sync('**/src/pages/**/*.tsx').length > 0,
|
|
65
|
-
'test': () => glob.sync('tests/**/*Tests.cs').length > 0,
|
|
66
|
-
'api': () => glob.sync('src/*/Controllers/**/*Controller.cs').length > 0
|
|
67
|
-
};
|
|
68
|
-
for (const [cat, check] of Object.entries(artifactChecks)) {
|
|
69
|
-
if (completedCats.has(cat) && !check()) {
|
|
70
|
-
console.warn(`ARTIFACT MISSING: ${cat} tasks marked completed but no files found — resetting to pending`);
|
|
71
|
-
prd.tasks.filter(t => t.category === cat && t.status === 'completed')
|
|
72
|
-
.forEach(t => {
|
|
73
|
-
t.status = 'pending';
|
|
74
|
-
t.error = 'Artifacts missing — re-execute';
|
|
75
|
-
t.completed_at = null;
|
|
76
|
-
});
|
|
77
|
-
writeJSON('.ralph/prd.json', prd);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
63
|
+
// Artifact verification is handled inside checkCategoryCompleteness() — see reference file.
|
|
80
64
|
```
|
|
81
65
|
|
|
82
66
|
## 2. Check Iteration Limit
|
|
@@ -131,13 +131,18 @@ Write to `.ralph/reports/{feature-slug}.md`:
|
|
|
131
131
|
|
|
132
132
|
```javascript
|
|
133
133
|
// Clean up section-split temporary files
|
|
134
|
-
if
|
|
134
|
+
// GUARD: only delete if the overall PRD status is 'completed'.
|
|
135
|
+
// If status is 'partial' or 'failed', keep temporary PRD files so the user
|
|
136
|
+
// can resume with `-r` — deleting them here would make recovery impossible.
|
|
137
|
+
if (prd._sectionSplit?.enabled && prd.status === 'completed') {
|
|
135
138
|
for (const phase of prd._sectionSplit.phases) {
|
|
136
139
|
if (fileExists(phase.prdFile) && phase.prdFile !== '.ralph/prd.json') {
|
|
137
140
|
deleteFile(phase.prdFile);
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
delete prd._sectionSplit;
|
|
144
|
+
} else if (prd._sectionSplit?.enabled && prd.status !== 'completed') {
|
|
145
|
+
console.log(`Section-split temp files preserved (status: ${prd.status}) — use /ralph-loop -r to resume`);
|
|
141
146
|
}
|
|
142
147
|
|
|
143
148
|
prd.updated_at = new Date().toISOString();
|