cohorte 2.10.1 → 3.0.0-dev.0

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 (211) hide show
  1. package/README.md +7 -0
  2. package/assets/manifest.json +193 -0
  3. package/assets/migrations/config/README.md +12 -0
  4. package/assets/migrations/state/0001_init.sql +154 -0
  5. package/assets/prompts/README.md +11 -0
  6. package/assets/prompts/agents/fixer.md +7 -0
  7. package/assets/prompts/agents/implementer.md +12 -0
  8. package/assets/prompts/agents/reviewer.md +8 -0
  9. package/assets/prompts/agents/security-reviewer.md +7 -0
  10. package/assets/prompts/phases/build.md +5 -0
  11. package/assets/prompts/phases/review.md +5 -0
  12. package/assets/prompts/phases/test.md +5 -0
  13. package/assets/prompts/system.md +11 -0
  14. package/assets/schemas/agent-output.schema.json +225 -0
  15. package/assets/schemas/auth-status.schema.json +87 -0
  16. package/assets/schemas/command-result.schema.json +192 -0
  17. package/assets/schemas/commands.schema.json +952 -0
  18. package/assets/schemas/config.schema.json +2259 -0
  19. package/assets/schemas/doctor-report.schema.json +104 -0
  20. package/assets/schemas/events.schema.json +8514 -0
  21. package/assets/schemas/fake-script.schema.json +549 -0
  22. package/assets/schemas/inspect.schema.json +3133 -0
  23. package/assets/schemas/manifest.schema.json +79 -0
  24. package/assets/schemas/ownership.schema.json +52 -0
  25. package/assets/schemas/policy-verdict.schema.json +282 -0
  26. package/assets/schemas/project-model.schema.json +783 -0
  27. package/assets/schemas/project-status.schema.json +217 -0
  28. package/assets/schemas/reconcile-plan.schema.json +155 -0
  29. package/assets/schemas/run-diff.schema.json +177 -0
  30. package/assets/schemas/run-snapshot-manifest.schema.json +2104 -0
  31. package/assets/schemas/run-state.schema.json +1755 -0
  32. package/assets/schemas/runtime-capabilities.schema.json +1545 -0
  33. package/assets/schemas/sandbox-capabilities.schema.json +116 -0
  34. package/assets/schemas/skill.schema.json +87 -0
  35. package/assets/schemas/spec.schema.json +202 -0
  36. package/assets/schemas/tool-catalogue.schema.json +655 -0
  37. package/assets/schemas/trust-record.schema.json +38 -0
  38. package/assets/skills/README.md +9 -0
  39. package/assets/skills/inspect-surface.md +4 -0
  40. package/dist/agent-host.mjs +50 -0
  41. package/dist/agent-host.mjs.map +1 -0
  42. package/dist/bundle-manifest.json +102 -0
  43. package/dist/chunks/__host-DgGPyco9.mjs +18 -0
  44. package/dist/chunks/__host-DgGPyco9.mjs.map +1 -0
  45. package/dist/chunks/approve-Cv135UqI.mjs +19 -0
  46. package/dist/chunks/approve-Cv135UqI.mjs.map +1 -0
  47. package/dist/chunks/auth-BT5oVp76.mjs +132 -0
  48. package/dist/chunks/auth-BT5oVp76.mjs.map +1 -0
  49. package/dist/chunks/auth-D8rCVY33.mjs +84 -0
  50. package/dist/chunks/auth-D8rCVY33.mjs.map +1 -0
  51. package/dist/chunks/brainstorm-CU10T1tm.mjs +7 -0
  52. package/dist/chunks/brainstorm-CU10T1tm.mjs.map +1 -0
  53. package/dist/chunks/cancel-KV_cpsqS.mjs +15 -0
  54. package/dist/chunks/cancel-KV_cpsqS.mjs.map +1 -0
  55. package/dist/chunks/canonical-C8UxeEmB.mjs +57 -0
  56. package/dist/chunks/canonical-C8UxeEmB.mjs.map +1 -0
  57. package/dist/chunks/catalogue-BvwSrM_j.mjs +1549 -0
  58. package/dist/chunks/catalogue-BvwSrM_j.mjs.map +1 -0
  59. package/dist/chunks/compose-Cr0hP0qm.mjs +7303 -0
  60. package/dist/chunks/compose-Cr0hP0qm.mjs.map +1 -0
  61. package/dist/chunks/config-DefHA2Lw.mjs +96 -0
  62. package/dist/chunks/config-DefHA2Lw.mjs.map +1 -0
  63. package/dist/chunks/contract-B0ra2-bm.mjs +295 -0
  64. package/dist/chunks/contract-B0ra2-bm.mjs.map +1 -0
  65. package/dist/chunks/contract-vYbwYr0Y.mjs +123 -0
  66. package/dist/chunks/contract-vYbwYr0Y.mjs.map +1 -0
  67. package/dist/chunks/deny-ClTxSvHJ.mjs +15 -0
  68. package/dist/chunks/deny-ClTxSvHJ.mjs.map +1 -0
  69. package/dist/chunks/diff-Qw0II0sj.mjs +101 -0
  70. package/dist/chunks/diff-Qw0II0sj.mjs.map +1 -0
  71. package/dist/chunks/discover-30Ciya_0.mjs +20 -0
  72. package/dist/chunks/discover-30Ciya_0.mjs.map +1 -0
  73. package/dist/chunks/doctor-DfCrKpfT.mjs +222 -0
  74. package/dist/chunks/doctor-DfCrKpfT.mjs.map +1 -0
  75. package/dist/chunks/fix-D4Tj8RVA.mjs +18 -0
  76. package/dist/chunks/fix-D4Tj8RVA.mjs.map +1 -0
  77. package/dist/chunks/gc-BBXlBF5w.mjs +161 -0
  78. package/dist/chunks/gc-BBXlBF5w.mjs.map +1 -0
  79. package/dist/chunks/init-Okz4mlhW.mjs +30 -0
  80. package/dist/chunks/init-Okz4mlhW.mjs.map +1 -0
  81. package/dist/chunks/inspect-Buby4cQD.mjs +22 -0
  82. package/dist/chunks/inspect-Buby4cQD.mjs.map +1 -0
  83. package/dist/chunks/logs-Giq5sUau.mjs +25 -0
  84. package/dist/chunks/logs-Giq5sUau.mjs.map +1 -0
  85. package/dist/chunks/migrate-DRoFUg53.mjs +19 -0
  86. package/dist/chunks/migrate-DRoFUg53.mjs.map +1 -0
  87. package/dist/chunks/models-Btp6X2YZ.mjs +24 -0
  88. package/dist/chunks/models-Btp6X2YZ.mjs.map +1 -0
  89. package/dist/chunks/pause-BASBfKLO.mjs +16 -0
  90. package/dist/chunks/pause-BASBfKLO.mjs.map +1 -0
  91. package/dist/chunks/policy-DUIgzF3W.mjs +139 -0
  92. package/dist/chunks/policy-DUIgzF3W.mjs.map +1 -0
  93. package/dist/chunks/providers-Dx78imKj.mjs +19 -0
  94. package/dist/chunks/providers-Dx78imKj.mjs.map +1 -0
  95. package/dist/chunks/reconcile-BfD785gd.mjs +26 -0
  96. package/dist/chunks/reconcile-BfD785gd.mjs.map +1 -0
  97. package/dist/chunks/render-DyZr5Lgi.mjs +53 -0
  98. package/dist/chunks/render-DyZr5Lgi.mjs.map +1 -0
  99. package/dist/chunks/resume-GJQRb2Eb.mjs +15 -0
  100. package/dist/chunks/resume-GJQRb2Eb.mjs.map +1 -0
  101. package/dist/chunks/retry-CLrUem1H.mjs +15 -0
  102. package/dist/chunks/retry-CLrUem1H.mjs.map +1 -0
  103. package/dist/chunks/review-BDdjb6kB.mjs +17 -0
  104. package/dist/chunks/review-BDdjb6kB.mjs.map +1 -0
  105. package/dist/chunks/run-CgTWYlcd.mjs +82 -0
  106. package/dist/chunks/run-CgTWYlcd.mjs.map +1 -0
  107. package/dist/chunks/run-tool-C3rAv4XF.mjs +26 -0
  108. package/dist/chunks/run-tool-C3rAv4XF.mjs.map +1 -0
  109. package/dist/chunks/schema-C9QbUW4H.mjs +578 -0
  110. package/dist/chunks/schema-C9QbUW4H.mjs.map +1 -0
  111. package/dist/chunks/send-BdnJ85Nz.mjs +19 -0
  112. package/dist/chunks/send-BdnJ85Nz.mjs.map +1 -0
  113. package/dist/chunks/ship-DTuLGoaJ.mjs +19 -0
  114. package/dist/chunks/ship-DTuLGoaJ.mjs.map +1 -0
  115. package/dist/chunks/shutdown-BM92Iyv2.mjs +15 -0
  116. package/dist/chunks/shutdown-BM92Iyv2.mjs.map +1 -0
  117. package/dist/chunks/skip-DZG5kpcH.mjs +18 -0
  118. package/dist/chunks/skip-DZG5kpcH.mjs.map +1 -0
  119. package/dist/chunks/spec-Bq0P3jVh.mjs +20 -0
  120. package/dist/chunks/spec-Bq0P3jVh.mjs.map +1 -0
  121. package/dist/chunks/src-CId6kMsY.mjs +1689 -0
  122. package/dist/chunks/src-CId6kMsY.mjs.map +1 -0
  123. package/dist/chunks/src-CfAOde7C.mjs +5403 -0
  124. package/dist/chunks/src-CfAOde7C.mjs.map +1 -0
  125. package/dist/chunks/src-Cu3TxNob.mjs +783 -0
  126. package/dist/chunks/src-Cu3TxNob.mjs.map +1 -0
  127. package/dist/chunks/src-DcU4IXMe.mjs +117 -0
  128. package/dist/chunks/src-DcU4IXMe.mjs.map +1 -0
  129. package/dist/chunks/src-JxawBQBn.mjs +446 -0
  130. package/dist/chunks/src-JxawBQBn.mjs.map +1 -0
  131. package/dist/chunks/src-s7YRvk0t.mjs +2116 -0
  132. package/dist/chunks/src-s7YRvk0t.mjs.map +1 -0
  133. package/dist/chunks/status-SMjiOMYy.mjs +29 -0
  134. package/dist/chunks/status-SMjiOMYy.mjs.map +1 -0
  135. package/dist/chunks/tail-BuhT-2PH.mjs +25 -0
  136. package/dist/chunks/tail-BuhT-2PH.mjs.map +1 -0
  137. package/dist/chunks/update-BXIppsbi.mjs +16 -0
  138. package/dist/chunks/update-BXIppsbi.mjs.map +1 -0
  139. package/dist/cli.mjs +175 -0
  140. package/dist/cli.mjs.map +1 -0
  141. package/package.json +17 -32
  142. package/CHANGELOG.md +0 -1461
  143. package/bin/cli.js +0 -817
  144. package/bin/report.js +0 -141
  145. package/core/adapter/render.js +0 -415
  146. package/core/agents/implementer.template.md +0 -142
  147. package/core/agents/profile-reader.md +0 -50
  148. package/core/agents/release.md +0 -58
  149. package/core/agents/review.md +0 -179
  150. package/core/commands/cohorte-align-ds.md +0 -33
  151. package/core/commands/cohorte-audit.md +0 -58
  152. package/core/commands/cohorte-brainstorm.md +0 -70
  153. package/core/commands/cohorte-build.md +0 -219
  154. package/core/commands/cohorte-doctor.md +0 -194
  155. package/core/commands/cohorte-fix.md +0 -80
  156. package/core/commands/cohorte-fleet.md +0 -103
  157. package/core/commands/cohorte-init-pipeline.md +0 -31
  158. package/core/commands/cohorte-intake.md +0 -92
  159. package/core/commands/cohorte-patch.md +0 -118
  160. package/core/commands/cohorte-refactor.md +0 -59
  161. package/core/commands/cohorte-retro.md +0 -85
  162. package/core/commands/cohorte-review.md +0 -270
  163. package/core/commands/cohorte-ship.md +0 -122
  164. package/core/commands/cohorte-spec.md +0 -101
  165. package/core/commands/cohorte-update-pipeline.md +0 -165
  166. package/core/hooks/gate.py +0 -588
  167. package/core/runtimes/claude.json +0 -74
  168. package/core/runtimes/codex.json +0 -85
  169. package/core/runtimes/cursor.json +0 -76
  170. package/core/runtimes/gemini.json +0 -76
  171. package/core/runtimes/opencode.json +0 -73
  172. package/core/templates/agent-handoff.md +0 -34
  173. package/core/templates/brainstorm-return.md +0 -36
  174. package/core/templates/decisions.template.md +0 -42
  175. package/core/templates/design-brief.md +0 -44
  176. package/core/templates/patch.template.md +0 -86
  177. package/core/templates/pr-body.md +0 -25
  178. package/core/templates/review-feedback.md +0 -38
  179. package/core/templates/spec.template.md +0 -87
  180. package/core/templates/steps/init-pipeline/01-detect-stack.md +0 -44
  181. package/core/templates/steps/init-pipeline/02-interview-gaps.md +0 -55
  182. package/core/templates/steps/init-pipeline/03-draft-profile.md +0 -10
  183. package/core/templates/steps/init-pipeline/04-write-render.md +0 -145
  184. package/core/templates/steps/init-pipeline/05-report.md +0 -12
  185. package/core/workflows/audit.js +0 -240
  186. package/core/workflows/loop.js +0 -641
  187. package/core/workflows/refactor.js +0 -276
  188. package/core/workflows/review.js +0 -456
  189. package/install.ps1 +0 -103
  190. package/install.sh +0 -114
  191. package/lib/doctor.js +0 -534
  192. package/lib/runtime.js +0 -139
  193. package/lib/versions.js +0 -149
  194. package/lib/yaml.js +0 -129
  195. package/profile/PIPELINE.template.md +0 -259
  196. package/profile/SCHEMA.md +0 -735
  197. package/profile/cohorte.config.template.yaml +0 -43
  198. package/scripts/assert-gate-hook.mjs +0 -75
  199. package/scripts/kanban-move.sh +0 -313
  200. package/scripts/metrics/collect.mjs +0 -531
  201. package/scripts/metrics/prices.json +0 -42
  202. package/scripts/new-feature.sh.template +0 -98
  203. package/scripts/preflight.sh +0 -124
  204. package/scripts/remove-feature.sh.template +0 -56
  205. package/scripts/test-adapter.mjs +0 -437
  206. package/scripts/test-gate.mjs +0 -443
  207. package/scripts/test-kanban.mjs +0 -304
  208. package/scripts/test-lib.mjs +0 -356
  209. package/scripts/test-metrics.mjs +0 -156
  210. package/scripts/test-workflows.mjs +0 -758
  211. package/scripts/validate-core.mjs +0 -325
@@ -0,0 +1,655 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cohorte.dev/schemas/3/tool-catalogue.schema.json",
4
+ "title": "Cohorte tool catalogue: a tool call, one branch per tool of DESIGN 2.7",
5
+ "type": "object",
6
+ "required": [
7
+ "name",
8
+ "input"
9
+ ],
10
+ "properties": {
11
+ "name": {
12
+ "type": "string",
13
+ "description": "the tool as the catalogue names it"
14
+ },
15
+ "input": {
16
+ "description": "the call's arguments, narrowed by the branch for this tool"
17
+ },
18
+ "effect": {
19
+ "type": "string",
20
+ "description": "read | write | execute | network | control"
21
+ },
22
+ "terminal": {
23
+ "type": "boolean",
24
+ "description": "a terminal tool ends the agent turn"
25
+ }
26
+ },
27
+ "oneOf": [
28
+ {
29
+ "title": "read_file",
30
+ "description": "Read a file as sealed text with line numbers. offset/limit page through it; binary files error; capped at 256 KiB per call.",
31
+ "properties": {
32
+ "name": {
33
+ "const": "read_file"
34
+ },
35
+ "input": {
36
+ "type": "object",
37
+ "required": [
38
+ "path"
39
+ ],
40
+ "properties": {
41
+ "path": {
42
+ "type": "string"
43
+ },
44
+ "offset": {
45
+ "type": "integer",
46
+ "minimum": 0
47
+ },
48
+ "limit": {
49
+ "type": "integer",
50
+ "minimum": 1
51
+ }
52
+ }
53
+ },
54
+ "effect": {
55
+ "const": "read"
56
+ },
57
+ "terminal": {
58
+ "const": false
59
+ }
60
+ }
61
+ },
62
+ {
63
+ "title": "list_files",
64
+ "description": "List files under a path (default the workspace root), filtered by glob. Deny sets are filtered out; outgoing symlinks are never followed.",
65
+ "properties": {
66
+ "name": {
67
+ "const": "list_files"
68
+ },
69
+ "input": {
70
+ "type": "object",
71
+ "properties": {
72
+ "path": {
73
+ "type": "string"
74
+ },
75
+ "glob": {
76
+ "type": "string"
77
+ },
78
+ "maxEntries": {
79
+ "type": "integer",
80
+ "minimum": 1
81
+ }
82
+ }
83
+ },
84
+ "effect": {
85
+ "const": "read"
86
+ },
87
+ "terminal": {
88
+ "const": false
89
+ }
90
+ }
91
+ },
92
+ {
93
+ "title": "search",
94
+ "description": "Search file contents for a pattern (a literal argv element, never a shell string). Every hit is filtered against the deny sets and the grant before it is returned.",
95
+ "properties": {
96
+ "name": {
97
+ "const": "search"
98
+ },
99
+ "input": {
100
+ "type": "object",
101
+ "required": [
102
+ "pattern"
103
+ ],
104
+ "properties": {
105
+ "pattern": {
106
+ "type": "string"
107
+ },
108
+ "path": {
109
+ "type": "string"
110
+ },
111
+ "glob": {
112
+ "type": "string"
113
+ },
114
+ "caseInsensitive": {
115
+ "type": "boolean"
116
+ },
117
+ "maxMatches": {
118
+ "type": "integer",
119
+ "minimum": 1
120
+ }
121
+ }
122
+ },
123
+ "effect": {
124
+ "const": "read"
125
+ },
126
+ "terminal": {
127
+ "const": false
128
+ }
129
+ }
130
+ },
131
+ {
132
+ "title": "write_file",
133
+ "description": "Write the complete content of a file, creating it if it does not exist. The whole file is replaced.",
134
+ "properties": {
135
+ "name": {
136
+ "const": "write_file"
137
+ },
138
+ "input": {
139
+ "type": "object",
140
+ "required": [
141
+ "path",
142
+ "content"
143
+ ],
144
+ "properties": {
145
+ "path": {
146
+ "type": "string"
147
+ },
148
+ "content": {
149
+ "type": "string"
150
+ }
151
+ }
152
+ },
153
+ "effect": {
154
+ "const": "write"
155
+ },
156
+ "terminal": {
157
+ "const": false
158
+ }
159
+ }
160
+ },
161
+ {
162
+ "title": "patch_file",
163
+ "description": "Apply exact-match text edits to a file: each oldText must occur exactly once in the current content, or the call fails without writing anything.",
164
+ "properties": {
165
+ "name": {
166
+ "const": "patch_file"
167
+ },
168
+ "input": {
169
+ "type": "object",
170
+ "required": [
171
+ "path",
172
+ "edits"
173
+ ],
174
+ "properties": {
175
+ "path": {
176
+ "type": "string"
177
+ },
178
+ "edits": {
179
+ "type": "array",
180
+ "items": {
181
+ "type": "object",
182
+ "required": [
183
+ "oldText",
184
+ "newText"
185
+ ],
186
+ "properties": {
187
+ "oldText": {
188
+ "type": "string"
189
+ },
190
+ "newText": {
191
+ "type": "string"
192
+ }
193
+ }
194
+ },
195
+ "minItems": 1
196
+ }
197
+ }
198
+ },
199
+ "effect": {
200
+ "const": "write"
201
+ },
202
+ "terminal": {
203
+ "const": false
204
+ }
205
+ }
206
+ },
207
+ {
208
+ "title": "run_command",
209
+ "description": "Run one allow-listed command (argv only, never a shell line) and return its output.",
210
+ "properties": {
211
+ "name": {
212
+ "const": "run_command"
213
+ },
214
+ "input": {
215
+ "type": "object",
216
+ "required": [
217
+ "argv"
218
+ ],
219
+ "properties": {
220
+ "argv": {
221
+ "type": "array",
222
+ "items": {
223
+ "type": "string"
224
+ },
225
+ "minItems": 1
226
+ },
227
+ "cwd": {
228
+ "type": "string"
229
+ },
230
+ "timeoutMs": {
231
+ "type": "integer",
232
+ "minimum": 1
233
+ }
234
+ }
235
+ },
236
+ "effect": {
237
+ "const": "execute"
238
+ },
239
+ "terminal": {
240
+ "const": false
241
+ }
242
+ }
243
+ },
244
+ {
245
+ "title": "git_diff",
246
+ "description": "Show a diff of the worktree against 'run-base' (the run's pinned base, the default on a read-only review ref), 'integration' (the default in a slot) or 'checkpoint'.",
247
+ "properties": {
248
+ "name": {
249
+ "const": "git_diff"
250
+ },
251
+ "input": {
252
+ "type": "object",
253
+ "properties": {
254
+ "base": {
255
+ "type": "string",
256
+ "enum": [
257
+ "run-base",
258
+ "integration",
259
+ "checkpoint"
260
+ ]
261
+ },
262
+ "paths": {
263
+ "type": "array",
264
+ "items": {
265
+ "type": "string"
266
+ }
267
+ },
268
+ "stat": {
269
+ "type": "boolean"
270
+ }
271
+ }
272
+ },
273
+ "effect": {
274
+ "const": "read"
275
+ },
276
+ "terminal": {
277
+ "const": false
278
+ }
279
+ }
280
+ },
281
+ {
282
+ "title": "approval_request",
283
+ "description": "Ask a human a question before proceeding, optionally offering a fixed set of answers. Waits for a decision.",
284
+ "properties": {
285
+ "name": {
286
+ "const": "approval_request"
287
+ },
288
+ "input": {
289
+ "type": "object",
290
+ "required": [
291
+ "question"
292
+ ],
293
+ "properties": {
294
+ "question": {
295
+ "type": "string"
296
+ },
297
+ "options": {
298
+ "type": "array",
299
+ "items": {
300
+ "type": "string"
301
+ }
302
+ }
303
+ }
304
+ },
305
+ "effect": {
306
+ "const": "control"
307
+ },
308
+ "terminal": {
309
+ "const": false
310
+ }
311
+ }
312
+ },
313
+ {
314
+ "title": "submit_result",
315
+ "description": "Submit the final structured result for this task. Call submit_result alone, last: no other tool call may follow it in the same batch.",
316
+ "properties": {
317
+ "name": {
318
+ "const": "submit_result"
319
+ },
320
+ "input": {
321
+ "type": "object",
322
+ "required": [
323
+ "status",
324
+ "summary",
325
+ "artifacts",
326
+ "findings",
327
+ "checks",
328
+ "questions",
329
+ "confidence"
330
+ ],
331
+ "properties": {
332
+ "status": {
333
+ "type": "string",
334
+ "enum": [
335
+ "completed",
336
+ "failed",
337
+ "blocked",
338
+ "needs-input"
339
+ ]
340
+ },
341
+ "summary": {
342
+ "type": "string",
343
+ "maxLength": 2000
344
+ },
345
+ "artifacts": {
346
+ "type": "array",
347
+ "items": {
348
+ "type": "object",
349
+ "required": [
350
+ "path",
351
+ "kind"
352
+ ],
353
+ "properties": {
354
+ "path": {
355
+ "type": "string"
356
+ },
357
+ "kind": {
358
+ "type": "string",
359
+ "enum": [
360
+ "diff",
361
+ "file",
362
+ "test",
363
+ "report",
364
+ "contract"
365
+ ]
366
+ },
367
+ "sha256": {
368
+ "type": "string"
369
+ }
370
+ }
371
+ }
372
+ },
373
+ "findings": {
374
+ "type": "array",
375
+ "items": {
376
+ "type": "object",
377
+ "required": [
378
+ "severity",
379
+ "kind",
380
+ "rule",
381
+ "expected",
382
+ "actual",
383
+ "confidence",
384
+ "scope"
385
+ ],
386
+ "properties": {
387
+ "id": {
388
+ "type": "string",
389
+ "pattern": "^fnd_[0-9a-f]{16}$"
390
+ },
391
+ "severity": {
392
+ "type": "string",
393
+ "enum": [
394
+ "critical",
395
+ "major",
396
+ "minor",
397
+ "info"
398
+ ]
399
+ },
400
+ "kind": {
401
+ "type": "string",
402
+ "enum": [
403
+ "spec-violation",
404
+ "security",
405
+ "quality",
406
+ "complexity",
407
+ "check-failure"
408
+ ]
409
+ },
410
+ "rule": {
411
+ "type": "string"
412
+ },
413
+ "location": {
414
+ "type": "object",
415
+ "required": [
416
+ "file"
417
+ ],
418
+ "properties": {
419
+ "file": {
420
+ "type": "string"
421
+ },
422
+ "line": {
423
+ "type": "integer",
424
+ "minimum": 1
425
+ },
426
+ "endLine": {
427
+ "type": "integer",
428
+ "minimum": 1
429
+ },
430
+ "symbol": {
431
+ "type": "string"
432
+ }
433
+ }
434
+ },
435
+ "reproduction": {
436
+ "type": "string"
437
+ },
438
+ "expected": {
439
+ "type": "string"
440
+ },
441
+ "actual": {
442
+ "type": "string"
443
+ },
444
+ "confidence": {
445
+ "type": "number",
446
+ "minimum": 0,
447
+ "maximum": 1
448
+ },
449
+ "suggestedFix": {
450
+ "type": "string"
451
+ },
452
+ "scope": {
453
+ "type": "string",
454
+ "enum": [
455
+ "in-scope",
456
+ "deferred"
457
+ ]
458
+ },
459
+ "outOfScopeReason": {
460
+ "type": "string"
461
+ }
462
+ }
463
+ },
464
+ "maxItems": 30
465
+ },
466
+ "checks": {
467
+ "type": "array",
468
+ "items": {
469
+ "type": "object",
470
+ "required": [
471
+ "name",
472
+ "status"
473
+ ],
474
+ "properties": {
475
+ "name": {
476
+ "type": "string"
477
+ },
478
+ "status": {
479
+ "type": "string",
480
+ "enum": [
481
+ "passed",
482
+ "failed",
483
+ "skipped",
484
+ "not-run"
485
+ ]
486
+ },
487
+ "command": {
488
+ "type": "string"
489
+ }
490
+ }
491
+ }
492
+ },
493
+ "questions": {
494
+ "type": "array",
495
+ "items": {
496
+ "type": "string"
497
+ }
498
+ },
499
+ "confidence": {
500
+ "type": "number",
501
+ "minimum": 0,
502
+ "maximum": 1
503
+ },
504
+ "assumptions": {
505
+ "type": "array",
506
+ "items": {
507
+ "type": "object",
508
+ "required": [
509
+ "gap",
510
+ "decision"
511
+ ],
512
+ "properties": {
513
+ "gap": {
514
+ "type": "string"
515
+ },
516
+ "decision": {
517
+ "type": "string"
518
+ }
519
+ }
520
+ }
521
+ },
522
+ "remediationAddressed": {
523
+ "type": "array",
524
+ "items": {
525
+ "type": "object",
526
+ "required": [
527
+ "findingId",
528
+ "how"
529
+ ],
530
+ "properties": {
531
+ "findingId": {
532
+ "type": "string"
533
+ },
534
+ "how": {
535
+ "type": "string"
536
+ }
537
+ }
538
+ }
539
+ }
540
+ }
541
+ },
542
+ "effect": {
543
+ "const": "control"
544
+ },
545
+ "terminal": {
546
+ "const": true
547
+ }
548
+ }
549
+ },
550
+ {
551
+ "title": "git_commit",
552
+ "description": "Reserved: granted to nobody in V3.0. Cohorte alone commits agent work.",
553
+ "properties": {
554
+ "name": {
555
+ "const": "git_commit"
556
+ },
557
+ "input": {
558
+ "type": "object",
559
+ "required": [
560
+ "message"
561
+ ],
562
+ "properties": {
563
+ "message": {
564
+ "type": "string"
565
+ }
566
+ }
567
+ },
568
+ "effect": {
569
+ "const": "write"
570
+ },
571
+ "terminal": {
572
+ "const": false
573
+ }
574
+ }
575
+ },
576
+ {
577
+ "title": "network_request",
578
+ "description": "Reserved: granted to nobody in V3.0. Agents have no network access.",
579
+ "properties": {
580
+ "name": {
581
+ "const": "network_request"
582
+ },
583
+ "input": {
584
+ "type": "object",
585
+ "required": [
586
+ "url"
587
+ ],
588
+ "properties": {
589
+ "url": {
590
+ "type": "string"
591
+ },
592
+ "method": {
593
+ "type": "string"
594
+ }
595
+ }
596
+ },
597
+ "effect": {
598
+ "const": "network"
599
+ },
600
+ "terminal": {
601
+ "const": false
602
+ }
603
+ }
604
+ },
605
+ {
606
+ "title": "secret_read",
607
+ "description": "Reserved: granted to nobody in V3.0.",
608
+ "properties": {
609
+ "name": {
610
+ "const": "secret_read"
611
+ },
612
+ "input": {
613
+ "type": "object",
614
+ "required": [
615
+ "id"
616
+ ],
617
+ "properties": {
618
+ "id": {
619
+ "type": "string"
620
+ }
621
+ }
622
+ },
623
+ "effect": {
624
+ "const": "read"
625
+ },
626
+ "terminal": {
627
+ "const": false
628
+ }
629
+ }
630
+ },
631
+ {
632
+ "title": "a tool added by a later minor version: readers MUST ignore it",
633
+ "properties": {
634
+ "name": {
635
+ "not": {
636
+ "enum": [
637
+ "read_file",
638
+ "list_files",
639
+ "search",
640
+ "write_file",
641
+ "patch_file",
642
+ "run_command",
643
+ "git_diff",
644
+ "approval_request",
645
+ "submit_result",
646
+ "git_commit",
647
+ "network_request",
648
+ "secret_read"
649
+ ]
650
+ }
651
+ }
652
+ }
653
+ }
654
+ ]
655
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cohorte.dev/schemas/3/trust-record.schema.json",
4
+ "title": "Cohorte trust record (~/.cohorte/trust/<projectKeyId>.json)",
5
+ "type": "object",
6
+ "required": [
7
+ "policySha256",
8
+ "loosenedKeys",
9
+ "grantedAt",
10
+ "grantedBy",
11
+ "mac"
12
+ ],
13
+ "properties": {
14
+ "policySha256": {
15
+ "type": "string",
16
+ "pattern": "^[0-9a-f]{64}$"
17
+ },
18
+ "loosenedKeys": {
19
+ "type": "array",
20
+ "items": {
21
+ "type": "string"
22
+ }
23
+ },
24
+ "grantedAt": {
25
+ "type": "string",
26
+ "format": "date-time",
27
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
28
+ },
29
+ "grantedBy": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "mac": {
34
+ "type": "string",
35
+ "minLength": 1
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,9 @@
1
+ # skills/
2
+
3
+ Embedded inline skills (spec §8, DESIGN §9 "skill registry" is out of V3.0 — inline skills only).
4
+
5
+ `scripts/embed-assets.ts` copies this whole directory into `apps/cli/assets/skills/**` and records it in
6
+ `assets/manifest.json` (DESIGN 1.4 step 2). A `SkillManifest` owner was one of the PLAN PC-11 holes DESIGN
7
+ amended for Wave 0; the skill files themselves land with the units that consume them (Wave 2+).
8
+
9
+ This directory is empty at G0 on purpose.
@@ -0,0 +1,4 @@
1
+ # Inspect surface
2
+
3
+ Before changing a surface, identify its owner, public entry points, neighboring tests, and repository conventions.
4
+ Read the smallest relevant files, map inputs to outputs, and record assumptions in the task result.