agentic-sdlc-wizard 1.28.0 → 1.29.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.
@@ -13,7 +13,7 @@
13
13
  "name": "sdlc-wizard",
14
14
  "source": ".",
15
15
  "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
16
- "version": "1.28.0",
16
+ "version": "1.29.0",
17
17
  "author": {
18
18
  "name": "Stefan Ayala"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdlc-wizard",
3
- "version": "1.28.0",
3
+ "version": "1.29.0",
4
4
  "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
5
5
  "author": {
6
6
  "name": "Stefan Ayala",
package/CHANGELOG.md CHANGED
@@ -4,6 +4,32 @@ All notable changes to the SDLC Wizard.
4
4
 
5
5
  > **Note:** This changelog is for humans to read. Don't manually apply these changes - just run the wizard ("Check for SDLC wizard updates") and it handles everything automatically.
6
6
 
7
+ ## [1.29.0] - 2026-04-07
8
+
9
+ ### Added
10
+ - Node 24 compliance across all GitHub Actions workflows (#93, PR #160)
11
+ - 5 action version bumps: checkout@v5, setup-node@v5, upload-artifact@v6, create-pull-request@v8, sticky-pull-request-comment@v3
12
+ - 2 third-party actions replaced with `gh` CLI: `int128/hide-comment-action` → GraphQL `minimizeComment`, `softprops/action-gh-release` → `gh release create`
13
+ - 4 node-version bumps from 20 to 22
14
+ - 13 new compliance regression tests (`test-node24-compliance.sh`)
15
+ - Expression injection P0 in release.yml caught by CI reviewer and fixed
16
+ - Autocompact env var in settings.json (#88, PR #161)
17
+ - CLI now ships `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75` in `settings.json` `env` field (200K default)
18
+ - Smart merge preserves existing user env vars on upgrade; `--force` resets to defaults
19
+ - Handles malformed env values (arrays, strings) gracefully with type validation
20
+ - Setup wizard Step 9.5 references settings.json instead of shell profiles; 1M users guided to 30%
21
+ - 9 new tests (41 total CLI tests)
22
+ - Effectiveness scoreboard (#80, PR #162)
23
+ - `.metrics/catches.jsonl`: 52 historical bug catches extracted from repo history
24
+ - `catch-analytics.sh`: DDE (Defect Detection Effectiveness) per layer, escape rates, severity breakdown
25
+ - Results: cross-model-review (48%) and self-review (46%) nearly tied; self-review missed 28 bugs caught downstream; all 3 P0s caught by cross-model or CI review
26
+ - 14 new quality tests (`test-effectiveness-scoreboard.sh`)
27
+ - Log automation deferred until analytics proven useful (prove-it gate)
28
+
29
+ ### Fixed
30
+ - Expression injection in `release.yml`: `${{ github.ref_name }}` directly in `run:` shell command allowed tag-based code injection. Fixed by passing through `TAG_NAME` env var (P0, caught by CI reviewer)
31
+ - `$TOTAL_` variable name collision in `catch-analytics.sh`: bash parsed as undefined variable `TOTAL_` instead of `$TOTAL` + underscore. Fixed with `${TOTAL}_` brace syntax (P0, caught by CI reviewer)
32
+
7
33
  ## [1.28.0] - 2026-04-06
8
34
 
9
35
  ### Added
@@ -807,10 +807,19 @@ Override the default auto-compact threshold with environment variables. These ar
807
807
  | `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Trigger compaction at this % of context capacity (1-100) | ~95% |
808
808
  | `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Override context capacity in tokens (useful for 1M models) | Model default |
809
809
 
810
- Set these in your shell profile (`~/.bashrc`, `~/.zshrc`) or per-project `.envrc`:
810
+ **Recommended:** The SDLC Wizard CLI sets `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75` in `.claude/settings.json` by default (200K model optimized). To customize, edit the `env` field in `.claude/settings.json`:
811
+
812
+ ```json
813
+ {
814
+ "env": {
815
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
816
+ }
817
+ }
818
+ ```
819
+
820
+ Alternatively, set via shell profile (`~/.bashrc`, `~/.zshrc`) or per-project `.envrc`:
811
821
 
812
822
  ```bash
813
- # Example: compact earlier on a 200K model
814
823
  export CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75
815
824
  ```
816
825
 
@@ -2600,7 +2609,7 @@ If deployment fails or post-deploy verification catches issues:
2600
2609
 
2601
2610
  **SDLC.md:**
2602
2611
  ```markdown
2603
- <!-- SDLC Wizard Version: 1.28.0 -->
2612
+ <!-- SDLC Wizard Version: 1.29.0 -->
2604
2613
  <!-- Setup Date: [DATE] -->
2605
2614
  <!-- Completed Steps: step-0.1, step-0.2, step-0.4, step-1, step-2, step-3, step-4, step-5, step-6, step-7, step-8, step-9 -->
2606
2615
  <!-- Git Workflow: [PRs or Solo] -->
@@ -3659,7 +3668,7 @@ Walk through updates? (y/n)
3659
3668
  Store wizard state in `SDLC.md` as metadata comments (invisible to readers, parseable by Claude):
3660
3669
 
3661
3670
  ```markdown
3662
- <!-- SDLC Wizard Version: 1.28.0 -->
3671
+ <!-- SDLC Wizard Version: 1.29.0 -->
3663
3672
  <!-- Setup Date: 2026-01-24 -->
3664
3673
  <!-- Completed Steps: step-0.1, step-0.2, step-1, step-2, step-3, step-4, step-5, step-6, step-7, step-8, step-9 -->
3665
3674
  <!-- Git Workflow: PRs -->
package/cli/init.js CHANGED
@@ -51,6 +51,18 @@ function mergeSettings(existingPath, templatePath, force) {
51
51
  const existing = JSON.parse(fs.readFileSync(existingPath, 'utf8'));
52
52
  const template = JSON.parse(fs.readFileSync(templatePath, 'utf8'));
53
53
 
54
+ // Merge env field
55
+ if (template.env) {
56
+ if (!existing.env || typeof existing.env !== 'object' || Array.isArray(existing.env)) {
57
+ existing.env = {};
58
+ }
59
+ for (const [key, val] of Object.entries(template.env)) {
60
+ if (!(key in existing.env) || force) {
61
+ existing.env[key] = val;
62
+ }
63
+ }
64
+ }
65
+
54
66
  if (!existing.hooks) existing.hooks = {};
55
67
 
56
68
  for (const [event, templateEntries] of Object.entries(template.hooks || {})) {
@@ -1,4 +1,7 @@
1
1
  {
2
+ "env": {
3
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
4
+ },
2
5
  "hooks": {
3
6
  "UserPromptSubmit": [
4
7
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-sdlc-wizard",
3
- "version": "1.28.0",
3
+ "version": "1.29.0",
4
4
  "description": "SDLC enforcement for Claude Code — hooks, skills, and wizard setup in one command",
5
5
  "bin": {
6
6
  "sdlc-wizard": "./cli/bin/sdlc-wizard.js"
@@ -183,13 +183,23 @@ Present suggestions and let the user confirm.
183
183
 
184
184
  ### Step 9.5: Context Window Configuration
185
185
 
186
- Recommend autocompact settings based on the user's context window:
186
+ The CLI already sets `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75` in `.claude/settings.json` `env` field (200K default). Ask the user which model context window they use:
187
+
188
+ - **200K models (default):** Already configured. Confirm `75` is set in `settings.json` `env` field
189
+ - **1M models:** Update `settings.json` `env` field: set `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` to `"30"` — the default fires at ~76K on 1M, wasting 92% of the window. Optionally also add `CLAUDE_CODE_AUTO_COMPACT_WINDOW` set to `"400000"`
190
+
191
+ To update, edit `.claude/settings.json`:
192
+ ```json
193
+ {
194
+ "env": {
195
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
196
+ }
197
+ }
198
+ ```
187
199
 
188
- - **200K models (default):** Suggest `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75` — leaves room for implementation after planning
189
- - **1M models:** Suggest `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30` or `CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000` — the default fires at ~76K on 1M, wasting 92% of the window
190
- - **CI pipelines:** Suggest 60% — short tasks, compact early
200
+ For CI pipelines, consider `"60"` — short tasks benefit from compacting early.
191
201
 
192
- Tell the user to add the export to their shell profile (`~/.bashrc`, `~/.zshrc`) or project `.envrc`. This is guidance, not enforcement the wizard doesn't write shell profiles.
202
+ This is project-scoped and shared with the team via git.
193
203
 
194
204
  ### Step 10: Customize Hooks
195
205
 
@@ -46,9 +46,10 @@ Parse all CHANGELOG entries between the user's installed version and the latest.
46
46
 
47
47
  ```
48
48
  Installed: 1.24.0
49
- Latest: 1.28.0
49
+ Latest: 1.29.0
50
50
 
51
51
  What changed:
52
+ - [1.29.0] Node 24 compliance, autocompact in settings.json, effectiveness scoreboard, ...
52
53
  - [1.28.0] Autocompact benchmarking methodology, canary fact mechanism, benchmark harness, ...
53
54
  - [1.27.0] Domain-adaptive testing diamond, 3 domain fixtures, 25 quality tests, ...
54
55
  - [1.26.0] Codex SDLC Adapter plan, claw-code/OmO/OmX research, CC feature discovery verified, ...