okstra 0.8.0 → 0.10.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 (43) hide show
  1. package/README.kr.md +14 -3
  2. package/README.md +14 -3
  3. package/docs/kr/architecture.md +8 -3
  4. package/docs/kr/cli.md +55 -1
  5. package/docs/superpowers/plans/2026-05-12-ticket-id-in-reports.md +638 -0
  6. package/docs/superpowers/specs/2026-05-12-ticket-id-in-reports-design.md +131 -0
  7. package/package.json +1 -1
  8. package/runtime/BUILD.json +2 -2
  9. package/runtime/agents/SKILL.md +13 -0
  10. package/runtime/agents/workers/claude-worker.md +2 -0
  11. package/runtime/agents/workers/codex-worker.md +2 -0
  12. package/runtime/agents/workers/gemini-worker.md +2 -0
  13. package/runtime/agents/workers/report-writer-worker.md +1 -0
  14. package/runtime/prompts/launch.template.md +11 -0
  15. package/runtime/prompts/profiles/_common-contract.md +27 -0
  16. package/runtime/prompts/profiles/error-analysis.md +4 -20
  17. package/runtime/prompts/profiles/final-verification.md +4 -20
  18. package/runtime/prompts/profiles/implementation-planning.md +4 -19
  19. package/runtime/prompts/profiles/implementation.md +34 -21
  20. package/runtime/prompts/profiles/release-handoff.md +89 -0
  21. package/runtime/prompts/profiles/requirements-discovery.md +2 -20
  22. package/runtime/python/lib/okstra/cli.sh +1 -1
  23. package/runtime/python/okstra_ctl/render.py +9 -2
  24. package/runtime/python/okstra_ctl/run.py +61 -1
  25. package/runtime/python/okstra_ctl/workers.py +6 -1
  26. package/runtime/python/okstra_ctl/workflow.py +30 -2
  27. package/runtime/python/okstra_ctl/worktree.py +298 -0
  28. package/runtime/skills/okstra-context-loader/SKILL.md +1 -1
  29. package/runtime/skills/okstra-convergence/SKILL.md +11 -5
  30. package/runtime/skills/okstra-report-finder/SKILL.md +1 -0
  31. package/runtime/skills/okstra-report-writer/SKILL.md +33 -1
  32. package/runtime/skills/okstra-run/SKILL.md +2 -1
  33. package/runtime/skills/okstra-status/SKILL.md +3 -1
  34. package/runtime/skills/okstra-team-contract/SKILL.md +19 -0
  35. package/runtime/skills/okstra-time-summary/SKILL.md +1 -0
  36. package/runtime/templates/reports/error-analysis-input.template.md +1 -0
  37. package/runtime/templates/reports/final-report.template.md +210 -28
  38. package/runtime/templates/reports/implementation-input.template.md +1 -0
  39. package/runtime/templates/reports/implementation-planning-input.template.md +1 -0
  40. package/runtime/templates/reports/quick-input.template.md +1 -0
  41. package/runtime/templates/reports/release-handoff-input.template.md +73 -0
  42. package/runtime/templates/reports/task-brief.template.md +5 -0
  43. package/runtime/validators/validate-run.py +6 -1
@@ -9,6 +9,7 @@
9
9
  - Task Key: `<project-id>:<task-group>:<task-id>`
10
10
  - Related Tasks:
11
11
  - Issue / Ticket:
12
+ - 값이 비면 워커는 `Task ID`로 폴백한다 (prefix 없이 `8852`처럼). 한 run이 여러 ticket을 동시에 다루면 콤마로 구분 (`TICKET-123, TICKET-456`). 어느 쪽으로도 식별 불가하면 `unknown`을 허용한다.
12
13
  - Task Type:
13
14
  - Requested Outcome:
14
15
  - Owner:
@@ -96,6 +97,10 @@
96
97
  2.
97
98
  3.
98
99
 
100
+ ### Standing Ticket-Tagging Rule (always applied by every worker)
101
+
102
+ - 모든 항목 및 표 행에 ticket을 명시한다. 표 형식은 `Ticket ID` 컬럼, bullet/번호목록·섹션 헤더는 `[TICKETID: <id>]` 태그를 사용한다. 채움 우선순위·폴백·다중 ticket 규칙은 `okstra-team-contract` SKILL의 Ticket Tagging 절을 따른다.
103
+
99
104
  ### Standing Scope-Discipline Questions (always answered by every worker)
100
105
 
101
106
  - Which adjacent changes did you consider and **deliberately exclude** from this run? List each with a one-line reason.
@@ -37,7 +37,11 @@ def default_next_phase(task_type: str) -> str:
37
37
  "error-analysis": "implementation-planning",
38
38
  "implementation-planning": "implementation",
39
39
  "implementation": "final-verification",
40
- "final-verification": "done-or-follow-up",
40
+ # final-verification 의 다음 phase 는 verdict 에 따라 갈리므로
41
+ # 정적 매핑은 `pending-release-handoff` 로 두고, 실제 진입은
42
+ # release-handoff profile 의 entry gate (`accepted` 확인) 에서 강제한다.
43
+ "final-verification": "pending-release-handoff",
44
+ "release-handoff": "done-or-follow-up",
41
45
  }
42
46
  return mapping.get(task_type, "unknown")
43
47
 
@@ -84,6 +88,7 @@ def update_workflow_metadata(
84
88
  "implementation-planning",
85
89
  "implementation",
86
90
  "final-verification",
91
+ "release-handoff",
87
92
  ]
88
93
 
89
94
  phase_states = workflow.get("phaseStates", {})