@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
@@ -0,0 +1,92 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-readme
4
+ title: Conventions — House Style Registry
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - house-style
14
+ - registry
15
+ ---
16
+
17
+ # Conventions — House Style Registry
18
+
19
+ > 이 디렉토리는 프로젝트의 **긍정 규범(house style)** 을 누적 기록합니다.
20
+ > Gotcha(실수 기록) 가 사고 이후의 방어선이라면, Convention 은 합의된 원칙입니다.
21
+ > Dispatcher 가 사용자의 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지하면
22
+ > 해당 에이전트/스코프의 convention 파일에 `### [C-NNN]` 으로 append 합니다.
23
+
24
+ ## 파일 구조
25
+
26
+ ```
27
+ .harness/conventions/
28
+ ├── README.md # 이 파일
29
+ ├── shared.md # 모든 에이전트 공통 규범
30
+ │
31
+ ├── conductor.md
32
+ ├── dispatcher.md
33
+ ├── meeting-manager.md
34
+ ├── planner.md
35
+ ├── cto.md
36
+ ├── cqo.md
37
+ ├── service-ops.md
38
+ │
39
+ ├── coo-developer.md
40
+ ├── documentationer.md
41
+ │
42
+ ├── generator-backend.md
43
+ ├── generator-frontend.md
44
+ ├── generator-designer.md
45
+ ├── generator-devops.md
46
+ │
47
+ ├── evaluator-code-quality.md
48
+ ├── evaluator-functional.md
49
+ ├── evaluator-visual.md
50
+ ├── evaluator-architecture.md
51
+ └── evaluator-security.md
52
+ ```
53
+
54
+ 루트의 `CONVENTIONS.md` 는 사용자가 자유롭게 기술하는 **최상위 원칙** 용도로
55
+ 그대로 유지됩니다. 여기 `.harness/conventions/` 는 대화 중 Dispatcher 가
56
+ 자동 누적하는 계층화된 하위 규범 저장소입니다.
57
+
58
+ ## 읽기 순서 (모든 에이전트)
59
+
60
+ 세션 시작 시 각 에이전트는 아래 순서로 적용합니다:
61
+
62
+ 1. `CONVENTIONS.md` (루트, 최상위 원칙)
63
+ 2. `.harness/conventions/shared.md` (공통)
64
+ 3. `.harness/conventions/<self>.md` (자기 스코프)
65
+ 4. `.harness/gotchas/<self>.md` (과거 실수 방어)
66
+ 5. **(v6.2) parallel-tracks 형제 트랙 owner 의 gotcha** — `progress.json.conductor.tracks[]` 에서 자기 트랙이 아닌 형제 트랙의 owner 를 식별, 해당 owner 의 `gotchas/<owner>.md` 도 한 번 훑기. fork 회의에서 같은 결정으로 함께 출발한 부서의 가드를 무시하지 않기 위함.
67
+ 6. `.harness/memory.md` (구조적 교훈)
68
+
69
+ **충돌 시 우선순위**: `<self>` > `shared` > 루트 `CONVENTIONS.md`.
70
+ 형제 트랙 gotcha 는 **참고**용 — 자기 결정과 충돌 시 자기 스코프가 우선.
71
+
72
+ ## 항목 형식
73
+
74
+ ```markdown
75
+ ### [C-NNN] 간결한 제목
76
+ - **Date**: YYYY-MM-DD
77
+ - **Scope**: <agent> | shared
78
+ - **Rule**: 규범 내용 (긍정형)
79
+ - **Rationale**: 왜 이렇게 하는가
80
+ - **Applies to**: 적용 대상 (에이전트·파일 경로 등)
81
+ - **Added from**: 출처 (사용자 프롬프트 / 마이그레이션 / 수동)
82
+ ```
83
+
84
+ ## 데이터 보존
85
+
86
+ - `npm install` postinstall 은 `### [C-NNN]` 엔트리가 있는 파일을 **절대 덮어쓰지 않습니다** (v5.6.0+).
87
+ - 스캐폴드 템플릿인 경우에만 갱신됩니다.
88
+ - 원본 백업: `.harness/archive/pre-harness-*.md.bak` (최초 설치 시 마이그레이션)
89
+
90
+ ## 수동 편집
91
+
92
+ 사용자가 직접 편집해도 됩니다. `### [C-NNN]` 형식만 지키면 Dispatcher 가 다음 자동 append 시 번호를 이어서 부여합니다.
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-conductor
4
+ title: Conventions — uconductor
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - conductor
14
+ ---
15
+
16
+ # Conventions — uconductor
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 uconductor 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-coo-developer
4
+ title: Conventions — ucoo-udeveloper
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - coo-developer
14
+ ---
15
+
16
+ # Conventions — ucoo-udeveloper
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 ucoo-udeveloper 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-cqo
4
+ title: Conventions — ucqo
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - cqo
14
+ ---
15
+
16
+ # Conventions — ucqo
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 ucqo 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-cto
4
+ title: Conventions — ucto
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - cto
14
+ ---
15
+
16
+ # Conventions — ucto
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 ucto 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-dispatcher
4
+ title: Conventions — udispatcher
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - dispatcher
14
+ ---
15
+
16
+ # Conventions — udispatcher
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 udispatcher 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-documentationer
4
+ title: Conventions — udocumentationer
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - documentationer
14
+ ---
15
+
16
+ # Conventions — udocumentationer
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 udocumentationer 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-evaluator-architecture
4
+ title: Conventions — uevaluator-uarchitecture
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - evaluator-architecture
14
+ ---
15
+
16
+ # Conventions — uevaluator-uarchitecture
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 uevaluator-uarchitecture 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-evaluator-code-quality
4
+ title: Conventions — evaluator-code-quality
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - evaluator-code-quality
14
+ ---
15
+
16
+ # Conventions — evaluator-code-quality
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/evaluator-code-quality.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-evaluator-functional
4
+ title: Conventions — evaluator-functional
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - evaluator-functional
14
+ ---
15
+
16
+ # Conventions — evaluator-functional
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/evaluator-functional.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-evaluator-security
4
+ title: Conventions — uevaluator-usecurity
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - evaluator-security
14
+ ---
15
+
16
+ # Conventions — uevaluator-usecurity
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 uevaluator-usecurity 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-evaluator-visual
4
+ title: Conventions — evaluator-visual
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - evaluator-visual
14
+ ---
15
+
16
+ # Conventions — evaluator-visual
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/evaluator-visual.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-generator-backend
4
+ title: Conventions — generator-backend
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - generator-backend
14
+ ---
15
+
16
+ # Conventions — generator-backend
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/generator-backend.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-generator-designer
4
+ title: Conventions — ugenerator-udesigner
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - generator-designer
14
+ ---
15
+
16
+ # Conventions — ugenerator-udesigner
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 ugenerator-udesigner 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-generator-devops
4
+ title: Conventions — ugenerator-udevops
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - generator-devops
14
+ ---
15
+
16
+ # Conventions — ugenerator-udevops
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 ugenerator-udevops 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-generator-frontend
4
+ title: Conventions — generator-frontend
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - generator-frontend
14
+ ---
15
+
16
+ # Conventions — generator-frontend
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/generator-frontend.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-meeting-manager
4
+ title: Conventions — umeeting-umanager
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - meeting-manager
14
+ ---
15
+
16
+ # Conventions — umeeting-umanager
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 umeeting-umanager 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-planner
4
+ title: Conventions — planner
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - planner
14
+ ---
15
+
16
+ # Conventions — planner
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/planner.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,24 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-service-ops
4
+ title: Conventions — uservice-uops
5
+ type: input
6
+ createdAt: 2026-05-08T00:00:00Z
7
+ updatedAt: 2026-05-08T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - service-ops
14
+ ---
15
+
16
+ # Conventions — uservice-uops
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기는 uservice-uops 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
@@ -0,0 +1,40 @@
1
+ ---
2
+ docmeta:
3
+ id: conventions-shared
4
+ title: Conventions — shared
5
+ type: input
6
+ createdAt: 2026-04-22T00:00:00Z
7
+ updatedAt: 2026-04-22T00:00:00Z
8
+ source:
9
+ producer: user
10
+ skillId: harness-dispatcher
11
+ tags:
12
+ - conventions
13
+ - shared
14
+ ---
15
+
16
+ # Conventions — shared
17
+
18
+ > **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
19
+ > 여기(`.harness/conventions/shared.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
20
+ >
21
+ > Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
22
+ > 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
23
+
24
+ <!-- 항목이 추가되면 아래에 기록됩니다 -->
25
+
26
+ ### [C-SYS-EXEC-ROLE-CONTRACT] 회사 구조와 임원 역할 계약은 하네스 공통 규칙이다
27
+
28
+ - **Status**: verified
29
+ - **Date**: 2026-05-10
30
+ - **Scope**: all agents
31
+ - **Rule**: walwal-harness는 "회사 구조 + 자율 구조 + 하네스"를 구현한다. CEO/COO/CTO/CQO/Service-Ops의 역할, 해야 할 일, 하면 안 되는 일은 개별 회의 프롬프트의 장식이 아니라 모든 에이전트가 세션 시작 시 적용해야 하는 하네스 공통 규칙이다.
32
+ - **Role contract**:
33
+ - `Dispatcher/CEO`: Owner와의 유일한 외부 창구. GOAL, 사업 우선순위, Owner escalation 필요성을 판정한다. 내부 해결 가능한 일을 Owner 대기로 끝내지 않는다.
34
+ - `Planner/COO`: GOAL을 work package, queue, 가설, plan으로 바꾼다. planning_drift/goal_drift를 판정하고 다음 operating cycle을 정의한다.
35
+ - `CTO`: 구현, 아키텍처, 기술선택, runtime recovery 책임자다. 서버 down이나 구현 drift를 Service-Ops 알림으로 방치하지 않고 복구/핫픽스 owner를 지정한다.
36
+ - `CQO`: 품질, 회귀, 검증 기준 책임자다. evidence 없는 PASS, 낙관론, 미검증 복구 주장을 통과시키지 않는다.
37
+ - `Service-Ops`: 운영 신호, KPI, incident, monitor cadence 책임자다. 경고를 혼자 남기고 끝내지 않고 meeting-manager를 통해 CTO/CQO action으로 연결한다.
38
+ - `Meeting-Manager`: 임원 회의를 소집/기록/디스패치한다. 회의록에는 각 role의 Position, Evidence, Action이 있어야 한다.
39
+ - **Autonomy rule**: 최초 GOAL 이후 Owner 입력은 interrupt/additional request다. 회사는 `waiting_owner`로 멈추지 않고 `meeting-manager`와 `conductor`를 통해 다음 내부 owner로 진행한다.
40
+ - **Evidence rule**: "회의했다"는 `.harness/actions/meetings/<id>/meeting-<id>.md`에 임원별 입장, 토론, decision JSON, action items가 있을 때만 말할 수 있다.
@@ -20,3 +20,19 @@ docmeta:
20
20
  > `### [G-NNN]` 항목을 append 합니다. 사용자가 직접 편집해도 무방합니다.
21
21
 
22
22
  <!-- 항목이 추가되면 아래에 기록됩니다 -->
23
+
24
+ ### [G-001] Team mode 큐 누락 금지
25
+
26
+ - Status: verified
27
+ - Date: 2026-05-08
28
+ - Trigger: `progress.json.mode == "team"` 인데 `.harness/actions/feature-queue.json` 이 없거나 teams 가 모두 idle 인 채 단일 `next_agent` 만 진행
29
+ - Rule: Team mode 진입 시 반드시 `scripts/harness-queue-manager.sh init|recover` 로 queue 를 준비하고, `auto-dispatch` 결과의 모든 pair 를 background worker 로 spawn 해야 한다. tmux monitor 만 띄우고 worker spawn 없이 종료하면 실패다.
30
+ - Evidence: okx/seller 최신 배포본에서 `mode=team` 이지만 `feature-queue.json` 이 없어 병렬 worker 가 시작될 수 없었다.
31
+
32
+ ### [G-002] Parallel tracks 직렬화 금지
33
+
34
+ - Status: verified
35
+ - Date: 2026-05-08
36
+ - Trigger: `tracks.length >= 2` 인 회의 결정 후 첫 트랙만 running, 나머지는 pending 으로 두고 완료 후 다음 트랙을 dispatch
37
+ - Rule: parallel tracks 는 같은 tick 에 모든 독립 트랙을 running/spawn 대상으로 노출해야 한다. 완료 순서만 rendezvous 에서 join 하며, dispatch 자체를 sequence 로 만들면 안 된다.
38
+ - Evidence: v6.2 fork-join 문서와 달리 conductor 구현/meeting-manager 문구가 “첫 번째 트랙 완료 후 다음 pending” 형태로 남아 있었다.
@@ -20,3 +20,19 @@ docmeta:
20
20
  > `### [G-NNN]` 항목을 append 합니다. 사용자가 직접 편집해도 무방합니다.
21
21
 
22
22
  <!-- 항목이 추가되면 아래에 기록됩니다 -->
23
+
24
+ ### [G-001] Owner GOAL 반복 확인 질문 금지
25
+
26
+ - Status: verified
27
+ - Date: 2026-05-08
28
+ - Trigger: Owner 가 이미 GOAL 을 명시했거나 `.harness/actions/pipeline.json`, `.harness/actions/goals.md`, `AGENTS.md Active dispatch` 중 하나가 현재 목표를 설명하는데도 “어떤 방식으로 진행할까요”, “다음 단계로 갈까요”, “브레인스토밍할까요”를 반복 질문
29
+ - Rule: GOAL 이 존재하면 합리적 해석으로 회사 루프를 진행한다. 질문은 GOAL 자체가 상호 배타적인 두 방향으로 해석되어 자동 선택이 위험할 때 한 번만 허용한다.
30
+ - Evidence: okx/seller에서 Owner가 목표를 준 뒤에도 같은 성격의 확인 질문이 3회 반복되어 “알아서 동작하는 회사” 모델을 깨뜨렸다.
31
+
32
+ ### [G-SYS-ROLE-CONTRACT-NOT-PROMPT-ONLY] 역할 계약을 일회성 프롬프트에만 넣지 말 것
33
+
34
+ - Status: verified
35
+ - Date: 2026-05-10
36
+ - Trigger: CEO/COO/CTO/CQO/Service-Ops가 각자 해야 할 일과 금지 사항을 이해하지 못하는데, 이를 개별 wake prompt나 회의 템플릿에만 임시로 적어 하위 에이전트에 자동 적용되지 않음.
37
+ - Rule: 회사 구조, 자율 구조, 역할별 해야 할 일/하면 안 되는 일은 하네스 공통 convention/gotcha/memory에 들어가야 한다. 개별 프롬프트는 이 SoT를 읽게 해야 하며, SoT 자체를 대체하면 안 된다.
38
+ - Fix: 구조적 규칙은 `conventions/shared.md`, 역할별 실수는 `gotchas/<role>.md`, 모든 에이전트 공통 교훈은 `memory.md`에 시스템 entry로 승격한다.
@@ -20,3 +20,11 @@ docmeta:
20
20
  > `### [G-NNN]` 항목을 append 합니다. 사용자가 직접 편집해도 무방합니다.
21
21
 
22
22
  <!-- 항목이 추가되면 아래에 기록됩니다 -->
23
+
24
+ ### [G-SYS-MINUTES-NOT-OPS-TABLE] 회의록을 Service-Ops 상태표로 대체하지 말 것
25
+
26
+ - Status: verified
27
+ - Date: 2026-05-10
28
+ - Trigger: hourly report 또는 meeting record가 서버 health table, queue 상태, "continue loop" 한 줄만 남기고 CEO/COO/CTO/CQO/Service-Ops가 무엇을 논의했는지 보여주지 않음.
29
+ - Rule: Meeting-Manager의 산출물은 운영 리포트가 아니라 임원 회의록이다. `## Role Briefs` 또는 `## Required Role Positions`에 Dispatcher/CEO, Planner/COO, CTO, CQO, Service-Ops 전원의 Position/Evidence/Action이 있어야 하며, `## Discussion`, `## Decision JSON`, `## Action Items`가 없으면 회의 완료로 보고하지 않는다.
30
+ - Fix: Service-Ops health table은 evidence로만 넣고, 토론과 decision owner/action_type으로 내부 실행 owner를 지정한다.
@@ -20,3 +20,11 @@ docmeta:
20
20
  > `### [G-NNN]` 항목을 append 합니다. 사용자가 직접 편집해도 무방합니다.
21
21
 
22
22
  <!-- 항목이 추가되면 아래에 기록됩니다 -->
23
+
24
+ ### [G-SYS-ALERT-MUST-BECOME-MEETING-ACTION] 운영 경고를 혼자 남기고 끝내지 말 것
25
+
26
+ - Status: verified
27
+ - Date: 2026-05-10
28
+ - Trigger: Service-Ops가 서버 down, health fail, KPI drift를 감지했지만 ops-report만 쓰고 CTO/CQO/Meeting-Manager action으로 연결하지 않음.
29
+ - Rule: Service-Ops의 경고는 최종 산출물이 아니라 회의 evidence다. red-alert/down/degraded가 있으면 incident-war-room 또는 followup-review를 요구하고, CTO runtime-recovery action과 CQO evidence gate가 회의록에 남도록 해야 한다.
30
+ - Fix: `.service_ops.incident.open[]`, ops-report path, health table을 evidence로 제출하고 `.meetings.requested_type`/`.meetings.requested_reason` 또는 meeting decision을 통해 다음 owner를 지정한다.