cohorte 2.10.1 → 3.0.0-dev.1

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 (213) 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 +154 -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 +2187 -0
  41. package/dist/agent-host.mjs.map +1 -0
  42. package/dist/bundle-manifest.json +104 -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-CYOh60KG.mjs +93 -0
  50. package/dist/chunks/auth-CYOh60KG.mjs.map +1 -0
  51. package/dist/chunks/brainstorm-BwKA6yZP.mjs +7 -0
  52. package/dist/chunks/brainstorm-BwKA6yZP.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-Dvxunpto.mjs +7307 -0
  60. package/dist/chunks/compose-Dvxunpto.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-BkMjU1kR.mjs +295 -0
  64. package/dist/chunks/contract-BkMjU1kR.mjs.map +1 -0
  65. package/dist/chunks/contract-bQ9FJl4N.mjs +123 -0
  66. package/dist/chunks/contract-bQ9FJl4N.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-eS01-me1.mjs +21 -0
  72. package/dist/chunks/discover-eS01-me1.mjs.map +1 -0
  73. package/dist/chunks/doctor-B-H2UK5e.mjs +222 -0
  74. package/dist/chunks/doctor-B-H2UK5e.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-BUnzIkeE.mjs +63 -0
  80. package/dist/chunks/init-BUnzIkeE.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-DybihKzZ.mjs +33 -0
  86. package/dist/chunks/migrate-DybihKzZ.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-Bhy3IIYo.mjs +50 -0
  96. package/dist/chunks/reconcile-Bhy3IIYo.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/scan-8Gy_B6kI.mjs +122 -0
  110. package/dist/chunks/scan-8Gy_B6kI.mjs.map +1 -0
  111. package/dist/chunks/schema-C9QbUW4H.mjs +578 -0
  112. package/dist/chunks/schema-C9QbUW4H.mjs.map +1 -0
  113. package/dist/chunks/send-BdnJ85Nz.mjs +19 -0
  114. package/dist/chunks/send-BdnJ85Nz.mjs.map +1 -0
  115. package/dist/chunks/ship-DTuLGoaJ.mjs +19 -0
  116. package/dist/chunks/ship-DTuLGoaJ.mjs.map +1 -0
  117. package/dist/chunks/shutdown-BM92Iyv2.mjs +15 -0
  118. package/dist/chunks/shutdown-BM92Iyv2.mjs.map +1 -0
  119. package/dist/chunks/skip-DZG5kpcH.mjs +18 -0
  120. package/dist/chunks/skip-DZG5kpcH.mjs.map +1 -0
  121. package/dist/chunks/spec-Bq0P3jVh.mjs +20 -0
  122. package/dist/chunks/spec-Bq0P3jVh.mjs.map +1 -0
  123. package/dist/chunks/src-CId6kMsY.mjs +1689 -0
  124. package/dist/chunks/src-CId6kMsY.mjs.map +1 -0
  125. package/dist/chunks/src-CfAOde7C.mjs +5403 -0
  126. package/dist/chunks/src-CfAOde7C.mjs.map +1 -0
  127. package/dist/chunks/src-CmFjh4M0.mjs +928 -0
  128. package/dist/chunks/src-CmFjh4M0.mjs.map +1 -0
  129. package/dist/chunks/src-Cu3TxNob.mjs +783 -0
  130. package/dist/chunks/src-Cu3TxNob.mjs.map +1 -0
  131. package/dist/chunks/src-DcU4IXMe.mjs +117 -0
  132. package/dist/chunks/src-DcU4IXMe.mjs.map +1 -0
  133. package/dist/chunks/src-s7YRvk0t.mjs +2116 -0
  134. package/dist/chunks/src-s7YRvk0t.mjs.map +1 -0
  135. package/dist/chunks/status-SMjiOMYy.mjs +29 -0
  136. package/dist/chunks/status-SMjiOMYy.mjs.map +1 -0
  137. package/dist/chunks/tail-BuhT-2PH.mjs +25 -0
  138. package/dist/chunks/tail-BuhT-2PH.mjs.map +1 -0
  139. package/dist/chunks/update-BXIppsbi.mjs +16 -0
  140. package/dist/chunks/update-BXIppsbi.mjs.map +1 -0
  141. package/dist/cli.mjs +175 -0
  142. package/dist/cli.mjs.map +1 -0
  143. package/package.json +17 -32
  144. package/CHANGELOG.md +0 -1461
  145. package/bin/cli.js +0 -817
  146. package/bin/report.js +0 -141
  147. package/core/adapter/render.js +0 -415
  148. package/core/agents/implementer.template.md +0 -142
  149. package/core/agents/profile-reader.md +0 -50
  150. package/core/agents/release.md +0 -58
  151. package/core/agents/review.md +0 -179
  152. package/core/commands/cohorte-align-ds.md +0 -33
  153. package/core/commands/cohorte-audit.md +0 -58
  154. package/core/commands/cohorte-brainstorm.md +0 -70
  155. package/core/commands/cohorte-build.md +0 -219
  156. package/core/commands/cohorte-doctor.md +0 -194
  157. package/core/commands/cohorte-fix.md +0 -80
  158. package/core/commands/cohorte-fleet.md +0 -103
  159. package/core/commands/cohorte-init-pipeline.md +0 -31
  160. package/core/commands/cohorte-intake.md +0 -92
  161. package/core/commands/cohorte-patch.md +0 -118
  162. package/core/commands/cohorte-refactor.md +0 -59
  163. package/core/commands/cohorte-retro.md +0 -85
  164. package/core/commands/cohorte-review.md +0 -270
  165. package/core/commands/cohorte-ship.md +0 -122
  166. package/core/commands/cohorte-spec.md +0 -101
  167. package/core/commands/cohorte-update-pipeline.md +0 -165
  168. package/core/hooks/gate.py +0 -588
  169. package/core/runtimes/claude.json +0 -74
  170. package/core/runtimes/codex.json +0 -85
  171. package/core/runtimes/cursor.json +0 -76
  172. package/core/runtimes/gemini.json +0 -76
  173. package/core/runtimes/opencode.json +0 -73
  174. package/core/templates/agent-handoff.md +0 -34
  175. package/core/templates/brainstorm-return.md +0 -36
  176. package/core/templates/decisions.template.md +0 -42
  177. package/core/templates/design-brief.md +0 -44
  178. package/core/templates/patch.template.md +0 -86
  179. package/core/templates/pr-body.md +0 -25
  180. package/core/templates/review-feedback.md +0 -38
  181. package/core/templates/spec.template.md +0 -87
  182. package/core/templates/steps/init-pipeline/01-detect-stack.md +0 -44
  183. package/core/templates/steps/init-pipeline/02-interview-gaps.md +0 -55
  184. package/core/templates/steps/init-pipeline/03-draft-profile.md +0 -10
  185. package/core/templates/steps/init-pipeline/04-write-render.md +0 -145
  186. package/core/templates/steps/init-pipeline/05-report.md +0 -12
  187. package/core/workflows/audit.js +0 -240
  188. package/core/workflows/loop.js +0 -641
  189. package/core/workflows/refactor.js +0 -276
  190. package/core/workflows/review.js +0 -456
  191. package/install.ps1 +0 -103
  192. package/install.sh +0 -114
  193. package/lib/doctor.js +0 -534
  194. package/lib/runtime.js +0 -139
  195. package/lib/versions.js +0 -149
  196. package/lib/yaml.js +0 -129
  197. package/profile/PIPELINE.template.md +0 -259
  198. package/profile/SCHEMA.md +0 -735
  199. package/profile/cohorte.config.template.yaml +0 -43
  200. package/scripts/assert-gate-hook.mjs +0 -75
  201. package/scripts/kanban-move.sh +0 -313
  202. package/scripts/metrics/collect.mjs +0 -531
  203. package/scripts/metrics/prices.json +0 -42
  204. package/scripts/new-feature.sh.template +0 -98
  205. package/scripts/preflight.sh +0 -124
  206. package/scripts/remove-feature.sh.template +0 -56
  207. package/scripts/test-adapter.mjs +0 -437
  208. package/scripts/test-gate.mjs +0 -443
  209. package/scripts/test-kanban.mjs +0 -304
  210. package/scripts/test-lib.mjs +0 -356
  211. package/scripts/test-metrics.mjs +0 -156
  212. package/scripts/test-workflows.mjs +0 -758
  213. 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.