okstra 0.60.2 → 0.60.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okstra",
3
- "version": "0.60.2",
3
+ "version": "0.60.3",
4
4
  "description": "Multi-agent cross-verification orchestrator runtime + Claude Code skills.",
5
5
  "license": "MIT",
6
6
  "author": "devonshin",
@@ -1,5 +1,5 @@
1
1
  {
2
- "package": "0.60.2",
3
- "builtAt": "2026-06-09T06:03:11.725Z",
2
+ "package": "0.60.3",
3
+ "builtAt": "2026-06-09T06:44:22.023Z",
4
4
  "repoRoot": "/home/runner/work/okstra/okstra"
5
5
  }
@@ -522,7 +522,12 @@ def render_to_file(
522
522
  except json.JSONDecodeError as exc:
523
523
  raise FinalReportRenderError(f"invalid JSON in {data_path}: {exc}") from exc
524
524
 
525
- resolved_template = template_path or find_default_template(data_path)
525
+ # 템플릿은 data.json 위치가 아니라 이 모듈(설치본은 ~/.okstra/lib/python,
526
+ # repo 는 scripts/) 위치 기준으로 찾는다. data_path 를 start 로 넘기면
527
+ # 프로젝트의 .okstra 트리만 위로 뒤지다 templates/reports 를 못 찾아
528
+ # 설치본에서 항상 'could not locate template' 으로 실패한다(OKSTRA_HOME 을
529
+ # 수동 설정해야 했던 원인). 프로젝트별 override 는 --template 으로 한다.
530
+ resolved_template = template_path or find_default_template()
526
531
  rendered = render(
527
532
  data,
528
533
  template_path=resolved_template,
@@ -32,6 +32,23 @@ implementation-option: {{ frontmatter.implementationOption | yaml_scalar }}
32
32
  {% for row in followUpTasks if row.origin == 'phase-continuation' %}{% if loop.first %}- Next Step: run `/okstra-run`, select task `{{ header.taskKey }}`, choose task-type `{{ row.suggestedTaskType }}`
33
33
  {% endif %}{% endfor %}- Okstra Version: `{{ header.okstraVersion }}`
34
34
 
35
+ {% if clarificationCarryIn and clarificationCarryIn.sourceFile %}
36
+ ## 0. Clarification Response Carried In From Previous Run
37
+
38
+ - Source file: `{{ clarificationCarryIn.sourceFile }}`
39
+ - {{ t("sectionIntro.clarificationCarryIn") }}
40
+
41
+ {% endif %}
42
+ ## Summary of the Problem or Verification Target
43
+
44
+ {{ t("sectionIntro.ticketCoverage") }}
45
+
46
+ | {{ t("columns.recordMeta") }} | {{ t("columns.summary") }} |
47
+ |--------|------------|
48
+ {% for row in summary -%}
49
+ | **{{ row.id }}**<br>Ticket: `{{ row.ticketId }}`<br>{{ t("columns.source") }}: {{ row.source }} | {{ row.summary }} |
50
+ {% endfor %}
51
+
35
52
  ## Verdict Card
36
53
 
37
54
  {{ t("sectionIntro.verdictCard") }}
@@ -599,23 +616,6 @@ Acceptance: {{ stage.acceptance }}
599
616
  | {{ t("verdictCard.rationaleLabel") }} | {{ finalVerdict.rationaleRowIds | join(', ') }} |
600
617
  | {{ t("verdictCard.nextStepLabel") }} | {{ finalVerdict.nextStep }} |
601
618
 
602
- {% if clarificationCarryIn and clarificationCarryIn.sourceFile %}
603
- ## 0. Clarification Response Carried In From Previous Run
604
-
605
- - Source file: `{{ clarificationCarryIn.sourceFile }}`
606
- - {{ t("sectionIntro.clarificationCarryIn") }}
607
-
608
- {% endif %}
609
- ## Summary of the Problem or Verification Target
610
-
611
- {{ t("sectionIntro.ticketCoverage") }}
612
-
613
- | {{ t("columns.recordMeta") }} | {{ t("columns.summary") }} |
614
- |--------|------------|
615
- {% for row in summary -%}
616
- | **{{ row.id }}**<br>Ticket: `{{ row.ticketId }}`<br>{{ t("columns.source") }}: {{ row.source }} | {{ row.summary }} |
617
- {% endfor %}
618
-
619
619
  {% if ticketCoverage.omit %}
620
620
  {# Ticket Coverage omitted entirely — release-handoff / final-verification #}
621
621
  {%- else %}