@cleocode/core 2026.4.5 → 2026.4.6

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 (144) hide show
  1. package/dist/discovery.d.ts +69 -0
  2. package/dist/discovery.d.ts.map +1 -0
  3. package/dist/index.d.ts +3 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1643 -2349
  6. package/dist/index.js.map +4 -4
  7. package/dist/init.d.ts +51 -0
  8. package/dist/init.d.ts.map +1 -1
  9. package/dist/internal.d.ts +9 -1
  10. package/dist/internal.d.ts.map +1 -1
  11. package/dist/lifecycle/default-chain.d.ts +8 -2
  12. package/dist/lifecycle/default-chain.d.ts.map +1 -1
  13. package/dist/lifecycle/index.d.ts +1 -0
  14. package/dist/lifecycle/index.d.ts.map +1 -1
  15. package/dist/lifecycle/stage-guidance.d.ts +140 -0
  16. package/dist/lifecycle/stage-guidance.d.ts.map +1 -0
  17. package/dist/orchestration/protocol-validators.d.ts +122 -3
  18. package/dist/orchestration/protocol-validators.d.ts.map +1 -1
  19. package/dist/paths.d.ts +91 -0
  20. package/dist/paths.d.ts.map +1 -1
  21. package/dist/scaffold.d.ts +31 -1
  22. package/dist/scaffold.d.ts.map +1 -1
  23. package/dist/skills/dispatch.d.ts +1 -1
  24. package/dist/skills/skill-paths.d.ts +9 -6
  25. package/dist/skills/skill-paths.d.ts.map +1 -1
  26. package/dist/validation/protocols/_shared.d.ts +40 -0
  27. package/dist/validation/protocols/_shared.d.ts.map +1 -0
  28. package/dist/validation/protocols/architecture-decision.d.ts +23 -0
  29. package/dist/validation/protocols/architecture-decision.d.ts.map +1 -0
  30. package/dist/validation/protocols/artifact-publish.d.ts +22 -0
  31. package/dist/validation/protocols/artifact-publish.d.ts.map +1 -0
  32. package/dist/validation/protocols/consensus.d.ts +11 -17
  33. package/dist/validation/protocols/consensus.d.ts.map +1 -1
  34. package/dist/validation/protocols/contribution.d.ts +12 -17
  35. package/dist/validation/protocols/contribution.d.ts.map +1 -1
  36. package/dist/validation/protocols/decomposition.d.ts +18 -21
  37. package/dist/validation/protocols/decomposition.d.ts.map +1 -1
  38. package/dist/validation/protocols/implementation.d.ts +9 -17
  39. package/dist/validation/protocols/implementation.d.ts.map +1 -1
  40. package/dist/validation/protocols/provenance.d.ts +23 -0
  41. package/dist/validation/protocols/provenance.d.ts.map +1 -0
  42. package/dist/validation/protocols/release.d.ts +25 -0
  43. package/dist/validation/protocols/release.d.ts.map +1 -0
  44. package/dist/validation/protocols/research.d.ts +9 -17
  45. package/dist/validation/protocols/research.d.ts.map +1 -1
  46. package/dist/validation/protocols/specification.d.ts +7 -17
  47. package/dist/validation/protocols/specification.d.ts.map +1 -1
  48. package/dist/validation/protocols/testing.d.ts +22 -0
  49. package/dist/validation/protocols/testing.d.ts.map +1 -0
  50. package/dist/validation/protocols/validation.d.ts +22 -0
  51. package/dist/validation/protocols/validation.d.ts.map +1 -0
  52. package/package.json +7 -7
  53. package/src/__tests__/injection-mvi-tiers.test.js +54 -90
  54. package/src/__tests__/injection-mvi-tiers.test.js.map +1 -1
  55. package/src/discovery.ts +235 -0
  56. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +3 -1
  57. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +1 -1
  58. package/src/index.ts +16 -0
  59. package/src/init.ts +196 -0
  60. package/src/internal.ts +31 -1
  61. package/src/lifecycle/default-chain.ts +11 -2
  62. package/src/lifecycle/index.ts +10 -0
  63. package/src/lifecycle/stage-guidance.ts +282 -0
  64. package/src/metrics/__tests__/provider-detection.test.js +19 -7
  65. package/src/metrics/__tests__/provider-detection.test.js.map +1 -1
  66. package/src/orchestration/__tests__/protocol-validators.test.js +228 -8
  67. package/src/orchestration/__tests__/protocol-validators.test.js.map +1 -1
  68. package/src/orchestration/__tests__/protocol-validators.test.ts +259 -7
  69. package/src/orchestration/protocol-validators.ts +419 -4
  70. package/src/paths.ts +110 -0
  71. package/src/scaffold.ts +240 -4
  72. package/src/skills/dispatch.ts +6 -6
  73. package/src/skills/skill-paths.ts +27 -23
  74. package/src/validation/protocols/_shared.ts +88 -0
  75. package/src/validation/protocols/architecture-decision.ts +52 -0
  76. package/src/validation/protocols/artifact-publish.ts +49 -0
  77. package/src/validation/protocols/consensus.ts +44 -74
  78. package/src/validation/protocols/contribution.ts +28 -65
  79. package/src/validation/protocols/decomposition.ts +37 -64
  80. package/src/validation/protocols/implementation.ts +25 -65
  81. package/src/validation/protocols/protocols-markdown/architecture-decision.md +303 -0
  82. package/src/validation/protocols/protocols-markdown/artifact-publish.md +600 -0
  83. package/src/validation/protocols/protocols-markdown/consensus.md +322 -0
  84. package/src/validation/protocols/protocols-markdown/contribution.md +388 -0
  85. package/src/validation/protocols/protocols-markdown/decomposition.md +421 -0
  86. package/src/validation/protocols/protocols-markdown/implementation.md +357 -0
  87. package/src/validation/protocols/protocols-markdown/provenance.md +613 -0
  88. package/src/validation/protocols/protocols-markdown/release.md +783 -0
  89. package/src/validation/protocols/protocols-markdown/research.md +261 -0
  90. package/src/validation/protocols/protocols-markdown/specification.md +300 -0
  91. package/src/validation/protocols/protocols-markdown/testing.md +287 -0
  92. package/src/validation/protocols/protocols-markdown/validation.md +242 -0
  93. package/src/validation/protocols/provenance.ts +50 -0
  94. package/src/validation/protocols/release.ts +44 -0
  95. package/src/validation/protocols/research.ts +25 -87
  96. package/src/validation/protocols/specification.ts +27 -89
  97. package/src/validation/protocols/testing.ts +46 -0
  98. package/src/validation/protocols/validation.ts +46 -0
  99. package/dist/validation/protocols/release-protocol.d.ts +0 -27
  100. package/dist/validation/protocols/release-protocol.d.ts.map +0 -1
  101. package/dist/validation/protocols/testing-protocol.d.ts +0 -27
  102. package/dist/validation/protocols/testing-protocol.d.ts.map +0 -1
  103. package/dist/validation/protocols/validation-protocol.d.ts +0 -27
  104. package/dist/validation/protocols/validation-protocol.d.ts.map +0 -1
  105. package/schemas/agent-configs.schema.json +0 -120
  106. package/schemas/agent-registry.schema.json +0 -132
  107. package/schemas/archive.schema.json +0 -450
  108. package/schemas/brain-decision.schema.json +0 -69
  109. package/schemas/brain-learning.schema.json +0 -57
  110. package/schemas/brain-pattern.schema.json +0 -72
  111. package/schemas/critical-path.schema.json +0 -246
  112. package/schemas/deps-cache.schema.json +0 -97
  113. package/schemas/doctor-output.schema.json +0 -283
  114. package/schemas/error.schema.json +0 -161
  115. package/schemas/global-config.schema.json +0 -219
  116. package/schemas/grade.schema.json +0 -49
  117. package/schemas/log.schema.json +0 -250
  118. package/schemas/metrics.schema.json +0 -328
  119. package/schemas/migrations.schema.json +0 -150
  120. package/schemas/nexus-registry.schema.json +0 -90
  121. package/schemas/operation-constitution.schema.json +0 -438
  122. package/schemas/output.schema.json +0 -164
  123. package/schemas/projects-registry.schema.json +0 -107
  124. package/schemas/protocol-frontmatter.schema.json +0 -72
  125. package/schemas/rcasd-consensus-report.schema.json +0 -10
  126. package/schemas/rcasd-evidence.schema.json +0 -42
  127. package/schemas/rcasd-gate-result.schema.json +0 -46
  128. package/schemas/rcasd-hitl-resolution.schema.json +0 -10
  129. package/schemas/rcasd-index.schema.json +0 -10
  130. package/schemas/rcasd-manifest.schema.json +0 -10
  131. package/schemas/rcasd-research-output.schema.json +0 -10
  132. package/schemas/rcasd-spec-frontmatter.schema.json +0 -10
  133. package/schemas/rcasd-stage-transition.schema.json +0 -38
  134. package/schemas/releases.schema.json +0 -267
  135. package/schemas/skills-manifest.schema.json +0 -91
  136. package/schemas/spec-index.schema.json +0 -196
  137. package/schemas/system-flow-atlas.schema.json +0 -125
  138. package/src/conduit/__tests__/dual-api-e2e.test.d.ts.map +0 -1
  139. package/src/conduit/__tests__/dual-api-e2e.test.js +0 -178
  140. package/src/conduit/__tests__/dual-api-e2e.test.js.map +0 -1
  141. package/src/conduit/__tests__/dual-api-e2e.test.ts +0 -212
  142. package/src/validation/protocols/release-protocol.ts +0 -80
  143. package/src/validation/protocols/testing-protocol.ts +0 -93
  144. package/src/validation/protocols/validation-protocol.ts +0 -93
@@ -0,0 +1,322 @@
1
+ ---
2
+ id: CONS
3
+ title: Consensus Protocol
4
+ version: 1.0.0
5
+ status: active
6
+ type: conditional
7
+ audience: [llm-agent, orchestrator]
8
+ tags: [consensus, voting, validation]
9
+ skillRef: ct-consensus-voter
10
+ lastUpdated: 2026-04-07
11
+ enforcement: strict
12
+ ---
13
+
14
+ # Consensus Protocol
15
+
16
+ **Provenance**: @task T3155, @epic T3147
17
+ **Version**: 1.0.1
18
+ **Type**: Conditional Protocol
19
+ **Max Active**: 3 protocols (including base)
20
+
21
+ ---
22
+
23
+ ## Trigger Conditions
24
+
25
+ This protocol activates when the task involves:
26
+
27
+ | Trigger | Keywords | Context |
28
+ |---------|----------|---------|
29
+ | Decision Making | "vote", "decide", "choose", "select" | Multi-option choice |
30
+ | Agreement | "consensus", "agree", "alignment" | Stakeholder coordination |
31
+ | Conflict Resolution | "resolve", "dispute", "conflict" | Opposing positions |
32
+ | Validation | "validate claim", "verify assertion" | Evidence-based judgment |
33
+
34
+ **Explicit Override**: `--protocol consensus` flag on task creation.
35
+
36
+ ---
37
+
38
+ ## Requirements (RFC 2119)
39
+
40
+ ### MUST
41
+
42
+ | Requirement | Description |
43
+ |-------------|-------------|
44
+ | CONS-001 | MUST use structured voting format |
45
+ | CONS-002 | MUST document rationale for each position |
46
+ | CONS-003 | MUST include confidence scores (0.0-1.0) |
47
+ | CONS-004 | MUST cite evidence supporting positions |
48
+ | CONS-005 | MUST flag conflicts with severity levels |
49
+ | CONS-006 | MUST escalate to HITL when threshold not reached |
50
+ | CONS-007 | MUST set `agent_type: "analysis"` in manifest |
51
+
52
+ ### SHOULD
53
+
54
+ | Requirement | Description |
55
+ |-------------|-------------|
56
+ | CONS-010 | SHOULD present multiple perspectives |
57
+ | CONS-011 | SHOULD identify hidden assumptions |
58
+ | CONS-012 | SHOULD document rejected alternatives |
59
+ | CONS-013 | SHOULD include uncertainty notes for low confidence |
60
+
61
+ ### MAY
62
+
63
+ | Requirement | Description |
64
+ |-------------|-------------|
65
+ | CONS-020 | MAY propose compromise positions |
66
+ | CONS-021 | MAY defer non-critical decisions |
67
+ | CONS-022 | MAY request additional research |
68
+
69
+ ---
70
+
71
+ ## Output Format
72
+
73
+ ### Voting Structure
74
+
75
+ ```json
76
+ {
77
+ "questionId": "CONS-001",
78
+ "question": "Decision question being answered",
79
+ "options": [
80
+ {
81
+ "option": "Option A description",
82
+ "vote": "accept|reject|abstain",
83
+ "confidence": 0.85,
84
+ "rationale": "Why this position",
85
+ "evidence": [{"file": "path", "section": "name", "type": "code"}]
86
+ }
87
+ ],
88
+ "verdict": "PROVEN|REFUTED|CONTESTED|INSUFFICIENT_EVIDENCE",
89
+ "consensusThreshold": 0.8,
90
+ "actualConsensus": 0.75
91
+ }
92
+ ```
93
+
94
+ ### Verdict Thresholds
95
+
96
+ | Verdict | Threshold | Evidence Requirement |
97
+ |---------|-----------|---------------------|
98
+ | **PROVEN** | 3/5 agents OR 50%+ weighted confidence | Reproducible evidence |
99
+ | **REFUTED** | Counter-evidence invalidates | Counter-proof exists |
100
+ | **CONTESTED** | 3/5 split after 2 challenge rounds | Document both sides |
101
+ | **INSUFFICIENT_EVIDENCE** | Cannot reach verdict | Request investigation |
102
+
103
+ ### Conflict Structure
104
+
105
+ ```json
106
+ {
107
+ "conflictId": "conflict_a1b2c3d4",
108
+ "severity": "critical|high|medium|low",
109
+ "conflictType": "contradiction|partial-overlap|scope-difference|priority-difference",
110
+ "positions": [
111
+ {"agentId": "opus-1", "position": "Position A", "confidence": 0.85},
112
+ {"agentId": "sonnet-1", "position": "Position B", "confidence": 0.75}
113
+ ],
114
+ "resolution": {
115
+ "status": "pending|proposed|accepted|rejected",
116
+ "resolutionType": "merge|choose-a|choose-b|new|defer|escalate"
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### File Output
122
+
123
+ ```markdown
124
+ # Consensus Report: {Decision Title}
125
+
126
+ **Task**: T####
127
+ **Date**: YYYY-MM-DD
128
+ **Status**: complete|partial|blocked
129
+ **Agent Type**: analysis
130
+
131
+ ---
132
+
133
+ ## Decision Question
134
+
135
+ {Clear statement of what needs to be decided}
136
+
137
+ ## Options Evaluated
138
+
139
+ ### Option A: {Name}
140
+
141
+ **Confidence**: X.XX
142
+ **Rationale**: {Why this option}
143
+ **Evidence**: {Citations}
144
+ **Pros**: {Advantages}
145
+ **Cons**: {Disadvantages}
146
+
147
+ ### Option B: {Name}
148
+
149
+ {Same structure}
150
+
151
+ ## Voting Matrix
152
+
153
+ | Agent | Option A | Option B | Confidence | Notes |
154
+ |-------|----------|----------|------------|-------|
155
+ | opus-1 | Accept | - | 0.85 | {Rationale} |
156
+ | sonnet-1 | - | Accept | 0.70 | {Rationale} |
157
+
158
+ ## Verdict
159
+
160
+ **Result**: {PROVEN|REFUTED|CONTESTED|INSUFFICIENT_EVIDENCE}
161
+ **Consensus**: {X}% weighted agreement
162
+ **Recommendation**: {Final recommendation}
163
+
164
+ ## Conflicts
165
+
166
+ {If any conflicts exist}
167
+
168
+ ## Next Steps
169
+
170
+ 1. {Action item}
171
+ ```
172
+
173
+ ### Manifest Entry
174
+
175
+ @skills/_shared/manifest-operations.md
176
+
177
+ Use `cleo research add` to create the manifest entry:
178
+
179
+ ```bash
180
+ cleo research add \
181
+ --title "Consensus: Decision Title" \
182
+ --file "YYYY-MM-DD_consensus.md" \
183
+ --topics "consensus,decision" \
184
+ --findings "Verdict reached,Option A selected,80% confidence" \
185
+ --status complete \
186
+ --task T#### \
187
+ --actionable \
188
+ --agent-type analysis
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Integration Points
194
+
195
+ ### Base Protocol
196
+
197
+ - Inherits task lifecycle (start, execute, complete)
198
+ - Inherits manifest append requirement
199
+ - Inherits error handling patterns
200
+
201
+ ### Protocol Interactions
202
+
203
+ | Combined With | Behavior |
204
+ |---------------|----------|
205
+ | research | Research provides evidence for voting |
206
+ | specification | Consensus resolves spec ambiguities |
207
+ | contribution | Consensus validates contributions |
208
+
209
+ ### HITL Escalation
210
+
211
+ | Condition | Action |
212
+ |-----------|--------|
213
+ | Contested verdict (3/5 split) | Present conflict to user |
214
+ | Critical severity conflict | Immediate escalation |
215
+ | Insufficient evidence | Request user guidance |
216
+ | Unanimous suspicious consensus | Verify with user |
217
+
218
+ ---
219
+
220
+ ## Example
221
+
222
+ **Task**: Decide on codebase map architecture
223
+
224
+ **Manifest Entry Command**:
225
+ ```bash
226
+ cleo research add \
227
+ --title "Consensus: Codebase Map Architecture" \
228
+ --file "2026-01-26_arch-consensus.md" \
229
+ --topics "architecture,consensus,codebase-map" \
230
+ --findings "Single file selected over split,4/5 agents agree,Atomic operations priority" \
231
+ --status complete \
232
+ --task T2216 \
233
+ --epic T2204 \
234
+ --actionable \
235
+ --needs-followup T2217 \
236
+ --agent-type analysis
237
+ ```
238
+
239
+ ---
240
+
241
+ ## Integration
242
+
243
+ ### Implementation Location
244
+
245
+ **Library**: `lib/contribution-protocol.sh`
246
+
247
+ **Primary Function**: `contribution_compute_consensus(epic_id, [manifest_path])`
248
+ - Loads complete contributions for epic
249
+ - Groups decisions by question ID across contributions
250
+ - Runs weighted voting per question
251
+ - Classifies: unanimous/majority = resolved, split = unresolved
252
+ - Flags unresolved questions for HITL review
253
+
254
+ **Supporting Functions**:
255
+ - `contribution_weighted_vote(votes_json)` - Calculates weighted consensus
256
+ - `contribution_create_synthesis(consensus_json, epic_id)` - Creates Markdown synthesis
257
+
258
+ ### CLI Usage
259
+
260
+ **Note**: No dedicated `cleo consensus` command exists yet. Consensus computation is invoked programmatically through the contribution workflow.
261
+
262
+ **Programmatic Usage**:
263
+ ```bash
264
+ source lib/contribution-protocol.sh
265
+
266
+ # Compute consensus for an epic
267
+ consensus=$(contribution_compute_consensus "T2679")
268
+
269
+ # Extract resolved/unresolved questions
270
+ resolved=$(echo "$consensus" | jq '.resolvedQuestions')
271
+ unresolved=$(echo "$consensus" | jq '.unresolvedQuestions')
272
+ ```
273
+
274
+ ### Orchestrator Integration
275
+
276
+ **Spawn Context**: When spawning consensus agents via orchestrator:
277
+
278
+ ```bash
279
+ # Orchestrator detects consensus protocol from task labels
280
+ protocol_type=$(_osp_skill_to_protocol "ct-validator") # Returns "consensus"
281
+
282
+ # Validates consensus requirements before spawn
283
+ validate_consensus_protocol "$task_id" "$manifest_entry" "$voting_matrix" "false"
284
+
285
+ # Blocks spawn if:
286
+ # - Voting matrix has <2 options (CONS-001)
287
+ # - Confidence scores invalid (CONS-003)
288
+ # - Top confidence below 50% threshold (CONS-004)
289
+ # - agent_type not "analysis" (CONS-007)
290
+ ```
291
+
292
+ **Exit Codes**:
293
+ - `EXIT_PROTOCOL_CONSENSUS` (61) - Consensus protocol violation
294
+ - `EXIT_PROTOCOL_GENERIC` (67) - Generic protocol error
295
+
296
+ ### Validation Hook
297
+
298
+ **Function**: `validate_consensus_protocol(task_id, manifest_entry, voting_matrix, strict)`
299
+
300
+ **Location**: `lib/protocol-validation.sh`
301
+
302
+ **Validates**:
303
+ - CONS-001: ≥2 options in voting matrix
304
+ - CONS-003: Confidence scores 0.0-1.0
305
+ - CONS-004: Top confidence ≥50% threshold
306
+ - CONS-007: agent_type = "analysis"
307
+
308
+ ---
309
+
310
+ ## Anti-Patterns
311
+
312
+ | Pattern | Why Avoid |
313
+ |---------|-----------|
314
+ | Accepting unanimous consensus without scrutiny | May indicate groupthink |
315
+ | Skipping evidence citations | Decisions lack foundation |
316
+ | Binary voting without confidence | Loses nuance |
317
+ | Ignoring minority positions | May miss valid concerns |
318
+ | Premature escalation | Wastes human attention |
319
+
320
+ ---
321
+
322
+ *Protocol Version 1.0.0 - Consensus Protocol*
@@ -0,0 +1,388 @@
1
+ ---
2
+ id: CONT
3
+ title: Contribution Protocol
4
+ version: 1.0.0
5
+ status: active
6
+ type: cross-cutting
7
+ audience: [llm-agent, orchestrator]
8
+ tags: [contribution, commit, pr]
9
+ skillRef: ct-contribution
10
+ lastUpdated: 2026-02-24
11
+ enforcement: strict
12
+ ---
13
+
14
+ # Contribution Protocol
15
+
16
+ **Provenance**: @task T3155, @epic T3147
17
+ **Version**: 1.1.1
18
+ **Type**: Cross-Cutting Protocol
19
+ **Applies To**: All RCASD-IVTR+C stages
20
+ **Max Active**: 3 protocols (including base)
21
+
22
+ > **Cross-Cutting Nature**: This protocol applies across ALL stages of RCASD-IVTR+C.
23
+ > Unlike stage-specific protocols (research, consensus, etc.), contribution
24
+ > tracking is active whenever multi-agent coordination or attribution is needed.
25
+
26
+ ---
27
+
28
+ ## Trigger Conditions
29
+
30
+ This protocol activates when the task involves:
31
+
32
+ | Trigger | Keywords | Context |
33
+ |---------|----------|---------|
34
+ | Shared File Modification | Modifying CLAUDE.md, AGENTS.md, shared configs | Multi-session files |
35
+ | PR Creation | "pull request", "PR", "merge request" | Code review workflow |
36
+ | Cross-Session Work | Multiple agents on same epic | Coordination needed |
37
+ | Audit Trail | Provenance, attribution, tracking | Accountability |
38
+
39
+ **Explicit Override**: `--protocol contribution` flag on task creation.
40
+
41
+ ---
42
+
43
+ ## Requirements (RFC 2119)
44
+
45
+ ### MUST
46
+
47
+ | Requirement | Description |
48
+ |-------------|-------------|
49
+ | CONT-001 | MUST follow commit message conventions |
50
+ | CONT-002 | MUST include provenance tags in code comments |
51
+ | CONT-003 | MUST pass all validation gates before merge |
52
+ | CONT-004 | MUST document decisions with rationale |
53
+ | CONT-005 | MUST flag conflicts with other sessions |
54
+ | CONT-006 | MUST write contribution record to manifest |
55
+ | CONT-007 | MUST set `agent_type: "implementation"` in manifest |
56
+
57
+ ### SHOULD
58
+
59
+ | Requirement | Description |
60
+ |-------------|-------------|
61
+ | CONT-010 | SHOULD include test coverage for changes |
62
+ | CONT-011 | SHOULD link to related tasks and research |
63
+ | CONT-012 | SHOULD document rejected alternatives |
64
+ | CONT-013 | SHOULD request review for significant changes |
65
+
66
+ ### MAY
67
+
68
+ | Requirement | Description |
69
+ |-------------|-------------|
70
+ | CONT-020 | MAY batch related changes into single contribution |
71
+ | CONT-021 | MAY defer documentation updates |
72
+ | CONT-022 | MAY propose follow-up improvements |
73
+
74
+ ---
75
+
76
+ ## Output Format
77
+
78
+ ### Commit Message Format
79
+
80
+ ```
81
+ <type>(<scope>): <summary>
82
+
83
+ <body>
84
+
85
+ <footer>
86
+
87
+ Co-Authored-By: <agent-id> <noreply@anthropic.com>
88
+ Task: T####
89
+ Session: session_YYYYMMDD_HHMMSS_######
90
+ ```
91
+
92
+ **Types**: `feat`, `fix`, `docs`, `test`, `refactor`, `chore`, `perf`
93
+
94
+ ### Provenance Tag Format
95
+
96
+ ```javascript
97
+ /**
98
+ * @task T####
99
+ * @session session_YYYYMMDD_HHMMSS_######
100
+ * @agent opus-1
101
+ * @date YYYY-MM-DD
102
+ */
103
+ ```
104
+
105
+ ```bash
106
+ # Task: T####
107
+ # Session: session_YYYYMMDD_HHMMSS_######
108
+ # Agent: opus-1
109
+ ```
110
+
111
+ ### Contribution Record
112
+
113
+ ```json
114
+ {
115
+ "$schema": "https://cleo-dev.com/schemas/v1/contribution.schema.json",
116
+ "_meta": {
117
+ "contributionId": "contrib_a1b2c3d4",
118
+ "createdAt": "2026-01-26T14:00:00Z",
119
+ "agentId": "opus-1"
120
+ },
121
+ "sessionId": "session_20260126_140000_abc123",
122
+ "epicId": "T2308",
123
+ "taskId": "T2315",
124
+ "markerLabel": "feature-contrib",
125
+ "decisions": [
126
+ {
127
+ "questionId": "IMPL-001",
128
+ "question": "Decision made during implementation",
129
+ "answer": "Concrete decision value",
130
+ "confidence": 0.85,
131
+ "rationale": "Why this decision",
132
+ "evidence": [{"file": "path", "section": "name", "type": "code"}]
133
+ }
134
+ ],
135
+ "conflicts": [],
136
+ "status": "complete"
137
+ }
138
+ ```
139
+
140
+ ### Validation Gates
141
+
142
+ | Gate | Check | Required |
143
+ |------|-------|----------|
144
+ | Schema | JSON Schema validation | MUST pass |
145
+ | Tests | All tests pass | MUST pass |
146
+ | Lint | Code style compliance | SHOULD pass |
147
+ | Security | No secrets committed | MUST pass |
148
+ | Conflicts | No unresolved conflicts | MUST resolve |
149
+
150
+ ### File Output
151
+
152
+ ```markdown
153
+ # Contribution: {Title}
154
+
155
+ **Task**: T####
156
+ **Date**: YYYY-MM-DD
157
+ **Status**: complete|partial|blocked
158
+ **Agent Type**: implementation
159
+
160
+ ---
161
+
162
+ ## Summary
163
+
164
+ {2-3 sentence summary of contribution}
165
+
166
+ ## Changes
167
+
168
+ ### Files Modified
169
+
170
+ | File | Type | Lines Changed |
171
+ |------|------|---------------|
172
+ | {path} | {added|modified|deleted} | +X/-Y |
173
+
174
+ ### Decisions Made
175
+
176
+ | ID | Decision | Rationale |
177
+ |----|----------|-----------|
178
+ | IMPL-001 | {Decision} | {Why} |
179
+
180
+ ## Validation Results
181
+
182
+ | Gate | Status | Notes |
183
+ |------|--------|-------|
184
+ | Tests | Pass | All 42 tests pass |
185
+ | Lint | Pass | No warnings |
186
+ | Schema | Pass | Valid JSON |
187
+
188
+ ## Conflicts
189
+
190
+ {If any, document with resolution}
191
+
192
+ ## Review Checklist
193
+
194
+ - [ ] Code follows style guide
195
+ - [ ] Tests added/updated
196
+ - [ ] Documentation updated
197
+ - [ ] No breaking changes (or documented)
198
+ ```
199
+
200
+ ### Manifest Entry
201
+
202
+ @skills/_shared/manifest-operations.md
203
+
204
+ Use `cleo research add` to create the manifest entry:
205
+
206
+ ```bash
207
+ cleo research add \
208
+ --title "Contribution: Feature Name" \
209
+ --file "YYYY-MM-DD_contribution.md" \
210
+ --topics "contribution,feature" \
211
+ --findings "3 files modified,Tests passing,No conflicts" \
212
+ --status complete \
213
+ --task T#### \
214
+ --not-actionable \
215
+ --agent-type implementation
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Implementation Integration
221
+
222
+ ### Automatic Tracking
223
+
224
+ **Status**: Not yet implemented
225
+
226
+ **Planned**: Integrate with `cleo complete` to automatically track contributions
227
+ - Detect PR/merge commits in task completion
228
+ - Extract contribution metadata from commit messages
229
+ - Append to `.cleo/contributions/CONTRIBUTIONS.jsonl`
230
+ - Link contribution to completed task
231
+
232
+ **Future CLI**:
233
+ ```bash
234
+ cleo complete T1234 # Auto-detects contribution if task has linked PR
235
+ ```
236
+
237
+ ### Manual Tracking
238
+
239
+ **Status**: Not yet implemented
240
+
241
+ **Planned**: Dedicated contribution tracking command
242
+
243
+ **Future CLI**:
244
+ ```bash
245
+ cleo contribution track --task T1234 --pr-number 456
246
+ cleo contribution list --epic T2000
247
+ cleo contribution show T1234-contrib
248
+ ```
249
+
250
+ ### Implementation Location
251
+
252
+ **Library**: `lib/contribution-protocol.sh`
253
+
254
+ **Key Functions** (for future integration):
255
+ - `contribution_create()` - Record contribution metadata
256
+ - `contribution_track_from_task()` - Extract contribution from task
257
+ - `contribution_validate()` - Validate contribution structure
258
+ - `contribution_compute_consensus()` - Compute consensus from contributions
259
+
260
+ ### Current State
261
+
262
+ Contribution protocol is **specification-only** (no enforcement yet). Implementation tracking requires:
263
+ 1. Git integration for PR detection
264
+ 2. Contribution manifest system
265
+ 3. CLI commands for manual tracking
266
+ 4. Orchestrator integration for multi-agent contributions
267
+
268
+ **Validation**: See `validate_contribution_protocol()` in `lib/protocol-validation.sh`
269
+ - CONT-002: Provenance tags required
270
+ - CONT-003: Tests must pass
271
+ - CONT-007: agent_type = "implementation"
272
+ - Exit code: `EXIT_PROTOCOL_CONTRIBUTION` (65)
273
+
274
+ ---
275
+
276
+ ## Integration Points
277
+
278
+ ### Base Protocol
279
+
280
+ - Inherits task lifecycle (start, execute, complete)
281
+ - Inherits manifest append requirement
282
+ - Inherits error handling patterns
283
+
284
+ ### Protocol Interactions
285
+
286
+ | Combined With | Behavior |
287
+ |---------------|----------|
288
+ | implementation | Contribution tracks implementation work |
289
+ | consensus | Consensus resolves contribution conflicts |
290
+ | release | Contribution records feed release notes |
291
+
292
+ ### Conflict Detection
293
+
294
+ | Conflict Type | Detection | Resolution |
295
+ |---------------|-----------|------------|
296
+ | Same file edit | File path collision | Merge or choose |
297
+ | Semantic conflict | Decision contradiction | Consensus protocol |
298
+ | Dependency conflict | Breaking change | Escalate to HITL |
299
+
300
+ ---
301
+
302
+ ## Example
303
+
304
+ **Task**: Implement session binding for multi-agent support
305
+
306
+ **Commit**:
307
+ ```
308
+ feat(session): Add session binding for multi-agent support
309
+
310
+ Implements session isolation per agent with TTY binding
311
+ for terminal-based sessions and env var fallback for
312
+ headless operations.
313
+
314
+ - Add session binding file management
315
+ - Implement CLEO_SESSION env var support
316
+ - Add session switch command
317
+
318
+ Co-Authored-By: opus-1 <noreply@anthropic.com>
319
+ Task: T2315
320
+ Session: session_20260126_140000_abc123
321
+ ```
322
+
323
+ **Manifest Entry**:
324
+ ```json
325
+ {"id":"T2315-session-binding","file":"2026-01-26_session-binding.md","title":"Contribution: Session Binding","date":"2026-01-26","status":"complete","agent_type":"implementation","topics":["session","multi-agent","binding"],"key_findings":["TTY binding implemented","Env var fallback added","4 new tests"],"actionable":false,"needs_followup":[],"linked_tasks":["T2315","T2308"]}
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Provenance Validation
331
+
332
+ ### Overview
333
+
334
+ Contribution protocol inherits provenance requirements from implementation protocol (IMPL-003), with identical enforcement mechanisms.
335
+
336
+ **Requirement**: CONT-002 = IMPL-003 (Provenance tags required)
337
+
338
+ ### Pre-Commit Hook
339
+
340
+ Same as Implementation Protocol:
341
+ - Extract @task tags from commit diff
342
+ - Calculate provenance coverage: 100% new, 80% existing, 50% legacy
343
+ - Block commit if thresholds not met
344
+ - Exit code: `EXIT_PROTOCOL_CONTRIBUTION` (65)
345
+
346
+ ### Runtime Validation
347
+
348
+ **Current**: Available via `validate_contribution_protocol()` in `lib/protocol-validation.sh`
349
+
350
+ **Planned CLI**: `cleo contribution validate [--task TASK_ID]`
351
+
352
+ **Checks**:
353
+ - CONT-002: Provenance tags present
354
+ - CONT-003: Tests pass
355
+ - CONT-007: agent_type = "implementation"
356
+
357
+ ### Shared Thresholds
358
+
359
+ Identical to implementation protocol:
360
+
361
+ | Code Category | Provenance Requirement |
362
+ |---------------|------------------------|
363
+ | New code | 100% |
364
+ | Existing code | 80% |
365
+ | Legacy code | 50% |
366
+
367
+ ### Enforcement Points
368
+
369
+ 1. **Pre-commit**: Shared with implementation protocol
370
+ 2. **Pre-merge**: PR validation checks provenance
371
+ 3. **Runtime**: `cleo complete` validates contribution tasks
372
+ 4. **Orchestrator**: Validates before spawning contribution agents
373
+
374
+ ---
375
+
376
+ ## Anti-Patterns
377
+
378
+ | Pattern | Why Avoid |
379
+ |---------|-----------|
380
+ | Committing without provenance | Breaks audit trail |
381
+ | Skipping validation gates | Quality regression |
382
+ | Ignoring conflicts | Creates merge debt |
383
+ | Large unfocused commits | Hard to review/revert |
384
+ | Missing decision documentation | Lost context |
385
+
386
+ ---
387
+
388
+ *Protocol Version 1.0.0 - Contribution Protocol*