create-sdd-project 0.16.4 → 0.16.6

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": "create-sdd-project",
3
- "version": "0.16.4",
3
+ "version": "0.16.6",
4
4
  "description": "Create a new SDD DevFlow project with AI-assisted development workflow",
5
5
  "bin": {
6
6
  "create-sdd-project": "bin/cli.js"
@@ -24,6 +24,11 @@ Before starting:
24
24
  2. **Product tracker must have pending features.** Read `docs/project_notes/product-tracker.md` → Features table. If no features have step < 6/6, there is nothing to do.
25
25
  3. **Working tree must be clean.** Run `git status`. If dirty, ask user to commit or stash.
26
26
  4. **No active PM session.** Check if `docs/project_notes/pm-session.lock` exists. If it does, another PM session may be running — ask user before proceeding.
27
+ 5. **Target branch quality gates baseline.** Run `npm test`, `npm run lint`, and `npm run build` on the target branch (main or develop) to verify it is clean BEFORE starting any feature. If any gate fails:
28
+ - Document the failures in `docs/project_notes/bugs.md` as a tech debt entry (e.g., `BUG-DEV-LINT-XXX`).
29
+ - Create a follow-up task in `product-tracker.md` to fix the baseline.
30
+ - STOP and inform the user. Do NOT start features on a broken baseline — features will fail Step 4 quality gates and the agent will be unable to distinguish pre-existing failures from regressions.
31
+ - Exception: if the lint command itself does not exist for some packages, note it but do not block.
27
32
 
28
33
  ---
29
34
 
@@ -59,6 +64,10 @@ Classify complexity for each (Simple / Standard / Complex):
59
64
  ```
60
65
 
61
66
  5. Wait for user to classify all features in the batch.
67
+ 6. **Intra-batch dependency check.** Before proceeding, verify that no feature in the batch depends on another feature in the same batch. If F-Y depends on F-X and both are in the batch:
68
+ - Warn the user explicitly: "F-Y depends on F-X which is also in this batch. F-X's results will be auto-merged at L5 without your validation before F-Y starts. If F-Y's spec/implementation depends on decisions made in F-X, those decisions won't have been validated by you."
69
+ - Ask the user: "Do you want to (a) remove F-Y from this batch and run it in a future session after validating F-X, or (b) proceed knowing the risk?"
70
+ - Default to (a) — only proceed with (b) if the user explicitly confirms.
62
71
 
63
72
  ### Phase 2: Session Initialization
64
73
 
@@ -192,6 +201,8 @@ Completed: 2/3 | Blocked: 1/3 | Remaining: 0
192
201
  |-----------|-------|-----------|
193
202
  | Max features per session | 5 | Model attention degrades after many iterations |
194
203
  | Mandatory compact after 2 features | STOP + `/compact` + `continue pm` | Context degradation causes skipped steps and lost constraints |
204
+ | Target branch baseline check | tests/lint/build before first feature | Pre-existing failures would block Step 4 quality gates and contaminate audit trails |
205
+ | Intra-batch dependency check | Warn + default to remove dependent feature | Auto-merge at L5 means dependent feature won't see user-validated parent results |
195
206
  | Consecutive failure circuit breaker | 3 | Prevent wasting resources on a systemic issue |
196
207
  | Kill switch | `pm-stop.md` or `stop pm` | User can always halt the loop |
197
208
  | Session lock | `pm-session.lock` | Prevents concurrent PM sessions |
@@ -24,6 +24,11 @@ Before starting:
24
24
  2. **Product tracker must have pending features.** Read `docs/project_notes/product-tracker.md` → Features table. If no features have step < 6/6, there is nothing to do.
25
25
  3. **Working tree must be clean.** Run `git status`. If dirty, ask user to commit or stash.
26
26
  4. **No active PM session.** Check if `docs/project_notes/pm-session.lock` exists. If it does, another PM session may be running — ask user before proceeding.
27
+ 5. **Target branch quality gates baseline.** Run `npm test`, `npm run lint`, and `npm run build` on the target branch (main or develop) to verify it is clean BEFORE starting any feature. If any gate fails:
28
+ - Document the failures in `docs/project_notes/bugs.md` as a tech debt entry (e.g., `BUG-DEV-LINT-XXX`).
29
+ - Create a follow-up task in `product-tracker.md` to fix the baseline.
30
+ - STOP and inform the user. Do NOT start features on a broken baseline — features will fail Step 4 quality gates and the agent will be unable to distinguish pre-existing failures from regressions.
31
+ - Exception: if the lint command itself does not exist for some packages, note it but do not block.
27
32
 
28
33
  ---
29
34
 
@@ -59,6 +64,10 @@ Classify complexity for each (Simple / Standard / Complex):
59
64
  ```
60
65
 
61
66
  5. Wait for user to classify all features in the batch.
67
+ 6. **Intra-batch dependency check.** Before proceeding, verify that no feature in the batch depends on another feature in the same batch. If F-Y depends on F-X and both are in the batch:
68
+ - Warn the user explicitly: "F-Y depends on F-X which is also in this batch. F-X's results will be auto-merged at L5 without your validation before F-Y starts. If F-Y's spec/implementation depends on decisions made in F-X, those decisions won't have been validated by you."
69
+ - Ask the user: "Do you want to (a) remove F-Y from this batch and run it in a future session after validating F-X, or (b) proceed knowing the risk?"
70
+ - Default to (a) — only proceed with (b) if the user explicitly confirms.
62
71
 
63
72
  ### Phase 2: Session Initialization
64
73
 
@@ -192,6 +201,8 @@ Completed: 2/3 | Blocked: 1/3 | Remaining: 0
192
201
  |-----------|-------|-----------|
193
202
  | Max features per session | 5 | Model attention degrades after many iterations |
194
203
  | Mandatory compact after 2 features | STOP + `/compact` + `continue pm` | Context degradation causes skipped steps and lost constraints |
204
+ | Target branch baseline check | tests/lint/build before first feature | Pre-existing failures would block Step 4 quality gates and contaminate audit trails |
205
+ | Intra-batch dependency check | Warn + default to remove dependent feature | Auto-merge at L5 means dependent feature won't see user-validated parent results |
195
206
  | Consecutive failure circuit breaker | 3 | Prevent wasting resources on a systemic issue |
196
207
  | Kill switch | `pm-stop.md` or `stop pm` | User can always halt the loop |
197
208
  | Session lock | `pm-session.lock` | Prevents concurrent PM sessions |
@@ -54,3 +54,32 @@ jobs:
54
54
 
55
55
  - name: Build
56
56
  run: npm run build --if-present
57
+
58
+ # ===========================================
59
+ # Scaling tips
60
+ # ===========================================
61
+ # When this project grows and you split CI into multiple jobs with path
62
+ # filters (e.g., test-api, test-frontend triggered only when relevant files
63
+ # change), enabling branch protection that requires those individual checks
64
+ # will create a deadlock for docs-only PRs: no code changed → no jobs run →
65
+ # required checks never report → merge blocked.
66
+ #
67
+ # Solution: add a rollup job that always runs and aggregates the others.
68
+ # Then configure branch protection to require ONLY the rollup, not the
69
+ # individual jobs:
70
+ #
71
+ # ci-success:
72
+ # runs-on: ubuntu-latest
73
+ # needs: [test-api, test-frontend] # list all jobs to aggregate
74
+ # if: always()
75
+ # steps:
76
+ # - name: All required jobs passed or were skipped
77
+ # run: |
78
+ # if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
79
+ # echo "One or more required jobs failed"
80
+ # exit 1
81
+ # fi
82
+ #
83
+ # The rollup passes when all dependencies pass OR were skipped due to path
84
+ # filters. This is the standard pattern for path-filtered CI + required
85
+ # checks. Avoid `|| true` and `continue-on-error` — they silence real failures.