@uzysjung/agent-harness 26.111.1 → 26.113.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/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/skills/model-orchestration/SKILL.md +14 -0
- package/templates/skills/north-star/NORTH_STAR.template.md +52 -8
- package/templates/skills/north-star/SKILL.md +71 -17
- package/templates/skills/verification-loop/SKILL.md +38 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uzysjung/agent-harness",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.113.0",
|
|
4
4
|
"description": "Curate vetted AI-coding skills & plugins by your tech stack — install only what you need, across Claude Code, Codex, OpenCode & Antigravity",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -164,6 +164,19 @@ it. How that plays out per lane:
|
|
|
164
164
|
This pairs with, not replaces, deterministic gates (tests, typecheck, CI) — the verifier
|
|
165
165
|
judges what automation can't: spec fit, missed edge cases, design drift.
|
|
166
166
|
|
|
167
|
+
**Verdict vocabulary (fixed).** A verifier's report never ends in free prose — it ends with
|
|
168
|
+
exactly one verdict, `PASS` / `PASS_WITH_NITS` / `FAIL`, and every finding carries one
|
|
169
|
+
severity label, `CRITICAL` / `HIGH` / `MEDIUM` / `LOW` (full contract: the verification-loop
|
|
170
|
+
skill's Verdict Contract). Two consequences for orchestration:
|
|
171
|
+
|
|
172
|
+
- **FAIL closes only on re-verification.** Fix → re-verify is one cycle; if the same
|
|
173
|
+
reviewer will re-verify, keep it alive via SendMessage and *declare* that intent
|
|
174
|
+
(worker lifecycle) — otherwise spawn a fresh verifier.
|
|
175
|
+
- **PASS_WITH_NITS is not silent PASS.** Its LOW/MEDIUM findings come back to the
|
|
176
|
+
orchestrator as recorded follow-ups, not as buried prose — deciding their fate is an
|
|
177
|
+
orchestrator judgment call, never the verifier's. (The name says nits, but the tier it
|
|
178
|
+
covers is LOW **and** MEDIUM.)
|
|
179
|
+
|
|
167
180
|
## Orchestrator handoff (quota exhaustion)
|
|
168
181
|
|
|
169
182
|
When the top-tier orchestrator's quota runs out mid-project, **Opus @ `max` takes over
|
|
@@ -203,6 +216,7 @@ build on. Hand off manually:
|
|
|
203
216
|
→ 오케스트레이터(Fable) 직접
|
|
204
217
|
기획·스펙·계획 문서 작성·관리 / 핵심 구현 / V&V
|
|
205
218
|
→ opus @ xhigh (또는 max) — pinned role 또는 Workflow opts
|
|
219
|
+
V&V 판정 → PASS | PASS_WITH_NITS | FAIL + CRITICAL~LOW (verification-loop 계약)
|
|
206
220
|
반복 구현 / E2E 테스트 / 리서치 스윕
|
|
207
221
|
→ sonnet @ high 이상
|
|
208
222
|
결정적 변환 (rename·포맷) → 모델 위임 금지 — sed/grep/스크립트 직접
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
## 2. North Star Metric (NSM)
|
|
17
17
|
|
|
18
|
+
> [진짜 목표가 직접 측정 불가하면 여기서 프록시를 선언: "진짜 목표 X 는 (외부적/지연이라)
|
|
19
|
+
> 직접 측정 불가하므로, Y(양) + Z(사후 품질)를 프록시로 최적화한다. 근거: …" — 기능은
|
|
20
|
+
> "이 프록시를 올리는가"로 평가한다.]
|
|
21
|
+
|
|
18
22
|
**1차 지표 (현재 단계)**: **[지표 약어 — 풀네임]**
|
|
19
23
|
- 정의: [어떻게 계산하는가]
|
|
20
24
|
- 목표: [수치 + 도달 시점]
|
|
@@ -32,16 +36,45 @@
|
|
|
32
36
|
|
|
33
37
|
---
|
|
34
38
|
|
|
35
|
-
## 3.
|
|
39
|
+
## 3. Pillars (전략 축)
|
|
40
|
+
|
|
41
|
+
각 축은 North Star 로 가는 단계이며, 모든 모듈은 최소 1개 축에 속한다.
|
|
42
|
+
|
|
43
|
+
### Pillar 1 — [이름]
|
|
44
|
+
- **정의**: [이 축이 사용자에게 주는 것 1문장]
|
|
45
|
+
- **현재 위치**: [이 축에 속한 기존 모듈/기능]
|
|
46
|
+
- **전방 목표**: [다음에 쌓을 것]
|
|
47
|
+
- **가설**: [이 축이 NSM 을 올린다고 믿는 이유 1줄]
|
|
48
|
+
|
|
49
|
+
### Pillar 2 — [이름]
|
|
50
|
+
- **정의** / **현재 위치** / **전방 목표** / **가설**: [동일 4요소]
|
|
36
51
|
|
|
37
|
-
### 3
|
|
52
|
+
### Pillar 3 — [이름]
|
|
53
|
+
- **정의** / **현재 위치** / **전방 목표** / **가설**: [동일 4요소]
|
|
54
|
+
|
|
55
|
+
### 모듈 ↔ 축 매핑
|
|
56
|
+
|
|
57
|
+
| 모듈 | 주 축 | 비고 |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| [모듈 A] | P1 | |
|
|
60
|
+
| [모듈 B] | P2 / P3 | [복수 축이면 병기] |
|
|
61
|
+
| [공통 인프라 — 인증·관리 등] | 공통 | 축을 가로지르는 플랫폼 |
|
|
62
|
+
|
|
63
|
+
> 어떤 신규 모듈이 위 축 어디에도 매핑되지 않으면, **착수 전에 북극성 정렬을 재검토**한다.
|
|
64
|
+
> 로드맵 항목도 정기 리뷰 때 축에 매핑해 "새 축·방향 변경 필요 여부"를 판정·기록한다.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 4. Strategic Boundaries (방향성 경계)
|
|
69
|
+
|
|
70
|
+
### 4.1 Will (집중)
|
|
38
71
|
|
|
39
72
|
- **[집중 영역 1]**: [짧은 설명]
|
|
40
73
|
- **[집중 영역 2]**: [짧은 설명]
|
|
41
74
|
- **[집중 영역 3]**: [짧은 설명]
|
|
42
75
|
- **[집중 영역 4]**: [짧은 설명]
|
|
43
76
|
|
|
44
|
-
###
|
|
77
|
+
### 4.2 Won't (의도적 비-방향)
|
|
45
78
|
|
|
46
79
|
scope creep의 1차 방어선. "X는 안 한다"를 명시.
|
|
47
80
|
|
|
@@ -51,7 +84,7 @@ scope creep의 1차 방어선. "X는 안 한다"를 명시.
|
|
|
51
84
|
- **[안 하는 것 4]**: [근거]
|
|
52
85
|
- **[안 하는 것 5]**: [근거]
|
|
53
86
|
|
|
54
|
-
###
|
|
87
|
+
### 4.3 Trade-offs (의식적 선택)
|
|
55
88
|
|
|
56
89
|
| 선택 | 포기한 것 | 근거 |
|
|
57
90
|
|------|----------|------|
|
|
@@ -61,7 +94,7 @@ scope creep의 1차 방어선. "X는 안 한다"를 명시.
|
|
|
61
94
|
|
|
62
95
|
---
|
|
63
96
|
|
|
64
|
-
##
|
|
97
|
+
## 5. Phase Roadmap (장기 진화 단계)
|
|
65
98
|
|
|
66
99
|
### Phase 1 — [이름] (현재)
|
|
67
100
|
- 목표: [한 문장]
|
|
@@ -84,7 +117,9 @@ scope creep의 1차 방어선. "X는 안 한다"를 명시.
|
|
|
84
117
|
|
|
85
118
|
---
|
|
86
119
|
|
|
87
|
-
##
|
|
120
|
+
## 6. Decision Heuristics (의사결정 휴리스틱)
|
|
121
|
+
|
|
122
|
+
### 6.1 4-Gate — "할 것인가"
|
|
88
123
|
|
|
89
124
|
신규 요청·제안이 들어왔을 때 다음 4 게이트를 **모두** 통과해야 우선순위 진입.
|
|
90
125
|
|
|
@@ -97,9 +132,18 @@ scope creep의 1차 방어선. "X는 안 한다"를 명시.
|
|
|
97
132
|
|
|
98
133
|
4개 모두 Pass = 우선순위 진입. 1개라도 Fail = 보류 또는 거절.
|
|
99
134
|
|
|
135
|
+
### 6.2 우선순위 순서 — "언제 할 것인가"
|
|
136
|
+
|
|
137
|
+
무엇을 먼저 할지 모호하면 이 순서로 판정한다. **상위 순위에 미완이 있으면 하위로 건너뛰지
|
|
138
|
+
않는다** (긴급 hotfix·사용자 명시 지시 예외).
|
|
139
|
+
|
|
140
|
+
1. **기본 필수 기능** — 없으면 제품이 성립 안 되는 기본기.
|
|
141
|
+
2. **기능 완성도** — shipped 기능이 사용자 관점 end-to-end 완결인가. 단순 존재 ≠ 완결.
|
|
142
|
+
3. **차별화 깊이** — 핵심 경쟁력의 advanced 구현. research/ADR 선행 필수.
|
|
143
|
+
|
|
100
144
|
---
|
|
101
145
|
|
|
102
|
-
##
|
|
146
|
+
## 7. Versioning & Review
|
|
103
147
|
|
|
104
148
|
- 본 문서는 **분기 1회** 또는 **NSM 도달/미달** 시 갱신.
|
|
105
149
|
- 주요 갱신 (Major CR): NSM 변경 / Phase 정의 변경 / Won't 변경.
|
|
@@ -108,7 +152,7 @@ scope creep의 1차 방어선. "X는 안 한다"를 명시.
|
|
|
108
152
|
|
|
109
153
|
---
|
|
110
154
|
|
|
111
|
-
##
|
|
155
|
+
## 8. Changelog
|
|
112
156
|
|
|
113
157
|
- YYYY-MM-DD: 초안 작성. 참조: [관련 ideation/raw 문서].
|
|
114
158
|
- (이후 갱신 기록)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: north-star
|
|
3
|
-
description: "Defines and enforces a project's long-term direction (North Star Statement, NSM, Will/Won't, 4-gate decision
|
|
3
|
+
description: "Defines and enforces a project's long-term direction (North Star Statement, metric-as-proxy NSM, strategic Pillars with a module↔pillar map, Will/Won't, 4-gate + priority-order decision heuristics). Use when starting a new project, when scope creep is suspected, or when a non-obvious feature request needs prioritization. Sits one layer above SPEC/PRD — answers 'why and where to', not 'what and how'."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# North Star
|
|
@@ -32,22 +32,49 @@ CLAUDE.md의 P1(가정 금지) / P2(Simplicity First) / Decision Making 메타
|
|
|
32
32
|
**좋은 예**: 도메인 명사 + 사용자 + 측정 가능한 결과.
|
|
33
33
|
**나쁜 예**: "최고의 X" / "사용자 만족" — 측정 불가.
|
|
34
34
|
|
|
35
|
-
### 2. North Star Metric (NSM) 정의
|
|
35
|
+
### 2. North Star Metric (NSM) 정의 — metric-as-proxy
|
|
36
36
|
|
|
37
37
|
1차 지표 1개 + 2차 보조 지표 2-4개. 모두 단일 사용자 환경에서 자가 수집 가능해야 한다.
|
|
38
38
|
|
|
39
|
+
**진짜 목표가 직접 측정 불가하면 프록시를 선언한다.** 많은 프로젝트의 실제 목표(사용자의
|
|
40
|
+
투자 수익, 팀의 생산성, 학습 성과 등)는 외부적이거나 지연되어 직접 측정할 수 없다. 그때
|
|
41
|
+
"측정 불가"로 방치하지 말고:
|
|
42
|
+
|
|
43
|
+
1. **프록시 지표를 명시적으로 선언** — "진짜 목표 X 는 직접 측정 불가하므로 Y 를 프록시로
|
|
44
|
+
최적화한다"를 문서에 그대로 적는다. 왜 이 프록시인지 1줄 근거 필수.
|
|
45
|
+
2. **양(1차) + 사후 품질(2차) 짝** — 프록시는 행동의 양(추적되는 의사결정 수 등)과 그 행동의
|
|
46
|
+
사후 품질(성과 추적이 양(+)인 비율 등)을 짝으로 잡는다. 양만 재면 굿하트 법칙으로 프록시
|
|
47
|
+
자체가 게임된다.
|
|
48
|
+
3. **기능 평가 기준으로 사용** — "이 기능이 프록시 지표 둘 중 하나를 올리는가?" NO 면 북극성
|
|
49
|
+
이탈 신호.
|
|
50
|
+
|
|
39
51
|
NSM 결정 기준:
|
|
40
52
|
- Lagging (결과) vs Leading (원인) — Leading 권장
|
|
41
53
|
- 단일 행동만 측정 (composite 금지)
|
|
42
54
|
- 목표값 명시 ("≥ 40% by 2026")
|
|
43
55
|
|
|
44
|
-
### 3.
|
|
56
|
+
### 3. Pillars (전략 축) + 모듈 ↔ 축 매핑
|
|
57
|
+
|
|
58
|
+
North Star 로 가는 길을 3-5개 **전략 축**으로 분해한다. 각 축은 4요소로 정의:
|
|
59
|
+
|
|
60
|
+
- **정의** — 이 축이 사용자에게 주는 것 1문장.
|
|
61
|
+
- **현재 위치** — 이 축에 속한 기존 모듈/기능.
|
|
62
|
+
- **전방 목표** — 다음에 쌓을 것.
|
|
63
|
+
- **가설** — 이 축이 NSM 을 올린다고 믿는 이유 1줄.
|
|
64
|
+
|
|
65
|
+
그리고 **모듈 ↔ 축 매핑 표**를 유지한다: 모든 모듈은 최소 1개 축에 속한다 (플랫폼 공통
|
|
66
|
+
인프라는 "공통"으로 명시). **어떤 신규 모듈이 어느 축에도 매핑되지 않으면 착수 전에 북극성
|
|
67
|
+
정렬을 재검토한다** — 매핑 실패 = scope creep 의 조기 신호. 로드맵 항목도 정기 리뷰 때 축에
|
|
68
|
+
매핑해 "새 축·방향 변경이 필요한가"를 점검한다. (Pillars = northstar-roadmap 스킬이 말하는
|
|
69
|
+
*Inputs* 와 동일 개념 — 두 스킬은 같은 축 분해를 서로 다른 이름으로 가리킨다.)
|
|
70
|
+
|
|
71
|
+
### 4. Will / Won't / Trade-offs
|
|
45
72
|
|
|
46
73
|
- **Will**: 집중 영역 4-6개. 동사로 시작 ("개인 사용 깊이 우선", "AI 친화 1급 시민").
|
|
47
74
|
- **Won't**: 의도적 비-방향 5-8개. "X는 안 한다" 명시. 가장 중요한 섹션 — scope creep의 1차 방어선.
|
|
48
75
|
- **Trade-offs**: "X 선택 → Y 포기 → 근거" 표. 의식적 결정의 추적 기록.
|
|
49
76
|
|
|
50
|
-
###
|
|
77
|
+
### 5. 4-Gate Decision Heuristic — "할 것인가"
|
|
51
78
|
|
|
52
79
|
신규 요청·제안이 들어왔을 때 다음 4개 게이트를 **모두** 통과해야 우선순위 진입:
|
|
53
80
|
|
|
@@ -60,7 +87,24 @@ NSM 결정 기준:
|
|
|
60
87
|
|
|
61
88
|
게이트 명칭은 프로젝트마다 customize 가능하나 **4개 ALL True** 원칙은 유지.
|
|
62
89
|
|
|
63
|
-
###
|
|
90
|
+
### 6. 우선순위 순서 게이트 — "언제 할 것인가"
|
|
91
|
+
|
|
92
|
+
(gates-taxonomy 룰의 검증 체크포인트 4유형과 무관 — 이것은 작업 **순서** 규칙이다.)
|
|
93
|
+
4-gate 는 "할 것인가"를 거른다. 통과한 것들 사이의 **순서**는 별도 규칙이다 — 무엇을 먼저
|
|
94
|
+
할지 모호하면 이 순서로 판정한다:
|
|
95
|
+
|
|
96
|
+
1. **기본 필수 기능** — 없으면 제품이 성립 안 되는 기본기 (예: 표준 로그인). "기본"이 빠진 채
|
|
97
|
+
화려함부터 쌓지 않는다.
|
|
98
|
+
2. **기능 완성도** — 이미 shipped 된 기능이 사용자 관점 end-to-end 로 진짜 완결인가.
|
|
99
|
+
**단순 존재 ≠ 완결** (버튼이 동작하나, 링크가 목적지까지 가나, 빈/에러 상태가 처리되나).
|
|
100
|
+
UI 트랙 설치 시 benchmark-parity 룰의 "완결성 검토" 루프와 동일 기준.
|
|
101
|
+
3. **차별화 깊이** — 핵심 경쟁력의 advanced 구현. **research/ADR 선행 필수** — advanced 부터
|
|
102
|
+
코드로 뛰어들지 않는다.
|
|
103
|
+
|
|
104
|
+
**상위 순위에 미완이 있으면 하위로 건너뛰지 않는다** (긴급 hotfix·사용자 명시 지시 예외).
|
|
105
|
+
Plan/Define 단계에서 "이 작업이 ①/②/③ 중 어디이고, 앞 순위가 남아있지 않나"를 먼저 점검.
|
|
106
|
+
|
|
107
|
+
### 7. Versioning
|
|
64
108
|
|
|
65
109
|
- 분기 1회 또는 NSM 도달/미달 시 갱신.
|
|
66
110
|
- 주요 갱신: NSM 변경 / Phase 정의 변경 / Won't 변경 → Major CR 분류.
|
|
@@ -71,14 +115,15 @@ NSM 결정 기준:
|
|
|
71
115
|
|
|
72
116
|
`docs/NORTH_STAR.md`에 다음 구조로 저장. 본 skill 디렉토리의 `NORTH_STAR.template.md`를 복사해 채운다.
|
|
73
117
|
|
|
74
|
-
|
|
118
|
+
8 섹션:
|
|
75
119
|
1. North Star Statement (1문장)
|
|
76
|
-
2. North Star Metric (1차 + 2
|
|
77
|
-
3.
|
|
78
|
-
4.
|
|
79
|
-
5.
|
|
80
|
-
6.
|
|
81
|
-
7.
|
|
120
|
+
2. North Star Metric (1차 + 2차, metric-as-proxy 선언)
|
|
121
|
+
3. Pillars (전략 축) + 모듈 ↔ 축 매핑
|
|
122
|
+
4. Strategic Boundaries (Will / Won't / Trade-offs)
|
|
123
|
+
5. Phase Roadmap (장기 진화 단계)
|
|
124
|
+
6. Decision Heuristics (4-gate + 우선순위 순서)
|
|
125
|
+
7. Versioning & Review
|
|
126
|
+
8. Changelog
|
|
82
127
|
|
|
83
128
|
## Integration with Workflow
|
|
84
129
|
|
|
@@ -89,15 +134,24 @@ NSM 결정 기준:
|
|
|
89
134
|
## Anti-Patterns
|
|
90
135
|
|
|
91
136
|
- **NSM이 vanity metric** ("downloads", "stars") — 사용자 행동 측정 X
|
|
137
|
+
- **측정 불가 목표를 프록시 선언 없이 방치** — "좋은 제품"류 목표만 있고 최적화 대상이 없음
|
|
138
|
+
- **프록시가 양(量)만 측정** — 사후 품질 짝 없이는 굿하트 법칙으로 지표 자체가 게임됨
|
|
139
|
+
- **축에 매핑되지 않는 모듈 방치** — 매핑 실패는 scope creep 의 조기 신호인데 무시
|
|
140
|
+
- **기본 미완인데 advanced 착수** — 우선순위 순서 게이트 위반 (기본→완성도→차별화)
|
|
92
141
|
- **Won't가 비어있음** — scope creep 방어선 부재
|
|
93
142
|
- **4-gate 검증 없이 "유용해 보이니까" 추가** — Decision Making 메타원칙 위반
|
|
94
143
|
- **NORTH_STAR.md를 작성만 하고 한 번도 참조 안 함** — 죽은 문서. 분기 리뷰로 살림
|
|
95
144
|
|
|
96
145
|
## Examples
|
|
97
146
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
147
|
+
참고 사례 (도메인 종속 — 실운영 프로젝트 2종):
|
|
148
|
+
|
|
149
|
+
- 프로젝트 A (목표 추적 SaaS): NSM = WAGI (Weekly AI-Initiated Goal Items) ≥ 40% ·
|
|
150
|
+
Won't: 팀 협업 도구 / 모바일 우선 / 게이미피케이션 / 외부 통합 폭발 / CRDT ·
|
|
151
|
+
4-gate: Trend × Persona × MCP × Lean · 우선순위 순서(기본→완성도→차별화) 실운영.
|
|
152
|
+
- 프로젝트 B (투자 분석 서비스): 진짜 목표(사용자 투자 수익)가 외부·지연이라 직접 측정 불가 →
|
|
153
|
+
**프록시 선언** "추적되는 근거 기반 의사결정 수(양) + 사후 성과 양(+) 비율(품질)" ·
|
|
154
|
+
5 Pillars(각 정의/현재 위치/전방 목표/가설) + 전 모듈 ↔ 축 매핑 표 · 로드맵 항목의 축 매핑
|
|
155
|
+
정기 점검("새 축 불필요" 판정 기록).
|
|
102
156
|
|
|
103
|
-
본 skill은 그
|
|
157
|
+
본 skill은 그 패턴들을 도메인 비종속으로 일반화한 것.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verification-loop
|
|
3
|
-
description: "A comprehensive verification system for Claude Code sessions."
|
|
3
|
+
description: "A comprehensive verification system for Claude Code sessions. Every run ends with a fixed verdict — PASS / PASS_WITH_NITS / FAIL — plus severity-labeled findings (CRITICAL/HIGH/MEDIUM/LOW)."
|
|
4
4
|
origin: ECC
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -26,7 +26,9 @@ npm run build 2>&1 | tail -20
|
|
|
26
26
|
pnpm build 2>&1 | tail -20
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
If build fails, STOP and fix
|
|
29
|
+
If build fails, STOP and fix — then re-verify from Phase 1 in a fresh instance. Continuing
|
|
30
|
+
through the remaining phases yourself would make you the verifier of code you just wrote,
|
|
31
|
+
which the Verdict Contract below forbids.
|
|
30
32
|
|
|
31
33
|
### Phase 2: Type Check
|
|
32
34
|
```bash
|
|
@@ -100,13 +102,43 @@ Tests: [PASS/FAIL] (X/Y passed, Z% coverage)
|
|
|
100
102
|
Security: [PASS/FAIL] (X issues)
|
|
101
103
|
Diff: [X files changed]
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
Verdict: PASS | PASS_WITH_NITS | FAIL
|
|
104
106
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
Findings:
|
|
108
|
+
| ID | Severity | Finding | Evidence (file:line / command output) |
|
|
109
|
+
|----|----------|---------|---------------------------------------|
|
|
110
|
+
| F1 | HIGH | ... | ... |
|
|
108
111
|
```
|
|
109
112
|
|
|
113
|
+
## Verdict Contract
|
|
114
|
+
|
|
115
|
+
The report ends with exactly one verdict. Free-prose closings ("looks ready", "should be
|
|
116
|
+
fine") are banned — they leave room to bury defects. A fixed vocabulary makes the report
|
|
117
|
+
honest and machine-checkable.
|
|
118
|
+
|
|
119
|
+
| Verdict | Meaning | Action |
|
|
120
|
+
|---------|---------|--------|
|
|
121
|
+
| **PASS** | All gates green, zero findings at any severity | Ship |
|
|
122
|
+
| **PASS_WITH_NITS** | Ship-safe: only LOW/MEDIUM findings, each recorded with a follow-up | Ship + log follow-ups |
|
|
123
|
+
| **FAIL** | Any gate red, or one or more CRITICAL/HIGH findings | Block → fix → **re-verify** |
|
|
124
|
+
|
|
125
|
+
Every finding gets exactly one severity:
|
|
126
|
+
|
|
127
|
+
- **CRITICAL** — data loss, security hole, or the change misbehaves in real use if shipped
|
|
128
|
+
- **HIGH** — main-path defect or regression; users will hit it
|
|
129
|
+
- **MEDIUM** — edge-case or quality defect; unlikely to block real use
|
|
130
|
+
- **LOW** — nit: style, naming, doc wording
|
|
131
|
+
|
|
132
|
+
Rules:
|
|
133
|
+
- Severity is judged by impact evidence, not by how easy the fix is.
|
|
134
|
+
- FAIL → fix → re-verify is one cycle. A fix alone never upgrades the verdict — the
|
|
135
|
+
re-verification must reproduce green.
|
|
136
|
+
- A run that aborts early (Phase 1 build failure) still emits a report: verdict **FAIL**
|
|
137
|
+
with the failing gate as a CRITICAL finding. Stopping to fix is how you *reach* the next
|
|
138
|
+
verdict, not a reason to skip issuing this one — an unreported run reads as "not run".
|
|
139
|
+
- The instance that wrote the change never issues its own verdict: verification runs in a
|
|
140
|
+
fresh instance (see the model-orchestration skill's V&V separation).
|
|
141
|
+
|
|
110
142
|
## Continuous Mode
|
|
111
143
|
|
|
112
144
|
For long sessions, run verification every 15 minutes or after major changes:
|