okstra 0.149.0 → 0.151.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/architecture.md +1 -1
- package/docs/cli.md +2 -2
- package/docs/project-structure-overview.md +1 -1
- package/package.json +3 -2
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/workers/report-writer-worker.md +8 -0
- package/runtime/agents/workers/translator-worker.md +67 -0
- package/runtime/bin/okstra-render-final-report.py +0 -11
- package/runtime/bin/okstra-report-translate.py +191 -0
- package/runtime/prompts/lead/adapters/claude-code.md +1 -1
- package/runtime/prompts/lead/okstra-lead-contract.md +1 -0
- package/runtime/prompts/lead/plan-body-verification.md +1 -1
- package/runtime/prompts/lead/report-writer.md +16 -15
- package/runtime/prompts/lead/team-contract.md +2 -2
- package/runtime/prompts/wizard/prompts.ko.json +17 -1
- package/runtime/python/okstra_ctl/analysis_inputs.py +24 -9
- package/runtime/python/okstra_ctl/analysis_packet.py +23 -1
- package/runtime/python/okstra_ctl/clarification_items.py +241 -44
- package/runtime/python/okstra_ctl/codex_dispatch.py +2 -1
- package/runtime/python/okstra_ctl/convergence.py +15 -1
- package/runtime/python/okstra_ctl/dispatch_core.py +2 -2
- package/runtime/python/okstra_ctl/dispatch_state.py +12 -1
- package/runtime/python/okstra_ctl/final_report_paths.py +22 -1
- package/runtime/python/okstra_ctl/i18n.py +12 -7
- package/runtime/python/okstra_ctl/render_final_report.py +18 -17
- package/runtime/python/okstra_ctl/report_finalize.py +18 -0
- package/runtime/python/okstra_ctl/report_html/filters.py +15 -77
- package/runtime/python/okstra_ctl/report_html/render.py +44 -2
- package/runtime/python/okstra_ctl/report_translation.py +469 -0
- package/runtime/python/okstra_ctl/report_views.py +23 -9
- package/runtime/python/okstra_ctl/run.py +1 -1
- package/runtime/python/okstra_ctl/user_response.py +11 -6
- package/runtime/python/okstra_ctl/wizard.py +100 -25
- package/runtime/python/okstra_ctl/worker_liveness.py +130 -36
- package/runtime/templates/reports/html/base.template.html +12 -12
- package/runtime/templates/reports/html/i18n/en.json +395 -0
- package/runtime/templates/reports/html/i18n/ko.json +395 -0
- package/runtime/templates/reports/html/macros/forms.html +16 -16
- package/runtime/templates/reports/html/macros/visualizations.html +2 -2
- package/runtime/templates/reports/html/tasks/change-impact-analysis.template.html +17 -17
- package/runtime/templates/reports/html/tasks/error-analysis.template.html +12 -12
- package/runtime/templates/reports/html/tasks/feature-analysis.template.html +16 -16
- package/runtime/templates/reports/html/tasks/final-verification.template.html +12 -12
- package/runtime/templates/reports/html/tasks/implementation-planning.template.html +37 -37
- package/runtime/templates/reports/html/tasks/implementation.template.html +18 -18
- package/runtime/templates/reports/html/tasks/improvement-discovery.template.html +7 -7
- package/runtime/templates/reports/html/tasks/project-analysis.template.html +29 -29
- package/runtime/templates/reports/html/tasks/release-handoff.template.html +13 -13
- package/runtime/templates/reports/html/tasks/requirements-discovery.template.html +14 -14
- package/runtime/templates/reports/report.js +8 -5
- package/runtime/validators/validate-report-views.py +1 -1
- package/runtime/validators/validate-run.py +59 -31
- package/src/cli-registry.mjs +11 -0
- package/src/commands/inspect/worker-liveness.mjs +9 -7
- package/src/commands/report/translate.mjs +31 -0
- package/src/lib/helper-scripts.mjs +1 -0
- package/runtime/templates/reports/i18n/ko.json +0 -273
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_meta": {
|
|
3
|
-
"lang": "ko",
|
|
4
|
-
"note": "okstra final-report 고정 문자열 (한국어). 키는 en.json 과 정확히 일치해야 한다. 키를 추가하면 en.json 도 같은 커밋에서 추가한다."
|
|
5
|
-
},
|
|
6
|
-
"emptyState": {
|
|
7
|
-
"consensusItems": "- 합의 항목 없음.",
|
|
8
|
-
"differences": "- 유의미한 차이 없음. 6.1 Consensus 가 그대로 유효합니다.",
|
|
9
|
-
"primaryEvidence": "- 주 증거 없음.",
|
|
10
|
-
"secondaryEvidence": "- 보조 증거 또는 대안 해석 없음.",
|
|
11
|
-
"risks": "- 누락된 정보·위험 없음.",
|
|
12
|
-
"crossProjectDependencies": "- 다른 프로젝트에 대한 선행/후속 의존 없음.",
|
|
13
|
-
"decisionDrafts": "- 결정 기록 초안이나 스킵된 ADR 후보 없음.",
|
|
14
|
-
"dependencyRisk": "- 의존성·마이그레이션 위험 없음.",
|
|
15
|
-
"dissent": "- 반대 의견 없음.",
|
|
16
|
-
"outOfPlanEdits": "- 계획 외 편집 없음.",
|
|
17
|
-
"declinedFixRecommendations": "- 없음.",
|
|
18
|
-
"discrepancy": "- 없음.",
|
|
19
|
-
"lingeringRisks": "- 추적 대상 잔존 위험 없음.",
|
|
20
|
-
"noClarification": "- 추가 정보 요청 없음. Section 7 의 최종 판단이 그대로 유효합니다.",
|
|
21
|
-
"noFollowUp": "- 후속 작업 없음. 본 run 의 다음 phase 는 §3 (Recommended Next Steps) 참고.",
|
|
22
|
-
"endStateCoverage": "이번 phase 에 기록된 종료 상태 처리가 없습니다.",
|
|
23
|
-
"errorAnalysisCauseCandidates": "근거가 뒷받침하는 원인 후보가 아직 없습니다."
|
|
24
|
-
},
|
|
25
|
-
"columns": {
|
|
26
|
-
"recordMeta": "항목",
|
|
27
|
-
"summary": "한 줄 요약",
|
|
28
|
-
"source": "출처 (brief/source/worker)",
|
|
29
|
-
"rawTokens": "처리 토큰",
|
|
30
|
-
"billableTokens": "환산 토큰",
|
|
31
|
-
"billableTokensInputEquiv": "환산 토큰 (input 기준)",
|
|
32
|
-
"cost": "비용 (USD)",
|
|
33
|
-
"checkMethod": "확인 방법",
|
|
34
|
-
"disposition": "처리",
|
|
35
|
-
"coveredBy": "처리 위치",
|
|
36
|
-
"evidence": "근거",
|
|
37
|
-
"rationale": "사유"
|
|
38
|
-
},
|
|
39
|
-
"sectionAside": {
|
|
40
|
-
"crossProjectDependencies": "프로젝트 간 의존성",
|
|
41
|
-
"decisionDrafts": "결정 기록 초안",
|
|
42
|
-
"dependencyRisk": "의존성·마이그레이션 위험",
|
|
43
|
-
"validationChecklist": "검증 체크리스트",
|
|
44
|
-
"rollbackStrategy": "롤백 전략",
|
|
45
|
-
"planBodyVerification": "계획 본문 검증",
|
|
46
|
-
"recommendedOption": "권장 옵션",
|
|
47
|
-
"optionCandidates": "옵션 후보",
|
|
48
|
-
"tradeOffMatrix": "트레이드오프 매트릭스",
|
|
49
|
-
"stepwiseExecutionOrder": "단계별 실행 순서",
|
|
50
|
-
"endStateCoverage": "종료 상태 처리"
|
|
51
|
-
},
|
|
52
|
-
"sectionIntro": {
|
|
53
|
-
"verdictCard": "한눈에 보는 결과 카드 — `## 7. Final Verdict` 와 `## 3. Recommended Next Steps` 의 값을 그대로 옮긴 요약입니다.",
|
|
54
|
-
"clarificationCarryIn": "이전 보고서의 미해결 `Clarification Items` 를 새 증거로 재검토해 해소·갱신한 뒤 이어받은 항목입니다.",
|
|
55
|
-
"ticketCoverage": "이 run 이 다룬 핵심 문제·요구사항·검증 대상 요약입니다.",
|
|
56
|
-
"executionStatus": "각 worker 의 상태·배정 모델·핵심 finding 을 한눈에 보는 표입니다.",
|
|
57
|
-
"sourceItemsRule": "`Source items` 열은 이 합의 항목이 어느 워커의 어느 항목에서 합성됐는지를 `<worker>:<item-id>` 형식으로 표기합니다.",
|
|
58
|
-
"planBodyVerification": "계획 본문의 각 항목(옵션·스테이지·스텝·의존성·검증·롤백·요구사항 커버리지)이 적힌 대로 실행 가능하고 서로 모순이 없는지 워커들이 항목별로 교차 검증한 결과입니다. 각 옵션이 '문제를 실제로 푸는지'(요구사항 충족)는 여기가 아니라 Requirement Coverage 에서 별도로 판정합니다.",
|
|
59
|
-
"clarificationItems": "다음 진행 전에 사용자의 답변이나 자료 첨부가 필요한 항목입니다.",
|
|
60
|
-
"readerSummary": "가장 짧은 읽기 경로입니다. 무엇이 결정됐는지, 사람이 다음에 무엇을 해야 하는지, 어떤 감사 세부사항은 나중에 봐도 되는지 먼저 보여줍니다.",
|
|
61
|
-
"endStateCoverage": "브리프가 고정한 종료 상태 id 별로 이번 phase 가 어떻게 처리했는지 기록합니다. `addressed` 가 아닌 행은 사유가 있어야 합니다."
|
|
62
|
-
},
|
|
63
|
-
"analysis": {
|
|
64
|
-
"basisIntro": "이 분석의 불변 실행 스냅샷, 제한된 스캔 범위, 현재 코드 사실, 추론, 미확인 항목, 검토 처리 결과입니다.",
|
|
65
|
-
"projectIntro": "프로젝트 구성요소, 경계, 진입점, 의존성, 저장소, 외부 시스템, 얕은 기능 인덱스입니다.",
|
|
66
|
-
"featureIntro": "확인된 기능 대상의 흐름, 규칙, 상태 변화, 외부 상호작용, 테스트 범위입니다.",
|
|
67
|
-
"changeImpactIntro": "제안 변경의 보존 동작, 영향 대상, 의존성 전파, 테스트·운영 영향, 계획 제약입니다.",
|
|
68
|
-
"empty": "- 기록된 행이 없습니다.",
|
|
69
|
-
"reviewNotRecorded": "검토되지 않음"
|
|
70
|
-
},
|
|
71
|
-
"tokenSummary": {
|
|
72
|
-
"heading": "토큰 사용량 요약",
|
|
73
|
-
"tableHeaderItem": "항목",
|
|
74
|
-
"rowLead": "Lead",
|
|
75
|
-
"rowWorkerTotal": "Worker 합계",
|
|
76
|
-
"rowGrandTotal": "**전체 합계**",
|
|
77
|
-
"rowCliExtra": "Codex/Antigravity CLI 추가 비용"
|
|
78
|
-
},
|
|
79
|
-
"verdictCard": {
|
|
80
|
-
"tableHeaderLabel": "항목",
|
|
81
|
-
"tableHeaderValue": "값",
|
|
82
|
-
"approvalRequiredSuffix": "frontmatter `approved` 가 `true` 여야 `implementation` 진입 가능",
|
|
83
|
-
"rationaleLabel": "근거 요약",
|
|
84
|
-
"nextStepLabel": "다음 단계"
|
|
85
|
-
},
|
|
86
|
-
"readerSummary": {
|
|
87
|
-
"heading": "Reader Summary",
|
|
88
|
-
"tableHeaderItem": "항목",
|
|
89
|
-
"tableHeaderValue": "값",
|
|
90
|
-
"decisionLabel": "Decision",
|
|
91
|
-
"humanActionRequiredLabel": "Human action required",
|
|
92
|
-
"blockingItemsLabel": "Blocking items",
|
|
93
|
-
"safeToSkipLabel": "Safe to skip on first read",
|
|
94
|
-
"recommendedCommandLabel": "Recommended command"
|
|
95
|
-
},
|
|
96
|
-
"rationale": {
|
|
97
|
-
"heading": "작업 배경과 근거",
|
|
98
|
-
"intro": "이 작업을 왜·무엇을·왜 그렇게 하는지 검토자가 따라갈 수 있도록 정리한다. 각 항목은 근거(파일:줄, 보고서 ID 등)를 인용한다.",
|
|
99
|
-
"motivationLabel": "왜 이 작업을 하는가",
|
|
100
|
-
"problemLabel": "왜 이게 문제인가",
|
|
101
|
-
"approachLabel": "그래서 어떤 작업이 필요한가",
|
|
102
|
-
"justificationLabel": "왜 이게 합리적 선택인가"
|
|
103
|
-
},
|
|
104
|
-
"ticketCoverage": {
|
|
105
|
-
"intro": "이 run 이 다룬 ticket 과, 각 ticket 이 등장한 섹션·관련 항목 목록입니다.",
|
|
106
|
-
"columnSections": "등장 섹션",
|
|
107
|
-
"columnRelatedIds": "관련 항목 IDs"
|
|
108
|
-
},
|
|
109
|
-
"errorAnalysis": {
|
|
110
|
-
"heading": "오류 분석 결과",
|
|
111
|
-
"symptomVerbatim": "증상 원문",
|
|
112
|
-
"observableFailure": "관측된 실패",
|
|
113
|
-
"reproductionStatus": "재현 상태",
|
|
114
|
-
"reproductionEvidence": "재현 근거",
|
|
115
|
-
"blockedReason": "차단 사유",
|
|
116
|
-
"candidate": "원인 후보",
|
|
117
|
-
"supportingEvidence": "지지 근거",
|
|
118
|
-
"falsifyingEvidence": "반증 확인",
|
|
119
|
-
"confidence": "신뢰도",
|
|
120
|
-
"disproveWith": "반증 방법",
|
|
121
|
-
"nextDiagnostic": "다음 진단",
|
|
122
|
-
"confirmingSignal": "확인 신호",
|
|
123
|
-
"rejectingSignal": "기각 신호",
|
|
124
|
-
"route": "라우팅"
|
|
125
|
-
},
|
|
126
|
-
"finalVerdict": {
|
|
127
|
-
"intro": "이 run 의 최종 결론과 다음 행동입니다. **`Direction`** 은 권장 다음 행동으로 `continue-investigation`(조사 계속) · `begin-planning`(계획 시작) · `begin-implementation`(구현 시작) · `approve`(승인) · `reject`(반려) · `hold`(보류) 중 하나이며, 모든 task-type 에 존재합니다. `begin-planning`은 진단이 `implementation-planning`에 진입할 준비가 됐음을 뜻합니다. **`Verdict Token`** 은 `final-verification` task-type 에서만 의미를 가집니다 — `accepted` · `conditional-accept` · `blocked` 중 하나로 `release-handoff` 진입 게이트로 쓰입니다. 그 외 task-type 에서 `Verdict Token` 은 항상 `not-applicable`(해당 없음) 입니다."
|
|
128
|
-
},
|
|
129
|
-
"evidence": {
|
|
130
|
-
"sourceItemsColumnNote": "`Source items` 열 설명은 §6.1 과 동일합니다."
|
|
131
|
-
},
|
|
132
|
-
"roundHistory": {
|
|
133
|
-
"round2SkippedReasonNote": "(허용 값: `queue-empty`, `max-rounds-1`, `all-reverify-non-result`, `not-skipped`, `convergence-disabled`, `single-analyser-only`)",
|
|
134
|
-
"singleRoundPrefix": "단일 라운드 —",
|
|
135
|
-
"noRoundsNote": "재검증 라운드 미실행 (그룹핑 단계에서 전부 합의)."
|
|
136
|
-
},
|
|
137
|
-
"implementationPlanning": {
|
|
138
|
-
"planBodyGateLegend": "게이트 결과 값 뜻 — `passed`: 이견 없이 통과 · `passed-with-dissent`: 소수 워커의 반대가 남았으나 통과(반대가 다수였다면 승인 차단) · `blocked-by-disagreement`: 다수 반대로 승인 차단 · `aborted-non-result`: 검증 자체가 결과를 내지 못함.",
|
|
139
|
-
"planBodyBlockedByLegend": "게이트를 막은 입력 — `majority-disagree`: 워커 다수 반대 · `coverage-gap`: Requirement Coverage 의 gap / blocked 행(워커 반대와는 무관) · `non-result`: 검증 자체가 결과를 내지 못함. 이 항목이 없으면 차단 원인이 없다는 뜻이다.",
|
|
140
|
-
"planBodyVerdictLegend": "판정(Verdict) — **AGREE**: 적힌 대로 실행 가능하고 다른 항목과 내부적으로 일관됨 · **SUPPLEMENT**: 항목 자체는 타당하나 의존성·엣지케이스·전제조건이 누락됨 · **DISAGREE**: 결함이 있음(결함 유형 참조) · **verification-error**: 워커 검증이 결과를 내지 못함.",
|
|
141
|
-
"planBodyBreakageLegend": "결함 유형(Breakage kind) — a: 인용한 파일 경로/심볼이 다른 스텝·옵션과 불일치 · b: 명령이 실행 불가하거나 모호함 · c: 검증 신호가 관측 불가 · d: 롤백이 커밋/의존성 순서를 위반 (참고용 — 롤백은 사람이 수행하므로 게이트를 막지 않음) · e: 트레이드오프 매트릭스와 모순 · f: 요구사항 커버리지 행이 요구사항을 실제로 충족하는 옵션/스테이지/스텝에 매핑되지 않음. (`--` = 해당 없음) · 자가수정 가능 여부(Fixability) — planner-fixable: 코드·계획·브리프만으로 수정 가능 · needs-user-input: 외부 결정 필요",
|
|
142
|
-
"planBodySourceLabel": "출처 §",
|
|
143
|
-
"planBodyBlockerLabel": "승인 차단 →",
|
|
144
|
-
"optionInterfacesLabel": "영향 인터페이스 / 공개 계약 / 다운스트림 소비자",
|
|
145
|
-
"optionBlastRadiusLabel": "폭발 반경 추정",
|
|
146
|
-
"recommendedTableHeaderLabel": "항목",
|
|
147
|
-
"recommendedTableHeaderValue": "값",
|
|
148
|
-
"coreReasonLabel": "핵심 이유",
|
|
149
|
-
"rationaleLabel": "근거 (Trade-off 행 / 원칙)",
|
|
150
|
-
"rejectedSummaryLabel": "채택되지 않은 옵션 요약",
|
|
151
|
-
"columnImpact": "영향",
|
|
152
|
-
"columnMitigation": "완화 / 선행 작업",
|
|
153
|
-
"crossProjectFields": {
|
|
154
|
-
"requiredWork": "필요 작업",
|
|
155
|
-
"verificationSignal": "검증 신호",
|
|
156
|
-
"linkedWork": "연결된 작업",
|
|
157
|
-
"howToStart": "시작 방법"
|
|
158
|
-
},
|
|
159
|
-
"crossProjectRecognitionNote": "참고: 상대 프로젝트의 run 은 구조적으로 독립이다 — done-set·stage 번호·depends-on 이 모두 자기 repo 기준이며, 이 run 의 완료 stage 가 자동으로 done 으로 인식되지 않는다. 이 섹션은 상대 run 의 planning 을 seed 하는 narrative 입력일 뿐이다.",
|
|
160
|
-
"decisionDraftFields": {
|
|
161
|
-
"status": "상태",
|
|
162
|
-
"context": "맥락",
|
|
163
|
-
"decision": "결정",
|
|
164
|
-
"consequences": "결과",
|
|
165
|
-
"alternativesConsidered": "검토한 대안"
|
|
166
|
-
},
|
|
167
|
-
"designPreparation": {
|
|
168
|
-
"heading": "구현 설계 준비",
|
|
169
|
-
"mode": "모드",
|
|
170
|
-
"reason": "이유",
|
|
171
|
-
"kind": "종류",
|
|
172
|
-
"status": "상태",
|
|
173
|
-
"stages": "스테이지",
|
|
174
|
-
"need": "필요성",
|
|
175
|
-
"knownFacts": "확인된 사실",
|
|
176
|
-
"openQuestions": "열린 질문",
|
|
177
|
-
"aiProposal": "AI 제안",
|
|
178
|
-
"proposalDetails": "세부 내용",
|
|
179
|
-
"proposalAssumptions": "가정",
|
|
180
|
-
"proposalEvidence": "근거",
|
|
181
|
-
"proposalConfidence": "신뢰도",
|
|
182
|
-
"humanConfirmation": "사람 확인",
|
|
183
|
-
"confirmationRequired": "필수 여부",
|
|
184
|
-
"confirmationReason": "확인 이유",
|
|
185
|
-
"suggestedAction": "권장 조치",
|
|
186
|
-
"replanTriggerFields": "재계획 트리거 필드",
|
|
187
|
-
"workingAssumption": "작업 가정",
|
|
188
|
-
"guardrails": "가드레일",
|
|
189
|
-
"reviewAt": "검토 시점",
|
|
190
|
-
"ifStillOpen": "미해결 시",
|
|
191
|
-
"requestPath": "요청 경로",
|
|
192
|
-
"blockReason": "차단 이유",
|
|
193
|
-
"requiredDecision": "필요한 결정",
|
|
194
|
-
"notApplicableReason": "해당 없음 이유",
|
|
195
|
-
"none": "(없음)",
|
|
196
|
-
"empty": "구현 설계 준비 항목이 없습니다."
|
|
197
|
-
},
|
|
198
|
-
"variationPointAnalysis": {
|
|
199
|
-
"heading": "변이점 분석",
|
|
200
|
-
"hasMultiple": "복수 구현",
|
|
201
|
-
"rationale": "변이점 없음 근거",
|
|
202
|
-
"behavior": "동작",
|
|
203
|
-
"implementations": "구현체",
|
|
204
|
-
"evidence": "근거",
|
|
205
|
-
"extract": "인터페이스로 추출",
|
|
206
|
-
"testSeams": "테스트 이음새",
|
|
207
|
-
"seamEmpty": "선언된 이음새가 없습니다."
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
"releaseHandoff": {
|
|
211
|
-
"auditNote": "git/gh mutating 명령이 실행된 phase 의 감사 기록.",
|
|
212
|
-
"branchStateAside": "run 시작 시점",
|
|
213
|
-
"gitStatusShortLabel": "`git status --short` 출력",
|
|
214
|
-
"existingPrLabel": "기존 PR 존재 여부",
|
|
215
|
-
"userSelectionsAside": "메뉴 응답 기록",
|
|
216
|
-
"questionsTableHeader": {
|
|
217
|
-
"questionId": "질문 ID",
|
|
218
|
-
"questionBody": "질문 본문",
|
|
219
|
-
"userResponse": "사용자 응답 (원문)",
|
|
220
|
-
"allowedOptions": "응답이 가능한 보기"
|
|
221
|
-
},
|
|
222
|
-
"h1Body": "어떤 작업을 실행할까요?",
|
|
223
|
-
"h2Body": "PR base 브랜치 (H1=`push + PR` 인 경우)",
|
|
224
|
-
"h3Body": "PR title/body 초안 처리",
|
|
225
|
-
"h2DefaultLabel": "(n/a)",
|
|
226
|
-
"h2OptionsLabel": "staging / preprod / main / 사용자 입력",
|
|
227
|
-
"noMutationNote": "(mutating 명령 미실행 — H1=`skip` 또는 H3=`cancel`)",
|
|
228
|
-
"commandsTableHeader": {
|
|
229
|
-
"outputSummary": "stdout/stderr 요약"
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
"executionMeta": {
|
|
233
|
-
"runExecutorWorktreePath": "본 run 의 `EXECUTOR_WORKTREE_PATH`",
|
|
234
|
-
"runBaseRef": "본 run 의 base ref"
|
|
235
|
-
},
|
|
236
|
-
"evidenceMeta": {
|
|
237
|
-
"commitListSummary": "인용된 commit list",
|
|
238
|
-
"diffSummaryQuote": "인용된 diff summary (implementation 보고서)",
|
|
239
|
-
"targetWorktreePath": "검증 대상 worktree path",
|
|
240
|
-
"implementationBaseRef": "Implementation base ref",
|
|
241
|
-
"capturedHeadSha": "run 시작 시 capture 한 head SHA",
|
|
242
|
-
"gitStatusAtRunStart": "`git status --short` (run 시작 시점)",
|
|
243
|
-
"gitDiffStatAtRunStart": "`git diff --stat <base>..HEAD` (run 시작 시점)"
|
|
244
|
-
},
|
|
245
|
-
"clarification": {
|
|
246
|
-
"fillAndRerun": "답을 채우신 뒤 같은 phase 를 다시 실행:",
|
|
247
|
-
"separateTerminalLabel": "별도 터미널"
|
|
248
|
-
},
|
|
249
|
-
"followUpTasks": {
|
|
250
|
-
"headingAside": "후속 작업"
|
|
251
|
-
},
|
|
252
|
-
"finalVerification": {
|
|
253
|
-
"validationEvidenceAside": "요구사항 커버리지",
|
|
254
|
-
"columnRequirement": "Requirement (plan/brief 인용)",
|
|
255
|
-
"verificationScope": "검증 범위",
|
|
256
|
-
"stageReportsLabel": "stage 별 구현 리포트"
|
|
257
|
-
},
|
|
258
|
-
"manualUserTest": {
|
|
259
|
-
"environmentSetup": "환경 기동",
|
|
260
|
-
"steps": "확인 스텝",
|
|
261
|
-
"expectedResult": "기대 결과",
|
|
262
|
-
"notApplicable": "사용자 테스트 불필요",
|
|
263
|
-
"performed": "수행",
|
|
264
|
-
"result": "결과",
|
|
265
|
-
"observed": "관찰값"
|
|
266
|
-
},
|
|
267
|
-
"index": {
|
|
268
|
-
"heading": "목차",
|
|
269
|
-
"sectionsLabel": "섹션",
|
|
270
|
-
"idIndexLabel": "ID 색인",
|
|
271
|
-
"noIds": "- (이 보고서에 추적 대상 ID 가 없습니다.)"
|
|
272
|
-
}
|
|
273
|
-
}
|