okstra 0.102.2 → 0.102.4

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 (167) hide show
  1. package/README.kr.md +5 -5
  2. package/README.md +5 -5
  3. package/docs/kr/architecture/storage-model.md +8 -3
  4. package/docs/kr/architecture.md +12 -13
  5. package/docs/kr/cli.md +4 -4
  6. package/docs/kr/container.md +1 -1
  7. package/docs/kr/performance-improvement-plan-v2.md +2 -2
  8. package/docs/project-structure-overview.md +2 -2
  9. package/package.json +7 -2
  10. package/runtime/BUILD.json +2 -2
  11. package/runtime/bin/lib/okstra/interactive.sh +12 -0
  12. package/runtime/bin/okstra-antigravity-exec.sh +1 -2
  13. package/runtime/bin/okstra-codex-exec.sh +1 -2
  14. package/runtime/bin/okstra-render-final-report.py +2 -9
  15. package/runtime/bin/okstra-spawn-followups.py +4 -6
  16. package/runtime/bin/okstra-trace-cleanup.sh +24 -4
  17. package/runtime/prompts/lead/okstra-lead-contract.md +2 -2
  18. package/runtime/prompts/lead/report-writer.md +1 -1
  19. package/runtime/prompts/profiles/_common-contract.md +9 -11
  20. package/runtime/python/okstra_ctl/codex_dispatch.py +6 -13
  21. package/runtime/python/okstra_ctl/consumers.py +35 -0
  22. package/runtime/python/okstra_ctl/container.py +4 -6
  23. package/runtime/python/okstra_ctl/dispatch_core.py +8 -13
  24. package/runtime/python/okstra_ctl/final_report_paths.py +24 -0
  25. package/runtime/python/okstra_ctl/handoff.py +2 -1
  26. package/runtime/python/okstra_ctl/implementation_outcome.py +271 -0
  27. package/runtime/python/okstra_ctl/implementation_stage.py +7 -11
  28. package/runtime/python/okstra_ctl/path_hints.py +665 -0
  29. package/runtime/python/okstra_ctl/render.py +4 -3
  30. package/runtime/python/okstra_ctl/report_view_artifacts.py +14 -0
  31. package/runtime/python/okstra_ctl/report_views.py +7 -4
  32. package/runtime/python/okstra_ctl/run.py +3 -10
  33. package/runtime/python/okstra_ctl/run_context.py +4 -2
  34. package/runtime/python/okstra_ctl/stage_targets.py +18 -0
  35. package/runtime/python/okstra_ctl/wizard.py +37 -26
  36. package/runtime/python/okstra_ctl/wizard_stage_intent.py +54 -0
  37. package/runtime/python/okstra_project/state.py +40 -2
  38. package/runtime/python/okstra_token_usage/report.py +2 -5
  39. package/runtime/validators/validate-report-views.py +2 -1
  40. package/runtime/validators/validate-run.py +1 -11
  41. package/src/commands/lifecycle/install.mjs +5 -5
  42. package/src/commands/lifecycle/uninstall.mjs +4 -4
  43. package/docs/superpowers/plans/2026-05-12-ticket-id-in-reports.md +0 -638
  44. package/docs/superpowers/plans/2026-05-14-convergence-queue-pruning.md +0 -1568
  45. package/docs/superpowers/plans/2026-05-17-dual-format-final-report.md +0 -167
  46. package/docs/superpowers/plans/2026-05-20-final-report-language.md +0 -1501
  47. package/docs/superpowers/plans/2026-05-20-implementation-planning-multi-stage.md +0 -1267
  48. package/docs/superpowers/plans/2026-05-20-okstra-run-prompt-sot-b1.md +0 -1007
  49. package/docs/superpowers/plans/2026-05-20-wizard-messages-json-sot.md +0 -720
  50. package/docs/superpowers/plans/2026-05-20-wizard-prompt-json-sot-a1.md +0 -681
  51. package/docs/superpowers/plans/2026-05-21-improvement-discovery-task-type.md +0 -1691
  52. package/docs/superpowers/plans/2026-05-24-implementation-lead-context-slimming.md +0 -1700
  53. package/docs/superpowers/plans/2026-05-25-okstra-project-root-rename.md +0 -158
  54. package/docs/superpowers/plans/2026-05-26-wizard-3-option-picker.md +0 -860
  55. package/docs/superpowers/plans/2026-06-02-final-verification-protocol-hardening.md +0 -326
  56. package/docs/superpowers/plans/2026-06-02-okstra-run-branch-confirm-step.md +0 -337
  57. package/docs/superpowers/plans/2026-06-02-okstra-run-phase-pane-cleanup.md +0 -410
  58. package/docs/superpowers/plans/2026-06-02-requirements-discovery-fanout.md +0 -728
  59. package/docs/superpowers/plans/2026-06-04-adversarial-implementation-planning.md +0 -294
  60. package/docs/superpowers/plans/2026-06-04-adversarial-verification.md +0 -570
  61. package/docs/superpowers/plans/2026-06-04-coverage-critic.md +0 -516
  62. package/docs/superpowers/plans/2026-06-04-stage-cohesion-planner.md +0 -351
  63. package/docs/superpowers/plans/2026-06-04-stage-run-batching.md +0 -457
  64. package/docs/superpowers/plans/2026-06-05-acceptance-critic.md +0 -251
  65. package/docs/superpowers/plans/2026-06-05-compact-markdown-report-tables.md +0 -323
  66. package/docs/superpowers/plans/2026-06-05-wizard-batch-prompts.md +0 -559
  67. package/docs/superpowers/plans/2026-06-06-final-verification-whole-task-gate.md +0 -993
  68. package/docs/superpowers/plans/2026-06-06-stage-parallel-and-pending-fixes.md +0 -93
  69. package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p1.md +0 -447
  70. package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p2.md +0 -289
  71. package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p3.md +0 -774
  72. package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p4.md +0 -303
  73. package/docs/superpowers/plans/2026-06-06-stage-worktree-isolation-p5-multidep-base.md +0 -387
  74. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase2.md +0 -275
  75. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase3.md +0 -282
  76. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4a.md +0 -147
  77. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4b.md +0 -262
  78. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4c.md +0 -184
  79. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4d.md +0 -88
  80. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa-phase4e.md +0 -250
  81. package/docs/superpowers/plans/2026-06-07-stage-conformance-qa.md +0 -409
  82. package/docs/superpowers/plans/2026-06-09-implementation-run-artifact-stage-isolation.md +0 -320
  83. package/docs/superpowers/plans/2026-06-10-concurrent-run-team-guard.md +0 -456
  84. package/docs/superpowers/plans/2026-06-10-git-reconcile-stale-sha-recovery.md +0 -1408
  85. package/docs/superpowers/plans/2026-06-10-lead-worker-completion-polling-PROBE.md +0 -42
  86. package/docs/superpowers/plans/2026-06-10-lead-worker-completion-polling.md +0 -337
  87. package/docs/superpowers/plans/2026-06-10-p6-token-usage-incremental.md +0 -1029
  88. package/docs/superpowers/plans/2026-06-10-stage-group-handoff.md +0 -1572
  89. package/docs/superpowers/plans/2026-06-11-fix-cycle.md +0 -1290
  90. package/docs/superpowers/plans/2026-06-11-wizard-whole-task-final-verification.md +0 -526
  91. package/docs/superpowers/plans/2026-06-12-html-plan-approval.md +0 -1000
  92. package/docs/superpowers/plans/2026-06-13-repo-risk-hardening.md +0 -493
  93. package/docs/superpowers/plans/2026-06-14-host-runtime-auto-execution.md +0 -1775
  94. package/docs/superpowers/plans/2026-06-15-coding-preflight-pack-dispatch-path.md +0 -504
  95. package/docs/superpowers/plans/2026-06-15-internal-skill-migration-final-fixups.md +0 -342
  96. package/docs/superpowers/plans/2026-06-15-internal-skill-migration-fixups.md +0 -258
  97. package/docs/superpowers/plans/2026-06-15-internal-skill-migration-remaining-fixups.md +0 -387
  98. package/docs/superpowers/plans/2026-06-15-internal-skill-resource-migration.md +0 -749
  99. package/docs/superpowers/plans/2026-06-15-worker-prompt-anchor-final-fixups.md +0 -828
  100. package/docs/superpowers/plans/2026-06-15-worker-prompt-header-error-contract.md +0 -490
  101. package/docs/superpowers/plans/2026-06-17-okstra-error-report.md +0 -724
  102. package/docs/superpowers/plans/2026-06-18-subagent-pane-reclaim.md +0 -483
  103. package/docs/superpowers/plans/2026-06-19-agent-operating-standard.md +0 -476
  104. package/docs/superpowers/plans/2026-06-19-okstra-inspect-recap-facet.md +0 -647
  105. package/docs/superpowers/plans/2026-06-20-error-feedback-loop.md +0 -1019
  106. package/docs/superpowers/plans/2026-06-20-run-index-row-normalization.md +0 -583
  107. package/docs/superpowers/plans/2026-06-20-stage-auto-integrate-teardown.md +0 -819
  108. package/docs/superpowers/plans/2026-06-21-okstra-container-local-user-test.md +0 -714
  109. package/docs/superpowers/plans/2026-06-21-release-handoff-local-checkout.md +0 -348
  110. package/docs/superpowers/plans/2026-06-23-implementation-stage-multiselect-chain.md +0 -630
  111. package/docs/superpowers/plans/2026-06-23-implementation-step-commit-granularity.md +0 -274
  112. package/docs/superpowers/plans/2026-06-23-phase-batch-cleanup-enforcement.md +0 -409
  113. package/docs/superpowers/plans/2026-06-24-cross-project-precondition.md +0 -542
  114. package/docs/superpowers/plans/2026-06-24-decision-drafts-render-gap.md +0 -568
  115. package/docs/superpowers/plans/2026-06-24-manual-user-test-section.md +0 -203
  116. package/docs/superpowers/plans/2026-06-24-okstra-container-build-rename.md +0 -525
  117. package/docs/superpowers/specs/2026-05-12-ticket-id-in-reports-design.md +0 -131
  118. package/docs/superpowers/specs/2026-05-15-implementation-plan-verification-design.md +0 -254
  119. package/docs/superpowers/specs/2026-05-20-final-report-language-design.md +0 -383
  120. package/docs/superpowers/specs/2026-05-20-implementation-planning-multi-stage-design.md +0 -322
  121. package/docs/superpowers/specs/2026-05-20-okstra-run-prompt-sot-design.md +0 -299
  122. package/docs/superpowers/specs/2026-05-21-improvement-discovery-task-type-design.md +0 -335
  123. package/docs/superpowers/specs/2026-06-02-okstra-run-branch-confirm-step-design.md +0 -113
  124. package/docs/superpowers/specs/2026-06-02-okstra-run-phase-pane-cleanup-design.md +0 -173
  125. package/docs/superpowers/specs/2026-06-02-requirements-discovery-fanout-design.md +0 -154
  126. package/docs/superpowers/specs/2026-06-04-adversarial-implementation-planning-design.md +0 -90
  127. package/docs/superpowers/specs/2026-06-04-adversarial-verification-design.md +0 -176
  128. package/docs/superpowers/specs/2026-06-04-coverage-critic-design.md +0 -99
  129. package/docs/superpowers/specs/2026-06-04-stage-splitting-cost-aware-design.md +0 -98
  130. package/docs/superpowers/specs/2026-06-05-acceptance-critic-design.md +0 -90
  131. package/docs/superpowers/specs/2026-06-05-compact-markdown-report-tables-design.md +0 -87
  132. package/docs/superpowers/specs/2026-06-05-wizard-batch-prompts-design.md +0 -121
  133. package/docs/superpowers/specs/2026-06-06-final-verification-whole-task-gate-design.md +0 -126
  134. package/docs/superpowers/specs/2026-06-06-stage-worktree-isolation-design.md +0 -180
  135. package/docs/superpowers/specs/2026-06-06-vertical-slice-tdd-planning-design.md +0 -179
  136. package/docs/superpowers/specs/2026-06-07-stage-conformance-qa-design.md +0 -169
  137. package/docs/superpowers/specs/2026-06-09-executor-model-custom-id-cascade-design.md +0 -66
  138. package/docs/superpowers/specs/2026-06-09-implementation-run-artifact-stage-isolation-design.md +0 -87
  139. package/docs/superpowers/specs/2026-06-10-blocking-contract-posthoc-conformance-design.md +0 -168
  140. package/docs/superpowers/specs/2026-06-10-concurrent-run-team-guard-design.md +0 -107
  141. package/docs/superpowers/specs/2026-06-10-git-reconcile-stale-sha-recovery-design.md +0 -105
  142. package/docs/superpowers/specs/2026-06-10-lead-worker-completion-polling-design.md +0 -113
  143. package/docs/superpowers/specs/2026-06-10-stage-group-handoff-design.md +0 -156
  144. package/docs/superpowers/specs/2026-06-11-brief-entry-only-handoff-stage-entry-design.md +0 -158
  145. package/docs/superpowers/specs/2026-06-11-fix-cycle-design.md +0 -94
  146. package/docs/superpowers/specs/2026-06-11-wizard-whole-task-final-verification-design.md +0 -89
  147. package/docs/superpowers/specs/2026-06-12-codex-lead-adapter-design.md +0 -358
  148. package/docs/superpowers/specs/2026-06-12-html-plan-approval-design.md +0 -85
  149. package/docs/superpowers/specs/2026-06-12-stage-discipline-rule-design.md +0 -108
  150. package/docs/superpowers/specs/2026-06-13-forbidden-actions-ssot-design.md +0 -134
  151. package/docs/superpowers/specs/2026-06-13-neutral-tmux-lead-adapter-design.md +0 -284
  152. package/docs/superpowers/specs/2026-06-14-host-runtime-auto-execution-design.md +0 -404
  153. package/docs/superpowers/specs/2026-06-17-okstra-error-report-design.md +0 -123
  154. package/docs/superpowers/specs/2026-06-18-subagent-pane-reclaim-design.md +0 -150
  155. package/docs/superpowers/specs/2026-06-19-agent-operating-standard-design.md +0 -120
  156. package/docs/superpowers/specs/2026-06-19-okstra-inspect-recap-facet-design.md +0 -96
  157. package/docs/superpowers/specs/2026-06-20-error-feedback-loop-design.md +0 -171
  158. package/docs/superpowers/specs/2026-06-20-run-index-row-normalization-design.md +0 -112
  159. package/docs/superpowers/specs/2026-06-20-stage-auto-integrate-teardown-design.md +0 -145
  160. package/docs/superpowers/specs/2026-06-21-okstra-container-local-user-test-design.md +0 -125
  161. package/docs/superpowers/specs/2026-06-21-release-handoff-local-checkout-design.md +0 -113
  162. package/docs/superpowers/specs/2026-06-23-implementation-stage-multiselect-chain-design.md +0 -138
  163. package/docs/superpowers/specs/2026-06-23-implementation-step-commit-granularity-design.md +0 -120
  164. package/docs/superpowers/specs/2026-06-24-cross-project-precondition-design.md +0 -129
  165. package/docs/superpowers/specs/2026-06-24-decision-drafts-render-gap-design.md +0 -185
  166. package/docs/superpowers/specs/2026-06-24-manual-user-test-section-design.md +0 -121
  167. package/docs/superpowers/specs/2026-06-24-okstra-container-build-rename-design.md +0 -110
@@ -1,274 +0,0 @@
1
- # implementation 커밋·step 입도 완화 Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** `implementation` executor 의 test/impl 분리 커밋을 한 커밋으로 병합(A)하고, planning step 의 입도 정의를 격상하며 step 캡을 6→8 로 올린다(B).
6
-
7
- **Architecture:** okstra 의 phase 동작은 `prompts/profiles/*.md`(LLM 자연어 계약)와 `validators/*.py`(기계 강제)로 나뉜다. 캡의 enforcement SSOT 는 validator 한 곳, 프로파일·문서의 `≤ 8` 문구는 그 미러다. 커밋 정책은 자연어 프로파일에만 존재한다.
8
-
9
- **Tech Stack:** Python 3 (validator + pytest), Markdown 프로파일/문서, Node 빌드(`npm run build` → `runtime/` 동기화, `npm run check` CI).
10
-
11
- 설계 출처: [`docs/superpowers/specs/2026-06-23-implementation-step-commit-granularity-design.md`](../specs/2026-06-23-implementation-step-commit-granularity-design.md).
12
-
13
- ## Global Constraints
14
-
15
- - **최소 변경**: planning 의 `RED:` / `GREEN:` step 토큰, validator S10c/S10d, TDD discipline 자체는 변경 금지.
16
- - **enforcement SSOT**: step 캡 숫자는 validator 모듈 상수 `HARD_STEP_CAP = 8` 한 곳에만 코드로 정의. 프로파일·문서는 자연어 미러.
17
- - **pre-1.0**: 호환 셔임 없음. 단 이번 변경은 기존 산출 plan(≤6 step)을 깨지 않음(캡 완화는 단조 확장).
18
- - **`runtime/` 직접 수정 금지** — build output. 소스(`prompts/`, `validators/`)만 수정.
19
- - **커밋 메시지**: Conventional Commits, AI 트레일러 금지. 동시 세션 환경이므로 amend 금지 — 항상 새 커밋.
20
- - **완료 게이트**: 마지막에 `npm run check` exit 0 확인(test:js 실패 시 test:py 안 돎).
21
-
22
- ---
23
-
24
- ### Task 1: B — step 캡 상수화 + 경계 검증 (validator)
25
-
26
- **Files:**
27
- - Modify: `validators/validate-implementation-plan-stages.py` (상수 추가 + S5 검사)
28
- - Modify: `tests/contract/test_validate_implementation_plan_stages.py` (8-step 통과 회귀 테스트 추가)
29
- - Modify: `tests/fixtures/plans/invalid_step_overflow.md` (7-step → 9-step)
30
-
31
- **Interfaces:**
32
- - Produces: 모듈 상수 `HARD_STEP_CAP = 8` — Task 2 의 프로파일·문서 `≤ 8` 문구가 이 값을 미러.
33
- - Consumes: 기존 헬퍼 `_one_stage_plan(slice_line, accept_line, steps, ...)`(steps = `(action, expected)` 리스트, step-count 셀 자동), `_run_validator_path(plan_path)`, `tmp_path` fixture.
34
-
35
- - [ ] **Step 1: 8-step 통과 회귀 테스트 추가 (먼저 실패하는 테스트)**
36
-
37
- `tests/contract/test_validate_implementation_plan_stages.py` 의 `test_step_overflow_rejected`(현재 line 80 부근) 바로 아래에 추가:
38
-
39
- ```python
40
- def test_eight_steps_allowed(tmp_path):
41
- """캡 상향(6→8): 8 step 단일 stage 는 S5 를 발화하지 않는다."""
42
- steps = [("RED: 실패 테스트 작성", "FAIL")] + [
43
- (f"GREEN: 구현 {i}", "PASS") for i in range(2, 9)
44
- ] # 총 8 step
45
- body = _one_stage_plan(
46
- "Slice value: bar 가 동작한다",
47
- "Acceptance: pytest -k bar PASS",
48
- steps,
49
- )
50
- plan = tmp_path / "eight_steps.md"
51
- plan.write_text(body, encoding="utf-8")
52
- r = _run_validator_path(plan)
53
- assert r.returncode == 0, r.stderr
54
- ```
55
-
56
- - [ ] **Step 2: 새 테스트 실행 → 실패 확인 (RED)**
57
-
58
- Run: `python3 -m pytest tests/contract/test_validate_implementation_plan_stages.py::test_eight_steps_allowed -v`
59
- Expected: FAIL — 현재 validator 는 `steps > 6` 이라 8-step 이 S5 로 거부되어 `returncode == 1`.
60
-
61
- - [ ] **Step 3: validator 에 `HARD_STEP_CAP = 8` 도입 + S5 교체 (GREEN)**
62
-
63
- `validators/validate-implementation-plan-stages.py` 상수 영역(현재 line 23 `REQUIRED_SUBSECTIONS` 위)에 추가:
64
-
65
- ```python
66
- HARD_STEP_CAP = 8
67
- ```
68
-
69
- `_check_each_stage_section` 의 S5 블록(현재 line 167-171)을 교체:
70
-
71
- ```python
72
- # S5: effective step count
73
- steps = _count_effective_steps(section)
74
- if steps > HARD_STEP_CAP:
75
- errs.append(ValidationError("S5", s.stage_number,
76
- f"effective step count {steps} exceeds {HARD_STEP_CAP}"))
77
- ```
78
-
79
- `_check_slice_tdd` docstring(현재 line 199-210) 중 step 설명이 숫자 `6` 을 언급하면 `8` 로 정합(현재 docstring 에 `6` 직접 언급 없음 — 있으면만 수정).
80
-
81
- - [ ] **Step 4: 새 테스트 통과 확인 (GREEN)**
82
-
83
- Run: `python3 -m pytest tests/contract/test_validate_implementation_plan_stages.py::test_eight_steps_allowed -v`
84
- Expected: PASS
85
-
86
- - [ ] **Step 5: 기존 overflow fixture 를 9-step 으로 확장**
87
-
88
- 캡이 8 이 되어 7-step fixture 는 더 이상 S5 를 발화하지 않으므로 `test_step_overflow_rejected` 가 깨진다. `tests/fixtures/plans/invalid_step_overflow.md` 의 Stage Map step-count 셀과 Stepwise 표를 9-step 으로:
89
-
90
- Stage Map 행(현재 `| 1 | overloaded stage | (none) | 7 | src/foo.ts |`)의 `7` → `9`:
91
-
92
- ```
93
- | 1 | overloaded stage | (none) | 9 | src/foo.ts |
94
- ```
95
-
96
- Stepwise 표 마지막(현재 `| 7 | step seven | g.ts | cmd | OK |`) 뒤에 2행 추가:
97
-
98
- ```
99
- | 8 | step eight | h.ts | cmd | OK |
100
- | 9 | step nine | i.ts | cmd | OK |
101
- ```
102
-
103
- - [ ] **Step 6: 전체 validator 테스트 통과 확인**
104
-
105
- Run: `python3 -m pytest tests/contract/test_validate_implementation_plan_stages.py -v`
106
- Expected: PASS (전체). 특히 `test_step_overflow_rejected`(9>8 로 S5 발화)와 `test_eight_steps_allowed` 둘 다 PASS.
107
-
108
- - [ ] **Step 7: 커밋**
109
-
110
- ```bash
111
- git add validators/validate-implementation-plan-stages.py tests/contract/test_validate_implementation_plan_stages.py tests/fixtures/plans/invalid_step_overflow.md
112
- git commit -m "feat(validate): step 캡 6→8 상향 및 HARD_STEP_CAP 상수화"
113
- ```
114
-
115
- ---
116
-
117
- ### Task 2: B — step 입도 declaration 미러 (프로파일·문서)
118
-
119
- **Files:**
120
- - Modify: `prompts/profiles/implementation-planning.md` (line 60, 81, 88, 89, 130)
121
- - Modify: `docs/kr/architecture.md` (line 341)
122
- - Modify: `docs/project-structure-overview.md` (line 276)
123
-
124
- **Interfaces:**
125
- - Consumes: Task 1 의 `HARD_STEP_CAP = 8` — 아래 문구의 `8` 은 그 값의 자연어 미러.
126
-
127
- 문서 변경이라 단위 테스트 없음 — 각 변경 후 grep 으로 잔여 구표현이 없는지 확인한다.
128
-
129
- - [ ] **Step 1: `implementation-planning.md` step 정의·캡 격상**
130
-
131
- line 81 의 substring 교체:
132
- - `**Effective row count ≤ 6** (excluding header / divider / blank). Each step is one action completable in 2–5 minutes;`
133
- → `**Effective row count ≤ 8** (excluding header / divider / blank). Each step is one cohesive, self-contained change (시간 하한 없음; 함께 바뀌는 여러 파일을 포함할 수 있다);`
134
-
135
- line 60 의 `the per-stage effective step count (≤6)` → `(≤8)`.
136
-
137
- line 88 의 `(b) effective steps would exceed 6` → `(b) effective steps would exceed 8`.
138
-
139
- line 89 의 `overrides the ≤6-step merging allowance` → `overrides the ≤8-step merging allowance`.
140
-
141
- line 130 의 `reject the draft if any stage exceeds 6` → `reject the draft if any stage exceeds 8`.
142
-
143
- - [ ] **Step 2: 문서 2곳 미러**
144
-
145
- `docs/kr/architecture.md` line 341 의 `각 stage 의 effective step ≤ 6` → `각 stage 의 effective step ≤ 8`.
146
-
147
- `docs/project-structure-overview.md` line 276 의 `stage 당 step ≤ 6 등` → `stage 당 step ≤ 8 등`.
148
-
149
- - [ ] **Step 3: 잔여 구표현 grep 검증**
150
-
151
- Run:
152
- ```bash
153
- grep -rn "≤ *6\|≤6-step\|exceed 6\|exceeds 6\|2.5 min\|2–5 min\|completable in 2" prompts/profiles/implementation-planning.md docs/kr/architecture.md docs/project-structure-overview.md
154
- ```
155
- Expected: 출력 없음(exit 1). 남는 게 있으면 해당 줄을 추가 수정.
156
-
157
- - [ ] **Step 4: 커밋**
158
-
159
- ```bash
160
- git add prompts/profiles/implementation-planning.md docs/kr/architecture.md docs/project-structure-overview.md
161
- git commit -m "docs(planning): step 입도 정의 격상 및 캡 ≤8 미러"
162
- ```
163
-
164
- ---
165
-
166
- ### Task 3: A — executor 커밋 병합 정책
167
-
168
- **Files:**
169
- - Modify: `prompts/profiles/_implementation-executor.md` (line 29, 30-31, 74)
170
- - Modify: `prompts/profiles/_implementation-deliverable.md` (line 14, 20, 38)
171
-
172
- 문서 변경이라 단위 테스트 없음 — grep 으로 구정책 문구 잔여를 확인한다.
173
-
174
- - [ ] **Step 1: TDD loop 의 커밋 순서 변경 (`_implementation-executor.md` line 31)**
175
-
176
- 현재:
177
- ```
178
- - Order of operations per plan step: (1) write/extend the test that captures the step's acceptance criterion and confirm it fails for the right reason, (2) commit the failing test (`test(<scope>): ...`), (3) implement the minimum change to make it pass, (4) commit the implementation (`feat|fix(<scope>): ...`), (5) refactor without changing behaviour and commit separately if any cleanup is made (`refactor(<scope>): ...`). The failing-then-passing transition between steps (2) and (4) is the `TDD evidence` required by the final report.
179
- ```
180
- 교체:
181
- ```
182
- - Order of operations per plan step: (1) write/extend the test that captures the step's acceptance criterion and confirm it fails for the right reason, (2) implement the minimum change to make it pass, (3) commit the test and its implementation together in a single commit (`feat|fix(<scope>): ...`) — do NOT commit the failing test separately, (4) refactor without changing behaviour and commit separately if any cleanup is made (`refactor(<scope>): ...`). The failing-then-passing transition is preserved as `TDD evidence` in the final report (failing output captured before the merged commit, passing output after), not as two separate commits.
183
- ```
184
-
185
- - [ ] **Step 2: 커밋 매핑 단위 변경 (`_implementation-executor.md` line 74)**
186
-
187
- 현재:
188
- ```
189
- - One commit MUST correspond to one plan step (or one cohesive sub-step). Do NOT bundle unrelated steps into a single commit, and do NOT split a single step across commits unless the plan explicitly sequenced it that way.
190
- ```
191
- 교체:
192
- ```
193
- - One commit corresponds to one TDD cycle — a `RED:` step and its `GREEN:` step(s) are merged into a single `feat|fix` commit; an optional `REFACTOR:` step MAY be a separate `refactor` commit. Never split a test and its implementation into separate commits. Do NOT bundle unrelated cycles into a single commit.
194
- ```
195
-
196
- - [ ] **Step 3: head-less 문구 정합 (`_implementation-executor.md` line 29)**
197
-
198
- line 29 의 `RED → GREEN → refactor → per-step commits → ` → `RED → GREEN → refactor → per-cycle commit → `.
199
-
200
- - [ ] **Step 4: deliverable TDD evidence 문구 (`_implementation-deliverable.md` line 20)**
201
-
202
- 현재:
203
- ```
204
- - **TDD evidence (when applicable)**: for steps that should be TDD-ordered, show the failing-test output BEFORE the implementation commit and the passing-test output AFTER, with commit SHAs framing the transition.
205
- ```
206
- 교체:
207
- ```
208
- - **TDD evidence (when applicable)**: for steps that should be TDD-ordered, show the failing-test output captured BEFORE the merged commit and the passing-test output after, citing the single `feat|fix` commit SHA (test and implementation share one commit).
209
- ```
210
-
211
- - [ ] **Step 5: deliverable Commit list / Plan coverage 정합 (`_implementation-deliverable.md` line 14, 38)**
212
-
213
- line 14 의 `each commit's SHA (or short SHA), message, and the plan step it satisfies` → `each commit's SHA (or short SHA), message, and the plan step(s) / TDD cycle it satisfies`.
214
-
215
- line 38 의 Plan coverage 항목 끝에 한 문장 추가: `A RED step and its GREEN step pointing to the same merged commit SHA is NOT a coverage gap — one SHA may be shared by both.`
216
-
217
- - [ ] **Step 6: 구정책 문구 잔여 grep 검증**
218
-
219
- Run:
220
- ```bash
221
- grep -rn "commit the failing test\|framing the transition\|per-step commits\|One commit MUST correspond to one plan step" prompts/profiles/_implementation-executor.md prompts/profiles/_implementation-deliverable.md
222
- ```
223
- Expected: 출력 없음(exit 1).
224
-
225
- - [ ] **Step 7: 커밋**
226
-
227
- ```bash
228
- git add prompts/profiles/_implementation-executor.md prompts/profiles/_implementation-deliverable.md
229
- git commit -m "feat(executor): test/impl 단일 커밋 병합, refactor 별도 허용"
230
- ```
231
-
232
- ---
233
-
234
- ### Task 4: 마무리 — CHANGES 기록 + CI 게이트
235
-
236
- **Files:**
237
- - Modify: `CHANGES.md`
238
-
239
- - [ ] **Step 1: CHANGES.md 항목 추가**
240
-
241
- `CHANGES.md` 최상단 항목 형식을 따라(기존 항목 위) 한국어 항목 추가. 핵심 줄:
242
- ```markdown
243
- ### implementation 커밋·step 입도 완화
244
-
245
- - `implementation` executor 가 실패 테스트와 구현을 한 `feat|fix` 커밋으로 병합한다(refactor 는 별도 커밋 허용). 커밋 매핑 단위가 plan step → TDD 사이클로 바뀐다.
246
- - `implementation-planning` step 정의가 "2–5분 micro-action"에서 "완결적·응집 변경 단위"로 격상되고, stage 당 step 캡이 6 → 8 로 상향된다(`HARD_STEP_CAP`).
247
- - **사용자 영향:** 다음 release 후 `npx -y okstra@latest install` 1회로 전파. 신규 planning run 부터 step 이 굵어지고 implementation 커밋이 더 적게 묶인다. 기존 산출 plan(≤6 step)은 그대로 통과 — breaking 아님.
248
- ```
249
- (기존 `CHANGES.md` 의 실제 헤딩/항목 스타일을 Read 로 확인해 형식을 맞출 것.)
250
-
251
- - [ ] **Step 2: 빌드 동기화 확인**
252
-
253
- Run: `npm run build`
254
- Expected: exit 0. `runtime/` 에 변경된 프로파일·validator 가 동기화됨(커밋하지 않음 — gitignored build output).
255
-
256
- - [ ] **Step 3: CI 게이트 통과 확인**
257
-
258
- Run: `npm run check`
259
- Expected: exit 0. (실패 시 해당 스위트 출력으로 원인 파악 후 수정 — 완료 선언 전 반드시 exit 0.)
260
-
261
- - [ ] **Step 4: 커밋**
262
-
263
- ```bash
264
- git add CHANGES.md
265
- git commit -m "docs(changes): implementation 커밋·step 입도 완화 항목 추가"
266
- ```
267
-
268
- ---
269
-
270
- ## Self-Review
271
-
272
- - **Spec coverage:** A(커밋 병합) → Task 3. B(캡 상수화) → Task 1, B(declaration 미러) → Task 2. 테스트 영향(fixture 9-step + 8-step 회귀) → Task 1. CHANGES → Task 4. 비-목표(TDD/토큰/S10 유지)는 Global Constraints 로 고정. 누락 없음.
273
- - **Placeholder scan:** 모든 코드/문구 변경에 before→after 또는 정확한 코드 블록 제시. `CHANGES.md` 형식만 구현 시 Read 확인으로 위임(헤딩 스타일 보존 목적, 내용은 명시).
274
- - **Type/identifier consistency:** `HARD_STEP_CAP`(Task 1 정의) ↔ Task 2 의 `≤ 8` 미러 일치. `RED:`/`GREEN:`/`REFACTOR:` 토큰은 변경하지 않음(Global Constraints)으로 Task 3 의 새 커밋 문구와 정합.