okstra 0.123.0 → 0.125.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/docs/architecture/storage-model.md +3 -1
- package/docs/architecture.md +16 -2
- package/docs/cli.md +3 -1
- package/docs/for-ai/README.md +41 -35
- package/docs/for-ai/skills/okstra-brief-gen.md +105 -105
- package/docs/for-ai/skills/okstra-container-build.md +61 -61
- package/docs/for-ai/skills/okstra-graphify.md +64 -0
- package/docs/for-ai/skills/okstra-inspect.md +87 -86
- package/docs/for-ai/skills/okstra-manager.md +32 -32
- package/docs/for-ai/skills/okstra-memory.md +49 -50
- package/docs/for-ai/skills/okstra-pr-gen.md +48 -0
- package/docs/for-ai/skills/okstra-rollup.md +58 -58
- package/docs/for-ai/skills/okstra-run.md +95 -95
- package/docs/for-ai/skills/okstra-schedule-gen.md +106 -106
- package/docs/for-ai/skills/okstra-setup.md +63 -64
- package/docs/for-ai/skills/okstra-user-response.md +48 -0
- package/docs/performance-improvement-plan-v2.md +6 -6
- package/docs/pr-template-usage.md +34 -34
- package/docs/project-structure-overview.md +91 -70
- package/docs/task-process/README.md +33 -33
- package/docs/task-process/common-flow.md +26 -26
- package/docs/task-process/error-analysis.md +20 -21
- package/docs/task-process/final-verification.md +41 -41
- package/docs/task-process/implementation-planning.md +33 -33
- package/docs/task-process/implementation.md +38 -38
- package/docs/task-process/release-handoff.md +46 -46
- package/docs/task-process/requirements-discovery.md +22 -23
- package/package.json +1 -1
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/workers/antigravity-worker.md +4 -4
- package/runtime/agents/workers/claude-worker.md +2 -2
- package/runtime/agents/workers/codex-worker.md +4 -4
- package/runtime/agents/workers/report-writer-worker.md +4 -4
- package/runtime/bin/lib/okstra/usage.sh +1 -1
- package/runtime/prompts/coding-preflight/frameworks/node-server.md +1 -1
- package/runtime/prompts/launch.template.md +1 -1
- package/runtime/prompts/lead/convergence.md +10 -20
- package/runtime/prompts/lead/okstra-lead-contract.md +15 -17
- package/runtime/prompts/lead/plan-body-verification.md +18 -18
- package/runtime/prompts/lead/report-writer.md +46 -44
- package/runtime/prompts/lead/team-contract.md +11 -122
- package/runtime/prompts/profiles/_common-contract.md +15 -22
- package/runtime/prompts/profiles/_implementation-deliverable.md +1 -1
- package/runtime/prompts/profiles/_implementation-executor.md +1 -1
- package/runtime/prompts/profiles/_implementation-verifier.md +28 -2
- package/runtime/prompts/profiles/error-analysis.md +2 -2
- package/runtime/prompts/profiles/final-verification.md +1 -1
- package/runtime/prompts/profiles/implementation-planning.md +13 -13
- package/runtime/prompts/profiles/implementation.md +2 -1
- package/runtime/prompts/profiles/improvement-discovery.md +1 -1
- package/runtime/prompts/profiles/release-handoff.md +3 -3
- package/runtime/prompts/profiles/requirements-discovery.md +17 -18
- package/runtime/python/okstra_ctl/models.py +4 -2
- package/runtime/python/okstra_ctl/run.py +8 -2
- package/runtime/python/okstra_ctl/stage_fix_carry.py +112 -0
- package/runtime/schemas/final-report-v1.0.schema.json +6 -6
- package/runtime/skills/_fragments/bash-invocation-rule.md +1 -0
- package/runtime/skills/_fragments/preflight-outdated-cli.md +1 -0
- package/runtime/skills/_fragments/python-bootstrap-note.md +1 -0
- package/runtime/skills/okstra-brief-gen/SKILL.md +117 -122
- package/runtime/skills/okstra-container-build/SKILL.md +24 -14
- package/runtime/skills/okstra-graphify/SKILL.md +12 -4
- package/runtime/skills/okstra-inspect/SKILL.md +39 -747
- package/runtime/skills/okstra-inspect/facets/cost.md +84 -0
- package/runtime/skills/okstra-inspect/facets/error-zip.md +41 -0
- package/runtime/skills/okstra-inspect/facets/errors.md +69 -0
- package/runtime/skills/okstra-inspect/facets/history.md +90 -0
- package/runtime/skills/okstra-inspect/facets/logs.md +89 -0
- package/runtime/skills/okstra-inspect/facets/recap.md +96 -0
- package/runtime/skills/okstra-inspect/facets/report.md +61 -0
- package/runtime/skills/okstra-inspect/facets/status.md +145 -0
- package/runtime/skills/okstra-inspect/facets/time.md +56 -0
- package/runtime/skills/okstra-manager/SKILL.md +1 -1
- package/runtime/skills/okstra-memory/SKILL.md +3 -3
- package/runtime/skills/okstra-pr-gen/SKILL.md +3 -3
- package/runtime/skills/okstra-rollup/SKILL.md +12 -6
- package/runtime/skills/okstra-run/SKILL.md +49 -88
- package/runtime/skills/okstra-schedule-gen/SKILL.md +36 -30
- package/runtime/skills/okstra-setup/SKILL.md +1 -1
- package/runtime/skills/okstra-setup/references/project-config.md +17 -16
- package/runtime/skills/okstra-usage/SKILL.md +5 -2
- package/runtime/skills/okstra-user-response/SKILL.md +15 -3
- package/runtime/templates/prd/brief.template.md +92 -92
- package/runtime/templates/project-docs/task-index.template.md +1 -1
- package/runtime/templates/reports/error-analysis-input.template.md +1 -1
- package/runtime/templates/reports/fan-out-unit.template.md +6 -6
- package/runtime/templates/reports/final-verification-input.template.md +6 -6
- package/runtime/templates/reports/implementation-input.template.md +1 -1
- package/runtime/templates/reports/implementation-planning-input.template.md +1 -1
- package/runtime/templates/reports/improvement-discovery-input.template.md +1 -1
- package/runtime/templates/reports/quick-input.template.md +1 -1
- package/runtime/templates/reports/release-handoff-input.template.md +1 -1
- package/runtime/templates/reports/schedule.template.md +22 -22
- package/runtime/templates/reports/task-brief.template.md +3 -3
- package/runtime/templates/reports/user-response.template.md +20 -20
- package/runtime/templates/worker-prompt-preamble.md +111 -13
- package/runtime/validators/validate-schedule.py +1 -1
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
## Index
|
|
4
4
|
|
|
5
|
-
- [1.
|
|
6
|
-
- [2. okstra-run wizard
|
|
7
|
-
- [3. prepare_task_bundle
|
|
8
|
-
- [4. lead
|
|
9
|
-
- [5. design preparation
|
|
10
|
-
- [6.
|
|
11
|
-
- [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
|
|
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[
|
|
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
|
|
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
|
|
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
|
|
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
|
|
79
|
+
## 5. design preparation and final report gate
|
|
80
80
|
|
|
81
|
-
lead
|
|
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
|
-
|
|
|
85
|
+
| Status | Meaning | Handling on implementation entry |
|
|
86
86
|
|---|---|---|
|
|
87
|
-
| `ready` |
|
|
88
|
-
| `provisional` |
|
|
89
|
-
| `blocked` |
|
|
90
|
-
| `not-applicable` | detector
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
6
|
-
- [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
|
|
10
|
-
- [5. stage
|
|
11
|
-
- [6.
|
|
12
|
-
- [7.
|
|
13
|
-
- [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
|
|
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[
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
82
|
-
| `wait_for_input` | `stage <N> waits for design input: ...; <request paths
|
|
83
|
-
| `replan` | `stage <N> requires implementation-planning rerun:
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
148
|
+
- diff summary and per-file summary
|
|
149
149
|
- out-of-plan edits block
|
|
150
|
-
-
|
|
150
|
+
- actual stdout/stderr and exit code of the plan validation command
|
|
151
151
|
- TDD failing-then-passing evidence
|
|
152
|
-
- verifier
|
|
153
|
-
- `carry/stage-<N>.json` evidence sidecar
|
|
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
|
-
-
|
|
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
|
-
|
|
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.
|
|
6
|
-
- [2. okstra-run wizard
|
|
7
|
-
- [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
|
|
10
|
-
- [6. PR template
|
|
11
|
-
- [7.
|
|
12
|
-
- [8.
|
|
13
|
-
- [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
|
|
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
|
-
|
|
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[
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
89
|
+
Before asking the user whether to push/PR, the lead confirms the following.
|
|
90
90
|
|
|
91
|
-
-
|
|
92
|
-
- whole-task mode
|
|
93
|
-
- stage-group mode
|
|
94
|
-
- working tree
|
|
95
|
-
-
|
|
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`,
|
|
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
|
-
|
|
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`,
|
|
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
|
-
|
|
135
|
+
The merge-conflict probe happens only for `push + PR`.
|
|
136
136
|
|
|
137
|
-
stage-group mode
|
|
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
|
|
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
|
-
|
|
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
|
|
185
|
-
- handoff mode(`whole-task`
|
|
186
|
-
- feature branch
|
|
187
|
-
-
|
|
188
|
-
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
6
|
-
- [2. okstra-run wizard
|
|
7
|
-
- [3. prepare_task_bundle
|
|
8
|
-
- [4. lead
|
|
9
|
-
- [5.
|
|
10
|
-
- [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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
101
|
-
-
|
|
102
|
-
- `terminology:*` brief
|
|
103
|
-
- blocking input
|
|
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-
|
|
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
|
-
|