@walwal-harness/cli 7.1.9 → 7.1.10

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.
@@ -1,226 +1,102 @@
1
- ---
2
- docmeta:
3
- id: HARNESS
4
- title: walwal-harness — NEXUS Company Harness 가이드
5
- type: output
6
- createdAt: 2026-05-08T00:00:00Z
7
- updatedAt: 2026-05-08T00:00:00Z
8
- source:
9
- producer: agent
10
- skillId: harness-release
11
- inputs:
12
- - documentId: AGENTS
13
- uri: ../../AGENTS.md
14
- relation: output-from
15
- sections:
16
- - sourceRange: { startLine: 121, endLine: 126 }
17
- targetRange: { startLine: 11, endLine: 22 }
18
- - sourceRange: { startLine: 94, endLine: 120 }
19
- targetRange: { startLine: 24, endLine: 45 }
20
- - sourceRange: { startLine: 35, endLine: 81 }
21
- targetRange: { startLine: 49, endLine: 102 }
22
- - sourceRange: { startLine: 170, endLine: 195 }
23
- targetRange: { startLine: 144, endLine: 161 }
24
- - sourceRange: { startLine: 214, endLine: 237 }
25
- targetRange: { startLine: 171, endLine: 179 }
26
- - sourceRange: { startLine: 238, endLine: 243 }
27
- targetRange: { startLine: 181, endLine: 187 }
28
- tags: [harness, template, nexus, v6.1.4, doctrine]
29
- ---
30
-
31
- # walwal-harness — NEXUS Company Harness 가이드
32
-
33
- > Anthropic 블로그 "Harness Design for Long-Running Application Development" 기반.
34
- > v6 NEXUS 도큐트린: 하네스를 **하나의 회사**로 본다. Owner(사용자)는 Dispatcher(CEO)와만 대화하고, 회사 내부 부서가 자율적으로 GOAL 을 실행·검증·운영한다.
35
- >
36
- > 이 파일은 **빠른 운영 가이드** 입니다. 프로젝트별 살아있는 컨텍스트는 `AGENTS.md` (CLAUDE.md = AGENTS.md 심볼릭 링크) 를 참조하세요.
37
-
38
- ## 단일 대화 창구 (Doctrine)
1
+ # walwal-harness Runtime Reference
39
2
 
40
- ```
41
- Owner (사용자)
42
- ↕ (단일 대화 창구)
43
- Dispatcher = CEO ── 부서 식별 · GOAL 협의 · escalation 보고
44
- ```
45
-
46
- - Owner ↔ Dispatcher만 직접 대화. 다른 부서가 Owner와 직접 대화하는 것은 **금지**.
47
- - 모든 escalation은 Dispatcher 경유.
48
- - GOAL 작성·수정은 CEO 전용 (`.harness/actions/goals.md`, CTO와 협의로 구체화).
49
-
50
- ## 조직 구조 (v6 NEXUS)
3
+ This project runs in company mode.
51
4
 
52
- ```
53
- Owner
54
- ↕
55
- Dispatcher (CEO)
56
- ├─ Conductor # 자율 실행 엔진 (Gen↔Eval↔Ops 루프, escalation 트리거)
57
- └─ Meeting-Manager # 동기화 엔진 (6종 회의 · 적응형 cadence · parallel-tracks fork-join)
58
- ↓
59
- Planner (COO + HR) # Sprint·AC·인선·온보딩
60
- └─ COO Hypothesis Cell (직영)
61
- ├─ coo-developer # 가설 검증 spike·백데이터 실험
62
- └─ documentationer # 웹리서치·보고서·가설 판정
63
- ↓
64
- ┌─────┴────────┬──────────────┐
65
- CTO CQO Service-Ops
66
- (Gen 총괄) (Eval 총괄) (운용·모니터·인시던트·자율회고)
67
- ├ Gen-BE ├ Eval-Functional
68
- ├ Gen-FE ├ Eval-Visual
69
- ├ Designer ├ Eval-CodeQuality
70
- └ DevOps ├ Eval-Architecture
71
- └ Eval-Security
72
- ```
5
+ Owner-facing commands are limited to:
73
6
 
74
- 각 역할의 상세 트리거·산출물·금기는 `.claude/skills/harness-<role>/SKILL.md` 와 `gotchas/<role>.md`, `conventions/<role>.md` 에 명시.
7
+ | Command | Purpose | Document root |
8
+ |---|---|---|
9
+ | `/goal` | Set or change the company goal | `.harness/documents/goal-{index}-{name}/` |
10
+ | `/submission` | Add a requirement under the active goal | `.harness/documents/goal-{index}-{name}/submission-{index}-{name}/` |
11
+ | `/hot-fix` | Fix an urgent issue under the active goal | `.harness/documents/goal-{index}-{name}/hotfix-{index}-{name}/` |
75
12
 
76
- ## 디렉토리 구조
13
+ No CXX role is a slash command. `/ceo`, `/coo`, `/cdo`, `/cto`, `/cqo`, `/ops`, `/hiring`, and `/resource-manager` are invalid Owner commands.
77
14
 
78
- ### 프로젝트 루트 (개발자가 직접 보는 파일)
15
+ ## Company Structure
79
16
 
80
17
  ```
81
- AGENTS.md # 프로젝트 컨텍스트 (Planner 가 유지) · v6 IA-MAP·조직도·권한 매트릭스
82
- CLAUDE.md # → AGENTS.md 심볼릭 링크 (Claude Code 진입점)
83
- CONVENTIONS.md # 프로젝트 최상위 규칙 (사용자 작성, 에이전트 읽기 전용)
84
- gotchas/<role>.md # 부서별 부정형 규칙 (G-NNN entry append)
85
- conventions/<role>.md # 부서별 긍정형 규칙 (C-NNN entry append)
86
- scripts/ # 하네스 스크립트 (init.js 가 동기화)
87
- .claude/skills/harness-<role>/ # Claude Code 가 로드하는 스킬 정의 (init.js 가 동기화)
18
+ Owner
19
+ └─ /goal, /submission, or /hot-fix
20
+ └─ harness-ceo
21
+ ├─ harness-coo
22
+ ├─ harness-cdo
23
+ ├─ harness-cto
24
+ ├─ harness-cqo
25
+ └─ harness-ops
88
26
  ```
89
27
 
90
- ### `.harness/` 런타임 (회사가 작동하면서 만드는 산출물)
28
+ CEO is the Owner's only internal contact. CEO talks only to CXX agents. CXX agents coordinate, hire, review, and decide; they do not directly produce specialist deliverables.
91
29
 
92
- ```
93
- .harness/
94
- ├── HARNESS.md # 이 파일
95
- ├── config.json # 하네스 설정 (company_mode, behavior, flow gates)
96
- ├── progress.json # 기계 판독 상태 (세션 오케스트레이션 SoT)
97
- ├── progress.log # 사람 판독 히스토리 (append-only)
98
- ├── handoff.json # 세션 전환 문서 (prompt, model, artifacts, regression)
99
- ├── memory.md # 시스템 entry (예: M-NEXUS-P3) + 사용자 메모
100
- ├── doctrine/nexus.md # NEXUS 도큐트린 본문
101
- ├── ref/<role>-<stack>.md # 스택별 best-practice (FE/BE/Designer/DevOps)
102
- ├── prompts/ # 에이전트 프롬프트
103
- ├── baselines/ # Eval baseline (의존 그래프, 시각 baseline 등)
104
- ├── ops/metrics.jsonl # 운영 메트릭 (DevOps append / Service-Ops read)
105
- ├── actions/ # 활성 스프린트 산출물 (각 부서 쓰기)
106
- │ ├── pipeline.json # Dispatcher 결정 (FULLSTACK / FE-ONLY / BE-ONLY)
107
- │ ├── plan.md # Planner — 제품 사양
108
- │ ├── feature-list.json # Planner — Executable AC
109
- │ ├── api-contract.json # Planner — API 계약 (BE/FE 공유)
110
- │ ├── sprint-contract.md # Planner → BE/FE 가 섹션별로 채움
111
- │ ├── evaluation-*.md # Evaluator-* 별 결과
112
- │ ├── goals.md # CEO (Dispatcher) 전용
113
- │ ├── meetings/ # Meeting-Manager — 회의록·prep (followup-review 포함)
114
- │ ├── incidents/ # Service-Ops — 사고 타임라인·RCA
115
- │ ├── escalations/ # Conductor — Owner 보고용
116
- │ ├── onboarding/ # Planner(HR) — 부서 온보딩 패키지
117
- │ ├── hypothesis/<id>/ # COO Hypothesis Cell (spike/, brief.md, report.md, verdict.json)
118
- │ ├── hr-roster.md # Planner(HR) — 활성 부서 명단
119
- │ ├── cto-review-*.md # CTO 전용
120
- │ ├── cqo-audit-*.md # CQO 전용
121
- │ └── ops-report-*.md # Service-Ops 전용
122
- └── archive/ # 완료 스프린트 (불변, Evaluator 가 archive)
123
- └── D-NNN/S-NNN/ # design-NNN / sprint-NNN
124
- ```
30
+ ## Runtime Paths
125
31
 
126
- ## 실행 흐름 (Conductor-driven)
32
+ | Path | Role |
33
+ |---|---|
34
+ | `.harness/documents/goal-{index}-{name}/ceo.md` | Goal framing and CEO routing |
35
+ | `.harness/documents/goal-{index}-{name}/{cxx}.md` | Goal-level CXX decision record |
36
+ | `.harness/documents/goal-{index}-{name}/submission-{index}-{name}/` | Additional requirement under the active goal |
37
+ | `.harness/documents/goal-{index}-{name}/hotfix-{index}-{name}/` | Emergency fix under the active goal |
38
+ | `.harness/documents/{goal-or-child-mission}/{owning-cxx}/workers/{worker-name}.md` | Worker evidence owned by a CXX |
39
+ | `.harness/conventions/` | Durable rules, including requirement conventions from submissions |
40
+ | `.harness/gotchas/` | Recurrence-prevention records from hot-fixes |
41
+ | `.harness/memories/` | Long-term shared context |
42
+ | `.harness/shared/HR-Resource/` | Hireable worker skill pool |
43
+ | `.harness/shared/hr-roster.json` | Hired worker roster |
44
+ | `.harness/archive/` | CQO-approved completed mission records |
45
+ | `.harness/progress.log` | Append-only command and status history |
46
+ | `.harness/progress.json` | Machine-readable current runtime state |
127
47
 
128
- ```
129
- Owner: "X 만들어줘" (자유 형식)
130
- │
131
- ▼
132
- Dispatcher (CEO)
133
- ├─ Goal 협의 (모호하면 1회 짧게 명료화)
134
- └─ pipeline.json 결정 → Conductor 핸드오프
135
- │
136
- ▼
137
- Conductor (자율 실행 엔진)
138
- │
139
- ▼
140
- Planner ─ ┐
141
- │ ├─ light → 기존 PRD 만 보강
142
- │ └─ full → plan.md + feature-list + api-contract 확정
143
- ▼
144
- CTO ── 실행 분할 ── ┐
145
- ▼ ▼
146
- Gen-BE ⇄ Gen-FE (회사모드 병렬 worker pool)
147
- │
148
- ▼
149
- CQO 적대적 검증 (early-exit chain)
150
- ├─ Eval-CodeQuality (정적 · 저비용)
151
- ├─ Eval-Functional (동작 · 중비용 · Playwright/curl)
152
- ├─ Eval-Visual (렌더 · 고비용 · screenshot)
153
- ├─ Eval-Architecture (IA-MAP·계층 위반·의존 그래프)
154
- └─ Eval-Security (OWASP·SAST·시크릿·CVE)
155
- │
156
- ▼
157
- Service-Ops (상시) ── monitor · auto-retro · incident
158
- │
159
- ▼
160
- Archive (sprint advance)
161
- ```
162
-
163
- 앞단 FAIL 시 뒤 단계는 실행하지 않고 즉시 재작업으로 리라우팅.
164
- 3회 연속 FAIL · GOAL 위반 · 인시던트 → Conductor 가 Dispatcher 통해 Owner에게 escalation.
48
+ Flat `.harness/documents/{mission}/workers/` reports are legacy. New worker evidence must be under `{owning-cxx}/workers/`.
165
49
 
166
- ## 6종 회의 (Meeting-Manager)
50
+ ## Required Flow
167
51
 
168
- | 회의 | 시점 | 결정자 |
169
- |------|------|--------|
170
- | **standup** | 적응형 cadence (light 30m / normal 1h / heavy 4h) | 부서 발신 |
171
- | **sprint-review** | sprint advance 직전 | CTO |
172
- | **spec-review** | Planner 산출물 변경 | CTO |
173
- | **incident-war-room** | Service-Ops 인시던트 발신 | CEO + CTO |
174
- | **all-hands** | 분기/대형 결정 | CEO |
175
- | **followup-review** | parallel-tracks fork 종료 후 | CTO (goal-* fork 면 CEO) |
52
+ ### Goal
176
53
 
177
- ### Parallel Tracks (Fork-Join, v6.2)
54
+ 1. CEO creates or updates `.harness/documents/goal-{index}-{name}/ceo.md`.
55
+ 2. CEO routes only needed CXX agents.
56
+ 3. Each CXX writes its own `{cxx}.md`.
57
+ 4. CXX agents use `harness-resource-manager` and `harness-hiring` before assigning specialist work.
58
+ 5. Workers write evidence under `{owning-cxx}/workers/`.
59
+ 6. CEO reports only after CXX records and required worker evidence exist.
178
60
 
179
- 회의 결정의 `tracks[]` 길이 ≥ 2 면 fork. Conductor 가 트랙 dispatch 와 rendezvous join 을 자동 처리.
61
+ ### Submission
180
62
 
181
- - 대표 패턴: `track-1: cto/bugfix` + `track-2: planner/hypothesis-validation` → followup-review 에서 통합 결정.
182
- - followup-review 에서 결정자가 `apply-now / backlog / more-validation` 중 하나로 마무리.
183
- - followup-review 자체에서 또 fork 금지 (무한 fork 방지).
184
- - 한 sprint 내 parallel fork ≥ 3 회면 다음 fork 는 single 강제.
63
+ 1. CEO locates the active goal directory.
64
+ 2. CEO creates `.harness/documents/goal-{index}-{name}/submission-{index}-{name}/ceo.md`.
65
+ 3. CEO routes only the CXX needed for the additional requirement.
66
+ 4. CXX agents update `.harness/conventions/` when the new requirement creates or changes durable project rules.
67
+ 5. Worker reports and CXX notes stay inside the submission directory.
185
68
 
186
- ## Company / Hypothesis 실행
69
+ ### Hot Fix
187
70
 
188
- | 실행 | 트리거 | 동작 |
189
- |------|--------|------|
190
- | **Company** | 기본값 | Conductor 가 매 tick `min(ready, 3)` 병렬 worker 를 자동 배정 |
191
- | **Hypothesis** | Planner `requested_mode = "hypothesis"` | `documentationer → coo-developer → documentationer → planner` 가설 검증 루프 |
71
+ 1. CEO locates the active goal directory.
72
+ 2. CEO creates `.harness/documents/goal-{index}-{name}/hotfix-{index}-{name}/ceo.md`.
73
+ 3. CEO routes CTO and CQO first.
74
+ 4. CTO hires implementation workers and records the patch plan in `cto.md`.
75
+ 5. CQO hires evaluator/tester workers and records the verdict in `cqo.md`.
76
+ 6. CQO registers at least one durable lesson in `.harness/gotchas/`, `.harness/conventions/`, or `.harness/memories/`.
192
77
 
193
- ## 품질 게이트
78
+ ## Hard Gates
194
79
 
195
- | 게이트 | 시점 | 동작 |
196
- |--------|------|------|
197
- | **Pre-Eval Gate** | Generator → Evaluator 전환 | tsc / eslint / jest&#124;vitest 자동 실행. 실패 시 Generator 리라우팅 |
198
- | **파일 소유권 검증** | 에이전트 전환 시 | git diff 로 권한 밖 파일 수정 감지 |
199
- | **아티팩트 선행조건** | 에이전트 시작 전 | progress.json.artifacts 상태 확인 |
200
- | **Evaluation PASS 기준** | Evaluator 결과 | 2.80 / 3.00 이상. Evidence 없는 score = 0. AC 부분 통과 = FAIL. Regression 1건 = FAIL |
201
- | **Known-Bug Hard Gate** | sprint advance | 알려진 런타임 버그 보유 시 PASS / sprint advance 금지 |
80
+ - CEO must not dispatch, hire, or brief workers directly.
81
+ - CXX agents must not directly execute specialist deliverables.
82
+ - CTO worker dispatch requires `cto.md` first.
83
+ - CQO verdicts require evaluator/tester worker evidence.
84
+ - Every `ceo.md`, `{cxx}.md`, and worker report must end with:
202
85
 
203
- ## Conventions / Gotchas (Hierarchical)
86
+ ```markdown
87
+ ## Implementation Notes
204
88
 
205
- - **gotchas/**: 부서별 부정형 규칙. Dispatcher 가 Owner 의 실수 지적을 받아 `### [G-NNN]` 으로 append.
206
- - **conventions/**: 부서별 긍정형 규칙. 같은 메커니즘으로 `### [C-NNN]` append.
207
- - **메모리 오염 방어**: 신규 entry 는 `unverified` 로 시작 → Planner 리뷰 시 `verified` 승격. TTL 만료 항목은 sprint 전환 시 갱신/삭제.
208
- - **검증 불가능 항목 즉시 삭제**.
89
+ ### Design Decisions
90
+ - None
209
91
 
210
- ## 자주 쓰는 명령
92
+ ### Deviations
93
+ - None
211
94
 
212
- | 명령 | 설명 |
213
- |------|------|
214
- | `npx walwal-harness` | 첫 설치 / 안전 init (G-NNN, C-NNN 보존) |
215
- | `npx walwal-harness --force` | 시스템 파일 강제 갱신 (G/C entry 는 여전히 보존) |
216
- | `npx walwal-harness migrate` | 구버전 progress.json / config.json schema 정상화 |
217
- | `npx walwal-harness verify` | 설치 정합성 검증 |
218
- | `bash scripts/harness-dashboard-up.sh` | Brick Office 라이브 대시보드 (http://localhost:3001) |
219
- | `bash scripts/harness-wake-install.sh install .` | 1시간 안전망 wake 등록 (launchd) |
220
- | `bash scripts/harness-wake-install.sh status` | wake 상태 / 등록 프로젝트 확인 |
95
+ ### Tradeoffs
96
+ - None
221
97
 
222
- ## 다음 단계
98
+ ### Open Questions
99
+ - None
100
+ ```
223
101
 
224
- 1. `AGENTS.md` 의 `[?]` 태그를 Planner 가 분류하도록 요청.
225
- 2. `gotchas/<role>.md`, `conventions/<role>.md` 의 Preserved Rules 섹션 정리.
226
- 3. Owner 는 "하네스 엔지니어링 시작" 또는 자유 형식 지시로 Dispatcher 를 깨운다 — 이후는 Conductor 가 이어받는다.
102
+ The notes must be written in English. Use `None` when a subsection has no entries.
@@ -2,7 +2,7 @@
2
2
  "harness": {
3
3
  "name": "walwal-harness — NEXUS company harness",
4
4
  "version": "7.1.1",
5
- "description": "v7 company harness. Owner uses /goal or /hot-fix, CEO coordinates CXX agents, CXX agents use resource-manager/hiring, and hired workers produce mission evidence under .harness/documents/{mission}/workers/.",
5
+ "description": "v7 company harness. Owner uses /goal, /submission, or /hot-fix, CEO coordinates CXX agents, CXX agents use resource-manager/hiring, and hired workers produce mission evidence under .harness/documents/{goal-or-child-mission}/{owning-cxx}/workers/.",
6
6
  "source": "https://www.anthropic.com/engineering/harness-design-long-running-apps"
7
7
  },
8
8
  "agents": {
@@ -19,7 +19,7 @@
19
19
  "flow": {
20
20
  "sequence": ["ceo", "coo", "cdo", "cto", "cqo", "ops"],
21
21
  "worker_gate": "CXX agents must use harness-resource-manager and harness-hiring before specialist deliverables.",
22
- "worker_reports_required": ".harness/documents/{mission}/workers/{worker-name}.md",
22
+ "worker_reports_required": ".harness/documents/{goal-or-child-mission}/{owning-cxx}/workers/{worker-name}.md",
23
23
  "retry_on_fail": true,
24
24
  "max_retries_per_sprint": 5,
25
25
  "escalate_to_ceo_after": 3,
package/bin/init.js CHANGED
@@ -766,7 +766,7 @@ function installCommands() {
766
766
  for (const commandsDest of commandDests) {
767
767
  const existing = fs.readdirSync(commandsDest);
768
768
  for (const f of existing) {
769
- if (f.startsWith('harness-') || ['goal.md', 'hot-fix.md', 'play-harness.md', 'release-harness.md', 'stop-harness.md', 'brick-office.md', 'hiring.md', 'resource-manager.md', 'ceo.md', 'coo.md', 'cdo.md', 'cto.md', 'cqo.md', 'ops.md'].includes(f)) {
769
+ if (f.startsWith('harness-') || ['goal.md', 'hot-fix.md', 'submission.md', 'play-harness.md', 'release-harness.md', 'stop-harness.md', 'brick-office.md', 'hiring.md', 'resource-manager.md', 'ceo.md', 'coo.md', 'cdo.md', 'cto.md', 'cqo.md', 'ops.md'].includes(f)) {
770
770
  fs.unlinkSync(path.join(commandsDest, f));
771
771
  }
772
772
  }
@@ -910,7 +910,7 @@ function installUserPromptSubmitHook() {
910
910
  });
911
911
  writeClaudeSettings(settings);
912
912
  log('UserPromptSubmit hook installed in .claude/settings.json');
913
- log(' → /goal and /hot-fix are guided through harness-ceo and CXX workflow');
913
+ log(' → /goal, /submission, and /hot-fix are guided through harness-ceo and CXX workflow');
914
914
  log(' → Opt-out per message: say "harness skip" or "without harness"');
915
915
  log(' → Disable globally: set .harness/config.json behavior.auto_route_ceo = false');
916
916
  } else {
@@ -1163,7 +1163,7 @@ Runtime (always-on company mode):
1163
1163
  - Stop 훅이 매 turn 종료 시 다음 부서로 자동 연쇄.
1164
1164
  - 1시간 안전망 wake (선택): bash scripts/harness-wake-install.sh install .
1165
1165
  - 3D 대시보드 (선택): bash scripts/harness-dashboard-up.sh
1166
- - Owner 입력은 GOAL 모호성, escalation, 결과 보고에만 필요합니다.
1166
+ - Owner 입력은 GOAL 모호성, submission, hot-fix, escalation, 결과 보고에만 필요합니다.
1167
1167
 
1168
1168
  What it does:
1169
1169
  1. Scaffolds project-local .harness/ runtime state
@@ -1176,7 +1176,7 @@ What it does:
1176
1176
 
1177
1177
  After init:
1178
1178
  1. Restart Claude/Codex session if command discovery needs refresh.
1179
- 2. Use /goal or /hot-fix.
1179
+ 2. Use /goal, /submission, or /hot-fix.
1180
1180
  3. Internal agents must call hired agents/skills, not slash commands.
1181
1181
  `);
1182
1182
  }
@@ -1408,7 +1408,7 @@ function showMigrationProposal(flags) {
1408
1408
  }
1409
1409
  if (flags.configMissingCompanyMode) {
1410
1410
  console.log(' • config.json: company_mode 섹션 동기화 가능');
1411
- console.log(' Owner /goal, /hot-fix → CEO/CXX/worker 흐름으로 고정합니다.');
1411
+ console.log(' Owner /goal, /submission, /hot-fix → CEO/CXX/worker 흐름으로 고정합니다.');
1412
1412
  }
1413
1413
  if (flags.configLegacyRouting) {
1414
1414
  console.log(' • config.json: legacy dispatcher/conductor wording → v7 CEO/CXX wording');
@@ -1536,7 +1536,7 @@ function runMigrate(opts = {}) {
1536
1536
  c.flow = tpl.flow || c.flow;
1537
1537
  c.behavior = c.behavior || {};
1538
1538
  c.behavior.auto_route_ceo = c.behavior.auto_route_ceo ?? c.behavior.auto_route_dispatcher ?? true;
1539
- c.behavior.auto_route_ceo_description = 'true 이면 /goal 또는 /hot-fix 이후 Owner 입력을 v7 CEO/CXX mission flow 기준으로 안내한다.';
1539
+ c.behavior.auto_route_ceo_description = 'true 이면 /goal, /submission, /hot-fix 이후 Owner 입력을 v7 CEO/CXX mission flow 기준으로 안내한다.';
1540
1540
  delete c.behavior.auto_route_dispatcher;
1541
1541
  delete c.behavior.auto_route_dispatcher_description;
1542
1542
  delete c.mode_selection;
@@ -1726,7 +1726,7 @@ function runMigrate(opts = {}) {
1726
1726
  log('Dry-run 완료 — 실제 변경 적용하려면 `npx walwal-harness migrate` 실행');
1727
1727
  } else {
1728
1728
  log(`Migration 완료. 백업: ${backupDir}`);
1729
- log('v7 routing 기준으로 /goal 또는 /hot-fix 가 CEO/CXX/worker 흐름을 시작합니다.');
1729
+ log('v7 routing 기준으로 /goal, /submission, /hot-fix 가 CEO/CXX/worker 흐름을 시작합니다.');
1730
1730
  log('회사모드는 기본값이며 사용자 override 는 사용하지 않습니다.');
1731
1731
  }
1732
1732
  console.log('');
@@ -1781,7 +1781,7 @@ function runVerify() {
1781
1781
  log(` skills: ${pass}/${expectedSkills.length * skillRoots.length} OK`);
1782
1782
 
1783
1783
  // 2) owner-facing commands
1784
- const allowedCommands = new Set(['goal.md', 'hot-fix.md']);
1784
+ const allowedCommands = new Set(['goal.md', 'submission.md', 'hot-fix.md']);
1785
1785
  const forbiddenCommands = new Set(['ceo.md', 'coo.md', 'cdo.md', 'cto.md', 'cqo.md', 'ops.md', 'hiring.md', 'resource-manager.md', 'brick-office.md']);
1786
1786
  const commandRoots = [
1787
1787
  ['.claude', CLAUDE_COMMANDS_DIR],
@@ -1807,7 +1807,7 @@ function runVerify() {
1807
1807
  }
1808
1808
  }
1809
1809
  }
1810
- log(` commands: /goal + /hot-fix checked`);
1810
+ log(` commands: /goal + /submission + /hot-fix checked`);
1811
1811
 
1812
1812
  // 3) progress.json schema (v6+ = version 4 + mode_decision)
1813
1813
  const progressPath = path.join(HARNESS_DIR, 'progress.json');
@@ -1991,14 +1991,14 @@ function main() {
1991
1991
  log('╔═══════════════════════════════════════════════════════════╗');
1992
1992
  log('║ Restart Claude Code for skills & commands to activate! ║');
1993
1993
  log('║ ║');
1994
- log('║ Then invoke /goal or /hot-fix ║');
1994
+ log('║ Then invoke /goal, /submission, or /hot-fix ║');
1995
1995
  log('║ ║');
1996
1996
  log('║ 기본은 회사모드: 병렬 · 자율 진행. 추가 입력 불필요. ║');
1997
1997
  log('╚═══════════════════════════════════════════════════════════╝');
1998
1998
  } else {
1999
1999
  log('Next steps:');
2000
2000
  log(' 1. Restart Claude/Codex if command discovery needs refresh.');
2001
- log(' 2. Use /goal or /hot-fix.');
2001
+ log(' 2. Use /goal, /submission, or /hot-fix.');
2002
2002
  log(' 3. Internal agents call hired agents/skills, not slash commands.');
2003
2003
  }
2004
2004
  console.log('');
package/commands/goal.md CHANGED
@@ -8,17 +8,19 @@ argument-hint: "<goal request>"
8
8
  Route the Owner request to the installed `harness-ceo` agent/skill.
9
9
 
10
10
  Required flow:
11
- 1. Create or update a mission under `.harness/documents/{mission_name}/`.
12
- 2. Record CEO decisions in `.harness/documents/{mission_name}/ceo.md`.
11
+ 1. Create or update a goal under `.harness/documents/goal-{goal_index}-{goal_name}/`.
12
+ 2. Record CEO decisions in `.harness/documents/goal-{goal_index}-{goal_name}/ceo.md`.
13
13
  3. CEO decides whether brainstorming is needed or whether CXX questions can be issued immediately.
14
14
  4. CEO asks COO, CDO, CTO, and CQO only the questions needed for this goal.
15
15
  5. CXX roles must start in a fresh session context. Do not let the default model impersonate a missing worker.
16
16
  6. CXX roles must not directly execute specialist deliverables. They must use hired workers for research, planning, design, implementation, QA, ops checks, and documentation.
17
17
  7. If a required CXX or worker skill is missing, CEO must invoke the installed `harness-hiring` skill before assigning the work.
18
- 8. CEO must require worker report paths under `.harness/documents/{mission_name}/workers/` before accepting CXX completion.
18
+ 8. CEO must require worker report paths under `.harness/documents/goal-{goal_index}-{goal_name}/{owning-cxx}/workers/` before accepting CXX completion.
19
19
  9. Do not invoke internal roles through slash commands; commands are Owner entrypoints only.
20
20
 
21
- Note: Harness documents (ceo.md, cto.md, cqo.md, worker reports) are mission records, not derived output documents. A docmeta skip decision on these files does not authorize skipping any harness protocol step.
21
+ Note: A goal is the company's objective. Submissions and hot-fixes that happen while pursuing it should be recorded under that goal directory.
22
+
23
+ Harness documents (ceo.md, cto.md, cqo.md, worker reports) are mission records, not derived output documents. A docmeta skip decision on these files does not authorize skipping any harness protocol step.
22
24
 
23
25
  Owner request:
24
26
 
@@ -1,25 +1,28 @@
1
1
  ---
2
- description: Start an urgent fix outside the active goal.
2
+ description: Start an urgent fix under the active goal.
3
3
  argument-hint: "<incident or fix request>"
4
4
  ---
5
5
 
6
6
  # /hot-fix
7
7
 
8
- Route the Owner request to the installed `harness-ceo` agent/skill as an emergency mission.
8
+ Route the Owner request to the installed `harness-ceo` agent/skill as an emergency mission under the active goal.
9
9
 
10
10
  Required flow:
11
- 1. Create `.harness/documents/{hotfix_name}/ceo.md`.
12
- 2. CEO summons CTO and CQO first; summon COO/CDO only when planning or UX decisions are involved.
13
- 3. CTO applies the smallest correct patch path through hired implementation skills.
14
- 4. CXX roles must start in a fresh session context. Do not let the default model impersonate a missing CXX or worker.
15
- 5. CXX roles must not directly execute specialist deliverables. They must use hired workers for implementation, QA, ops checks, and documentation even when the fix is small.
16
- 6. If a required worker is missing, CEO or the responsible CXX must invoke the installed `harness-hiring` skill before assigning the work.
17
- 7. CEO must require worker report paths under `.harness/documents/{hotfix_name}/workers/` before accepting CXX completion.
18
- 8. CQO must register durable lessons in `.harness/gotchas/`, `.harness/conventions/`, or `.harness/memories/`. This step is mandatory, not optional, even for small fixes.
19
- 9. Archive only after CQO has accepted the fix.
20
- 10. Do not invoke internal roles through slash commands; commands are Owner entrypoints only.
11
+ 1. Locate the active goal document root under `.harness/documents/{goal_name}/`. If no active goal exists, CEO must create/select one before proceeding.
12
+ 2. Create `.harness/documents/{goal_name}/hotfix-{hotfix_index}-{hotfix_name}/ceo.md`.
13
+ 3. CEO summons CTO and CQO first; summon COO/CDO only when planning or UX decisions are involved.
14
+ 4. CTO applies the smallest correct patch path through hired implementation skills.
15
+ 5. CXX roles must start in a fresh session context. Do not let the default model impersonate a missing CXX or worker.
16
+ 6. CXX roles must not directly execute specialist deliverables. They must use hired workers for implementation, QA, ops checks, and documentation even when the fix is small.
17
+ 7. If a required worker is missing, CEO or the responsible CXX must invoke the installed `harness-hiring` skill before assigning the work.
18
+ 8. CEO must require worker report paths under `.harness/documents/{goal_name}/hotfix-{hotfix_index}-{hotfix_name}/{owning-cxx}/workers/` before accepting CXX completion.
19
+ 9. CQO must register durable lessons in `.harness/gotchas/`, `.harness/conventions/`, or `.harness/memories/`. This step is mandatory, not optional, even for small fixes.
20
+ 10. Archive only after CQO has accepted the fix.
21
+ 11. Do not invoke internal roles through slash commands; commands are Owner entrypoints only.
21
22
 
22
- Note: Harness documents (ceo.md, cto.md, cqo.md, worker reports) are mission records, not derived output documents. A docmeta skip decision on these files does not authorize skipping any harness protocol step.
23
+ Note: `/hot-fix` is a problem-fix flow while pursuing the active goal. It belongs under that goal in history.
24
+
25
+ Harness documents (ceo.md, cto.md, cqo.md, worker reports) are mission records, not derived output documents. A docmeta skip decision on these files does not authorize skipping any harness protocol step.
23
26
 
24
27
  Hot-fix request:
25
28
 
@@ -0,0 +1,28 @@
1
+ ---
2
+ description: Add a requirement under the active goal.
3
+ argument-hint: "<additional requirement>"
4
+ ---
5
+
6
+ # /submission
7
+
8
+ Route the Owner request to the installed `harness-ceo` agent/skill as an additional requirement under the active goal.
9
+
10
+ Required flow:
11
+ 1. Locate the active goal document root under `.harness/documents/{goal_name}/`. If no active goal exists, CEO must ask the Owner to create or select one with `/goal` before proceeding.
12
+ 2. Create a submission record under `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/`.
13
+ 3. Record CEO decisions in `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/ceo.md`.
14
+ 4. CEO routes only to the CXX agents needed for this additional requirement.
15
+ 5. CXX roles must start in a fresh session context. Do not let the default model impersonate a missing CXX or worker.
16
+ 6. CXX roles must not directly execute specialist deliverables. They must use hired workers for research, planning, design, implementation, QA, ops checks, and documentation.
17
+ 7. If a required worker is missing, the responsible CXX must invoke the installed `harness-hiring` skill before assigning the work.
18
+ 8. CXX must manage conventions for new requirements. Durable changes in behavior, architecture, UI, process, or policy must be reflected in `.harness/conventions/` when accepted.
19
+ 9. CEO must require worker report paths under `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/{owning-cxx}/workers/` before accepting CXX completion.
20
+ 10. Do not invoke internal roles through slash commands; commands are Owner entrypoints only.
21
+
22
+ Note: `/submission` is not a new company goal and not an emergency fix. It is an additional requirement while pursuing the active goal. It belongs under that goal in history.
23
+
24
+ Submission request:
25
+
26
+ ```
27
+ $ARGUMENTS
28
+ ```
@@ -1,9 +1,9 @@
1
1
  # CEO Conventions
2
2
 
3
3
  - CEO is the only Owner-facing internal role.
4
- - CEO receives `/goal` and `/hot-fix` through command entrypoints.
4
+ - CEO receives `/goal`, `/submission`, and `/hot-fix` through command entrypoints.
5
5
  - CEO routes work to CXX agents through agent/skill invocation, not slash commands.
6
- - CEO records mission framing and routing decisions in `.harness/documents/{mission_name}/ceo.md`.
6
+ - CEO records mission framing and routing decisions in `.harness/documents/{goal-or-child-mission}/ceo.md`.
7
7
  - CEO asks only mission-relevant questions to COO, CDO, CTO, CQO, and OPS.
8
8
  - CEO does not accept CXX completion unless specialist deliverables were produced by hired workers.
9
- - CEO requires worker names and `.harness/documents/{mission_name}/workers/{worker-name}.md` paths in CXX completion reports.
9
+ - CEO requires worker names and `.harness/documents/{goal-or-child-mission}/{owning-cxx}/workers/{worker-name}.md` paths in CXX completion reports.
@@ -4,7 +4,7 @@
4
4
 
5
5
  - This package repository must not contain project runtime `.harness/` state.
6
6
  - `walwal-harness init` creates `.harness/` in the target project.
7
- - `.claude/commands` and `.codex/commands` contain only `/goal` and `/hot-fix`.
7
+ - `.claude/commands` and `.codex/commands` contain only `/goal`, `/submission`, and `/hot-fix`.
8
8
  - CXX and worker execution uses installed agents/skills, not slash commands.
9
9
 
10
10
  ## Hiring Boundary
@@ -19,9 +19,10 @@
19
19
 
20
20
  ## Mission Documents
21
21
 
22
- - Mission records live under `.harness/documents/{mission_name}/`.
22
+ - Goal records live under `.harness/documents/goal-{index}-{name}/`.
23
+ - Submission and hot-fix records live below the active goal directory.
23
24
  - CXX decisions use `{cxx}.md`.
24
- - Worker reports use `workers/{worker-name}.md`.
25
+ - Worker reports use `{owning-cxx}/workers/{worker-name}.md`.
25
26
 
26
27
  ## DDD
27
28
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walwal-harness/cli",
3
- "version": "7.1.9",
3
+ "version": "7.1.10",
4
4
  "description": "Company-style AI agent harness for Claude and Codex. Installs commands, CXX agents, skills, HR-Resource hiring pool, and project-local .harness runtime state.",
5
5
  "bin": {
6
6
  "walwal-harness": "bin/init.js"
@@ -172,7 +172,7 @@ if [ "$sprint_status" = "init" ]; then
172
172
  echo "# Harness Company Mode active"
173
173
  echo "# Sprint is init, but next_agent=${next_agent}; continue the autonomous loop instead of waiting for Owner."
174
174
  else
175
- echo "# Harness ready — use /goal or /hot-fix"
175
+ echo "# Harness ready — use /goal, /submission, or /hot-fix"
176
176
  echo "# 기본 경로는 v7 회사 루프입니다: CEO -> 필요한 CXX -> resource-manager/hiring -> worker reports -> CXX review -> CEO report."
177
177
  exit 0
178
178
  fi
@@ -38,7 +38,7 @@ if [ -x "$SCRIPT_DIR/harness-worker-evidence-validate.sh" ]; then
38
38
  REASON=$(echo "$WORKER_EVIDENCE_JSON" | jq -r '
39
39
  "CXX 직접 실행 차단: " +
40
40
  ([.violations[] | "\(.mission) has CXX docs without worker reports: \(.docs | join(","))"] | join("; ")) +
41
- ". harness-hiring/resource-manager로 전문 worker를 고용 또는 배정하고 .harness/documents/{mission}/workers/{worker-name}.md 를 남긴 뒤 계속하라."
41
+ ". harness-hiring/resource-manager로 전문 worker를 고용 또는 배정하고 .harness/documents/{goal-or-child-mission}/{owning-cxx}/workers/{worker-name}.md 를 남긴 뒤 계속하라."
42
42
  ' 2>/dev/null || echo "CXX 직접 실행 차단: worker report가 없는 mission이 있습니다. hired worker 보고서를 먼저 생성하세요.")
43
43
  jq -nc --arg reason "$REASON" '{decision:"block", reason:$reason}'
44
44
  exit 0
@@ -62,7 +62,15 @@ if [ -n "$PROMPT" ] && [ -d "$CWD/.harness" ]; then
62
62
  fi
63
63
  PROMPT_SHORT=$(echo "$PROMPT" | tr '\n' ' ' | sed 's/ */ /g' | cut -c1-80)
64
64
  if [ ${#PROMPT_SHORT} -gt 2 ]; then
65
- echo "$(date +"%Y-%m-%d %H:%M") | user-prompt | input | ${PROMPT_SHORT}" >> "$PROGRESS_LOG"
65
+ COMMAND_TYPE="other"
66
+ if echo "$PROMPT_SHORT" | grep -qiE '^/goal(\s|$)'; then
67
+ COMMAND_TYPE="goal"
68
+ elif echo "$PROMPT_SHORT" | grep -qiE '^/submission(\s|$)'; then
69
+ COMMAND_TYPE="submission"
70
+ elif echo "$PROMPT_SHORT" | grep -qiE '^/hot-fix(\s|$)'; then
71
+ COMMAND_TYPE="hot-fix"
72
+ fi
73
+ echo "$(date +"%Y-%m-%d %H:%M") | user-prompt | ${COMMAND_TYPE} | ${PROMPT_SHORT}" >> "$PROGRESS_LOG"
66
74
  fi
67
75
  fi
68
76
 
@@ -114,13 +122,13 @@ cat <<EOF
114
122
  [harness] company | S${SPRINT_NUM} | ${PIPELINE} | agent=${CURRENT_AGENT} (${AGENT_STATUS}) | next=${NEXT_AGENT} | queue=${T_PASSED}/${T_TOTAL} passed | failed=${T_FAILED}
115
123
  ${CONTEXT_WARNING}
116
124
  ## Route
117
- - pipeline=none/init → harness-ceo 스킬로 Owner goal/hot-fix를 접수하고 mission 문서를 생성
125
+ - pipeline=none/init → harness-ceo 스킬로 Owner /goal, /submission, /hot-fix를 접수하고 mission 문서를 생성
118
126
  - 기본 경로는 v7 CXX 회사 루프다: CEO -> COO/CDO/CTO/CQO/OPS -> harness-resource-manager -> harness-hiring -> hired workers -> CXX review -> CEO report
119
- - CXX는 직접 전문 산출물을 만들지 않고 worker report를 `.harness/documents/{mission}/workers/`에 남겨야 한다
127
+ - CXX는 직접 전문 산출물을 만들지 않고 worker report를 `.harness/documents/{goal-or-child-mission}/{owning-cxx}/workers/`에 남겨야 한다
120
128
  - Owner에게 "계속 진행", "진행할까요?", "다음 명령을 입력하세요"를 요구하지 않는다. GOAL이 있고 escalation이 아니면 즉시 next_agent/current_agent 업무를 수행한다
121
129
  - Owner 입력은 목표 변경·사고·결과 확인용이지 회사 진행을 펌프하는 신호가 아니다
122
130
  - CEO는 필요한 CXX만 호출하고, CXX는 resource-manager/hiring 없이 worker 업무를 수행하지 않는다
123
- - 기능 요청 → CEO mission flow | 긴급 수정 → hot-fix flow | 메타 질문 → 짧게 응답 (skip)
131
+ - 목표 설정/변경 → goal flow | 추가 요구사항 → submission flow | 긴급 수정 → hot-fix flow | 메타 질문 → 짧게 응답 (skip)
124
132
  - 활성 pipeline → next_agent/current_agent 컨텍스트로 계속
125
133
  - skip: "harness skip", "just answer" 등 명시 시 단일 메시지 건너뜀
126
134
  EOF