@walwal-harness/cli 6.1.3 → 6.1.5

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +43 -74
  3. package/assets/launchd/com.walwal.harness-wake.plist.template +32 -0
  4. package/assets/templates/CONVENTIONS.md +12 -0
  5. package/assets/templates/HARNESS.md +216 -403
  6. package/assets/templates/config.json +27 -29
  7. package/assets/templates/memory.md +16 -2
  8. package/assets/templates/progress.json.template +6 -5
  9. package/bin/init.js +179 -90
  10. package/conventions/README.md +92 -0
  11. package/conventions/conductor.md +24 -0
  12. package/conventions/coo-developer.md +24 -0
  13. package/conventions/cqo.md +24 -0
  14. package/conventions/cto.md +24 -0
  15. package/conventions/dispatcher.md +24 -0
  16. package/conventions/documentationer.md +24 -0
  17. package/conventions/evaluator-architecture.md +24 -0
  18. package/conventions/evaluator-code-quality.md +24 -0
  19. package/conventions/evaluator-functional.md +24 -0
  20. package/conventions/evaluator-security.md +24 -0
  21. package/conventions/evaluator-visual.md +24 -0
  22. package/conventions/generator-backend.md +24 -0
  23. package/conventions/generator-designer.md +24 -0
  24. package/conventions/generator-devops.md +24 -0
  25. package/conventions/generator-frontend.md +24 -0
  26. package/conventions/meeting-manager.md +24 -0
  27. package/conventions/planner.md +24 -0
  28. package/conventions/service-ops.md +24 -0
  29. package/conventions/shared.md +40 -0
  30. package/gotchas/conductor.md +16 -0
  31. package/gotchas/dispatcher.md +16 -0
  32. package/gotchas/meeting-manager.md +8 -0
  33. package/gotchas/service-ops.md +8 -0
  34. package/package.json +5 -4
  35. package/scripts/conductor-tick.sh +61 -53
  36. package/scripts/harness-archive.sh +7 -5
  37. package/scripts/harness-dashboard-up.sh +11 -3
  38. package/scripts/harness-hourly-review.sh +303 -0
  39. package/scripts/harness-meeting-doc.sh +55 -16
  40. package/scripts/harness-next.sh +1 -1
  41. package/scripts/harness-queue-manager.sh +12 -5
  42. package/scripts/harness-service-ops-monitor.sh +228 -0
  43. package/scripts/harness-session-start.sh +60 -31
  44. package/scripts/harness-statusline.sh +8 -12
  45. package/scripts/harness-stop.sh +85 -0
  46. package/scripts/harness-user-prompt-submit.sh +11 -29
  47. package/scripts/harness-wake-install.sh +179 -0
  48. package/scripts/harness-wake.sh +258 -0
  49. package/scripts/harness-worker-dispatch.sh +157 -0
  50. package/scripts/lib/harness-progress-migrate.sh +6 -1
  51. package/scripts/lib/harness-render-progress.sh +3 -3
  52. package/skills/brainstorming/SKILL.md +2 -2
  53. package/skills/conductor/SKILL.md +67 -55
  54. package/skills/cqo/SKILL.md +1 -0
  55. package/skills/cto/SKILL.md +1 -0
  56. package/skills/dispatcher/SKILL.md +33 -14
  57. package/skills/evaluator-code-quality/SKILL.md +4 -4
  58. package/skills/evaluator-functional/SKILL.md +6 -6
  59. package/skills/evaluator-visual/SKILL.md +4 -4
  60. package/skills/generator-backend/SKILL.md +4 -4
  61. package/skills/generator-frontend/SKILL.md +5 -5
  62. package/skills/meeting-manager/SKILL.md +82 -12
  63. package/skills/planner/SKILL.md +3 -3
  64. package/skills/service-ops/SKILL.md +25 -0
  65. package/commands/harness-solo.md +0 -103
  66. package/commands/harness-stop.md +0 -53
  67. package/commands/harness-team.md +0 -530
  68. package/scripts/harness-dashboard.sh +0 -509
  69. package/scripts/harness-goal-init.sh +0 -72
  70. package/scripts/harness-goal-show.sh +0 -37
  71. package/scripts/harness-gotcha-memory.sh +0 -348
  72. package/scripts/harness-monitor.sh +0 -398
  73. package/scripts/harness-prompt-history.sh +0 -164
  74. package/scripts/harness-tmux.sh +0 -372
package/CHANGELOG.md CHANGED
@@ -29,6 +29,44 @@ docmeta:
29
29
 
30
30
  # Changelog
31
31
 
32
+ ## 6.2.0 — Always-on company runtime + legacy purge (2026-05-08)
33
+
34
+ ### Why
35
+ 회사모드 only 정렬. 솔로/팀 모드의 잔재 스크립트와 분기 로직이 SKILL/문서 곳곳에 남아 있어 Owner 가 "지금 어떤 모드인지" 혼동하고, 한 시간이 지나도 자율 활동이 일어나지 않는 (스케줄러 부재) 문제 발생. 추가로 Claude 가 미래 시각으로 progress.log 라인을 미리 적어 가짜 진행을 보고하는 환각이 관찰됨.
36
+
37
+ ### Added
38
+ - **Stop 훅** (`scripts/harness-stop.sh`) — Claude turn 종료 시 conductor 가 running 이면 자동으로 다음 tick 으로 연쇄. `behavior.auto_chain_on_stop=false` 로 비활성, `behavior.auto_chain_max_per_sprint` 로 상한 (기본 200).
39
+ - **launchd hourly wake** (`scripts/harness-wake.sh`, `scripts/harness-wake-install.sh`, `assets/launchd/com.walwal.harness-wake.plist.template`) — 1시간마다 idle ≥ 55분 프로젝트의 tmux 에 wake prompt 송출.
40
+ - **Truthful Logging Heal** — `harness-session-start.sh` 가 `progress.log` 의 미래 시각 라인을 자동으로 `progress.log.future-quarantine.<ts>` 로 격리 + 메인 로그에서 제거.
41
+ - **conductor / dispatcher SKILL 의 정직성 룰** — "미래 시각 progress.log 항목 금지" Inviolable 섹션 추가, Owner "최근 1시간 뭐 했냐" 질문 시 디스크 mtime 으로 정직 답변하도록 명시.
42
+ - **meeting-manager SKILL 의 라이브 가시화 계약** — `meetings.active` 가 평탄한 agent ID 배열이라는 데이터 계약을 명시. convene 시 active=[참석자], dispatch 시 active=[] 로 갱신해야 미니피규어가 회의실로 텔레포트.
43
+
44
+ ### Removed (legacy purge)
45
+ - `scripts/harness-dashboard.sh` — tmux ASCII 대시보드 pane (3D Brick Office 가 대체).
46
+ - `scripts/harness-monitor.sh` — 3-team worker pane (회사모드는 동적 worker pool).
47
+ - `scripts/harness-prompt-history.sh` — tmux Studio 전용 pane.
48
+ - `scripts/harness-gotcha-memory.sh` — tmux Studio 전용 pane.
49
+ - `scripts/harness-tmux.sh` — tmux Studio launcher (회사모드는 단일 Claude CLI + 브라우저 대시보드).
50
+ - `scripts/harness-goal-init.sh`, `scripts/harness-goal-show.sh` — 외부 호출 0 건의 고아.
51
+ - `commands/harness-company.md` — Studio launch 명령 (런타임 자동화로 불필요).
52
+ - `bin/init.js`: `runTeamStudio()` + `company` / `studio` / `studio-v4` / `v4` subcommand 제거.
53
+
54
+ ### Migration
55
+ 기존 프로젝트는 `npx walwal-harness --force` 또는 다음만 수동 적용:
56
+ 1. `.claude/settings.json` 에 Stop 훅 추가 (matcher: "", command: `bash scripts/harness-stop.sh`).
57
+ 2. `bash scripts/harness-wake-install.sh install <project-root>` 로 1시간 안전망 등록 (선택).
58
+ 3. `~/<project>/scripts/` 에서 위 7개 legacy 스크립트 제거.
59
+
60
+ ## 6.1.4 — Template + package files alignment with v6 NEXUS (2026-05-08)
61
+
62
+ ### Why
63
+ 6.1.3 까지 `assets/templates/HARNESS.md` 와 `assets/templates/config.json` 의 메타 헤더가 v3 시절 "7-Agent Production Harness / 5.6.0" 으로 정지해 있어, `--force` 가 stale 템플릿을 그대로 덮어쓰는 회귀 발생. 또 신규 `conventions/` 디렉토리가 `package.json` "files" 에 누락되어 게시 패키지에 포함되지 않았다.
64
+
65
+ ### Changed
66
+ - `assets/templates/HARNESS.md`: v6 NEXUS 도큐트린 기준으로 전면 재작성 (단일 대화 창구·조직도·디렉토리·실행 흐름·6종 회의·parallel-tracks·Solo/Team/Hypothesis 모드·품질 게이트·자주 쓰는 명령).
67
+ - `assets/templates/config.json`: `harness.name` / `version` / `description` 메타 헤더를 v6.1.4 NEXUS 기준으로 갱신.
68
+ - `package.json` "files": `conventions/` 추가 (이제 게시 tarball 에 포함됨).
69
+
32
70
  ## 6.1.3 — Parallel-tracks fork-join + role gotchas/conventions backfill (2026-05-08)
33
71
 
34
72
  ### Added
package/README.md CHANGED
@@ -224,74 +224,27 @@ bash scripts/harness-token-limit.sh . mark 300
224
224
 
225
225
  핵심은 운영 품질이 아니라 빠른 사실 확인입니다.
226
226
 
227
- ## 런타임 모드
227
+ ## 런타임 (회사모드 always-on)
228
228
 
229
- `progress.mode` 는 회사 실행 상태를 뜻합니다. 회의 결정의 `tracks[]` 와는 별개이며, fork-join 은 `tracks.length` 로만 판단합니다.
229
+ 회사모드는 유일한 런타임이며 항상 켜져 있습니다. `progress.mode == "company"` 가 항상 참이고, 별도 모드 전환 명령은 없습니다.
230
230
 
231
- ### Company / Team
231
+ 자율 진행은 두 메커니즘으로 유지됩니다:
232
232
 
233
- 기본 경로입니다. Conductor 가 `progress.mode=auto` 에서 선택합니다.
233
+ - **Stop 훅** — Claude 가 한 turn 을 끝내려는 시점에 발화. `conductor.state == "running"` 이고 다음 부서가 있으면 자동으로 turn 을 한 번 더 굴려 끊김 없이 연쇄.
234
+ - **launchd hourly wake (선택)** — 1시간마다 macOS 가 `scripts/harness-wake.sh` 를 호출. idle ≥ 55분이고 `paused/completed/escalated` 가 아닌 프로젝트만 깨움.
234
235
 
235
- 특징:
236
-
237
- - 회사형 루프 유지
238
- - control-plane 과 worker-plane 분리
239
- - feature queue 기반 병렬 처리
240
- - tmux studio 사용 가능
241
-
242
- 강제 전환:
243
-
244
- ```text
245
- /harness-team
246
- ```
247
-
248
- ### Solo
249
-
250
- 비상용 fallback 입니다.
251
-
252
- 사용 시점:
253
-
254
- - 디버깅
255
- - 스크립트 장애
256
- - 짧은 수동 복구
257
-
258
- 강제 전환:
259
-
260
- ```text
261
- /harness-solo
262
- ```
263
-
264
- ### Stop
265
-
266
- Team 모드를 안전하게 멈추고 진행 중이던 feature 를 ready 로 복구합니다.
267
-
268
- ```text
269
- /harness-stop
270
- ```
271
-
272
- ## Team Studio
273
-
274
- Team 모드에서는 tmux 기반 Studio 레이아웃을 사용합니다.
275
-
276
- 시작:
277
-
278
- ```text
279
- /harness-team
280
- ```
236
+ ```bash
237
+ # 1시간 안전망 wake 등록
238
+ bash scripts/harness-wake-install.sh install .
281
239
 
282
- 또는:
240
+ # 상태 확인
241
+ bash scripts/harness-wake-install.sh status
283
242
 
284
- ```bash
285
- npx walwal-harness team
243
+ # 즉시 한 번 발화 (테스트)
244
+ bash scripts/harness-wake-install.sh run-now
286
245
  ```
287
246
 
288
- Team Studio 는 보통 다음을 보여줍니다.
289
-
290
- - Dashboard
291
- - Gotchas
292
- - Conventions
293
- - Memory
294
- - Team 1~3 worker pane
247
+ 회의 결정의 `tracks[]` 는 진행 흐름의 fork-join 단위이며 런타임 모드와는 별개입니다 (`tracks.length ≥ 2` 일 때 parallel).
295
248
  - Archive prompt
296
249
 
297
250
  Queue 관련 유용한 명령:
@@ -345,15 +298,22 @@ bash scripts/harness-queue-manager.sh idle-slots .
345
298
 
346
299
  | 스크립트 | 역할 |
347
300
  |---|---|
348
- | `scripts/harness-next.sh` | handoff 생성과 다음 agent 결정 |
349
- | `scripts/conductor-tick.sh` | company loop 라우팅 |
350
- | `scripts/harness-session-start.sh` | 새 세션 시작 시 자동 안내 |
351
- | `scripts/harness-user-prompt-submit.sh` | prompt 훅 주입/차단 |
352
- | `scripts/harness-task-session.sh` | agent 별 task session 생성 |
353
- | `scripts/harness-token-limit.sh` | TokenLimit hold/resume 마킹 |
354
- | `scripts/harness-queue-manager.sh` | team queue 관리 |
355
- | `scripts/harness-dashboard.sh` | dashboard 렌더 |
301
+ | `scripts/conductor-tick.sh` | 회사 루프 라우터 — 다음 부서 결정 |
302
+ | `scripts/harness-next.sh` | turn 종료 후 handoff 생성 + gotcha/convention 자동 등록 + audit gate |
303
+ | `scripts/harness-progress-set.sh` | progress.json partial update 헬퍼 |
304
+ | `scripts/harness-session-start.sh` | SessionStart 훅 (+ future-dated 라인 자동 격리) |
305
+ | `scripts/harness-user-prompt-submit.sh` | UserPromptSubmit 훅 |
306
+ | `scripts/harness-stop.sh` | Stop 훅 — turn 종료 시 자동 연쇄 |
307
+ | `scripts/harness-wake.sh` | 1시간 안전망 wake (launchd 가 호출) |
308
+ | `scripts/harness-wake-install.sh` | launchd 등록/관리 CLI |
309
+ | `scripts/harness-statusline.sh` | 1줄 statusLine 렌더 |
310
+ | `scripts/harness-queue-manager.sh` | feature queue 관리 |
356
311
  | `scripts/harness-meeting-doc.sh` | 회의 문서 skeleton / decision 처리 |
312
+ | `scripts/harness-task-session.sh` | agent 별 task session (TokenLimit) |
313
+ | `scripts/harness-token-limit.sh` | TokenLimit hold/resume 마킹 |
314
+ | `scripts/harness-archive.sh` | sprint 종료 archive |
315
+ | `scripts/harness-gotcha-register.sh` | evaluator output 의 gotcha_candidates 자동 등록 |
316
+ | `scripts/harness-dashboard-up.sh` | Brick Office (브라우저 3D 대시보드) 기동 |
357
317
 
358
318
  ## 디렉토리 구조
359
319
 
@@ -414,17 +374,26 @@ cat .harness/progress.json | jq '.task_stop'
414
374
  bash scripts/harness-queue-manager.sh status .
415
375
  ```
416
376
 
417
- ### mode 강제 전환
377
+ ### Stop 훅 자동 연쇄가 안 도는지 점검
418
378
 
419
- ```text
420
- /harness-team
421
- /harness-solo
422
- /harness-stop
379
+ ```bash
380
+ # config 확인 — auto_chain_on_stop 이 true 여야 함
381
+ jq '.behavior.auto_chain_on_stop // true' .harness/config.json
382
+
383
+ # stop_chain_count 와 sprint 상한 확인
384
+ jq '{count: .conductor.stop_chain_count, max: 200}' .harness/progress.json
385
+ ```
386
+
387
+ ### 1시간 wake 가 발화 안 하는지 점검
388
+
389
+ ```bash
390
+ bash scripts/harness-wake-install.sh status
391
+ tail -30 ~/.walwal-harness/logs/wake.log
423
392
  ```
424
393
 
425
394
  ## 버전 호환성
426
395
 
427
- README 는 v6.1 계열 회사형 하네스를 기준으로 작성되었습니다.
396
+ README 는 v6.x 계열 always-on 회사모드 기준입니다 (solo/team 모드 영구 제거).
428
397
 
429
398
  이 문서에서 전제하는 기능:
430
399
 
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>Label</key>
6
+ <string>com.walwal.harness-wake</string>
7
+
8
+ <key>ProgramArguments</key>
9
+ <array>
10
+ <string>/bin/bash</string>
11
+ <string>{{WAKE_SCRIPT}}</string>
12
+ </array>
13
+
14
+ <key>StartInterval</key>
15
+ <integer>3600</integer>
16
+
17
+ <key>RunAtLoad</key>
18
+ <false/>
19
+
20
+ <key>StandardOutPath</key>
21
+ <string>{{LOG_DIR}}/wake.stdout.log</string>
22
+
23
+ <key>StandardErrorPath</key>
24
+ <string>{{LOG_DIR}}/wake.stderr.log</string>
25
+
26
+ <key>EnvironmentVariables</key>
27
+ <dict>
28
+ <key>PATH</key>
29
+ <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
30
+ </dict>
31
+ </dict>
32
+ </plist>
@@ -14,6 +14,18 @@
14
14
  - 모노리스보다 모듈러 아키텍처 선호
15
15
  -->
16
16
 
17
+ ### Walwal-Harness Company Contract
18
+
19
+ walwal-harness는 단순 작업 파이프라인이 아니라 "회사 구조 + 자율 구조 + 하네스"다.
20
+
21
+ - Owner는 최초 GOAL과 escalation에만 관여한다. 최초 GOAL 이후 Owner 입력은 interrupt/additional request이며 회사가 대기하는 이유가 아니다.
22
+ - Dispatcher/CEO는 Owner와의 유일한 외부 창구다.
23
+ - Planner/COO는 GOAL을 work package, queue, 가설, plan으로 바꾼다.
24
+ - CTO는 구현, 아키텍처, 기술선택, runtime recovery 책임자다.
25
+ - CQO는 품질, 회귀, evidence, PASS/FAIL 책임자다.
26
+ - Service-Ops는 운영 신호, KPI, incident, monitor cadence 책임자다.
27
+ - Meeting-Manager는 상태표가 아니라 임원 회의록을 남긴다. 회의록에는 CEO/COO/CTO/CQO/Service-Ops의 Position, Evidence, Action이 있어야 한다.
28
+
17
29
  ## Code Style
18
30
 
19
31
  <!-- 코드 스타일 규칙을 여기에 작성하세요 -->