okstra 0.123.0 → 0.124.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.
Files changed (82) hide show
  1. package/README.md +1 -0
  2. package/docs/architecture/storage-model.md +1 -1
  3. package/docs/architecture.md +11 -1
  4. package/docs/cli.md +2 -0
  5. package/docs/for-ai/README.md +41 -35
  6. package/docs/for-ai/skills/okstra-brief-gen.md +105 -105
  7. package/docs/for-ai/skills/okstra-container-build.md +61 -61
  8. package/docs/for-ai/skills/okstra-graphify.md +64 -0
  9. package/docs/for-ai/skills/okstra-inspect.md +86 -86
  10. package/docs/for-ai/skills/okstra-manager.md +32 -32
  11. package/docs/for-ai/skills/okstra-memory.md +49 -50
  12. package/docs/for-ai/skills/okstra-pr-gen.md +48 -0
  13. package/docs/for-ai/skills/okstra-rollup.md +58 -58
  14. package/docs/for-ai/skills/okstra-run.md +95 -95
  15. package/docs/for-ai/skills/okstra-schedule-gen.md +106 -106
  16. package/docs/for-ai/skills/okstra-setup.md +63 -64
  17. package/docs/for-ai/skills/okstra-user-response.md +48 -0
  18. package/docs/performance-improvement-plan-v2.md +4 -4
  19. package/docs/pr-template-usage.md +34 -34
  20. package/docs/project-structure-overview.md +91 -70
  21. package/docs/task-process/README.md +33 -33
  22. package/docs/task-process/common-flow.md +26 -26
  23. package/docs/task-process/error-analysis.md +20 -21
  24. package/docs/task-process/final-verification.md +41 -41
  25. package/docs/task-process/implementation-planning.md +33 -33
  26. package/docs/task-process/implementation.md +38 -38
  27. package/docs/task-process/release-handoff.md +46 -46
  28. package/docs/task-process/requirements-discovery.md +22 -23
  29. package/package.json +1 -1
  30. package/runtime/BUILD.json +2 -2
  31. package/runtime/agents/workers/antigravity-worker.md +4 -4
  32. package/runtime/agents/workers/claude-worker.md +2 -2
  33. package/runtime/agents/workers/codex-worker.md +4 -4
  34. package/runtime/agents/workers/report-writer-worker.md +4 -4
  35. package/runtime/prompts/coding-preflight/frameworks/node-server.md +1 -1
  36. package/runtime/prompts/launch.template.md +1 -1
  37. package/runtime/prompts/lead/convergence.md +10 -20
  38. package/runtime/prompts/lead/okstra-lead-contract.md +14 -16
  39. package/runtime/prompts/lead/plan-body-verification.md +18 -18
  40. package/runtime/prompts/lead/report-writer.md +43 -44
  41. package/runtime/prompts/lead/team-contract.md +11 -122
  42. package/runtime/prompts/profiles/_common-contract.md +15 -22
  43. package/runtime/prompts/profiles/_implementation-deliverable.md +1 -1
  44. package/runtime/prompts/profiles/_implementation-executor.md +1 -1
  45. package/runtime/prompts/profiles/_implementation-verifier.md +2 -2
  46. package/runtime/prompts/profiles/error-analysis.md +2 -2
  47. package/runtime/prompts/profiles/final-verification.md +1 -1
  48. package/runtime/prompts/profiles/implementation-planning.md +13 -13
  49. package/runtime/prompts/profiles/implementation.md +1 -1
  50. package/runtime/prompts/profiles/improvement-discovery.md +1 -1
  51. package/runtime/prompts/profiles/release-handoff.md +3 -3
  52. package/runtime/prompts/profiles/requirements-discovery.md +18 -18
  53. package/runtime/skills/_fragments/bash-invocation-rule.md +1 -0
  54. package/runtime/skills/_fragments/preflight-outdated-cli.md +1 -0
  55. package/runtime/skills/_fragments/python-bootstrap-note.md +1 -0
  56. package/runtime/skills/okstra-brief-gen/SKILL.md +117 -122
  57. package/runtime/skills/okstra-container-build/SKILL.md +24 -14
  58. package/runtime/skills/okstra-graphify/SKILL.md +12 -4
  59. package/runtime/skills/okstra-inspect/SKILL.md +104 -98
  60. package/runtime/skills/okstra-manager/SKILL.md +1 -1
  61. package/runtime/skills/okstra-memory/SKILL.md +3 -3
  62. package/runtime/skills/okstra-rollup/SKILL.md +12 -6
  63. package/runtime/skills/okstra-run/SKILL.md +49 -88
  64. package/runtime/skills/okstra-schedule-gen/SKILL.md +36 -30
  65. package/runtime/skills/okstra-setup/SKILL.md +1 -1
  66. package/runtime/skills/okstra-setup/references/project-config.md +17 -16
  67. package/runtime/skills/okstra-usage/SKILL.md +5 -2
  68. package/runtime/skills/okstra-user-response/SKILL.md +15 -3
  69. package/runtime/templates/prd/brief.template.md +92 -92
  70. package/runtime/templates/reports/error-analysis-input.template.md +1 -1
  71. package/runtime/templates/reports/fan-out-unit.template.md +6 -6
  72. package/runtime/templates/reports/final-verification-input.template.md +6 -6
  73. package/runtime/templates/reports/implementation-input.template.md +1 -1
  74. package/runtime/templates/reports/implementation-planning-input.template.md +1 -1
  75. package/runtime/templates/reports/improvement-discovery-input.template.md +1 -1
  76. package/runtime/templates/reports/quick-input.template.md +1 -1
  77. package/runtime/templates/reports/release-handoff-input.template.md +1 -1
  78. package/runtime/templates/reports/schedule.template.md +22 -22
  79. package/runtime/templates/reports/task-brief.template.md +3 -3
  80. package/runtime/templates/reports/user-response.template.md +20 -20
  81. package/runtime/templates/worker-prompt-preamble.md +111 -13
  82. package/runtime/validators/validate-schedule.py +1 -1
@@ -2,23 +2,23 @@
2
2
 
3
3
  ## Index
4
4
 
5
- - [1. 목적](#1-목적)
6
- - [2. okstra-run wizard 흐름](#2-okstra-run-wizard-흐름)
7
- - [3. prepare_task_bundle 처리](#3-prepare_task_bundle-처리)
8
- - [4. lead 실행 흐름](#4-lead-실행-흐름)
9
- - [5. design preparation final report gate](#5-design-preparation과-final-report-gate)
10
- - [6. 금지선](#6-금지선)
11
- - [7. 확인한 코드](#7-확인한-코드)
5
+ - [1. Purpose](#1-purpose)
6
+ - [2. okstra-run wizard flow](#2-okstra-run-wizard-flow)
7
+ - [3. prepare_task_bundle handling](#3-prepare_task_bundle-handling)
8
+ - [4. lead execution flow](#4-lead-execution-flow)
9
+ - [5. design preparation and final report gate](#5-design-preparation-and-final-report-gate)
10
+ - [6. Forbidden actions](#6-forbidden-actions)
11
+ - [7. Verified code](#7-verified-code)
12
12
 
13
- ## 1. 목적
13
+ ## 1. Purpose
14
14
 
15
- `implementation-planning`은 coding 전에 구현 방향을 정하는 phase다. 최소 개의 implementation option, trade-off, recommended option, stepwise execution order, validation checklist, rollback strategy 만들고 사용자 approval gate를 둔다.
15
+ `implementation-planning` is the phase that decides the implementation direction before coding. It produces at least two implementation options, trade-offs, a recommended option, a stepwise execution order, a validation checklist, and a rollback strategy, and it places a user approval gate.
16
16
 
17
- ## 2. okstra-run wizard 흐름
17
+ ## 2. okstra-run wizard flow
18
18
 
19
19
  ```mermaid
20
20
  flowchart TD
21
- Start[/okstra-run/] --> Common[공통 task identity flow]
21
+ Start[/okstra-run/] --> Common[common task identity flow]
22
22
  Common --> Type[task-type = implementation-planning]
23
23
  Type --> Worktree{active task worktree?}
24
24
  Worktree -->|yes| Defaults[Use defaults / Customize]
@@ -33,9 +33,9 @@ flowchart TD
33
33
  Confirm --> Render[render-bundle]
34
34
  ```
35
35
 
36
- wizard 현재 `--no-plan-verification`을 묻지 않는다. okstra-run 경로에서는 plan-body verification 기본 enabled 준비된다. shell/CLI 경로에는 `--no-plan-verification` flag가 있다.
36
+ The wizard currently does not ask about `--no-plan-verification`. On the okstra-run path, plan-body verification is prepared as enabled by default. The shell/CLI path has a `--no-plan-verification` flag.
37
37
 
38
- ## 3. prepare_task_bundle 처리
38
+ ## 3. prepare_task_bundle handling
39
39
 
40
40
  ```mermaid
41
41
  sequenceDiagram
@@ -55,9 +55,9 @@ sequenceDiagram
55
55
  P-->>W: prepared lead prompt
56
56
  ```
57
57
 
58
- runtime prepare 단계는 source edit를 막는 것이 아니라 "현재 phase boundary lead prompt manifest에 박아 넣는" 방식이다. 실제 no-edit/no-build 규칙은 lead worker가 profile을 읽고 지켜야 한다.
58
+ The runtime prepare stage does not block source edits itself; instead it "bakes the current phase boundary into the lead prompt and manifest." The actual no-edit/no-build rules must be honored by the lead and workers reading the profile.
59
59
 
60
- ## 4. lead 실행 흐름
60
+ ## 4. lead execution flow
61
61
 
62
62
  ```mermaid
63
63
  flowchart TD
@@ -74,28 +74,28 @@ flowchart TD
74
74
  NoApproval --> P7
75
75
  ```
76
76
 
77
- Plan-body verification Phase 5.5와 다른 queue 쓴다. Phase 5.5 worker finding을 검증하고, Phase 6 sub-step report-writer가 만든 consolidated plan body `P-*` plan item 단위로 다시 검증한다.
77
+ Plan-body verification uses a different queue from Phase 5.5. Phase 5.5 verifies worker findings, and the Phase 6 sub-step re-verifies the consolidated plan body produced by the report-writer at the `P-*` plan-item level.
78
78
 
79
- ## 5. design preparation final report gate
79
+ ## 5. design preparation and final report gate
80
80
 
81
- lead Stage Map에서 domain contract, persistence schema, external interface, transaction/consistency, transformation mapping, lifecycle state machine, rollout/observability, manual user test surface 결정적으로 탐지한다. report-writer 사용자에게 빈칸부터 묻지 않고, 알려진 사실과 근거를 사용해 surface의 구체적인 AI 초안을 먼저 작성한다.
81
+ The lead deterministically detects domain contract, persistence schema, external interface, transaction/consistency, transformation mapping, lifecycle state machine, rollout/observability, and manual user test surface from the Stage Map. The report-writer does not ask the user starting from blanks; instead it first writes a concrete AI draft for each surface using known facts and evidence.
82
82
 
83
- `designPreparation.items[]`의 상태는 완성도를 강제로 단계에 고정하지 않는다.
83
+ The status of `designPreparation.items[]` does not forcibly pin completeness to a single stage.
84
84
 
85
- | 상태 | 의미 | implementation 진입 처리 |
85
+ | Status | Meaning | Handling on implementation entry |
86
86
  |---|---|---|
87
- | `ready` | 구현 계약이 planning snapshot 안에서 충분히 확정됨 | 해당 stage 진행 |
88
- | `provisional` | 되돌릴 있는 working assumption guardrail 있어 지금 진행해도 안전함 | 해당 stage 진행, assumption executor prompt 주입하고 지정한 review point에서 재확인 |
89
- | `blocked` | 안전한 기본값이 없고 외부 권한·비즈니스 정책·파괴적 변경 결정이 필요함 | item `stageRefs`에 속한 stage만 input 대기 또는 replan |
90
- | `not-applicable` | detector 찾은 surface가 stage에서는 별도 계약을 요구하지 않음 | 구체적인 사유를 남기고 진행 |
87
+ | `ready` | The implementation contract is sufficiently finalized within the planning snapshot | Proceed with that stage |
88
+ | `provisional` | There is a reversible working assumption and guardrail, so it is safe to proceed now | Proceed with that stage, inject the assumption into the executor prompt, and re-confirm at the designated review point |
89
+ | `blocked` | There is no safe default and it needs an external authorization, business policy, or destructive-change decision | Only the stage in this item's `stageRefs` waits for input or is replanned |
90
+ | `not-applicable` | The surface found by the detector does not require a separate contract in this stage | Record a concrete reason and proceed |
91
91
 
92
- 탐지된 surface 없고 interface/acceptance를 바꾸는 manual test input 없으면 `mode: no-design-inputs`와 구체적인 사유를 쓴다. 따라서 간단한 작업에 형식적인 문서를 만들 필요가 없다.
92
+ If there is no detected surface and no manual test input that changes the interface/acceptance, write `mode: no-design-inputs` with a concrete reason. So there is no need to create a formal empty document for a simple task.
93
93
 
94
- `manual-user-test`는 planning 시점에 실행 방법을 완전히 고정하지 않아도 된다. 실제 diff를 보기 전에도 안전한 기본 절차가 있으면 `provisional`과 `ifStillOpen: follow-up`으로 진행하고, 구현 리포트가 실제 변경에 맞춘 `implementation.manualUserTest`를 최종 소유한다. 반대로 사용자만 제공할 있는 acceptance 방법 없이는 해당 stage 안전하게 완료할 없을 때만 `blocked`를 사용한다.
94
+ `manual-user-test` does not have to fully fix the execution method at planning time. If there is a safe default procedure even before seeing the actual diff, proceed with `provisional` and `ifStillOpen: follow-up`, and the implementation report finally owns the `implementation.manualUserTest` aligned to the actual change. Conversely, use `blocked` only when the stage cannot be safely completed without an acceptance method that only the user can provide.
95
95
 
96
- Phase 7 `provisional`/`blocked` item마다 AI proposal이 채워진 `design-prep-requests/` 문서를 결정적으로 만든다. 사용자 또는 wizard 초안을 승인·수정·거부·보류하면, 확인 이후에만 `design-prep-inputs/` 아래 revision sidecar를 append한다. 응답은 approved planning report를 수정하지 않는다.
96
+ Phase 7 deterministically creates a `design-prep-requests/` document filled with an AI proposal for each `provisional`/`blocked` item. When the user or wizard approves, edits, rejects, or holds the draft, only after confirmation does it append a new revision sidecar under `design-prep-inputs/`. This response does not modify the approved planning report.
97
97
 
98
- plan approval design-preparation 상태는 독립된 gate다. plan-body verification 통과했다면 `blocked` item이 있어도 계획 자체는 승인할 있다. 실제 `implementation` preflight 선택한 stage의 item만 해소하며, unrelated stage 계속 진행한다.
98
+ Plan approval and design-preparation status are independent gates. If plan-body verification passed, the plan itself can be approved even when there is a `blocked` item. The actual `implementation` preflight resolves only the items of the selected stage, and unrelated stages keep proceeding.
99
99
 
100
100
  ```mermaid
101
101
  flowchart LR
@@ -111,7 +111,7 @@ flowchart LR
111
111
  Approval --> Impl[Next run: implementation]
112
112
  ```
113
113
 
114
- validator section heading 영문 substring을 찾기 때문에 다음 문자열은 heading line에 그대로 남아야 한다.
114
+ Because the validator searches for the English substring of the section heading, the following strings must remain verbatim on the heading line.
115
115
 
116
116
  - `Option Candidates`
117
117
  - `Trade-off`
@@ -127,9 +127,9 @@ validator가 section heading의 영문 substring을 찾기 때문에 다음 문
127
127
  - `Requirement Coverage`
128
128
  - `Implementation Design Preparation`
129
129
 
130
- approval은 YAML frontmatter의 `approved: true`와 선택한 `implementation-option`으로 기록한다. `Blocks=approval` clarification row unresolved이면 frontmatter 승인 상태여도 implementation prepare에서 거부된다. design-preparation의 `blocked` 상태 자체는 `Blocks=approval`과 같지 않으며, 해당 stage implementation preflight에서만 작동한다.
130
+ Approval is recorded with `approved: true` in the YAML frontmatter and the chosen `implementation-option`. If a `Blocks=approval` clarification row is unresolved, the implementation prepare rejects it even when the frontmatter is in an approved state. The `blocked` status of design-preparation is not the same as `Blocks=approval`, and it operates only at that stage's implementation preflight.
131
131
 
132
- ## 6. 금지선
132
+ ## 6. Forbidden actions
133
133
 
134
134
  ```mermaid
135
135
  flowchart TD
@@ -140,9 +140,9 @@ flowchart TD
140
140
  Plan -. forbidden .-> NextPhase[start implementation in same run]
141
141
  ```
142
142
 
143
- phase plan document 만든다. code-level micro-optimization, source edit, build, migration, deployment, run artifact directory write는 금지된다.
143
+ This phase only produces the plan document. Code-level micro-optimization, source edit, build, migration, deployment, and any write outside the run artifact directory are forbidden.
144
144
 
145
- ## 7. 확인한 코드
145
+ ## 7. Verified code
146
146
 
147
147
  - [`prompts/profiles/implementation-planning.md`](../../prompts/profiles/implementation-planning.md)
148
148
  - [`templates/reports/implementation-planning-input.template.md`](../../templates/reports/implementation-planning-input.template.md)
@@ -2,25 +2,25 @@
2
2
 
3
3
  ## Index
4
4
 
5
- - [1. 목적](#1-목적)
6
- - [2. okstra-run wizard 흐름](#2-okstra-run-wizard-흐름)
5
+ - [1. Purpose](#1-purpose)
6
+ - [2. okstra-run wizard flow](#2-okstra-run-wizard-flow)
7
7
  - [3. runtime gate](#3-runtime-gate)
8
8
  - [3.1 design-preparation preflight](#31-design-preparation-preflight)
9
- - [4. executor verifier](#4-executor와-verifier)
10
- - [5. stage consumers](#5-stage와-consumers)
11
- - [6. 산출물](#6-산출물)
12
- - [7. 금지선](#7-금지선)
13
- - [8. 확인한 코드](#8-확인한-코드)
9
+ - [4. executor and verifier](#4-executor-and-verifier)
10
+ - [5. stage and consumers](#5-stage-and-consumers)
11
+ - [6. Deliverables](#6-deliverables)
12
+ - [7. Forbidden actions](#7-forbidden-actions)
13
+ - [8. Verified code](#8-verified-code)
14
14
 
15
- ## 1. 목적
15
+ ## 1. Purpose
16
16
 
17
- `implementation`은 승인된 `implementation-planning` final report 실제 code change와 local commit으로 실행한다. phase에서만 source edit가 허용되지만, scope approved plan recorded out-of-plan justification으로 제한된다.
17
+ `implementation` executes an approved `implementation-planning` final report into actual code changes and local commits. Source edit is allowed only in this phase, but scope is limited to the approved plan and recorded out-of-plan justification.
18
18
 
19
- ## 2. okstra-run wizard 흐름
19
+ ## 2. okstra-run wizard flow
20
20
 
21
21
  ```mermaid
22
22
  flowchart TD
23
- Start[/okstra-run/] --> Common[공통 task identity flow]
23
+ Start[/okstra-run/] --> Common[common task identity flow]
24
24
  Common --> Type[task-type = implementation]
25
25
  Type --> Worktree{active task worktree?}
26
26
  Worktree -->|yes| PlanPick[approved plan pick/text]
@@ -39,9 +39,9 @@ flowchart TD
39
39
  Confirm --> Render[render-bundle]
40
40
  ```
41
41
 
42
- `implementation`은 worker override 질문이 없다. wizard `render_args()`가 `workers`를 문자열로 내보내고, runtime profile default roster 사용한다. `stage_pick`은 완료/진행중/준비됨/대기 상태를 보여주는 multi-pick이다. 선택한 stage 집합은 의존성 closure 위상정렬을 거쳐 `chain-stages` CSV 되고, 실제 run 그중 stage만 실행한다.
42
+ `implementation` has no worker override question. The wizard `render_args()` emits `workers` as an empty string, and the runtime uses the profile default roster. `stage_pick` is a multi-pick that shows done/in-progress/ready/waiting status. The selected stage set goes through dependency closure and topological sort into a `chain-stages` CSV, and each actual run executes only one of those stages.
43
43
 
44
- 현재 okstra-run wizard 경로는 승인 checkbox를 직접 flip하는 `--approve`를 노출하지 않는다. plan file에는 이미 recognized approval marker가 있어야 한다.
44
+ The current okstra-run wizard path does not expose `--approve` that directly flips the approval checkbox. The plan file must already have a recognized approval marker.
45
45
 
46
46
  ## 3. runtime gate
47
47
 
@@ -70,23 +70,23 @@ sequenceDiagram
70
70
  P-->>W: prepared implementation prompt or PrepareError
71
71
  ```
72
72
 
73
- `--approve`는 Python runtime 존재하지만 okstra-run wizard args 내보내지 않는다. shell path에서는 `--approve`가 unchecked approval line flip하고 audit line 붙인 같은 validation path를 탄다.
73
+ `--approve` exists in the Python runtime, but the okstra-run wizard does not emit it as args. On the shell path, `--approve` flips the unchecked approval line, appends an audit line, and then follows the same validation path.
74
74
 
75
75
  ### 3.1 design-preparation preflight
76
76
 
77
- stage 선택 직후, worktree provision과 `consumers.jsonl`의 `status:"started"` append 전에 approved plan의 design preparation 해소한다. resolver 선택한 stage가 `stageRefs`에 포함된 item만 읽으므로 다른 stage 미확정 결정은 현재 run을 막지 않는다.
77
+ Right after stage selection, before worktree provisioning and appending `status:"started"` to `consumers.jsonl`, it resolves the design preparation of the approved plan. The resolver reads only items whose `stageRefs` includes the selected stage, so an undecided decision in another stage does not block the current run.
78
78
 
79
- | outcome | runtime 동작 |
79
+ | outcome | runtime behavior |
80
80
  |---|---|
81
- | `proceed` | effective AI proposal, confirmed override, guardrail, provisional working assumption `DESIGN_PREP_CONTEXT`로 executor prompt 주입하고 worktree 만든다. |
82
- | `wait_for_input` | `stage <N> waits for design input: ...; <request paths>`로 중단한다. worktree started consumer row 만들지 않는다. |
83
- | `replan` | `stage <N> requires implementation-planning rerun: ...`으로 중단한다. 새로 승인·수정된 결정이 planning snapshot 또는 Stage Map 바꾸게 한다. |
81
+ | `proceed` | Inject the effective AI proposal, confirmed override, guardrail, and provisional working assumption into the executor prompt as `DESIGN_PREP_CONTEXT`, and create the worktree. |
82
+ | `wait_for_input` | Stop with `stage <N> waits for design input: ...; <request paths>`. Do not create the worktree or the started consumer row. |
83
+ | `replan` | Stop with `stage <N> requires implementation-planning rerun: ...`. Let a newly approved/edited decision change the planning snapshot or the Stage Map. |
84
84
 
85
- `ready`, `not-applicable`, `no-design-inputs`는 진행한다. `provisional`은 안전한 working assumption이 있으므로 응답이 없어도 진행할 있으며, non-triggering 승인/수정은 assumption override prompt 명시한다. `blocked` 무응답은 해당 stage 대기시키고, blocked 초안을 승인·수정한 경우에는 권한을 approved plan 반영하도록 replan한다. markerless legacy plan report를 고치지 않고 `legacy-unassessed` warning 함께 진행한다.
85
+ `ready`, `not-applicable`, and `no-design-inputs` proceed. `provisional` can proceed even without a response because there is a safe working assumption, and a non-triggering approval/edit states that assumption and override in the prompt. A `blocked` non-response makes only that stage wait, and when a blocked draft is approved/edited, it replans so that authorization is reflected into the approved plan. A markerless legacy plan proceeds with a `legacy-unassessed` warning without modifying the report.
86
86
 
87
- `manual-user-test` input 같은 유연한 상태를 사용한다. planning 초안은 implementation 실제 diff에 맞춰 검증 방법을 구체화하기 위한 seed이며, 최종 실행 방법의 SSOT implementation report `implementation.manualUserTest`다. planning sidecar를 final-verification 직접 실행하지 않는다.
87
+ `manual-user-test` input uses the same flexible status. The planning draft is a seed for implementation to concretize the verification method against the actual diff, and the SSOT of the final execution method is the implementation report's `implementation.manualUserTest`. final-verification does not directly execute the planning sidecar.
88
88
 
89
- ## 4. executor verifier
89
+ ## 4. executor and verifier
90
90
 
91
91
  ```mermaid
92
92
  flowchart TD
@@ -103,9 +103,9 @@ flowchart TD
103
103
  Verdict --> Report[Final report preserves dissent]
104
104
  ```
105
105
 
106
- Executor만 project file을 mutate 있다. verifier 같은 worktree에서 read-only로 diff validation command 독립 재실행한다. executor와 같은 provider도 verifier 별도 fresh CLI session에서 다시 실행된다. 같은 session이 diff를 같은 session 승인하는 구조를 막기 위함이다.
106
+ Only the executor may mutate project files. The verifier independently re-runs the diff and validation command read-only in the same worktree. Even a verifier with the same provider as the executor runs again in a separate fresh CLI session. This is to prevent a structure where the same session approves a diff the same session wrote.
107
107
 
108
- ## 5. stage consumers
108
+ ## 5. stage and consumers
109
109
 
110
110
  ```mermaid
111
111
  flowchart LR
@@ -123,11 +123,11 @@ flowchart LR
123
123
  Started --> Run[implementation executes one selected stage]
124
124
  ```
125
125
 
126
- stage 선택은 `auto` 또는 숫자다. 다른 task-type에서 `--stage`가 오면 `PrepareError`다. runtime Stage Lifecycle Snapshot에서 `consumers.jsonl`의 `done`/`started`, carry sidecar backfill, registry의 active stage-key 함께 읽고 점유 stage를 제외한다. Snapshot 저장 파일이 아니라 `stage_targets.py`의 read-side view다.
126
+ Stage selection is `auto` or a number. If `--stage` comes from another task-type, it is a `PrepareError`. The runtime reads `done`/`started` of `consumers.jsonl`, carry sidecar backfill, and the active stage-key of the registry together in the Stage Lifecycle Snapshot, and excludes occupied stages. The Snapshot is not a new stored file but a read-side view of `stage_targets.py`.
127
127
 
128
- stage worktree base dependency 형태로 정한다. 독립 stage는 implementation 진입 고정한 task-key worktree HEAD anchor 삼고, 단일 의존 stage 선행 stage done `head_commit`에서 분기한다. 다중 의존 stage 모든 선행 done commit이 task-key worktree HEAD ancestor인지 확인한 HEAD에서 분기한다.
128
+ The stage worktree base is decided by dependency shape. An independent stage uses the task-key worktree HEAD fixed at first implementation entry as its anchor, and a single-dependency stage branches from the predecessor stage's done `head_commit`. A multi-dependency stage branches from the task-key worktree HEAD after confirming that every predecessor done commit is an ancestor of that HEAD.
129
129
 
130
- ## 6. 산출물
130
+ ## 6. Deliverables
131
131
 
132
132
  ```mermaid
133
133
  flowchart TD
@@ -140,22 +140,22 @@ flowchart TD
140
140
  Report --> Next[Routing recommendation<br/>final-verification or loop back]
141
141
  ```
142
142
 
143
- final report에는 최소 다음이 필요하다.
143
+ The final report requires at least the following.
144
144
 
145
- - approved plan path quoted approval marker
146
- - selected stage, isolated stage worktree path, run artifact path(`runs/implementation/stage-<N>/`)
145
+ - approved plan path and quoted approval marker
146
+ - selected stage, isolated stage worktree path, run artifact path (`runs/implementation/stage-<N>/`)
147
147
  - commit SHA, message, plan step mapping
148
- - diff summary per-file summary
148
+ - diff summary and per-file summary
149
149
  - out-of-plan edits block
150
- - plan validation command의 실제 stdout/stderr exit code
150
+ - actual stdout/stderr and exit code of the plan validation command
151
151
  - TDD failing-then-passing evidence
152
- - verifier independent validation rerun result
153
- - `carry/stage-<N>.json` evidence sidecar `consumers.jsonl` started/done row
152
+ - per-verifier independent validation rerun result
153
+ - `carry/stage-<N>.json` evidence sidecar and `consumers.jsonl` started/done row
154
154
  - rollback verification
155
- - 실제 diff 맞춰 확정한 `implementation.manualUserTest`와 실행 가능 여부
155
+ - `implementation.manualUserTest` finalized against the actual diff and whether it is executable
156
156
  - follow-up tasks table
157
157
 
158
- ## 7. 금지선
158
+ ## 7. Forbidden actions
159
159
 
160
160
  ```mermaid
161
161
  flowchart TD
@@ -168,9 +168,9 @@ flowchart TD
168
168
  Impl -. forbidden .-> Acceptance[declaring final acceptance]
169
169
  ```
170
170
 
171
- phase final acceptance 선언하지 않는다. ready for final-verification 또는 needs new loop만 말한다.
171
+ This phase does not declare final acceptance. It says only ready for final-verification or needs new loop.
172
172
 
173
- ## 8. 확인한 코드
173
+ ## 8. Verified code
174
174
 
175
175
  - [`prompts/profiles/implementation.md`](../../prompts/profiles/implementation.md)
176
176
  - [`templates/reports/implementation-input.template.md`](../../templates/reports/implementation-input.template.md)
@@ -2,27 +2,27 @@
2
2
 
3
3
  ## Index
4
4
 
5
- - [1. 목적](#1-목적)
6
- - [2. okstra-run wizard 흐름](#2-okstra-run-wizard-흐름)
7
- - [3. prepare 단계](#3-prepare-단계)
5
+ - [1. Purpose](#1-purpose)
6
+ - [2. okstra-run wizard flow](#2-okstra-run-wizard-flow)
7
+ - [3. prepare stage](#3-prepare-stage)
8
8
  - [4. entry gate](#4-entry-gate)
9
- - [5. lead-only 실행 흐름](#5-lead-only-실행-흐름)
10
- - [6. PR template 결정](#6-pr-template-결정)
11
- - [7. 산출물](#7-산출물)
12
- - [8. 금지선](#8-금지선)
13
- - [9. 확인한 코드](#9-확인한-코드)
9
+ - [5. lead-only execution flow](#5-lead-only-execution-flow)
10
+ - [6. PR template resolution](#6-pr-template-resolution)
11
+ - [7. Deliverables](#7-deliverables)
12
+ - [8. Forbidden actions](#8-forbidden-actions)
13
+ - [9. Verified code](#9-verified-code)
14
14
 
15
- ## 1. 목적
15
+ ## 1. Purpose
16
16
 
17
- `release-handoff`는 `accepted` verdict가 나온 already-committed implementation 결과를 push하거나 PR로 넘기는 terminal phase다. whole-task mode 검증된 task branch 그대로 포장한다. stage-group mode 선택 stage들을 collector branch assemble해 PR로 묶을 있으며, 이때 생성되는 merge commit `okstra handoff assemble`만 만든다.
17
+ `release-handoff` is the terminal phase that pushes an already-committed implementation result with an `accepted` verdict, or hands it off as a PR. whole-task mode packages the verified task branch as-is. stage-group mode can assemble the selected stages into a collector branch and bundle them into a single PR, and the merge commit created here is produced only by `okstra handoff assemble`.
18
18
 
19
- phase worker dispatch 없다. `claude`, `codex`, `report-writer` roster 쓰지 않으며 Claude lead inline으로 git/gh inspection, 사용자 질문, PR draft, final report 작성을 모두 수행한다.
19
+ This phase has no worker dispatch. It does not use the `claude`, `codex`, or `report-writer` roster; the Claude lead performs git/gh inspection, user questions, the PR draft, and the final report all inline.
20
20
 
21
- ## 2. okstra-run wizard 흐름
21
+ ## 2. okstra-run wizard flow
22
22
 
23
23
  ```mermaid
24
24
  flowchart TD
25
- Start[/okstra-run/] --> Common[공통 task identity flow]
25
+ Start[/okstra-run/] --> Common[common task identity flow]
26
26
  Common --> Type[task-type = release-handoff]
27
27
  Type --> Plan[approved plan auto/pick]
28
28
  Plan --> Scope[handoff stage pick<br/>whole-task or eligible stages]
@@ -39,11 +39,11 @@ flowchart TD
39
39
  Confirm --> Render[render-bundle]
40
40
  ```
41
41
 
42
- `release-handoff`는 worker roster prompt 없다. wizard outcome `renderArgs`는 `pr-template-path`를 release-handoff 때만 포함하고, runtime worker list 강제로 empty 만든다. scope 선택은 prepare 전에 끝나며, project/global 저장은 `outcome.persistActions[]`의 `config.set pr-template-path` action으로 `render-bundle` 전에 실행된다. whole-task accepted whole-task verification report 있어야 하고, stage-group Stage Lifecycle Snapshot에서 accepted single-stage verification으로 `verified` 처리됐지만 아직 `pr`로 덮이지 않은 stage만 후보가 된다.
42
+ `release-handoff` has no worker roster prompt. The wizard outcome's `renderArgs` includes `pr-template-path` only for release-handoff, and the runtime forces the worker list to empty. Scope selection finishes before prepare, and the project/global save runs before `render-bundle` via the `config.set pr-template-path` action of `outcome.persistActions[]`. whole-task requires an accepted whole-task verification report, and for stage-group only the stages that were marked `verified` by an accepted single-stage verification in the Stage Lifecycle Snapshot but not yet covered by a `pr` become candidates.
43
43
 
44
- 주의할 점은 phase task worktree provisioning 대상이라는 것이다. 정상 흐름은 같은 task-key의 implementation/final-verification 결과를 재사용한다. task 시작하면 branch 만들어질 있고, entry gate "implementation commit exists" 조건에서 막힐 가능성이 높다.
44
+ Note that this phase is also a target of task worktree provisioning. The normal flow reuses the implementation/final-verification result of the same task-key. Starting a new task may create a new branch, and it is likely to be blocked at the entry gate's "implementation commit exists" condition.
45
45
 
46
- ## 3. prepare 단계
46
+ ## 3. prepare stage
47
47
 
48
48
  ```mermaid
49
49
  sequenceDiagram
@@ -64,7 +64,7 @@ sequenceDiagram
64
64
  P-->>W: lead prompt for current session
65
65
  ```
66
66
 
67
- profile `Required workers:` block 없고 `run.py`도 `release-handoff`에서는 worker override를 비운다. 따라서 `prompts/lead/okstra-lead-contract.md`의 일반 TeamCreate / convergence / report-writer 흐름을 타지 않는 것이 의도된 동작이다.
67
+ The profile has no `Required workers:` block, and `run.py` also empties the worker override for `release-handoff`. So not going through the general TeamCreate / convergence / report-writer flow of `prompts/lead/okstra-lead-contract.md` is the intended behavior.
68
68
 
69
69
  ## 4. entry gate
70
70
 
@@ -86,18 +86,18 @@ flowchart TD
86
86
  Commits -->|yes| Ready[handoff questions may begin]
87
87
  ```
88
88
 
89
- lead는 사용자에게 push/PR 여부를 묻기 전에 다음을 확인한다.
89
+ Before asking the user whether to push/PR, the lead confirms the following.
90
90
 
91
- - prepare 생성한 input 문서(`release-handoff-input.md`) `## Source Verification Report` 모드(`HANDOFF_MODE`) 인용 보고서 표를 담고 있다. brief entry phase 입력물이라 release-handoff 에는 없다 사용자의 stage 선택은 wizard `handoff_stage_pick` 또는 CLI `--stages` 로 prepare 전에 끝난다.
92
- - whole-task mode에서는 인용 report `verificationScope=whole-task`이고 `Verdict Token = accepted`여야 한다.
93
- - stage-group mode에서는 인용된 single-stage report `Verdict Token = accepted`여야 하며, prepare/`okstra handoff assemble`이 Stage Lifecycle Snapshot 기반 eligibility dependency closure를 다시 강제한다.
94
- - working tree clean이다.
95
- - 현재 branch `main`, `master`, `prod`, `preprod`, `staging`, `dev` 같은 base branch가 아니다.
96
- - `<base>..HEAD` commit range 비어 있지 않다.
91
+ - The `## Source Verification Report` of the input document (`release-handoff-input.md`) generated by prepare contains the mode (`HANDOFF_MODE`) and the cited report table. The brief is the input of the entry phase, so it does not exist in release-handoff the user's stage selection finishes before prepare via the wizard `handoff_stage_pick` or the CLI `--stages`.
92
+ - In whole-task mode, the cited report must be `verificationScope=whole-task` and `Verdict Token = accepted`.
93
+ - In stage-group mode, each cited single-stage report must be `Verdict Token = accepted`, and prepare / `okstra handoff assemble` re-enforce the Stage Lifecycle Snapshot-based eligibility and dependency closure.
94
+ - The working tree is clean.
95
+ - The current branch is not a base branch such as `main`, `master`, `prod`, `preprod`, `staging`, or `dev`.
96
+ - The `<base>..HEAD` commit range is non-empty.
97
97
 
98
- `conditional-accept`, `blocked`, 애매한 문장 verdict는 모두 즉시 종료 대상이다.
98
+ `conditional-accept`, `blocked`, and vague-sentence verdicts are all immediate-termination targets.
99
99
 
100
- ## 5. lead-only 실행 흐름
100
+ ## 5. lead-only execution flow
101
101
 
102
102
  ```mermaid
103
103
  stateDiagram-v2
@@ -126,15 +126,15 @@ stateDiagram-v2
126
126
  FinalReport --> [*]
127
127
  ```
128
128
 
129
- 사용자 interaction 정확히 단계다.
129
+ User interaction is exactly three steps.
130
130
 
131
131
  1. Q1 action: `local checkout`, `push + PR`, `skip`
132
- 2. Q2 PR base: `staging`, `preprod`, `main`, 직접 입력 등 profile menu의 branch
132
+ 2. Q2 PR base: a branch from the profile menu such as `staging`, `preprod`, `main`, or Enter directly
133
133
  3. Q3 PR title/body: `use as-is`, `edit then proceed`, `cancel`
134
134
 
135
- `push + PR`에서만 merge-conflict probe 한다.
135
+ The merge-conflict probe happens only for `push + PR`.
136
136
 
137
- stage-group mode에서는 `local checkout`을 제공하지 않는다. `push + PR`을 고른 PR base 먼저 선택하고, 이미 고정된 `HANDOFF_STAGES`를 확인한 다음 `okstra handoff assemble`이 collector branch 만든다. 이후 conflict probe PR title/body 확인은 collector branch head로 삼는다.
137
+ In stage-group mode, `local checkout` is not offered. After choosing `push + PR`, first select the PR base, confirm the already-fixed `HANDOFF_STAGES`, and then `okstra handoff assemble` creates the collector branch. After that, the conflict probe and PR title/body confirmation take the collector branch as head.
138
138
 
139
139
  ```mermaid
140
140
  flowchart TD
@@ -148,9 +148,9 @@ flowchart TD
148
148
  Ask -->|cancel| Report[final report without push/PR]
149
149
  ```
150
150
 
151
- probe working tree를 바꾸지 않아야 한다. `git merge`, `git rebase`, `git pull`은 probe에 포함되지 않는다.
151
+ The probe must not change the working tree. `git merge`, `git rebase`, and `git pull` are not part of this probe.
152
152
 
153
- ## 6. PR template 결정
153
+ ## 6. PR template resolution
154
154
 
155
155
  ```mermaid
156
156
  flowchart TD
@@ -163,9 +163,9 @@ flowchart TD
163
163
  Global -->|missing| Default[okstra skill default template]
164
164
  ```
165
165
 
166
- customize path에서 사용자가 template 고르면 okstra-run skill render-bundle 전에 project/global scope 저장을 수행한다. runtime resolved `PR_TEMPLATE_PATH`와 `PR_TEMPLATE_SOURCE`를 run context 넣고, lead 파일을 그대로 읽어 HTML comment를 제거한 placeholder를 채운다. section 구조를 hard-code하면 안 된다.
166
+ When the user picks a template on the customize path, the okstra-run skill performs the project/global scope save before render-bundle. The runtime puts the resolved `PR_TEMPLATE_PATH` and `PR_TEMPLATE_SOURCE` into the run context, and the lead reads this file as-is, removes the HTML comments, and fills the placeholders. The section structure must not be hard-coded.
167
167
 
168
- ## 7. 산출물
168
+ ## 7. Deliverables
169
169
 
170
170
  ```mermaid
171
171
  flowchart TD
@@ -179,20 +179,20 @@ flowchart TD
179
179
  Report --> Done[routing recommendation: done]
180
180
  ```
181
181
 
182
- final report에는 최소 다음이 필요하다.
182
+ The final report requires at least the following.
183
183
 
184
- - originating final-verification report path quoted `accepted` verdict row
185
- - handoff mode(`whole-task` 또는 `stage-group`) selected stages
186
- - feature branch run start `git status --short`
187
- - 사용자 선택 기록
188
- - 실행한 모든 git/gh command와 exit code
184
+ - originating final-verification report path and quoted `accepted` verdict row
185
+ - handoff mode (`whole-task` or `stage-group`) and selected stages
186
+ - feature branch and run start `git status --short`
187
+ - record of user selections
188
+ - all executed git/gh commands and exit codes
189
189
  - implementation commit list
190
- - merge-conflict probe 결과
191
- - stage-group이면 collector branch, merge commit SHA, dependency-closure 결과
192
- - PR 생성, 재사용, 생략 결과
190
+ - merge-conflict probe result
191
+ - for stage-group, the collector branch, merge commit SHA, and dependency-closure result
192
+ - PR created, reused, or skipped result
193
193
  - routing recommendation `done`
194
194
 
195
- ## 8. 금지선
195
+ ## 8. Forbidden actions
196
196
 
197
197
  ```mermaid
198
198
  flowchart TD
@@ -207,9 +207,9 @@ flowchart TD
207
207
  RH -. forbidden .-> Merge[gh pr merge]
208
208
  ```
209
209
 
210
- 실패한 `git push`를 약한 안전장치로 재시도하면 된다. non-fast-forward 같은 실패가 나면 멈추고 사용자 지시를 받아야 하며, `--force` 계열 flag는 사용자 요청이 있어도 금지다.
210
+ A failed `git push` must not be retried with weaker safeguards. When a failure such as non-fast-forward occurs, stop and take the user's instruction, and `--force`-family flags are forbidden even if the user requests them.
211
211
 
212
- ## 9. 확인한 코드
212
+ ## 9. Verified code
213
213
 
214
214
  - [`prompts/profiles/release-handoff.md`](../../prompts/profiles/release-handoff.md)
215
215
  - [`templates/reports/release-handoff-input.template.md`](../../templates/reports/release-handoff-input.template.md)
@@ -2,18 +2,18 @@
2
2
 
3
3
  ## Index
4
4
 
5
- - [1. 목적](#1-목적)
6
- - [2. okstra-run wizard 흐름](#2-okstra-run-wizard-흐름)
7
- - [3. prepare_task_bundle 처리](#3-prepare_task_bundle-처리)
8
- - [4. lead 실행 흐름](#4-lead-실행-흐름)
9
- - [5. 산출물과 routing](#5-산출물과-routing)
10
- - [6. 확인한 코드](#6-확인한-코드)
5
+ - [1. Purpose](#1-purpose)
6
+ - [2. okstra-run wizard flow](#2-okstra-run-wizard-flow)
7
+ - [3. prepare_task_bundle handling](#3-prepare_task_bundle-handling)
8
+ - [4. lead execution flow](#4-lead-execution-flow)
9
+ - [5. Deliverables and routing](#5-deliverables-and-routing)
10
+ - [6. Code reviewed](#6-code-reviewed)
11
11
 
12
- ## 1. 목적
12
+ ## 1. Purpose
13
13
 
14
- `requirements-discovery`는 구현 전에 요청을 분류한다. bugfix, feature, improvement, refactor, ops 무엇인지 판단하고, 다음 안전 phase `error-analysis`인지 `implementation-planning`인지 고른다. 직접 `implementation`으로 넘기는 것은 profile 유효하지 않다. implementation은 승인된 `implementation-planning` report 있어야 시작할 수 있다.
14
+ `requirements-discovery` classifies the request before implementation. It determines which of bugfix, feature, improvement, refactor, or ops it is, and chooses whether the next safe phase is `error-analysis` or `implementation-planning`. Going directly to `implementation` is not valid per the profile. Implementation can only start once an approved `implementation-planning` report exists.
15
15
 
16
- ## 2. okstra-run wizard 흐름
16
+ ## 2. okstra-run wizard flow
17
17
 
18
18
  ```mermaid
19
19
  flowchart TD
@@ -42,9 +42,9 @@ flowchart TD
42
42
  Confirm --> Render[render-bundle]
43
43
  ```
44
44
 
45
- worker multi-pick에서 picker `report-writer`를 옵션으로 보여주지 않는다. 사용자가 `claude`만 골라도 wizard `report-writer`를 강제 append한다. optional `antigravity`는 사용자가 골랐을 때만 포함된다.
45
+ In the worker multi-pick, the picker does not show `report-writer` as an option. Even if the user selects only `claude`, the wizard force-appends `report-writer`. The optional `antigravity` is included only when the user selects it.
46
46
 
47
- ## 3. prepare_task_bundle 처리
47
+ ## 3. prepare_task_bundle handling
48
48
 
49
49
  ```mermaid
50
50
  sequenceDiagram
@@ -65,9 +65,9 @@ sequenceDiagram
65
65
  P-->>W: prepared lead prompt
66
66
  ```
67
67
 
68
- runtime에서 phase만을 위한 추가 hard gate는 없다. 중요한 gate는 profile file 존재, brief file 존재, base-ref first phase에서 resolvable해야 한다는 worktree gate, worker override가 profile roster 범위를 벗어나지 않아야 한다는 gate다.
68
+ There is no additional hard gate in the runtime for this phase alone. The important gates are: the profile file exists, the brief file exists, the worktree gate requiring base-ref to be resolvable at the first phase, and the gate requiring worker overrides to stay within the profile roster range.
69
69
 
70
- ## 4. lead 실행 흐름
70
+ ## 4. lead execution flow
71
71
 
72
72
  ```mermaid
73
73
  flowchart TD
@@ -79,9 +79,9 @@ flowchart TD
79
79
  R --> P7[Phase 7 token usage, validate, persist]
80
80
  ```
81
81
 
82
- `requirements-discovery`는 convergence default 1 round다. 예외는 `render._build_convergence_block()`와 `prompts/lead/okstra-lead-contract.md` 모두에서 명시된다.
82
+ `requirements-discovery` has a convergence default of 1 round. This exception is stated in both `render._build_convergence_block()` and `prompts/lead/okstra-lead-contract.md`.
83
83
 
84
- ## 5. 산출물과 routing
84
+ ## 5. Deliverables and routing
85
85
 
86
86
  ```mermaid
87
87
  flowchart LR
@@ -94,17 +94,17 @@ flowchart LR
94
94
  Route -. invalid .-> Impl[implementation<br/>not allowed directly]
95
95
  ```
96
96
 
97
- final report 다음을 특히 강조한다.
97
+ The final report emphasizes the following in particular.
98
98
 
99
99
  - evidence-backed routing decision
100
- - missing input uncertainty boundary
101
- - 다음 phase safe resume guidance
102
- - `terminology:*` brief item에 대한 canonical term resolution
103
- - blocking input 있으면 `## 1. Clarification Items` unified table에 `Blocks=next-phase`
100
+ - missing input and uncertainty boundary
101
+ - the next phase and safe resume guidance
102
+ - canonical term resolution for `terminology:*` brief items
103
+ - if there is blocking input, `Blocks=next-phase` in the `## 1. Clarification Items` unified table
104
104
 
105
- Non-goal은 source edit, plan authoring, build, deployment다.
105
+ Non-goals are source edit, plan authoring, build, and deployment.
106
106
 
107
- ## 6. 확인한 코드
107
+ ## 6. Code reviewed
108
108
 
109
109
  - [`skills/okstra-run/SKILL.md`](../../skills/okstra-run/SKILL.md)
110
110
  - [`scripts/okstra_ctl/wizard.py`](../../scripts/okstra_ctl/wizard.py)
@@ -112,4 +112,3 @@ Non-goal은 source edit, plan authoring, build, deployment다.
112
112
  - [`scripts/okstra_ctl/workflow.py`](../../scripts/okstra_ctl/workflow.py)
113
113
  - [`prompts/profiles/requirements-discovery.md`](../../prompts/profiles/requirements-discovery.md)
114
114
  - [`prompts/lead/okstra-lead-contract.md`](../../prompts/lead/okstra-lead-contract.md)
115
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okstra",
3
- "version": "0.123.0",
3
+ "version": "0.124.0",
4
4
  "description": "Multi-agent cross-verification orchestrator runtime + Claude Code skills.",
5
5
  "license": "MIT",
6
6
  "author": "devonshin",