okstra 0.34.0 → 0.36.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 (101) hide show
  1. package/README.kr.md +26 -16
  2. package/README.md +26 -16
  3. package/docs/kr/architecture.md +59 -45
  4. package/docs/kr/cli.md +61 -18
  5. package/docs/pr-template-usage.md +65 -0
  6. package/docs/project-structure-overview.md +358 -354
  7. package/docs/superpowers/plans/2026-05-12-ticket-id-in-reports.md +1 -1
  8. package/docs/superpowers/plans/2026-05-14-convergence-queue-pruning.md +1 -1
  9. package/docs/superpowers/plans/2026-05-17-dual-format-final-report.md +1 -1
  10. package/docs/superpowers/plans/2026-05-20-final-report-language.md +1501 -0
  11. package/docs/superpowers/plans/2026-05-20-implementation-planning-multi-stage.md +1267 -0
  12. package/docs/superpowers/plans/2026-05-20-okstra-run-prompt-sot-b1.md +1007 -0
  13. package/docs/superpowers/plans/2026-05-20-wizard-messages-json-sot.md +720 -0
  14. package/docs/superpowers/plans/2026-05-20-wizard-prompt-json-sot-a1.md +681 -0
  15. package/docs/superpowers/plans/2026-05-21-improvement-discovery-task-type.md +1691 -0
  16. package/docs/superpowers/specs/2026-05-20-final-report-language-design.md +383 -0
  17. package/docs/superpowers/specs/2026-05-20-implementation-planning-multi-stage-design.md +320 -0
  18. package/docs/superpowers/specs/2026-05-20-okstra-run-prompt-sot-design.md +299 -0
  19. package/docs/superpowers/specs/2026-05-21-improvement-discovery-task-type-design.md +335 -0
  20. package/docs/task-process/README.md +74 -0
  21. package/docs/task-process/common-flow.md +166 -0
  22. package/docs/task-process/error-analysis.md +101 -0
  23. package/docs/task-process/final-verification.md +167 -0
  24. package/docs/task-process/implementation-planning.md +128 -0
  25. package/docs/task-process/implementation.md +149 -0
  26. package/docs/task-process/release-handoff.md +206 -0
  27. package/docs/task-process/requirements-discovery.md +115 -0
  28. package/package.json +1 -1
  29. package/runtime/BUILD.json +2 -2
  30. package/runtime/agents/SKILL.md +29 -13
  31. package/runtime/agents/workers/claude-worker.md +26 -0
  32. package/runtime/agents/workers/codex-worker.md +27 -1
  33. package/runtime/agents/workers/gemini-worker.md +27 -1
  34. package/runtime/agents/workers/report-writer-worker.md +8 -1
  35. package/runtime/bin/okstra-central.sh +6 -6
  36. package/runtime/bin/okstra-codex-exec.sh +49 -28
  37. package/runtime/bin/okstra-gemini-exec.sh +39 -21
  38. package/runtime/bin/okstra-render-final-report.py +13 -2
  39. package/runtime/bin/okstra-wrapper-status.py +155 -0
  40. package/runtime/bin/okstra.sh +2 -2
  41. package/runtime/prompts/profiles/_common-contract.md +11 -6
  42. package/runtime/prompts/profiles/error-analysis.md +3 -7
  43. package/runtime/prompts/profiles/implementation-planning.md +22 -21
  44. package/runtime/prompts/profiles/implementation.md +28 -11
  45. package/runtime/prompts/profiles/improvement-discovery.md +42 -0
  46. package/runtime/prompts/profiles/kr/_common-contract.md +92 -0
  47. package/runtime/prompts/profiles/kr/error-analysis.md +36 -0
  48. package/runtime/prompts/profiles/kr/final-verification.md +48 -0
  49. package/runtime/prompts/profiles/kr/implementation-planning.md +90 -0
  50. package/runtime/prompts/profiles/kr/implementation.md +144 -0
  51. package/runtime/prompts/profiles/kr/improvement-discovery.md +42 -0
  52. package/runtime/prompts/profiles/kr/release-handoff.md +104 -0
  53. package/runtime/prompts/profiles/kr/requirements-discovery.md +42 -0
  54. package/runtime/prompts/profiles/release-handoff.md +1 -1
  55. package/runtime/prompts/profiles/requirements-discovery.md +8 -12
  56. package/runtime/prompts/wizard/prompts.ko.json +230 -0
  57. package/runtime/python/lib/okstra/cli.sh +2 -49
  58. package/runtime/python/lib/okstra/globals.sh +21 -21
  59. package/runtime/python/lib/okstra/interactive.sh +7 -7
  60. package/runtime/python/okstra_ctl/clarification_items.py +3 -9
  61. package/runtime/python/okstra_ctl/consumers.py +53 -0
  62. package/runtime/python/okstra_ctl/final_report_schema.py +0 -7
  63. package/runtime/python/okstra_ctl/i18n.py +73 -0
  64. package/runtime/python/okstra_ctl/improvement_lenses.py +44 -0
  65. package/runtime/python/okstra_ctl/index.py +1 -1
  66. package/runtime/python/okstra_ctl/paths.py +23 -20
  67. package/runtime/python/okstra_ctl/render.py +147 -202
  68. package/runtime/python/okstra_ctl/render_final_report.py +53 -10
  69. package/runtime/python/okstra_ctl/run.py +292 -107
  70. package/runtime/python/okstra_ctl/run_context.py +22 -0
  71. package/runtime/python/okstra_ctl/seeding.py +186 -0
  72. package/runtime/python/okstra_ctl/wizard.py +348 -127
  73. package/runtime/python/okstra_ctl/workflow.py +21 -2
  74. package/runtime/python/okstra_ctl/worktree.py +54 -1
  75. package/runtime/python/okstra_project/resolver.py +4 -3
  76. package/runtime/python/okstra_token_usage/report.py +2 -2
  77. package/runtime/schemas/final-report-v1.0.schema.json +22 -16
  78. package/runtime/skills/okstra-brief/SKILL.md +124 -31
  79. package/runtime/skills/okstra-convergence/SKILL.md +2 -3
  80. package/runtime/skills/okstra-report-writer/SKILL.md +35 -15
  81. package/runtime/skills/okstra-run/SKILL.md +5 -4
  82. package/runtime/skills/okstra-schedule/SKILL.md +4 -4
  83. package/runtime/skills/okstra-setup/SKILL.md +27 -0
  84. package/runtime/skills/okstra-team-contract/SKILL.md +1 -1
  85. package/runtime/templates/okstra.CLAUDE.md +104 -0
  86. package/runtime/templates/reports/final-report.template.md +93 -98
  87. package/runtime/templates/reports/i18n/en.json +135 -0
  88. package/runtime/templates/reports/i18n/ko.json +135 -0
  89. package/runtime/templates/reports/implementation-planning-input.template.md +18 -0
  90. package/runtime/templates/reports/improvement-discovery-input.template.md +78 -0
  91. package/runtime/templates/reports/task-brief.template.md +2 -2
  92. package/runtime/validators/lib/fixtures.sh +30 -0
  93. package/runtime/validators/lib/runners.sh +1 -1
  94. package/runtime/validators/validate-implementation-plan-stages.py +211 -0
  95. package/runtime/validators/validate-run.py +121 -26
  96. package/runtime/validators/validate-workflow.sh +2 -2
  97. package/runtime/validators/validate_improvement_report.py +275 -0
  98. package/src/config.mjs +18 -0
  99. package/src/install.mjs +41 -14
  100. package/src/setup.mjs +133 -1
  101. package/src/uninstall.mjs +21 -1
@@ -87,7 +87,7 @@ def record_start(home: Path, *, project_id: str, project_root: str,
87
87
  "leadModel": lead_model,
88
88
  "validation": "not-run",
89
89
  "finalReportRel": final_report_rel,
90
- # FINAL_STATUS_FILE 의 카운터(RUN_STATUS_SEQ) 는 RUN_MANIFESTS_SEQ
90
+ # FINAL_STATUS_PATH 의 카운터(RUN_STATUS_SEQ) 는 RUN_MANIFESTS_SEQ
91
91
  # 와 별개로 advance 한다(render-only/실패 prep 은 manifest 만 증가).
92
92
  # 따라서 status 파일을 추적할 때는 manifest seq 를 추정해 glob 으로
93
93
  # 찾지 말고 run 시작 시점의 정식 경로를 row 에 박아 두고 사용한다.
@@ -4,8 +4,8 @@ Inputs: project root, identity (project-id/task-group/task-id), task-type,
4
4
  workspace root, optional run-seq override.
5
5
 
6
6
  Output: dict with every path value the bash render-context used to expose as
7
- environment variables (TASK_ROOT, RUN_DIR, RUN_MANIFESTS_DIR, RUN_MANIFEST_FILE,
8
- FINAL_REPORT_FILE, ...). 호출자가 이 dict 를 그대로 인자로 사용하거나
7
+ environment variables (TASK_ROOT, RUN_DIR, RUN_MANIFESTS_DIR, RUN_MANIFEST_PATH,
8
+ FINAL_REPORT_PATH, ...). 호출자가 이 dict 를 그대로 인자로 사용하거나
9
9
  `write_run_context()` 로 디스크에 박는다.
10
10
 
11
11
  이 모듈은 read-only 한 path 계산만 담당한다. 디렉터리 생성, 파일 쓰기,
@@ -104,6 +104,7 @@ def compute_run_paths(
104
104
  run_sessions = run_dir / "sessions"
105
105
  run_logs = run_dir / "logs"
106
106
  worker_results = run_dir / "worker-results"
107
+ run_carry = run_dir / "carry"
107
108
 
108
109
  if run_seq_override is not None:
109
110
  seq_int = int(run_seq_override)
@@ -158,7 +159,7 @@ def compute_run_paths(
158
159
  "TASK_GROUP": task_group,
159
160
  "TASK_ID": task_id,
160
161
  "TASK_KEY": f"{project_id}:{task_group}:{task_id}",
161
- "ANALYSIS_TYPE": task_type,
162
+ "TASK_TYPE": task_type,
162
163
  "TASK_GROUP_SEGMENT": task_group_segment,
163
164
  "TASK_ID_SEGMENT": task_id_segment,
164
165
  "TASK_TYPE_SEGMENT": task_type_segment,
@@ -166,12 +167,12 @@ def compute_run_paths(
166
167
  "OKSTRA_TASKS_ROOT": str(tasks_root),
167
168
  "OKSTRA_DISCOVERY_DIR": str(discovery_dir),
168
169
  "TASK_ROOT": str(task_root),
169
- "TASK_MANIFEST_FILE": str(task_manifest),
170
- "TASK_INDEX_FILE": str(task_index),
171
- "INSTRUCTION_SET_DIR": str(instruction_set),
170
+ "TASK_MANIFEST_PATH": str(task_manifest),
171
+ "TASK_INDEX_PATH": str(task_index),
172
+ "INSTRUCTION_SET_PATH": str(instruction_set),
172
173
  "RUNS_DIR": str(runs_dir),
173
174
  "HISTORY_DIR": str(history_dir),
174
- "TIMELINE_FILE": str(timeline_file),
175
+ "TIMELINE_PATH": str(timeline_file),
175
176
  "RUN_DIR": str(run_dir),
176
177
  "RUN_MANIFESTS_DIR": str(run_manifests),
177
178
  "RUN_STATE_DIR": str(run_state),
@@ -180,31 +181,32 @@ def compute_run_paths(
180
181
  "RUN_STATUS_DIR": str(run_status),
181
182
  "RUN_SESSIONS_DIR": str(run_sessions),
182
183
  "RUN_LOGS_DIR": str(run_logs),
183
- "WORKER_RESULTS_DIR": str(worker_results),
184
- "RUN_MANIFEST_FILE": str(run_manifest_file),
184
+ "WORKER_RESULTS_PATH": str(worker_results),
185
+ "RUN_CARRY_PATH": str(run_carry),
186
+ "RUN_MANIFEST_PATH": str(run_manifest_file),
185
187
  "RUN_PROMPT_SNAPSHOT_FILE": str(run_prompt_snapshot),
186
188
  "CLAUDE_WORKER_PROMPT_FILE": str(claude_worker_prompt),
187
189
  "CODEX_WORKER_PROMPT_FILE": str(codex_worker_prompt),
188
190
  "GEMINI_WORKER_PROMPT_FILE": str(gemini_worker_prompt),
189
191
  "REPORT_WRITER_WORKER_PROMPT_FILE": str(report_writer_worker_prompt),
190
- "FINAL_REPORT_FILE": str(final_report),
191
- "FINAL_STATUS_FILE": str(final_status),
192
- "TEAM_STATE_FILE": str(team_state),
193
- "FINAL_REPORT_TEMPLATE_FILE": str(final_report_template),
192
+ "FINAL_REPORT_PATH": str(final_report),
193
+ "FINAL_STATUS_PATH": str(final_status),
194
+ "TEAM_STATE_PATH": str(team_state),
195
+ "FINAL_REPORT_TEMPLATE_PATH": str(final_report_template),
194
196
  "REFERENCE_EXPECTATIONS_FILE": str(reference_expectations),
195
- "CLAUDE_RESUME_COMMAND_FILE": str(claude_resume_command),
197
+ "CLAUDE_RESUME_COMMAND_PATH": str(claude_resume_command),
196
198
  "OKSTRA_LATEST_TASK_FILE": str(latest_task_file),
197
199
  "OKSTRA_TASK_CATALOG_FILE": str(task_catalog_file),
198
200
  "CLAUDE_WORKER_RESULT_FILE": str(claude_worker_result),
199
201
  "CODEX_WORKER_RESULT_FILE": str(codex_worker_result),
200
202
  "GEMINI_WORKER_RESULT_FILE": str(gemini_worker_result),
201
203
  "REPORT_WRITER_WORKER_RESULT_FILE": str(report_writer_worker_result),
202
- "RUN_ERRORS_LOG_FILE": str(run_errors_log),
203
- "CLAUDE_WORKER_ERRORS_SIDECAR_FILE": str(claude_worker_errors_sidecar),
204
- "CODEX_WORKER_ERRORS_SIDECAR_FILE": str(codex_worker_errors_sidecar),
205
- "GEMINI_WORKER_ERRORS_SIDECAR_FILE": str(gemini_worker_errors_sidecar),
206
- "REPORT_WRITER_WORKER_ERRORS_SIDECAR_FILE": str(report_writer_worker_errors_sidecar),
207
- "RUN_VALIDATOR_SCRIPT": str(run_validator_script),
204
+ "RUN_ERRORS_LOG_PATH": str(run_errors_log),
205
+ "CLAUDE_WORKER_ERRORS_SIDECAR_PATH": str(claude_worker_errors_sidecar),
206
+ "CODEX_WORKER_ERRORS_SIDECAR_PATH": str(codex_worker_errors_sidecar),
207
+ "GEMINI_WORKER_ERRORS_SIDECAR_PATH": str(gemini_worker_errors_sidecar),
208
+ "REPORT_WRITER_WORKER_ERRORS_SIDECAR_PATH": str(report_writer_worker_errors_sidecar),
209
+ "RUN_VALIDATOR_PATH": str(run_validator_script),
208
210
  "RUN_MANIFEST_FILENAME": run_manifest_file.name,
209
211
  "RUN_PROMPT_SNAPSHOT_FILENAME": run_prompt_snapshot.name,
210
212
  "FINAL_REPORT_FILENAME": final_report.name,
@@ -248,6 +250,7 @@ def compute_run_paths(
248
250
  ("FINAL_STATUS_RELATIVE_PATH", final_status),
249
251
  ("TEAM_STATE_RELATIVE_PATH", team_state),
250
252
  ("WORKER_RESULTS_RELATIVE_PATH", worker_results),
253
+ ("RUN_CARRY_RELATIVE_PATH", run_carry),
251
254
  ("FINAL_REPORT_TEMPLATE_RELATIVE_PATH", final_report_template),
252
255
  ("REFERENCE_EXPECTATIONS_RELATIVE_PATH", reference_expectations),
253
256
  ("CLAUDE_RESUME_COMMAND_RELATIVE_PATH", claude_resume_command),