@walwal-harness/cli 6.1.0 → 6.1.1

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/CHANGELOG.md CHANGED
@@ -29,6 +29,29 @@ docmeta:
29
29
 
30
30
  # Changelog
31
31
 
32
+ ## 6.1.1 — COO hypothesis routing activation (2026-05-08)
33
+
34
+ ### Why
35
+ v6.1.0 에서 COO 직속 `coo-developer` / `documentationer` 역할과 hypothesis cell 문서는 추가됐지만, 실제 Conductor 라우팅은 여전히 `planner -> cto` 직행이었다. 그래서 "COO가 가설을 세우면 빠르게 리서치·실험·판정한다" 는 운용 모델이 문서상으로만 존재했다.
36
+
37
+ ### Changes
38
+ - **runtime routing for hypothesis mode**
39
+ - `planner.requested_mode = "hypothesis"` 이면 `documentationer` 로 우선 라우팅
40
+ - 이후 `documentationer -> coo-developer -> documentationer -> planner` 순서로 가설 검증 루프 진행
41
+ - 단계 추적용 상태를 `planner.last_brief` 에 `hypothesis:research`, `hypothesis:experiment`, `hypothesis:report`, `hypothesis:done` 으로 기록
42
+ - **agent registry update**
43
+ - `.harness/config.json` 의 `agents` 카탈로그에 `coo-developer`, `documentationer` 등록
44
+ - handoff/statusline/session-start 가 두 agent 를 정상 인식하도록 연결
45
+
46
+ ### Validation
47
+ - `bash -n scripts/conductor-tick.sh`
48
+ - `jq empty .harness/config.json`
49
+ - `/private/tmp` 샌드박스에서 hypothesis flow 시뮬레이션:
50
+ - `planner(completed, requested_mode=hypothesis) -> documentationer`
51
+ - `documentationer -> coo-developer`
52
+ - `coo-developer -> documentationer`
53
+ - `documentationer -> planner(requested_mode=hypothesis-verdict)`
54
+
32
55
  ## 6.1.0 — document-driven company loop + task-session isolation (2026-05-08)
33
56
 
34
57
  ### Why
@@ -0,0 +1,13 @@
1
+ # Gotchas — COO Developer
2
+
3
+ ### [G-001] 운영코드와 실험코드 혼동 <!-- rule_id: coo-developer-experiment-vs-production -->
4
+ - **Status**: unverified
5
+ - **Date**: 2026-05-08
6
+ - **Source**: planner:manual
7
+ - **Trigger**: COO 직속 가설검증 셀 신설
8
+ - **Wrong**: spike 코드를 운영 경로의 정본처럼 다룸
9
+ - **Right**: 실험 코드는 실험으로 남기고, 정규화가 필요하면 Planner가 다시 Sprint artifact로 승격
10
+ - **Why**: 이 셀의 목적은 빠른 사실 확인이지 운영 품질 보장이 아니다
11
+ - **Scope**: `coo-developer`의 모든 실험 작업
12
+ - **Occurrences**: 1
13
+ - **Last-Seen**: 2026-05-08
@@ -0,0 +1,13 @@
1
+ # Gotchas — Documentationer
2
+
3
+ ### [G-001] 보고서가 근거를 앞서감 <!-- rule_id: documentationer-claim-without-evidence -->
4
+ - **Status**: unverified
5
+ - **Date**: 2026-05-08
6
+ - **Source**: planner:manual
7
+ - **Trigger**: COO 직속 가설검증 셀 신설
8
+ - **Wrong**: 리서치나 실험 근거보다 해석을 먼저 확정함
9
+ - **Right**: evidence를 명시하고, 판정은 유효/무효/보류 중 하나로 제한
10
+ - **Why**: Documentationer의 산출물은 COO 의사결정의 입력이며, 환상적 확신을 만들면 안 된다
11
+ - **Scope**: `documentationer`의 모든 보고서와 브리프
12
+ - **Occurrences**: 1
13
+ - **Last-Seen**: 2026-05-08
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walwal-harness/cli",
3
- "version": "6.1.0",
3
+ "version": "6.1.1",
4
4
  "description": "Production harness for AI agent engineering — NEXUS-adapted company metaphor (Dispatcher/CEO + Conductor + Meeting-Manager + COO/Planner + CTO + CQO + Service-Ops). Solo/Team mode, Brainstormer, Planner, Generator(BE/FE/Designer/DevOps), Evaluator chain (Code-Quality → Functional → Visual + Architecture/Security). Supports React, Next.js, and Flutter FE stacks.",
5
5
  "bin": {
6
6
  "walwal-harness": "bin/init.js"
@@ -25,6 +25,8 @@ pipeline=$(jq -r '.pipeline // "null"' "$PROGRESS")
25
25
  mode=$(jq -r '.mode // "auto"' "$PROGRESS")
26
26
  user_override=$(jq -r '.mode_decision.user_override // "null"' "$PROGRESS")
27
27
  requested_mode=$(jq -r '.service_ops.requested_mode // "null"' "$PROGRESS")
28
+ planner_requested_mode=$(jq -r '.planner.requested_mode // "null"' "$PROGRESS")
29
+ planner_last_brief=$(jq -r '.planner.last_brief // "null"' "$PROGRESS")
28
30
  goal_adherence=$(jq -r '.goals.current_adherence // "null"' "$PROGRESS")
29
31
  meetings_active_count=$(jq -r '(.meetings.active | length) // 0' "$PROGRESS")
30
32
  cqo_verdict=$(jq -r '.cqo.sprint_verdict // "pending"' "$PROGRESS")
@@ -258,12 +260,44 @@ elif [ "$current_agent" = "meeting-manager" ] && [ "$agent_status" = "completed"
258
260
  }"
259
261
 
260
262
  elif [ "$current_agent" = "planner" ] && [ "$agent_status" = "completed" ]; then
261
- next="cto"
262
- action="handoff:cto:plan-ready"
263
- new_workflow_stage="cto-review"
264
- planner_filter='
265
- .planner.last_brief = (.planner.requested_mode // "goal-alignment") |
266
- .planner.requested_mode = null'
263
+ if [ "$planner_requested_mode" = "hypothesis" ]; then
264
+ next="documentationer"
265
+ action="dispatch:hypothesis:documentationer"
266
+ new_workflow_stage="coo-hypothesis-research"
267
+ planner_filter='
268
+ .planner.last_brief = "hypothesis:research" |
269
+ .planner.requested_mode = null'
270
+ else
271
+ next="cto"
272
+ action="handoff:cto:plan-ready"
273
+ new_workflow_stage="cto-review"
274
+ planner_filter='
275
+ .planner.last_brief = (.planner.requested_mode // "goal-alignment") |
276
+ .planner.requested_mode = null'
277
+ fi
278
+
279
+ elif [ "$current_agent" = "documentationer" ] && [ "$agent_status" = "completed" ]; then
280
+ if [ "$planner_last_brief" = "hypothesis:research" ]; then
281
+ next="coo-developer"
282
+ action="dispatch:hypothesis:experiment"
283
+ new_workflow_stage="coo-hypothesis-experiment"
284
+ planner_filter='.planner.last_brief = "hypothesis:experiment"'
285
+ elif [ "$planner_last_brief" = "hypothesis:report" ]; then
286
+ next="planner"
287
+ action="dispatch:planner:hypothesis-verdict"
288
+ new_workflow_stage="coo-hypothesis-verdict"
289
+ planner_filter='
290
+ .planner.last_brief = "hypothesis:done" |
291
+ .planner.requested_mode = "hypothesis-verdict"'
292
+ fi
293
+
294
+ elif [ "$current_agent" = "coo-developer" ] && [ "$agent_status" = "completed" ]; then
295
+ if [ "$planner_last_brief" = "hypothesis:experiment" ]; then
296
+ next="documentationer"
297
+ action="dispatch:hypothesis:report"
298
+ new_workflow_stage="coo-hypothesis-report"
299
+ planner_filter='.planner.last_brief = "hypothesis:report"'
300
+ fi
267
301
 
268
302
  elif [ "$current_agent" = "cto" ]; then
269
303
  if [ "${cto_hotfixes:-0}" -gt 0 ] || [ "${ops_recommendations:-0}" -gt 0 ]; then
@@ -142,10 +142,17 @@ idle ─► running ─► (waiting_meeting | waiting_owner | running) ─► co
142
142
  [all features PASS] → Phase Gate Meeting
143
143
  [Service-Ops cron due] → spawn service-ops (requested_mode=monitor)
144
144
  [ops-report ready] → handoff to CTO (spawn cto)
145
+ [planner requested_mode=hypothesis]→ spawn coo-developer and/or documentationer
145
146
  [generator-* / eval-functional spawn 직전] → 동시 spawn service-ops (requested_mode=monitor, stream-mode, G-006)
146
147
  [mode=team & ready ≥ 2] → 동시 spawn min(ready,3) generator/evaluator (G-005)
147
148
  ```
148
149
 
150
+ `planner.requested_mode == "hypothesis"` 인 경우 Conductor 는 정규 Generator/Evaluator 체인보다 COO 직속 셀을 우선한다:
151
+
152
+ - 리서치·정리 중심 → `documentationer`
153
+ - 빠른 실험·백데이터 코드 중심 → `coo-developer`
154
+ - 둘 다 필요 → 같은 tick 에 2명 병렬 spawn 가능
155
+
149
156
  ### 5.1 Team mode 병렬 spawn (G-005)
150
157
 
151
158
  `progress.json.mode == "team"` 이면 매 tick 시작 시 ready 목록을 계산하여 **동시 다발 spawn**:
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: harness-coo-developer
3
+ description: "COO 직속 가설검증 개발자. 빠른 spike, 백데이터 활용 실험, throwaway prototype 을 통해 가설을 사실로 검증한다. 아키텍처·코드퀄리티·테스트 완결성보다 속도와 의사결정용 evidence를 우선한다. 트리거: '가설 검증 개발', 'spike', 'backdata experiment'."
4
+ disable-model-invocation: false
5
+ ---
6
+
7
+ # COO Developer
8
+
9
+ > 목적은 운영용 코드를 만드는 것이 아니라, COO가 다음 결정을 내릴 수 있게 충분한 사실을 빠르게 확보하는 것이다.
10
+
11
+ ## 1. 책임
12
+
13
+ - 가설을 검증하기 위한 최소 코드 작성
14
+ - 백데이터/로그/덤프를 활용한 검증 스크립트 작성
15
+ - 프로덕션 품질보다 속도 우선의 throwaway prototype 제작
16
+ - 결과와 한계를 `documentationer` 또는 Planner에 넘길 수 있는 형태로 정리
17
+
18
+ ## 2. 입력
19
+
20
+ - CEO 또는 Service-Ops에서 전달된 가설/질문
21
+ - Planner의 `requested_mode = "hypothesis"`
22
+ - 기존 코드베이스, 로컬 데이터, 백데이터, 샘플 CSV/JSON/DB dump
23
+
24
+ ## 3. 출력
25
+
26
+ - 실험 코드 또는 스크립트
27
+ - 재현 절차
28
+ - 관찰 결과와 한계
29
+ - "가설 지지 / 반박 / 추가 데이터 필요" 3분류 결론
30
+
31
+ ## 4. 작업 원칙
32
+
33
+ - 빠르게 버릴 수 있는 코드를 두려워하지 말 것
34
+ - 운영 아키텍처에 맞추려다 속도를 잃지 말 것
35
+ - 단, 데이터 훼손이나 destructive action은 금지
36
+ - 결과가 정규화 가치가 있으면 Planner에게 Sprint artifact 승격을 요청
37
+
38
+ ## 5. 금지
39
+
40
+ - 실험 결과만으로 운영 가능 판정
41
+ - 정규 팀 평가 없이 배포 코드로 승격
42
+ - 근거 없는 직감성 결론
@@ -83,6 +83,7 @@ Source: https://github.com/msitarzewski/agency-agents (MIT)
83
83
  | Enterprise Feature | "기존 시스템", "엔터프라이즈", "통합" | + Eval-Arch·Eval-Security·Service-Ops |
84
84
  | Marketing/Content | "랜딩", "캠페인", "콘텐츠" | Designer·Marketing(옵트인)·Eval-Visual |
85
85
  | Incident Response | "장애", "다운", "긴급", "롤백" | Incident-Responder·Service-Ops·관련 Gen |
86
+ | Hypothesis Validation | "가설", "리서치", "실험", "백데이터", "빠르게 검증" | Planner·coo-developer·documentationer·Service-Ops(옵트인) |
86
87
 
87
88
  매칭 실패 시 → "추가 정보가 필요합니다" 1회 질문 → 그래도 모호하면 **Startup MVP** 기본값.
88
89
 
@@ -96,7 +97,7 @@ Source: https://github.com/msitarzewski/agency-agents (MIT)
96
97
  "runbook": "startup-mvp",
97
98
  "departments": {
98
99
  "must": ["planner","cto","cqo","conductor","meeting-manager","generator-backend","generator-frontend","generator-designer","evaluator-functional","evaluator-visual","evaluator-code-quality","generator-devops"],
99
- "should":["evaluator-architecture","service-ops"],
100
+ "should":["evaluator-architecture","service-ops","coo-developer","documentationer"],
100
101
  "may": ["evaluator-security","marketing","sales"],
101
102
  "off": ["finance","legal-compliance","spatial-computing"]
102
103
  },
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: harness-documentationer
3
+ description: "COO 직속 Documentationer. 웹 리서치, 실험 로그 정리, 보고서 작성, 가설 유효/무효 판정을 담당한다. 운영 문서보다는 의사결정 문서에 초점을 둔다. 트리거: 'report', 'documentation', 'research brief', 'hypothesis verdict'."
4
+ disable-model-invocation: false
5
+ ---
6
+
7
+ # Documentationer
8
+
9
+ > 리서치와 실험을 문장으로 묶어 COO가 즉시 판단할 수 있는 보고서로 바꾼다.
10
+
11
+ ## 1. 책임
12
+
13
+ - 웹 리서치 기반 가설 보강
14
+ - `coo-developer` 실험 결과 정리
15
+ - 가설 검증 보고서 작성
16
+ - 가설의 유효/무효/보류 판정 및 근거 명시
17
+
18
+ ## 2. 입력
19
+
20
+ - Planner의 가설 브리프
21
+ - Service-Ops의 드리프트 신호 또는 신규 기획 방향
22
+ - `coo-developer`의 실험 결과
23
+ - 필요 시 외부 리서치 소스
24
+
25
+ ## 3. 출력
26
+
27
+ - `hypothesis-brief`
28
+ - `validation-report`
29
+ - `evidence-summary`
30
+ - 다음 액션 제안:
31
+ - 정규 Sprint로 승격
32
+ - 추가 실험 필요
33
+ - 폐기
34
+
35
+ ## 4. 보고서 규칙
36
+
37
+ - 결론 먼저, 근거 다음
38
+ - 주장마다 evidence 출처 명시
39
+ - 운영팀/CTO/CQO가 바로 이어받을 수 있게 열린 질문을 분리
40
+ - "왜 아직 확실하지 않은가"도 반드시 적을 것
41
+
42
+ ## 5. 금지
43
+
44
+ - evidence 없는 유효 판정
45
+ - CTO/CQO 검증을 대신했다고 표현
46
+ - 실험 로그를 정제 없이 그대로 보고서로 제출
@@ -152,6 +152,7 @@ Meeting-Manager는 단순히 "토론해 주세요"라고 말하지 않는다.
152
152
 
153
153
  - `Dispatcher/CEO`: Goal 자체가 흔들렸는가, Owner escalation 이 필요한가
154
154
  - `Planner/COO`: 기획/가설/웹리서치/레퍼런스 재검토가 필요한가
155
+ - `COO Hypothesis Cell`: 실험으로 바로 검증 가능한가, 어떤 백데이터/리서치가 필요한가
155
156
  - `CTO`: 구현/아키텍처/기술선택 문제가 원인인가
156
157
  - `CQO`: 품질/회귀/검증 부족이 원인인가
157
158
  - `Service-Ops`: KPI/로그/incident 기준으로 어떤 drift 가 발생했는가
@@ -140,6 +140,23 @@ hr_roster:
140
140
  ---
141
141
  ```
142
142
 
143
+ ### B-5. COO Direct Hypothesis Cell
144
+
145
+ Planner는 정규 Sprint 라인과 별도로 다음 2개 직속 역할을 운영할 수 있다:
146
+
147
+ - `coo-developer`: 빠른 spike, 백데이터 스크립트, throwaway prototype
148
+ - `documentationer`: 웹 리서치, 실험 로그 정리, 보고서, 가설 유효/무효 판정
149
+
150
+ 활성화 조건:
151
+ 1. CEO가 기획안 탐색 또는 미검증 아이디어 검토를 지시
152
+ 2. Service-Ops가 새 기획 방향 또는 drift 신호를 보고
153
+ 3. CTO/CQO 정규 라인에 넣기 전에 빠른 사실 확인이 필요
154
+
155
+ 운영 원칙:
156
+ - 산출물은 정규 구현물이 아니라 `hypothesis brief`, `experiment note`, `validation report`
157
+ - 코드 품질/테스트 완성도보다 의사결정 속도를 우선
158
+ - 결과가 유효하면 Planner가 이를 정규 Sprint artifact로 재작성해 CTO 라인에 넘긴다
159
+
143
160
  ## C. 권한 (보강)
144
161
 
145
162
  기존 권한에 추가: