procedure-cli 0.1.13 → 0.1.15

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 (51) hide show
  1. package/README.md +8 -13
  2. package/dist/app.js +27 -15
  3. package/dist/app.js.map +1 -1
  4. package/dist/lib/template.js +1 -1
  5. package/dist/lib/template.js.map +1 -1
  6. package/dist/lib/types.d.ts +1 -1
  7. package/dist/steps/build-test.js +1 -1
  8. package/dist/steps/build-test.js.map +1 -1
  9. package/dist/steps/product-context.js +1 -1
  10. package/dist/steps/product-context.js.map +1 -1
  11. package/dist/steps/project-info.js +1 -1
  12. package/dist/steps/project-info.js.map +1 -1
  13. package/dist/steps/stack-style.js +44 -2
  14. package/dist/steps/stack-style.js.map +1 -1
  15. package/package.json +5 -1
  16. package/templates/gitignore +4 -0
  17. package/.claude/settings.local.json +0 -27
  18. package/.env.example +0 -2
  19. package/AGENTS.md +0 -134
  20. package/CLAUDE.md +0 -138
  21. package/CODE-FIXED.md +0 -252
  22. package/CODE-REVIEW.md +0 -558
  23. package/config/defaults.json +0 -8
  24. package/config/powerline-config.json +0 -52
  25. package/config/stacks/typescript-node.json +0 -15
  26. package/docs/GIAI-THICH-CLAUDE-MD.md +0 -206
  27. package/docs/PRD.md +0 -141
  28. package/docs/USER-STORIES.md +0 -324
  29. package/src/app.tsx +0 -213
  30. package/src/cli.tsx +0 -19
  31. package/src/components/banner.tsx +0 -23
  32. package/src/components/gutter-line.tsx +0 -16
  33. package/src/components/guttered-select.tsx +0 -231
  34. package/src/components/step-indicator.tsx +0 -32
  35. package/src/components/timeline.tsx +0 -57
  36. package/src/lib/fs.ts +0 -23
  37. package/src/lib/git.ts +0 -41
  38. package/src/lib/powerline.ts +0 -48
  39. package/src/lib/template.ts +0 -161
  40. package/src/lib/types.ts +0 -70
  41. package/src/providers/openai.ts +0 -5
  42. package/src/providers/zai.ts +0 -7
  43. package/src/steps/architecture.tsx +0 -72
  44. package/src/steps/build-test.tsx +0 -114
  45. package/src/steps/generation.tsx +0 -176
  46. package/src/steps/powerline.tsx +0 -254
  47. package/src/steps/product-context.tsx +0 -269
  48. package/src/steps/project-info.tsx +0 -183
  49. package/src/steps/stack-style.tsx +0 -304
  50. package/src/theme.ts +0 -15
  51. package/tsconfig.json +0 -17
package/CODE-REVIEW.md DELETED
@@ -1,558 +0,0 @@
1
- # Code Review Log
2
-
3
- ## Writing Standard
4
- - Language: English only.
5
- - Tone: Technical, concise, objective, and evidence-based.
6
- - Ordering: Findings listed by severity (`High`, `Medium`, `Low`).
7
- - Evidence: Every finding includes at least one concrete file reference (`path:line`).
8
- - Actionability: Every finding includes a clear recommendation.
9
- - Validation: Verification notes must be based on actual checks (inspection and/or command output).
10
- - Lifecycle: Each finding includes `Status`: `New`, `Still Open`, `Fixed`, `Regressed`, or `Not Reproducible`.
11
-
12
- ### Entry ID Convention
13
- - Required field for every entry: `Entry ID`
14
- - Format: `CR-YYYYMMDD-###`
15
- - Example: `CR-20260221-001`
16
-
17
- ---
18
-
19
- ## Entry 2026-02-21
20
-
21
- ### Entry ID
22
- - `CR-20260221-001`
23
-
24
- ### Scope
25
- - Full review of current `procedure` CLI codebase.
26
- - Focus areas: scaffolding safety, setup reliability, output integrity, and runtime checks.
27
-
28
- ### Findings (ordered by severity)
29
-
30
- 1. High - Powerline setup writes config to project-local path but references home-directory config (`Status: New`)
31
- - `src/lib/powerline.ts:29`
32
- - `src/lib/powerline.ts:41`
33
- - `settings.json` is configured with `--config=~/.claude/powerline-config.json`, but setup copies config to `<targetDir>/.claude/powerline-config.json`.
34
- - This creates a path mismatch: generated config may not be the file that the configured command reads.
35
- - Recommendation: align both paths. Either copy config to `~/.claude/powerline-config.json` or point the status-line command at `<targetDir>/.claude/powerline-config.json`.
36
-
37
- 2. Medium - Git bootstrap can fail on machines without global git identity (`Status: New`)
38
- - `src/lib/git.ts:8`
39
- - `initGit()` runs `git commit` unconditionally; this fails when `user.name`/`user.email` are not configured.
40
- - Recommendation: pre-check git identity and show a guided fallback, or skip initial commit when identity is missing.
41
-
42
- 3. Medium - `settings.json` parsing is not resilient to malformed existing config (`Status: New`)
43
- - `src/lib/powerline.ts:22`
44
- - `src/lib/powerline.ts:23`
45
- - Existing `.claude/settings.json` is parsed without `try/catch`; malformed JSON aborts setup.
46
- - Recommendation: wrap JSON parse in defensive handling (fallback to empty object + warning message).
47
-
48
- 4. Medium - Generation flow can overwrite existing files without confirmation (`Status: New`)
49
- - `src/lib/template.ts:23`
50
- - `src/lib/template.ts:44`
51
- - `src/steps/generation.tsx:33`
52
- - Scaffolding writes directly into `process.cwd()` and unconditionally overwrites files such as `README.md`, `CLAUDE.md`, and docs.
53
- - Recommendation: add collision detection and explicit overwrite confirmation (or backup/skip mode).
54
-
55
- 5. Low - "Skip generation" path still marks generation step as completed in timeline summary (`Status: New`)
56
- - `src/steps/generation.tsx:47`
57
- - `src/app.tsx:82`
58
- - `src/app.tsx:177`
59
- - Canceling generation advances the wizard, and summary still reports `"files generated"`, which can be inaccurate.
60
- - Recommendation: track generation result explicitly (`generated: true/false`) and render truthful summary text.
61
-
62
- 6. Low - Generated `USER-STORIES.md` can be nearly empty in normal flow (`Status: New`)
63
- - `src/steps/product-context.tsx:80`
64
- - `templates/docs/USER-STORIES.md.hbs:3`
65
- - Wizard currently sets `userStories: []` with no later collection step, so output often contains only title/header.
66
- - Recommendation: either collect at least one story in wizard flow or generate a starter template section when `userStories` is empty.
67
-
68
- ### Verification Notes
69
- - `npm run lint`: pass (`tsc --noEmit`).
70
- - `npm run build`: pass (`tsc`).
71
- - Runtime checks performed in temp directories with compiled modules:
72
- - `setupPowerline()` writes `.claude/powerline-config.json` but status command references `~/.claude/powerline-config.json`.
73
- - `setupPowerline()` throws on malformed `.claude/settings.json` (`SyntaxError`).
74
- - `initGit()` failed at `git commit` in environment without configured identity.
75
- - `scaffoldAll()` overwrote pre-existing `README.md` content.
76
- - `scaffoldAll()` with default wizard-shaped payload produced a mostly empty `docs/USER-STORIES.md` (`# demo — User Stories` only).
77
-
78
- ### Residual Risks / Testing Gaps
79
- - No automated tests for overwrite-protection behavior in generation flow.
80
- - No automated tests for malformed `.claude/settings.json` handling.
81
- - No automated tests for `initGit()` behavior across machines with missing git identity.
82
- - No tests asserting generation summary truthfulness when user cancels.
83
-
84
- ---
85
-
86
- ## Entry 2026-02-21
87
-
88
- ### Entry ID
89
- - `CR-20260221-002`
90
-
91
- ### Supersedes
92
- - `CR-20260221-001`
93
-
94
- ### Scope
95
- - Validate `CR-20260221-001` findings against current code.
96
- - Perform a fresh review pass for post-fix regressions and remaining issues.
97
-
98
- ### Validation Matrix
99
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
100
- |-----------|-------------------|----------------|----------|-------|
101
- | 1 | High | Fixed | `src/lib/powerline.ts:34`, `src/lib/powerline.ts:46` | Status-line command now points to project-local `.claude/powerline-config.json`, matching copied destination. |
102
- | 2 | Medium | Fixed | `src/lib/git.ts:13`, `src/lib/git.ts:19`, `src/lib/git.ts:27` | `initGit()` now checks identity and can return `{ committed: false, reason }` instead of failing immediately for missing identity. |
103
- | 3 | Medium | Fixed | `src/lib/powerline.ts:22`, `src/lib/powerline.ts:25` | Existing `settings.json` parse is wrapped in `try/catch`; malformed JSON no longer aborts setup. |
104
- | 4 | Medium | Fixed | `src/lib/template.ts:38`, `src/steps/generation.tsx:61`, `src/steps/generation.tsx:108` | Generation step now detects collisions and explicitly warns users before proceeding. |
105
- | 5 | Low | Fixed | `src/steps/generation.tsx:48`, `src/app.tsx:84` | Generation skip state is tracked and reflected in step summary (`"skipped"`). |
106
- | 6 | Low | Still Open | `src/steps/product-context.tsx:80`, `templates/docs/USER-STORIES.md.hbs:3` | `userStories` remains hardcoded to empty with no collection step. |
107
-
108
- ### Findings (ordered by severity)
109
- 1. Medium - Git init flow can hard-fail when Generation is skipped in an empty directory (`Finding #7`, `Status: New`)
110
- - `src/lib/git.ts:26`
111
- - `src/steps/powerline.tsx:47`
112
- - `initGit()` always attempts a commit. If no files exist (e.g., user skips generation in an empty folder), `git commit` fails and Powerline step enters unrecoverable error state.
113
- - Recommendation: allow empty initial commit (`--allow-empty`) or skip commit when index is empty while still completing setup.
114
-
115
- 2. Low - Final completion message can be misleading when Generation was skipped (`Finding #8`, `Status: New`)
116
- - `src/app.tsx:134`
117
- - `src/app.tsx:137`
118
- - Completion text always says project "has been scaffolded" and prompts to check generated docs, even when step 6 was skipped.
119
- - Recommendation: gate final message content on `generationSkipped` and show a neutral completion message for skip flow.
120
-
121
- 3. Low - Generated `USER-STORIES.md` can still be nearly empty (`Finding #6`, `Status: Still Open`)
122
- - `src/steps/product-context.tsx:80`
123
- - `templates/docs/USER-STORIES.md.hbs:3`
124
- - Wizard still outputs `userStories: []`, so file may contain only title/header.
125
- - Recommendation: collect user stories during wizard flow or render a starter section/template when array is empty.
126
-
127
- ### Verification Notes
128
- - `npm run typecheck`: pass.
129
- - `npm run build`: pass.
130
- - Runtime probes:
131
- - `setupPowerline()` now writes a status command using `--config=.claude/powerline-config.json` and succeeds with malformed existing settings (parse fallback observed).
132
- - `initGit()` succeeds when files exist; still fails on empty repo commit path.
133
-
134
- ### Residual Risks / Testing Gaps
135
- - No automated test for `initGit()` empty-index behavior.
136
- - No integration test for skip-generation + git-init flow.
137
- - No automated test asserting end-screen messaging for `generationSkipped`.
138
-
139
- ---
140
-
141
- ## Entry 2026-02-21
142
-
143
- ### Entry ID
144
- - `CR-20260221-003`
145
-
146
- ### Supersedes
147
- - `CR-20260221-002`
148
-
149
- ### Scope
150
- - Validate `CR-20260221-002` findings against current code.
151
- - Perform a new post-fix review pass for regressions and unresolved issues.
152
-
153
- ### Validation Matrix
154
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
155
- |-----------|-------------------|----------------|----------|-------|
156
- | 7 | Medium | Fixed | `src/lib/git.ts:28`, `src/lib/git.ts:29` | Empty-index case is now handled; commit is skipped with a structured reason. |
157
- | 8 | Low | Fixed | `src/app.tsx:133`, `src/app.tsx:134`, `src/app.tsx:137` | Final completion messaging now reflects `generationSkipped`. |
158
- | 6 | Low | Still Open | `src/steps/product-context.tsx:80`, `templates/docs/USER-STORIES.md.hbs:3` | User stories are still not collected in wizard flow. |
159
-
160
- ### Findings (ordered by severity)
161
- 1. Low - Powerline step can claim git initialized even when commit was skipped (`Finding #9`, `Status: New`)
162
- - `src/steps/powerline.tsx:125`
163
- - `src/steps/powerline.tsx:127`
164
- - `src/steps/powerline.tsx:130`
165
- - `src/steps/powerline.tsx:132`
166
- - UI always shows "Git repository initialized." when user selected git setup (`wantGit === true`), even if `initGit()` returned `committed: false` (e.g., empty directory or missing identity). This creates mixed success/failure messaging.
167
- - Recommendation: track commit outcome separately (e.g., `gitCommitted`) and render success text only when true; otherwise show warning-only state.
168
-
169
- 2. Low - Generated `USER-STORIES.md` can still be nearly empty (`Finding #6`, `Status: Still Open`)
170
- - `src/steps/product-context.tsx:80`
171
- - `templates/docs/USER-STORIES.md.hbs:3`
172
- - Wizard still outputs `userStories: []`, so generated file may contain only title/header.
173
- - Recommendation: collect at least one story in wizard flow or render a fallback starter template when empty.
174
-
175
- ### Verification Notes
176
- - `npm run typecheck`: pass.
177
- - `npm run build`: pass.
178
- - Runtime probe:
179
- - `initGit()` in empty directory now returns `{ committed: false, reason: "Nothing to commit — directory is empty." }` instead of throwing.
180
-
181
- ### Residual Risks / Testing Gaps
182
- - No UI test covering mixed-result messaging in Powerline step (`wantGit` true + `committed` false).
183
- - No automated test asserting non-empty/default content for generated `docs/USER-STORIES.md`.
184
-
185
- ---
186
-
187
- ## Entry 2026-02-21
188
-
189
- ### Entry ID
190
- - `CR-20260221-004`
191
-
192
- ### Supersedes
193
- - `CR-20260221-003`
194
-
195
- ### Scope
196
- - Correct review status drift by reconciling against latest `CODE-FIXED.md`.
197
- - Run a fresh current-state review after reconciliation.
198
-
199
- ### Validation Matrix
200
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
201
- |-----------|-------------------|----------------|----------|-------|
202
- | 6 | Low | Fixed | `CODE-FIXED.md:54`, `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | Previously mis-labeled as open in `CR-20260221-003`; fix existed in `CF-20260222-001` and template fallback is present. |
203
- | 9 | Low | Still Open | `src/steps/powerline.tsx:125`, `src/steps/powerline.tsx:130` | Success and warning can render together when commit is skipped. |
204
-
205
- ### Findings (ordered by severity)
206
- 1. Low - Powerline step can claim git initialized even when commit was skipped (`Finding #9`, `Status: Still Open`)
207
- - `src/steps/powerline.tsx:125`
208
- - `src/steps/powerline.tsx:127`
209
- - `src/steps/powerline.tsx:130`
210
- - `src/steps/powerline.tsx:132`
211
- - UI always shows "Git repository initialized." when `wantGit` is true, even when `initGit()` reports `{ committed: false, reason }`.
212
- - Recommendation: track commit outcome (e.g., `gitCommitted`) and render the success line only when a commit actually succeeded.
213
-
214
- ### Verification Notes
215
- - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before this review.
216
- - `npm run typecheck`: pass.
217
- - `npm run build`: pass.
218
- - Runtime probe: scaffolding with empty `userStories` now renders fallback user-story starter content (`fallback-ok`), confirming `Finding #6` is fixed.
219
-
220
- ### Residual Risks / Testing Gaps
221
- - No UI test for Powerline mixed-result messaging (`wantGit` true + `committed` false).
222
-
223
- ---
224
-
225
- ## Entry 2026-02-21
226
-
227
- ### Entry ID
228
- - `CR-20260221-005`
229
-
230
- ### Supersedes
231
- - `CR-20260221-004`
232
-
233
- ### Scope
234
- - Fresh review cycle after `CF-20260222-003`.
235
- - Validate open findings against latest code and current build/typecheck status.
236
-
237
- ### Validation Matrix
238
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
239
- |-----------|-------------------|----------------|----------|-------|
240
- | 9 | Low | Fixed | `CODE-FIXED.md:112`, `src/steps/powerline.tsx:22`, `src/steps/powerline.tsx:127`, `src/steps/powerline.tsx:132` | Powerline now separates success and warning states by commit outcome (`gitCommitted`). |
241
- | 6 | Low | Fixed | `CODE-FIXED.md:54`, `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | USER-STORIES fallback remains in place for empty `userStories`. |
242
-
243
- ### Findings (ordered by severity)
244
- - No new functional findings identified in this review cycle.
245
-
246
- ### Verification Notes
247
- - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before review.
248
- - `npm run typecheck`: pass.
249
- - `npm run build`: pass.
250
- - Code inspection confirms `CF-20260222-003` fix is present in current `src/steps/powerline.tsx`.
251
-
252
- ### Residual Risks / Testing Gaps
253
- - No automated UI tests currently cover end-to-end Powerline branching (`gitCommitted` true/false).
254
-
255
- ---
256
-
257
- ## Entry 2026-02-22
258
-
259
- ### Entry ID
260
- - `CR-20260222-001`
261
-
262
- ### Supersedes
263
- - `CR-20260221-006`
264
-
265
- ### Scope
266
- - New review cycle on current `main` state.
267
- - Validate latest fixed findings against code and scan for regressions.
268
-
269
- ### Validation Matrix
270
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
271
- |-----------|-------------------|----------------|----------|-------|
272
- | 9 | Low | Fixed | `CODE-FIXED.md:112`, `src/steps/powerline.tsx:22`, `src/steps/powerline.tsx:127`, `src/steps/powerline.tsx:132` | Setup UI still correctly separates successful git init from warning states. |
273
- | 6 | Low | Fixed | `CODE-FIXED.md:54`, `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | USER-STORIES fallback remains intact for empty `userStories`. |
274
-
275
- ### Findings (ordered by severity)
276
- - No new functional findings identified in this review cycle.
277
-
278
- ### Verification Notes
279
- - Procedure compliance: reviewed latest `CODE-REVIEW.md` and `CODE-FIXED.md` before analysis.
280
- - `npm run typecheck`: pass.
281
- - `npm run build`: pass.
282
- - Code inspection confirms latest fix-cycle behavior remains present in current source.
283
-
284
- ### Residual Risks / Testing Gaps
285
- - No automated UI test coverage for generation + setup end-to-end branching scenarios.
286
-
287
- ---
288
-
289
- ## Entry 2026-02-22
290
-
291
- ### Entry ID
292
- - `CR-20260222-002`
293
-
294
- ### Supersedes
295
- - `CR-20260222-001`
296
-
297
- ### Scope
298
- - Review current local code state after latest UI/setup flow changes.
299
- - Validate previously fixed findings and check for new regressions.
300
-
301
- ### Validation Matrix
302
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
303
- |-----------|-------------------|----------------|----------|-------|
304
- | 9 | Low | Fixed | `src/steps/powerline.tsx:127`, `src/steps/powerline.tsx:132` | Mixed success/warning messaging remains resolved. |
305
- | 6 | Low | Fixed | `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | USER-STORIES fallback remains in place. |
306
-
307
- ### Findings (ordered by severity)
308
- 1. Low - Setup step summary always implies git initialization even when user declines git setup (`Finding #10`, `Status: New`)
309
- - `src/app.tsx:88`
310
- - `src/app.tsx:89`
311
- - Setup summary currently always includes `"Git init"` for step 7, regardless of user choice in `src/steps/powerline.tsx` (`onCancel` path for git).
312
- - Recommendation: track git setup choice/result in `WizardAnswers` (e.g., `setupGit: boolean`) and render summary based on actual user selection/outcome.
313
-
314
- ### Verification Notes
315
- - Procedure compliance: reviewed latest `CODE-REVIEW.md` and `CODE-FIXED.md` before this cycle.
316
- - `npm run typecheck`: pass.
317
- - `npm run build`: pass.
318
-
319
- ### Residual Risks / Testing Gaps
320
- - No UI test coverage for setup summary correctness when user declines git initialization.
321
-
322
- ---
323
-
324
- ## Entry 2026-02-21
325
-
326
- ### Entry ID
327
- - `CR-20260221-006`
328
-
329
- ### Supersedes
330
- - `CR-20260221-005`
331
-
332
- ### Scope
333
- - New review cycle after latest documented fix entry (`CF-20260222-003`).
334
- - Validate current status of previously fixed findings and scan for regressions.
335
-
336
- ### Validation Matrix
337
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
338
- |-----------|-------------------|----------------|----------|-------|
339
- | 9 | Low | Fixed | `CODE-FIXED.md:112`, `src/steps/powerline.tsx:22`, `src/steps/powerline.tsx:127`, `src/steps/powerline.tsx:132` | Commit outcome is now reflected in UI; mixed success/warning state is resolved. |
340
- | 6 | Low | Fixed | `CODE-FIXED.md:54`, `templates/docs/USER-STORIES.md.hbs:3`, `templates/docs/USER-STORIES.md.hbs:23` | USER-STORIES fallback remains present and active when story array is empty. |
341
-
342
- ### Findings (ordered by severity)
343
- - No new functional findings identified in this review cycle.
344
-
345
- ### Verification Notes
346
- - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before review.
347
- - `npm run typecheck`: pass.
348
- - `npm run build`: pass.
349
- - Code inspection confirms `CF-20260222-003` changes remain present in `src/steps/powerline.tsx`.
350
-
351
- ### Residual Risks / Testing Gaps
352
- - No automated UI tests currently cover end-to-end Powerline branching (`gitCommitted` true/false).
353
-
354
- ---
355
-
356
- ## Entry 2026-02-22
357
-
358
- ### Entry ID
359
- - `CR-20260222-003`
360
-
361
- ### Supersedes
362
- - `CR-20260222-002`
363
-
364
- ### Scope
365
- - Start a new review cycle on current local working tree.
366
- - Validate latest fix-log state and review recent UI/theme changes for regressions.
367
-
368
- ### Validation Matrix
369
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
370
- |-----------|-------------------|----------------|----------|-------|
371
- | 10 | Low | Fixed | `CODE-FIXED.md:136`, `src/lib/types.ts:68`, `src/app.tsx:90`, `src/steps/powerline.tsx:49` | Setup summary now reflects actual git setup choice (`Git init: yes/no`). |
372
-
373
- ### Findings (ordered by severity)
374
- 1. Low - Theme rule is not fully applied; one `dimColor` usage remains (`Finding #11`, `Status: New`)
375
- - `src/steps/build-test.tsx:68`
376
- - Current procedure in `CLAUDE.md` requires using hex values from `src/theme.ts` and avoiding terminal color names/dim variants for consistency. `BuildTest` still renders `(<default>)` with `dimColor`.
377
- - Recommendation: replace `dimColor` with `color={C.overlay1}` and keep all color rendering sourced from `src/theme.ts`.
378
-
379
- ### Verification Notes
380
- - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before this review.
381
- - `npm run typecheck`: pass.
382
- - `npm run build`: pass.
383
- - Consistency scan: `rg "dimColor|color=\"(cyan|green|red|yellow|blue|magenta|white|black)\"" -n src` reports only `src/steps/build-test.tsx:68`.
384
-
385
- ### Residual Risks / Testing Gaps
386
- - No snapshot/UI regression tests currently enforce theme consistency rules across wizard steps.
387
-
388
- ---
389
-
390
- ## Entry 2026-02-22
391
-
392
- ### Entry ID
393
- - `CR-20260222-004`
394
-
395
- ### Supersedes
396
- - `CR-20260222-003`
397
-
398
- ### Scope
399
- - New review cycle after recent CLI pre-flight and documentation updates.
400
- - Validate latest fixed findings and check for regressions in runtime behavior.
401
-
402
- ### Validation Matrix
403
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
404
- |-----------|-------------------|----------------|----------|-------|
405
- | 11 | Low | Fixed | `CODE-FIXED.md:188`, `src/steps/build-test.tsx:68` | Theme consistency fix remains present (`color={C.overlay1}` in Build & Test default hint). |
406
-
407
- ### Findings (ordered by severity)
408
- 1. Medium - New empty-directory hard stop regresses overwrite-confirmation flow (`Finding #12`, `Status: New`)
409
- - `src/cli.tsx:7`
410
- - `src/cli.tsx:8`
411
- - `src/steps/generation.tsx:45`
412
- - `src/steps/generation.tsx:139`
413
- - `src/lib/template.ts:40`
414
- - CLI now exits before wizard render when cwd has any entries. This bypasses the existing generation-stage conflict detection and explicit overwrite confirmation (`checkConflicts` + "⚠ Will overwrite"), removing a previously supported safe path for regeneration in non-empty directories.
415
- - Recommendation: downgrade pre-flight to a warning (not hard exit), or gate strict-empty behavior behind an explicit flag while preserving Step 6 overwrite confirmation.
416
-
417
- 2. Low - Empty-directory guidance command is inconsistent with repo package metadata (`Finding #13`, `Status: New`)
418
- - `src/cli.tsx:15`
419
- - `package.json:2`
420
- - Error guidance suggests `npx @b3awesome/procedure`, but repository package metadata is `procedure-cli` with bin `procedure`. This can mislead contributors running the package directly from this repo context.
421
- - Recommendation: derive suggested invocation from package metadata/config (single source of truth) or print both supported invocations explicitly.
422
-
423
- ### Verification Notes
424
- - Procedure compliance: read latest `CODE-REVIEW.md` and `CODE-FIXED.md` before this review.
425
- - `npm run typecheck`: pass.
426
- - `npm run build`: pass.
427
- - Reviewed local working-tree diffs in `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, and `src/cli.tsx`.
428
-
429
- ### Residual Risks / Testing Gaps
430
- - No integration test for behavior in non-empty directories vs regeneration flow (`checkConflicts` path).
431
- - No test that validates CLI guidance text stays aligned with actual package/bin invocation names.
432
-
433
- ---
434
-
435
- ## Entry 2026-02-22
436
-
437
- ### Entry ID
438
- - `CR-20260222-005`
439
-
440
- ### Supersedes
441
- - `CR-20260222-004`
442
-
443
- ### Scope
444
- - New review cycle after in-step navigation changes across wizard steps and docs updates.
445
- - Validate latest fixed findings and identify regressions in current unstaged workspace.
446
-
447
- ### Validation Matrix
448
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
449
- |-----------|-------------------|----------------|----------|-------|
450
- | 12 | Medium | Fixed | `CODE-FIXED.md:210`, `src/cli.tsx:11`, `src/cli.tsx:13` | Non-empty directories now warn and continue; Generation overwrite flow remains reachable. |
451
- | 13 | Low | Fixed | `CODE-FIXED.md:214`, `src/cli.tsx:16` | CLI guidance now shows both invocation forms. |
452
-
453
- ### Findings (ordered by severity)
454
- 1. Low - Last-field navigation behavior is inconsistent with UI hints (`Finding #14`, `Status: New`)
455
- - `src/steps/build-test.tsx:47`
456
- - `src/steps/build-test.tsx:56`
457
- - `src/steps/build-test.tsx:109`
458
- - `src/steps/product-context.tsx:93`
459
- - `src/steps/product-context.tsx:103`
460
- - `src/steps/product-context.tsx:260`
461
- - On final text fields, the hint intentionally omits `↓ next` (showing only `enter confirm`), but pressing `↓` still completes the step via the shared down-arrow handler. This creates hidden behavior not reflected in the prompt and can trigger accidental completion.
462
- - Recommendation: gate `key.downArrow` completion behind `!isLast` (and keep `Enter` as the only completion key on last fields), or explicitly document/display `↓` as confirm on last fields.
463
-
464
- 2. Low - PRD documentation reintroduces stale empty-directory behavior (`Finding #15`, `Status: New`)
465
- - `docs/PRD.md:29`
466
- - `src/cli.tsx:11`
467
- - PRD currently states the CLI "exits" when cwd contains files, but runtime behavior now warns and continues.
468
- - Recommendation: update PRD wording to match current behavior (warning + continue + Step 6 overwrite confirmation).
469
-
470
- ### Verification Notes
471
- - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before this review.
472
- - `npm run typecheck`: pass.
473
- - `npm run build`: pass.
474
- - Reviewed local diffs in `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, `src/components/guttered-select.tsx`, `src/steps/build-test.tsx`, `src/steps/powerline.tsx`, `src/steps/product-context.tsx`, and `src/steps/project-info.tsx`.
475
-
476
- ### Residual Risks / Testing Gaps
477
- - No interaction test currently asserts last-field key behavior (`↓` vs `Enter`) in Build & Test or Product Context.
478
- - No docs-consistency check to detect divergence between runtime guard behavior and PRD text.
479
-
480
- ---
481
-
482
- ## Entry 2026-02-22
483
-
484
- ### Entry ID
485
- - `CR-20260222-006`
486
-
487
- ### Supersedes
488
- - `CR-20260222-005`
489
-
490
- ### Scope
491
- - Continue review after Tab/Shift+Tab navigation refactor and accompanying docs updates.
492
- - Validate latest fix-cycle statuses and identify new regressions in current local changes.
493
-
494
- ### Validation Matrix
495
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
496
- |-----------|-------------------|----------------|----------|-------|
497
- | 14 | Low | Fixed | `CODE-FIXED.md:128`, `src/steps/build-test.tsx:106`, `src/steps/product-context.tsx:253` | Last-field hint behavior is now consistent (`Tab / Enter confirm` shown where completion on Tab is supported). |
498
- | 15 | Low | Fixed | `CODE-FIXED.md:139`, `docs/PRD.md:29`, `src/cli.tsx:11` | PRD now reflects warn-and-continue behavior for non-empty directories. |
499
-
500
- ### Findings (ordered by severity)
501
- 1. Low - `Tab` navigation in Project Info select steps can surface incorrect required-field error and block expected flow (`Finding #16`, `Status: New`)
502
- - `src/steps/project-info.tsx:55`
503
- - `src/steps/project-info.tsx:57`
504
- - `src/steps/project-info.tsx:61`
505
- - `src/steps/project-info.tsx:153`
506
- - `src/steps/project-info.tsx:168`
507
- - Global `Tab` handler applies text-field validation logic to all steps, including `packageManager` and `license` select steps. If no value was already committed, pressing `Tab` can emit "Description is required" in select context and prevent progress, which conflicts with on-screen select hints.
508
- - Recommendation: scope `Tab` validation branch to text steps only, or provide select-specific `Tab` handling (derive value from active option or disable `Tab next` hints for select steps).
509
-
510
- 2. Low - `Tab next` on Product Context multi-select phases can silently discard unsubmitted current selection state (`Finding #17`, `Status: New`)
511
- - `src/steps/product-context.tsx:90`
512
- - `src/steps/product-context.tsx:92`
513
- - `src/steps/product-context.tsx:217`
514
- - `src/steps/product-context.tsx:238`
515
- - `Tab` handler persists only `answers[currentPhase]`, but multi-select state lives inside `GutteredMultiSelect` until Enter submit. On `techStack`/`coreFeatures`, `Tab next` may advance with empty/stale data (including losing prefilled tech stack) despite hints implying "saves current value".
516
- - Recommendation: either remove `Tab next` for multi-select phases or plumb a controlled selection state upward so `Tab` can persist the current selection snapshot.
517
-
518
- ### Verification Notes
519
- - Procedure compliance: reviewed latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before analysis.
520
- - `npm run typecheck`: pass.
521
- - `npm run build`: pass.
522
- - Reviewed active diffs in `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, `src/steps/build-test.tsx`, `src/steps/powerline.tsx`, `src/steps/product-context.tsx`, `src/steps/project-info.tsx`, and `AGENTS.md`.
523
-
524
- ### Residual Risks / Testing Gaps
525
- - No interaction test currently verifies `Tab` behavior separately for text inputs versus select/multi-select phases.
526
- - No regression test covers preservation of prefilled tech-stack values when navigating Product Context with `Tab`.
527
-
528
- ---
529
-
530
- ## Entry 2026-02-22
531
-
532
- ### Entry ID
533
- - `CR-20260222-007`
534
-
535
- ### Supersedes
536
- - `CR-20260222-006`
537
-
538
- ### Scope
539
- - New review cycle after `CF-20260222-008` (Tab/Shift+Tab navigation fixes).
540
- - Re-validate open findings and scan current workspace changes for regressions.
541
-
542
- ### Validation Matrix
543
- | Finding # | Previous Severity | Current Status | Evidence | Notes |
544
- |-----------|-------------------|----------------|----------|-------|
545
- | 16 | Low | Fixed | `CODE-FIXED.md:236`, `src/steps/project-info.tsx:51`, `src/steps/project-info.tsx:57`, `src/steps/project-info.tsx:156` | Project Info `Tab` handler now excludes select steps, and select hints no longer promise `Tab next`. |
546
- | 17 | Low | Fixed | `CODE-FIXED.md:241`, `src/steps/product-context.tsx:86`, `src/steps/product-context.tsx:92`, `src/steps/product-context.tsx:224`, `src/steps/product-context.tsx:241` | Product Context `Tab` handler now excludes multi-select phases, and multi-select hints no longer advertise `Tab next`. |
547
-
548
- ### Findings (ordered by severity)
549
- - No new functional findings identified in this review cycle.
550
-
551
- ### Verification Notes
552
- - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before this review.
553
- - `npm run typecheck`: pass.
554
- - `npm run build`: pass.
555
- - Reviewed active diffs in `AGENTS.md`, `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, `src/steps/build-test.tsx`, `src/steps/powerline.tsx`, `src/steps/product-context.tsx`, and `src/steps/project-info.tsx`.
556
-
557
- ### Residual Risks / Testing Gaps
558
- - No automated interaction tests currently verify keyboard navigation behavior (`Tab`/`Shift+Tab`/`Enter`) across text, select, and multi-select step variants.
@@ -1,8 +0,0 @@
1
- {
2
- "packageManager": "npm",
3
- "license": "ISC",
4
- "buildCommand": "npm run build",
5
- "testCommand": "npm run test",
6
- "typecheckCommand": "tsc --noEmit",
7
- "lintCommand": "npm run lint"
8
- }
@@ -1,52 +0,0 @@
1
- {
2
- "theme": "tokyo-night",
3
- "display": {
4
- "style": "powerline",
5
- "colorCompatibility": "auto",
6
- "lines": [
7
- {
8
- "segments": {
9
- "directory": { "enabled": true, "showBasename": true },
10
- "model": { "enabled": true },
11
- "git": {
12
- "enabled": true,
13
- "showSha": false,
14
- "showWorkingTree": false,
15
- "showOperation": false,
16
- "showTag": true,
17
- "showTimeSinceCommit": false,
18
- "showStashCount": false,
19
- "showUpstream": false,
20
- "showRepoName": false
21
- },
22
- "context": { "enabled": true, "showPercentageOnly": true }
23
- }
24
- },
25
- {
26
- "segments": {
27
- "block": {
28
- "enabled": true,
29
- "type": "time",
30
- "burnType": "both"
31
- },
32
- "session": {
33
- "enabled": true,
34
- "type": "both",
35
- "costSource": "calculated"
36
- },
37
- "today": { "enabled": true, "type": "both" },
38
- "version": { "enabled": false },
39
- "metrics": {
40
- "enabled": false,
41
- "showResponseTime": true,
42
- "showLastResponseTime": true,
43
- "showDuration": true,
44
- "showMessageCount": true,
45
- "showLinesAdded": true,
46
- "showLinesRemoved": true
47
- }
48
- }
49
- }
50
- ]
51
- }
52
- }
@@ -1,15 +0,0 @@
1
- {
2
- "codeStyle": [
3
- "TypeScript strict mode, ESM imports",
4
- "camelCase for variables, PascalCase for types",
5
- "stdlib -> external -> internal import ordering",
6
- "Return errors, don't throw"
7
- ],
8
- "buildCommand": "npm run build",
9
- "testCommand": "npm run test",
10
- "typecheckCommand": "npm run typecheck",
11
- "lintCommand": "npm run lint",
12
- "architectureNotes": "",
13
- "framework": "Node.js",
14
- "language": "TypeScript"
15
- }