agentic-sdlc-wizard 1.46.1 → 1.47.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +23 -0
- package/CLAUDE_CODE_SDLC_WIZARD.md +2 -2
- package/README.md +1 -1
- package/package.json +1 -1
- package/skills/sdlc/SKILL.md +18 -0
- package/skills/update/SKILL.md +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,29 @@ 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.47.0] - 2026-04-27
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Codex review progress wrapper** (closes #259). Consumer reported `codex exec` running opaquely during 1-5 minute xhigh reviews — no signal whether Codex is "still thinking" or "crashed silently". New `scripts/codex-review-with-progress.sh` backgrounds `codex exec` with the same default flags (`xhigh`, `danger-full-access`, `-o`) and emits a heartbeat to stderr every N seconds (`SDLC_CODEX_HEARTBEAT_INTERVAL`, default 10s):
|
|
12
|
+
```
|
|
13
|
+
[codex 0m10s elapsed, 0 bytes written to .reviews/latest-review.md] still running...
|
|
14
|
+
[codex 0m20s elapsed, 1342 bytes written to .reviews/latest-review.md] still running...
|
|
15
|
+
[codex finished in 47s with rc=0]
|
|
16
|
+
```
|
|
17
|
+
- **Signal-safe**: uses interruptible `sleep & wait` pattern (plain `sleep` blocks bash signal delivery for up to INTERVAL seconds). SIGTERM/INT/HUP propagates to the child codex within ~1s via TERM-then-KILL cleanup. No orphan codex processes after wrapper kill.
|
|
18
|
+
- **Preflight binary check**: missing/typoed `codex` binary exits 127 with a clear error before backgrounding anything.
|
|
19
|
+
- **No spurious heartbeats**: loop rechecks liveness after each sleep, so a fast-exiting codex doesn't print one final "still running..." after it has already finished.
|
|
20
|
+
- 11 quality tests (`tests/test-codex-progress-wrapper.sh`) using a stub codex binary — no real OpenAI tokens burned. Codex round 3 CERTIFIED 10/10 (rounds 1-2 surfaced subprocess management bugs: missing trap cleanup, sleep blocking signal delivery, missing-binary not exiting 127 — all fixed with regression tests).
|
|
21
|
+
- `skills/sdlc/SKILL.md` Step 2 documents the wrapper as the recommended invocation for long reviews, alongside the bare `codex exec` form.
|
|
22
|
+
|
|
23
|
+
### Files
|
|
24
|
+
|
|
25
|
+
- `scripts/codex-review-with-progress.sh` (new, ~80 lines)
|
|
26
|
+
- `tests/test-codex-progress-wrapper.sh` (new, 11 tests)
|
|
27
|
+
- `.github/workflows/ci.yml` — wires the new test step
|
|
28
|
+
- `skills/sdlc/SKILL.md` — Step 2 documents the wrapper
|
|
29
|
+
|
|
7
30
|
## [1.46.1] - 2026-04-27
|
|
8
31
|
|
|
9
32
|
### Fixed
|
|
@@ -2967,7 +2967,7 @@ If deployment fails or post-deploy verification catches issues:
|
|
|
2967
2967
|
|
|
2968
2968
|
**SDLC.md:**
|
|
2969
2969
|
```markdown
|
|
2970
|
-
<!-- SDLC Wizard Version: 1.
|
|
2970
|
+
<!-- SDLC Wizard Version: 1.47.0 -->
|
|
2971
2971
|
<!-- Setup Date: [DATE] -->
|
|
2972
2972
|
<!-- 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 -->
|
|
2973
2973
|
<!-- Git Workflow: [PRs or Solo] -->
|
|
@@ -4032,7 +4032,7 @@ Walk through updates? (y/n)
|
|
|
4032
4032
|
Store wizard state in `SDLC.md` as metadata comments (invisible to readers, parseable by Claude):
|
|
4033
4033
|
|
|
4034
4034
|
```markdown
|
|
4035
|
-
<!-- SDLC Wizard Version: 1.
|
|
4035
|
+
<!-- SDLC Wizard Version: 1.47.0 -->
|
|
4036
4036
|
<!-- Setup Date: 2026-01-24 -->
|
|
4037
4037
|
<!-- 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 -->
|
|
4038
4038
|
<!-- Git Workflow: PRs -->
|
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ npm install -g agentic-sdlc-wizard
|
|
|
45
45
|
sdlc-wizard init
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
**Manual:** Download `CLAUDE_CODE_SDLC_WIZARD.md` to your project and tell Claude `Run the SDLC wizard setup`.
|
|
48
|
+
**Manual (advanced — escape hatch only):** Download `CLAUDE_CODE_SDLC_WIZARD.md` to your project and tell Claude `Run the SDLC wizard setup`. This skips the live-session auto-invoke and is only intended for environments where `npx`, `curl`, `brew`, and `gh` are all unavailable. The default human path is `npx init` → restart CC → first-prompt auto-setup, not this manual flow.
|
|
49
49
|
</details>
|
|
50
50
|
|
|
51
51
|
<details>
|
package/package.json
CHANGED
package/skills/sdlc/SKILL.md
CHANGED
|
@@ -299,6 +299,24 @@ codex exec \
|
|
|
299
299
|
|
|
300
300
|
**Always use `xhigh` reasoning effort.** Lower settings miss subtle errors (wrong-generation references, stale pricing, cross-file inconsistencies).
|
|
301
301
|
|
|
302
|
+
**Progress visibility (#259):** Reviews at `xhigh` routinely take 1-5 minutes. Without a heartbeat the user can't distinguish "still thinking" from "crashed silently". For long reviews, swap the bare invocation for `scripts/codex-review-with-progress.sh`:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
scripts/codex-review-with-progress.sh \
|
|
306
|
+
.reviews/latest-review.md \
|
|
307
|
+
"You are an independent code reviewer ..."
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
The wrapper passes the same default flags (`xhigh`, `danger-full-access`, `-o`) and emits a heartbeat to stderr every 10s (`SDLC_CODEX_HEARTBEAT_INTERVAL` to tune):
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
[codex 0m10s elapsed, 0 bytes written to .reviews/latest-review.md] still running...
|
|
314
|
+
[codex 0m20s elapsed, 1342 bytes written to .reviews/latest-review.md] still running...
|
|
315
|
+
[codex finished in 47s with rc=0]
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
The output file growth is the closest signal to "Codex is producing tokens". Empty + long elapsed = stuck; growing = working.
|
|
319
|
+
|
|
302
320
|
**Sandbox note:** Codex's Rust binary requires access to macOS system configuration APIs (`SCDynamicStore`) during sandbox initialization. Claude Code's sandbox blocks this access, causing `codex exec` to crash with `system-configuration panicked: Attempted to create a NULL object`. When running `codex exec` from within Claude Code, you MUST use `dangerouslyDisableSandbox: true` on the Bash tool call. This is safe — Codex has its own sandbox (`-s danger-full-access` is already specified), and the CC sandbox bypass only affects the Codex process. This is a known Codex issue ([#15640](https://github.com/openai/codex/issues/15640)).
|
|
303
321
|
|
|
304
322
|
If CERTIFIED → proceed to CI. If NOT CERTIFIED → go to dialogue loop.
|
package/skills/update/SKILL.md
CHANGED
|
@@ -131,9 +131,10 @@ Parse all CHANGELOG entries between the user's installed version and the latest.
|
|
|
131
131
|
|
|
132
132
|
```
|
|
133
133
|
Installed: 1.24.0
|
|
134
|
-
Latest: 1.
|
|
134
|
+
Latest: 1.47.0
|
|
135
135
|
|
|
136
136
|
What changed:
|
|
137
|
+
- [1.47.0] Codex review progress wrapper — closes #259. New `scripts/codex-review-with-progress.sh` wraps `codex exec` with a heartbeat (every 10s by default) showing elapsed time + output file growth. Distinguishes "still thinking" from "crashed silently" during long xhigh reviews. Signal-safe: SIGTERM/INT/HUP cleanly kills the child codex within ~1s (uses interruptible `sleep & wait` pattern instead of plain `sleep`); preflight check on the binary so missing `codex` exits 127 with a clear error; loop rechecks liveness after sleep so a fast-exit codex doesn't print spurious heartbeats. 11 quality tests using a stub codex (no real API calls). Codex round 3 CERTIFIED 10/10.
|
|
137
138
|
- [1.46.1] `npx check` surfaces dangling+enabled plugin state — closes #266. Consumer disabled the wizard plugin via directory rename without flipping `enabledPlugins[sdlc-wizard@sdlc-wizard-local]` in `~/.claude/settings.json`. CC's plugin loader tried to resolve the missing path and crashed UserPromptSubmit on every prompt for **3 days** before the consumer noticed. The wizard's `check` subcommand now cross-references `enabledPlugins` against DANGLING marketplace paths: when both hold (path missing AND plugin enabled), prints a loud `CRASH RISK` block with the exact remediation (flip the boolean to false OR run `/plugin uninstall`). 3 new tests, Codex round 1 CERTIFIED 10/10.
|
|
138
139
|
- [1.46.0] PreCompact dry-run env vars — closes #240. Smoke-testing PreCompact previously required cp'ing real `.reviews/handoff.json` and `.git/` aside, fabricating fake state, restoring — error-prone (consumer clobbered real handoff.json mid-test). Two new env vars: `SDLC_DRY_RUN_HANDOFF_STATUS=PENDING_RECHECK|CERTIFIED|...` simulates handoff status (overrides the real file read); `SDLC_DRY_RUN_GIT_STATE=rebase|merge|cherry-pick` simulates an in-flight git op (no real .git/ needed). Empty/unset → real-state checks (no behavior change). Unknown values (typos) → fall back to real check, NOT silent bypass — Codex round 1 caught the bypass risk and we fixed it with a DRY_RUN_GIT_HANDLED flag. 7 new test-hooks tests. Codex round 2 CERTIFIED 10/10.
|
|
139
140
|
- [1.45.0] PreCompact path (c) — SHA-ancestry self-heal — closes #257. Solo-developer pattern: write fixes, commit them, run targeted Codex recheck, see CERTIFIED in `.reviews/latest-review.md`, ship the feature. Forgetting to bump `handoff.json status` from `PENDING_RECHECK` → `CERTIFIED` is realistic — the file is buried and the visible signals (commits + review file) already say "done". PreCompact hook now self-heals silently when: (a) handoff is `PENDING_*` with no `pr_number`, (b) every SHA cited in `fixes_applied[]` is reachable from HEAD via `git merge-base --is-ancestor`, AND (c) `.reviews/latest-review.md` contains CERTIFIED without `NOT CERTIFIED`. Bracket extraction is escape-aware (depth counter + JSON `\\\"` handling) so `]` inside string literals doesn't terminate the array early. UUIDs (8-4-4-4-12 hex) stripped before SHA extraction so ticket IDs in fixes_applied don't false-block the heal. 9 new tests, Codex round 3 CERTIFIED 10/10.
|