@unbrained/pm-cli 2026.9.7 → 2026.9.9

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 (746) hide show
  1. package/.agents/skills/pm-developer/SKILL.md +12 -4
  2. package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +19 -10
  3. package/.agents/skills/pm-extensions/SKILL.md +6 -0
  4. package/.agents/skills/pm-sdk/SKILL.md +11 -2
  5. package/.agents/skills/pm-user/SKILL.md +7 -2
  6. package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
  7. package/.claude-plugin/marketplace.json +2 -2
  8. package/CHANGELOG.md +231 -182
  9. package/dist/cli/after-command-context-usage.js +1 -48
  10. package/dist/cli/argv-utils.js +1 -40
  11. package/dist/cli/bootstrap-args.js +1 -9
  12. package/dist/cli/bundle-integrity.js +2 -110
  13. package/dist/cli/commander-usage.js +11 -771
  14. package/dist/cli/commands/activity.js +1 -9
  15. package/dist/cli/commands/aggregate.js +1 -5
  16. package/dist/cli/commands/append.js +1 -5
  17. package/dist/cli/commands/claim.js +1 -5
  18. package/dist/cli/commands/close-many.js +1 -5
  19. package/dist/cli/commands/close.js +1 -9
  20. package/dist/cli/commands/comments.js +1 -5
  21. package/dist/cli/commands/config.js +1 -9
  22. package/dist/cli/commands/context.js +1 -9
  23. package/dist/cli/commands/contracts.js +1 -5
  24. package/dist/cli/commands/copy.js +1 -9
  25. package/dist/cli/commands/create.js +1 -9
  26. package/dist/cli/commands/delete.js +1 -9
  27. package/dist/cli/commands/deps.js +1 -9
  28. package/dist/cli/commands/docs.js +1 -9
  29. package/dist/cli/commands/duplicates.js +1 -9
  30. package/dist/cli/commands/eval.js +1 -9
  31. package/dist/cli/commands/extension/describe.js +1 -5
  32. package/dist/cli/commands/extension/scaffold.js +1 -5
  33. package/dist/cli/commands/extension/shared.js +1 -5
  34. package/dist/cli/commands/extension.js +1 -9
  35. package/dist/cli/commands/files.js +1 -9
  36. package/dist/cli/commands/focus.js +1 -9
  37. package/dist/cli/commands/gc.js +1 -9
  38. package/dist/cli/commands/get.js +1 -9
  39. package/dist/cli/commands/graph.js +1 -10
  40. package/dist/cli/commands/health.js +1 -9
  41. package/dist/cli/commands/history-compact.js +1 -10
  42. package/dist/cli/commands/history-redact.js +1 -11
  43. package/dist/cli/commands/history-repair.js +1 -10
  44. package/dist/cli/commands/history.js +1 -5
  45. package/dist/cli/commands/index.js +1 -58
  46. package/dist/cli/commands/init-agent-guidance.js +1 -9
  47. package/dist/cli/commands/init.js +1 -9
  48. package/dist/cli/commands/learnings.js +1 -5
  49. package/dist/cli/commands/lifecycle-transitions.js +1 -5
  50. package/dist/cli/commands/list.js +1 -9
  51. package/dist/cli/commands/merge.js +1 -11
  52. package/dist/cli/commands/next.js +1 -9
  53. package/dist/cli/commands/notes.js +1 -5
  54. package/dist/cli/commands/plan.js +1 -9
  55. package/dist/cli/commands/profile.js +1 -9
  56. package/dist/cli/commands/restore.js +1 -9
  57. package/dist/cli/commands/scheduling-shortcuts.js +1 -9
  58. package/dist/cli/commands/schema.js +1 -10
  59. package/dist/cli/commands/search.js +1 -9
  60. package/dist/cli/commands/stats.js +1 -9
  61. package/dist/cli/commands/telemetry.js +1 -9
  62. package/dist/cli/commands/test-all.js +1 -9
  63. package/dist/cli/commands/test-runs.js +1 -9
  64. package/dist/cli/commands/test.js +1 -9
  65. package/dist/cli/commands/update-many.js +1 -5
  66. package/dist/cli/commands/update.js +1 -9
  67. package/dist/cli/commands/upgrade.js +1 -5
  68. package/dist/cli/commands/validate.js +1 -15
  69. package/dist/cli/context-intent-invocation.js +1 -20
  70. package/dist/cli/description-stdin.js +1 -17
  71. package/dist/cli/error-guidance.js +1 -1353
  72. package/dist/cli/extension-command-help.js +5 -636
  73. package/dist/cli/extension-command-options.js +1 -427
  74. package/dist/cli/extension-recovery.js +1 -126
  75. package/dist/cli/help-content.js +2 -1001
  76. package/dist/cli/help-json-payload.js +4 -570
  77. package/dist/cli/main.d.ts +4 -0
  78. package/dist/cli/main.js +5 -2573
  79. package/dist/cli/migration-gates.js +1 -289
  80. package/dist/cli/public.js +1 -20
  81. package/dist/cli/register-annotations.js +1 -270
  82. package/dist/cli/register-assurance.js +1 -62
  83. package/dist/cli/register-files-lookup.js +1 -56
  84. package/dist/cli/register-history-activity.d.ts +8 -0
  85. package/dist/cli/register-history-activity.js +2 -0
  86. package/dist/cli/register-history-author.js +1 -38
  87. package/dist/cli/register-history-maintenance.d.ts +9 -0
  88. package/dist/cli/register-history-maintenance.js +2 -0
  89. package/dist/cli/register-list-query.js +10 -943
  90. package/dist/cli/register-mutation-options.js +1 -9
  91. package/dist/cli/register-mutation.d.ts +0 -5
  92. package/dist/cli/register-mutation.js +19 -1893
  93. package/dist/cli/register-operations.js +1 -920
  94. package/dist/cli/register-setup.js +1 -716
  95. package/dist/cli/register-structured-mutation.js +1 -196
  96. package/dist/cli/registration-helpers.js +1 -5
  97. package/dist/cli/runtime-compatibility-boundary.js +4 -42
  98. package/dist/cli/schema-registration-helpers.js +1 -73
  99. package/dist/cli/search-refresh.js +1 -13
  100. package/dist/cli/stats-analytics-json.js +1 -68
  101. package/dist/cli/telemetry-flush.js +1 -10
  102. package/dist/cli-bundle/bundle-manifest.json +164 -156
  103. package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-3IPRM75M.js} +3 -3
  104. package/dist/cli-bundle/chunks/chunk-4VL5P22L.js +2 -0
  105. package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +29 -0
  106. package/dist/cli-bundle/chunks/chunk-D3YVILJJ.js +20 -0
  107. package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
  108. package/dist/cli-bundle/chunks/chunk-ECBLPN7B.js +3 -0
  109. package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +235 -0
  110. package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +2 -0
  111. package/dist/cli-bundle/chunks/chunk-L5RCDKQ2.js +2 -0
  112. package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
  113. package/dist/cli-bundle/chunks/chunk-OHNLSGGV.js +79 -0
  114. package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +5 -0
  115. package/dist/cli-bundle/chunks/{chunk-BAX2BYUW.js → chunk-XZ6T7YPP.js} +256 -150
  116. package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-Z3XVXUVF.js} +4 -4
  117. package/dist/cli-bundle/chunks/register-list-query-UIHRCS6D.js +11 -0
  118. package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +20 -0
  119. package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +2 -0
  120. package/dist/cli-bundle/chunks/register-setup-PERI45EM.js +2 -0
  121. package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +2 -0
  122. package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +12 -0
  123. package/dist/cli-bundle/focused-chunks/chunk-5FHTCOHS.js +3 -0
  124. package/dist/cli-bundle/focused-chunks/chunk-7N6DOREF.js +26 -0
  125. package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-7PC4R5QB.js} +2 -2
  126. package/dist/cli-bundle/focused-chunks/chunk-BUCJUZVG.js +6 -0
  127. package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +2 -0
  128. package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +2 -0
  129. package/dist/cli-bundle/focused-chunks/chunk-OQUGRHKV.js +10 -0
  130. package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-PNKIANFZ.js} +2 -2
  131. package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-QQQ4SAUO.js} +3 -3
  132. package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +177 -0
  133. package/dist/cli-bundle/focused-chunks/chunk-XNR3DM6J.js +2 -0
  134. package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +9 -0
  135. package/dist/cli-bundle/focused-chunks/chunk-YCDQ2N23.js +8 -0
  136. package/dist/cli-bundle/focused-chunks/chunk-YJUXGS57.js +20 -0
  137. package/dist/cli-bundle/focused-chunks/chunk-ZTCE4UO6.js +58 -0
  138. package/dist/cli-bundle/main.js +20 -20
  139. package/dist/cli-bundle/sdk-authoring.js +1 -1
  140. package/dist/cli-bundle/sdk-contracts.js +2 -2
  141. package/dist/cli-bundle/sdk-core.js +37 -37
  142. package/dist/cli-bundle/sdk-governance.js +1 -1
  143. package/dist/cli-bundle/sdk-graph.js +1 -1
  144. package/dist/cli-bundle/sdk-merge.js +42 -42
  145. package/dist/cli-bundle/sdk-query.js +1 -1
  146. package/dist/cli-bundle/sdk-runtime.js +1 -1
  147. package/dist/cli-bundle/sdk-testing.js +1 -1
  148. package/dist/cli-bundle/sdk.js +11 -11
  149. package/dist/cli.js +1 -104
  150. package/dist/core/checkpoint/checkpoint-gc.js +1 -169
  151. package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
  152. package/dist/core/config/nested-settings.js +1 -534
  153. package/dist/core/config/positional-value.js +1 -109
  154. package/dist/core/diagnostics/remediation.js +1 -506
  155. package/dist/core/extensions/activation-summary-markdown.js +2 -145
  156. package/dist/core/extensions/activation-summary.js +1 -92
  157. package/dist/core/extensions/activation-transaction.js +1 -46
  158. package/dist/core/extensions/capability-usage.js +1 -173
  159. package/dist/core/extensions/command-hook-context.js +1 -13
  160. package/dist/core/extensions/command-metadata-contract.js +1 -22
  161. package/dist/core/extensions/command-visibility-tier.js +1 -29
  162. package/dist/core/extensions/contribution-inventory.js +1 -173
  163. package/dist/core/extensions/exporter-output-contract.js +1 -66
  164. package/dist/core/extensions/extension-candidate.js +1 -18
  165. package/dist/core/extensions/extension-capability-aliases.js +1 -158
  166. package/dist/core/extensions/extension-hook-runtime.js +1 -699
  167. package/dist/core/extensions/extension-policy.js +1 -599
  168. package/dist/core/extensions/extension-registries.js +1 -62
  169. package/dist/core/extensions/extension-runtime-helpers.js +1 -33
  170. package/dist/core/extensions/extension-types.js +1 -102
  171. package/dist/core/extensions/flag-definition-validation.js +1 -52
  172. package/dist/core/extensions/flag-value-types.js +1 -64
  173. package/dist/core/extensions/index.js +1 -526
  174. package/dist/core/extensions/item-field-types.js +1 -39
  175. package/dist/core/extensions/item-fields.js +1 -261
  176. package/dist/core/extensions/loader.js +1 -2223
  177. package/dist/core/extensions/manifest-schema.js +1 -69
  178. package/dist/core/extensions/module-graph-snapshot.js +1 -33
  179. package/dist/core/extensions/preflight-ownership.js +1 -41
  180. package/dist/core/extensions/registration-validation.js +1 -82
  181. package/dist/core/extensions/registration-values.js +1 -209
  182. package/dist/core/extensions/reserved-host-flags.js +1 -36
  183. package/dist/core/extensions/runtime-registrations.js +1 -67
  184. package/dist/core/extensions/service-ownership.js +1 -19
  185. package/dist/core/extensions/version-compat.js +1 -216
  186. package/dist/core/fs/fs-utils.js +2 -158
  187. package/dist/core/fs/host-environment-errors.js +1 -141
  188. package/dist/core/fs/index.js +1 -9
  189. package/dist/core/fs/path-utils.js +1 -17
  190. package/dist/core/governance/content-fields.js +1 -160
  191. package/dist/core/governance/issue-codes.js +1 -151
  192. package/dist/core/governance/metadata-coverage.js +1 -358
  193. package/dist/core/history/drift-cache.js +3 -72
  194. package/dist/core/history/drift-scan.js +1 -342
  195. package/dist/core/history/event-classification.js +1 -109
  196. package/dist/core/history/event-index.js +8 -784
  197. package/dist/core/history/history-compact-bulk.js +1 -104
  198. package/dist/core/history/history-diff.js +1 -158
  199. package/dist/core/history/history-rewrite.d.ts +6 -1
  200. package/dist/core/history/history-rewrite.js +1 -107
  201. package/dist/core/history/history-storage-stats.js +1 -102
  202. package/dist/core/history/history-stream-policy.js +1 -62
  203. package/dist/core/history/history.js +2 -617
  204. package/dist/core/history/identity.js +1 -30
  205. package/dist/core/history/index.js +1 -9
  206. package/dist/core/history/projection.js +1 -196
  207. package/dist/core/history/read.d.ts +9 -0
  208. package/dist/core/history/read.js +1 -57
  209. package/dist/core/history/replay.js +2 -439
  210. package/dist/core/history/version-address.js +1 -32
  211. package/dist/core/history/workspace-history.js +2 -433
  212. package/dist/core/io/body-file.js +1 -62
  213. package/dist/core/io/bulk-ids-input.js +1 -112
  214. package/dist/core/item/actionability.js +1 -327
  215. package/dist/core/item/dependency-reference.js +1 -20
  216. package/dist/core/item/id.js +1 -112
  217. package/dist/core/item/index.js +1 -12
  218. package/dist/core/item/item-format-version.js +1 -78
  219. package/dist/core/item/item-format.js +5 -1473
  220. package/dist/core/item/item-record.js +1 -23
  221. package/dist/core/item/item-type-definition.js +1 -133
  222. package/dist/core/item/parent-reference-policy.js +1 -57
  223. package/dist/core/item/parse.js +2 -603
  224. package/dist/core/item/plan-lifecycle.js +1 -19
  225. package/dist/core/item/priority.js +1 -61
  226. package/dist/core/item/sprint-release-format.js +1 -38
  227. package/dist/core/item/status-filter.js +1 -115
  228. package/dist/core/item/status.js +1 -43
  229. package/dist/core/item/toon-decode.js +1 -29
  230. package/dist/core/item/type-registry.js +1 -715
  231. package/dist/core/item/type-synonyms.js +1 -38
  232. package/dist/core/lock/index.js +1 -9
  233. package/dist/core/lock/lock-gc.js +1 -240
  234. package/dist/core/lock/lock.js +3 -590
  235. package/dist/core/output/mutation-projection.js +1 -217
  236. package/dist/core/output/output-control.js +1 -25
  237. package/dist/core/output/output.js +11 -494
  238. package/dist/core/output/query-summary.js +1 -58
  239. package/dist/core/output/tabular.js +1 -77
  240. package/dist/core/packages/manifest.js +1 -244
  241. package/dist/core/packages/root.js +1 -84
  242. package/dist/core/policy/workflow-policy-schema.d.ts +312 -0
  243. package/dist/core/policy/workflow-policy-schema.js +2 -0
  244. package/dist/core/policy/workflow-policy-store.d.ts +24 -0
  245. package/dist/core/policy/workflow-policy-store.js +2 -0
  246. package/dist/core/policy/workflow-policy.d.ts +139 -0
  247. package/dist/core/policy/workflow-policy.js +2 -0
  248. package/dist/core/profile/profile-describe.js +1 -83
  249. package/dist/core/profile/profile-lint.js +1 -415
  250. package/dist/core/profile/profile-plan.js +0 -0
  251. package/dist/core/profile/profile-presets.js +1 -370
  252. package/dist/core/reproducibility/context.js +1 -82
  253. package/dist/core/schema/fields-file.js +2 -288
  254. package/dist/core/schema/item-types-file.js +2 -296
  255. package/dist/core/schema/runtime-field-filters.js +1 -49
  256. package/dist/core/schema/runtime-field-values.js +1 -313
  257. package/dist/core/schema/runtime-schema.js +2 -826
  258. package/dist/core/schema/status-defs-file.js +2 -227
  259. package/dist/core/schema/status-token.js +1 -31
  260. package/dist/core/schema/type-inference.js +1 -95
  261. package/dist/core/schema/type-presets.js +1 -87
  262. package/dist/core/schema/type-workflows.js +1 -104
  263. package/dist/core/search/background-refresh.js +2 -286
  264. package/dist/core/search/bm25.js +1 -146
  265. package/dist/core/search/cache.js +2 -534
  266. package/dist/core/search/corpus.js +1 -311
  267. package/dist/core/search/embedding-batches.js +1 -163
  268. package/dist/core/search/eval.js +1 -225
  269. package/dist/core/search/http-client.js +1 -75
  270. package/dist/core/search/providers.js +1 -242
  271. package/dist/core/search/relevance.js +1 -244
  272. package/dist/core/search/semantic-defaults.js +1 -199
  273. package/dist/core/search/staleness.js +1 -30
  274. package/dist/core/search/vector-stores.js +2 -664
  275. package/dist/core/search/vectorization-metadata.js +1 -81
  276. package/dist/core/sentry/helpers.js +1 -272
  277. package/dist/core/sentry/instrument.js +1 -387
  278. package/dist/core/session/session-state.js +1 -260
  279. package/dist/core/shared/agent-session-context.js +1 -133
  280. package/dist/core/shared/author.js +1 -1172
  281. package/dist/core/shared/command-types.js +1 -4
  282. package/dist/core/shared/conflict-markers.js +1 -31
  283. package/dist/core/shared/constants.js +1 -405
  284. package/dist/core/shared/errors.js +1 -20
  285. package/dist/core/shared/html-entity-decode.js +1 -131
  286. package/dist/core/shared/index.js +1 -12
  287. package/dist/core/shared/item-metadata-contract.js +1 -89
  288. package/dist/core/shared/lazy-module.js +1 -16
  289. package/dist/core/shared/levenshtein.js +1 -61
  290. package/dist/core/shared/memo.js +1 -19
  291. package/dist/core/shared/numeric-parsers.js +1 -20
  292. package/dist/core/shared/option-alias-visibility.js +1 -67
  293. package/dist/core/shared/primitives.js +1 -127
  294. package/dist/core/shared/serial-queue.js +1 -79
  295. package/dist/core/shared/serialization.js +1 -210
  296. package/dist/core/shared/split-comma-list.js +1 -30
  297. package/dist/core/shared/text-normalization.js +1 -38
  298. package/dist/core/shared/time.js +1 -306
  299. package/dist/core/store/index.js +1 -12
  300. package/dist/core/store/item-format-migration.js +1 -125
  301. package/dist/core/store/item-metadata-cache.js +1 -1116
  302. package/dist/core/store/item-metadata-query-index.js +9 -394
  303. package/dist/core/store/item-metadata-read-work.js +1 -43
  304. package/dist/core/store/item-store.js +1 -693
  305. package/dist/core/store/paths.d.ts +1 -1
  306. package/dist/core/store/paths.js +1 -214
  307. package/dist/core/store/settings-read-cache.js +1 -85
  308. package/dist/core/store/settings-validator.d.ts +1 -0
  309. package/dist/core/store/settings-validator.js +1 -421
  310. package/dist/core/store/settings.js +3 -1309
  311. package/dist/core/store/tracker-preflight.js +1 -141
  312. package/dist/core/telemetry/consent.js +5 -108
  313. package/dist/core/telemetry/observability.js +1 -246
  314. package/dist/core/telemetry/runtime.js +4 -1988
  315. package/dist/core/test/background-runs.js +4 -945
  316. package/dist/core/test/item-test-run-tracking.js +1 -63
  317. package/dist/core/test/run-selectors.js +1 -120
  318. package/dist/core/validate/estimate-defaults.js +1 -89
  319. package/dist/core/validate/fix-planning.js +1 -189
  320. package/dist/core/validate/linked-artifact-reference.js +1 -36
  321. package/dist/core/validate/missing-by-type.js +1 -34
  322. package/dist/core/validate/missing-link-owners.js +1 -95
  323. package/dist/core/validate/stale-file-classification.js +1 -82
  324. package/dist/mcp/http-server.js +5 -448
  325. package/dist/mcp/legacy-adapter.js +1 -77
  326. package/dist/mcp/runtime-capabilities.js +1 -200
  327. package/dist/mcp/server.js +4 -1233
  328. package/dist/mcp/tool-definitions.js +1 -804
  329. package/dist/sdk/actionability.js +1 -13
  330. package/dist/sdk/agent/closed-domain-contracts.js +1 -161
  331. package/dist/sdk/agent/command-recovery.js +1 -59
  332. package/dist/sdk/agent/command-suggestions.js +1 -66
  333. package/dist/sdk/agent/create-option-policy.js +1 -31
  334. package/dist/sdk/agent/identity-config.js +1 -106
  335. package/dist/sdk/agent/item-addressing.js +1 -207
  336. package/dist/sdk/agent/refusal-closure-census.js +1 -151
  337. package/dist/sdk/agent/refusal-closure.js +1 -133
  338. package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
  339. package/dist/sdk/agent/refusal-reachability.js +1 -593
  340. package/dist/sdk/agent/subcommand-recovery.js +1 -83
  341. package/dist/sdk/agent/task-transcript-contracts.js +1 -197
  342. package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
  343. package/dist/sdk/agent-capability-contracts.js +1 -428
  344. package/dist/sdk/agent-session-context.js +1 -9
  345. package/dist/sdk/annotations.js +1 -448
  346. package/dist/sdk/author-attribution.js +1 -468
  347. package/dist/sdk/authoring.js +1 -20
  348. package/dist/sdk/cli-bootstrap.js +1 -838
  349. package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
  350. package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
  351. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
  352. package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
  353. package/dist/sdk/cli-contracts/command-aliases.js +1 -107
  354. package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
  355. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
  356. package/dist/sdk/cli-contracts/commander-types.js +1 -159
  357. package/dist/sdk/cli-contracts/completeness.js +1 -393
  358. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  359. package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
  360. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
  361. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
  362. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
  363. package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
  364. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
  365. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
  366. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
  367. package/dist/sdk/cli-contracts/string-lists.js +1 -16
  368. package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
  369. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
  370. package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
  371. package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
  372. package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
  373. package/dist/sdk/cli-contracts.d.ts +1 -1
  374. package/dist/sdk/cli-contracts.js +1 -17
  375. package/dist/sdk/cli-program.js +1 -49
  376. package/dist/sdk/command-line.d.ts +2 -5
  377. package/dist/sdk/command-line.js +1 -78
  378. package/dist/sdk/comments.js +1 -133
  379. package/dist/sdk/compile-cache.js +1 -73
  380. package/dist/sdk/completion.js +174 -839
  381. package/dist/sdk/compose.js +1 -1090
  382. package/dist/sdk/config.js +1 -1204
  383. package/dist/sdk/context/recency.js +1 -33
  384. package/dist/sdk/context/semantic-session-attribution.js +1 -82
  385. package/dist/sdk/context/usage-egress.js +1 -29
  386. package/dist/sdk/context/usage-ledger.js +3 -185
  387. package/dist/sdk/context-intent-contracts.js +1 -709
  388. package/dist/sdk/context-intent-runtime.js +1 -115
  389. package/dist/sdk/context-packing.js +1 -218
  390. package/dist/sdk/context-relevance.js +1 -503
  391. package/dist/sdk/context-signal-store.js +2 -426
  392. package/dist/sdk/context-usage.js +1 -367
  393. package/dist/sdk/contracts.js +1 -23
  394. package/dist/sdk/core-governance.js +1 -14
  395. package/dist/sdk/core.js +1 -14
  396. package/dist/sdk/corpus-shape.js +1 -401
  397. package/dist/sdk/define.js +1 -220
  398. package/dist/sdk/dependencies.js +1 -718
  399. package/dist/sdk/dependency-flag-validation.js +1 -156
  400. package/dist/sdk/dependency-provenance.js +1 -135
  401. package/dist/sdk/docs.js +1 -14
  402. package/dist/sdk/duplicates.js +1 -40
  403. package/dist/sdk/environment/agent-environment.js +1 -466
  404. package/dist/sdk/environment/host-environment-errors.js +1 -8
  405. package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
  406. package/dist/sdk/environment/source-context.js +1 -28
  407. package/dist/sdk/environment/tracker-preflight.js +1 -9
  408. package/dist/sdk/error-code-catalog.js +1 -153
  409. package/dist/sdk/error-runtime.js +1 -58
  410. package/dist/sdk/errors.js +1 -58
  411. package/dist/sdk/eval.js +1 -190
  412. package/dist/sdk/extension/author-manifest.js +1 -92
  413. package/dist/sdk/extension/bundled-catalog.js +1 -332
  414. package/dist/sdk/extension/concurrency.js +1 -25
  415. package/dist/sdk/extension/copy-scope.d.ts +2 -0
  416. package/dist/sdk/extension/copy-scope.js +2 -0
  417. package/dist/sdk/extension/custom-field-collisions.js +1 -30
  418. package/dist/sdk/extension/describe.js +3 -189
  419. package/dist/sdk/extension/doctor.js +1 -606
  420. package/dist/sdk/extension/install-plan.d.ts +69 -0
  421. package/dist/sdk/extension/install-plan.js +2 -0
  422. package/dist/sdk/extension/install-receipts.d.ts +7 -0
  423. package/dist/sdk/extension/install-receipts.js +2 -0
  424. package/dist/sdk/extension/install-runtime.js +3 -313
  425. package/dist/sdk/extension/install-snapshot.js +1 -66
  426. package/dist/sdk/extension/install-sources.js +5 -1057
  427. package/dist/sdk/extension/managed-state.js +2 -252
  428. package/dist/sdk/extension/migrations.js +2 -174
  429. package/dist/sdk/extension/output-ownership.js +1 -25
  430. package/dist/sdk/extension/runtime-summary.js +1 -18
  431. package/dist/sdk/extension/scaffold.js +4 -2308
  432. package/dist/sdk/extension/shared.js +1 -147
  433. package/dist/sdk/extension/source-resolution.js +1 -65
  434. package/dist/sdk/extension/update-check.js +1 -67
  435. package/dist/sdk/extension-command-context.js +1 -44
  436. package/dist/sdk/extension-contracts.js +1 -73
  437. package/dist/sdk/extension.d.ts +7 -2
  438. package/dist/sdk/extension.js +1 -2196
  439. package/dist/sdk/files.js +1 -535
  440. package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
  441. package/dist/sdk/flag-invocation-contracts.js +1 -344
  442. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
  443. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
  444. package/dist/sdk/generated-error-code-catalog.js +1 -16
  445. package/dist/sdk/governance/assurance-action-contracts.js +1 -4
  446. package/dist/sdk/governance/assurance-action.js +1 -411
  447. package/dist/sdk/governance/assurance-limits.js +1 -10
  448. package/dist/sdk/governance/assurance-mutation-error.js +1 -81
  449. package/dist/sdk/governance/assurance-presets.js +1 -135
  450. package/dist/sdk/governance/assurance-runtime.js +1 -238
  451. package/dist/sdk/governance/assurance.js +4 -1182
  452. package/dist/sdk/governance/boundary-fixtures.js +1 -200
  453. package/dist/sdk/governance/coverage-assurance.js +1 -60
  454. package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
  455. package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
  456. package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
  457. package/dist/sdk/governance/defect-recurrence.js +1 -623
  458. package/dist/sdk/governance/extension-host-version.js +1 -115
  459. package/dist/sdk/governance/gc.js +1 -368
  460. package/dist/sdk/governance/health.js +1 -2367
  461. package/dist/sdk/governance/hierarchy-validation.js +1 -108
  462. package/dist/sdk/governance/linked-file-report.js +1 -71
  463. package/dist/sdk/governance/merge-receipt-history.js +1 -206
  464. package/dist/sdk/governance/provenance-health.js +1 -282
  465. package/dist/sdk/governance/reindex.js +4 -761
  466. package/dist/sdk/governance/stale-work.js +1 -82
  467. package/dist/sdk/governance/status-role-diagnostics.js +1 -35
  468. package/dist/sdk/governance/storage-integrity.js +1 -280
  469. package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
  470. package/dist/sdk/governance/upgrade.js +2 -327
  471. package/dist/sdk/governance/validate-history-drift.js +1 -81
  472. package/dist/sdk/governance/validate-item-reader.js +1 -17
  473. package/dist/sdk/governance/validate-normalization.js +1 -36
  474. package/dist/sdk/governance/validate.d.ts +3 -1
  475. package/dist/sdk/governance/validate.js +1 -2261
  476. package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
  477. package/dist/sdk/governance/workflow-completeness.js +2 -0
  478. package/dist/sdk/governance/workflow-policy.d.ts +47 -0
  479. package/dist/sdk/governance/workflow-policy.js +4 -0
  480. package/dist/sdk/governance/workspace-position.js +1 -163
  481. package/dist/sdk/governance.d.ts +2 -0
  482. package/dist/sdk/governance.js +1 -31
  483. package/dist/sdk/graph/adapter.js +1 -181
  484. package/dist/sdk/graph/analytics.js +1 -474
  485. package/dist/sdk/graph/assembly.js +1 -377
  486. package/dist/sdk/graph/cache.js +1 -160
  487. package/dist/sdk/graph/centrality.js +1 -258
  488. package/dist/sdk/graph/conformance.js +1 -130
  489. package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
  490. package/dist/sdk/graph/deadline-scheduling.js +2 -0
  491. package/dist/sdk/graph/durable-cache.d.ts +1 -1
  492. package/dist/sdk/graph/durable-cache.js +1 -361
  493. package/dist/sdk/graph/governance-contracts.js +1 -34
  494. package/dist/sdk/graph/governance.d.ts +13 -1
  495. package/dist/sdk/graph/governance.js +1 -735
  496. package/dist/sdk/graph/hierarchy-integrity.js +1 -310
  497. package/dist/sdk/graph/index.d.ts +3 -2
  498. package/dist/sdk/graph/index.js +1 -26
  499. package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
  500. package/dist/sdk/graph/lifecycle-coverage.js +2 -0
  501. package/dist/sdk/graph/mutation-advisory.js +1 -176
  502. package/dist/sdk/graph/remediation.js +1 -197
  503. package/dist/sdk/graph/run.d.ts +15 -1
  504. package/dist/sdk/graph/run.js +1 -768
  505. package/dist/sdk/graph/scheduling.js +1 -124
  506. package/dist/sdk/graph/traversal.js +1 -284
  507. package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
  508. package/dist/sdk/graph.js +1 -15
  509. package/dist/sdk/guide-topics.js +1 -707
  510. package/dist/sdk/guide.js +1 -279
  511. package/dist/sdk/history/maintenance.d.ts +71 -0
  512. package/dist/sdk/history/maintenance.js +2 -0
  513. package/dist/sdk/history/salvage.js +2 -247
  514. package/dist/sdk/history/subject.d.ts +19 -0
  515. package/dist/sdk/history/subject.js +2 -0
  516. package/dist/sdk/history-analytics.js +1 -282
  517. package/dist/sdk/history-compact.js +1 -527
  518. package/dist/sdk/history-mcp.js +1 -68
  519. package/dist/sdk/history-provenance.js +1 -182
  520. package/dist/sdk/history-read.js +1 -96
  521. package/dist/sdk/history-redact.d.ts +1 -14
  522. package/dist/sdk/history-redact.js +1 -643
  523. package/dist/sdk/history-repair.d.ts +5 -0
  524. package/dist/sdk/history-repair.js +1 -657
  525. package/dist/sdk/improvement-ledger-validation.js +1 -62
  526. package/dist/sdk/improvement-ledger.js +2 -257
  527. package/dist/sdk/index.d.ts +4 -1
  528. package/dist/sdk/index.js +1 -183
  529. package/dist/sdk/init-agent-guidance.js +2 -496
  530. package/dist/sdk/init.js +2 -820
  531. package/dist/sdk/invocation-author.js +1 -39
  532. package/dist/sdk/item-children.js +1 -90
  533. package/dist/sdk/item-metadata-index.js +1 -15
  534. package/dist/sdk/item-schedule.js +1 -27
  535. package/dist/sdk/item-transaction.js +1 -396
  536. package/dist/sdk/learnings.js +1 -29
  537. package/dist/sdk/lifecycle/append.js +2 -53
  538. package/dist/sdk/lifecycle/claim.d.ts +2 -0
  539. package/dist/sdk/lifecycle/claim.js +1 -242
  540. package/dist/sdk/lifecycle/close-many.js +1 -438
  541. package/dist/sdk/lifecycle/close.js +1 -468
  542. package/dist/sdk/lifecycle/copy.js +1 -212
  543. package/dist/sdk/lifecycle/create.js +1 -1949
  544. package/dist/sdk/lifecycle/delete.js +1 -45
  545. package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
  546. package/dist/sdk/lifecycle/focus.js +1 -91
  547. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
  548. package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
  549. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
  550. package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
  551. package/dist/sdk/lifecycle/mcp-actions.js +1 -51
  552. package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
  553. package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
  554. package/dist/sdk/lifecycle/plan.js +1 -1606
  555. package/dist/sdk/lifecycle/recurrence-parsers.d.ts +1 -1
  556. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
  557. package/dist/sdk/lifecycle/reopen.js +1 -68
  558. package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
  559. package/dist/sdk/lifecycle/restore.d.ts +1 -0
  560. package/dist/sdk/lifecycle/restore.js +1 -330
  561. package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
  562. package/dist/sdk/lifecycle/update-many.js +1 -861
  563. package/dist/sdk/lifecycle/update.js +1 -2136
  564. package/dist/sdk/lifecycle-completion.js +1 -92
  565. package/dist/sdk/lifecycle-policy.js +1 -120
  566. package/dist/sdk/linked-artifacts.js +1 -530
  567. package/dist/sdk/mcp/apps.js +4 -133
  568. package/dist/sdk/mcp/authorization.js +1 -404
  569. package/dist/sdk/mcp/discovery.js +1 -494
  570. package/dist/sdk/mcp/interactions.js +1 -336
  571. package/dist/sdk/mcp/protocol.d.ts +7 -0
  572. package/dist/sdk/mcp/protocol.js +1 -184
  573. package/dist/sdk/mcp/skills.js +1 -389
  574. package/dist/sdk/mcp/subscriptions.js +1 -211
  575. package/dist/sdk/mcp/tasks.js +2 -430
  576. package/dist/sdk/mcp/transport.js +1 -260
  577. package/dist/sdk/merge/abandoned-receipts.js +1 -46
  578. package/dist/sdk/merge/driver.js +1 -212
  579. package/dist/sdk/merge/index.js +1 -16
  580. package/dist/sdk/merge/install.js +3 -561
  581. package/dist/sdk/merge/receipt-file-boundary.js +1 -46
  582. package/dist/sdk/merge/receipt-operation.js +1 -96
  583. package/dist/sdk/merge/receipt-schema.js +1 -397
  584. package/dist/sdk/merge/receipts.js +4 -525
  585. package/dist/sdk/merge/reconcile.js +1 -352
  586. package/dist/sdk/merge/three-way.js +3 -775
  587. package/dist/sdk/merge.js +1 -10
  588. package/dist/sdk/mutation-events.js +1 -292
  589. package/dist/sdk/mutation-guard.js +1 -216
  590. package/dist/sdk/notes.js +1 -139
  591. package/dist/sdk/output-contracts.js +1 -172
  592. package/dist/sdk/output-projection.js +1 -430
  593. package/dist/sdk/output-token-accounting.js +1 -140
  594. package/dist/sdk/output.js +1 -64
  595. package/dist/sdk/ownership-source.js +1 -21
  596. package/dist/sdk/package-import-adapters.js +1 -442
  597. package/dist/sdk/package-migrations.js +1 -20
  598. package/dist/sdk/package-runtime-options.js +1 -80
  599. package/dist/sdk/pagination.js +1 -162
  600. package/dist/sdk/profile.js +1 -454
  601. package/dist/sdk/provenance.js +1 -258
  602. package/dist/sdk/public-surface.json +1 -1
  603. package/dist/sdk/query/activity.js +1 -401
  604. package/dist/sdk/query/aggregate.d.ts +16 -0
  605. package/dist/sdk/query/aggregate.js +1 -390
  606. package/dist/sdk/query/calendar.js +1 -964
  607. package/dist/sdk/query/complete-list.js +1 -215
  608. package/dist/sdk/query/context.js +1 -1702
  609. package/dist/sdk/query/duplicate-candidates.js +1 -70
  610. package/dist/sdk/query/get.js +1 -450
  611. package/dist/sdk/query/history.js +1 -186
  612. package/dist/sdk/query/item-filter-options.js +1 -9
  613. package/dist/sdk/query/light-metadata.js +1 -18
  614. package/dist/sdk/query/list-filter-shared.js +1 -81
  615. package/dist/sdk/query/list.js +1 -1304
  616. package/dist/sdk/query/multi-value-filters.js +1 -78
  617. package/dist/sdk/query/next.js +1 -513
  618. package/dist/sdk/query/parsers.js +1 -44
  619. package/dist/sdk/query/projection-contracts.js +1 -184
  620. package/dist/sdk/query/search-contracts.d.ts +27 -0
  621. package/dist/sdk/query/search-contracts.js +1 -230
  622. package/dist/sdk/query/search-pagination.js +1 -35
  623. package/dist/sdk/query/search-rendering.js +1 -105
  624. package/dist/sdk/query/search.d.ts +6 -4
  625. package/dist/sdk/query/search.js +2 -1987
  626. package/dist/sdk/query.js +1 -35
  627. package/dist/sdk/read-output/continuation.js +1 -194
  628. package/dist/sdk/read-output-budget.js +1 -135
  629. package/dist/sdk/read-output-contracts.d.ts +1 -1
  630. package/dist/sdk/read-output-contracts.js +1 -1225
  631. package/dist/sdk/read-output-rows.js +1 -186
  632. package/dist/sdk/read-output-session.js +1 -208
  633. package/dist/sdk/relationship-analytics.js +1 -410
  634. package/dist/sdk/relationship-context.js +1 -284
  635. package/dist/sdk/relationship-history.js +4 -519
  636. package/dist/sdk/relationship-kinds/contract.js +1 -22
  637. package/dist/sdk/relationship-migration.js +1 -77
  638. package/dist/sdk/relationships.js +1 -579
  639. package/dist/sdk/reproducibility/process.js +1 -87
  640. package/dist/sdk/runtime-action-aliases.js +1 -59
  641. package/dist/sdk/runtime-extended-actions.js +1 -177
  642. package/dist/sdk/runtime-input.js +1 -614
  643. package/dist/sdk/runtime-primitives.js +1 -84
  644. package/dist/sdk/runtime-public-contracts.d.ts +2 -1
  645. package/dist/sdk/runtime-public-contracts.js +1 -4
  646. package/dist/sdk/runtime-stats-options.js +1 -38
  647. package/dist/sdk/runtime.d.ts +4 -0
  648. package/dist/sdk/runtime.js +1 -1928
  649. package/dist/sdk/scheduling-shortcuts.js +1 -63
  650. package/dist/sdk/schema-migration.js +3 -856
  651. package/dist/sdk/schema.d.ts +2 -1
  652. package/dist/sdk/schema.js +1 -1376
  653. package/dist/sdk/search-refresh-worker.js +1 -18
  654. package/dist/sdk/similarity-scoring.js +1 -53
  655. package/dist/sdk/similarity.js +1 -326
  656. package/dist/sdk/start-task-status.js +1 -14
  657. package/dist/sdk/stats.js +1 -270
  658. package/dist/sdk/structured-mutations.js +1 -580
  659. package/dist/sdk/telemetry-flush.js +1 -13
  660. package/dist/sdk/telemetry.js +1 -405
  661. package/dist/sdk/templates.js +2 -292
  662. package/dist/sdk/test/batch.js +2 -509
  663. package/dist/sdk/test/entry.js +1 -70
  664. package/dist/sdk/test/execution.js +6 -2211
  665. package/dist/sdk/test/linked-command-detection.js +1 -546
  666. package/dist/sdk/test/measurements.js +1 -91
  667. package/dist/sdk/test/parsers.js +1 -545
  668. package/dist/sdk/test/runs.js +1 -193
  669. package/dist/sdk/test/trust.js +2 -206
  670. package/dist/sdk/testing.js +4 -1391
  671. package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
  672. package/dist/sdk/traceability/source-traceability.js +1 -292
  673. package/dist/sdk/tracker-root-discovery.js +1 -9
  674. package/dist/sdk/workspace-contracts-cache.js +1 -28
  675. package/dist/sdk/workspace-contracts.js +1 -33
  676. package/dist/sdk/workspace-memory.js +2 -318
  677. package/dist/sdk/workspace-recipe.js +1 -71
  678. package/dist/sdk/workspace-snapshot.js +4 -613
  679. package/dist/sdk/workspace-transaction-gc.js +1 -149
  680. package/dist/sdk/workspace-transaction.js +2 -363
  681. package/dist/sdk/workspace.js +3 -127
  682. package/dist/types/index.js +1 -9
  683. package/dist/types.d.ts +4 -0
  684. package/dist/types.js +1 -245
  685. package/docs/AGENT_GUIDE.md +1 -1
  686. package/docs/COMMANDS.md +10 -0
  687. package/docs/CONFIGURATION.md +12 -1
  688. package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
  689. package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
  690. package/docs/EXTENSIONS.md +1 -0
  691. package/docs/HISTORY_MAINTENANCE.md +125 -0
  692. package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
  693. package/docs/PACKAGE_EVIDENCE.md +92 -0
  694. package/docs/PLANNING_MEASUREMENTS.md +183 -0
  695. package/docs/README.md +4 -0
  696. package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
  697. package/docs/SCRIPTING.md +21 -0
  698. package/docs/TESTING.md +33 -0
  699. package/docs/WORKFLOW_POLICIES.md +129 -0
  700. package/docs/generated/FLAG_LEXICON_BUDGETS.md +7 -7
  701. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -5
  702. package/marketplace.json +2 -2
  703. package/package.json +5 -5
  704. package/packages/pm-beads/package.json +1 -1
  705. package/packages/pm-calendar/package.json +1 -1
  706. package/packages/pm-command-kit/package.json +1 -1
  707. package/packages/pm-digital-twin/package.json +1 -1
  708. package/packages/pm-governance-audit/package.json +1 -1
  709. package/packages/pm-guide-shell/package.json +1 -1
  710. package/packages/pm-kanban/package.json +1 -1
  711. package/packages/pm-lifecycle-hooks/package.json +1 -1
  712. package/packages/pm-linked-test-adapters/package.json +1 -1
  713. package/packages/pm-search-advanced/package.json +1 -1
  714. package/packages/pm-templates/package.json +1 -1
  715. package/packages/pm-todos/package.json +1 -1
  716. package/packages/pm-vcs/package.json +1 -1
  717. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  718. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  719. package/scripts/finalize-build.mjs +45 -3
  720. package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
  721. package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
  722. package/dist/cli-bundle/chunks/chunk-JX4DH4WC.js +0 -3
  723. package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
  724. package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
  725. package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
  726. package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
  727. package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
  728. package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
  729. package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
  730. package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
  731. package/dist/cli-bundle/chunks/register-operations-I5W3KMGB.js +0 -2
  732. package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
  733. package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
  734. package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
  735. package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
  736. package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
  737. package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
  738. package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
  739. package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
  740. package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
  741. package/dist/cli-bundle/focused-chunks/chunk-PEFABF7E.js +0 -26
  742. package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
  743. package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
  744. package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
  745. package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
  746. package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
@@ -0,0 +1,183 @@
1
+ # Planning measurements
2
+
3
+ Tracked by [pm-6olc95](../.agents/pm/issues/pm-6olc95.toon),
4
+ [pm-398z0u](../.agents/pm/issues/pm-398z0u.toon), and
5
+ [pm-d2wfig](../.agents/pm/features/pm-d2wfig.toon). Distribution work is tracked
6
+ by [pm-fx0rcb](../.agents/pm/tasks/pm-fx0rcb.toon).
7
+
8
+ These SDK primitives make three planning questions reproducible: which recorded
9
+ populations have relationship context, how many items belong to each category,
10
+ and whether estimated prerequisite work fits an authored deadline. The CLI and
11
+ MCP use the same SDK implementations.
12
+
13
+ ## Relationship coverage across lifecycle states
14
+
15
+ ```bash
16
+ pm graph audit --summary
17
+ pm graph audit --save-baseline --summary
18
+ ```
19
+
20
+ `--summary` retains recorded population totals, acyclicity, and lifecycle
21
+ connectivity counts. Use `--full` for degree histograms, status/type distributions,
22
+ edge-kind shares, and reachability detail. Baselines always persist the full census.
23
+ The summary omission receipt declares `--full` as the recovery path.
24
+
25
+ `profile.coverage_by_lifecycle` reports `all`, `active`, and `terminal` populations.
26
+ `profile.coverage_by_status` reports the actual schema statuses, including
27
+ `closed`, `canceled`, and custom terminal states. Every population reports:
28
+
29
+ - `nodes`: recorded items, excluding missing and external placeholders.
30
+ - `isolated` and `degree_leq_one`: items with zero or at most one incident edge.
31
+ - `semantic_nodes` and `without_semantic_edges`: presence or absence of incident
32
+ provenance or verification edges, using the audit's semantic-kind definition.
33
+ - `degree_histogram`: exact incident directed-edge counts and their populations.
34
+
35
+ The existing active-only counters and type profiles retain their meanings.
36
+ Population measurements include policy-exempt isolates; exemptions affect
37
+ findings, not census denominators. Incident edges use the assembled graph's
38
+ normalized, deduplicated directed basis. Reciprocal spellings can still be
39
+ reported separately by duplicate-edge findings.
40
+
41
+ `ordering_acyclic` states whether the complete ordering graph is acyclic.
42
+ `active_ordering_acyclic` states whether any detected ordering cycle touches
43
+ active or unknown-lifecycle work. A historical cycle remains a structural cycle
44
+ even when the historical-debt policy gives its finding informational severity.
45
+ Missing-reference findings retain their separate active and terminal populations.
46
+
47
+ After a saved baseline, signed lifecycle and status deltas measure backfill
48
+ progress. An older baseline that never measured these populations reports
49
+ `lifecycle_comparable: false`; it does not imply that the historical population
50
+ was empty. Save a new baseline to begin comparable measurements. Malformed new
51
+ census fields invalidate a persisted baseline rather than producing misleading
52
+ comparisons. Rebuildable query-cache entries from the older format are discarded.
53
+
54
+ ## Group membership and bounded aggregation
55
+
56
+ ```bash
57
+ pm aggregate --group-by tags --limit 20
58
+ pm aggregate --group-by tags,type --sum estimated_minutes --completion
59
+ pm aggregate --group-by tags --set-mode tuple
60
+ ```
61
+
62
+ Set-valued dimensions group by distinct normalized members by default. An item
63
+ with `alpha` and `beta` contributes once to each group, even if a member appears
64
+ more than once or differs only in case or surrounding whitespace. The same
65
+ expansion rule applies to every array-valued grouping dimension; scalar dimensions
66
+ compose with those memberships. Empty sets retain a `null` group displayed as
67
+ `(untagged)` for tags.
68
+
69
+ `--set-mode tuple` selects the previous behavior: the complete normalized set is
70
+ one comma-joined key. This is useful when comparing exact category combinations.
71
+ It is a distinct operation, and `filters.set_mode` records the interpretation.
72
+
73
+ Counts, completion rates, sums, and averages are computed independently in each
74
+ membership group. Consequently, summing group counts or numeric sums can count
75
+ one item more than once. `totals.items_grouped` counts distinct input items;
76
+ `totals.group_memberships` counts all group contributions.
77
+
78
+ Aggregation reads the complete matching item population before paging groups.
79
+ An unreadable input fails the strict read rather than becoming a partial count.
80
+ The default page contains at most 50 groups. `count` is the total group count,
81
+ `returned_count` is the page size, and `truncated` indicates further groups.
82
+ Pass the returned `next_after` value as `--after` to continue. Keep the grouping
83
+ and filters unchanged between pages. A cursor absent from the current result is
84
+ rejected with restart guidance; pages are not an immutable snapshot of a tracker
85
+ that is being concurrently edited.
86
+
87
+ ## Derived deadline constraints
88
+
89
+ ```bash
90
+ pm graph slack --limit 10
91
+ pm graph slack --summary
92
+ ```
93
+
94
+ The existing unit-weighted `rows`, `makespan`, and hop-based `slack` remain intact.
95
+ The additional `deadline_schedule` uses `estimated_minutes` and authored
96
+ `deadline` finish constraints. Its `basis` is `derived_elapsed_minutes`, and
97
+ `as_of` records the clock used. This computation writes no item fields.
98
+
99
+ A forward pass computes earliest estimated starts from the invocation clock. A
100
+ backward pass transfers each dated finish constraint through the ordering graph,
101
+ retaining the tightest successor constraint. A derived row identifies the
102
+ controlling `deadline_id`, its `latest_start`, and `slack_minutes` relative to the
103
+ earliest possible start. Negative slack indicates a time shortfall; this can
104
+ coexist with positive hop-based slack.
105
+
106
+ `overcommitted` findings name the authored deadline, the shortfall in minutes,
107
+ and a bounded controlling prerequisite path. `path_truncated` identifies a path
108
+ whose leading steps were omitted; the retained suffix still ends at the dated
109
+ item. Moving the authored deadline later recomputes the finding.
110
+
111
+ Missing, negative, or nonfinite estimates are explicit `unknown_estimate`
112
+ residuals. Unknown predecessor duration produces `unknown_predecessor_estimate`
113
+ and `null` temporal slack, never zero-cost feasibility. Cycles and work gated by
114
+ cycles report `cycle_or_gated_by_cycle`. Invalid dates and dates outside the
115
+ representable range are also residuals. `complete: false` means feasibility
116
+ cannot be established for the entire input graph; counts remain separate from
117
+ bounded samples.
118
+
119
+ Estimates represent elapsed duration with independent work allowed in parallel.
120
+ There is no staffing, resource-contention, working-hours, holiday, or progress
121
+ model. The workspace adapter schedules active work and reports `population: active`;
122
+ completed work no longer consumes future duration or contributes overdue deadlines.
123
+ The pure SDK function schedules the supplied graph, so callers can select other
124
+ populations explicitly. ISO
125
+ date-only deadlines denote UTC midnight. Undated components have no latest-start
126
+ constraint. Topology cache hits do not reuse time-sensitive deadline results;
127
+ they are derived from the current metadata on every invocation.
128
+
129
+ The pure derivation defaults to a work bound of 100,000 input items plus graph
130
+ nodes and edges, checked before graph passes. Larger inputs return
131
+ `work_limit_exceeded: true` and `complete: false` with no manufactured schedule.
132
+ Rows, residual samples, findings, and path identifiers obey the supplied `limit`.
133
+ All retained paths also share a total identifier budget of `maxWork`, so large
134
+ finding limits cannot create quadratic path evidence. Exhaustion preserves exact
135
+ counts and sets both `path_truncated` and the result's `truncated` flag.
136
+ The workspace CLI still pays its existing metadata-read and graph-assembly cost;
137
+ the derivation bound is not a claim that loading a million-item workspace is free.
138
+ Summary mode suppresses the evidence arrays and retains their counts.
139
+
140
+ ## Public SDK
141
+
142
+ ```ts
143
+ import {
144
+ assembleWorkspaceRelationshipGraph,
145
+ auditWorkspaceRelationshipGraph,
146
+ deriveRelationshipDeadlines,
147
+ } from "@unbrained/pm-cli/sdk/graph";
148
+ import { runAggregate } from "@unbrained/pm-cli/sdk/query";
149
+
150
+ const items = [
151
+ { id: "work", title: "Prepare", status: "open", estimated_minutes: 60 },
152
+ {
153
+ id: "milestone", title: "Deliver", status: "open", blocked_by: "work",
154
+ estimated_minutes: 30, deadline: "2026-10-01T12:00:00Z",
155
+ },
156
+ ];
157
+ const assembly = assembleWorkspaceRelationshipGraph(items);
158
+ const coverage = auditWorkspaceRelationshipGraph(assembly).profile;
159
+ const schedule = deriveRelationshipDeadlines(assembly.graph, items, {
160
+ now: "2026-10-01T10:00:00Z",
161
+ maxWork: 100_000,
162
+ limit: 20,
163
+ });
164
+ const categories = await runAggregate(
165
+ { groupBy: "tags", setMode: "element", limit: 20 },
166
+ { path: "/path/to/project/.agents/pm" },
167
+ );
168
+ ```
169
+
170
+ The derivation accepts an `AbortSignal`. Relationship orientation comes from the
171
+ supplied graph registry, so custom ordering kinds and inverse spellings use the
172
+ same execution semantics. MCP `pm_run` with `action: "aggregate"` accepts
173
+ `options.setMode`, `options.limit`, and `options.after`. MCP `pm_graph` with
174
+ `subcommand: "slack"` returns the same deadline evidence.
175
+
176
+ ## Distribution
177
+
178
+ Build finalization compacts whitespace in retained runtime JavaScript modules.
179
+ It preserves module paths and identifiers, keeps public declaration documentation,
180
+ and composes source maps back to the original TypeScript for release symbolication.
181
+ Existing bundled outputs remain unchanged by this pass. Source maps remain local
182
+ release artifacts and are excluded from the npm packlist. Artifact size and file
183
+ count ceilings are checked against the actual npm pack projection.
package/docs/README.md CHANGED
@@ -52,6 +52,7 @@ pm guide release --json
52
52
  - [MCP Remote Transport, Authorization, and Migration](MCP_REMOTE_TRANSPORT_SECURITY.md) - Streamable HTTP operation, subscriptions, OAuth and trace boundaries, threat model, and deprecated-feature ratchet.
53
53
  - [SDK Artifact Output Contracts](SDK_ARTIFACT_OUTPUT.md) - clean stdout/file exporter channels, bounded receipts, binary-safe delivery, and shared NDJSON terminal framing.
54
54
  - [Context Relevance and Packing](CONTEXT_RELEVANCE.md) - shared CLI/SDK signals, derived-store provenance, ranking explanations, and token budgets.
55
+ - [Context Algorithm Portfolio](CONTEXT_ALGORITHM_PORTFOLIO.md) - stable proposal slugs, historical aliases, individual owners, cognitive compositions, and experiment gates.
55
56
  - [Output Projection and Omission Contracts](OUTPUT_PROJECTION_CONTRACTS.md) - explicit withheld-field receipts, mode-paired row keys, and completion resolver outcomes.
56
57
  - [Output Token Accounting](OUTPUT_TOKEN_ACCOUNTING.md) - opt-in CLI/MCP byte attribution, bounded receipt overhead, and release-level tokens-per-task baselines.
57
58
  - [SDK Context Platform](SDK_CONTEXT.md) - task-oriented entry point for authoritative reads, ranking, package workflows, diagnostics, recovery, and verification.
@@ -60,12 +61,15 @@ pm guide release --json
60
61
  - [Generated Refusal Closure Census](generated/REFUSAL_CLOSURE_CENSUS.md) - complete error-catalog join to executable refusal evidence and explicit uncovered obligations.
61
62
  - [Universal Read Output Contracts](READ_OUTPUT_CONTRACTS.md) - cross-command include, amount, cost, and encoding controls for CLI, SDK, MCP, and packages.
62
63
  - [Diagnostic Output Contracts](DIAGNOSTIC_OUTPUT_CONTRACTS.md) - action-first error budgets, deterministic degradation, SDK projection, and executable refusal assurance.
64
+ - [History Maintenance and Recovery](HISTORY_MAINTENANCE.md) - native history commands, permanent aliases, shared SDK transforms, and transactional recovery.
65
+ - [Declarative Workflow Policies](WORKFLOW_POLICIES.md) - portable lifecycle requirements, independent approvals, and completeness reports.
63
66
  - [Mutation Integrity](MUTATION_INTEGRITY.md) - shared CLI/SDK/MCP author, secret, append-only disposition, and stale-work guardrails.
64
67
  - [Agent Provenance ADR Amendment](AGENT_PROVENANCE_ADR.md) - extensible model, effort, role, and host provenance with privacy and compatibility boundaries.
65
68
  - [SDK Agent Session and Episode Context](SDK_AGENT_SESSION_CONTEXT.md) - inherited role/topic context, cross-process episode identity, and deterministic history grouping.
66
69
  - [SDK Agent Environments](AGENT_ENVIRONMENTS.md) - calibrated observations, total verdicts, isolated episodes, and an executable public-SDK environment.
67
70
  - [Improvement Ledger and History Analytics](IMPROVEMENT_ANALYTICS.md) - audited quantitative observations, live provenance coverage, and bounded observational fleet outcomes.
68
71
  - [Project Assurance Primitives](ASSURANCE.md) - SDK-owned measurements, assertions, lifecycle gates, cost receipts, and durable verdict history shared by CLI and MCP.
72
+ - [Planning Measurements](PLANNING_MEASUREMENTS.md) - lifecycle coverage, set-membership aggregation, and derived deadline constraints.
69
73
  - [Defect Recurrence and Boundary Evidence](DEFECT_RECURRENCE.md) - captured external samples, structured defect-escape evidence, incremental change-risk indexing, and executable recovery-producer census.
70
74
  - [Recurrence and Executable Recovery Contracts](RECURRENCE_RECOVERY_CONTRACTS.md) - terminal-item recurrence, duplicate-intake routing, capability-aware reindex recovery, and target-aware generated test guidance.
71
75
  - [Trustworthy Context and Evidence Contracts](TRUSTWORTHY_CONTEXT_EVIDENCE.md) - full-record assurance, graph composition, boolean health rows, lossless linked-test removal, and role-labelled recovery.
@@ -167,6 +167,11 @@ Cursor recovery carries the opaque value once in `recovery.cursor` and declares
167
167
  the accepting `cli`, `sdk`, and `mcp` binding beside it. This avoids
168
168
  serializing the same cursor once per transport while retaining an executable,
169
169
  machine-readable binding for each surface.
170
+ When `restore_with` is `"recovery"`, consumers must resolve the adjacent
171
+ `recovery` object: pass its `cursor` value through `cli` (`--output-cursor`)
172
+ or the `sdk`/`mcp` field (`outputCursor`) while repeating the original query.
173
+ The string is a reference, not a shell command. Other `restore_with` values
174
+ provide retry guidance when no declared row collection can continue.
170
175
 
171
176
  Budget-compacted declared row paths are independently resumable. The
172
177
  disclosure's `continuations` entries name the row path, retained/remaining/total
package/docs/SCRIPTING.md CHANGED
@@ -78,6 +78,27 @@ declaring every command's default token ceiling. Use `pm contracts --full
78
78
  with TOON- and JSON-specific token ceilings for every active core or package
79
79
  command.
80
80
 
81
+ Claim receipts ([pm-eqdo85](../.agents/pm/issues/pm-eqdo85.toon)) also keep
82
+ `claimed_by`, `previous_assignee`, and `forced`. Conditional contention adds
83
+ `skipped`; ranked claims add `available` and `attempts`. The change count
84
+ reflects ownership fields actually changed: an unchanged repeat or skipped
85
+ claim reports zero and does not write a duplicate mutation event.
86
+
87
+ ```bash
88
+ pm claim pm-a1b2 --json
89
+ pm claim pm-a1b2 --if-available --json
90
+ pm claim --next --json
91
+ pm claim pm-a1b2 --full-changed-fields --json
92
+ ```
93
+
94
+ Use `--full-changed-fields` to restore the complete item, `changed_fields`,
95
+ and ranked-selection recommendation. `--id-only` returns only identity and
96
+ status; `--quiet` suppresses stdout. Direct typed SDK `claim` and
97
+ `claimNext` calls return the full result. Generic SDK/MCP actions use the
98
+ compact transport contract and accept `fullChangedFields` or `idOnly`.
99
+ Custom SDK claim runners may omit the optional `changed_fields` member;
100
+ receipts without that evidence retain their existing envelope.
101
+
81
102
  JSON object field order is not an API. Consume fields by name. Read envelopes keep the stable pagination vocabulary `items`, `count`, `total`, `has_more`, and, when another page exists, `next_cursor`. The `filters` object echoes the effective query scope. Plain `pm list` and `pm search` are all-status reads and disclose `filters.status: "all"`; lifecycle-specific commands such as `pm list-open` remain explicit shortcuts.
82
103
 
83
104
  Projection flags intentionally change row shape. Use `--fields` when a script requires an exact subset, `--brief` or `--compact` only when the documented sparse shape is sufficient, and `--full` when linked metadata is required. Check `row_contract` on generic read surfaces that expose one; do not infer omitted fields as empty values.
package/docs/TESTING.md CHANGED
@@ -50,6 +50,15 @@ children, then cleans the roots up. Instrumentation tests can still exercise
50
50
  Sentry initialization through their mocked module boundary; ordinary negative
51
51
  fixtures must never create production incidents from a developer host.
52
52
 
53
+ Temporary directories must live outside the checkout and outside any ancestor
54
+ workspace with initialized tracker data. The runner rejects a checkout-local
55
+ temporary root, including a symlink alias, before starting build or test
56
+ processes ([pm-bukwmy](../.agents/pm/issues/pm-bukwmy.toon)). If the default
57
+ temporary filesystem is full, set `TMPDIR` (or `TEMP`/`TMP` on Windows) to an
58
+ existing isolated scratch directory; an ignored directory inside the repository
59
+ is not isolated. Filesystem fixtures must honor `node:os`'s `tmpdir()` and remove
60
+ only the temporary directories they created.
61
+
53
62
  Public SDK changes additionally run semantic surface and import-cost contracts:
54
63
 
55
64
  ```bash
@@ -79,6 +88,16 @@ so PR-local CodeFactor maintainability annotations fail locally before commit or
79
88
  push. Existing legacy high-complexity test fixtures are tracked separately and
80
89
  must not be used as precedent for new changed production/script code.
81
90
 
91
+ `lint:duplicates` runs three zero-clone profiles: the broad repository profile,
92
+ the production cross-format profile, and a supplemental long-table profile at
93
+ 28 lines / 80 tokens. The last profile detects the historical GH-508 normalizer
94
+ tables below the other profiles' token floors; it does not replace their shorter
95
+ line thresholds. Its real detector regression rejects the historical table rows
96
+ and accepts a shared declaration. The earlier 12-line / 60-token exploratory
97
+ census informed calibration, but is not the enforced profile. These bounded
98
+ profiles do not claim complete equivalence with hosted analyzers.
99
+ See [pm-xspd](../.agents/pm/chores/pm-xspd.toon) for calibration evidence.
100
+
82
101
  The local parity rules catch analyzer classes before push. The mandatory hosted
83
102
  proof runs after the final commit is pushed and both apps have finished:
84
103
 
@@ -108,6 +127,20 @@ Use focused runs while iterating, then run coverage before closure when risk or
108
127
 
109
128
  ## CI Retry and Timeout Diagnostics
110
129
 
130
+ Platform regressions from [pm-hrhfgi](../.agents/pm/issues/pm-hrhfgi.toon) and
131
+ [pm-zk67yf](../.agents/pm/issues/pm-zk67yf.toon) have portable negative controls.
132
+ Complete source scans process at most 32 item files per batch; the descriptor
133
+ pressure fixture fails unbounded reads while requiring genuine permission
134
+ failures to remain visible. The 10,000-item aggregation fixture separately
135
+ verifies completeness before pagination. Git fixtures that assert exact bytes
136
+ declare repository-local `core.autocrlf=false` and `core.eol=lf` so host defaults
137
+ cannot change the restoration target. Send generated shell scripts through
138
+ stdin (`bash -s`) so their size cannot exceed Windows command-line limits.
139
+ Runtime compaction is tested through a
140
+ real directory alias as well as its physical path, including original source
141
+ mapping and repeated-compaction byte stability. These tests run in the full
142
+ suite on the Nightly Validation platform matrix.
143
+
111
144
  CI retains the 30-second per-test timeout and retries one failed attempt. A
112
145
  test that passes only on retry is reported as flaky rather than silently folded
113
146
  into the pass count; a persistent assertion still fails after the bounded
@@ -0,0 +1,129 @@
1
+ # Declarative workflow policies
2
+
3
+ Tracker: [pm-mj42og](../.agents/pm/features/pm-mj42og.toon) and [pm-htbetn](../.agents/pm/features/pm-htbetn.toon).
4
+
5
+ Projects can describe their lifecycle requirements as versioned data. The SDK
6
+ uses the same evaluator for item mutations, policy previews, and completeness
7
+ reports. Existing projects have no implicit policies. A declaration can advise,
8
+ warn, or refuse; refusal also requires an explicit workspace opt-in.
9
+
10
+ ## Configure a requirement
11
+
12
+ ```bash
13
+ pm schema policy-put close-evidence --definition '{"id":"close-evidence","effect":"refuse","subject":{"statuses":["closed"]},"rule":{"kind":"require_fields","fields":["resolution","actual_result"]}}'
14
+ pm schema policies
15
+ pm schema policy-check pm-example --definition '{"status":"closed"}'
16
+ pm schema policy-mode refuse
17
+ ```
18
+
19
+ Use canonical status ids and metadata field names. `body` selects the Markdown
20
+ body. Custom fields can use dotted paths with at most eight segments. Empty
21
+ strings, arrays, objects, null, and absent values do not satisfy required fields;
22
+ zero and false are meaningful values.
23
+
24
+ `policy-put` replaces a declaration with the same id. `policy-remove <id>` removes
25
+ one declaration. `policy-mode advise` disables refusal while retaining diagnostics.
26
+ Registry writes are locked and recorded in workspace history. `--dry-run` previews
27
+ registry changes without writing. Malformed registries fail closed.
28
+
29
+ ## Selectors and rules
30
+
31
+ All selectors in `subject` must match; values within one selector are alternatives.
32
+ Supported selectors are `types` (case insensitive), `tags`, `statuses`, `operations`,
33
+ `parents`, and `dependency: { "kind": "implements", "id": "pm-example" }` (id optional).
34
+ Parent and dependency selectors inspect direct relationships. Status selectors
35
+ match the destination; other selectors inspect both snapshots so a mutation cannot
36
+ escape a protected scope by removing its tag or changing its type.
37
+
38
+ | Rule kind | Required properties | Behavior |
39
+ | --- | --- | --- |
40
+ | `require_fields` | `fields` | Checks evidence on lifecycle, scope, or required-field changes |
41
+ | `transition` | `allowed` | Allows listed `[from, to]` status pairs; `$create` and `$delete` represent absent records |
42
+ | `authors` | `authors` | Requires a listed mutation actor |
43
+ | `field_writers` | `fields`, `authors` | Requires a listed actor when protected fields change |
44
+ | `approval` | `fields`, `authors` | Requires independent approval when an existing item changes status or is deleted |
45
+
46
+ Operation selectors use exact history operation names. Unknown declaration keys
47
+ are errors. Policies contain no executable expressions or regular expressions.
48
+ At most 256 declarations and 64 terms per selector/rule are accepted. Registry
49
+ reads are bounded to 1 MiB, and approval-history reads to 4 MiB.
50
+
51
+ Actor names are provenance supplied by the caller or local configuration. They
52
+ are not authenticated identities, and these rules are not an access-control
53
+ boundary against a caller who can edit the tracker or choose an author name.
54
+ Authenticated, signed identity ([pm-u14c](../.agents/pm/stories/pm-u14c.toon))
55
+ is a prerequisite for stronger authorization guarantees.
56
+
57
+ ## Approvals
58
+
59
+ Prepare the declared fields, then have a different workflow actor record approval:
60
+
61
+ ```bash
62
+ pm schema policy-put review --definition '{"id":"review","effect":"refuse","subject":{"statuses":["closed"]},"rule":{"kind":"approval","fields":["body","resolution"],"authors":["reviewer"]}}'
63
+ pm schema policy-approve pm-example --policy review --author reviewer --message 'Reviewed acceptance evidence'
64
+ ```
65
+
66
+ Approval events bind the item id, selected field values, and complete policy
67
+ revision. Changing reviewed content or the declaration invalidates the approval.
68
+ Unrelated metadata changes do not. The actor performing the transition must differ
69
+ from the approval actor. Only sealed approval events from a verified item history
70
+ chain count. `policy-check` previews transitions; `policy-approve` always records
71
+ an event and rejects `--dry-run`.
72
+
73
+ Approval rules apply to existing items. Creation and initial imports have no
74
+ reviewable history and skip approval requirements; use `transition` rules with
75
+ `["$create", "open"]` to constrain their initial status. Deletion requires approval
76
+ of the current record, using the same content and independent-actor checks.
77
+
78
+ Refused mutations preserve item state and item history, and append a workspace
79
+ refusal event. Accepted mutations attach bounded policy decisions to their normal
80
+ history event. Diagnostics contain policy ids and missing field paths, without
81
+ copying reviewed content into errors.
82
+ If the mandatory refusal audit cannot be appended, the mutation instead raises
83
+ `workflow_policy_audit_failed` and preserves the original failure in the SDK
84
+ error's `cause`. Item data remains unchanged; resolve the workspace history lock
85
+ or storage failure before retrying. Package imports do not downgrade this error
86
+ to an item-lock warning.
87
+
88
+ ## Completeness reports and SDK
89
+
90
+ ```bash
91
+ pm schema policy-presets
92
+ pm validate --check-completeness --strict-exit
93
+ ```
94
+
95
+ Presets return optional advisory declarations for familiar item types. They do
96
+ not install policies. Author the declarations appropriate to the project's own
97
+ types and lifecycle using `policy-put`. Completeness reports group counts by type,
98
+ return bounded violation examples, and use only `require_fields` declarations
99
+ without `subject.operations`. The report identifies this scope as
100
+ `operation_independent_require_fields`. All item selectors, including status,
101
+ still apply. `policy-check` without a proposed definition uses the same state-only
102
+ scope. Operation-scoped rules remain enforced during matching mutations; a clean
103
+ state report does not imply permission to perform every future operation.
104
+ To check a lifecycle field invariant in both state reports and mutations, select
105
+ its `statuses` without restricting `operations`.
106
+ Default validation includes this check; projects without declarations remain
107
+ unaffected.
108
+ An unreadable or malformed `schema/policies.json` produces an error-level
109
+ `completeness` result with a repair hint. Other requested validation checks still
110
+ run, and `--strict-exit` fails until the policy registry is repaired.
111
+
112
+ The published `@unbrained/pm-cli/sdk/governance` entrypoint exports
113
+ `runWorkflowPolicyAction`, `evaluateWorkflowPolicies`, policy types, parsers,
114
+ `WORKFLOW_POLICY_SCHEMA`, and `WORKFLOW_POLICY_DOCUMENT_SCHEMA`. `PmClient` exposes
115
+ `workflowPolicy(action, name, options)`. CLI `schema` and MCP `pm_schema` use the
116
+ same action vocabulary and SDK implementation; MCP options accept camelCase
117
+ keys and structured JSON definitions.
118
+
119
+ For repeated pure evaluation, `createWorkflowPolicyEvaluator(document)` returns
120
+ an evaluator that owns a private normalized policy snapshot and hashes each
121
+ declaration once. Later edits to the supplied document do not change that
122
+ snapshot; create another evaluator to adopt them. Completeness validation uses
123
+ one such snapshot for the whole supplied corpus.
124
+
125
+ The schema contract version is 4.16. Existing schema operations remain available;
126
+ `SchemaResult` now also includes `WorkflowPolicyActionResult`. Consumers that
127
+ exhaustively narrow schema results should handle the `policy_result: true`
128
+ discriminant. Validation options include `checkCompleteness`, and validation
129
+ results can contain a `completeness` check.
@@ -6,10 +6,10 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
6
6
  | --- | --- | ---: | ---: |
7
7
  | `init` | workspace | 30 | 30 |
8
8
  | `config` | workspace | 36 | 36 |
9
- | `extension` | extensions | 53 | 53 |
10
- | `package` | extensions | 54 | 54 |
11
- | `packages` | extensions | 54 | 54 |
12
- | `install` | extensions | 26 | 26 |
9
+ | `extension` | extensions | 54 | 54 |
10
+ | `package` | extensions | 55 | 55 |
11
+ | `packages` | extensions | 55 | 55 |
12
+ | `install` | extensions | 27 | 27 |
13
13
  | `upgrade` | extensions | 29 | 29 |
14
14
  | `create` | intake | 100 | 100 |
15
15
  | `copy` | intake | 24 | 24 |
@@ -22,7 +22,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
22
22
  | `list-blocked` | context | 84 | 84 |
23
23
  | `list-closed` | context | 84 | 84 |
24
24
  | `list-canceled` | context | 84 | 84 |
25
- | `aggregate` | context | 37 | 37 |
25
+ | `aggregate` | context | 40 | 40 |
26
26
  | `context` | context | 45 | 45 |
27
27
  | `ctx` | context | 45 | 45 |
28
28
  | `get` | context | 30 | 30 |
@@ -38,7 +38,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
38
38
  | `history-compact` | evidence | 30 | 30 |
39
39
  | `history-author-acknowledge` | evidence | 28 | 28 |
40
40
  | `merge` | workspace | 27 | 27 |
41
- | `schema` | workspace | 40 | 40 |
41
+ | `schema` | workspace | 43 | 43 |
42
42
  | `profile` | workspace | 22 | 22 |
43
43
  | `activity` | context | 35 | 35 |
44
44
  | `restore` | intake | 23 | 23 |
@@ -60,7 +60,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
60
60
  | `telemetry` | workspace | 21 | 21 |
61
61
  | `stats` | context | 29 | 29 |
62
62
  | `health` | workspace | 36 | 36 |
63
- | `validate` | quality | 45 | 45 |
63
+ | `validate` | quality | 46 | 46 |
64
64
  | `assurance` | quality | 30 | 30 |
65
65
  | `gc` | workspace | 22 | 22 |
66
66
  | `workspace` | workspace | 23 | 23 |
@@ -4,14 +4,14 @@ Tracker: `pm-f05lsg`.
4
4
 
5
5
  Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
6
6
 
7
- - Catalog error codes: 365
7
+ - Catalog error codes: 371
8
8
  - Executable error codes: 19
9
9
  - Executable-code ratchet floor: 18
10
10
  - Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
11
- - Uncovered error codes: 346
12
- - Coverage fraction: 0.052055
11
+ - Uncovered error codes: 352
12
+ - Coverage fraction: 0.051213
13
13
  - Closed-domain probes: 19
14
- - Grammar probes: 94
14
+ - Grammar probes: 97
15
15
 
16
16
  | Error code | Canonical code | Disposition | Evidence kinds | Probe count |
17
17
  | --- | --- | --- | --- | --- |
@@ -211,7 +211,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
211
211
  | `missing_parameter_alias` | `missing_parameter_alias` | uncovered | none | 0 |
212
212
  | `missing_positive_execution_receipt` | `missing_positive_execution_receipt` | uncovered | none | 0 |
213
213
  | `missing_probe` | `missing_probe` | uncovered | none | 0 |
214
- | `missing_required_argument` | `missing_required_argument` | executable | grammar | 57 |
214
+ | `missing_required_argument` | `missing_required_argument` | executable | grammar | 60 |
215
215
  | `missing_required_option` | `missing_required_option` | uncovered | none | 0 |
216
216
  | `missing_suggested_retry` | `missing_suggested_retry` | uncovered | none | 0 |
217
217
  | `missing_suggested_retry_args` | `missing_suggested_retry_args` | uncovered | none | 0 |
@@ -365,6 +365,12 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
365
365
  | `vectorization_stale_items_remaining` | `vectorization_stale_items_remaining` | uncovered | none | 0 |
366
366
  | `visible_surface_ceiling_exceeded` | `visible_surface_ceiling_exceeded` | uncovered | none | 0 |
367
367
  | `workflow_duplicate_type` | `workflow_duplicate_type` | uncovered | none | 0 |
368
+ | `workflow_policy_approval_history_invalid` | `workflow_policy_approval_history_invalid` | uncovered | none | 0 |
369
+ | `workflow_policy_audit_failed` | `workflow_policy_audit_failed` | uncovered | none | 0 |
370
+ | `workflow_policy_input_unreadable` | `workflow_policy_input_unreadable` | uncovered | none | 0 |
371
+ | `workflow_policy_invalid` | `workflow_policy_invalid` | uncovered | none | 0 |
372
+ | `workflow_policy_refused` | `workflow_policy_refused` | uncovered | none | 0 |
373
+ | `workflow_policy_registry_invalid` | `workflow_policy_registry_invalid` | uncovered | none | 0 |
368
374
  | `workflow_status_unknown` | `workflow_status_unknown` | uncovered | none | 0 |
369
375
  | `workflow_transition_malformed` | `workflow_transition_malformed` | uncovered | none | 0 |
370
376
  | `workflow_type_empty` | `workflow_type_empty` | uncovered | none | 0 |
package/marketplace.json CHANGED
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
9
- "version": "2026.9.7"
9
+ "version": "2026.9.9"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "pm-claude",
14
14
  "source": "./plugins/pm-claude",
15
15
  "description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
16
- "version": "2026.9.7",
16
+ "version": "2026.9.9",
17
17
  "author": {
18
18
  "name": "unbrained",
19
19
  "url": "https://github.com/unbraind/pm-cli"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -119,7 +119,7 @@
119
119
  "lint:eslint": "eslint . --max-warnings=0",
120
120
  "lint:eslint:prune": "eslint . --prune-suppressions",
121
121
  "lint:complexity:baseline": "eslint . --suppress-rule complexity --suppress-rule sonarjs/cognitive-complexity",
122
- "lint:duplicates": "jscpd --config .jscpd.json && jscpd --config .jscpd.source.json",
122
+ "lint:duplicates": "jscpd --config .jscpd.json && jscpd --config .jscpd.source.json && jscpd --config .jscpd.tables.json",
123
123
  "lint:codefactor": "pnpm quality:static",
124
124
  "quality:static": "pnpm lint:eslint && pnpm lint:duplicates && pnpm build && node scripts/contracts-snapshot.mjs --check && node scripts/generate-agent-capability-surfaces.mjs --check && node scripts/generate-error-code-catalog.mjs --check && node scripts/release/repository-assurance.mjs repository-static-quality --trigger ci --json && node scripts/release/audit-package-boundary.mjs && node scripts/release/package-sdk-contract-parity.mjs && node scripts/release/surface-replication-gate.mjs && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs && node scripts/release/refusal-closure-gate.mjs && node scripts/release/agent-task-token-gate.mjs && pnpm quality:mcp-deprecations && node dist/cli.js assurance run tracker-context-quality --trigger ci --dry-run --json --output-budget unbounded && node scripts/release/gate-registry.mjs && node scripts/sdk-surface-snapshot.mjs --check && node scripts/bench/sdk-entrypoint-costs.mjs --check && node scripts/bench/cli-transport-floor.mjs --check && node dist/cli.js assurance run graph-composition --trigger ci --dry-run --json --output-budget unbounded && node dist/cli.js assurance run record-integrity --trigger ci --dry-run --json --output-budget unbounded",
125
125
  "quality:command-grammar": "pnpm build && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs",
@@ -220,7 +220,7 @@
220
220
  "@eslint/js": "^10.0.1",
221
221
  "@modelcontextprotocol/ext-apps": "1.7.5",
222
222
  "@sentry/cli": "^3.7.0",
223
- "@types/node": "^26.4.1",
223
+ "@types/node": "^26.5.0",
224
224
  "@types/npm-package-arg": "^6.1.4",
225
225
  "@vitest/coverage-v8": "^4.1.11",
226
226
  "esbuild": "0.28.2",
@@ -231,11 +231,11 @@
231
231
  "github-slugger": "2.0.0",
232
232
  "greptile": "^3.5.2",
233
233
  "jscpd": "^5.1.2",
234
- "marked": "18.0.11",
234
+ "marked": "18.0.12",
235
235
  "parse5": "8.0.1",
236
236
  "tsx": "^4.23.13",
237
237
  "typescript": "^6.0.3",
238
- "typescript-eslint": "^8.69.0",
238
+ "typescript-eslint": "^8.70.0",
239
239
  "vitest": "^4.1.11"
240
240
  }
241
241
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for importing Beads JSONL records.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-calendar",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for calendar and agenda views.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-command-kit",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-digital-twin",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-governance-audit",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for governance audit and normalization workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-guide-shell",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for guide and shell completion workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-kanban",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm archetype package: a complete Kanban continuous-flow profile built on public SDK primitives.",