@productbrain/cli 0.1.0-beta.30 → 0.1.0-beta.3015

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 (1089) hide show
  1. package/README.md +72 -174
  2. package/dist/__tests__/adapters.test.js +54 -1
  3. package/dist/__tests__/adapters.test.js.map +1 -1
  4. package/dist/__tests__/audit.test.js +65 -44
  5. package/dist/__tests__/audit.test.js.map +1 -1
  6. package/dist/__tests__/authority-domains-queue.test.d.ts +2 -0
  7. package/dist/__tests__/authority-domains-queue.test.d.ts.map +1 -0
  8. package/dist/__tests__/authority-domains-queue.test.js +169 -0
  9. package/dist/__tests__/authority-domains-queue.test.js.map +1 -0
  10. package/dist/__tests__/authority-domains.test.d.ts +2 -0
  11. package/dist/__tests__/authority-domains.test.d.ts.map +1 -0
  12. package/dist/__tests__/authority-domains.test.js +48 -0
  13. package/dist/__tests__/authority-domains.test.js.map +1 -0
  14. package/dist/__tests__/canonicalRefs.vocab.test.d.ts +2 -0
  15. package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
  16. package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
  17. package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
  18. package/dist/__tests__/capture-receipt-coaching.test.d.ts +2 -0
  19. package/dist/__tests__/capture-receipt-coaching.test.d.ts.map +1 -0
  20. package/dist/__tests__/capture-receipt-coaching.test.js +89 -0
  21. package/dist/__tests__/capture-receipt-coaching.test.js.map +1 -0
  22. package/dist/__tests__/capture-receipt-domain.test.d.ts +2 -0
  23. package/dist/__tests__/capture-receipt-domain.test.d.ts.map +1 -0
  24. package/dist/__tests__/capture-receipt-domain.test.js +29 -0
  25. package/dist/__tests__/capture-receipt-domain.test.js.map +1 -0
  26. package/dist/__tests__/capture.test.js +645 -40
  27. package/dist/__tests__/capture.test.js.map +1 -1
  28. package/dist/__tests__/coaching-mirror-drift.test.d.ts +2 -0
  29. package/dist/__tests__/coaching-mirror-drift.test.d.ts.map +1 -0
  30. package/dist/__tests__/coaching-mirror-drift.test.js +47 -0
  31. package/dist/__tests__/coaching-mirror-drift.test.js.map +1 -0
  32. package/dist/__tests__/codex-prep-parity.test.d.ts +2 -0
  33. package/dist/__tests__/codex-prep-parity.test.d.ts.map +1 -0
  34. package/dist/__tests__/codex-prep-parity.test.js +107 -0
  35. package/dist/__tests__/codex-prep-parity.test.js.map +1 -0
  36. package/dist/__tests__/collection-registry-seed-drift.test.d.ts +2 -0
  37. package/dist/__tests__/collection-registry-seed-drift.test.d.ts.map +1 -0
  38. package/dist/__tests__/collection-registry-seed-drift.test.js +58 -0
  39. package/dist/__tests__/collection-registry-seed-drift.test.js.map +1 -0
  40. package/dist/__tests__/config-prod-fallthrough.test.d.ts +2 -0
  41. package/dist/__tests__/config-prod-fallthrough.test.d.ts.map +1 -0
  42. package/dist/__tests__/config-prod-fallthrough.test.js +82 -0
  43. package/dist/__tests__/config-prod-fallthrough.test.js.map +1 -0
  44. package/dist/__tests__/config.test.d.ts +8 -0
  45. package/dist/__tests__/config.test.d.ts.map +1 -0
  46. package/dist/__tests__/config.test.js +566 -0
  47. package/dist/__tests__/config.test.js.map +1 -0
  48. package/dist/__tests__/constants.test.js +54 -2
  49. package/dist/__tests__/constants.test.js.map +1 -1
  50. package/dist/__tests__/constellation.test.js +16 -22
  51. package/dist/__tests__/constellation.test.js.map +1 -1
  52. package/dist/__tests__/context-strategy.test.js +8 -8
  53. package/dist/__tests__/context-strategy.test.js.map +1 -1
  54. package/dist/__tests__/conversation.test.d.ts +2 -0
  55. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  56. package/dist/__tests__/conversation.test.js +113 -0
  57. package/dist/__tests__/conversation.test.js.map +1 -0
  58. package/dist/__tests__/entry-formatter.test.d.ts +2 -0
  59. package/dist/__tests__/entry-formatter.test.d.ts.map +1 -0
  60. package/dist/__tests__/entry-formatter.test.js +82 -0
  61. package/dist/__tests__/entry-formatter.test.js.map +1 -0
  62. package/dist/__tests__/envelope-contract.test.d.ts +15 -0
  63. package/dist/__tests__/envelope-contract.test.d.ts.map +1 -0
  64. package/dist/__tests__/envelope-contract.test.js +152 -0
  65. package/dist/__tests__/envelope-contract.test.js.map +1 -0
  66. package/dist/__tests__/errors.test.d.ts +2 -0
  67. package/dist/__tests__/errors.test.d.ts.map +1 -0
  68. package/dist/__tests__/errors.test.js +130 -0
  69. package/dist/__tests__/errors.test.js.map +1 -0
  70. package/dist/__tests__/experiment.test.d.ts +6 -0
  71. package/dist/__tests__/experiment.test.d.ts.map +1 -0
  72. package/dist/__tests__/experiment.test.js +69 -0
  73. package/dist/__tests__/experiment.test.js.map +1 -0
  74. package/dist/__tests__/fields.test.js +36 -36
  75. package/dist/__tests__/fields.test.js.map +1 -1
  76. package/dist/__tests__/glossary.test.d.ts +2 -0
  77. package/dist/__tests__/glossary.test.d.ts.map +1 -0
  78. package/dist/__tests__/glossary.test.js +32 -0
  79. package/dist/__tests__/glossary.test.js.map +1 -0
  80. package/dist/__tests__/handshake-augment.test.d.ts +2 -0
  81. package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
  82. package/dist/__tests__/handshake-augment.test.js +424 -0
  83. package/dist/__tests__/handshake-augment.test.js.map +1 -0
  84. package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
  85. package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
  86. package/dist/__tests__/handshake-dormancy.test.js +207 -0
  87. package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
  88. package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
  89. package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
  90. package/dist/__tests__/handshake-formatter.test.js +67 -0
  91. package/dist/__tests__/handshake-formatter.test.js.map +1 -0
  92. package/dist/__tests__/handshake-preview.test.d.ts +2 -0
  93. package/dist/__tests__/handshake-preview.test.d.ts.map +1 -0
  94. package/dist/__tests__/handshake-preview.test.js +950 -0
  95. package/dist/__tests__/handshake-preview.test.js.map +1 -0
  96. package/dist/__tests__/handshake.e2e.test.d.ts +2 -0
  97. package/dist/__tests__/handshake.e2e.test.d.ts.map +1 -0
  98. package/dist/__tests__/handshake.e2e.test.js +1255 -0
  99. package/dist/__tests__/handshake.e2e.test.js.map +1 -0
  100. package/dist/__tests__/handshake.test.js +796 -19
  101. package/dist/__tests__/handshake.test.js.map +1 -1
  102. package/dist/__tests__/health-gap-kinds-drift.test.d.ts +2 -0
  103. package/dist/__tests__/health-gap-kinds-drift.test.d.ts.map +1 -0
  104. package/dist/__tests__/health-gap-kinds-drift.test.js +41 -0
  105. package/dist/__tests__/health-gap-kinds-drift.test.js.map +1 -0
  106. package/dist/__tests__/hook-intents.test.d.ts +2 -0
  107. package/dist/__tests__/hook-intents.test.d.ts.map +1 -0
  108. package/dist/__tests__/hook-intents.test.js +184 -0
  109. package/dist/__tests__/hook-intents.test.js.map +1 -0
  110. package/dist/__tests__/ingest.test.js +37 -28
  111. package/dist/__tests__/ingest.test.js.map +1 -1
  112. package/dist/__tests__/init.test.d.ts +7 -0
  113. package/dist/__tests__/init.test.d.ts.map +1 -0
  114. package/dist/__tests__/init.test.js +146 -0
  115. package/dist/__tests__/init.test.js.map +1 -0
  116. package/dist/__tests__/login.test.js +29 -30
  117. package/dist/__tests__/login.test.js.map +1 -1
  118. package/dist/__tests__/manifest.test.d.ts +6 -0
  119. package/dist/__tests__/manifest.test.d.ts.map +1 -0
  120. package/dist/__tests__/manifest.test.js +255 -0
  121. package/dist/__tests__/manifest.test.js.map +1 -0
  122. package/dist/__tests__/method-publish-coherency.test.d.ts +9 -0
  123. package/dist/__tests__/method-publish-coherency.test.d.ts.map +1 -0
  124. package/dist/__tests__/method-publish-coherency.test.js +71 -0
  125. package/dist/__tests__/method-publish-coherency.test.js.map +1 -0
  126. package/dist/__tests__/method-registry.integration.test.d.ts +6 -0
  127. package/dist/__tests__/method-registry.integration.test.d.ts.map +1 -0
  128. package/dist/__tests__/method-registry.integration.test.js +17 -0
  129. package/dist/__tests__/method-registry.integration.test.js.map +1 -0
  130. package/dist/__tests__/method-registry.test.d.ts +12 -0
  131. package/dist/__tests__/method-registry.test.d.ts.map +1 -0
  132. package/dist/__tests__/method-registry.test.js +86 -0
  133. package/dist/__tests__/method-registry.test.js.map +1 -0
  134. package/dist/__tests__/notice-marker.test.d.ts +2 -0
  135. package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
  136. package/dist/__tests__/notice-marker.test.js +41 -0
  137. package/dist/__tests__/notice-marker.test.js.map +1 -0
  138. package/dist/__tests__/onboarding-path-b.test.d.ts +2 -0
  139. package/dist/__tests__/onboarding-path-b.test.d.ts.map +1 -0
  140. package/dist/__tests__/onboarding-path-b.test.js +46 -0
  141. package/dist/__tests__/onboarding-path-b.test.js.map +1 -0
  142. package/dist/__tests__/onboarding.test.d.ts +6 -0
  143. package/dist/__tests__/onboarding.test.d.ts.map +1 -0
  144. package/dist/__tests__/onboarding.test.js +347 -0
  145. package/dist/__tests__/onboarding.test.js.map +1 -0
  146. package/dist/__tests__/orient.test.js +485 -11
  147. package/dist/__tests__/orient.test.js.map +1 -1
  148. package/dist/__tests__/perimeter.test.d.ts +2 -0
  149. package/dist/__tests__/perimeter.test.d.ts.map +1 -0
  150. package/dist/__tests__/perimeter.test.js +165 -0
  151. package/dist/__tests__/perimeter.test.js.map +1 -0
  152. package/dist/__tests__/personal-layer.test.d.ts +11 -0
  153. package/dist/__tests__/personal-layer.test.d.ts.map +1 -0
  154. package/dist/__tests__/personal-layer.test.js +268 -0
  155. package/dist/__tests__/personal-layer.test.js.map +1 -0
  156. package/dist/__tests__/preview-key-refresh.test.d.ts +2 -0
  157. package/dist/__tests__/preview-key-refresh.test.d.ts.map +1 -0
  158. package/dist/__tests__/preview-key-refresh.test.js +126 -0
  159. package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
  160. package/dist/__tests__/profiles.test.d.ts +2 -0
  161. package/dist/__tests__/profiles.test.d.ts.map +1 -0
  162. package/dist/__tests__/profiles.test.js +320 -0
  163. package/dist/__tests__/profiles.test.js.map +1 -0
  164. package/dist/__tests__/promote-batch.test.d.ts +2 -0
  165. package/dist/__tests__/promote-batch.test.d.ts.map +1 -0
  166. package/dist/__tests__/promote-batch.test.js +185 -0
  167. package/dist/__tests__/promote-batch.test.js.map +1 -0
  168. package/dist/__tests__/promote.test.js +297 -40
  169. package/dist/__tests__/promote.test.js.map +1 -1
  170. package/dist/__tests__/prompts.test.d.ts +6 -0
  171. package/dist/__tests__/prompts.test.d.ts.map +1 -0
  172. package/dist/__tests__/prompts.test.js +146 -0
  173. package/dist/__tests__/prompts.test.js.map +1 -0
  174. package/dist/__tests__/proof-run.test.d.ts +2 -0
  175. package/dist/__tests__/proof-run.test.d.ts.map +1 -0
  176. package/dist/__tests__/proof-run.test.js +255 -0
  177. package/dist/__tests__/proof-run.test.js.map +1 -0
  178. package/dist/__tests__/proposals.test.js +24 -47
  179. package/dist/__tests__/proposals.test.js.map +1 -1
  180. package/dist/__tests__/relate.test.js +20 -37
  181. package/dist/__tests__/relate.test.js.map +1 -1
  182. package/dist/__tests__/restore.test.d.ts +2 -0
  183. package/dist/__tests__/restore.test.d.ts.map +1 -0
  184. package/dist/__tests__/restore.test.js +85 -0
  185. package/dist/__tests__/restore.test.js.map +1 -0
  186. package/dist/__tests__/runner.test.js +19 -15
  187. package/dist/__tests__/runner.test.js.map +1 -1
  188. package/dist/__tests__/session-close-loop.test.d.ts +2 -0
  189. package/dist/__tests__/session-close-loop.test.d.ts.map +1 -0
  190. package/dist/__tests__/session-close-loop.test.js +231 -0
  191. package/dist/__tests__/session-close-loop.test.js.map +1 -0
  192. package/dist/__tests__/session-label.test.d.ts +2 -0
  193. package/dist/__tests__/session-label.test.d.ts.map +1 -0
  194. package/dist/__tests__/session-label.test.js +46 -0
  195. package/dist/__tests__/session-label.test.js.map +1 -0
  196. package/dist/__tests__/session-list-show.test.d.ts +2 -0
  197. package/dist/__tests__/session-list-show.test.d.ts.map +1 -0
  198. package/dist/__tests__/session-list-show.test.js +174 -0
  199. package/dist/__tests__/session-list-show.test.js.map +1 -0
  200. package/dist/__tests__/session-reset.test.d.ts +2 -0
  201. package/dist/__tests__/session-reset.test.d.ts.map +1 -0
  202. package/dist/__tests__/session-reset.test.js +138 -0
  203. package/dist/__tests__/session-reset.test.js.map +1 -0
  204. package/dist/__tests__/session-resume-backstop.test.d.ts +2 -0
  205. package/dist/__tests__/session-resume-backstop.test.d.ts.map +1 -0
  206. package/dist/__tests__/session-resume-backstop.test.js +99 -0
  207. package/dist/__tests__/session-resume-backstop.test.js.map +1 -0
  208. package/dist/__tests__/session-start-key-refresh.test.d.ts +2 -0
  209. package/dist/__tests__/session-start-key-refresh.test.d.ts.map +1 -0
  210. package/dist/__tests__/session-start-key-refresh.test.js +183 -0
  211. package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
  212. package/dist/__tests__/session-state-machine.test.d.ts +2 -0
  213. package/dist/__tests__/session-state-machine.test.d.ts.map +1 -0
  214. package/dist/__tests__/session-state-machine.test.js +379 -0
  215. package/dist/__tests__/session-state-machine.test.js.map +1 -0
  216. package/dist/__tests__/session-switch.test.d.ts +2 -0
  217. package/dist/__tests__/session-switch.test.d.ts.map +1 -0
  218. package/dist/__tests__/session-switch.test.js +132 -0
  219. package/dist/__tests__/session-switch.test.js.map +1 -0
  220. package/dist/__tests__/session-touch.test.js +11 -11
  221. package/dist/__tests__/session-touch.test.js.map +1 -1
  222. package/dist/__tests__/session.test.js +4 -10
  223. package/dist/__tests__/session.test.js.map +1 -1
  224. package/dist/__tests__/setup-ingest.test.d.ts +2 -0
  225. package/dist/__tests__/setup-ingest.test.d.ts.map +1 -0
  226. package/dist/__tests__/setup-ingest.test.js +71 -0
  227. package/dist/__tests__/setup-ingest.test.js.map +1 -0
  228. package/dist/__tests__/setup-resolver.test.d.ts +14 -0
  229. package/dist/__tests__/setup-resolver.test.d.ts.map +1 -0
  230. package/dist/__tests__/setup-resolver.test.js +228 -0
  231. package/dist/__tests__/setup-resolver.test.js.map +1 -0
  232. package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
  233. package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
  234. package/dist/__tests__/skill-vocabulary.test.js +192 -0
  235. package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
  236. package/dist/__tests__/spinner-labels.test.d.ts +2 -0
  237. package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
  238. package/dist/__tests__/spinner-labels.test.js +23 -0
  239. package/dist/__tests__/spinner-labels.test.js.map +1 -0
  240. package/dist/__tests__/state.test.d.ts +6 -0
  241. package/dist/__tests__/state.test.d.ts.map +1 -0
  242. package/dist/__tests__/state.test.js +97 -0
  243. package/dist/__tests__/state.test.js.map +1 -0
  244. package/dist/__tests__/surfaces.test.d.ts +2 -0
  245. package/dist/__tests__/surfaces.test.d.ts.map +1 -0
  246. package/dist/__tests__/surfaces.test.js +46 -0
  247. package/dist/__tests__/surfaces.test.js.map +1 -0
  248. package/dist/__tests__/update-check.test.d.ts +2 -0
  249. package/dist/__tests__/update-check.test.d.ts.map +1 -0
  250. package/dist/__tests__/update-check.test.js +215 -0
  251. package/dist/__tests__/update-check.test.js.map +1 -0
  252. package/dist/__tests__/update.test.js +122 -81
  253. package/dist/__tests__/update.test.js.map +1 -1
  254. package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
  255. package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
  256. package/dist/__tests__/upgrade-runner.test.js +54 -0
  257. package/dist/__tests__/upgrade-runner.test.js.map +1 -0
  258. package/dist/__tests__/upgrade.test.d.ts +2 -0
  259. package/dist/__tests__/upgrade.test.d.ts.map +1 -0
  260. package/dist/__tests__/upgrade.test.js +56 -0
  261. package/dist/__tests__/upgrade.test.js.map +1 -0
  262. package/dist/__tests__/verify-formatter.test.d.ts +2 -0
  263. package/dist/__tests__/verify-formatter.test.d.ts.map +1 -0
  264. package/dist/__tests__/verify-formatter.test.js +85 -0
  265. package/dist/__tests__/verify-formatter.test.js.map +1 -0
  266. package/dist/__tests__/vocabulary-leak.test.d.ts +39 -0
  267. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
  268. package/dist/__tests__/vocabulary-leak.test.js +539 -0
  269. package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
  270. package/dist/__tests__/workspace.test.d.ts +2 -0
  271. package/dist/__tests__/workspace.test.d.ts.map +1 -0
  272. package/dist/__tests__/workspace.test.js +328 -0
  273. package/dist/__tests__/workspace.test.js.map +1 -0
  274. package/dist/__tests__/workspaceNotice.test.d.ts +2 -0
  275. package/dist/__tests__/workspaceNotice.test.d.ts.map +1 -0
  276. package/dist/__tests__/workspaceNotice.test.js +338 -0
  277. package/dist/__tests__/workspaceNotice.test.js.map +1 -0
  278. package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
  279. package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
  280. package/dist/commands/__tests__/connect-handoff.test.js +111 -0
  281. package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
  282. package/dist/commands/__tests__/rework.test.d.ts +2 -0
  283. package/dist/commands/__tests__/rework.test.d.ts.map +1 -0
  284. package/dist/commands/__tests__/rework.test.js +149 -0
  285. package/dist/commands/__tests__/rework.test.js.map +1 -0
  286. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
  287. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
  288. package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
  289. package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
  290. package/dist/commands/__tests__/setup-state.test.d.ts +2 -0
  291. package/dist/commands/__tests__/setup-state.test.d.ts.map +1 -0
  292. package/dist/commands/__tests__/setup-state.test.js +194 -0
  293. package/dist/commands/__tests__/setup-state.test.js.map +1 -0
  294. package/dist/commands/accept.d.ts.map +1 -1
  295. package/dist/commands/accept.js +10 -6
  296. package/dist/commands/accept.js.map +1 -1
  297. package/dist/commands/admin/cockpit.d.ts +90 -0
  298. package/dist/commands/admin/cockpit.d.ts.map +1 -0
  299. package/dist/commands/admin/cockpit.js +618 -0
  300. package/dist/commands/admin/cockpit.js.map +1 -0
  301. package/dist/commands/admin/index.d.ts +21 -0
  302. package/dist/commands/admin/index.d.ts.map +1 -0
  303. package/dist/commands/admin/index.js +256 -0
  304. package/dist/commands/admin/index.js.map +1 -0
  305. package/dist/commands/admin/inspect.d.ts +30 -0
  306. package/dist/commands/admin/inspect.d.ts.map +1 -0
  307. package/dist/commands/admin/inspect.js +555 -0
  308. package/dist/commands/admin/inspect.js.map +1 -0
  309. package/dist/commands/admin/inspect.test.d.ts +7 -0
  310. package/dist/commands/admin/inspect.test.d.ts.map +1 -0
  311. package/dist/commands/admin/inspect.test.js +90 -0
  312. package/dist/commands/admin/inspect.test.js.map +1 -0
  313. package/dist/commands/admin/manage.d.ts +8 -0
  314. package/dist/commands/admin/manage.d.ts.map +1 -0
  315. package/dist/commands/admin/manage.js +260 -0
  316. package/dist/commands/admin/manage.js.map +1 -0
  317. package/dist/commands/admin/manage.test.d.ts +16 -0
  318. package/dist/commands/admin/manage.test.d.ts.map +1 -0
  319. package/dist/commands/admin/manage.test.js +159 -0
  320. package/dist/commands/admin/manage.test.js.map +1 -0
  321. package/dist/commands/admin/seed.d.ts +75 -0
  322. package/dist/commands/admin/seed.d.ts.map +1 -0
  323. package/dist/commands/admin/seed.js +944 -0
  324. package/dist/commands/admin/seed.js.map +1 -0
  325. package/dist/commands/admin/seed.test.d.ts +11 -0
  326. package/dist/commands/admin/seed.test.d.ts.map +1 -0
  327. package/dist/commands/admin/seed.test.js +127 -0
  328. package/dist/commands/admin/seed.test.js.map +1 -0
  329. package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
  330. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
  331. package/dist/commands/admin/seedRegistryEntries.generated.js +153 -0
  332. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
  333. package/dist/commands/admin/seedRegistryEntries.test.d.ts +13 -0
  334. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
  335. package/dist/commands/admin/seedRegistryEntries.test.js +91 -0
  336. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
  337. package/dist/commands/audit.d.ts.map +1 -1
  338. package/dist/commands/audit.js +42 -7
  339. package/dist/commands/audit.js.map +1 -1
  340. package/dist/commands/authority-domains.d.ts +157 -0
  341. package/dist/commands/authority-domains.d.ts.map +1 -0
  342. package/dist/commands/authority-domains.js +387 -0
  343. package/dist/commands/authority-domains.js.map +1 -0
  344. package/dist/commands/brief.d.ts.map +1 -1
  345. package/dist/commands/brief.js +14 -5
  346. package/dist/commands/brief.js.map +1 -1
  347. package/dist/commands/capture.d.ts +12 -0
  348. package/dist/commands/capture.d.ts.map +1 -1
  349. package/dist/commands/capture.js +277 -80
  350. package/dist/commands/capture.js.map +1 -1
  351. package/dist/commands/chain-walk.d.ts.map +1 -1
  352. package/dist/commands/chain-walk.js +8 -3
  353. package/dist/commands/chain-walk.js.map +1 -1
  354. package/dist/commands/changes.d.ts.map +1 -1
  355. package/dist/commands/changes.js +8 -3
  356. package/dist/commands/changes.js.map +1 -1
  357. package/dist/commands/codex-prep.d.ts +12 -1
  358. package/dist/commands/codex-prep.d.ts.map +1 -1
  359. package/dist/commands/codex-prep.js +25 -87
  360. package/dist/commands/codex-prep.js.map +1 -1
  361. package/dist/commands/collections.d.ts.map +1 -1
  362. package/dist/commands/collections.js +11 -7
  363. package/dist/commands/collections.js.map +1 -1
  364. package/dist/commands/conflicts.d.ts +10 -0
  365. package/dist/commands/conflicts.d.ts.map +1 -0
  366. package/dist/commands/conflicts.js +103 -0
  367. package/dist/commands/conflicts.js.map +1 -0
  368. package/dist/commands/conflicts.test.d.ts +2 -0
  369. package/dist/commands/conflicts.test.d.ts.map +1 -0
  370. package/dist/commands/conflicts.test.js +97 -0
  371. package/dist/commands/conflicts.test.js.map +1 -0
  372. package/dist/commands/connect-config.test.d.ts +2 -0
  373. package/dist/commands/connect-config.test.d.ts.map +1 -0
  374. package/dist/commands/connect-config.test.js +44 -0
  375. package/dist/commands/connect-config.test.js.map +1 -0
  376. package/dist/commands/connect-context.d.ts +45 -0
  377. package/dist/commands/connect-context.d.ts.map +1 -0
  378. package/dist/commands/connect-context.js +83 -0
  379. package/dist/commands/connect-context.js.map +1 -0
  380. package/dist/commands/connect-context.test.d.ts +2 -0
  381. package/dist/commands/connect-context.test.d.ts.map +1 -0
  382. package/dist/commands/connect-context.test.js +158 -0
  383. package/dist/commands/connect-context.test.js.map +1 -0
  384. package/dist/commands/connect-handoff.d.ts +51 -0
  385. package/dist/commands/connect-handoff.d.ts.map +1 -0
  386. package/dist/commands/connect-handoff.js +70 -0
  387. package/dist/commands/connect-handoff.js.map +1 -0
  388. package/dist/commands/connect-integration.test.d.ts +7 -0
  389. package/dist/commands/connect-integration.test.d.ts.map +1 -0
  390. package/dist/commands/connect-integration.test.js +219 -0
  391. package/dist/commands/connect-integration.test.js.map +1 -0
  392. package/dist/commands/connect-screens.d.ts +33 -0
  393. package/dist/commands/connect-screens.d.ts.map +1 -0
  394. package/dist/commands/connect-screens.js +124 -0
  395. package/dist/commands/connect-screens.js.map +1 -0
  396. package/dist/commands/connect.d.ts +42 -0
  397. package/dist/commands/connect.d.ts.map +1 -0
  398. package/dist/commands/connect.js +361 -0
  399. package/dist/commands/connect.js.map +1 -0
  400. package/dist/commands/connect.test.d.ts +6 -0
  401. package/dist/commands/connect.test.d.ts.map +1 -0
  402. package/dist/commands/connect.test.js +428 -0
  403. package/dist/commands/connect.test.js.map +1 -0
  404. package/dist/commands/constellation.d.ts.map +1 -1
  405. package/dist/commands/constellation.js +8 -3
  406. package/dist/commands/constellation.js.map +1 -1
  407. package/dist/commands/context.d.ts.map +1 -1
  408. package/dist/commands/context.js +8 -3
  409. package/dist/commands/context.js.map +1 -1
  410. package/dist/commands/cross-cut.d.ts.map +1 -1
  411. package/dist/commands/cross-cut.js +2 -2
  412. package/dist/commands/cross-cut.js.map +1 -1
  413. package/dist/commands/doctor.d.ts +9 -2
  414. package/dist/commands/doctor.d.ts.map +1 -1
  415. package/dist/commands/doctor.js +215 -42
  416. package/dist/commands/doctor.js.map +1 -1
  417. package/dist/commands/doctor.test.d.ts +3 -1
  418. package/dist/commands/doctor.test.d.ts.map +1 -1
  419. package/dist/commands/doctor.test.js +370 -11
  420. package/dist/commands/doctor.test.js.map +1 -1
  421. package/dist/commands/feedback.d.ts +36 -0
  422. package/dist/commands/feedback.d.ts.map +1 -0
  423. package/dist/commands/feedback.js +187 -0
  424. package/dist/commands/feedback.js.map +1 -0
  425. package/dist/commands/feedback.test.d.ts +2 -0
  426. package/dist/commands/feedback.test.d.ts.map +1 -0
  427. package/dist/commands/feedback.test.js +119 -0
  428. package/dist/commands/feedback.test.js.map +1 -0
  429. package/dist/commands/fields.d.ts.map +1 -1
  430. package/dist/commands/fields.js +8 -4
  431. package/dist/commands/fields.js.map +1 -1
  432. package/dist/commands/files.d.ts +26 -0
  433. package/dist/commands/files.d.ts.map +1 -0
  434. package/dist/commands/files.js +160 -0
  435. package/dist/commands/files.js.map +1 -0
  436. package/dist/commands/files.test.d.ts +2 -0
  437. package/dist/commands/files.test.d.ts.map +1 -0
  438. package/dist/commands/files.test.js +243 -0
  439. package/dist/commands/files.test.js.map +1 -0
  440. package/dist/commands/get.d.ts.map +1 -1
  441. package/dist/commands/get.js +14 -6
  442. package/dist/commands/get.js.map +1 -1
  443. package/dist/commands/handshake.d.ts +225 -2
  444. package/dist/commands/handshake.d.ts.map +1 -1
  445. package/dist/commands/handshake.js +2139 -81
  446. package/dist/commands/handshake.js.map +1 -1
  447. package/dist/commands/ingest.d.ts.map +1 -1
  448. package/dist/commands/ingest.js +26 -9
  449. package/dist/commands/ingest.js.map +1 -1
  450. package/dist/commands/init.d.ts +14 -0
  451. package/dist/commands/init.d.ts.map +1 -0
  452. package/dist/commands/init.js +109 -0
  453. package/dist/commands/init.js.map +1 -0
  454. package/dist/commands/login.d.ts.map +1 -1
  455. package/dist/commands/login.js +72 -35
  456. package/dist/commands/login.js.map +1 -1
  457. package/dist/commands/method.d.ts +99 -0
  458. package/dist/commands/method.d.ts.map +1 -0
  459. package/dist/commands/method.js +804 -0
  460. package/dist/commands/method.js.map +1 -0
  461. package/dist/commands/migrate-setup.d.ts +18 -0
  462. package/dist/commands/migrate-setup.d.ts.map +1 -0
  463. package/dist/commands/migrate-setup.js +148 -0
  464. package/dist/commands/migrate-setup.js.map +1 -0
  465. package/dist/commands/organisation.d.ts +41 -0
  466. package/dist/commands/organisation.d.ts.map +1 -0
  467. package/dist/commands/organisation.js +353 -0
  468. package/dist/commands/organisation.js.map +1 -0
  469. package/dist/commands/organisation.test.d.ts +2 -0
  470. package/dist/commands/organisation.test.d.ts.map +1 -0
  471. package/dist/commands/organisation.test.js +233 -0
  472. package/dist/commands/organisation.test.js.map +1 -0
  473. package/dist/commands/organisationHierarchy.d.ts +8 -0
  474. package/dist/commands/organisationHierarchy.d.ts.map +1 -0
  475. package/dist/commands/organisationHierarchy.js +67 -0
  476. package/dist/commands/organisationHierarchy.js.map +1 -0
  477. package/dist/commands/organisationHierarchy.test.d.ts +2 -0
  478. package/dist/commands/organisationHierarchy.test.d.ts.map +1 -0
  479. package/dist/commands/organisationHierarchy.test.js +55 -0
  480. package/dist/commands/organisationHierarchy.test.js.map +1 -0
  481. package/dist/commands/organisationWrite.d.ts +18 -0
  482. package/dist/commands/organisationWrite.d.ts.map +1 -0
  483. package/dist/commands/organisationWrite.js +50 -0
  484. package/dist/commands/organisationWrite.js.map +1 -0
  485. package/dist/commands/orient.d.ts +121 -2
  486. package/dist/commands/orient.d.ts.map +1 -1
  487. package/dist/commands/orient.js +222 -7
  488. package/dist/commands/orient.js.map +1 -1
  489. package/dist/commands/profile.d.ts +34 -0
  490. package/dist/commands/profile.d.ts.map +1 -0
  491. package/dist/commands/profile.js +170 -0
  492. package/dist/commands/profile.js.map +1 -0
  493. package/dist/commands/promote.d.ts +12 -1
  494. package/dist/commands/promote.d.ts.map +1 -1
  495. package/dist/commands/promote.js +246 -55
  496. package/dist/commands/promote.js.map +1 -1
  497. package/dist/commands/proof-run.d.ts +51 -0
  498. package/dist/commands/proof-run.d.ts.map +1 -0
  499. package/dist/commands/proof-run.js +209 -0
  500. package/dist/commands/proof-run.js.map +1 -0
  501. package/dist/commands/proposals.d.ts.map +1 -1
  502. package/dist/commands/proposals.js +2 -2
  503. package/dist/commands/proposals.js.map +1 -1
  504. package/dist/commands/reject.d.ts.map +1 -1
  505. package/dist/commands/reject.js +14 -7
  506. package/dist/commands/reject.js.map +1 -1
  507. package/dist/commands/relate.d.ts.map +1 -1
  508. package/dist/commands/relate.js +45 -14
  509. package/dist/commands/relate.js.map +1 -1
  510. package/dist/commands/restore.d.ts +2 -0
  511. package/dist/commands/restore.d.ts.map +1 -0
  512. package/dist/commands/restore.js +83 -0
  513. package/dist/commands/restore.js.map +1 -0
  514. package/dist/commands/rework.d.ts +24 -0
  515. package/dist/commands/rework.d.ts.map +1 -0
  516. package/dist/commands/rework.js +97 -0
  517. package/dist/commands/rework.js.map +1 -0
  518. package/dist/commands/scoreboard.d.ts +28 -0
  519. package/dist/commands/scoreboard.d.ts.map +1 -0
  520. package/dist/commands/scoreboard.js +40 -0
  521. package/dist/commands/scoreboard.js.map +1 -0
  522. package/dist/commands/search.d.ts.map +1 -1
  523. package/dist/commands/search.js +2 -2
  524. package/dist/commands/search.js.map +1 -1
  525. package/dist/commands/session.d.ts +55 -2
  526. package/dist/commands/session.d.ts.map +1 -1
  527. package/dist/commands/session.js +485 -45
  528. package/dist/commands/session.js.map +1 -1
  529. package/dist/commands/setup-audit.d.ts +59 -0
  530. package/dist/commands/setup-audit.d.ts.map +1 -0
  531. package/dist/commands/setup-audit.js +250 -0
  532. package/dist/commands/setup-audit.js.map +1 -0
  533. package/dist/commands/setup-detect-surfaces.d.ts +38 -0
  534. package/dist/commands/setup-detect-surfaces.d.ts.map +1 -0
  535. package/dist/commands/setup-detect-surfaces.js +76 -0
  536. package/dist/commands/setup-detect-surfaces.js.map +1 -0
  537. package/dist/commands/setup-ingest.d.ts +17 -0
  538. package/dist/commands/setup-ingest.d.ts.map +1 -0
  539. package/dist/commands/setup-ingest.js +174 -0
  540. package/dist/commands/setup-ingest.js.map +1 -0
  541. package/dist/commands/setup-resolver.d.ts +58 -0
  542. package/dist/commands/setup-resolver.d.ts.map +1 -0
  543. package/dist/commands/setup-resolver.js +150 -0
  544. package/dist/commands/setup-resolver.js.map +1 -0
  545. package/dist/commands/setup-state.d.ts +42 -0
  546. package/dist/commands/setup-state.d.ts.map +1 -0
  547. package/dist/commands/setup-state.js +93 -0
  548. package/dist/commands/setup-state.js.map +1 -0
  549. package/dist/commands/setup.d.ts +17 -10
  550. package/dist/commands/setup.d.ts.map +1 -1
  551. package/dist/commands/setup.js +50 -194
  552. package/dist/commands/setup.js.map +1 -1
  553. package/dist/commands/update.d.ts +8 -0
  554. package/dist/commands/update.d.ts.map +1 -1
  555. package/dist/commands/update.js +90 -49
  556. package/dist/commands/update.js.map +1 -1
  557. package/dist/commands/upgrade.d.ts +5 -0
  558. package/dist/commands/upgrade.d.ts.map +1 -0
  559. package/dist/commands/upgrade.js +110 -0
  560. package/dist/commands/upgrade.js.map +1 -0
  561. package/dist/commands/usage.d.ts +40 -0
  562. package/dist/commands/usage.d.ts.map +1 -0
  563. package/dist/commands/usage.js +214 -0
  564. package/dist/commands/usage.js.map +1 -0
  565. package/dist/commands/verify.d.ts.map +1 -1
  566. package/dist/commands/verify.js +19 -7
  567. package/dist/commands/verify.js.map +1 -1
  568. package/dist/commands/welcome.d.ts +21 -0
  569. package/dist/commands/welcome.d.ts.map +1 -0
  570. package/dist/commands/welcome.js +50 -0
  571. package/dist/commands/welcome.js.map +1 -0
  572. package/dist/commands/whoami.d.ts +12 -0
  573. package/dist/commands/whoami.d.ts.map +1 -0
  574. package/dist/commands/whoami.js +70 -0
  575. package/dist/commands/whoami.js.map +1 -0
  576. package/dist/commands/whoami.test.d.ts +2 -0
  577. package/dist/commands/whoami.test.d.ts.map +1 -0
  578. package/dist/commands/whoami.test.js +50 -0
  579. package/dist/commands/whoami.test.js.map +1 -0
  580. package/dist/commands/workspace.d.ts +115 -0
  581. package/dist/commands/workspace.d.ts.map +1 -0
  582. package/dist/commands/workspace.js +263 -0
  583. package/dist/commands/workspace.js.map +1 -0
  584. package/dist/formatters/__tests__/orient-possibleConflict.test.d.ts +2 -0
  585. package/dist/formatters/__tests__/orient-possibleConflict.test.d.ts.map +1 -0
  586. package/dist/formatters/__tests__/orient-possibleConflict.test.js +68 -0
  587. package/dist/formatters/__tests__/orient-possibleConflict.test.js.map +1 -0
  588. package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
  589. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
  590. package/dist/formatters/__tests__/orient-provenance.test.js +548 -0
  591. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
  592. package/dist/formatters/__tests__/session-list-show.test.d.ts +2 -0
  593. package/dist/formatters/__tests__/session-list-show.test.d.ts.map +1 -0
  594. package/dist/formatters/__tests__/session-list-show.test.js +159 -0
  595. package/dist/formatters/__tests__/session-list-show.test.js.map +1 -0
  596. package/dist/formatters/__tests__/session.test.d.ts +2 -0
  597. package/dist/formatters/__tests__/session.test.d.ts.map +1 -0
  598. package/dist/formatters/__tests__/session.test.js +113 -0
  599. package/dist/formatters/__tests__/session.test.js.map +1 -0
  600. package/dist/formatters/audit.d.ts +6 -0
  601. package/dist/formatters/audit.d.ts.map +1 -1
  602. package/dist/formatters/audit.js.map +1 -1
  603. package/dist/formatters/capture.d.ts +8 -0
  604. package/dist/formatters/capture.d.ts.map +1 -1
  605. package/dist/formatters/capture.js +9 -0
  606. package/dist/formatters/capture.js.map +1 -1
  607. package/dist/formatters/coaching.d.ts +51 -0
  608. package/dist/formatters/coaching.d.ts.map +1 -0
  609. package/dist/formatters/coaching.js +46 -0
  610. package/dist/formatters/coaching.js.map +1 -0
  611. package/dist/formatters/conflicts.d.ts +44 -0
  612. package/dist/formatters/conflicts.d.ts.map +1 -0
  613. package/dist/formatters/conflicts.js +44 -0
  614. package/dist/formatters/conflicts.js.map +1 -0
  615. package/dist/formatters/conflicts.test.d.ts +2 -0
  616. package/dist/formatters/conflicts.test.d.ts.map +1 -0
  617. package/dist/formatters/conflicts.test.js +83 -0
  618. package/dist/formatters/conflicts.test.js.map +1 -0
  619. package/dist/formatters/context.d.ts +1 -1
  620. package/dist/formatters/context.d.ts.map +1 -1
  621. package/dist/formatters/context.js.map +1 -1
  622. package/dist/formatters/entry.d.ts +44 -0
  623. package/dist/formatters/entry.d.ts.map +1 -1
  624. package/dist/formatters/entry.js +70 -7
  625. package/dist/formatters/entry.js.map +1 -1
  626. package/dist/formatters/feedback.d.ts +56 -0
  627. package/dist/formatters/feedback.d.ts.map +1 -0
  628. package/dist/formatters/feedback.js +89 -0
  629. package/dist/formatters/feedback.js.map +1 -0
  630. package/dist/formatters/feedback.test.d.ts +2 -0
  631. package/dist/formatters/feedback.test.d.ts.map +1 -0
  632. package/dist/formatters/feedback.test.js +112 -0
  633. package/dist/formatters/feedback.test.js.map +1 -0
  634. package/dist/formatters/handshake.d.ts +39 -0
  635. package/dist/formatters/handshake.d.ts.map +1 -1
  636. package/dist/formatters/handshake.js +133 -3
  637. package/dist/formatters/handshake.js.map +1 -1
  638. package/dist/formatters/orient.coherencyCheckTag.test.d.ts +2 -0
  639. package/dist/formatters/orient.coherencyCheckTag.test.d.ts.map +1 -0
  640. package/dist/formatters/orient.coherencyCheckTag.test.js +22 -0
  641. package/dist/formatters/orient.coherencyCheckTag.test.js.map +1 -0
  642. package/dist/formatters/orient.d.ts +245 -4
  643. package/dist/formatters/orient.d.ts.map +1 -1
  644. package/dist/formatters/orient.js +302 -25
  645. package/dist/formatters/orient.js.map +1 -1
  646. package/dist/formatters/orient.rcrtMiss.test.d.ts +2 -0
  647. package/dist/formatters/orient.rcrtMiss.test.d.ts.map +1 -0
  648. package/dist/formatters/orient.rcrtMiss.test.js +146 -0
  649. package/dist/formatters/orient.rcrtMiss.test.js.map +1 -0
  650. package/dist/formatters/promote.d.ts +43 -0
  651. package/dist/formatters/promote.d.ts.map +1 -1
  652. package/dist/formatters/promote.js +32 -0
  653. package/dist/formatters/promote.js.map +1 -1
  654. package/dist/formatters/scoreboard.d.ts +11 -0
  655. package/dist/formatters/scoreboard.d.ts.map +1 -0
  656. package/dist/formatters/scoreboard.js +107 -0
  657. package/dist/formatters/scoreboard.js.map +1 -0
  658. package/dist/formatters/scoreboard.test.d.ts +2 -0
  659. package/dist/formatters/scoreboard.test.d.ts.map +1 -0
  660. package/dist/formatters/scoreboard.test.js +144 -0
  661. package/dist/formatters/scoreboard.test.js.map +1 -0
  662. package/dist/formatters/session-feedback.test.d.ts +2 -0
  663. package/dist/formatters/session-feedback.test.d.ts.map +1 -0
  664. package/dist/formatters/session-feedback.test.js +49 -0
  665. package/dist/formatters/session-feedback.test.js.map +1 -0
  666. package/dist/formatters/session.d.ts +101 -1
  667. package/dist/formatters/session.d.ts.map +1 -1
  668. package/dist/formatters/session.js +272 -9
  669. package/dist/formatters/session.js.map +1 -1
  670. package/dist/formatters/update.d.ts +3 -0
  671. package/dist/formatters/update.d.ts.map +1 -1
  672. package/dist/formatters/update.js +4 -0
  673. package/dist/formatters/update.js.map +1 -1
  674. package/dist/formatters/verify.d.ts +12 -4
  675. package/dist/formatters/verify.d.ts.map +1 -1
  676. package/dist/formatters/verify.js +20 -2
  677. package/dist/formatters/verify.js.map +1 -1
  678. package/dist/generated/healthGapKinds.generated.d.ts +12 -0
  679. package/dist/generated/healthGapKinds.generated.d.ts.map +1 -0
  680. package/dist/generated/healthGapKinds.generated.js +24 -0
  681. package/dist/generated/healthGapKinds.generated.js.map +1 -0
  682. package/dist/generators/adapters.d.ts +33 -0
  683. package/dist/generators/adapters.d.ts.map +1 -1
  684. package/dist/generators/adapters.js +64 -4
  685. package/dist/generators/adapters.js.map +1 -1
  686. package/dist/generators/archetypes.d.ts.map +1 -1
  687. package/dist/generators/archetypes.js +46 -9
  688. package/dist/generators/archetypes.js.map +1 -1
  689. package/dist/generators/archetypes.test.js +35 -0
  690. package/dist/generators/archetypes.test.js.map +1 -1
  691. package/dist/generators/boundary-manifest.d.ts +29 -0
  692. package/dist/generators/boundary-manifest.d.ts.map +1 -0
  693. package/dist/generators/boundary-manifest.js +183 -0
  694. package/dist/generators/boundary-manifest.js.map +1 -0
  695. package/dist/generators/boundary-manifest.real-file.test.d.ts +2 -0
  696. package/dist/generators/boundary-manifest.real-file.test.d.ts.map +1 -0
  697. package/dist/generators/boundary-manifest.real-file.test.js +70 -0
  698. package/dist/generators/boundary-manifest.real-file.test.js.map +1 -0
  699. package/dist/generators/boundary-manifest.test.d.ts +2 -0
  700. package/dist/generators/boundary-manifest.test.d.ts.map +1 -0
  701. package/dist/generators/boundary-manifest.test.js +91 -0
  702. package/dist/generators/boundary-manifest.test.js.map +1 -0
  703. package/dist/generators/chain-classifier-kernel-client-drift.test.d.ts +2 -0
  704. package/dist/generators/chain-classifier-kernel-client-drift.test.d.ts.map +1 -0
  705. package/dist/generators/chain-classifier-kernel-client-drift.test.js +41 -0
  706. package/dist/generators/chain-classifier-kernel-client-drift.test.js.map +1 -0
  707. package/dist/generators/chain-classifier.d.ts +67 -14
  708. package/dist/generators/chain-classifier.d.ts.map +1 -1
  709. package/dist/generators/chain-classifier.js +46 -174
  710. package/dist/generators/chain-classifier.js.map +1 -1
  711. package/dist/generators/chain-rules.d.ts +3 -3
  712. package/dist/generators/chain-rules.d.ts.map +1 -1
  713. package/dist/generators/chain-rules.js +118 -6
  714. package/dist/generators/chain-rules.js.map +1 -1
  715. package/dist/generators/chain-rules.test.js +273 -4
  716. package/dist/generators/chain-rules.test.js.map +1 -1
  717. package/dist/generators/context-md.d.ts +1 -1
  718. package/dist/generators/context-md.d.ts.map +1 -1
  719. package/dist/generators/context-md.js +18 -7
  720. package/dist/generators/context-md.js.map +1 -1
  721. package/dist/generators/manifest.d.ts +115 -0
  722. package/dist/generators/manifest.d.ts.map +1 -0
  723. package/dist/generators/manifest.js +277 -0
  724. package/dist/generators/manifest.js.map +1 -0
  725. package/dist/generators/portable-knowledge.d.ts +24 -2
  726. package/dist/generators/portable-knowledge.d.ts.map +1 -1
  727. package/dist/generators/portable-knowledge.js +97 -2
  728. package/dist/generators/portable-knowledge.js.map +1 -1
  729. package/dist/generators/portable-knowledge.test.js +43 -0
  730. package/dist/generators/portable-knowledge.test.js.map +1 -1
  731. package/dist/generators/region-projections.d.ts +18 -0
  732. package/dist/generators/region-projections.d.ts.map +1 -0
  733. package/dist/generators/region-projections.js +49 -0
  734. package/dist/generators/region-projections.js.map +1 -0
  735. package/dist/generators/region-projections.test.d.ts +2 -0
  736. package/dist/generators/region-projections.test.d.ts.map +1 -0
  737. package/dist/generators/region-projections.test.js +63 -0
  738. package/dist/generators/region-projections.test.js.map +1 -0
  739. package/dist/generators/region.d.ts +24 -0
  740. package/dist/generators/region.d.ts.map +1 -0
  741. package/dist/generators/region.js +87 -0
  742. package/dist/generators/region.js.map +1 -0
  743. package/dist/generators/region.test.d.ts +2 -0
  744. package/dist/generators/region.test.d.ts.map +1 -0
  745. package/dist/generators/region.test.js +126 -0
  746. package/dist/generators/region.test.js.map +1 -0
  747. package/dist/generators/surface-profiles.d.ts +1 -2
  748. package/dist/generators/surface-profiles.d.ts.map +1 -1
  749. package/dist/generators/surface-profiles.js.map +1 -1
  750. package/dist/index.js +746 -304
  751. package/dist/index.js.map +1 -1
  752. package/dist/lib/__tests__/parseFields.test.d.ts +2 -0
  753. package/dist/lib/__tests__/parseFields.test.d.ts.map +1 -0
  754. package/dist/lib/__tests__/parseFields.test.js +40 -0
  755. package/dist/lib/__tests__/parseFields.test.js.map +1 -0
  756. package/dist/lib/activation.d.ts.map +1 -1
  757. package/dist/lib/activation.js +8 -4
  758. package/dist/lib/activation.js.map +1 -1
  759. package/dist/lib/activation.test.js +6 -6
  760. package/dist/lib/activation.test.js.map +1 -1
  761. package/dist/lib/canonicalRefs.d.ts +141 -0
  762. package/dist/lib/canonicalRefs.d.ts.map +1 -0
  763. package/dist/lib/canonicalRefs.js +150 -0
  764. package/dist/lib/canonicalRefs.js.map +1 -0
  765. package/dist/lib/client.d.ts +19 -6
  766. package/dist/lib/client.d.ts.map +1 -1
  767. package/dist/lib/client.js +227 -68
  768. package/dist/lib/client.js.map +1 -1
  769. package/dist/lib/collectionRegistry.d.ts +52 -0
  770. package/dist/lib/collectionRegistry.d.ts.map +1 -0
  771. package/dist/lib/collectionRegistry.js +118 -0
  772. package/dist/lib/collectionRegistry.js.map +1 -0
  773. package/dist/lib/compose-wrapup-view.d.ts +48 -0
  774. package/dist/lib/compose-wrapup-view.d.ts.map +1 -0
  775. package/dist/lib/compose-wrapup-view.js +37 -0
  776. package/dist/lib/compose-wrapup-view.js.map +1 -0
  777. package/dist/lib/config.d.ts +204 -4
  778. package/dist/lib/config.d.ts.map +1 -1
  779. package/dist/lib/config.js +590 -40
  780. package/dist/lib/config.js.map +1 -1
  781. package/dist/lib/connectKeyLabel.d.ts +9 -0
  782. package/dist/lib/connectKeyLabel.d.ts.map +1 -0
  783. package/dist/lib/connectKeyLabel.js +12 -0
  784. package/dist/lib/connectKeyLabel.js.map +1 -0
  785. package/dist/lib/constants.d.ts +28 -3
  786. package/dist/lib/constants.d.ts.map +1 -1
  787. package/dist/lib/constants.js +48 -4
  788. package/dist/lib/constants.js.map +1 -1
  789. package/dist/lib/conversation-engine.d.ts +45 -0
  790. package/dist/lib/conversation-engine.d.ts.map +1 -0
  791. package/dist/lib/conversation-engine.js +112 -0
  792. package/dist/lib/conversation-engine.js.map +1 -0
  793. package/dist/lib/conversation-phases.d.ts +59 -0
  794. package/dist/lib/conversation-phases.d.ts.map +1 -0
  795. package/dist/lib/conversation-phases.js +11 -0
  796. package/dist/lib/conversation-phases.js.map +1 -0
  797. package/dist/lib/conversation-signals.d.ts +30 -0
  798. package/dist/lib/conversation-signals.d.ts.map +1 -0
  799. package/dist/lib/conversation-signals.js +64 -0
  800. package/dist/lib/conversation-signals.js.map +1 -0
  801. package/dist/lib/conversation.d.ts +36 -0
  802. package/dist/lib/conversation.d.ts.map +1 -0
  803. package/dist/lib/conversation.js +66 -0
  804. package/dist/lib/conversation.js.map +1 -0
  805. package/dist/lib/deployment.d.ts +23 -0
  806. package/dist/lib/deployment.d.ts.map +1 -0
  807. package/dist/lib/deployment.js +78 -0
  808. package/dist/lib/deployment.js.map +1 -0
  809. package/dist/lib/deployment.test.d.ts +5 -0
  810. package/dist/lib/deployment.test.d.ts.map +1 -0
  811. package/dist/lib/deployment.test.js +54 -0
  812. package/dist/lib/deployment.test.js.map +1 -0
  813. package/dist/lib/errors.d.ts +112 -0
  814. package/dist/lib/errors.d.ts.map +1 -0
  815. package/dist/lib/errors.js +121 -0
  816. package/dist/lib/errors.js.map +1 -0
  817. package/dist/lib/experiment.d.ts +18 -0
  818. package/dist/lib/experiment.d.ts.map +1 -0
  819. package/dist/lib/experiment.js +28 -0
  820. package/dist/lib/experiment.js.map +1 -0
  821. package/dist/lib/format.d.ts +10 -0
  822. package/dist/lib/format.d.ts.map +1 -0
  823. package/dist/lib/format.js +27 -0
  824. package/dist/lib/format.js.map +1 -0
  825. package/dist/lib/frontmatter.d.ts +55 -0
  826. package/dist/lib/frontmatter.d.ts.map +1 -0
  827. package/dist/lib/frontmatter.js +92 -0
  828. package/dist/lib/frontmatter.js.map +1 -0
  829. package/dist/lib/frontmatter.test.d.ts +15 -0
  830. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  831. package/dist/lib/frontmatter.test.js +98 -0
  832. package/dist/lib/frontmatter.test.js.map +1 -0
  833. package/dist/lib/glossary.d.ts +19 -0
  834. package/dist/lib/glossary.d.ts.map +1 -0
  835. package/dist/lib/glossary.js +53 -0
  836. package/dist/lib/glossary.js.map +1 -0
  837. package/dist/lib/hook-intents.d.ts +51 -0
  838. package/dist/lib/hook-intents.d.ts.map +1 -0
  839. package/dist/lib/hook-intents.js +85 -0
  840. package/dist/lib/hook-intents.js.map +1 -0
  841. package/dist/lib/inferSourceDate.d.ts +12 -0
  842. package/dist/lib/inferSourceDate.d.ts.map +1 -0
  843. package/dist/lib/inferSourceDate.js +44 -0
  844. package/dist/lib/inferSourceDate.js.map +1 -0
  845. package/dist/lib/method-registry.d.ts +37 -0
  846. package/dist/lib/method-registry.d.ts.map +1 -0
  847. package/dist/lib/method-registry.js +41 -0
  848. package/dist/lib/method-registry.js.map +1 -0
  849. package/dist/lib/normalizeMaterializedFilename.d.ts +28 -0
  850. package/dist/lib/normalizeMaterializedFilename.d.ts.map +1 -0
  851. package/dist/lib/normalizeMaterializedFilename.js +56 -0
  852. package/dist/lib/normalizeMaterializedFilename.js.map +1 -0
  853. package/dist/lib/normalizeMaterializedFilename.test.d.ts +16 -0
  854. package/dist/lib/normalizeMaterializedFilename.test.d.ts.map +1 -0
  855. package/dist/lib/normalizeMaterializedFilename.test.js +90 -0
  856. package/dist/lib/normalizeMaterializedFilename.test.js.map +1 -0
  857. package/dist/lib/notice-marker.d.ts +3 -0
  858. package/dist/lib/notice-marker.d.ts.map +1 -0
  859. package/dist/lib/notice-marker.js +53 -0
  860. package/dist/lib/notice-marker.js.map +1 -0
  861. package/dist/lib/onboarding-path-b.d.ts +10 -0
  862. package/dist/lib/onboarding-path-b.d.ts.map +1 -0
  863. package/dist/lib/onboarding-path-b.js +243 -0
  864. package/dist/lib/onboarding-path-b.js.map +1 -0
  865. package/dist/lib/onboarding-shared.d.ts +81 -0
  866. package/dist/lib/onboarding-shared.d.ts.map +1 -0
  867. package/dist/lib/onboarding-shared.js +175 -0
  868. package/dist/lib/onboarding-shared.js.map +1 -0
  869. package/dist/lib/onboarding-topics.d.ts +27 -0
  870. package/dist/lib/onboarding-topics.d.ts.map +1 -0
  871. package/dist/lib/onboarding-topics.js +57 -0
  872. package/dist/lib/onboarding-topics.js.map +1 -0
  873. package/dist/lib/onboarding.d.ts +17 -0
  874. package/dist/lib/onboarding.d.ts.map +1 -0
  875. package/dist/lib/onboarding.js +350 -0
  876. package/dist/lib/onboarding.js.map +1 -0
  877. package/dist/lib/parseFields.d.ts +19 -0
  878. package/dist/lib/parseFields.d.ts.map +1 -0
  879. package/dist/lib/parseFields.js +49 -0
  880. package/dist/lib/parseFields.js.map +1 -0
  881. package/dist/lib/previewBanner.d.ts +9 -0
  882. package/dist/lib/previewBanner.d.ts.map +1 -0
  883. package/dist/lib/previewBanner.js +37 -0
  884. package/dist/lib/previewBanner.js.map +1 -0
  885. package/dist/lib/productbrain-files.d.ts +94 -0
  886. package/dist/lib/productbrain-files.d.ts.map +1 -0
  887. package/dist/lib/productbrain-files.js +214 -0
  888. package/dist/lib/productbrain-files.js.map +1 -0
  889. package/dist/lib/productbrain-files.test.d.ts +2 -0
  890. package/dist/lib/productbrain-files.test.d.ts.map +1 -0
  891. package/dist/lib/productbrain-files.test.js +258 -0
  892. package/dist/lib/productbrain-files.test.js.map +1 -0
  893. package/dist/lib/profiles.d.ts +41 -0
  894. package/dist/lib/profiles.d.ts.map +1 -0
  895. package/dist/lib/profiles.js +188 -0
  896. package/dist/lib/profiles.js.map +1 -0
  897. package/dist/lib/prompts.d.ts +65 -0
  898. package/dist/lib/prompts.d.ts.map +1 -0
  899. package/dist/lib/prompts.js +132 -0
  900. package/dist/lib/prompts.js.map +1 -0
  901. package/dist/lib/runner.d.ts +10 -0
  902. package/dist/lib/runner.d.ts.map +1 -1
  903. package/dist/lib/runner.js +44 -7
  904. package/dist/lib/runner.js.map +1 -1
  905. package/dist/lib/session.d.ts +85 -4
  906. package/dist/lib/session.d.ts.map +1 -1
  907. package/dist/lib/session.js +276 -13
  908. package/dist/lib/session.js.map +1 -1
  909. package/dist/lib/spinner.d.ts +27 -0
  910. package/dist/lib/spinner.d.ts.map +1 -0
  911. package/dist/lib/spinner.js +76 -0
  912. package/dist/lib/spinner.js.map +1 -0
  913. package/dist/lib/spinner.test.d.ts +2 -0
  914. package/dist/lib/spinner.test.d.ts.map +1 -0
  915. package/dist/lib/spinner.test.js +39 -0
  916. package/dist/lib/spinner.test.js.map +1 -0
  917. package/dist/lib/startup-resolution-signals.d.ts +34 -0
  918. package/dist/lib/startup-resolution-signals.d.ts.map +1 -0
  919. package/dist/lib/startup-resolution-signals.js +118 -0
  920. package/dist/lib/startup-resolution-signals.js.map +1 -0
  921. package/dist/lib/startup-resolution-signals.test.d.ts +2 -0
  922. package/dist/lib/startup-resolution-signals.test.d.ts.map +1 -0
  923. package/dist/lib/startup-resolution-signals.test.js +113 -0
  924. package/dist/lib/startup-resolution-signals.test.js.map +1 -0
  925. package/dist/lib/startup-signals.d.ts +12 -0
  926. package/dist/lib/startup-signals.d.ts.map +1 -0
  927. package/dist/lib/startup-signals.js +172 -0
  928. package/dist/lib/startup-signals.js.map +1 -0
  929. package/dist/lib/startup-signals.test.d.ts +2 -0
  930. package/dist/lib/startup-signals.test.d.ts.map +1 -0
  931. package/dist/lib/startup-signals.test.js +165 -0
  932. package/dist/lib/startup-signals.test.js.map +1 -0
  933. package/dist/lib/state.d.ts +51 -0
  934. package/dist/lib/state.d.ts.map +1 -0
  935. package/dist/lib/state.js +90 -0
  936. package/dist/lib/state.js.map +1 -0
  937. package/dist/lib/strip.d.ts.map +1 -1
  938. package/dist/lib/strip.js +7 -1
  939. package/dist/lib/strip.js.map +1 -1
  940. package/dist/lib/style.d.ts +96 -0
  941. package/dist/lib/style.d.ts.map +1 -0
  942. package/dist/lib/style.js +169 -0
  943. package/dist/lib/style.js.map +1 -0
  944. package/dist/lib/style.test.d.ts +7 -0
  945. package/dist/lib/style.test.d.ts.map +1 -0
  946. package/dist/lib/style.test.js +263 -0
  947. package/dist/lib/style.test.js.map +1 -0
  948. package/dist/lib/telemetry.d.ts +5 -5
  949. package/dist/lib/telemetry.d.ts.map +1 -1
  950. package/dist/lib/telemetry.js +34 -16
  951. package/dist/lib/telemetry.js.map +1 -1
  952. package/dist/lib/tokenConstants.d.ts +19 -0
  953. package/dist/lib/tokenConstants.d.ts.map +1 -0
  954. package/dist/lib/tokenConstants.js +19 -0
  955. package/dist/lib/tokenConstants.js.map +1 -0
  956. package/dist/lib/update-check.d.ts +56 -0
  957. package/dist/lib/update-check.d.ts.map +1 -0
  958. package/dist/lib/update-check.js +296 -0
  959. package/dist/lib/update-check.js.map +1 -0
  960. package/dist/lib/upgrade-runner.d.ts +22 -0
  961. package/dist/lib/upgrade-runner.d.ts.map +1 -0
  962. package/dist/lib/upgrade-runner.js +110 -0
  963. package/dist/lib/upgrade-runner.js.map +1 -0
  964. package/dist/lib/wizard-surfaces.d.ts +47 -0
  965. package/dist/lib/wizard-surfaces.d.ts.map +1 -0
  966. package/dist/lib/wizard-surfaces.js +176 -0
  967. package/dist/lib/wizard-surfaces.js.map +1 -0
  968. package/dist/lib/wizard-surfaces.test.d.ts +2 -0
  969. package/dist/lib/wizard-surfaces.test.d.ts.map +1 -0
  970. package/dist/lib/wizard-surfaces.test.js +127 -0
  971. package/dist/lib/wizard-surfaces.test.js.map +1 -0
  972. package/dist/lib/wizard-trust.d.ts +31 -0
  973. package/dist/lib/wizard-trust.d.ts.map +1 -0
  974. package/dist/lib/wizard-trust.js +66 -0
  975. package/dist/lib/wizard-trust.js.map +1 -0
  976. package/dist/lib/wizard-trust.test.d.ts +2 -0
  977. package/dist/lib/wizard-trust.test.d.ts.map +1 -0
  978. package/dist/lib/wizard-trust.test.js +32 -0
  979. package/dist/lib/wizard-trust.test.js.map +1 -0
  980. package/dist/lib/workspace-probe.d.ts +19 -0
  981. package/dist/lib/workspace-probe.d.ts.map +1 -0
  982. package/dist/lib/workspace-probe.js +27 -0
  983. package/dist/lib/workspace-probe.js.map +1 -0
  984. package/dist/lib/workspaceNotice.d.ts +59 -0
  985. package/dist/lib/workspaceNotice.d.ts.map +1 -0
  986. package/dist/lib/workspaceNotice.js +77 -0
  987. package/dist/lib/workspaceNotice.js.map +1 -0
  988. package/dist/lib/workspaceVocabCache.d.ts +60 -0
  989. package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
  990. package/dist/lib/workspaceVocabCache.js +98 -0
  991. package/dist/lib/workspaceVocabCache.js.map +1 -0
  992. package/dist/scoreboard/diagnose.d.ts +266 -0
  993. package/dist/scoreboard/diagnose.d.ts.map +1 -0
  994. package/dist/scoreboard/diagnose.js +293 -0
  995. package/dist/scoreboard/diagnose.js.map +1 -0
  996. package/dist/scoreboard/diagnose.test.d.ts +14 -0
  997. package/dist/scoreboard/diagnose.test.d.ts.map +1 -0
  998. package/dist/scoreboard/diagnose.test.js +311 -0
  999. package/dist/scoreboard/diagnose.test.js.map +1 -0
  1000. package/dist/scoreboard/localDrift.d.ts +23 -0
  1001. package/dist/scoreboard/localDrift.d.ts.map +1 -0
  1002. package/dist/scoreboard/localDrift.js +111 -0
  1003. package/dist/scoreboard/localDrift.js.map +1 -0
  1004. package/dist/scoreboard/localDrift.test.d.ts +9 -0
  1005. package/dist/scoreboard/localDrift.test.d.ts.map +1 -0
  1006. package/dist/scoreboard/localDrift.test.js +82 -0
  1007. package/dist/scoreboard/localDrift.test.js.map +1 -0
  1008. package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
  1009. package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
  1010. package/dist/setup/__tests__/coach-traces.test.js +189 -0
  1011. package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
  1012. package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
  1013. package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
  1014. package/dist/setup/__tests__/setup-commands.test.js +177 -0
  1015. package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
  1016. package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
  1017. package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
  1018. package/dist/setup/__tests__/state-machine.test.js +341 -0
  1019. package/dist/setup/__tests__/state-machine.test.js.map +1 -0
  1020. package/dist/setup/detect-surfaces.d.ts +21 -0
  1021. package/dist/setup/detect-surfaces.d.ts.map +1 -0
  1022. package/dist/setup/detect-surfaces.js +39 -0
  1023. package/dist/setup/detect-surfaces.js.map +1 -0
  1024. package/dist/setup/manifest-writer.d.ts +17 -0
  1025. package/dist/setup/manifest-writer.d.ts.map +1 -0
  1026. package/dist/setup/manifest-writer.js +153 -0
  1027. package/dist/setup/manifest-writer.js.map +1 -0
  1028. package/dist/setup/perimeter.d.ts +72 -0
  1029. package/dist/setup/perimeter.d.ts.map +1 -0
  1030. package/dist/setup/perimeter.js +128 -0
  1031. package/dist/setup/perimeter.js.map +1 -0
  1032. package/dist/setup/state-machine.d.ts +67 -0
  1033. package/dist/setup/state-machine.d.ts.map +1 -0
  1034. package/dist/setup/state-machine.js +124 -0
  1035. package/dist/setup/state-machine.js.map +1 -0
  1036. package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
  1037. package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
  1038. package/dist/surfaces/__tests__/adapter.test.js +90 -0
  1039. package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
  1040. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
  1041. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
  1042. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
  1043. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
  1044. package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
  1045. package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
  1046. package/dist/surfaces/__tests__/telemetry.test.js +55 -0
  1047. package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
  1048. package/dist/surfaces/adapter.d.ts +70 -0
  1049. package/dist/surfaces/adapter.d.ts.map +1 -0
  1050. package/dist/surfaces/adapter.js +2 -0
  1051. package/dist/surfaces/adapter.js.map +1 -0
  1052. package/dist/surfaces/adapters/claude.d.ts +3 -0
  1053. package/dist/surfaces/adapters/claude.d.ts.map +1 -0
  1054. package/dist/surfaces/adapters/claude.js +67 -0
  1055. package/dist/surfaces/adapters/claude.js.map +1 -0
  1056. package/dist/surfaces/adapters/codex.d.ts +3 -0
  1057. package/dist/surfaces/adapters/codex.d.ts.map +1 -0
  1058. package/dist/surfaces/adapters/codex.js +61 -0
  1059. package/dist/surfaces/adapters/codex.js.map +1 -0
  1060. package/dist/surfaces/adapters/copilot.d.ts +3 -0
  1061. package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
  1062. package/dist/surfaces/adapters/copilot.js +59 -0
  1063. package/dist/surfaces/adapters/copilot.js.map +1 -0
  1064. package/dist/surfaces/adapters/cursor.d.ts +3 -0
  1065. package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
  1066. package/dist/surfaces/adapters/cursor.js +78 -0
  1067. package/dist/surfaces/adapters/cursor.js.map +1 -0
  1068. package/dist/surfaces/registry.d.ts +76 -0
  1069. package/dist/surfaces/registry.d.ts.map +1 -0
  1070. package/dist/surfaces/registry.js +117 -0
  1071. package/dist/surfaces/registry.js.map +1 -0
  1072. package/dist/surfaces/telemetry.d.ts +17 -0
  1073. package/dist/surfaces/telemetry.d.ts.map +1 -0
  1074. package/dist/surfaces/telemetry.js +31 -0
  1075. package/dist/surfaces/telemetry.js.map +1 -0
  1076. package/package.json +11 -3
  1077. package/templates/method-registry.json +16 -0
  1078. package/dist/__tests__/setup.test.d.ts +0 -2
  1079. package/dist/__tests__/setup.test.d.ts.map +0 -1
  1080. package/dist/__tests__/setup.test.js +0 -170
  1081. package/dist/__tests__/setup.test.js.map +0 -1
  1082. package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
  1083. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
  1084. package/dist/generators/__tests__/surface-profiles.test.js +0 -89
  1085. package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
  1086. package/dist/generators/chain-classifier.test.d.ts +0 -2
  1087. package/dist/generators/chain-classifier.test.d.ts.map +0 -1
  1088. package/dist/generators/chain-classifier.test.js +0 -257
  1089. package/dist/generators/chain-classifier.test.js.map +0 -1
@@ -0,0 +1,293 @@
1
+ /**
2
+ * SYNCED from packages/scoreboard-core/src/index.ts — DO NOT EDIT HERE.
3
+ * Canonical SSOT for the flywheel scoreboard diagnosis (consumed by BOTH the published
4
+ * `pb` CLI and the Cortex page). The CLI cannot import the workspace package at publish time
5
+ * (tsc, no bundler), so it carries this committed copy. Edit the source, then run:
6
+ * node scripts/sync-scoreboard-core.mjs
7
+ * A content-hash drift gate (scripts/check-mcp-lib-drift.mjs) fails CI if this drifts.
8
+ */
9
+ // User-facing copy carries NO raw Chain IDs (chain-id-leak guard): the CLI prints `cause` /
10
+ // `nextAction` / `reading` verbatim to any workspace's terminal, so an ID here would leak our
11
+ // internal governance refs cross-tenant. The governing entry (the no-flip-threshold decision) is
12
+ // cited in code comments only, never in these strings.
13
+ const UNPINNED = 'threshold unpinned — pin against the live distribution';
14
+ // WP-527 (Lane T Slice 2): PROPOSED (not pinned) floor values, drafted from the observed
15
+ // distributions in docs/evals/PRESS-RELEASE-EVAL.md's Product-OS calibration runs — a proposal for
16
+ // founder accept, never a committed threshold, and never evidence about any OTHER workspace calling
17
+ // this shared function (no workspaceId here — PB is multi-tenant); the `cause` strings say
18
+ // "Product-OS calibration" explicitly so the number is never misread as the caller's own history.
19
+ // Status stays `awaiting` regardless (never ok/degraded from a proposal), per DEC-1282.
20
+ // VISIBILITY GAP: reaches the `pb scoreboard` CLI (formatters/scoreboard.ts renders cause/
21
+ // nextAction) but NOT Cortex — +page.svelte:171 renders only tile.reading + a static tooltip.
22
+ // Surfacing PROPOSED state there is real, disclosed follow-up work, out of WP-527's scope.
23
+ // M3 in-session-ratify: observed 0% in every Product-OS run so far — a conservative early bar.
24
+ const M3_PROPOSED_IN_SESSION_FLOOR = 0.1;
25
+ // M5 has TWO INCOMPARABLE age instruments (diagnoseM5's local-pull drift vs diagnoseM5FromServer's
26
+ // server-generation age) — each gets its OWN single-observation calibration below, never a
27
+ // cross-instrument "trend" (the bug this fixed: Run 1's local-age and Run 3's materialization-age
28
+ // are different measurements, not two points on one series). Local-pull: only on-record reading is
29
+ // 14.1d (Run 1). Server-generation: only on-record reading is ~5.1d (Run 3's materialization age).
30
+ const M5_PROPOSED_LOCAL_AGE_FLOOR_DAYS = 10;
31
+ const M5_PROPOSED_SERVER_AGE_FLOOR_DAYS = 7;
32
+ function pct(n) {
33
+ return n === null ? 'n/a' : `${(n * 100).toFixed(0)}%`;
34
+ }
35
+ function ms(n) {
36
+ if (n === null)
37
+ return 'n/a';
38
+ const h = n / (1000 * 60 * 60);
39
+ if (h < 1)
40
+ return `${(n / (1000 * 60)).toFixed(0)}m`;
41
+ if (h < 48)
42
+ return `${h.toFixed(1)}h`;
43
+ return `${(h / 24).toFixed(1)}d`;
44
+ }
45
+ /**
46
+ * M1 — retrieval truth-state mix. The no-domain-share flip (INS-1775 floor) is UNPINNED, so the
47
+ * status is `awaiting` whenever there is data to judge (we never invent the 50% floor). With zero
48
+ * serves it is `unmeasured` (nothing served yet). The named cause for a high no-domain share is
49
+ * "domains unratified".
50
+ */
51
+ export function diagnoseM1(m1) {
52
+ const reading = `served=${m1.mix.total} · audited=${pct(m1.auditedShare)} · draft=${pct(m1.draftShare)} · ` +
53
+ `no-domain=${pct(m1.noDomainShare)} (window ${ms(m1.windowMs)})`;
54
+ if (m1.mix.total === 0) {
55
+ // TEN-2449: M1 counts ONE serve shape (`orient/cli/brief`). Naming start_pb here would loop
56
+ // the operator forever: that surface is uninstrumented, so serving it can never move M1.
57
+ const outOfCoverage = m1.excludedOutOfCoverage ?? 0;
58
+ return {
59
+ metric: 'M1',
60
+ label: 'Retrieval truth-state mix',
61
+ status: 'unmeasured',
62
+ reading,
63
+ cause: outOfCoverage > 0
64
+ ? `${outOfCoverage} row(s) served but outside the covered path (orient/cli/brief) — nothing counted`
65
+ : 'no governance served in the window yet — nothing to classify',
66
+ nextAction: 'run `pb orient -b` in a terminal (the covered orient/cli/brief path), then re-read',
67
+ };
68
+ }
69
+ return {
70
+ metric: 'M1',
71
+ label: 'Retrieval truth-state mix',
72
+ status: 'awaiting',
73
+ reading,
74
+ cause: `no-domain-share floor ${UNPINNED}`,
75
+ // INS-1775 records the ≈57% no-domain baseline — cited here in a comment, not the user string.
76
+ nextAction: 'pin the no-domain floor (≈57% measured baseline); if no-domain stays high, domains are unratified → ratify the inferred-domain binding entries',
77
+ };
78
+ }
79
+ /**
80
+ * M2 — ranking agreement (tests the unify integrity). This one HAS a clean structural signal:
81
+ * post-unify, full parity (divergentBuckets === 0) is the EXPECTED steady state — that's `ok`.
82
+ * A non-zero divergence IS the regression signal — `degraded` — and the M2-magnitude flip stays
83
+ * unpinned, but the structural ok/degraded does not need a number (0 vs non-0 is exact).
84
+ */
85
+ export function diagnoseM2(m2) {
86
+ const reading = `divergentBuckets=${m2.divergentBuckets} · fullParity=${m2.fullParity}${m2.task ? ` · task="${m2.task}"` : ''}`;
87
+ if (m2.fullParity && m2.divergentBuckets === 0) {
88
+ return {
89
+ metric: 'M2',
90
+ label: 'Ranking agreement (unify integrity)',
91
+ status: 'ok',
92
+ reading,
93
+ cause: 'orient ↔ start_pb render identical set+order+tier — the unify holds',
94
+ nextAction: '',
95
+ };
96
+ }
97
+ return {
98
+ metric: 'M2',
99
+ label: 'Ranking agreement (unify integrity)',
100
+ status: 'degraded',
101
+ reading,
102
+ cause: 'the two surfaces re-forked — one is selecting/ordering governance outside the shared ranker',
103
+ // The ranking-unify tension is TEN-2431 — cited in the comment, kept out of the user string.
104
+ nextAction: 'diff getOrientEntries vs getBindingGovernanceView; restore the shared ranker as the single source',
105
+ };
106
+ }
107
+ /**
108
+ * M3 — draft-to-SSOT rate. The in-session-ratify floor (ASM-45 rolling-20 window) is UNPINNED,
109
+ * so a judged reading is `awaiting`. Zero captures in the window → `unmeasured`.
110
+ */
111
+ export function diagnoseM3(m3) {
112
+ const reading = `captured=${m3.capturedCount} · in-session=${pct(m3.inSessionRatifiedRate)} · ` +
113
+ `ever=${pct(m3.everRatifiedRate)} (over ${m3.sessionsConsidered}/${m3.sessionWindow} sessions)`;
114
+ if (m3.capturedCount === 0) {
115
+ return {
116
+ metric: 'M3',
117
+ label: 'Draft-to-SSOT rate',
118
+ status: 'unmeasured',
119
+ reading,
120
+ cause: 'no captures in the rolling session window — nothing to rate',
121
+ nextAction: 'capture in-session (pb capture), then re-read after the human accepts in Cortex',
122
+ };
123
+ }
124
+ return {
125
+ metric: 'M3',
126
+ label: 'Draft-to-SSOT rate',
127
+ status: 'awaiting',
128
+ reading,
129
+ // ASM-45 (the draft-graveyard hypothesis + rolling-20-session design) governs this metric —
130
+ // cited in comments; the user strings stay ID-free.
131
+ cause: `in-session ratify floor ${UNPINNED} (rolling-20-session design) — PROPOSED pin ${pct(M3_PROPOSED_IN_SESSION_FLOOR)}, awaiting founder accept (Product-OS calibration baseline, not this workspace's own history)`,
132
+ // Round 1 scoped `cause` but left `nextAction` — the formatter prints this verbatim too.
133
+ nextAction: `pin the in-session floor (Product-OS calibration proposal ${pct(M3_PROPOSED_IN_SESSION_FLOOR)}, not derived from this workspace, awaiting founder accept); if the rate stays below it, the draft-graveyard pattern is confirmed → accept/promote captures in Cortex`,
134
+ };
135
+ }
136
+ /**
137
+ * M4 — organic rework meter (WP-487 Slice 2, FEAT-1374). Joins served governance against
138
+ * later-reported rework signals within a frozen 72h window (TEN-2728) and reports RAW
139
+ * distribution + a false-attribution counter-metric — never a verdict (DEC-1282 unchanged for
140
+ * M4) and never a causality claim (spec §6: this is association, not "context served CAUSED
141
+ * first-time-good"). `unmeasured` when nothing has been served in the window yet (no coverage
142
+ * population to judge, mirrors diagnoseM1's zero-mix gate); `awaiting` whenever there IS data,
143
+ * since no first-time-good floor is pinned yet — the raw share is always shown, never replaced
144
+ * by an invented threshold.
145
+ */
146
+ export function diagnoseM4(m4) {
147
+ const reading = `served=${m4.servedCount} (decided=${m4.decidedCount}, pending=${m4.pendingObservationCount}, ` +
148
+ `unattributable=${m4.unattributableServedCount}) · first-time-good=${pct(m4.firstTimeGoodShare)} ` +
149
+ `(n=${m4.decidedCount}) · reworked=${m4.reworkedCount} · signals=${m4.signalCount} ` +
150
+ `(revision=${m4.byClassification.revision}, ci-review=${m4.byClassification.ci_review_correction}, ` +
151
+ `override=${m4.byClassification.user_override}) · false-attribution=${pct(m4.falseAttributionRate)}`;
152
+ if (m4.servedCount === 0) {
153
+ return {
154
+ metric: 'M4',
155
+ label: 'Organic rework meter (first-time-good)',
156
+ status: 'unmeasured',
157
+ reading,
158
+ cause: 'no governance served in the window yet — nothing to join rework signals against',
159
+ nextAction: 'run `pb orient -b` to serve governance, then report rework via `pb rework report` as it occurs',
160
+ };
161
+ }
162
+ return {
163
+ metric: 'M4',
164
+ label: 'Organic rework meter (first-time-good)',
165
+ status: 'awaiting',
166
+ reading,
167
+ // No first-time-good floor is pinned yet (this WP's job was to make a baseline possible, not
168
+ // to claim one — WP-C spec §5/§9). No causality claim: a served row followed by rework within
169
+ // the window is an ASSOCIATION, never asserted as "the served context caused the rework".
170
+ cause: `first-time-good floor ${UNPINNED}; a high false-attribution rate means many rework signals have no served-context evidence to join against — read the share with that caveat, not as a verdict`,
171
+ nextAction: 'pin the first-time-good floor once a predeclared observation window completes (WP-C spec §9); if false-attribution stays high, the pb-reported signal may be missing real rework events a CI/git signal would catch (spec §6 tripwire)',
172
+ };
173
+ }
174
+ /**
175
+ * M5 — projection staleness, computed as LOCAL-PULL drift at the CLI (DEC-1284). The staleness-age
176
+ * flip is UNPINNED, so a determinable reading is `awaiting`. When the local `.productbrain/`
177
+ * projection (or the server materialization) is unavailable, the status is `unmeasured` with the
178
+ * reason — fail-soft, never a fake ok.
179
+ */
180
+ export function diagnoseM5(m5) {
181
+ if (m5.unavailableReason || m5.localProjectionMtime === null) {
182
+ return {
183
+ metric: 'M5',
184
+ label: 'Projection staleness (local-pull drift)',
185
+ status: 'unmeasured',
186
+ reading: m5.unavailableReason ?? 'local .productbrain/ projection not found',
187
+ cause: 'cannot stat the local projection — local-pull drift is undeterminable here',
188
+ nextAction: 'run from a worktree with a materialized .productbrain/ (pb handshake), then re-read',
189
+ };
190
+ }
191
+ // The local projection exists, but with NO server materialization (e.g. missing/expired
192
+ // setup_receipt) there is no reference to diff against — the local-pull DRIFT (server−local,
193
+ // this metric's whole definition) is undeterminable. Report `unmeasured` (honesty over flattery)
194
+ // rather than `awaiting` with a `local-lag=n/a` that implies the drift is merely awaiting a
195
+ // threshold. local-age is still surfaced as the one signal we can honestly read.
196
+ if (m5.serverMaterializedAt === null || m5.localLagMs === null) {
197
+ return {
198
+ metric: 'M5',
199
+ label: 'Projection staleness (local-pull drift)',
200
+ status: 'unmeasured',
201
+ reading: `local-age=${ms(m5.localAgeMs)} · server materialization: none (drift undeterminable)`,
202
+ cause: 'no server materialization to diff against — local-pull drift (server−local) cannot be computed',
203
+ nextAction: 'materialize the projection server-side (pb handshake), then re-read to measure drift',
204
+ };
205
+ }
206
+ const lag = m5.localLagMs;
207
+ const age = m5.localAgeMs;
208
+ const reading = `local-lag=${ms(lag)} (server−local) · local-age=${ms(age)}`;
209
+ return {
210
+ metric: 'M5',
211
+ label: 'Projection staleness (local-pull drift)',
212
+ status: 'awaiting',
213
+ reading,
214
+ cause: `staleness-age threshold ${UNPINNED} — PROPOSED pin ${M5_PROPOSED_LOCAL_AGE_FLOOR_DAYS}d, awaiting founder accept (Product-OS calibration: one on-record local-age reading, not a trend); this is the one metric where PB can be staler than the never-drifting CLAUDE.md file`,
215
+ nextAction: 're-run pb handshake to re-pull the projection if the lag/age looks high',
216
+ };
217
+ }
218
+ /**
219
+ * M5 (server view) — the Cortex page has NO local filesystem, so it cannot compute the spec's
220
+ * local-pull drift (DEC-1284). It reads only the server-side projection-generation building block
221
+ * (`materialization.latestMaterializedAt` / age) the public action already returns — adding NO new
222
+ * truth (spec §2d). This is deliberately a DIFFERENT, HONEST framing from `diagnoseM5`: it is
223
+ * SERVER-generation age, never claimed to be the local-pull staleness the CLI measures. The
224
+ * staleness-age flip is UNPINNED → `awaiting` when there is a materialization; `unmeasured` when
225
+ * the workspace has never materialized.
226
+ */
227
+ export function diagnoseM5FromServer(materialization) {
228
+ if (materialization.latestMaterializedAt === null) {
229
+ return {
230
+ metric: 'M5',
231
+ label: 'Projection staleness (server generation age)',
232
+ status: 'unmeasured',
233
+ reading: 'no materialization receipt yet — the projection has never been generated server-side',
234
+ cause: 'nothing to age — the workspace has not materialized its projection',
235
+ nextAction: 'run pb handshake to materialize the projection, then re-read',
236
+ };
237
+ }
238
+ const age = materialization.materializationAgeMs;
239
+ return {
240
+ metric: 'M5',
241
+ label: 'Projection staleness (server generation age)',
242
+ status: 'awaiting',
243
+ reading: `server-generation age=${ms(age)} (browser view: local-pull drift is CLI-only)`,
244
+ cause: `staleness-age threshold ${UNPINNED} — PROPOSED pin ${M5_PROPOSED_SERVER_AGE_FLOOR_DAYS}d, awaiting founder accept (Product-OS calibration: one on-record server-generation-age reading, not a trend); this is the one metric where PB can be staler than the never-drifting CLAUDE.md file`,
245
+ nextAction: 're-run pb handshake to re-generate the projection if the age looks high',
246
+ };
247
+ }
248
+ /**
249
+ * The STANDING coaching/moat-quality `unmeasured` line (TEN-2377). It is NOT a tile with a number —
250
+ * it is a permanent honesty marker so four green tiles are never read as "the moat is healthy".
251
+ */
252
+ export function diagnoseCoachingMoat() {
253
+ return {
254
+ metric: 'MOAT',
255
+ label: 'Coaching / moat quality',
256
+ status: 'unmeasured',
257
+ // The standing-unmeasured tension is TEN-2377; the real instrument is ASM-46's
258
+ // blind-padding-rate test. Both cited in comments, kept out of the user-facing strings.
259
+ reading: 'structurally unmeasured',
260
+ cause: 'the coach skips decision/standard/business-rule (the WHY-moat types) — a counter would flatter the board',
261
+ nextAction: 'do NOT read four green tiles as a healthy moat; the real instrument is the blind-padding-rate test',
262
+ };
263
+ }
264
+ /**
265
+ * diagnose — the whole mapping: data-layer payload + CLI-computed M5 local-drift → per-metric
266
+ * diagnoses + the standing M4-awaiting + coaching-unmeasured lines. Pure.
267
+ */
268
+ export function diagnose(payload, m5) {
269
+ return {
270
+ m1: diagnoseM1(payload.m1),
271
+ m2: diagnoseM2(payload.m2),
272
+ m3: diagnoseM3(payload.m3),
273
+ m4: diagnoseM4(payload.m4),
274
+ m5: diagnoseM5(m5),
275
+ moat: diagnoseCoachingMoat(),
276
+ };
277
+ }
278
+ /**
279
+ * diagnoseFromServer — the Cortex-page mapping: it has the public action payload but NO local fs,
280
+ * so M5 is the server-generation-age view (`diagnoseM5FromServer`) rather than the CLI local-pull
281
+ * drift. Everything else is identical to `diagnose`. Pure, browser-safe.
282
+ */
283
+ export function diagnoseFromServer(payload) {
284
+ return {
285
+ m1: diagnoseM1(payload.m1),
286
+ m2: diagnoseM2(payload.m2),
287
+ m3: diagnoseM3(payload.m3),
288
+ m4: diagnoseM4(payload.m4),
289
+ m5: diagnoseM5FromServer(payload.materialization),
290
+ moat: diagnoseCoachingMoat(),
291
+ };
292
+ }
293
+ //# sourceMappingURL=diagnose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/scoreboard/diagnose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Diagnosis-layer unit tests (spec §2d, A4).
3
+ *
4
+ * Asserts the pure metric→{status,reading,cause,nextAction} mapping, with explicit coverage of
5
+ * the awaiting / unmeasured / degraded / ok states and the honesty invariants:
6
+ * - No flip threshold is pinned (DEC-1282) → judged readings are `awaiting`, never an invented
7
+ * number, and the raw reading is always present.
8
+ * - M4 (WP-487 Slice 2, FEAT-1374: the organic rework meter) reports raw distribution only —
9
+ * `unmeasured` with nothing served yet, `awaiting` otherwise, never a fake green, never a
10
+ * causality claim.
11
+ * - Coaching/moat quality is a standing `unmeasured` line (TEN-2377).
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=diagnose.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.test.d.ts","sourceRoot":"","sources":["../../src/scoreboard/diagnose.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Diagnosis-layer unit tests (spec §2d, A4).
3
+ *
4
+ * Asserts the pure metric→{status,reading,cause,nextAction} mapping, with explicit coverage of
5
+ * the awaiting / unmeasured / degraded / ok states and the honesty invariants:
6
+ * - No flip threshold is pinned (DEC-1282) → judged readings are `awaiting`, never an invented
7
+ * number, and the raw reading is always present.
8
+ * - M4 (WP-487 Slice 2, FEAT-1374: the organic rework meter) reports raw distribution only —
9
+ * `unmeasured` with nothing served yet, `awaiting` otherwise, never a fake green, never a
10
+ * causality claim.
11
+ * - Coaching/moat quality is a standing `unmeasured` line (TEN-2377).
12
+ */
13
+ import { describe, it, expect } from 'vitest';
14
+ import { diagnose, diagnoseM1, diagnoseM2, diagnoseM3, diagnoseM4, diagnoseM5, diagnoseM5FromServer, diagnoseCoachingMoat, } from './diagnose.js';
15
+ const m1WithData = {
16
+ mix: { audited: 3, draft: 2, noDomain: 5, total: 10 },
17
+ noDomainShare: 0.5,
18
+ auditedShare: 0.3,
19
+ draftShare: 0.2,
20
+ windowMs: 30 * 24 * 60 * 60 * 1000,
21
+ servedRowCount: 10,
22
+ };
23
+ const m1Empty = {
24
+ mix: { audited: 0, draft: 0, noDomain: 0, total: 0 },
25
+ noDomainShare: null,
26
+ auditedShare: null,
27
+ draftShare: null,
28
+ windowMs: 30 * 24 * 60 * 60 * 1000,
29
+ servedRowCount: 0,
30
+ };
31
+ describe('diagnoseM1', () => {
32
+ it('is awaiting (never an invented floor) when there is data — DEC-1282', () => {
33
+ const d = diagnoseM1(m1WithData);
34
+ expect(d.status).toBe('awaiting');
35
+ expect(d.metric).toBe('M1');
36
+ // Raw reading always shown.
37
+ expect(d.reading).toContain('no-domain=50%');
38
+ expect(d.reading).toContain('served=10');
39
+ // Unpinned cause + concrete next action (domains unratified).
40
+ expect(d.cause).toMatch(/unpinned/i);
41
+ expect(d.nextAction).toMatch(/ratify/i);
42
+ });
43
+ it('is unmeasured when nothing was served', () => {
44
+ const d = diagnoseM1(m1Empty);
45
+ expect(d.status).toBe('unmeasured');
46
+ // TEN-2449: must name the ONE covered path. Recommending start_pb would loop the operator
47
+ // forever — that surface is uninstrumented, so serving it can never move M1 off `unmeasured`.
48
+ expect(d.nextAction).toMatch(/orient\/cli\/brief/);
49
+ expect(d.nextAction).not.toMatch(/start_pb/);
50
+ expect(d.cause).toMatch(/no governance served/i);
51
+ });
52
+ it('unmeasured-but-serving: names the coverage gap instead of repeating "drive a serve"', () => {
53
+ const d = diagnoseM1({ ...m1Empty, excludedOutOfCoverage: 5 });
54
+ expect(d.status).toBe('unmeasured');
55
+ // The operator HAS been serving — just not on the covered path. Saying "nothing served" here
56
+ // would send them hunting for a write bug that does not exist.
57
+ expect(d.cause).toMatch(/outside the covered path/i);
58
+ expect(d.cause).toContain('5 row(s)');
59
+ });
60
+ });
61
+ describe('diagnoseM2', () => {
62
+ it('is ok at full parity (post-unify steady state — 0 vs non-0 is exact, no number invented)', () => {
63
+ const m2 = { divergentBuckets: 0, fullParity: true, task: null };
64
+ const d = diagnoseM2(m2);
65
+ expect(d.status).toBe('ok');
66
+ expect(d.nextAction).toBe('');
67
+ expect(d.reading).toContain('divergentBuckets=0');
68
+ });
69
+ it('is degraded when the surfaces re-fork (regression signal)', () => {
70
+ const m2 = { divergentBuckets: 2, fullParity: false, task: 'do a thing' };
71
+ const d = diagnoseM2(m2);
72
+ expect(d.status).toBe('degraded');
73
+ expect(d.reading).toContain('divergentBuckets=2');
74
+ expect(d.reading).toContain('task="do a thing"');
75
+ expect(d.nextAction).toMatch(/shared ranker|TEN-2431/);
76
+ });
77
+ });
78
+ describe('diagnoseM3', () => {
79
+ it('is awaiting when there are captures (floor unpinned)', () => {
80
+ const m3 = {
81
+ capturedCount: 8,
82
+ everRatifiedCount: 3,
83
+ inSessionRatifiedCount: 1,
84
+ everRatifiedRate: 0.375,
85
+ inSessionRatifiedRate: 0.125,
86
+ sessionWindow: 20,
87
+ sessionsConsidered: 12,
88
+ };
89
+ const d = diagnoseM3(m3);
90
+ expect(d.status).toBe('awaiting');
91
+ expect(d.reading).toContain('captured=8');
92
+ expect(d.cause).toMatch(/unpinned/i);
93
+ // WP-527 (Lane T Slice 2): a PROPOSED (not pinned) floor value now rides alongside the
94
+ // unpinned status — the tile must never claim ok/degraded from a proposal (status stays
95
+ // `awaiting` above), but the candidate number + "awaiting founder accept" must be visible.
96
+ expect(d.cause).toMatch(/PROPOSED pin 10%/);
97
+ expect(d.cause).toMatch(/awaiting founder accept/);
98
+ expect(d.nextAction).toMatch(/10%/);
99
+ // PR #477 review round 1 (codex P2): this is a SHARED function with no workspaceId — the
100
+ // calibration number must never read as if it came from the calling workspace's own
101
+ // history (a different tenant would see the same "every measured run" claim wrongly).
102
+ expect(d.cause).toMatch(/Product-OS calibration/);
103
+ expect(d.cause).toMatch(/not this workspace's own history/);
104
+ // PR #477 review round 2 (codex P2): round 1 only scoped `cause` — `nextAction` must be
105
+ // scoped too, since the CLI formatter prints it verbatim to every tenant just the same.
106
+ expect(d.nextAction).toMatch(/not derived from this workspace/);
107
+ // chain-id-leak guard: the user-facing strings carry no raw Chain IDs.
108
+ expect(d.cause).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
109
+ expect(d.nextAction).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
110
+ });
111
+ it('is unmeasured with zero captures', () => {
112
+ const m3 = {
113
+ capturedCount: 0,
114
+ everRatifiedCount: 0,
115
+ inSessionRatifiedCount: 0,
116
+ everRatifiedRate: null,
117
+ inSessionRatifiedRate: null,
118
+ sessionWindow: 20,
119
+ sessionsConsidered: 5,
120
+ };
121
+ const d = diagnoseM3(m3);
122
+ expect(d.status).toBe('unmeasured');
123
+ });
124
+ });
125
+ const m4Empty = {
126
+ reworkJoinWindowMs: 72 * 60 * 60 * 1000,
127
+ lookbackWindowMs: 30 * 24 * 60 * 60 * 1000,
128
+ now: Date.now(),
129
+ servedCount: 0,
130
+ unattributableServedCount: 0,
131
+ pendingObservationCount: 0,
132
+ decidedCount: 0,
133
+ firstTimeGoodCount: 0,
134
+ reworkedCount: 0,
135
+ firstTimeGoodShare: null,
136
+ signalCount: 0,
137
+ joinedSignalCount: 0,
138
+ unjoinedSignalCount: 0,
139
+ falseAttributionRate: null,
140
+ byClassification: { revision: 0, ci_review_correction: 0, user_override: 0 },
141
+ ciReviewCorrectionAttribution: { attributable: 0, notAttributable: 0, unspecified: 0 },
142
+ cohort: { workspaceId: 'ws_1', taskProvidedCount: 0, taskAbsentCount: 0 },
143
+ };
144
+ const m4WithData = {
145
+ reworkJoinWindowMs: 72 * 60 * 60 * 1000,
146
+ lookbackWindowMs: 30 * 24 * 60 * 60 * 1000,
147
+ now: Date.now(),
148
+ servedCount: 10,
149
+ unattributableServedCount: 1,
150
+ pendingObservationCount: 2,
151
+ decidedCount: 7,
152
+ firstTimeGoodCount: 5,
153
+ reworkedCount: 2,
154
+ firstTimeGoodShare: 5 / 7,
155
+ signalCount: 3,
156
+ joinedSignalCount: 2,
157
+ unjoinedSignalCount: 1,
158
+ falseAttributionRate: 1 / 3,
159
+ byClassification: { revision: 2, ci_review_correction: 1, user_override: 0 },
160
+ ciReviewCorrectionAttribution: { attributable: 1, notAttributable: 0, unspecified: 0 },
161
+ cohort: { workspaceId: 'ws_1', taskProvidedCount: 2, taskAbsentCount: 1 },
162
+ };
163
+ describe('diagnoseM4', () => {
164
+ it('is unmeasured when nothing has been served in the window yet', () => {
165
+ const d = diagnoseM4(m4Empty);
166
+ expect(d.status).toBe('unmeasured');
167
+ expect(d.metric).toBe('M4');
168
+ expect(d.cause).toMatch(/nothing to join/i);
169
+ expect(d.nextAction).toMatch(/pb orient|pb rework report/);
170
+ });
171
+ it('is awaiting (raw distribution, no invented threshold) whenever there IS served data', () => {
172
+ const d = diagnoseM4(m4WithData);
173
+ expect(d.status).toBe('awaiting');
174
+ expect(d.metric).toBe('M4');
175
+ // The raw numbers are always shown, never replaced by a verdict.
176
+ expect(d.reading).toContain('first-time-good=71%');
177
+ expect(d.reading).toContain('false-attribution=33%');
178
+ expect(d.reading).toContain('served=10');
179
+ expect(d.reading).toContain('signals=3');
180
+ // No causality claim (spec §6): association only, never "caused"/"proves"/"confirms".
181
+ expect(d.cause).not.toMatch(/\bcaused\b|\bproves\b|\bconfirms\b/i);
182
+ // chain-id-leak guard: the user-facing strings carry no raw Chain IDs.
183
+ expect(d.cause).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
184
+ expect(d.nextAction).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
185
+ });
186
+ });
187
+ describe('diagnoseM5', () => {
188
+ it('is unmeasured (fail-soft) when the local projection is unavailable', () => {
189
+ const m5 = {
190
+ localProjectionMtime: null,
191
+ serverMaterializedAt: 123,
192
+ localLagMs: null,
193
+ localAgeMs: null,
194
+ unavailableReason: 'no .productbrain/ project root found',
195
+ };
196
+ const d = diagnoseM5(m5);
197
+ expect(d.status).toBe('unmeasured');
198
+ expect(d.reading).toContain('no .productbrain/');
199
+ });
200
+ it('is awaiting (threshold unpinned) when local drift is determinable', () => {
201
+ const m5 = {
202
+ localProjectionMtime: 1_000,
203
+ serverMaterializedAt: 2_000,
204
+ localLagMs: 1_000,
205
+ localAgeMs: 5_000,
206
+ };
207
+ const d = diagnoseM5(m5);
208
+ expect(d.status).toBe('awaiting');
209
+ expect(d.cause).toMatch(/unpinned/i);
210
+ // The CLAUDE.md-can't-drift framing is preserved.
211
+ expect(d.cause).toMatch(/CLAUDE\.md/);
212
+ // WP-527 (Lane T Slice 2): PROPOSED (not pinned) floor value, status stays `awaiting`.
213
+ // 10d, not 7d: this is the LOCAL-pull instrument's own single-observation calibration
214
+ // (PR #477 review fix, codex P2 — a prior draft mixed local-age and server-generation-age
215
+ // readings as if they were one series; each instrument now gets its own honest number).
216
+ expect(d.cause).toMatch(/PROPOSED pin 10d/);
217
+ expect(d.cause).toMatch(/awaiting founder accept/);
218
+ expect(d.cause).toMatch(/Product-OS calibration/);
219
+ expect(d.cause).toMatch(/not a trend/);
220
+ expect(d.cause).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
221
+ });
222
+ it('is unmeasured (not awaiting) when the local projection exists but there is no server reference', () => {
223
+ // Local projection present, but no server materialization to diff against → the local-pull
224
+ // DRIFT (server−local) is undeterminable, so the honest status is unmeasured, not a misleading
225
+ // `awaiting` with local-lag=n/a. local-age is still surfaced.
226
+ const m5 = {
227
+ localProjectionMtime: 5_000,
228
+ serverMaterializedAt: null,
229
+ localLagMs: null,
230
+ localAgeMs: 3_000,
231
+ };
232
+ const d = diagnoseM5(m5);
233
+ expect(d.status).toBe('unmeasured');
234
+ expect(d.reading).toContain('local-age=');
235
+ expect(d.reading).toMatch(/drift undeterminable/i);
236
+ });
237
+ });
238
+ describe('diagnoseM5FromServer', () => {
239
+ it('is awaiting (threshold unpinned) with its OWN server-generation-age PROPOSED value, distinct from diagnoseM5', () => {
240
+ // PR #477 review fix (codex P2): diagnoseM5 (local-pull drift) and diagnoseM5FromServer
241
+ // (server-generation age) are two DIFFERENT instruments — a shared "trend" number between
242
+ // them was miscalibration. Each carries its own single-observation proposal.
243
+ const materialization = {
244
+ latestMaterializedAt: 1_000,
245
+ materializationAgeMs: 2_000,
246
+ now: 3_000,
247
+ };
248
+ const d = diagnoseM5FromServer(materialization);
249
+ expect(d.status).toBe('awaiting');
250
+ expect(d.cause).toMatch(/unpinned/i);
251
+ expect(d.cause).toMatch(/PROPOSED pin 7d/);
252
+ expect(d.cause).toMatch(/Product-OS calibration/);
253
+ expect(d.cause).toMatch(/server-generation-age reading/);
254
+ expect(d.cause).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
255
+ });
256
+ });
257
+ describe('diagnoseCoachingMoat', () => {
258
+ it('is a standing unmeasured line — four green tiles != healthy moat (TEN-2377)', () => {
259
+ const d = diagnoseCoachingMoat();
260
+ expect(d.status).toBe('unmeasured');
261
+ expect(d.cause).toMatch(/WHY-moat|TEN-2377|skips/i);
262
+ expect(d.nextAction).toMatch(/four green tiles/i);
263
+ });
264
+ });
265
+ describe('diagnose (bundle)', () => {
266
+ it('produces all five metric diagnoses plus the standing moat line', () => {
267
+ const payload = {
268
+ workspaceId: 'ws_1',
269
+ generatedAt: Date.now(),
270
+ m1: m1WithData,
271
+ m2: { divergentBuckets: 0, fullParity: true, task: null },
272
+ m3: {
273
+ capturedCount: 0,
274
+ everRatifiedCount: 0,
275
+ inSessionRatifiedCount: 0,
276
+ everRatifiedRate: null,
277
+ inSessionRatifiedRate: null,
278
+ sessionWindow: 20,
279
+ sessionsConsidered: 0,
280
+ },
281
+ m4: m4WithData,
282
+ materialization: { latestMaterializedAt: null, materializationAgeMs: null, now: Date.now() },
283
+ coherence: {
284
+ openConflictCount: 0,
285
+ openConflictsTruncated: false,
286
+ reviewed: 0,
287
+ real: 0,
288
+ falseAlarm: 0,
289
+ reviewedTruncated: false,
290
+ humanBar: { meets: false, lowerBound: null, reviewed: 0 },
291
+ detectionCoverage: { bySurface: {}, scanned: 0, truncated: false },
292
+ contradictionOverrideRate: { overrides: 0, heldBlocks: 0, rate: null, truncated: false },
293
+ },
294
+ };
295
+ const m5 = {
296
+ localProjectionMtime: null,
297
+ serverMaterializedAt: null,
298
+ localLagMs: null,
299
+ localAgeMs: null,
300
+ unavailableReason: 'absent',
301
+ };
302
+ const bundle = diagnose(payload, m5);
303
+ expect(bundle.m1.status).toBe('awaiting');
304
+ expect(bundle.m2.status).toBe('ok');
305
+ expect(bundle.m3.status).toBe('unmeasured');
306
+ expect(bundle.m4.status).toBe('awaiting');
307
+ expect(bundle.m5.status).toBe('unmeasured');
308
+ expect(bundle.moat.status).toBe('unmeasured');
309
+ });
310
+ });
311
+ //# sourceMappingURL=diagnose.test.js.map