okstra 0.48.0 → 0.50.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/docs/kr/architecture.md +8 -8
- package/docs/kr/cli.md +2 -2
- package/docs/project-structure-overview.md +3 -3
- package/docs/superpowers/plans/2026-06-05-compact-markdown-report-tables.md +323 -0
- package/docs/superpowers/plans/2026-06-05-wizard-batch-prompts.md +559 -0
- package/docs/superpowers/specs/2026-06-05-compact-markdown-report-tables-design.md +87 -0
- package/docs/superpowers/specs/2026-06-05-wizard-batch-prompts-design.md +121 -0
- package/docs/task-process/error-analysis.md +1 -1
- package/docs/task-process/final-verification.md +1 -1
- package/docs/task-process/release-handoff.md +1 -1
- package/docs/task-process/requirements-discovery.md +1 -1
- package/package.json +1 -1
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/SKILL.md +3 -3
- package/runtime/agents/workers/claude-worker.md +1 -1
- package/runtime/agents/workers/codex-worker.md +1 -1
- package/runtime/agents/workers/gemini-worker.md +1 -1
- package/runtime/agents/workers/report-writer-worker.md +3 -3
- package/runtime/bin/lib/okstra/tmux-pane.sh +40 -0
- package/runtime/bin/okstra-codex-exec.sh +17 -21
- package/runtime/bin/okstra-gemini-exec.sh +12 -15
- package/runtime/bin/okstra-render-report-views.py +1 -1
- package/runtime/bin/okstra-trace-cleanup.sh +13 -1
- package/runtime/prompts/launch.template.md +1 -1
- package/runtime/prompts/profiles/_common-contract.md +15 -15
- 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 +1 -1
- package/runtime/prompts/profiles/error-analysis.md +1 -1
- package/runtime/prompts/profiles/final-verification.md +2 -2
- package/runtime/prompts/profiles/implementation-planning.md +9 -9
- package/runtime/prompts/profiles/improvement-discovery.md +5 -5
- package/runtime/prompts/profiles/release-handoff.md +2 -2
- package/runtime/prompts/profiles/requirements-discovery.md +2 -2
- package/runtime/python/okstra_ctl/clarification_items.py +11 -11
- package/runtime/python/okstra_ctl/render.py +1 -1
- package/runtime/python/okstra_ctl/render_final_report.py +1 -1
- package/runtime/python/okstra_ctl/report_views.py +26 -39
- package/runtime/python/okstra_ctl/run.py +3 -3
- package/runtime/python/okstra_ctl/wizard.py +90 -3
- package/runtime/python/okstra_ctl/workflow.py +1 -1
- package/runtime/skills/okstra-brief/SKILL.md +1 -1
- package/runtime/skills/okstra-convergence/SKILL.md +8 -8
- package/runtime/skills/okstra-report-writer/SKILL.md +22 -22
- package/runtime/skills/okstra-run/SKILL.md +2 -0
- package/runtime/skills/okstra-team-contract/SKILL.md +1 -1
- package/runtime/templates/project-docs/task-index.template.md +1 -8
- package/runtime/templates/reports/final-report.template.md +194 -198
- package/runtime/templates/reports/i18n/en.json +16 -17
- package/runtime/templates/reports/i18n/ko.json +16 -17
- package/runtime/templates/reports/implementation-planning-input.template.md +1 -1
- package/runtime/templates/reports/release-handoff-input.template.md +1 -1
- package/runtime/templates/reports/schedule.template.md +3 -7
- package/runtime/templates/reports/user-response.template.md +1 -1
- package/runtime/templates/worker-prompt-preamble.md +1 -1
- package/runtime/validators/lib/fixtures.sh +2 -2
- package/runtime/validators/validate-implementation-plan-stages.py +9 -9
- package/runtime/validators/validate-report-views.py +10 -10
- package/runtime/validators/validate-run.py +36 -36
- package/runtime/validators/validate_improvement_report.py +8 -8
|
@@ -205,9 +205,9 @@ def _check_candidates_table(
|
|
|
205
205
|
body: str, brief_frontmatter: dict, errors: list[str]
|
|
206
206
|
) -> None:
|
|
207
207
|
"""Items 1–7 coordinator — parse table, check header, delegate cap and rows."""
|
|
208
|
-
rows = _read_section_table(body, "
|
|
208
|
+
rows = _read_section_table(body, "5.9 Improvement Candidates")
|
|
209
209
|
if not rows:
|
|
210
|
-
errors.append("missing or empty `##
|
|
210
|
+
errors.append("missing or empty `## 5.9 Improvement Candidates` table")
|
|
211
211
|
return
|
|
212
212
|
header, *data = rows
|
|
213
213
|
expected_columns = [
|
|
@@ -216,7 +216,7 @@ def _check_candidates_table(
|
|
|
216
216
|
]
|
|
217
217
|
if header != expected_columns:
|
|
218
218
|
errors.append(
|
|
219
|
-
f"`##
|
|
219
|
+
f"`## 5.9 Improvement Candidates` header must be {expected_columns}, "
|
|
220
220
|
f"got {header}"
|
|
221
221
|
)
|
|
222
222
|
_check_candidates_cap(len(data), brief_frontmatter, errors)
|
|
@@ -228,18 +228,18 @@ def _check_candidates_table(
|
|
|
228
228
|
def _check_final_verdict(
|
|
229
229
|
body: str, errors: list[str]
|
|
230
230
|
) -> list[list[str]]:
|
|
231
|
-
"""Item 8 — ##
|
|
231
|
+
"""Item 8 — ## 7. Final Verdict verdict token is in enum.
|
|
232
232
|
|
|
233
233
|
Returns the parsed final_verdict_rows (empty list when absent).
|
|
234
234
|
"""
|
|
235
|
-
final_verdict_rows = _read_section_table(body, "
|
|
235
|
+
final_verdict_rows = _read_section_table(body, "7. Final Verdict")
|
|
236
236
|
if not final_verdict_rows:
|
|
237
|
-
errors.append("missing `##
|
|
237
|
+
errors.append("missing `## 7. Final Verdict` block")
|
|
238
238
|
return []
|
|
239
239
|
token_cell = final_verdict_rows[-1][0] if final_verdict_rows[-1] else ""
|
|
240
240
|
if token_cell not in _VERDICT_TOKENS:
|
|
241
241
|
errors.append(
|
|
242
|
-
f"`##
|
|
242
|
+
f"`## 7. Final Verdict` Verdict Token '{token_cell}' must be one of {_VERDICT_TOKENS}"
|
|
243
243
|
)
|
|
244
244
|
return final_verdict_rows
|
|
245
245
|
|
|
@@ -253,7 +253,7 @@ def _check_verdict_card(
|
|
|
253
253
|
errors.append("missing `## Verdict Card` block")
|
|
254
254
|
return
|
|
255
255
|
if final_verdict_rows and verdict_card_rows[-1] != final_verdict_rows[-1]:
|
|
256
|
-
errors.append("Verdict Card row must byte-match `##
|
|
256
|
+
errors.append("Verdict Card row must byte-match `## 7. Final Verdict` row")
|
|
257
257
|
|
|
258
258
|
|
|
259
259
|
def validate_improvement_report(
|