@cleocode/core 2026.9.20 → 2026.9.22

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 (961) hide show
  1. package/dist/adapters/discovery.d.ts.map +1 -1
  2. package/dist/adapters/discovery.js +3 -10
  3. package/dist/adapters/discovery.js.map +1 -1
  4. package/dist/adrs/link-pipeline.js +2 -2
  5. package/dist/adrs/link-pipeline.js.map +1 -1
  6. package/dist/adrs/parse.js +3 -3
  7. package/dist/adrs/parse.js.map +1 -1
  8. package/dist/agents/invoke-meta-agent.d.ts.map +1 -1
  9. package/dist/agents/invoke-meta-agent.js +8 -4
  10. package/dist/agents/invoke-meta-agent.js.map +1 -1
  11. package/dist/agents/scaffold.d.ts.map +1 -1
  12. package/dist/agents/scaffold.js +0 -1
  13. package/dist/agents/scaffold.js.map +1 -1
  14. package/dist/bootstrap.d.ts +5 -1
  15. package/dist/bootstrap.d.ts.map +1 -1
  16. package/dist/bootstrap.js +45 -21
  17. package/dist/bootstrap.js.map +1 -1
  18. package/dist/cloud/crypto.d.ts +47 -0
  19. package/dist/cloud/crypto.d.ts.map +1 -0
  20. package/dist/cloud/crypto.js +223 -0
  21. package/dist/cloud/crypto.js.map +1 -0
  22. package/dist/cloud/http.d.ts +52 -0
  23. package/dist/cloud/http.d.ts.map +1 -0
  24. package/dist/cloud/http.js +98 -0
  25. package/dist/cloud/http.js.map +1 -0
  26. package/dist/cloud/index.d.ts +19 -0
  27. package/dist/cloud/index.d.ts.map +1 -0
  28. package/dist/cloud/index.js +19 -0
  29. package/dist/cloud/index.js.map +1 -0
  30. package/dist/cloud/journal.d.ts +169 -0
  31. package/dist/cloud/journal.d.ts.map +1 -0
  32. package/dist/cloud/journal.js +428 -0
  33. package/dist/cloud/journal.js.map +1 -0
  34. package/dist/cloud/keys.d.ts +213 -0
  35. package/dist/cloud/keys.d.ts.map +1 -0
  36. package/dist/cloud/keys.js +362 -0
  37. package/dist/cloud/keys.js.map +1 -0
  38. package/dist/cloud/manifest-check.d.ts +36 -0
  39. package/dist/cloud/manifest-check.d.ts.map +1 -0
  40. package/dist/cloud/manifest-check.js +70 -0
  41. package/dist/cloud/manifest-check.js.map +1 -0
  42. package/dist/cloud/projects.d.ts +13 -0
  43. package/dist/cloud/projects.d.ts.map +1 -0
  44. package/dist/cloud/projects.js +11 -0
  45. package/dist/cloud/projects.js.map +1 -0
  46. package/dist/cloud/signing.d.ts +105 -0
  47. package/dist/cloud/signing.d.ts.map +1 -0
  48. package/dist/cloud/signing.js +117 -0
  49. package/dist/cloud/signing.js.map +1 -0
  50. package/dist/cloud/streams.d.ts +6 -0
  51. package/dist/cloud/streams.d.ts.map +1 -0
  52. package/dist/cloud/streams.js +5 -0
  53. package/dist/cloud/streams.js.map +1 -0
  54. package/dist/decide/audit.d.ts +131 -0
  55. package/dist/decide/audit.d.ts.map +1 -0
  56. package/dist/decide/audit.js +98 -0
  57. package/dist/decide/audit.js.map +1 -0
  58. package/dist/decide/budget.d.ts +91 -0
  59. package/dist/decide/budget.d.ts.map +1 -0
  60. package/dist/decide/budget.js +194 -0
  61. package/dist/decide/budget.js.map +1 -0
  62. package/dist/decide/cache.d.ts +49 -0
  63. package/dist/decide/cache.d.ts.map +1 -0
  64. package/dist/decide/cache.js +87 -0
  65. package/dist/decide/cache.js.map +1 -0
  66. package/dist/decide/client.d.ts +103 -0
  67. package/dist/decide/client.d.ts.map +1 -0
  68. package/dist/decide/client.js +262 -0
  69. package/dist/decide/client.js.map +1 -0
  70. package/dist/decide/credentials.d.ts +159 -0
  71. package/dist/decide/credentials.d.ts.map +1 -0
  72. package/dist/decide/credentials.js +383 -0
  73. package/dist/decide/credentials.js.map +1 -0
  74. package/dist/decide/index.d.ts +18 -0
  75. package/dist/decide/index.d.ts.map +1 -0
  76. package/dist/decide/index.js +18 -0
  77. package/dist/decide/index.js.map +1 -0
  78. package/dist/decide/jev-wire.d.ts +155 -0
  79. package/dist/decide/jev-wire.d.ts.map +1 -0
  80. package/dist/decide/jev-wire.js +420 -0
  81. package/dist/decide/jev-wire.js.map +1 -0
  82. package/dist/decide/operations.d.ts +152 -0
  83. package/dist/decide/operations.d.ts.map +1 -0
  84. package/dist/decide/operations.js +199 -0
  85. package/dist/decide/operations.js.map +1 -0
  86. package/dist/decide/provider.d.ts +90 -0
  87. package/dist/decide/provider.d.ts.map +1 -0
  88. package/dist/decide/provider.js +43 -0
  89. package/dist/decide/provider.js.map +1 -0
  90. package/dist/decide/site.d.ts +148 -0
  91. package/dist/decide/site.d.ts.map +1 -0
  92. package/dist/decide/site.js +181 -0
  93. package/dist/decide/site.js.map +1 -0
  94. package/dist/decide/transport.d.ts +67 -0
  95. package/dist/decide/transport.d.ts.map +1 -0
  96. package/dist/decide/transport.js +350 -0
  97. package/dist/decide/transport.js.map +1 -0
  98. package/dist/dispatch/mutate-projection.d.ts.map +1 -1
  99. package/dist/dispatch/mutate-projection.js +5 -0
  100. package/dist/dispatch/mutate-projection.js.map +1 -1
  101. package/dist/docs/docs-update.d.ts.map +1 -1
  102. package/dist/docs/docs-update.js +25 -9
  103. package/dist/docs/docs-update.js.map +1 -1
  104. package/dist/docs/export-document.js +5963 -2406
  105. package/dist/docs/export-document.js.map +3 -3
  106. package/dist/docs/index.d.ts +2 -2
  107. package/dist/docs/index.d.ts.map +1 -1
  108. package/dist/docs/index.js +1 -1
  109. package/dist/docs/index.js.map +1 -1
  110. package/dist/docs/projection.d.ts.map +1 -1
  111. package/dist/docs/projection.js +2 -3
  112. package/dist/docs/projection.js.map +1 -1
  113. package/dist/docs/publish-pr.d.ts +69 -1
  114. package/dist/docs/publish-pr.d.ts.map +1 -1
  115. package/dist/docs/publish-pr.js +112 -10
  116. package/dist/docs/publish-pr.js.map +1 -1
  117. package/dist/doctor/db-substrate.d.ts +13 -8
  118. package/dist/doctor/db-substrate.d.ts.map +1 -1
  119. package/dist/doctor/db-substrate.js +39 -26
  120. package/dist/doctor/db-substrate.js.map +1 -1
  121. package/dist/doctor/index.d.ts +2 -0
  122. package/dist/doctor/index.d.ts.map +1 -1
  123. package/dist/doctor/index.js +1 -0
  124. package/dist/doctor/index.js.map +1 -1
  125. package/dist/doctor/knowledge.d.ts +16 -1
  126. package/dist/doctor/knowledge.d.ts.map +1 -1
  127. package/dist/doctor/knowledge.js +58 -32
  128. package/dist/doctor/knowledge.js.map +1 -1
  129. package/dist/doctor/nexus-schema-residency.d.ts +1 -1
  130. package/dist/doctor/nexus-schema-residency.d.ts.map +1 -1
  131. package/dist/doctor/nexus-schema-residency.js +3 -0
  132. package/dist/doctor/nexus-schema-residency.js.map +1 -1
  133. package/dist/doctor/project-identity.d.ts +44 -1
  134. package/dist/doctor/project-identity.d.ts.map +1 -1
  135. package/dist/doctor/project-identity.js +237 -10
  136. package/dist/doctor/project-identity.js.map +1 -1
  137. package/dist/doctor/projects.d.ts +170 -0
  138. package/dist/doctor/projects.d.ts.map +1 -0
  139. package/dist/doctor/projects.js +1075 -0
  140. package/dist/doctor/projects.js.map +1 -0
  141. package/dist/doctor/twin-collapse.d.ts +97 -0
  142. package/dist/doctor/twin-collapse.d.ts.map +1 -0
  143. package/dist/doctor/twin-collapse.js +168 -0
  144. package/dist/doctor/twin-collapse.js.map +1 -0
  145. package/dist/doctor/worktree-orphans.d.ts.map +1 -1
  146. package/dist/doctor/worktree-orphans.js +13 -29
  147. package/dist/doctor/worktree-orphans.js.map +1 -1
  148. package/dist/doctor/worktree-stores.d.ts +128 -0
  149. package/dist/doctor/worktree-stores.d.ts.map +1 -0
  150. package/dist/doctor/worktree-stores.js +374 -0
  151. package/dist/doctor/worktree-stores.js.map +1 -0
  152. package/dist/engine/engine-ops.d.ts +36 -6
  153. package/dist/engine/engine-ops.d.ts.map +1 -1
  154. package/dist/engine/engine-ops.js +115 -14
  155. package/dist/engine/engine-ops.js.map +1 -1
  156. package/dist/error-catalog.d.ts.map +1 -1
  157. package/dist/error-catalog.js +21 -0
  158. package/dist/error-catalog.js.map +1 -1
  159. package/dist/error-registry.d.ts.map +1 -1
  160. package/dist/error-registry.js +40 -0
  161. package/dist/error-registry.js.map +1 -1
  162. package/dist/gateway-client/generated/types.gen.d.ts +1 -1
  163. package/dist/gc/cleanup.d.ts.map +1 -1
  164. package/dist/gc/cleanup.js +32 -19
  165. package/dist/gc/cleanup.js.map +1 -1
  166. package/dist/git/bounded-git.d.ts +170 -0
  167. package/dist/git/bounded-git.d.ts.map +1 -0
  168. package/dist/git/bounded-git.js +371 -0
  169. package/dist/git/bounded-git.js.map +1 -0
  170. package/dist/git/work-tree.d.ts +20 -0
  171. package/dist/git/work-tree.d.ts.map +1 -1
  172. package/dist/git/work-tree.js +20 -2
  173. package/dist/git/work-tree.js.map +1 -1
  174. package/dist/hooks/handlers/session-hooks.d.ts +11 -26
  175. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  176. package/dist/hooks/handlers/session-hooks.js +18 -47
  177. package/dist/hooks/handlers/session-hooks.js.map +1 -1
  178. package/dist/hooks/payload-schemas.d.ts +2 -2
  179. package/dist/index.d.ts +8 -5
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +6 -3
  182. package/dist/index.js.map +1 -1
  183. package/dist/init/engine-ops.d.ts.map +1 -1
  184. package/dist/init/engine-ops.js +23 -1
  185. package/dist/init/engine-ops.js.map +1 -1
  186. package/dist/init.d.ts +158 -1
  187. package/dist/init.d.ts.map +1 -1
  188. package/dist/init.js +578 -53
  189. package/dist/init.js.map +1 -1
  190. package/dist/inject/index.d.ts.map +1 -1
  191. package/dist/inject/index.js +8 -3
  192. package/dist/inject/index.js.map +1 -1
  193. package/dist/injection.d.ts +55 -0
  194. package/dist/injection.d.ts.map +1 -1
  195. package/dist/injection.js +102 -6
  196. package/dist/injection.js.map +1 -1
  197. package/dist/internal.d.ts +11 -7
  198. package/dist/internal.d.ts.map +1 -1
  199. package/dist/internal.js +9 -5
  200. package/dist/internal.js.map +1 -1
  201. package/dist/issue/diagnostics.d.ts.map +1 -1
  202. package/dist/issue/diagnostics.js +2 -1
  203. package/dist/issue/diagnostics.js.map +1 -1
  204. package/dist/lib/concurrency.d.ts +25 -0
  205. package/dist/lib/concurrency.d.ts.map +1 -0
  206. package/dist/lib/concurrency.js +43 -0
  207. package/dist/lib/concurrency.js.map +1 -0
  208. package/dist/lib/index.d.ts +1 -0
  209. package/dist/lib/index.d.ts.map +1 -1
  210. package/dist/lib/index.js +1 -0
  211. package/dist/lib/index.js.map +1 -1
  212. package/dist/lifecycle/engine-ops.d.ts.map +1 -1
  213. package/dist/lifecycle/engine-ops.js +4 -2
  214. package/dist/lifecycle/engine-ops.js.map +1 -1
  215. package/dist/lifecycle/stage-guidance.d.ts +5 -0
  216. package/dist/lifecycle/stage-guidance.d.ts.map +1 -1
  217. package/dist/lifecycle/stage-guidance.js +14 -4
  218. package/dist/lifecycle/stage-guidance.js.map +1 -1
  219. package/dist/llm/catalog-cache.d.ts +3 -2
  220. package/dist/llm/catalog-cache.d.ts.map +1 -1
  221. package/dist/llm/catalog-cache.js +5 -5
  222. package/dist/llm/catalog-cache.js.map +1 -1
  223. package/dist/llm/credentials.d.ts +4 -4
  224. package/dist/llm/credentials.js +6 -6
  225. package/dist/llm/credentials.js.map +1 -1
  226. package/dist/llm/plugin-facade.js +4400 -1801
  227. package/dist/llm/plugin-facade.js.map +3 -3
  228. package/dist/llm/stable-device-id.d.ts.map +1 -1
  229. package/dist/llm/stable-device-id.js +3 -5
  230. package/dist/llm/stable-device-id.js.map +1 -1
  231. package/dist/memory/attention.js +31 -31
  232. package/dist/memory/attention.js.map +1 -1
  233. package/dist/memory/decision-contradiction.d.ts +152 -0
  234. package/dist/memory/decision-contradiction.d.ts.map +1 -0
  235. package/dist/memory/decision-contradiction.js +273 -0
  236. package/dist/memory/decision-contradiction.js.map +1 -0
  237. package/dist/memory/decisions.d.ts +42 -11
  238. package/dist/memory/decisions.d.ts.map +1 -1
  239. package/dist/memory/decisions.js +153 -56
  240. package/dist/memory/decisions.js.map +1 -1
  241. package/dist/memory/dialectic-evaluator.d.ts +7 -0
  242. package/dist/memory/dialectic-evaluator.d.ts.map +1 -1
  243. package/dist/memory/dialectic-evaluator.js +23 -8
  244. package/dist/memory/dialectic-evaluator.js.map +1 -1
  245. package/dist/memory/dispatch-trace-format.d.ts +39 -0
  246. package/dist/memory/dispatch-trace-format.d.ts.map +1 -0
  247. package/dist/memory/dispatch-trace-format.js +54 -0
  248. package/dist/memory/dispatch-trace-format.js.map +1 -0
  249. package/dist/memory/dispatch-trace.d.ts.map +1 -1
  250. package/dist/memory/dispatch-trace.js +1 -27
  251. package/dist/memory/dispatch-trace.js.map +1 -1
  252. package/dist/memory/engine-compat.d.ts +2 -0
  253. package/dist/memory/engine-compat.d.ts.map +1 -1
  254. package/dist/memory/engine-compat.js +1 -0
  255. package/dist/memory/engine-compat.js.map +1 -1
  256. package/dist/memory/import-from-provider.js +3 -3
  257. package/dist/memory/import-from-provider.js.map +1 -1
  258. package/dist/memory/learnings.d.ts +2 -2
  259. package/dist/memory/observation-type-decision.d.ts +96 -0
  260. package/dist/memory/observation-type-decision.d.ts.map +1 -0
  261. package/dist/memory/observation-type-decision.js +218 -0
  262. package/dist/memory/observation-type-decision.js.map +1 -0
  263. package/dist/memory/redaction.js +2 -0
  264. package/dist/memory/redaction.js.map +1 -1
  265. package/dist/memory/retrieval/build-retrieval-bundle.d.ts +9 -2
  266. package/dist/memory/retrieval/build-retrieval-bundle.d.ts.map +1 -1
  267. package/dist/memory/retrieval/build-retrieval-bundle.js +42 -11
  268. package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
  269. package/dist/memory/retrieval/get-current-session-id.d.ts +5 -0
  270. package/dist/memory/retrieval/get-current-session-id.d.ts.map +1 -1
  271. package/dist/memory/retrieval/get-current-session-id.js +7 -2
  272. package/dist/memory/retrieval/get-current-session-id.js.map +1 -1
  273. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  274. package/dist/memory/retrieval/observe.js +30 -29
  275. package/dist/memory/retrieval/observe.js.map +1 -1
  276. package/dist/nexus/analyze-orchestrator.d.ts +38 -0
  277. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  278. package/dist/nexus/analyze-orchestrator.js +136 -48
  279. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  280. package/dist/nexus/assessment-projection.d.ts +76 -0
  281. package/dist/nexus/assessment-projection.d.ts.map +1 -0
  282. package/dist/nexus/assessment-projection.js +143 -0
  283. package/dist/nexus/assessment-projection.js.map +1 -0
  284. package/dist/nexus/assessment-store.d.ts +14 -2
  285. package/dist/nexus/assessment-store.d.ts.map +1 -1
  286. package/dist/nexus/assessment-store.js +21 -3
  287. package/dist/nexus/assessment-store.js.map +1 -1
  288. package/dist/nexus/checkout-nonce.d.ts +48 -0
  289. package/dist/nexus/checkout-nonce.d.ts.map +1 -0
  290. package/dist/nexus/checkout-nonce.js +84 -0
  291. package/dist/nexus/checkout-nonce.js.map +1 -0
  292. package/dist/nexus/devices.d.ts +93 -0
  293. package/dist/nexus/devices.d.ts.map +1 -0
  294. package/dist/nexus/devices.js +141 -0
  295. package/dist/nexus/devices.js.map +1 -0
  296. package/dist/nexus/freshness.d.ts.map +1 -1
  297. package/dist/nexus/freshness.js +25 -6
  298. package/dist/nexus/freshness.js.map +1 -1
  299. package/dist/nexus/git-state.d.ts +225 -0
  300. package/dist/nexus/git-state.d.ts.map +1 -0
  301. package/dist/nexus/git-state.js +677 -0
  302. package/dist/nexus/git-state.js.map +1 -0
  303. package/dist/nexus/graph-manifest.d.ts +20 -4
  304. package/dist/nexus/graph-manifest.d.ts.map +1 -1
  305. package/dist/nexus/graph-manifest.js +40 -5
  306. package/dist/nexus/graph-manifest.js.map +1 -1
  307. package/dist/nexus/identity.d.ts +68 -23
  308. package/dist/nexus/identity.d.ts.map +1 -1
  309. package/dist/nexus/identity.js +99 -22
  310. package/dist/nexus/identity.js.map +1 -1
  311. package/dist/nexus/index.d.ts +5 -2
  312. package/dist/nexus/index.d.ts.map +1 -1
  313. package/dist/nexus/index.js +10 -4
  314. package/dist/nexus/index.js.map +1 -1
  315. package/dist/nexus/knowledge.d.ts +5 -0
  316. package/dist/nexus/knowledge.d.ts.map +1 -1
  317. package/dist/nexus/knowledge.js +40 -5
  318. package/dist/nexus/knowledge.js.map +1 -1
  319. package/dist/nexus/legacy-alias.d.ts +60 -0
  320. package/dist/nexus/legacy-alias.d.ts.map +1 -0
  321. package/dist/nexus/legacy-alias.js +68 -0
  322. package/dist/nexus/legacy-alias.js.map +1 -0
  323. package/dist/nexus/migrate-json-to-sqlite.js +2 -2
  324. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
  325. package/dist/nexus/ops.d.ts +1 -0
  326. package/dist/nexus/ops.d.ts.map +1 -1
  327. package/dist/nexus/path-map.d.ts +264 -20
  328. package/dist/nexus/path-map.d.ts.map +1 -1
  329. package/dist/nexus/path-map.js +580 -44
  330. package/dist/nexus/path-map.js.map +1 -1
  331. package/dist/nexus/projects-clean.d.ts +9 -1
  332. package/dist/nexus/projects-clean.d.ts.map +1 -1
  333. package/dist/nexus/projects-clean.js +126 -14
  334. package/dist/nexus/projects-clean.js.map +1 -1
  335. package/dist/nexus/projects-scan.d.ts +56 -1
  336. package/dist/nexus/projects-scan.d.ts.map +1 -1
  337. package/dist/nexus/projects-scan.js +144 -3
  338. package/dist/nexus/projects-scan.js.map +1 -1
  339. package/dist/nexus/registry-hygiene.d.ts +18 -2
  340. package/dist/nexus/registry-hygiene.d.ts.map +1 -1
  341. package/dist/nexus/registry-hygiene.js +37 -11
  342. package/dist/nexus/registry-hygiene.js.map +1 -1
  343. package/dist/nexus/registry-roots.d.ts +47 -0
  344. package/dist/nexus/registry-roots.d.ts.map +1 -0
  345. package/dist/nexus/registry-roots.js +79 -0
  346. package/dist/nexus/registry-roots.js.map +1 -0
  347. package/dist/nexus/registry.d.ts +50 -9
  348. package/dist/nexus/registry.d.ts.map +1 -1
  349. package/dist/nexus/registry.js +311 -156
  350. package/dist/nexus/registry.js.map +1 -1
  351. package/dist/nexus/stored-roots.d.ts +171 -0
  352. package/dist/nexus/stored-roots.d.ts.map +1 -0
  353. package/dist/nexus/stored-roots.js +253 -0
  354. package/dist/nexus/stored-roots.js.map +1 -0
  355. package/dist/nexus/transfer.d.ts.map +1 -1
  356. package/dist/nexus/transfer.js +3 -0
  357. package/dist/nexus/transfer.js.map +1 -1
  358. package/dist/nexus/user-profile-hygiene.d.ts +168 -0
  359. package/dist/nexus/user-profile-hygiene.d.ts.map +1 -0
  360. package/dist/nexus/user-profile-hygiene.js +305 -0
  361. package/dist/nexus/user-profile-hygiene.js.map +1 -0
  362. package/dist/nexus/user-profile.d.ts +53 -2
  363. package/dist/nexus/user-profile.d.ts.map +1 -1
  364. package/dist/nexus/user-profile.js +106 -4
  365. package/dist/nexus/user-profile.js.map +1 -1
  366. package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
  367. package/dist/orchestrate/lifecycle-ops.js +4 -1
  368. package/dist/orchestrate/lifecycle-ops.js.map +1 -1
  369. package/dist/orchestrate/pivot.d.ts.map +1 -1
  370. package/dist/orchestrate/pivot.js +5 -1
  371. package/dist/orchestrate/pivot.js.map +1 -1
  372. package/dist/orchestrate/plan.d.ts.map +1 -1
  373. package/dist/orchestrate/plan.js +5 -2
  374. package/dist/orchestrate/plan.js.map +1 -1
  375. package/dist/orchestrate/query-ops.d.ts +7 -2
  376. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  377. package/dist/orchestrate/query-ops.js +17 -6
  378. package/dist/orchestrate/query-ops.js.map +1 -1
  379. package/dist/orchestrate/spawn-ops.d.ts +12 -0
  380. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  381. package/dist/orchestrate/spawn-ops.js +157 -71
  382. package/dist/orchestrate/spawn-ops.js.map +1 -1
  383. package/dist/orchestration/bootstrap.d.ts.map +1 -1
  384. package/dist/orchestration/bootstrap.js +4 -2
  385. package/dist/orchestration/bootstrap.js.map +1 -1
  386. package/dist/orchestration/classify-readiness.d.ts +37 -1
  387. package/dist/orchestration/classify-readiness.d.ts.map +1 -1
  388. package/dist/orchestration/classify-readiness.js +48 -19
  389. package/dist/orchestration/classify-readiness.js.map +1 -1
  390. package/dist/orchestration/index.d.ts +4 -2
  391. package/dist/orchestration/index.d.ts.map +1 -1
  392. package/dist/orchestration/index.js +6 -4
  393. package/dist/orchestration/index.js.map +1 -1
  394. package/dist/orchestration/lead-rollup.d.ts +8 -5
  395. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  396. package/dist/orchestration/lead-rollup.js +32 -15
  397. package/dist/orchestration/lead-rollup.js.map +1 -1
  398. package/dist/orchestration/owner-decision-readiness.d.ts +88 -0
  399. package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -0
  400. package/dist/orchestration/owner-decision-readiness.js +152 -0
  401. package/dist/orchestration/owner-decision-readiness.js.map +1 -0
  402. package/dist/orchestration/parallel.d.ts.map +1 -1
  403. package/dist/orchestration/parallel.js +10 -17
  404. package/dist/orchestration/parallel.js.map +1 -1
  405. package/dist/orchestration/psyche-memory-budget.d.ts +105 -0
  406. package/dist/orchestration/psyche-memory-budget.d.ts.map +1 -0
  407. package/dist/orchestration/psyche-memory-budget.js +383 -0
  408. package/dist/orchestration/psyche-memory-budget.js.map +1 -0
  409. package/dist/orchestration/spawn-prompt.d.ts +16 -2
  410. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  411. package/dist/orchestration/spawn-prompt.js +144 -181
  412. package/dist/orchestration/spawn-prompt.js.map +1 -1
  413. package/dist/orchestration/spawn.d.ts +7 -0
  414. package/dist/orchestration/spawn.d.ts.map +1 -1
  415. package/dist/orchestration/spawn.js +1 -0
  416. package/dist/orchestration/spawn.js.map +1 -1
  417. package/dist/orchestration/status.d.ts +8 -3
  418. package/dist/orchestration/status.d.ts.map +1 -1
  419. package/dist/orchestration/status.js +9 -6
  420. package/dist/orchestration/status.js.map +1 -1
  421. package/dist/orchestration/wave-topic.d.ts +54 -0
  422. package/dist/orchestration/wave-topic.d.ts.map +1 -0
  423. package/dist/orchestration/wave-topic.js +68 -0
  424. package/dist/orchestration/wave-topic.js.map +1 -0
  425. package/dist/orchestration/waves.d.ts +47 -8
  426. package/dist/orchestration/waves.d.ts.map +1 -1
  427. package/dist/orchestration/waves.js +152 -43
  428. package/dist/orchestration/waves.js.map +1 -1
  429. package/dist/paths.d.ts +24 -8
  430. package/dist/paths.d.ts.map +1 -1
  431. package/dist/paths.js +135 -71
  432. package/dist/paths.js.map +1 -1
  433. package/dist/phases/index.d.ts.map +1 -1
  434. package/dist/phases/index.js +6 -2
  435. package/dist/phases/index.js.map +1 -1
  436. package/dist/platform.d.ts +6 -1
  437. package/dist/platform.d.ts.map +1 -1
  438. package/dist/platform.js +8 -19
  439. package/dist/platform.js.map +1 -1
  440. package/dist/project-info.d.ts +18 -0
  441. package/dist/project-info.d.ts.map +1 -1
  442. package/dist/project-info.js +29 -1
  443. package/dist/project-info.js.map +1 -1
  444. package/dist/project-lifecycle.d.ts +91 -32
  445. package/dist/project-lifecycle.d.ts.map +1 -1
  446. package/dist/project-lifecycle.js +639 -75
  447. package/dist/project-lifecycle.js.map +1 -1
  448. package/dist/project-scope.d.ts +104 -4
  449. package/dist/project-scope.d.ts.map +1 -1
  450. package/dist/project-scope.js +263 -13
  451. package/dist/project-scope.js.map +1 -1
  452. package/dist/project-tombstone.d.ts +111 -0
  453. package/dist/project-tombstone.d.ts.map +1 -0
  454. package/dist/project-tombstone.js +220 -0
  455. package/dist/project-tombstone.js.map +1 -0
  456. package/dist/release/artifacts.d.ts.map +1 -1
  457. package/dist/release/artifacts.js +14 -9
  458. package/dist/release/artifacts.js.map +1 -1
  459. package/dist/release/ci-evidence.d.ts +233 -0
  460. package/dist/release/ci-evidence.d.ts.map +1 -0
  461. package/dist/release/ci-evidence.js +668 -0
  462. package/dist/release/ci-evidence.js.map +1 -0
  463. package/dist/release/engine-ops.d.ts.map +1 -1
  464. package/dist/release/engine-ops.js +3 -3
  465. package/dist/release/engine-ops.js.map +1 -1
  466. package/dist/release/github-pr.d.ts +30 -0
  467. package/dist/release/github-pr.d.ts.map +1 -1
  468. package/dist/release/github-pr.js +40 -0
  469. package/dist/release/github-pr.js.map +1 -1
  470. package/dist/release/plan.d.ts.map +1 -1
  471. package/dist/release/plan.js +11 -7
  472. package/dist/release/plan.js.map +1 -1
  473. package/dist/release/pr-evidence.d.ts +38 -0
  474. package/dist/release/pr-evidence.d.ts.map +1 -1
  475. package/dist/release/pr-evidence.js +79 -15
  476. package/dist/release/pr-evidence.js.map +1 -1
  477. package/dist/release/reconcile.d.ts.map +1 -1
  478. package/dist/release/reconcile.js +3 -2
  479. package/dist/release/reconcile.js.map +1 -1
  480. package/dist/release/release-manifest.d.ts +2 -1
  481. package/dist/release/release-manifest.d.ts.map +1 -1
  482. package/dist/release/release-manifest.js +6 -5
  483. package/dist/release/release-manifest.js.map +1 -1
  484. package/dist/render/nexus/graph/index.d.ts +4 -0
  485. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  486. package/dist/render/nexus/graph/index.js +57 -0
  487. package/dist/render/nexus/graph/index.js.map +1 -1
  488. package/dist/resources/spawn-wrapper.d.ts +8 -1
  489. package/dist/resources/spawn-wrapper.d.ts.map +1 -1
  490. package/dist/resources/spawn-wrapper.js +42 -5
  491. package/dist/resources/spawn-wrapper.js.map +1 -1
  492. package/dist/routing/build-command-groups.d.ts.map +1 -1
  493. package/dist/routing/build-command-groups.js +1 -0
  494. package/dist/routing/build-command-groups.js.map +1 -1
  495. package/dist/sagas/index.d.ts +1 -1
  496. package/dist/sagas/index.d.ts.map +1 -1
  497. package/dist/sagas/index.js +1 -1
  498. package/dist/sagas/index.js.map +1 -1
  499. package/dist/sagas/reconcile.d.ts +24 -4
  500. package/dist/sagas/reconcile.d.ts.map +1 -1
  501. package/dist/sagas/reconcile.js +226 -100
  502. package/dist/sagas/reconcile.js.map +1 -1
  503. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  504. package/dist/scaffold/ensure-config.js +31 -1
  505. package/dist/scaffold/ensure-config.js.map +1 -1
  506. package/dist/scaffold/project-identity.d.ts +2 -8
  507. package/dist/scaffold/project-identity.d.ts.map +1 -1
  508. package/dist/scaffold/project-identity.js +5 -21
  509. package/dist/scaffold/project-identity.js.map +1 -1
  510. package/dist/security/input-sanitization.d.ts +9 -1
  511. package/dist/security/input-sanitization.d.ts.map +1 -1
  512. package/dist/security/input-sanitization.js +20 -3
  513. package/dist/security/input-sanitization.js.map +1 -1
  514. package/dist/selfimprove/fix-gen.js +4409 -1810
  515. package/dist/selfimprove/fix-gen.js.map +3 -3
  516. package/dist/sentient/propose-tick.d.ts.map +1 -1
  517. package/dist/sentient/propose-tick.js +4 -2
  518. package/dist/sentient/propose-tick.js.map +1 -1
  519. package/dist/sequence/index.d.ts.map +1 -1
  520. package/dist/sequence/index.js +6 -23
  521. package/dist/sequence/index.js.map +1 -1
  522. package/dist/session/engine-ops.d.ts +15 -0
  523. package/dist/session/engine-ops.d.ts.map +1 -1
  524. package/dist/session/engine-ops.js +146 -22
  525. package/dist/session/engine-ops.js.map +1 -1
  526. package/dist/sessions/assumptions.d.ts.map +1 -1
  527. package/dist/sessions/assumptions.js +7 -4
  528. package/dist/sessions/assumptions.js.map +1 -1
  529. package/dist/sessions/briefing.d.ts +23 -0
  530. package/dist/sessions/briefing.d.ts.map +1 -1
  531. package/dist/sessions/briefing.js +59 -9
  532. package/dist/sessions/briefing.js.map +1 -1
  533. package/dist/sessions/decisions.d.ts +38 -3
  534. package/dist/sessions/decisions.d.ts.map +1 -1
  535. package/dist/sessions/decisions.js +235 -21
  536. package/dist/sessions/decisions.js.map +1 -1
  537. package/dist/sessions/drift-watchdog.d.ts.map +1 -1
  538. package/dist/sessions/drift-watchdog.js +8 -5
  539. package/dist/sessions/drift-watchdog.js.map +1 -1
  540. package/dist/sessions/focus-state-store.d.ts +89 -1
  541. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  542. package/dist/sessions/focus-state-store.js +97 -1
  543. package/dist/sessions/focus-state-store.js.map +1 -1
  544. package/dist/sessions/index.d.ts +2 -2
  545. package/dist/sessions/index.d.ts.map +1 -1
  546. package/dist/sessions/index.js +34 -5
  547. package/dist/sessions/index.js.map +1 -1
  548. package/dist/sessions/session-drift.d.ts.map +1 -1
  549. package/dist/sessions/session-drift.js +4 -3
  550. package/dist/sessions/session-drift.js.map +1 -1
  551. package/dist/sessions/session-end-snapshot-entry.d.ts +26 -0
  552. package/dist/sessions/session-end-snapshot-entry.d.ts.map +1 -0
  553. package/dist/sessions/session-end-snapshot-entry.js +59 -0
  554. package/dist/sessions/session-end-snapshot-entry.js.map +1 -0
  555. package/dist/sessions/session-end-snapshot.d.ts +114 -0
  556. package/dist/sessions/session-end-snapshot.d.ts.map +1 -0
  557. package/dist/sessions/session-end-snapshot.js +446 -0
  558. package/dist/sessions/session-end-snapshot.js.map +1 -0
  559. package/dist/sessions/session-manifest-mirror.d.ts.map +1 -1
  560. package/dist/sessions/session-manifest-mirror.js +10 -17
  561. package/dist/sessions/session-manifest-mirror.js.map +1 -1
  562. package/dist/sessions/session-switch.d.ts.map +1 -1
  563. package/dist/sessions/session-switch.js +5 -3
  564. package/dist/sessions/session-switch.js.map +1 -1
  565. package/dist/sessions/snapshot.d.ts.map +1 -1
  566. package/dist/sessions/snapshot.js +5 -4
  567. package/dist/sessions/snapshot.js.map +1 -1
  568. package/dist/sessions/terminal-identity.d.ts +169 -0
  569. package/dist/sessions/terminal-identity.d.ts.map +1 -0
  570. package/dist/sessions/terminal-identity.js +273 -0
  571. package/dist/sessions/terminal-identity.js.map +1 -0
  572. package/dist/setup/sections/verification.d.ts +1 -1
  573. package/dist/setup/sections/verification.d.ts.map +1 -1
  574. package/dist/setup/sections/verification.js +11 -15
  575. package/dist/setup/sections/verification.js.map +1 -1
  576. package/dist/skills/discovery.d.ts +20 -3
  577. package/dist/skills/discovery.d.ts.map +1 -1
  578. package/dist/skills/discovery.js +41 -4
  579. package/dist/skills/discovery.js.map +1 -1
  580. package/dist/skills/dispatch.d.ts +5 -2
  581. package/dist/skills/dispatch.d.ts.map +1 -1
  582. package/dist/skills/dispatch.js +5 -2
  583. package/dist/skills/dispatch.js.map +1 -1
  584. package/dist/skills/doctor.d.ts.map +1 -1
  585. package/dist/skills/doctor.js +5 -1
  586. package/dist/skills/doctor.js.map +1 -1
  587. package/dist/skills/federated-search.js +2 -2
  588. package/dist/skills/federated-search.js.map +1 -1
  589. package/dist/skills/index.d.ts +3 -3
  590. package/dist/skills/index.d.ts.map +1 -1
  591. package/dist/skills/index.js +1 -1
  592. package/dist/skills/index.js.map +1 -1
  593. package/dist/skills/migration.d.ts +5 -5
  594. package/dist/skills/migration.d.ts.map +1 -1
  595. package/dist/skills/migration.js +7 -9
  596. package/dist/skills/migration.js.map +1 -1
  597. package/dist/skills/orchestrator/startup.d.ts.map +1 -1
  598. package/dist/skills/orchestrator/startup.js +14 -7
  599. package/dist/skills/orchestrator/startup.js.map +1 -1
  600. package/dist/skills/prune-bundled.d.ts +267 -0
  601. package/dist/skills/prune-bundled.d.ts.map +1 -0
  602. package/dist/skills/prune-bundled.js +536 -0
  603. package/dist/skills/prune-bundled.js.map +1 -0
  604. package/dist/skills/skill-paths.d.ts +30 -3
  605. package/dist/skills/skill-paths.d.ts.map +1 -1
  606. package/dist/skills/skill-paths.js +28 -9
  607. package/dist/skills/skill-paths.js.map +1 -1
  608. package/dist/skills/skill-root.d.ts +60 -11
  609. package/dist/skills/skill-root.d.ts.map +1 -1
  610. package/dist/skills/skill-root.js +100 -14
  611. package/dist/skills/skill-root.js.map +1 -1
  612. package/dist/skills/skills-guard.js +5 -5
  613. package/dist/skills/skills-guard.js.map +1 -1
  614. package/dist/skills/types.d.ts +32 -1
  615. package/dist/skills/types.d.ts.map +1 -1
  616. package/dist/skills/types.js +17 -34
  617. package/dist/skills/types.js.map +1 -1
  618. package/dist/spawn/agent-identity.d.ts +51 -2
  619. package/dist/spawn/agent-identity.d.ts.map +1 -1
  620. package/dist/spawn/agent-identity.js +89 -26
  621. package/dist/spawn/agent-identity.js.map +1 -1
  622. package/dist/spawn/branch-lock.d.ts.map +1 -1
  623. package/dist/spawn/branch-lock.js +80 -79
  624. package/dist/spawn/branch-lock.js.map +1 -1
  625. package/dist/spawn/index.d.ts +2 -2
  626. package/dist/spawn/index.d.ts.map +1 -1
  627. package/dist/spawn/index.js +1 -1
  628. package/dist/spawn/index.js.map +1 -1
  629. package/dist/spawn/worktree-lock-holder.d.ts +37 -0
  630. package/dist/spawn/worktree-lock-holder.d.ts.map +1 -0
  631. package/dist/spawn/worktree-lock-holder.js +41 -0
  632. package/dist/spawn/worktree-lock-holder.js.map +1 -0
  633. package/dist/stats/index.d.ts.map +1 -1
  634. package/dist/stats/index.js +4 -2
  635. package/dist/stats/index.js.map +1 -1
  636. package/dist/sticky/convert.d.ts.map +1 -1
  637. package/dist/sticky/convert.js +16 -4
  638. package/dist/sticky/convert.js.map +1 -1
  639. package/dist/store/attachment-store.d.ts +14 -0
  640. package/dist/store/attachment-store.d.ts.map +1 -1
  641. package/dist/store/attachment-store.js +11 -1
  642. package/dist/store/attachment-store.js.map +1 -1
  643. package/dist/store/backup-inspect.d.ts +7 -3
  644. package/dist/store/backup-inspect.d.ts.map +1 -1
  645. package/dist/store/backup-inspect.js +18 -7
  646. package/dist/store/backup-inspect.js.map +1 -1
  647. package/dist/store/backup-sidecar.d.ts +60 -0
  648. package/dist/store/backup-sidecar.d.ts.map +1 -0
  649. package/dist/store/backup-sidecar.js +96 -0
  650. package/dist/store/backup-sidecar.js.map +1 -0
  651. package/dist/store/data-accessor.d.ts +1 -1
  652. package/dist/store/data-accessor.d.ts.map +1 -1
  653. package/dist/store/data-accessor.js +6 -6
  654. package/dist/store/data-accessor.js.map +1 -1
  655. package/dist/store/data-safety-central.d.ts +13 -4
  656. package/dist/store/data-safety-central.d.ts.map +1 -1
  657. package/dist/store/data-safety-central.js +31 -4
  658. package/dist/store/data-safety-central.js.map +1 -1
  659. package/dist/store/dual-scope-db.d.ts.map +1 -1
  660. package/dist/store/dual-scope-db.js +10 -0
  661. package/dist/store/dual-scope-db.js.map +1 -1
  662. package/dist/store/exodus/__fixtures__/representative-fixture.d.ts.map +1 -1
  663. package/dist/store/exodus/__fixtures__/representative-fixture.js +4 -0
  664. package/dist/store/exodus/__fixtures__/representative-fixture.js.map +1 -1
  665. package/dist/store/exodus/migrate.js +1 -1
  666. package/dist/store/exodus/migrate.js.map +1 -1
  667. package/dist/store/exodus/reconcile.js +1 -1
  668. package/dist/store/exodus/reconcile.js.map +1 -1
  669. package/dist/store/exodus/runtime-targets.d.ts +4 -3
  670. package/dist/store/exodus/runtime-targets.d.ts.map +1 -1
  671. package/dist/store/exodus/runtime-targets.js +4 -3
  672. package/dist/store/exodus/runtime-targets.js.map +1 -1
  673. package/dist/store/import-logging.d.ts.map +1 -1
  674. package/dist/store/import-logging.js +5 -4
  675. package/dist/store/import-logging.js.map +1 -1
  676. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  677. package/dist/store/legacy-tasks-lineage.js +2 -7
  678. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  679. package/dist/store/lock.d.ts +1 -0
  680. package/dist/store/lock.d.ts.map +1 -1
  681. package/dist/store/lock.js +1 -0
  682. package/dist/store/lock.js.map +1 -1
  683. package/dist/store/memory-accessor.d.ts +8 -3
  684. package/dist/store/memory-accessor.d.ts.map +1 -1
  685. package/dist/store/memory-accessor.js +29 -13
  686. package/dist/store/memory-accessor.js.map +1 -1
  687. package/dist/store/memory-sqlite.d.ts.map +1 -1
  688. package/dist/store/memory-sqlite.js +5 -0
  689. package/dist/store/memory-sqlite.js.map +1 -1
  690. package/dist/store/open-cleo-db.d.ts.map +1 -1
  691. package/dist/store/open-cleo-db.js +11 -6
  692. package/dist/store/open-cleo-db.js.map +1 -1
  693. package/dist/store/portable-bundle-relocate.d.ts +13 -8
  694. package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
  695. package/dist/store/portable-bundle-relocate.js +75 -31
  696. package/dist/store/portable-bundle-relocate.js.map +1 -1
  697. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  698. package/dist/store/portable-bundle-scan.js +2 -1
  699. package/dist/store/portable-bundle-scan.js.map +1 -1
  700. package/dist/store/portable-bundle.d.ts.map +1 -1
  701. package/dist/store/portable-bundle.js +7 -3
  702. package/dist/store/portable-bundle.js.map +1 -1
  703. package/dist/store/pre-repair-snapshot.d.ts +77 -0
  704. package/dist/store/pre-repair-snapshot.d.ts.map +1 -0
  705. package/dist/store/pre-repair-snapshot.js +122 -0
  706. package/dist/store/pre-repair-snapshot.js.map +1 -0
  707. package/dist/store/regenerators.d.ts +2 -1
  708. package/dist/store/regenerators.d.ts.map +1 -1
  709. package/dist/store/regenerators.js +17 -3
  710. package/dist/store/regenerators.js.map +1 -1
  711. package/dist/store/relocated-store-guard.d.ts +71 -0
  712. package/dist/store/relocated-store-guard.d.ts.map +1 -0
  713. package/dist/store/relocated-store-guard.js +138 -0
  714. package/dist/store/relocated-store-guard.js.map +1 -0
  715. package/dist/store/safety-data-accessor.d.ts +2 -2
  716. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  717. package/dist/store/safety-data-accessor.js +2 -2
  718. package/dist/store/safety-data-accessor.js.map +1 -1
  719. package/dist/store/schema/attachments.d.ts +2 -2
  720. package/dist/store/schema/audit.d.ts +5 -5
  721. package/dist/store/schema/background-jobs.d.ts +1 -1
  722. package/dist/store/schema/cleo-global/models-catalog.d.ts +1 -1
  723. package/dist/store/schema/cleo-global/nexus.d.ts +686 -0
  724. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  725. package/dist/store/schema/cleo-global/nexus.js +175 -7
  726. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  727. package/dist/store/schema/cleo-global/skills.d.ts +2 -2
  728. package/dist/store/schema/cleo-project/audit.d.ts +5 -5
  729. package/dist/store/schema/cleo-project/docs.d.ts +3 -3
  730. package/dist/store/schema/cleo-project/lifecycle.d.ts +3 -3
  731. package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
  732. package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
  733. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +1 -1
  734. package/dist/store/schema/cleo-project/tasks-core.d.ts +6 -6
  735. package/dist/store/schema/cleo-shared/brain.d.ts +26 -26
  736. package/dist/store/schema/lifecycle.d.ts +3 -3
  737. package/dist/store/schema/manifest.d.ts +1 -1
  738. package/dist/store/schema/memory-schema.d.ts +26 -26
  739. package/dist/store/schema/nexus-schema.d.ts +696 -2
  740. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  741. package/dist/store/schema/nexus-schema.js +175 -19
  742. package/dist/store/schema/nexus-schema.js.map +1 -1
  743. package/dist/store/schema/provenance/releases.d.ts +1 -1
  744. package/dist/store/schema/skills-schema.d.ts +2 -2
  745. package/dist/store/schema/tasks.d.ts +5 -5
  746. package/dist/store/session-binding-schema.d.ts +132 -0
  747. package/dist/store/session-binding-schema.d.ts.map +1 -0
  748. package/dist/store/session-binding-schema.js +53 -0
  749. package/dist/store/session-binding-schema.js.map +1 -0
  750. package/dist/store/session-store.d.ts +262 -4
  751. package/dist/store/session-store.d.ts.map +1 -1
  752. package/dist/store/session-store.js +486 -26
  753. package/dist/store/session-store.js.map +1 -1
  754. package/dist/store/skills-db.d.ts +17 -0
  755. package/dist/store/skills-db.d.ts.map +1 -1
  756. package/dist/store/skills-db.js +30 -0
  757. package/dist/store/skills-db.js.map +1 -1
  758. package/dist/store/snapshot-gate.d.ts +239 -0
  759. package/dist/store/snapshot-gate.d.ts.map +1 -0
  760. package/dist/store/snapshot-gate.js +401 -0
  761. package/dist/store/snapshot-gate.js.map +1 -0
  762. package/dist/store/split-brain-import.js +2 -2
  763. package/dist/store/split-brain-import.js.map +1 -1
  764. package/dist/store/sqlite-backup.d.ts +55 -13
  765. package/dist/store/sqlite-backup.d.ts.map +1 -1
  766. package/dist/store/sqlite-backup.js +414 -106
  767. package/dist/store/sqlite-backup.js.map +1 -1
  768. package/dist/store/sqlite-data-accessor.d.ts +15 -0
  769. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  770. package/dist/store/sqlite-data-accessor.js +73 -4
  771. package/dist/store/sqlite-data-accessor.js.map +1 -1
  772. package/dist/store/sqlite.d.ts +15 -1
  773. package/dist/store/sqlite.d.ts.map +1 -1
  774. package/dist/store/sqlite.js +75 -5
  775. package/dist/store/sqlite.js.map +1 -1
  776. package/dist/store/store-write-guard.d.ts +28 -0
  777. package/dist/store/store-write-guard.d.ts.map +1 -0
  778. package/dist/store/store-write-guard.js +50 -0
  779. package/dist/store/store-write-guard.js.map +1 -0
  780. package/dist/store/table-classification.d.ts +143 -0
  781. package/dist/store/table-classification.d.ts.map +1 -0
  782. package/dist/store/table-classification.js +1866 -0
  783. package/dist/store/table-classification.js.map +1 -0
  784. package/dist/store/task-version.d.ts +72 -0
  785. package/dist/store/task-version.d.ts.map +1 -0
  786. package/dist/store/task-version.js +93 -0
  787. package/dist/store/task-version.js.map +1 -0
  788. package/dist/store/tasks-schema.d.ts +1 -0
  789. package/dist/store/tasks-schema.d.ts.map +1 -1
  790. package/dist/store/tasks-schema.js +13 -0
  791. package/dist/store/tasks-schema.js.map +1 -1
  792. package/dist/store/tasks-sqlite.d.ts +10 -3
  793. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  794. package/dist/store/tasks-sqlite.js +12 -3
  795. package/dist/store/tasks-sqlite.js.map +1 -1
  796. package/dist/store/twin-collapse.d.ts +320 -0
  797. package/dist/store/twin-collapse.d.ts.map +1 -0
  798. package/dist/store/twin-collapse.js +931 -0
  799. package/dist/store/twin-collapse.js.map +1 -0
  800. package/dist/store/umbrella-data-accessor.d.ts +2 -2
  801. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  802. package/dist/store/umbrella-data-accessor.js +2 -2
  803. package/dist/store/umbrella-data-accessor.js.map +1 -1
  804. package/dist/store/validation-schemas.d.ts +63 -63
  805. package/dist/store/worktree-isolation-guard.d.ts +46 -24
  806. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  807. package/dist/store/worktree-isolation-guard.js +71 -50
  808. package/dist/store/worktree-isolation-guard.js.map +1 -1
  809. package/dist/system/backup.d.ts.map +1 -1
  810. package/dist/system/backup.js +3 -67
  811. package/dist/system/backup.js.map +1 -1
  812. package/dist/system/cleo-link.d.ts +163 -0
  813. package/dist/system/cleo-link.d.ts.map +1 -0
  814. package/dist/system/cleo-link.js +246 -0
  815. package/dist/system/cleo-link.js.map +1 -0
  816. package/dist/system/dependencies.d.ts.map +1 -1
  817. package/dist/system/dependencies.js +3 -6
  818. package/dist/system/dependencies.js.map +1 -1
  819. package/dist/system/global-delivery.d.ts +205 -0
  820. package/dist/system/global-delivery.d.ts.map +1 -0
  821. package/dist/system/global-delivery.js +320 -0
  822. package/dist/system/global-delivery.js.map +1 -0
  823. package/dist/system/health.d.ts.map +1 -1
  824. package/dist/system/health.js +29 -6
  825. package/dist/system/health.js.map +1 -1
  826. package/dist/system/inject-generate.d.ts.map +1 -1
  827. package/dist/system/inject-generate.js +4 -4
  828. package/dist/system/inject-generate.js.map +1 -1
  829. package/dist/system/project-health.d.ts.map +1 -1
  830. package/dist/system/project-health.js +1 -20
  831. package/dist/system/project-health.js.map +1 -1
  832. package/dist/system/runtime.d.ts.map +1 -1
  833. package/dist/system/runtime.js +2 -12
  834. package/dist/system/runtime.js.map +1 -1
  835. package/dist/system/safestop.d.ts.map +1 -1
  836. package/dist/system/safestop.js +5 -2
  837. package/dist/system/safestop.js.map +1 -1
  838. package/dist/system/skill-fixtures.d.ts +200 -0
  839. package/dist/system/skill-fixtures.d.ts.map +1 -0
  840. package/dist/system/skill-fixtures.js +331 -0
  841. package/dist/system/skill-fixtures.js.map +1 -0
  842. package/dist/task-work/index.d.ts +6 -0
  843. package/dist/task-work/index.d.ts.map +1 -1
  844. package/dist/task-work/index.js +6 -3
  845. package/dist/task-work/index.js.map +1 -1
  846. package/dist/tasks/add.d.ts.map +1 -1
  847. package/dist/tasks/add.js +4 -2
  848. package/dist/tasks/add.js.map +1 -1
  849. package/dist/tasks/affected-packages.d.ts +218 -0
  850. package/dist/tasks/affected-packages.d.ts.map +1 -0
  851. package/dist/tasks/affected-packages.js +496 -0
  852. package/dist/tasks/affected-packages.js.map +1 -0
  853. package/dist/tasks/affected-scope.d.ts +59 -0
  854. package/dist/tasks/affected-scope.d.ts.map +1 -0
  855. package/dist/tasks/affected-scope.js +81 -0
  856. package/dist/tasks/affected-scope.js.map +1 -0
  857. package/dist/tasks/analyze.d.ts.map +1 -1
  858. package/dist/tasks/analyze.js +7 -2
  859. package/dist/tasks/analyze.js.map +1 -1
  860. package/dist/tasks/change-set.d.ts +175 -0
  861. package/dist/tasks/change-set.d.ts.map +1 -0
  862. package/dist/tasks/change-set.js +753 -0
  863. package/dist/tasks/change-set.js.map +1 -0
  864. package/dist/tasks/complete.d.ts +10 -0
  865. package/dist/tasks/complete.d.ts.map +1 -1
  866. package/dist/tasks/complete.js +59 -5
  867. package/dist/tasks/complete.js.map +1 -1
  868. package/dist/tasks/component-pr.d.ts +106 -0
  869. package/dist/tasks/component-pr.d.ts.map +1 -0
  870. package/dist/tasks/component-pr.js +190 -0
  871. package/dist/tasks/component-pr.js.map +1 -0
  872. package/dist/tasks/done-plan.d.ts +123 -0
  873. package/dist/tasks/done-plan.d.ts.map +1 -0
  874. package/dist/tasks/done-plan.js +696 -0
  875. package/dist/tasks/done-plan.js.map +1 -0
  876. package/dist/tasks/done-record.d.ts +127 -0
  877. package/dist/tasks/done-record.d.ts.map +1 -0
  878. package/dist/tasks/done-record.js +302 -0
  879. package/dist/tasks/done-record.js.map +1 -0
  880. package/dist/tasks/duplicate-detector.d.ts +68 -11
  881. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  882. package/dist/tasks/duplicate-detector.js +314 -58
  883. package/dist/tasks/duplicate-detector.js.map +1 -1
  884. package/dist/tasks/evidence-paths.d.ts +78 -0
  885. package/dist/tasks/evidence-paths.d.ts.map +1 -0
  886. package/dist/tasks/evidence-paths.js +150 -0
  887. package/dist/tasks/evidence-paths.js.map +1 -0
  888. package/dist/tasks/evidence.d.ts +101 -1
  889. package/dist/tasks/evidence.d.ts.map +1 -1
  890. package/dist/tasks/evidence.js +278 -31
  891. package/dist/tasks/evidence.js.map +1 -1
  892. package/dist/tasks/gate-preview.d.ts +5 -0
  893. package/dist/tasks/gate-preview.d.ts.map +1 -1
  894. package/dist/tasks/gate-preview.js +25 -21
  895. package/dist/tasks/gate-preview.js.map +1 -1
  896. package/dist/tasks/gate-result-cache.d.ts +205 -0
  897. package/dist/tasks/gate-result-cache.d.ts.map +1 -0
  898. package/dist/tasks/gate-result-cache.js +285 -0
  899. package/dist/tasks/gate-result-cache.js.map +1 -0
  900. package/dist/tasks/gate-runner.d.ts +126 -3
  901. package/dist/tasks/gate-runner.d.ts.map +1 -1
  902. package/dist/tasks/gate-runner.js +483 -28
  903. package/dist/tasks/gate-runner.js.map +1 -1
  904. package/dist/tasks/session-scope.d.ts +3 -1
  905. package/dist/tasks/session-scope.d.ts.map +1 -1
  906. package/dist/tasks/session-scope.js +18 -3
  907. package/dist/tasks/session-scope.js.map +1 -1
  908. package/dist/tasks/task-next.d.ts +4 -0
  909. package/dist/tasks/task-next.d.ts.map +1 -1
  910. package/dist/tasks/task-next.js +32 -28
  911. package/dist/tasks/task-next.js.map +1 -1
  912. package/dist/tasks/tool-resolver.d.ts +23 -6
  913. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  914. package/dist/tasks/tool-resolver.js +146 -8
  915. package/dist/tasks/tool-resolver.js.map +1 -1
  916. package/dist/tasks/tool-vacuity.d.ts +71 -0
  917. package/dist/tasks/tool-vacuity.d.ts.map +1 -0
  918. package/dist/tasks/tool-vacuity.js +334 -0
  919. package/dist/tasks/tool-vacuity.js.map +1 -0
  920. package/dist/tasks/update.d.ts +8 -0
  921. package/dist/tasks/update.d.ts.map +1 -1
  922. package/dist/tasks/update.js +159 -78
  923. package/dist/tasks/update.js.map +1 -1
  924. package/dist/upgrade.d.ts.map +1 -1
  925. package/dist/upgrade.js +18 -2
  926. package/dist/upgrade.js.map +1 -1
  927. package/dist/validation/doctor/checks.d.ts +20 -2
  928. package/dist/validation/doctor/checks.d.ts.map +1 -1
  929. package/dist/validation/doctor/checks.js +64 -4
  930. package/dist/validation/doctor/checks.js.map +1 -1
  931. package/dist/validation/doctor/index.d.ts +1 -1
  932. package/dist/validation/doctor/index.d.ts.map +1 -1
  933. package/dist/validation/doctor/index.js +1 -1
  934. package/dist/validation/doctor/index.js.map +1 -1
  935. package/dist/validation/doctor/utils.d.ts.map +1 -1
  936. package/dist/validation/doctor/utils.js +7 -2
  937. package/dist/validation/doctor/utils.js.map +1 -1
  938. package/dist/validation/engine-ops.d.ts +24 -1
  939. package/dist/validation/engine-ops.d.ts.map +1 -1
  940. package/dist/validation/engine-ops.js +272 -98
  941. package/dist/validation/engine-ops.js.map +1 -1
  942. package/dist/validation/validate-ops.d.ts.map +1 -1
  943. package/dist/validation/validate-ops.js +9 -3
  944. package/dist/validation/validate-ops.js.map +1 -1
  945. package/dist/worktree/worktree-adopt.d.ts.map +1 -1
  946. package/dist/worktree/worktree-adopt.js +5 -2
  947. package/dist/worktree/worktree-adopt.js.map +1 -1
  948. package/migrations/drizzle-cleo-global/20260927000000_t12469-project-locations/migration.sql +121 -0
  949. package/migrations/drizzle-cleo-global/20260927010000_t12543-user-profile-project-scope/migration.sql +23 -0
  950. package/migrations/drizzle-cleo-global/20260928010000_t12470-location-candidates/migration.sql +72 -0
  951. package/migrations/drizzle-cleo-global/20260928020000_t12510-nexus-devices/migration.sql +34 -0
  952. package/migrations/drizzle-cleo-global/20260928030000_t12511-project-git-state/migration.sql +62 -0
  953. package/migrations/drizzle-cleo-project/20260927000000_t12499-session-terminal-bindings/migration.sql +34 -0
  954. package/migrations/drizzle-cleo-project/20260928000000_t12500-binding-provider-flag/migration.sql +15 -0
  955. package/package.json +23 -13
  956. package/schemas/config.schema.json +54 -0
  957. package/schemas/project-context.schema.json +51 -3
  958. package/schemas/project-info.schema.json +28 -1
  959. package/templates/CLEO-INJECTION.md +40 -332
  960. package/templates/CLEO-REFERENCE.md +303 -0
  961. package/templates/workflows/README.md +36 -14
@@ -1,6 +1,6 @@
1
1
  # CLEO Protocol
2
2
 
3
- Version: 2.20.6 | CLI-only dispatch | `cleo <command> [args]`
3
+ Version: 2.22.2 | CLI-only dispatch | `cleo <command> [args]`
4
4
 
5
5
  <!-- CLEO-INJECTION:section=session-start -->
6
6
  ## Universal protocol
@@ -11,16 +11,27 @@ Version: 2.20.6 | CLI-only dispatch | `cleo <command> [args]`
11
11
  4. **Act.** Use the repair matrix: scope, evidence, repair class, proposed operation, prerequisites, verification, and recovery. Automatic repairs must be bounded and reversible. The calling agent supplies sourced resolutions for ambiguous findings; owner decisions stay explicit. No background LLM is required for repair.
12
12
  5. **Verify.** Run relevant checks, record validated evidence, then complete. Report unresolved and failed findings and missing coverage rather than claiming success.
13
13
  6. **Learn.** Record actionable incident knowledge with source, project, revision, observation, correction, and verification through `cleo memory observe`. Preserve historical handoffs; present corrections separately. Avoid empty completion traces.
14
+ 7. **Ask the owner.** Every owner answer, decision, approval or choice goes through the ask tool (`AskUserQuestion` or the provider equivalent) with concrete selectable options, recommended first, each stating what happens and its trade-offs. Never ask in prose or bury a question in a response. No routine status chatter: report when done or when a decision is needed. Subagents never ask the human; they return the question and options to their orchestrator, which asks. No ask tool: emit one LAFS `hitl.request` envelope `{question, options[{label, description}], recommended}` and stop.
14
15
 
15
- Knowledge repair: `cleo doctor knowledge --dry-run`, then `--prepare FILE --actor AGENT`. Discover retained work with `--jobs --actor AGENT`, `--limit` and returned JSON `--cursor`; follow exact `inspectArgv`, not latest-job guesses. Retain partial diagnostics. Use `--apply JOB`, `--inspect JOB`, `--cancel JOB`, or `--resume JOB` with the original explicit `--actor AGENT --proposal-id PROPOSAL`; never borrow stored actor attribution. Verify receipts and paged lifecycle evidence (`--limit`/`--offset`); retain diagnostic failures and `prepared`/`attemptFailure` recovery details. Cancellation is a request, not rollback. Each invocation shares a default 2000ms budget (`--budget-ms`); a later explicit attempt is fresh, without renewing an active deadline or preempting synchronous SQLite. Resume preserves prior outcomes and uncertain expired attempts; live owners remain fenced. Stale source requires reassessment. After rollback, apply/resume return `E_REPAIR_ROLLED_BACK` with original and rollback receipts in `recoveryState`, not current repaired effects. Use `--rollback RECEIPT --actor AGENT --proposal-id NEW_ID`; inspect both receipts. Versioned quarantine recovery restores only `invalid_at`, preserving validated paired citation usage; protected edits conflict. Legacy receipts require exact images. Prepared rollback still guards the full current image. `cleo doctor repair` remains database recovery.
16
-
17
- Use `cleo <command> --help` and the `ct-cleo` skill for command details. Use `cleo show <id> --full` when focus is insufficient: the default projection withholds description and verification, listing them in `_withheld`.
16
+ Use `cleo <command> --help` and the `ct-cleo` skill for command details. Bare `cleo show <id>` withholds description and verification and lists them in `_withheld`; use `cleo show <id> --full`. A record without `_withheld` is complete; absence is not emptiness.
17
+ <!-- /CLEO-INJECTION:section=session-start -->
18
18
 
19
- Projection markers include omitted empty/null fields and survive repeated projection. `_withheld` maps omitted fields to UTF-8 content bytes (JSON bytes for structured values). A record without `_withheld` is complete. Budgeting preserves coverage, diagnostic failures, authority corrections and pending repair facts before examples. A read budget too small for mandatory facts fails explicitly; request narrower scope or more budget. Never treat this failure as clean coverage.
19
+ ## On-demand reference
20
20
 
21
- An impossible internal mutation budget rejects before execution. If a successful mutation's actual receipt exceeds a viable budget, its success and complete receipt remain available with `_budgetEnforcement.withinBudget: false`; overflow does not mean rollback. Inspect the receipt before retrying a mutation.
21
+ This file is the always-loaded core. Everything else is one command away — print a section with `cleo briefing inject --section <name>` before acting in that area:
22
22
 
23
- <!-- /CLEO-INJECTION:section=session-start -->
23
+ | Section | Load it when you |
24
+ |---------|------------------|
25
+ | `task-creation` | file tasks, batches, sagas, subtasks; hit acceptance, priority or depth errors |
26
+ | `task-discovery` | search, dedupe, reconcile overlap, read `data.population` |
27
+ | `task-relationships` | add `depends` / `blockedBy` / `relates` |
28
+ | `memory` · `memory-jit` | search/fetch BRAIN, look up decisions |
29
+ | `nexus` | query the symbol graph (`impact`, `context`, freshness) |
30
+ | `data-location` | suspect store corruption or read `.cleo/*.db` |
31
+ | `orchestration` · `playbooks` · `spawn-tiers` | run an epic, spawn workers, worktrees, playbooks, HITL tokens |
32
+ | `documents` · `human-render` | attach/publish canonical docs; renderers |
33
+ | `evidence` | typed gates, `pr:` atoms, tool cache/timeouts, owner override |
34
+ | `projection` · `knowledge-repair` | read budgets, mutation receipts; `cleo doctor knowledge` repair jobs |
24
35
 
25
36
  <!-- CLEO-INJECTION:section=work-loop -->
26
37
  ## Work Loop
@@ -30,6 +41,8 @@ An impossible internal mutation budget rejects before execution. If a successful
30
41
  3. Check authority, coverage, and source evidence; do the work
31
42
  4. Record verification evidence, then `cleo complete {id}` → mark done
32
43
  5. `cleo next` → continue or end session
44
+
45
+ Discovery: `cleo focus <id>` to orient, `cleo find "query"` to search (default page 20; `--limit 0` for all), `cleo list --parent <id>` for direct children only — never bare `cleo list` for browsing. Create: `cleo add --type task --parent <epicId> --title "..." --acceptance "..."` (`--acceptance` is required on every task). Before editing a symbol: `cleo nexus impact <symbol>`; an empty footprint alone never establishes `NONE`.
33
46
  <!-- /CLEO-INJECTION:section=work-loop -->
34
47
 
35
48
  <!-- CLEO-INJECTION:section=triggers -->
@@ -45,98 +58,9 @@ An impossible internal mutation budget rejects before execution. If a successful
45
58
  | About to call `cleo complete` | First: check gates via `cleo show <id> --full` → run tests → then complete |
46
59
  | Writing a canonical doc (spec/adr/research/handoff/note/llm-readme) | Use `cleo docs add --type <kind> --slug <kebab-handle>` — NEVER raw fs write to `.cleo/adrs/`, `.cleo/research/`, `.cleo/agent-outputs/`, or `docs/` |
47
60
  | Reading an ADR/spec/research note/handoff | `cleo docs fetch <slug>` — never grep the filesystem for canonical docs |
61
+ | New device, restore or migration; known repo "Not inside a CLEO project"; unreachable registry path; nexus `ENOENT` | `cleo doctor global-delivery` (hub + skills resolve; `--repair`), `cleo doctor projects` (dry run; `--apply`/`--rollback <id>`), `cleo doctor project-identity`, `cleo doctor --all-projects`, `cleo nexus projects clean --orphans --dry-run` (`--dry-run` mandatory: it deletes moved projects), `cleo doctor credentials`; report. Never delete rows of projects that may have moved |
48
62
  <!-- /CLEO-INJECTION:section=triggers -->
49
63
 
50
- <!-- CLEO-INJECTION:section=task-creation -->
51
- ## Task Creation (ADR-066)
52
-
53
- `--acceptance` required for ALL tasks. `cleo bug`/`--role` removed — use `cleo add --kind bug --severity Px --acceptance "..."`. Axes: `--type {epic|task|subtask}`, `--kind {work|research|experiment|bug|spike|release}`, `--severity {P0-P3}` (orthogonal to `--priority`; triggers Ed25519 attestation).
54
-
55
- | Goal | Command |
56
- |------|---------|
57
- | Create a single task | `cleo add --type task --parent <epicId> --title "..." --acceptance "..."` |
58
- | Create N tasks atomically | `cleo add-batch --file tasks.json --parent <epicId>` (file is a top-level JSON array of task objects) |
59
- | Preview batch before inserting | `cleo add-batch --file tasks.json --parent <epicId> --dry-run` |
60
- | Batch from stdin | `echo '[...]' \| cleo add-batch --file - --parent <epicId>` |
61
-
62
- Acceptance input is normalized consistently across add, update, batch, and saga creation: use arrays of strings in JSON parameters, or a JSON-array string / the documented pipe-delimited form for `--acceptance`. Array entries preserve literal pipes and quoted unions. Strings are trimmed and blank strings omitted; nonstring entries or malformed explicit JSON arrays reject the whole mutation. An explicit `[]` on update requests a clear; omitted acceptance stays unchanged. Normalized criteria still obey policy and immutability, including `--reason` for locked changes. Invalid stored criteria are diagnostic failures; never split historical records without original-input provenance and a guarded repair receipt.
63
-
64
- Explicit `critical` priority on add/update requires a dependency or a nonempty `--depends-waiver`; updates check the resulting dependency set. CLI flags, JSON params, and SDK calls share this policy. Explicit severity changes use the project's signing identity: a nonempty `ownerPubkeys` allowlist restricts signers; an absent or empty list keeps the existing opt-in policy. Unreadable or malformed authority is an explicit configuration failure. Committed severity, duplicate-bypass, and dependency-waiver evidence lives in the task transaction audit. Historical filesystem attestations alone do not prove a task committed. Dry-run creates no committed attestation; failed writes leave no committed receipt.
65
-
66
- `cleo add-batch` inserts all tasks in a single transaction — ANY failure rolls back ALL inserts. Use `--dry-run` first; the projected mutation envelope reports `/data/count` and `/data/wouldCreate` as the predicted create count while `/data/insertedCount` remains `0`. See `ct-cleo` skill section "Decomposing an epic into N tasks" for the JSON schema and rollback semantic.
67
-
68
- ### Sagas — PM-Core V2 containment (ADR-088 supersedes ADR-073)
69
-
70
- A **Saga** (`SG-`) is a multi-release theme grouping multiple Epics. `type='saga'` is canonical (PM-Core V2). Member Epics link via `tasks.parent_id` containment; `task_relations.groups` is non-containment provenance only.
71
-
72
- | Goal | Command |
73
- |------|---------|
74
- | Create a Saga | `cleo saga create --title "..." --description "..." --acceptance "ac1\|ac2\|ac3\|ac4\|ac5"` |
75
- | Link an Epic to a Saga | `cleo saga add <sagaId> <epicId>` |
76
- | List all Sagas | `cleo saga list` |
77
- | List member Epics of a Saga | `cleo saga members <sagaId>` |
78
- | Aggregate status across members | `cleo saga rollup <sagaId>` |
79
-
80
- Parent matrix: Saga `parent_id IS NULL`; Epic `parent_id` = Saga (or null for standalone); Task `parent_id` = Epic; Subtask `parent_id` = Task. `task_relations` is non-containment only — dependencies, ordering, cross-reference, evidence, supersession, provenance.
81
-
82
- ### Depth + decomposition
83
-
84
- `saga 0 → epic 1 → task 2 → subtask 3`; `hierarchy.maxDepth` (default 3) is the max depth VALUE, **inclusive**, so a subtask under a task is legal. `E_CLEO_DEPTH_EXCEEDED` now means only: you parented under a subtask, the leaf tier. `--type` is honoured verbatim — so `--type subtask --parent <epic>` is REFUSED, not silently retyped. A task is **either** a leaf with its own text ACs **or** a container with children, never both (PM-Core V2 design-point 3) — so the first `cleo add` under a task carrying `--acceptance` text is refused. That is expected. Convert it:
85
-
86
- | Goal | Command |
87
- |------|---------|
88
- | Add the subtask AND convert in one call | `cleo add --type subtask --parent <id> --title "..." --acceptance "..." --auto-decompose` |
89
- | Convert first, then add normally | `cleo decompose <id>` (`--dry-run`, `--child-title "..."`) |
90
-
91
- `--auto-decompose` is opt-in: it rewrites the PARENT and reports `autoDecomposed: { childId, movedAcceptance }` — read it, the task you filed is now a container. `cleo update <id> --acceptance ""` does NOT work (enforcement rejects empty).<!-- /CLEO-INJECTION:section=task-creation -->
92
-
93
- <!-- CLEO-INJECTION:section=task-discovery -->
94
- ### Overlap reconciliation across a saga
95
-
96
- `cleo add` checks duplicates only at INSERT time — flat, reject-or-insert — so partial overlap is invisible and post-filing drift is never re-examined. Sweep for it:
97
-
98
- | Goal | Command |
99
- |------|---------|
100
- | Report overlapping scope (read-only) | `cleo reconcile scope <sagaId\|epicId>` |
101
- | Narrow to strongest signals | `cleo reconcile scope <id> --threshold 0.75` |
102
- | Write the proposed `relates` edges | `cleo reconcile scope <id> --apply` |
103
-
104
- Actions: **merge** (same tier+parent, ≥90%) · **absorb** (≥90% across containers) ·
105
- **split** (shared scope apart — use `cleo decompose`) · **link** (siblings, usually
106
- intended sequencing). `--apply` writes ONLY `relates` edges — nothing is merged, retitled, reparented or deleted — and the earlier task always survives, so runs are reproducible. Read `link` sceptically: shared naming conventions inflate title similarity. Act on `merge`/`absorb`, which also require a tier+parent match.
107
-
108
- ## Task Discovery
109
-
110
- Task search defaults to lexical. For approximate character-subsequence matches, use `cleo find "query" --fuzzy`. Check `match.kind`, `match.fields`, and reason before inferring related work or duplicates. Compact output retains fuzzy provenance; scalar/human output explains it on stderr. `--in title|description|notes|id` restricts fields. Semantic retrieval is separately identified.
111
-
112
- Compact SDK list/find `_withheld` retains omitted names and original UTF-8 sizes through later CLI projections. Fetch full records; absence is not emptiness.
113
-
114
- List/find default to excluding archived rows; `--include-archive` applies the same filters to archives. Inspect `data.population` before inferring completeness; `truncated: true` includes nonzero offsets. Budgets cannot silently remove population facts or their rows.
115
-
116
- **Use `cleo focus` to orient on a task. Use `cleo find` for discovery. NEVER `cleo list` for browsing.**
117
-
118
- | Command | ~Tokens | Use |
119
- |---------|---------|-----|
120
- | `cleo focus <id>` | ≤ 1 500 | **Primary orient surface** — identity + scope + blockers + ready wave + docs + brain context in ONE call |
121
- | `cleo find "query"` | 200-400 | Search tasks (default) |
122
- | `cleo show <id> --full` | 300-600 | Full record beyond focus. Bare show omits description + verification; inspect `_withheld`. |
123
- | `cleo list --parent <id>` | 1000-5000 | Direct children only |
124
- <!-- /CLEO-INJECTION:section=task-discovery -->
125
-
126
- <!-- CLEO-INJECTION:section=task-relationships -->
127
- ## Task Relationships — depends, blockedBy, relates
128
-
129
- Keep these three relationship systems distinct:
130
-
131
- | System | Semantics | CLI |
132
- |--------|-----------|-----|
133
- | `depends` | **Blocking execution dependency** — task cannot start until all `depends` tasks are `done` | `cleo add --depends T1,T2` / `cleo update --depends ...` |
134
- | `blockedBy` | **Free-text reason** why a task is blocked (e.g. "waiting for API key") | `cleo update --blocked-by "reason"` / `--clear-blocked-by` |
135
- | `relates` | **Semantic, non-blocking** linkage (`blocks`, `related`, `duplicates`, `absorbs`, `fixes`, `extends`, `supersedes`) | `cleo relates add <from> <to> <type> <reason>` |
136
-
137
- **Rule:** `relates` never blocks execution; use `--depends` to wait for tasks. `blocked-by` takes a reason, not a task ID. Details: `ct-cleo` → "Task Relationship Systems".
138
- <!-- /CLEO-INJECTION:section=task-relationships -->
139
-
140
64
  <!-- CLEO-INJECTION:section=session-commands -->
141
65
  ## Session Commands
142
66
 
@@ -146,117 +70,9 @@ Keep these three relationship systems distinct:
146
70
  | Resume context | `cleo briefing` |
147
71
  | Start session | `cleo session start --scope global --name "<what you are doing>"` (both flags are REQUIRED) |
148
72
  | End session | `cleo session end --note "..."` |
149
- <!-- /CLEO-INJECTION:section=session-commands -->
150
-
151
- <!-- CLEO-INJECTION:section=memory -->
152
- ## Memory (BRAIN)
153
-
154
- 3-layer retrieval — search first, then fetch:
155
-
156
- | Step | Command | ~Tokens |
157
- |------|---------|---------|
158
- | Search | `cleo memory find "query"` | 50/hit |
159
- | Context | `cleo memory timeline <id>` | 200-500 |
160
- | Details | `cleo memory fetch <id>` | 500/entry |
161
- | Save | `cleo memory observe "text" --title "title"` | — |
162
- | LLM status | `cleo memory llm-status` | 50 |
163
- | Ground-truth promote | `cleo memory verify <id>` (owner only) | 50 |
164
-
165
- Memory context: `cleo memory digest` defaults to a live project summary; no `--brief` flag. Set `brain.memoryBridge.mode = "file"` for legacy `@.cleo/memory-bridge.md` injection.
166
- <!-- /CLEO-INJECTION:section=memory -->
167
-
168
- <!-- CLEO-INJECTION:section=data-location -->
169
- ## Where the data lives — never read `.cleo/*.db` directly
170
-
171
- Store = **`.cleo/cleo.db`**; task rows are in PREFIXED tables (`tasks_tasks`, …). Three decoys make a HEALTHY project look corrupt:
172
-
173
- | Decoy | Reality |
174
- |-------|---------|
175
- | `.cleo/tasks.db`, small + months old | The pre-migration store, left under the old live name |
176
- | `.cleo/backups/sqlite/tasks-<ts>.db`, ~100× bigger | Snapshots **of `cleo.db`**; `tasks-` is a legacy label |
177
- | bare `tasks` table, 0 rows | Empty relic beside the populated `tasks_tasks` |
178
-
179
- Small legacy DBs beside large snapshots do not prove corruption. `cleo doctor superseded-store` identifies the live store by row counts; `briefing`/`focus` already read it. Use `cleo backup inspect <snapshot> --record-id <id>` for read-only historical evidence; scoped absence or unknown provenance is not recovery authority.
180
-
181
- <!-- /CLEO-INJECTION:section=data-location -->
182
- <!-- CLEO-INJECTION:section=nexus -->
183
- ## Nexus — when to use which scope
184
-
185
- `cleo nexus` queries this repo's symbol graph. Commands are checked by the gate below.
186
-
187
- | Intent | Command |
188
- | --- | --- |
189
- | **Check the index before trusting it** | `cleo nexus status` |
190
- | Blast radius before editing a symbol | `cleo nexus impact <symbol>` |
191
- | Callers / callees / community of a symbol | `cleo nexus context <symbol>` |
192
- | Everything about one symbol in one call | `cleo nexus full-context <symbol>` |
193
- | Find a symbol by code text | `cleo nexus search-code "<text>"` |
194
- | Symbols touched by a task | `cleo nexus task-symbols <taskId>` |
195
- | Why does this symbol exist / who needs it | `cleo nexus why <symbol>` |
196
- | Detected communities / execution flows | `cleo nexus clusters` / `flows` |
197
- | Refresh the index | `cleo nexus analyze` |
198
-
199
- **FIRST CALL IS `cleo nexus status`.** Check `nodeCount`, `lastIndexedAt`, `staleFileCount`/`fileCount`. Queries report `_nexus.freshness` and auto-refresh ≤25 stale files; beyond that they warn `W_NEXUS_INDEX_STALE`. `analyze` is incremental (`--full` rebuilds). For stale coverage, refresh or inspect source with `git grep` and disclose that basis. Impact/context `E_NOT_FOUND` includes index size, median age and a repair command; inspect these first.
200
-
201
- **Project resolution**: `--project-id` > `--path` > `cwd`.
202
- Default ID = `base64url(path).slice(0,32)`.
203
-
204
- **Rule**: BEFORE editing any symbol, run `cleo nexus impact <symbol>`.
205
- HIGH/CRITICAL requires reviewing affected callers before editing. For stale, partial, missing, or failed coverage, inspect source and report the remaining uncertainty. An empty footprint alone never establishes `NONE`.
206
73
 
207
- > `scripts/lint-injection-commands.mjs` (T12069) checks these commands against the CLI. Previously documented `nexus report`, `nexus brain find`, `nexus compare`, `nexus shared`, `nexus synthesize`, and `nexus admin` never existed.
208
- <!-- /CLEO-INJECTION:section=nexus -->
209
-
210
- <!-- CLEO-INJECTION:section=orchestration -->
211
- ## Orchestration (for epics ≥ 5 tasks)
212
-
213
- | Goal | Command |
214
- |------|---------|
215
- | Initialize epic pipeline | `cleo orchestrate start <epicId>` (auto-inits LOOM research stage) |
216
- | Get parallel-safe wave | `cleo orchestrate ready <epicId>` |
217
- | Get spawn prompt for a task | `cleo orchestrate spawn <taskId>` |
218
- | Spawn without worktree (opt-out) | `cleo orchestrate spawn <taskId> --no-worktree` |
219
- | Multi-agent IVTR loop | `cleo orchestrate ivtr <taskId> --start` |
220
- | View epic wave plan | `cleo orchestrate waves <epicId>` |
221
- | Grant HITL approval (paused playbook) | `cleo orchestrate approve <resumeToken>` |
222
- | Deny HITL approval with reason | `cleo orchestrate reject <resumeToken> --reason "<r>"` |
223
- | List awaiting HITL approvals | `cleo orchestrate pending` |
224
- <!-- /CLEO-INJECTION:section=orchestration -->
225
-
226
- <!-- CLEO-INJECTION:section=playbooks -->
227
- ## Worktree-by-Default (T1140 · ADR-055)
228
-
229
- `cleo orchestrate spawn` provisions a Git worktree at `~/.local/share/cleo/worktrees/<projectHash>/<taskId>/`. Its required `## Worktree Setup (REQUIRED)` section names the path, branch and `FIRST ACTION: cd <path>`. Confine reads/writes/Git operations there. Integrate with `git merge --no-ff` to preserve commit SHAs and authors (ADR-062). Use `--no-worktree` for meta-tasks.
230
-
231
- ## Playbook Domain (v2026.4.93 · T910 Orchestration Coherence v4)
232
-
233
- `.cantbook` YAML encodes staged agent flows. Runtime: deterministic state machine, HMAC-signed HITL resume tokens. References: `docs/architecture/orchestration-flow.md` (6-layer pipeline), `.cleo/adrs/ADR-053-playbook-runtime.md` (state-machine decision).
234
-
235
- | Goal | Command |
236
- |------|---------|
237
- | Execute a `.cantbook` playbook | `cleo playbook run <name>` |
238
- | Inspect run state | `cleo playbook status <runId>` |
239
- | Resume after HITL approval | `cleo playbook resume <runId>` |
240
-
241
- Starter playbooks ship with `@cleocode/playbooks`: `rcasd.cantbook`, `ivtr.cantbook`, `release.cantbook`.
242
- <!-- /CLEO-INJECTION:section=playbooks -->
243
-
244
- <!-- CLEO-INJECTION:section=documents -->
245
- ## Documents & Attachments
246
-
247
- | Goal | Command |
248
- |------|---------|
249
- | Attach file/url to task | `cleo docs add <taskId> <repo-relative-file> --type <kind> --slug <slug>` or `--url <url>` |
250
- | List task attachments | `cleo docs list --task <id>` |
251
- | List valid doc kinds | `cleo docs list-types` |
252
- | Generate llms.txt summary | `cleo docs generate --for <taskId>` |
253
-
254
- Use current repo-relative paths, never arbitrary external absolute paths (`/tmp`, other checkouts). Publish: `cleo docs publish --for <ownerId> --to <repo-relative-path>`. Before batch writes: `cleo add-batch --dry-run`; require `/data/insertedCount` = 0. Runtime kinds: `cleo docs list-types` / `DocKindRegistry`, not stale lists. Document storage success is separate from optional projection verification. Read `data.projection` after `cleo docs add`: retain coverage, diagnostics, captured project identity, deadline, and any job/receipt reference. Pending work can have an unresolved committed outcome; inspect it before explicit resume, never repeat the add blindly. One two-second maintenance budget covers preparation through verification; timer expiry does not preempt synchronous SQLite. Verify exact bytes with `cleo docs fetch <slug>` JSON `data.bytesBase64` and `data.metadata.sha256`; rendered content can add a newline.
255
- <!-- /CLEO-INJECTION:section=documents -->
256
- <!-- CLEO-INJECTION:section=human-render -->
257
- ## Human Render Contract (ADR-077)
258
- Typed `RenderableEnvelope<T>` from `@cleocode/contracts`. `envelope.data.kind` ∈ `tree | table | list | grouped-list | section | single | generic` — agents route on `kind`. Render logic in `packages/core/src/render/`, primitives in `packages/animations/render/`, icon enums in `@cleocode/contracts/render/icon.ts`. Register with `registerRenderer(command, kind, fn)`. Commands: `cleo show T<id>` (typed), `cleo show T<id> --human` (force), `cleo tree T<id>` (generic walk of parent + `groups` edges).
259
- <!-- /CLEO-INJECTION:section=human-render -->
74
+ Sessions are terminal-bound. `E_SESSION_UNBOUND` → bind via `cleo session start`, `cleo session resume <id>` or `CLEO_SESSION_ID=<id>`, or pass `--session <id>`; CI and multi-step scripts must export `CLEO_SESSION_ID`. Claude Code adopts a session a human started in its tab; Agent-tool subagents inherit the parent's `CLAUDE_CODE_SESSION_ID`, so they act in the parent's session.
75
+ <!-- /CLEO-INJECTION:section=session-commands -->
260
76
 
261
77
  <!-- CLEO-INJECTION:section=output-contract -->
262
78
  ## CLI Output Contract (ADR-086)
@@ -266,17 +82,14 @@ Typed `RenderableEnvelope<T>` from `@cleocode/contracts`. `envelope.data.kind`
266
82
  | Need | Flag | Example |
267
83
  |------|------|---------|
268
84
  | Scalar extract | `--field <jsonpointer>` | mutate: `id=$(cleo add 'X' --acceptance "..." --field /data/created/0)` · read: `st=$(cleo show T123 --field /data/task/status)` |
269
- | ID-only pipeline | `--output id` | `cleo list --parent EPIC --output id --limit 0 \| while read c; do …; done` — **`--limit 0` means EVERY match on BOTH `list` and `find`** (gh#1302, fixed). Without it, list returns a page of 10 and find a page of 20. `--output count` counts the returned rows, agreeing with IDs/table. `data.population` separates matched/returned counts and archive scope; scalar modes disclose these facts on stderr. |
85
+ | ID-only pipeline | `--output id` | `cleo list --parent EPIC --output id --limit 0` — **`--limit 0` means EVERY match on BOTH `list` and `find`**; without it list returns 10, find 20 |
270
86
  | Returned/affected count | `--output count` | `cleo list --parent EPIC --status pending --output count` |
271
- | TSV (no header) | `--output table` | `cleo list --parent EPIC --output table` |
272
- | Silent (exit-code only) | `--output silent` | `cleo update T123 --status done --output silent` |
273
- | 1-line per record | `--summary` | `cleo list --parent EPIC --summary` |
274
- | Suppress stderr | `--quiet` | `cleo add-batch --file f.json --parent T1 --quiet --output id` |
275
- | Force full record | `--full` | `cleo show T123 --full` |
87
+ | TSV / silent / 1-line | `--output table` · `--output silent` · `--summary` | `cleo update T123 --status done --output silent` |
88
+ | Suppress stderr / full record | `--quiet` · `--full` | `cleo show T123 --full` |
276
89
 
277
- **READ/MUTATE nesting differs:** mutations are FLAT; reads nest: `cleo show` uses `/data/task/status`, NEVER `/data/status`. `--field` resolves projected `description`/`acceptance`/`verification` without `--full`. Unresolvable pointers fail with `E_FIELD_NOT_FOUND` and valid pointers; use those instead of guessing. `cleo verify` returns the full `verification` object, so no confirmation read is needed; its MUTATE extractor is `--field /data/verification`, never `/data/task/...` (gh#1420).
90
+ **READ/MUTATE nesting differs:** mutations are FLAT; reads nest: `cleo show` uses `/data/task/status`, NEVER `/data/status`. Unresolvable pointers fail with `E_FIELD_NOT_FOUND` and list valid pointers; use those instead of guessing. `cleo verify` returns the full `verification` object at `--field /data/verification`.
278
91
 
279
- Mutations (`add`, `add-batch`, `update`, `complete`, `delete`) return `{count, created[], updated[], deleted[], ids[]}` (T9931). Use `/data/created/0` for create/add-batch, `/data/updated/0` for update/complete, `/data/deleted/0` for delete, `/data/count` for counts. `--output id` emits affected IDs once in created/updated/deleted order. `ids[]` is a deprecated alias; `--full` restores full records. Deletion is a soft archive: `cleo delete <id> --cascade` includes descendants; `--force` alone orphans children and permits dependents. Without either, parents with children are rejected. Receipts retain every affected ID, including cascaded children. Rejected output parsing: `cleo show … | tail -1 | jq …`, `cleo list … | jq -r '.data.tasks[].id'`, `cleo add 'X' 2>&1 | grep -oE 'T[0-9]+'`.
92
+ Mutations (`add`, `add-batch`, `update`, `complete`, `delete`) return `{count, created[], updated[], deleted[], ids[]}`: use `/data/created/0`, `/data/updated/0`, `/data/deleted/0`, `/data/count` (`ids[]` is deprecated). Deletion is a soft archive: `cleo delete <id> --cascade` includes descendants; `--force` alone orphans children and permits dependents; without either, parents with children are rejected.
280
93
  <!-- /CLEO-INJECTION:section=output-contract -->
281
94
 
282
95
  <!-- CLEO-INJECTION:section=error-handling -->
@@ -289,155 +102,50 @@ Check exit code (`0` = success) and `"success"` in JSON output after every comma
289
102
  | 4 | `E_NOT_FOUND` | `cleo find` to verify ID |
290
103
  | 6 | `E_VALIDATION` | Check field lengths |
291
104
  | 10 | `E_PARENT_NOT_FOUND` | `cleo exists <id>` |
292
- | 80 | `E_LIFECYCLE_GATE_FAILED` | Parent epic not in implementation stage yet — advance with `cleo lifecycle complete` (now auto-syncs `tasks.pipelineStage`) |
105
+ | 80 | `E_LIFECYCLE_GATE_FAILED` | Parent epic not in implementation stage yet — advance with `cleo lifecycle complete` |
293
106
  | 83 | `E_IVTR_INCOMPLETE` | IVTR loop not released — run `cleo orchestrate ivtr <id> --next` |
294
- | — | `E_EVIDENCE_MISSING` | `cleo verify … --evidence <atoms>` — see "Pre-Complete Gate Ritual" |
295
- | — | `E_EVIDENCE_INSUFFICIENT` | Add missing atom kind for the gate (e.g. `commit:<sha>` + `files:<list>` for `implemented`) |
296
- | — | `E_EVIDENCE_TESTS_FAILED` | Fix failing tests before re-verifying with `tool:pnpm-test` or `test-run:<json>` |
297
- | — | `E_EVIDENCE_TOOL_FAILED` | Tool (biome/tsc/…) exited non-zero; fix source and re-run |
107
+ | — | `E_EVIDENCE_MISSING` / `E_EVIDENCE_INSUFFICIENT` | `cleo verify … --evidence <atoms>` with every atom kind the gate needs (e.g. `commit:<sha>` + `files:<list>` for `implemented`) |
108
+ | — | `E_EVIDENCE_TESTS_FAILED` / `E_EVIDENCE_TOOL_FAILED` | Fix the source or failing tests, then re-verify |
109
+ | — | `E_EVIDENCE_TOOL_VACUOUS` | Tool exited 0 but provably checked nothing (e.g. `tsc` without `-b` on a references-only tsconfig); run it in a covering mode |
298
110
  | — | `E_EVIDENCE_STALE` | Files/commits changed since `verify`; re-verify with updated evidence |
299
- | — | `E_EVIDENCE_INVALID_DECISION` | `decision:<id>` atom — decision ID not found or not accepted/proposed in BRAIN |
300
- | — | `E_EVIDENCE_GIT_ROOT` | The CLEO root is not a git checkout — a LAYOUT fact, not a failing atom. One child repo, or a `commit:` SHA that exists in exactly one child, resolves automatically. Otherwise declare it: `"evidence": { "gitRoot": "<subdir>" }` in `.cleo/project-context.json`, or `CLEO_EVIDENCE_GIT_ROOT=<repo>` for one invocation |
301
- | — | `E_FLAG_REMOVED` | `cleo complete --force` removed per ADR-051. Use `--evidence` or `CLEO_OWNER_OVERRIDE=1` |
111
+ | — | `E_EVIDENCE_GIT_ROOT` | The CLEO root is not a git checkout — a layout fact; declare `"evidence": { "gitRoot": "<subdir>" }` in `.cleo/project-context.json` or set `CLEO_EVIDENCE_GIT_ROOT=<repo>` |
112
+ | — | `E_FLAG_REMOVED` | `cleo complete --force` removed per ADR-051. Use `--evidence` |
302
113
  | — | `E_IDEMPOTENCY_UNSUPPORTED` | That verb ignores `--idempotency-key`; the key was NOT applied. Query before retrying |
303
114
  | 143 / 137 | *(killed — no code)* | **A killed write carries NO information about whether it committed** |
304
115
 
305
116
  ### A killed write is not a failed write
306
117
 
307
- A 143/137 exit or missing output does not establish whether a write committed; teardown may hang after commit. **Never retry a killed mutation blindly.** Read `cleo show <id> --full`: a HIT proves presence even while the writer hangs; a MISS proves nothing until it exits. For discovery use `cleo find "<title>" --include-archive --all` or `cleo list --parent <id> --limit 0`; default find hides archives and list shows only 10 rows with new children last. `add`/`add-batch`/`update`/`docs add`/`memory observe`/`relates add` reject `--idempotency-key`; it cannot make their retries safe.
308
-
118
+ Missing output is equally inconclusive; teardown may hang after commit. **Never retry a killed mutation blindly.** Read `cleo show <id> --full`: a HIT proves presence even while the writer hangs; a MISS proves nothing until it exits. For discovery use `cleo find "<title>" --include-archive --all` or `cleo list --parent <id> --limit 0`. `add`/`add-batch`/`update`/`docs add`/`memory observe`/`relates add` reject `--idempotency-key`; it cannot make their retries safe.
309
119
  <!-- /CLEO-INJECTION:section=error-handling -->
310
120
 
311
121
  <!-- CLEO-INJECTION:section=pre-complete-gate -->
312
122
  ## Pre-Complete Gate Ritual (ADR-051 — evidence required)
313
123
 
314
- Before `cleo complete <id>`, every gate requires programmatic evidence validated against git, files or tools. Bare `cleo verify --all` rejects with `E_EVIDENCE_MISSING`.
315
-
316
- ### 1. Capture evidence for each gate
317
-
318
- Every gate takes `cleo verify T### --gate <gate> --evidence "<atoms>"`:
124
+ Before `cleo complete <id>`, every gate requires programmatic evidence validated against git, files or tools: `cleo verify T### --gate <gate> --evidence "<atoms>"`. Bare `cleo verify --all` rejects with `E_EVIDENCE_MISSING`.
319
125
 
320
126
  | gate | evidence that satisfies it |
321
127
  |------|----------------------------|
322
- | `implemented` | `commit:<sha>;files:path/a.ts,path/b.ts` — or `decision:<id>` for decision-only tasks |
128
+ | `implemented` | `commit:<sha>;files:path/a.ts,path/b.ts` — or `pr:<number>` with `files:<changed-paths>`, or `decision:<id>` for decision-only tasks |
323
129
  | `testsPassed` | `tool:test` (canonical) or `test-run:<json>` |
324
130
  | `qaPassed` | `tool:lint;tool:typecheck` |
325
131
  | `documented` | `files:docs/spec.md` |
326
132
  | `securityPassed` | `tool:security-scan` |
327
133
  | `cleanupDone` | `note:removed dead branches` |
328
134
 
329
- A merged PR and green CI provide provenance. For `implemented`, pair `pr:<number>` with `files:<changed-paths>`; CLEO checks task linkage, complete changed-file coverage, and the actual merge commit's bytes. Documentation-only PRs cannot implement a code-fix task. Documentation and research tasks may use appropriate documentary artifacts.
330
-
331
- When a task has canonical acceptance criteria, name the criteria proved by each implementation, test, or review result using existing syntax such as `satisfies:T1234#AC1`. Example: `cleo verify T1234 --gate implemented --evidence "pr:42;files:src/fix.ts;satisfies:T1234#AC1"`. Record `testsPassed` and `qaPassed` separately with actual verification results and explicit criterion links. The receipt retains criterion hashes, artifact paths, and result references; changed criteria require fresh evidence. A valid child completion leaves any parent with unproven criteria open, and a child waiver does not waive parent criteria.
332
-
333
- ### 1b. Typed acceptance gates — observe before you attest
334
-
335
- Typed gates (`cleo req add <id> --gate '<json>'`) EXECUTE during any `cleo verify … --gate … --evidence …` write on a task that carries them. To run them without recording anything:
336
-
337
- ```bash
338
- cleo verify T### --run # executes typed gates, reports results, persists nothing
339
- ```
340
-
341
- `--run` is read-only and cannot be combined with `--gate`/`--all`/`--reset`. A `test` gate with `minCount` needs its OWN command to emit a machine-readable report (`--reporter=json` for vitest, `--json` for jest); an exit code carries no count, and a report file from a separate invocation is not bound to this run — record that as `test-run:<path>` evidence instead.
342
-
343
- ### 2. Then complete
344
-
345
- ```bash
346
- cleo complete T###
347
- ```
348
-
349
- On complete, CLEO re-validates every hard atom (commit reachable, file sha256 match, test-run hash match). Tampering → `E_EVIDENCE_STALE`, re-verify required.
135
+ Name the acceptance criteria each result proves: `cleo verify T1234 --gate implemented --evidence "commit:abc123;files:src/fix.ts;satisfies:T1234#AC1"`. Record `testsPassed` and `qaPassed` separately with actual verification results and explicit criterion links. Documentation-only PRs cannot implement a code-fix task; changed criteria require fresh evidence, and a child waiver does not waive parent criteria. Then `cleo complete T###` re-validates every hard atom (commit reachable, file sha256, test-run hash); tampering → `E_EVIDENCE_STALE`. Typed gates, `pr:` rules, tool timeouts and the audited owner override: `cleo briefing inject --section evidence`.
350
136
 
351
- ### 3. Record learnings
352
-
353
- ```bash
354
- cleo memory observe "..." --title "..."
355
- ```
356
-
357
- ### Emergency override (audited)
358
-
359
- ```bash
360
- CLEO_OWNER_OVERRIDE=1 \ CLEO_OWNER_OVERRIDE_REASON="incident 1234 hotfix" \ cleo verify T### --gate cleanupDone --evidence "note:owner-approved"
361
- ```
362
-
363
- All overrides append a line to `.cleo/audit/force-bypass.jsonl`. Use sparingly.
364
-
365
- ### Tool resolution + result cache (ADR-061)
366
-
367
- `tool:<name>` resolves through `.cleo/project-context.json` / `primaryType` fallbacks. Cache `.cleo/cache/evidence/<key>.json`: `(canonical, cmd, args, HEAD, dirty-tree fingerprint)`. Parallel verifies coalesce; cross-worktree semaphores: `~/.local/share/cleo/locks/tool-<canonical>/`, limit `CLEO_TOOL_CONCURRENCY_<TOOL>=<n>`. Deadlines: **1800000 ms (30 min) for `test` and `build`**, otherwise 300000 ms (5 min). Positive-integer override: `CLEO_TOOL_TIMEOUT_<TOOL>=<ms>`; invalid values explicitly fail with the tool default. Timeouts cache nothing; increase the deadline before an unchanged retry (gh#1221).
368
-
369
- ### `pr:<number>` retroactive atom (T9764)
370
-
371
- `pr:` proves merge provenance, not completion. CLEO checks actual `mergeCommit`, task linkage and changed files; incomplete inventories or unavailable merge artifacts remain unverified. Fetch the merge commit before `files:` evidence. Task `files` must intersect its diff; prose mentions cannot establish scope. Explicit research/spike and documentation scope retain documentary evidence.
372
-
373
- Required checks: explicit configuration or target repository protection. `release.prRequiredWorkflows: []` requires no checks; it proves neither testing nor review. `.cleo/cache/evidence/pr-<num>.json` retains provenance and changed files; obsolete versions reject. Use `tool:test` or `test-run:<json>` plus appropriate QA tools, linking each result to verified criteria.
374
-
375
- ### Anti-patterns to avoid
376
-
377
- - ❌ Calling `cleo complete` without verifying tests actually ran
378
- - ❌ `cleo verify --all` without `--evidence` (REJECTED post-ADR-051)
379
- - ❌ `cleo complete --force` (REMOVED post-ADR-051)
380
- - ❌ Skipping `cleo memory observe` on non-trivial tasks
381
- - ❌ Self-attesting without programmatic proof
382
- - ❌ Modifying files after `cleo verify` but before `cleo complete` (caught by staleness check)
137
+ Anti-patterns: completing without running tests · `cleo verify --all` without `--evidence` · self-attesting without programmatic proof · modifying files between `cleo verify` and `cleo complete`.
383
138
  <!-- /CLEO-INJECTION:section=pre-complete-gate -->
384
139
 
385
- <!-- CLEO-INJECTION:section=spawn-tiers -->
386
- ## Spawn Prompt Contents (what subagents receive) — T882 / v2.6.0
387
-
388
- `cleo orchestrate spawn <taskId>` embeds a resolved, self-contained prompt; subagents never re-resolve it. Content tiers:
389
-
390
- | Tier | Contents |
391
- |------|----------|
392
- | `0` | Task identity · file paths · session linkage · stage guidance · evidence gates · quality gates · return format · protocol pointer |
393
- | `1` | tier 0 + full **CLEO-INJECTION.md embed** (this document) — **default** |
394
- | `2` | tier 1 + **ct-cleo** + **ct-orchestrator** skill excerpts + **SUBAGENT-PROTOCOL-BLOCK** + anti-patterns |
395
-
396
- `cleo orchestrate spawn T1234 --tier 0|1|2`: tier 0 for quick workers, tier 2 for autonomous ones; default tier 1.
397
-
398
- Before dispatch, assert these required sections: `## Task Identity` · `## File Paths (absolute — do not guess)` · `## Session Linkage` · `## Stage-Specific Guidance` · `## Evidence-Based Gate Ritual (MANDATORY · ADR-051 · T832)` · `## Quality Gates` · `## Return Format Contract (MANDATORY)`.
399
- <!-- /CLEO-INJECTION:section=spawn-tiers -->
400
-
401
140
  <!-- CLEO-INJECTION:section=rules -->
402
141
  ## Rules
403
142
 
404
143
  - No time estimates — use `small`, `medium`, `large` sizing
405
144
  - Token budget: avoid `cleo list` without `--parent`; get usage from `cleo <command> --help` (there is no top-level help command)
406
145
  - Do not read full task details for tasks you won't work on
146
+ - Never read `.cleo/*.db` directly — the store is `.cleo/cleo.db` (prefixed tables); `tasks.db` and `tasks-*.db` snapshots are decoys. Ask the CLI (`cleo doctor superseded-store`)
407
147
  <!-- /CLEO-INJECTION:section=rules -->
408
148
 
409
- <!-- CLEO-INJECTION:section=memory-jit -->
410
- ## Memory Protocol (JIT)
411
-
412
- Pull context on demand — don't pre-load everything:
413
-
414
- | Need | Command |
415
- |------|---------|
416
- | Prior decisions | `cleo memory find "<topic>" --type decision` |
417
- | Known patterns | `cleo memory find "<domain>" --type pattern` |
418
- | Timeline context | `cleo memory timeline <id>` |
419
- | Full details | `cleo memory fetch <id>` |
420
- | Code context | `cleo nexus context <symbol>` |
421
- | Impact analysis | `cleo nexus impact <symbol>` |
422
-
423
- ### Decision Lookup (prefer BRAIN decision-store over inline ledgers)
424
-
425
- Store architectural decisions in BRAIN (`.cleo/brain.db` → `brain_decisions`), not Markdown ledgers. Cite durable IDs from `cleo memory decision-find`.
426
-
427
- **Primary lookup — always try first:**
428
- 1. `cleo memory decision-find --query <term>` — search BRAIN decision records by keyword
429
- 2. `cleo memory find <term> --type decision` — broader memory search scoped to decisions
430
- 3. `cleo memory fetch <id>` — retrieve full decision record by ID
431
-
432
- **Decision IDs (D0xx, AGT-*) are NOT globally unique.** Verify BRAIN `source_table`/`source_rowid` when citing; documents can reuse IDs.
433
-
434
- **Historical fallback:** use `cleo docs list` and `cleo docs fetch <slug>` to inspect canonical documents. Preserve their provenance and do not promote historical text over sourced current guidance.
435
-
436
- Check pending/accepted/superseded status. `decision-find` has **no epic filter**: use query text (`cleo memory decision-find "<epicId>"`) and verify `source_table`/`source_rowid`.
437
-
438
- Budget: 3 JIT calls per task phase. More = task is underspecified.
439
- <!-- /CLEO-INJECTION:section=memory-jit -->
440
-
441
149
  <!-- CLEO-INJECTION:section=escalation -->
442
150
  ## Escalation
443
151