@unbrained/pm-cli 2026.9.6 → 2026.9.8

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 (719) 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 +5 -0
  6. package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
  7. package/.claude-plugin/marketplace.json +2 -2
  8. package/CHANGELOG.md +218 -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.js +19 -1893
  92. package/dist/cli/register-operations.js +1 -920
  93. package/dist/cli/register-setup.js +1 -716
  94. package/dist/cli/register-structured-mutation.js +1 -196
  95. package/dist/cli/registration-helpers.js +1 -5
  96. package/dist/cli/runtime-compatibility-boundary.js +4 -42
  97. package/dist/cli/schema-registration-helpers.js +1 -73
  98. package/dist/cli/search-refresh.js +1 -13
  99. package/dist/cli/stats-analytics-json.js +1 -68
  100. package/dist/cli/telemetry-flush.js +1 -10
  101. package/dist/cli-bundle/bundle-manifest.json +164 -156
  102. package/dist/cli-bundle/chunks/chunk-3BZZA6A3.js +5 -0
  103. package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +235 -0
  104. package/dist/cli-bundle/chunks/chunk-DAM4CBBR.js +2202 -0
  105. package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
  106. package/dist/cli-bundle/chunks/chunk-FLDWYEND.js +77 -0
  107. package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-G5ADGQ2D.js} +3 -3
  108. package/dist/cli-bundle/chunks/chunk-JAAEYHUA.js +2 -0
  109. package/dist/cli-bundle/chunks/{chunk-JX4DH4WC.js → chunk-KR3RP4FH.js} +3 -3
  110. package/dist/cli-bundle/chunks/chunk-LEZOUXG6.js +2 -0
  111. package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
  112. package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +29 -0
  113. package/dist/cli-bundle/chunks/chunk-RHSFOMHU.js +2 -0
  114. package/dist/cli-bundle/chunks/chunk-XOD2PCB6.js +20 -0
  115. package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-YVEQ2AMO.js} +4 -4
  116. package/dist/cli-bundle/chunks/register-list-query-KSK3R63M.js +11 -0
  117. package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +20 -0
  118. package/dist/cli-bundle/chunks/{register-operations-I5W3KMGB.js → register-operations-DWVHR2NC.js} +2 -2
  119. package/dist/cli-bundle/chunks/register-setup-BQ5SVD4B.js +2 -0
  120. package/dist/cli-bundle/focused-chunks/chunk-3WRPWLA7.js +3 -0
  121. package/dist/cli-bundle/focused-chunks/chunk-7MBUII7U.js +2 -0
  122. package/dist/cli-bundle/focused-chunks/chunk-COPBO5HW.js +8 -0
  123. package/dist/cli-bundle/focused-chunks/chunk-DUN4IXYN.js +20 -0
  124. package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-EE5QSM4Z.js} +3 -3
  125. package/dist/cli-bundle/focused-chunks/chunk-HJVARYM3.js +6 -0
  126. package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +177 -0
  127. package/dist/cli-bundle/focused-chunks/chunk-KOOMJ54F.js +2 -0
  128. package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +56 -0
  129. package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-OPFHFGDD.js} +2 -2
  130. package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +9 -0
  131. package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-RMWES4M6.js} +2 -2
  132. package/dist/cli-bundle/focused-chunks/chunk-RXT4P5QH.js +10 -0
  133. package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +12 -0
  134. package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +2 -0
  135. package/dist/cli-bundle/focused-chunks/{chunk-PEFABF7E.js → chunk-WE3IUNIW.js} +3 -3
  136. package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +2 -0
  137. package/dist/cli-bundle/main.js +20 -20
  138. package/dist/cli-bundle/sdk-authoring.js +1 -1
  139. package/dist/cli-bundle/sdk-contracts.js +2 -2
  140. package/dist/cli-bundle/sdk-core.js +29 -29
  141. package/dist/cli-bundle/sdk-governance.js +1 -1
  142. package/dist/cli-bundle/sdk-graph.js +1 -1
  143. package/dist/cli-bundle/sdk-merge.js +42 -42
  144. package/dist/cli-bundle/sdk-query.js +1 -1
  145. package/dist/cli-bundle/sdk-runtime.js +1 -1
  146. package/dist/cli-bundle/sdk-testing.js +1 -1
  147. package/dist/cli-bundle/sdk.js +11 -11
  148. package/dist/cli.js +1 -104
  149. package/dist/core/checkpoint/checkpoint-gc.js +1 -169
  150. package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
  151. package/dist/core/config/nested-settings.js +1 -534
  152. package/dist/core/config/positional-value.js +1 -109
  153. package/dist/core/diagnostics/remediation.js +1 -506
  154. package/dist/core/extensions/activation-summary-markdown.js +2 -145
  155. package/dist/core/extensions/activation-summary.js +1 -92
  156. package/dist/core/extensions/activation-transaction.js +1 -46
  157. package/dist/core/extensions/capability-usage.js +1 -173
  158. package/dist/core/extensions/command-hook-context.js +1 -13
  159. package/dist/core/extensions/command-metadata-contract.js +1 -22
  160. package/dist/core/extensions/command-visibility-tier.js +1 -29
  161. package/dist/core/extensions/contribution-inventory.js +1 -173
  162. package/dist/core/extensions/exporter-output-contract.js +1 -66
  163. package/dist/core/extensions/extension-candidate.js +1 -18
  164. package/dist/core/extensions/extension-capability-aliases.js +1 -158
  165. package/dist/core/extensions/extension-hook-runtime.js +1 -699
  166. package/dist/core/extensions/extension-policy.js +1 -599
  167. package/dist/core/extensions/extension-registries.js +1 -62
  168. package/dist/core/extensions/extension-runtime-helpers.js +1 -33
  169. package/dist/core/extensions/extension-types.js +1 -102
  170. package/dist/core/extensions/flag-definition-validation.js +1 -52
  171. package/dist/core/extensions/flag-value-types.js +1 -64
  172. package/dist/core/extensions/index.js +1 -526
  173. package/dist/core/extensions/item-field-types.js +1 -39
  174. package/dist/core/extensions/item-fields.js +1 -261
  175. package/dist/core/extensions/loader.js +1 -2223
  176. package/dist/core/extensions/manifest-schema.js +1 -69
  177. package/dist/core/extensions/module-graph-snapshot.js +1 -33
  178. package/dist/core/extensions/preflight-ownership.js +1 -41
  179. package/dist/core/extensions/registration-validation.js +1 -82
  180. package/dist/core/extensions/registration-values.js +1 -209
  181. package/dist/core/extensions/reserved-host-flags.js +1 -36
  182. package/dist/core/extensions/runtime-registrations.js +1 -67
  183. package/dist/core/extensions/service-ownership.js +1 -19
  184. package/dist/core/extensions/version-compat.js +1 -216
  185. package/dist/core/fs/fs-utils.js +2 -158
  186. package/dist/core/fs/host-environment-errors.js +1 -141
  187. package/dist/core/fs/index.js +1 -9
  188. package/dist/core/fs/path-utils.js +1 -17
  189. package/dist/core/governance/content-fields.js +1 -160
  190. package/dist/core/governance/issue-codes.js +1 -151
  191. package/dist/core/governance/metadata-coverage.js +1 -358
  192. package/dist/core/history/drift-cache.js +3 -72
  193. package/dist/core/history/drift-scan.js +1 -342
  194. package/dist/core/history/event-classification.js +1 -109
  195. package/dist/core/history/event-index.js +8 -784
  196. package/dist/core/history/history-compact-bulk.js +1 -104
  197. package/dist/core/history/history-diff.js +1 -158
  198. package/dist/core/history/history-rewrite.d.ts +6 -1
  199. package/dist/core/history/history-rewrite.js +1 -107
  200. package/dist/core/history/history-storage-stats.js +1 -102
  201. package/dist/core/history/history-stream-policy.js +1 -62
  202. package/dist/core/history/history.js +2 -617
  203. package/dist/core/history/identity.js +1 -30
  204. package/dist/core/history/index.js +1 -9
  205. package/dist/core/history/projection.js +1 -196
  206. package/dist/core/history/read.d.ts +9 -0
  207. package/dist/core/history/read.js +1 -57
  208. package/dist/core/history/replay.js +2 -439
  209. package/dist/core/history/version-address.js +1 -32
  210. package/dist/core/history/workspace-history.js +2 -433
  211. package/dist/core/io/body-file.js +1 -62
  212. package/dist/core/io/bulk-ids-input.js +1 -112
  213. package/dist/core/item/actionability.js +1 -327
  214. package/dist/core/item/dependency-reference.js +1 -20
  215. package/dist/core/item/id.js +1 -112
  216. package/dist/core/item/index.js +1 -12
  217. package/dist/core/item/item-format-version.js +1 -78
  218. package/dist/core/item/item-format.js +5 -1473
  219. package/dist/core/item/item-record.js +1 -23
  220. package/dist/core/item/item-type-definition.js +1 -133
  221. package/dist/core/item/parent-reference-policy.js +1 -57
  222. package/dist/core/item/parse.js +2 -603
  223. package/dist/core/item/plan-lifecycle.js +1 -19
  224. package/dist/core/item/priority.js +1 -61
  225. package/dist/core/item/sprint-release-format.js +1 -38
  226. package/dist/core/item/status-filter.js +1 -115
  227. package/dist/core/item/status.js +1 -43
  228. package/dist/core/item/toon-decode.js +1 -29
  229. package/dist/core/item/type-registry.js +1 -715
  230. package/dist/core/item/type-synonyms.js +1 -38
  231. package/dist/core/lock/index.js +1 -9
  232. package/dist/core/lock/lock-gc.js +1 -240
  233. package/dist/core/lock/lock.js +3 -590
  234. package/dist/core/output/mutation-projection.js +1 -217
  235. package/dist/core/output/output-control.js +1 -25
  236. package/dist/core/output/output.js +11 -494
  237. package/dist/core/output/query-summary.js +1 -58
  238. package/dist/core/output/tabular.js +1 -77
  239. package/dist/core/packages/manifest.js +1 -244
  240. package/dist/core/packages/root.js +1 -84
  241. package/dist/core/profile/profile-describe.js +1 -83
  242. package/dist/core/profile/profile-lint.js +1 -415
  243. package/dist/core/profile/profile-plan.js +0 -0
  244. package/dist/core/profile/profile-presets.js +1 -370
  245. package/dist/core/reproducibility/context.js +1 -82
  246. package/dist/core/schema/fields-file.js +2 -288
  247. package/dist/core/schema/item-types-file.js +2 -296
  248. package/dist/core/schema/runtime-field-filters.js +1 -49
  249. package/dist/core/schema/runtime-field-values.js +1 -313
  250. package/dist/core/schema/runtime-schema.js +2 -826
  251. package/dist/core/schema/status-defs-file.js +2 -227
  252. package/dist/core/schema/status-token.js +1 -31
  253. package/dist/core/schema/type-inference.js +1 -95
  254. package/dist/core/schema/type-presets.js +1 -87
  255. package/dist/core/schema/type-workflows.js +1 -104
  256. package/dist/core/search/background-refresh.js +2 -286
  257. package/dist/core/search/bm25.js +1 -146
  258. package/dist/core/search/cache.js +2 -534
  259. package/dist/core/search/corpus.js +1 -311
  260. package/dist/core/search/embedding-batches.js +1 -163
  261. package/dist/core/search/eval.js +1 -225
  262. package/dist/core/search/http-client.js +1 -75
  263. package/dist/core/search/providers.js +1 -242
  264. package/dist/core/search/relevance.js +1 -244
  265. package/dist/core/search/semantic-defaults.js +1 -199
  266. package/dist/core/search/staleness.js +1 -30
  267. package/dist/core/search/vector-stores.js +2 -664
  268. package/dist/core/search/vectorization-metadata.js +1 -81
  269. package/dist/core/sentry/helpers.js +1 -272
  270. package/dist/core/sentry/instrument.js +1 -387
  271. package/dist/core/session/session-state.js +1 -260
  272. package/dist/core/shared/agent-session-context.js +1 -133
  273. package/dist/core/shared/author.js +1 -1172
  274. package/dist/core/shared/command-types.js +1 -4
  275. package/dist/core/shared/conflict-markers.js +1 -31
  276. package/dist/core/shared/constants.js +1 -405
  277. package/dist/core/shared/errors.js +1 -20
  278. package/dist/core/shared/html-entity-decode.js +1 -131
  279. package/dist/core/shared/index.js +1 -12
  280. package/dist/core/shared/item-metadata-contract.js +1 -89
  281. package/dist/core/shared/lazy-module.js +1 -16
  282. package/dist/core/shared/levenshtein.js +1 -61
  283. package/dist/core/shared/memo.js +1 -19
  284. package/dist/core/shared/numeric-parsers.js +1 -20
  285. package/dist/core/shared/option-alias-visibility.js +1 -67
  286. package/dist/core/shared/primitives.js +1 -127
  287. package/dist/core/shared/serial-queue.js +1 -79
  288. package/dist/core/shared/serialization.js +1 -210
  289. package/dist/core/shared/split-comma-list.js +1 -30
  290. package/dist/core/shared/text-normalization.js +1 -38
  291. package/dist/core/shared/time.js +1 -306
  292. package/dist/core/store/index.js +1 -12
  293. package/dist/core/store/item-format-migration.js +1 -125
  294. package/dist/core/store/item-metadata-cache.js +1 -1116
  295. package/dist/core/store/item-metadata-query-index.js +9 -394
  296. package/dist/core/store/item-metadata-read-work.js +1 -43
  297. package/dist/core/store/item-store.js +1 -693
  298. package/dist/core/store/paths.d.ts +1 -1
  299. package/dist/core/store/paths.js +1 -214
  300. package/dist/core/store/settings-read-cache.js +1 -85
  301. package/dist/core/store/settings-validator.js +1 -421
  302. package/dist/core/store/settings.js +3 -1309
  303. package/dist/core/store/tracker-preflight.js +1 -141
  304. package/dist/core/telemetry/consent.js +5 -108
  305. package/dist/core/telemetry/observability.js +1 -246
  306. package/dist/core/telemetry/runtime.js +4 -1988
  307. package/dist/core/test/background-runs.js +4 -945
  308. package/dist/core/test/item-test-run-tracking.js +1 -63
  309. package/dist/core/test/run-selectors.js +1 -120
  310. package/dist/core/validate/estimate-defaults.js +1 -89
  311. package/dist/core/validate/fix-planning.js +1 -189
  312. package/dist/core/validate/linked-artifact-reference.js +1 -36
  313. package/dist/core/validate/missing-by-type.js +1 -34
  314. package/dist/core/validate/missing-link-owners.js +1 -95
  315. package/dist/core/validate/stale-file-classification.js +1 -82
  316. package/dist/mcp/http-server.js +5 -448
  317. package/dist/mcp/legacy-adapter.js +1 -77
  318. package/dist/mcp/runtime-capabilities.js +1 -200
  319. package/dist/mcp/server.js +4 -1233
  320. package/dist/mcp/tool-definitions.js +1 -804
  321. package/dist/sdk/actionability.js +1 -13
  322. package/dist/sdk/agent/closed-domain-contracts.js +1 -161
  323. package/dist/sdk/agent/command-recovery.js +1 -59
  324. package/dist/sdk/agent/command-suggestions.js +1 -66
  325. package/dist/sdk/agent/create-option-policy.js +1 -31
  326. package/dist/sdk/agent/identity-config.js +1 -106
  327. package/dist/sdk/agent/item-addressing.js +1 -207
  328. package/dist/sdk/agent/refusal-closure-census.js +1 -151
  329. package/dist/sdk/agent/refusal-closure.js +1 -133
  330. package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
  331. package/dist/sdk/agent/refusal-reachability.js +1 -593
  332. package/dist/sdk/agent/subcommand-recovery.js +1 -83
  333. package/dist/sdk/agent/task-transcript-contracts.js +1 -197
  334. package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
  335. package/dist/sdk/agent-capability-contracts.js +1 -428
  336. package/dist/sdk/agent-session-context.js +1 -9
  337. package/dist/sdk/annotations.js +1 -448
  338. package/dist/sdk/author-attribution.js +1 -468
  339. package/dist/sdk/authoring.js +1 -20
  340. package/dist/sdk/cli-bootstrap.js +1 -838
  341. package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
  342. package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
  343. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
  344. package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
  345. package/dist/sdk/cli-contracts/command-aliases.js +1 -107
  346. package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
  347. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
  348. package/dist/sdk/cli-contracts/commander-types.js +1 -159
  349. package/dist/sdk/cli-contracts/completeness.js +1 -393
  350. package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
  351. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
  352. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
  353. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
  354. package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
  355. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
  356. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
  357. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
  358. package/dist/sdk/cli-contracts/string-lists.js +1 -16
  359. package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
  360. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
  361. package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
  362. package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
  363. package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
  364. package/dist/sdk/cli-contracts.d.ts +1 -1
  365. package/dist/sdk/cli-contracts.js +1 -17
  366. package/dist/sdk/cli-program.js +1 -49
  367. package/dist/sdk/command-line.d.ts +2 -5
  368. package/dist/sdk/command-line.js +1 -78
  369. package/dist/sdk/comments.js +1 -133
  370. package/dist/sdk/compile-cache.js +1 -73
  371. package/dist/sdk/completion.js +157 -837
  372. package/dist/sdk/compose.js +1 -1090
  373. package/dist/sdk/config.js +1 -1204
  374. package/dist/sdk/context/recency.js +1 -33
  375. package/dist/sdk/context/semantic-session-attribution.js +1 -82
  376. package/dist/sdk/context/usage-egress.js +1 -29
  377. package/dist/sdk/context/usage-ledger.js +3 -185
  378. package/dist/sdk/context-intent-contracts.js +1 -709
  379. package/dist/sdk/context-intent-runtime.js +1 -115
  380. package/dist/sdk/context-packing.js +1 -218
  381. package/dist/sdk/context-relevance.js +1 -503
  382. package/dist/sdk/context-signal-store.js +2 -426
  383. package/dist/sdk/context-usage.js +1 -367
  384. package/dist/sdk/contracts.js +1 -23
  385. package/dist/sdk/core-governance.js +1 -14
  386. package/dist/sdk/core.js +1 -14
  387. package/dist/sdk/corpus-shape.js +1 -401
  388. package/dist/sdk/define.js +1 -220
  389. package/dist/sdk/dependencies.js +1 -718
  390. package/dist/sdk/dependency-flag-validation.js +1 -156
  391. package/dist/sdk/dependency-provenance.js +1 -135
  392. package/dist/sdk/docs.js +1 -14
  393. package/dist/sdk/duplicates.js +1 -40
  394. package/dist/sdk/environment/agent-environment.js +1 -466
  395. package/dist/sdk/environment/host-environment-errors.js +1 -8
  396. package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
  397. package/dist/sdk/environment/source-context.js +1 -28
  398. package/dist/sdk/environment/tracker-preflight.js +1 -9
  399. package/dist/sdk/error-code-catalog.js +1 -153
  400. package/dist/sdk/error-runtime.js +1 -58
  401. package/dist/sdk/errors.js +1 -58
  402. package/dist/sdk/eval.js +1 -190
  403. package/dist/sdk/extension/author-manifest.js +1 -92
  404. package/dist/sdk/extension/bundled-catalog.js +1 -332
  405. package/dist/sdk/extension/concurrency.js +1 -25
  406. package/dist/sdk/extension/copy-scope.d.ts +2 -0
  407. package/dist/sdk/extension/copy-scope.js +2 -0
  408. package/dist/sdk/extension/custom-field-collisions.js +1 -30
  409. package/dist/sdk/extension/describe.js +3 -189
  410. package/dist/sdk/extension/doctor.js +1 -606
  411. package/dist/sdk/extension/install-plan.d.ts +69 -0
  412. package/dist/sdk/extension/install-plan.js +2 -0
  413. package/dist/sdk/extension/install-receipts.d.ts +7 -0
  414. package/dist/sdk/extension/install-receipts.js +2 -0
  415. package/dist/sdk/extension/install-runtime.js +3 -313
  416. package/dist/sdk/extension/install-snapshot.js +1 -66
  417. package/dist/sdk/extension/install-sources.js +5 -1057
  418. package/dist/sdk/extension/managed-state.js +2 -252
  419. package/dist/sdk/extension/migrations.js +2 -174
  420. package/dist/sdk/extension/output-ownership.js +1 -25
  421. package/dist/sdk/extension/runtime-summary.js +1 -18
  422. package/dist/sdk/extension/scaffold.js +4 -2308
  423. package/dist/sdk/extension/shared.js +1 -147
  424. package/dist/sdk/extension/source-resolution.js +1 -65
  425. package/dist/sdk/extension/update-check.js +1 -67
  426. package/dist/sdk/extension-command-context.js +1 -44
  427. package/dist/sdk/extension-contracts.js +1 -73
  428. package/dist/sdk/extension.d.ts +7 -2
  429. package/dist/sdk/extension.js +1 -2196
  430. package/dist/sdk/files.js +1 -535
  431. package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
  432. package/dist/sdk/flag-invocation-contracts.js +1 -344
  433. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
  434. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
  435. package/dist/sdk/generated-error-code-catalog.js +1 -16
  436. package/dist/sdk/governance/assurance-action-contracts.js +1 -4
  437. package/dist/sdk/governance/assurance-action.js +1 -411
  438. package/dist/sdk/governance/assurance-limits.js +1 -10
  439. package/dist/sdk/governance/assurance-mutation-error.js +1 -81
  440. package/dist/sdk/governance/assurance-presets.js +1 -135
  441. package/dist/sdk/governance/assurance-runtime.js +1 -238
  442. package/dist/sdk/governance/assurance.js +4 -1182
  443. package/dist/sdk/governance/boundary-fixtures.js +1 -200
  444. package/dist/sdk/governance/coverage-assurance.js +1 -60
  445. package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
  446. package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
  447. package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
  448. package/dist/sdk/governance/defect-recurrence.js +1 -623
  449. package/dist/sdk/governance/extension-host-version.js +1 -115
  450. package/dist/sdk/governance/gc.js +1 -368
  451. package/dist/sdk/governance/health.js +1 -2367
  452. package/dist/sdk/governance/hierarchy-validation.js +1 -108
  453. package/dist/sdk/governance/linked-file-report.js +1 -71
  454. package/dist/sdk/governance/merge-receipt-history.js +1 -206
  455. package/dist/sdk/governance/provenance-health.js +1 -282
  456. package/dist/sdk/governance/reindex.js +4 -761
  457. package/dist/sdk/governance/stale-work.js +1 -82
  458. package/dist/sdk/governance/status-role-diagnostics.js +1 -35
  459. package/dist/sdk/governance/storage-integrity.js +1 -280
  460. package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
  461. package/dist/sdk/governance/upgrade.js +2 -327
  462. package/dist/sdk/governance/validate-history-drift.js +1 -81
  463. package/dist/sdk/governance/validate-item-reader.js +1 -17
  464. package/dist/sdk/governance/validate-normalization.js +1 -36
  465. package/dist/sdk/governance/validate.js +1 -2261
  466. package/dist/sdk/governance/workspace-position.js +1 -163
  467. package/dist/sdk/governance.d.ts +1 -0
  468. package/dist/sdk/governance.js +1 -31
  469. package/dist/sdk/graph/adapter.js +1 -181
  470. package/dist/sdk/graph/analytics.js +1 -474
  471. package/dist/sdk/graph/assembly.js +1 -377
  472. package/dist/sdk/graph/cache.js +1 -160
  473. package/dist/sdk/graph/centrality.js +1 -258
  474. package/dist/sdk/graph/conformance.js +1 -130
  475. package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
  476. package/dist/sdk/graph/deadline-scheduling.js +2 -0
  477. package/dist/sdk/graph/durable-cache.d.ts +1 -1
  478. package/dist/sdk/graph/durable-cache.js +1 -361
  479. package/dist/sdk/graph/governance-contracts.js +1 -34
  480. package/dist/sdk/graph/governance.d.ts +13 -1
  481. package/dist/sdk/graph/governance.js +1 -735
  482. package/dist/sdk/graph/hierarchy-integrity.js +1 -310
  483. package/dist/sdk/graph/index.d.ts +3 -2
  484. package/dist/sdk/graph/index.js +1 -26
  485. package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
  486. package/dist/sdk/graph/lifecycle-coverage.js +2 -0
  487. package/dist/sdk/graph/mutation-advisory.js +1 -176
  488. package/dist/sdk/graph/remediation.js +1 -197
  489. package/dist/sdk/graph/run.d.ts +15 -1
  490. package/dist/sdk/graph/run.js +1 -768
  491. package/dist/sdk/graph/scheduling.js +1 -124
  492. package/dist/sdk/graph/traversal.js +1 -284
  493. package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
  494. package/dist/sdk/graph.js +1 -15
  495. package/dist/sdk/guide-topics.js +1 -707
  496. package/dist/sdk/guide.js +1 -279
  497. package/dist/sdk/history/maintenance.d.ts +71 -0
  498. package/dist/sdk/history/maintenance.js +2 -0
  499. package/dist/sdk/history/salvage.js +2 -247
  500. package/dist/sdk/history/subject.d.ts +19 -0
  501. package/dist/sdk/history/subject.js +2 -0
  502. package/dist/sdk/history-analytics.js +1 -282
  503. package/dist/sdk/history-compact.js +1 -527
  504. package/dist/sdk/history-mcp.js +1 -68
  505. package/dist/sdk/history-provenance.js +1 -182
  506. package/dist/sdk/history-read.js +1 -96
  507. package/dist/sdk/history-redact.d.ts +1 -14
  508. package/dist/sdk/history-redact.js +1 -643
  509. package/dist/sdk/history-repair.d.ts +5 -0
  510. package/dist/sdk/history-repair.js +1 -657
  511. package/dist/sdk/improvement-ledger-validation.js +1 -62
  512. package/dist/sdk/improvement-ledger.js +2 -257
  513. package/dist/sdk/index.d.ts +4 -0
  514. package/dist/sdk/index.js +1 -183
  515. package/dist/sdk/init-agent-guidance.js +2 -496
  516. package/dist/sdk/init.js +2 -820
  517. package/dist/sdk/invocation-author.js +1 -39
  518. package/dist/sdk/item-children.js +1 -90
  519. package/dist/sdk/item-metadata-index.js +1 -15
  520. package/dist/sdk/item-schedule.js +1 -27
  521. package/dist/sdk/item-transaction.js +1 -396
  522. package/dist/sdk/learnings.js +1 -29
  523. package/dist/sdk/lifecycle/append.js +2 -53
  524. package/dist/sdk/lifecycle/claim.d.ts +2 -0
  525. package/dist/sdk/lifecycle/claim.js +1 -242
  526. package/dist/sdk/lifecycle/close-many.js +1 -438
  527. package/dist/sdk/lifecycle/close.js +1 -468
  528. package/dist/sdk/lifecycle/copy.js +1 -212
  529. package/dist/sdk/lifecycle/create.js +1 -1949
  530. package/dist/sdk/lifecycle/delete.js +1 -45
  531. package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
  532. package/dist/sdk/lifecycle/focus.js +1 -91
  533. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
  534. package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
  535. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
  536. package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
  537. package/dist/sdk/lifecycle/mcp-actions.js +1 -51
  538. package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
  539. package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
  540. package/dist/sdk/lifecycle/plan.js +1 -1606
  541. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
  542. package/dist/sdk/lifecycle/reopen.js +1 -68
  543. package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
  544. package/dist/sdk/lifecycle/restore.d.ts +1 -0
  545. package/dist/sdk/lifecycle/restore.js +1 -330
  546. package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
  547. package/dist/sdk/lifecycle/update-many.js +1 -861
  548. package/dist/sdk/lifecycle/update.js +1 -2136
  549. package/dist/sdk/lifecycle-completion.js +1 -92
  550. package/dist/sdk/lifecycle-policy.js +1 -120
  551. package/dist/sdk/linked-artifacts.js +1 -530
  552. package/dist/sdk/mcp/apps.js +4 -133
  553. package/dist/sdk/mcp/authorization.js +1 -404
  554. package/dist/sdk/mcp/discovery.js +1 -494
  555. package/dist/sdk/mcp/interactions.js +1 -336
  556. package/dist/sdk/mcp/protocol.d.ts +7 -0
  557. package/dist/sdk/mcp/protocol.js +1 -184
  558. package/dist/sdk/mcp/skills.js +1 -389
  559. package/dist/sdk/mcp/subscriptions.js +1 -211
  560. package/dist/sdk/mcp/tasks.js +2 -430
  561. package/dist/sdk/mcp/transport.js +1 -260
  562. package/dist/sdk/merge/abandoned-receipts.js +1 -46
  563. package/dist/sdk/merge/driver.js +1 -212
  564. package/dist/sdk/merge/index.js +1 -16
  565. package/dist/sdk/merge/install.js +3 -561
  566. package/dist/sdk/merge/receipt-file-boundary.js +1 -46
  567. package/dist/sdk/merge/receipt-operation.js +1 -96
  568. package/dist/sdk/merge/receipt-schema.js +1 -397
  569. package/dist/sdk/merge/receipts.js +4 -525
  570. package/dist/sdk/merge/reconcile.js +1 -352
  571. package/dist/sdk/merge/three-way.js +3 -775
  572. package/dist/sdk/merge.js +1 -10
  573. package/dist/sdk/mutation-events.js +1 -292
  574. package/dist/sdk/mutation-guard.js +1 -216
  575. package/dist/sdk/notes.js +1 -139
  576. package/dist/sdk/output-contracts.js +1 -172
  577. package/dist/sdk/output-projection.js +1 -430
  578. package/dist/sdk/output-token-accounting.js +1 -140
  579. package/dist/sdk/output.js +1 -64
  580. package/dist/sdk/ownership-source.js +1 -21
  581. package/dist/sdk/package-import-adapters.js +1 -442
  582. package/dist/sdk/package-migrations.js +1 -20
  583. package/dist/sdk/package-runtime-options.js +1 -80
  584. package/dist/sdk/pagination.js +1 -162
  585. package/dist/sdk/profile.js +1 -454
  586. package/dist/sdk/provenance.js +1 -258
  587. package/dist/sdk/public-surface.json +1 -1
  588. package/dist/sdk/query/activity.js +1 -401
  589. package/dist/sdk/query/aggregate.d.ts +16 -0
  590. package/dist/sdk/query/aggregate.js +1 -390
  591. package/dist/sdk/query/calendar.js +1 -964
  592. package/dist/sdk/query/complete-list.js +1 -215
  593. package/dist/sdk/query/context.js +1 -1702
  594. package/dist/sdk/query/duplicate-candidates.js +1 -70
  595. package/dist/sdk/query/get.js +1 -450
  596. package/dist/sdk/query/history.js +1 -186
  597. package/dist/sdk/query/item-filter-options.js +1 -9
  598. package/dist/sdk/query/light-metadata.js +1 -18
  599. package/dist/sdk/query/list-filter-shared.js +1 -81
  600. package/dist/sdk/query/list.js +1 -1304
  601. package/dist/sdk/query/multi-value-filters.js +1 -78
  602. package/dist/sdk/query/next.js +1 -513
  603. package/dist/sdk/query/parsers.js +1 -44
  604. package/dist/sdk/query/projection-contracts.js +1 -184
  605. package/dist/sdk/query/search-contracts.js +1 -230
  606. package/dist/sdk/query/search-pagination.js +1 -35
  607. package/dist/sdk/query/search-rendering.js +1 -105
  608. package/dist/sdk/query/search.js +2 -1987
  609. package/dist/sdk/query.js +1 -35
  610. package/dist/sdk/read-output/continuation.js +1 -194
  611. package/dist/sdk/read-output-budget.js +1 -135
  612. package/dist/sdk/read-output-contracts.js +1 -1225
  613. package/dist/sdk/read-output-rows.js +1 -186
  614. package/dist/sdk/read-output-session.js +1 -208
  615. package/dist/sdk/relationship-analytics.js +1 -410
  616. package/dist/sdk/relationship-context.js +1 -284
  617. package/dist/sdk/relationship-history.js +4 -519
  618. package/dist/sdk/relationship-kinds/contract.js +1 -22
  619. package/dist/sdk/relationship-migration.js +1 -77
  620. package/dist/sdk/relationships.js +1 -579
  621. package/dist/sdk/reproducibility/process.js +1 -87
  622. package/dist/sdk/runtime-action-aliases.js +1 -59
  623. package/dist/sdk/runtime-extended-actions.js +1 -177
  624. package/dist/sdk/runtime-input.js +1 -614
  625. package/dist/sdk/runtime-primitives.js +1 -84
  626. package/dist/sdk/runtime-public-contracts.js +1 -4
  627. package/dist/sdk/runtime-stats-options.js +1 -38
  628. package/dist/sdk/runtime.js +1 -1928
  629. package/dist/sdk/scheduling-shortcuts.js +1 -63
  630. package/dist/sdk/schema-migration.js +3 -856
  631. package/dist/sdk/schema.js +1 -1376
  632. package/dist/sdk/search-refresh-worker.js +1 -18
  633. package/dist/sdk/similarity-scoring.js +1 -53
  634. package/dist/sdk/similarity.js +1 -326
  635. package/dist/sdk/start-task-status.js +1 -14
  636. package/dist/sdk/stats.js +1 -270
  637. package/dist/sdk/structured-mutations.js +1 -580
  638. package/dist/sdk/telemetry-flush.js +1 -13
  639. package/dist/sdk/telemetry.js +1 -405
  640. package/dist/sdk/templates.js +2 -292
  641. package/dist/sdk/test/batch.js +2 -509
  642. package/dist/sdk/test/entry.js +1 -70
  643. package/dist/sdk/test/execution.js +6 -2211
  644. package/dist/sdk/test/linked-command-detection.js +1 -546
  645. package/dist/sdk/test/measurements.js +1 -91
  646. package/dist/sdk/test/parsers.js +1 -545
  647. package/dist/sdk/test/runs.js +1 -193
  648. package/dist/sdk/test/trust.js +2 -206
  649. package/dist/sdk/testing.js +4 -1391
  650. package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
  651. package/dist/sdk/traceability/source-traceability.js +1 -292
  652. package/dist/sdk/tracker-root-discovery.js +1 -9
  653. package/dist/sdk/workspace-contracts-cache.js +1 -28
  654. package/dist/sdk/workspace-contracts.js +1 -33
  655. package/dist/sdk/workspace-memory.js +2 -318
  656. package/dist/sdk/workspace-recipe.js +1 -71
  657. package/dist/sdk/workspace-snapshot.js +4 -613
  658. package/dist/sdk/workspace-transaction-gc.js +1 -149
  659. package/dist/sdk/workspace-transaction.js +2 -363
  660. package/dist/sdk/workspace.js +3 -127
  661. package/dist/types/index.js +1 -9
  662. package/dist/types.js +1 -245
  663. package/docs/AGENT_GUIDE.md +1 -1
  664. package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
  665. package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
  666. package/docs/EXTENSIONS.md +1 -0
  667. package/docs/HISTORY_MAINTENANCE.md +125 -0
  668. package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
  669. package/docs/PACKAGE_EVIDENCE.md +92 -0
  670. package/docs/PLANNING_MEASUREMENTS.md +183 -0
  671. package/docs/README.md +3 -0
  672. package/docs/RELEASING.md +1 -0
  673. package/docs/SCRIPTING.md +21 -0
  674. package/docs/TESTING.md +23 -0
  675. package/docs/generated/FLAG_LEXICON_BUDGETS.md +5 -5
  676. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +2 -2
  677. package/marketplace.json +2 -2
  678. package/package.json +1 -1
  679. package/packages/pm-beads/package.json +1 -1
  680. package/packages/pm-calendar/package.json +1 -1
  681. package/packages/pm-command-kit/package.json +1 -1
  682. package/packages/pm-digital-twin/package.json +1 -1
  683. package/packages/pm-governance-audit/package.json +1 -1
  684. package/packages/pm-guide-shell/package.json +1 -1
  685. package/packages/pm-kanban/package.json +1 -1
  686. package/packages/pm-lifecycle-hooks/package.json +1 -1
  687. package/packages/pm-linked-test-adapters/package.json +1 -1
  688. package/packages/pm-search-advanced/package.json +1 -1
  689. package/packages/pm-templates/package.json +1 -1
  690. package/packages/pm-todos/package.json +1 -1
  691. package/packages/pm-vcs/package.json +1 -1
  692. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  693. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  694. package/scripts/finalize-build.mjs +45 -3
  695. package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
  696. package/dist/cli-bundle/chunks/chunk-BAX2BYUW.js +0 -2111
  697. package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
  698. package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
  699. package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
  700. package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
  701. package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
  702. package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
  703. package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
  704. package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
  705. package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
  706. package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
  707. package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
  708. package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
  709. package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
  710. package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
  711. package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
  712. package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
  713. package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
  714. package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
  715. package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
  716. package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
  717. package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
  718. package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
  719. package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
@@ -0,0 +1,125 @@
1
+ # History maintenance and recovery
2
+
3
+ Tracked by [pm-34w8za](../.agents/pm/chores/pm-34w8za.toon) and
4
+ [pm-tqel](../.agents/pm/tasks/pm-tqel.toon).
5
+
6
+ History is authoritative context: maintenance must preserve replay integrity,
7
+ version addresses, provenance, and retained recovery evidence. The SDK owns
8
+ these policies; the CLI exposes the same operations through one history family.
9
+
10
+ ## Command paths
11
+
12
+ | Native command | Permanent compatibility spelling | Purpose |
13
+ | --- | --- | --- |
14
+ | `pm history <id>` | unchanged | Read or verify one item stream |
15
+ | `pm history activity` | `pm activity` | Read activity across streams |
16
+ | `pm history redact <id>` | `pm history-redact <id>` | Remove selected sensitive content |
17
+ | `pm history repair [id]` | `pm history-repair [id]` | Repair or salvage a stream using explicit policy |
18
+ | `pm history compact [id]` | `pm history-compact [id]` | Retain a baseline and selected history tail |
19
+ | `pm history restore <id> <timestamp-or-version>` | `pm restore <id> <timestamp-or-version>` | Restore an item's historical state |
20
+
21
+ Compatibility commands remain executable with their existing flags and result
22
+ shapes. Default discovery omits these root aliases. `pm --all --help` and full
23
+ contracts retain the compatibility inventory. SDK function names and MCP action
24
+ identifiers remain stable, including `history-repair` and `restore`.
25
+
26
+ Bash, Zsh, and Fish completion expose the activity flags under both spellings,
27
+ including `--unbounded`. The `--stream` mode is optional; Zsh offers `rows`,
28
+ `ndjson`, and `jsonl` when a mode is supplied.
29
+ Completion accepts global options before `history` and between `history` and
30
+ its operation, including valued options such as `--pm-path <path>` and
31
+ `--output-format=json`. Option values and later positional arguments do not
32
+ select an operation; the first ordinary history argument remains the item ID.
33
+ Zsh and Fish also offer the value-taking `--id` alternative for redaction,
34
+ repair, and compaction under both native and compatibility spellings.
35
+
36
+ ```bash
37
+ pm history repair --help
38
+ pm contracts --command "history compact" --flags-only --json
39
+ pm contracts --command "history restore" --availability-only --json
40
+ pm history activity --limit 10
41
+ pm history pm-example --verify --strict-exit
42
+ pm history compact pm-example --dry-run
43
+ pm history repair pm-example --dry-run
44
+ ```
45
+
46
+ Maintenance previews do not write history or item files. Redaction, repair,
47
+ and compaction return diagnostic report envelopes for both native and legacy
48
+ spellings. Review the operation's report before applying a rewrite. Restore
49
+ returns the standard flat mutation
50
+ receipt; activity uses the existing bounded read envelope and streaming
51
+ contracts. Universal output controls resolve against the selected leaf, so a
52
+ restore does not inherit the parent history read envelope.
53
+ SDK agent-task transcripts resolve the selected history operation through
54
+ leading and interleaved global options before validating output and exit
55
+ contracts. Native maintenance steps use diagnostic reports, restore uses a
56
+ mutation receipt, and ordinary item history retains its collection contract.
57
+
58
+ History identifiers must be a single filename: path separators, traversal-only
59
+ names, null bytes, and drive or stream syntax are rejected before resolution.
60
+ Bulk compaction thresholds must be non-negative safe integers, up to
61
+ `9007199254740991`, in both CLI flags and SDK options. Invalid thresholds are
62
+ rejected before scanning streams.
63
+ `--min-entries` is a bulk-only threshold; single-ID compaction rejects it
64
+ instead of silently ignoring it.
65
+
66
+ Redaction diagnostics hide matcher and replacement values after resolving the
67
+ leading command path through global options. Words such as `history` or
68
+ `redact` appearing only as values of an unrelated command do not activate this
69
+ privacy filter. Unknown flags still permit redaction before validation fails.
70
+
71
+ ## SDK integration
72
+
73
+ Use `runHistoryRedact`, `runHistoryRepair`, `runHistoryCompact`, and `runRestore`
74
+ from the public SDK for ordinary integrations. These functions retain each
75
+ operation's validation, audit events, version mapping, and recovery policy.
76
+
77
+ `runHistoryMaintenance` is the shared SDK pipeline for history transforms. It
78
+ accepts a resolved subject, settings, type registry, operation policy, execution
79
+ options, and a transform. The transform receives one captured stream, chain
80
+ verification, current item, and resolved author. It returns planned entries,
81
+ a result renderer, and optional transactional callbacks.
82
+
83
+ The pipeline performs these steps:
84
+
85
+ 1. Read original bytes and decode entries from the same file read.
86
+ 2. Capture the current item and construct the operation-specific plan.
87
+ 3. Verify the complete planned chain, including during dry runs.
88
+ 4. For a changed apply, enforce ownership and acquire the existing rewrite lock.
89
+ 5. Recheck both stream and item bytes under that lock; reject concurrent changes.
90
+ 6. Persist with rollback, then collect post-write hook warnings and render the report.
91
+
92
+ `readHistorySnapshot` exposes the paired raw bytes and decoded entries when an
93
+ integration needs a concurrency baseline. `readHistoryEntries` remains the
94
+ array-returning compatibility API.
95
+
96
+ A custom `applyRewrite` callback owns any coupled item/history transaction and
97
+ its rollback. `beforeWrite` runs under the lock for evidence checks, and
98
+ `afterWrite` supplies operation-specific hook and index warnings. Planning must
99
+ not persist changes. The shared pipeline verifies the planned chain but cannot
100
+ make arbitrary callback side effects transactional.
101
+
102
+ Redaction uses the coupled item/history transaction. Repair retains its
103
+ source-bound abandonment and salvage policies. Compaction retains baseline,
104
+ checkpoint, and historical version mappings. Restore uses the same snapshot
105
+ and under-lock drift primitives while retaining its lifecycle transaction and
106
+ unreadable-item recovery reader. Copy retains its existing SDK lifecycle
107
+ implementation.
108
+
109
+ ## Verification
110
+
111
+ The namespace integration tests compare native and compatibility previews and
112
+ activity results, verify untouched bytes after previews, apply restore, and
113
+ verify the resulting chain. SDK maintenance tests exercise invalid plans and
114
+ concurrent changes. Existing redaction, repair, compaction, and restore suites
115
+ continue to cover operation-specific rollback and retained evidence.
116
+
117
+ Run tests through the sandbox wrapper described in [Testing](TESTING.md):
118
+
119
+ ```bash
120
+ node scripts/run-tests.mjs test -- tests/integration/history-namespace.integration.spec.ts tests/unit/sdk/history/maintenance.spec.ts tests/unit/sdk/cli-contracts/history-namespace-completion.spec.ts
121
+ ```
122
+
123
+ See [Mutation Integrity](MUTATION_INTEGRITY.md),
124
+ [Context Integrity Contracts](CONTEXT_INTEGRITY_CONTRACTS.md), and
125
+ [CLI Grammar](CLI_GRAMMAR.md) for the surrounding guarantees.
@@ -15,17 +15,27 @@ evidence or an explicit open obligation.
15
15
  | No modern initialize, initialized notification, ping, or protocol session | [pm-sqvshj](../.agents/pm/decisions/pm-sqvshj.toon) | Implemented with bounded legacy stdio adapter | modern removed-method and legacy handshake tests |
16
16
  | Legacy interoperability covers every initialize-era revision the spec names | [pm-edywqn](../.agents/pm/issues/pm-edywqn.toon) | Implemented: `2025-11-25` and `2025-06-18` accepted, requested revision echoed | `tests/integration/mcp-handshake.spec.ts` handshake matrix plus the plugin smoke `assertProtocolHandshakeMatrix` real-process gate and its negative control |
17
17
  | MRTR `input_required`, retry state, and reverse-request removal | [pm-rz9gep](../.agents/pm/features/pm-rz9gep.toon) | Implemented for SDK and stateless stdio adapter | `tests/unit/sdk/mcp/interactions.spec.ts`; direct server negative controls |
18
- | `subscriptions/listen`, request-scoped streams, no SSE resumability | [pm-v7e337](../.agents/pm/features/pm-v7e337.toon) | Implemented locally; packed and published proof follows merge | subscription SDK, stdio, HTTP, backpressure, disconnect, and retry tests |
18
+ | `subscriptions/listen`, request-scoped streams, no SSE resumability | [pm-v7e337](../.agents/pm/features/pm-v7e337.toon) | Implemented; consumer acceptance remains a per-release gate | subscription SDK, stdio, HTTP, backpressure, disconnect, and retry tests |
19
19
  | Official `io.modelcontextprotocol/tasks` extension | [pm-rzs24j](../.agents/pm/features/pm-rzs24j.toon) | Implemented for eligible tool calls, durable lifecycle, and stdio methods; notifications remain with subscriptions owner | `tests/unit/sdk/mcp/tasks.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
20
20
  | Cacheable list/read results, deterministic tools, JSON Schema 2020-12, any JSON structured content | [pm-hv1x1x](../.agents/pm/features/pm-hv1x1x.toon) | Implemented for current pm tool/resource/prompt surfaces | SDK schema/cache tests and direct modern server surface suite |
21
- | Issuer-bound authorization, client metadata documents, consent, headers, OpenTelemetry | [pm-3zh9s4](../.agents/pm/features/pm-3zh9s4.toon) | Implemented locally; deployment verifier integration remains host-owned | authorization SDK adversarial tests, real HTTP bearer suite, and threat model |
22
- | Stable MCP Apps negotiation, tool/resource metadata, fallback, sandboxing, and accessible views | [pm-pznhee](../.agents/pm/features/pm-pznhee.toon) | Implemented in the public SDK and stateless server; packed/published proof follows merge | `tests/unit/sdk/mcp/apps.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
23
- | Draft Skills over MCP list/get/read, compatibility, provenance, digests, bounds, and pagination | [pm-8nzivt](../.agents/pm/features/pm-8nzivt.toon) | Implemented against exact SEP-2640 draft revision; packed/published proof follows merge | `tests/unit/sdk/mcp/skills.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
21
+ | Issuer-bound authorization, client metadata documents, consent, headers, OpenTelemetry | [pm-3zh9s4](../.agents/pm/features/pm-3zh9s4.toon) | Implemented; deployment-specific identity-provider verification remains host-owned | authorization SDK adversarial tests, real HTTP bearer suite, and threat model |
22
+ | Stable MCP Apps negotiation, tool/resource metadata, fallback, sandboxing, and accessible views | [pm-pznhee](../.agents/pm/features/pm-pznhee.toon) | Implemented in the public SDK and stateless server; exact-version journeys run in the published-release verifier | `tests/unit/sdk/mcp/apps.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
23
+ | Draft Skills over MCP list/get/read, compatibility, provenance, digests, bounds, and pagination | [pm-8nzivt](../.agents/pm/features/pm-8nzivt.toon) | Implemented against exact SEP-2640 draft revision; the published-release verifier checks negotiation and content digests | `tests/unit/sdk/mcp/skills.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
24
+ | Per-request `io.modelcontextprotocol/logLevel`; omission forbids `notifications/message` | [pm-pd7nh0](../.agents/pm/tasks/pm-pd7nh0.toon) | SDK validates the eight severity values and rejects malformed metadata with `-32602`; pm emits no protocol log notifications | `tests/unit/sdk/mcp/protocol.spec.ts`, real stdio and Streamable HTTP negative controls |
24
25
  | Deprecated Roots, Sampling, Logging, HTTP+SSE, `includeContext`, dynamic registration | [pm-vzcisw](../.agents/pm/chores/pm-vzcisw.toon) | Canonical source ratcheted; bounded stdio adapter and dated migration policy remain | generated inventory, negative controls, adapter tests, and migration guide |
25
- | Official schema, real stdio/HTTP, packed/published, npx/bunx, negative controls | [pm-55yf1t](../.agents/pm/tasks/pm-55yf1t.toon) | Foundation implemented; remains open until every owner above closes | SDK/server suites, plugin smokes, published-release verifier |
26
+ | Official schema, real stdio/HTTP, packed/published, npx/bunx, negative controls | [pm-55yf1t](../.agents/pm/tasks/pm-55yf1t.toon) | Conformance and released-consumer gates implemented; each release must produce its own acceptance evidence | SDK/server suites, plugin smokes, published-release verifier |
26
27
 
27
- The programme gate remains intentionally incomplete while local-only rows
28
- lack their packed and published evidence. Provider
29
- silence, a successful legacy initialize, or source-only unit coverage cannot
30
- promote such a row. Completion requires the owner's positive and negative
31
- tests plus exact packed and published consumer proof.
28
+ This matrix describes implementation coverage, not a blanket certification of
29
+ every deployed artifact. Programme completion requires each owner's positive
30
+ and negative tests plus exact packed and published consumer proof for the
31
+ revision being assessed. A source fix does not retroactively change a released
32
+ package. Read the live programme item
33
+ [pm-rs9vry](../.agents/pm/features/pm-rs9vry.toon) for outstanding obligations.
34
+
35
+ Logging remains deprecated in the official revision. pm accepts its optional
36
+ request metadata for interoperability but does not advertise logging support
37
+ or emit `notifications/message`, even when a client opts in. The request-local
38
+ threshold is exposed by `resolveMcpRequestContext` as `logLevel`; it is never
39
+ inherited by the next request. Ordinary diagnostics continue through stderr or
40
+ the configured telemetry path. See the normative
41
+ [request metadata schema](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/2026-07-28/schema.ts).
@@ -0,0 +1,92 @@
1
+ # Install Plans and Update Evidence
2
+
3
+ Tracked by [pm-5bsofk](../.agents/pm/issues/pm-5bsofk.toon) and
4
+ [pm-gf5zw8](../.agents/pm/issues/pm-gf5zw8.toon), with claim controls tracked by
5
+ [pm-eqdo85](../.agents/pm/issues/pm-eqdo85.toon).
6
+
7
+ ## Install planning
8
+
9
+ Preview an install with `pm package install ./local-package --project --dry-run`.
10
+ The `details.install_plan` receipt distinguishes directory, archive, npm, and
11
+ GitHub sources and reports logical file bytes, file/directory/link counts, and
12
+ the copy policy. External local directories are directory snapshots, including
13
+ development artifacts; nested destinations exclude `.agents`, `node_modules`,
14
+ and installer backup directories at every depth using the installer's filter.
15
+ Counts are lower bounds when `complete` is false, with `stop_reason`
16
+ identifying the entry or depth limit. A source-directory alias resolves to its
17
+ directory before copying; symlink entries inside the source remain links and
18
+ their targets are never traversed.
19
+ Planning writes no destination files, managed state, or activation settings;
20
+ archive and remote source resolution can still prepare temporary source files
21
+ and perform network or dependency-resolution work.
22
+
23
+ For development-heavy or incomplete local snapshots, `packed_alternative`
24
+ provides argument vectors for `npm pack --ignore-scripts --json` and archive
25
+ installation. Run packing in its reported `cwd`, substitute the returned
26
+ `pack_result[0].filename`, and install the resulting archive. Normal local
27
+ installs also return their pre-copy plan. SDK callers can use
28
+ `planExtensionDirectoryCopy(source, destination, { maxEntries, maxDepth, signal })`
29
+ or `PmClient.packageInstall(source, { project: true, dryRun: true, copyPlan })`;
30
+ the defaults inspect at most 10,000 entries and 64 directory levels.
31
+ Strict MCP requests use `install`, `package-install`, or `extension-install`
32
+ with `target` or `github` and `dryRun: true`. Generic `package` and `extension`
33
+ requests also require `install: true` and a source when enabling `dryRun`.
34
+
35
+ ```bash
36
+ pm package install ./local-package --project --dry-run --json
37
+ npm pack --ignore-scripts --json
38
+ pm package install ./package-name-1.0.0.tgz --project
39
+ ```
40
+
41
+ Run the last two commands in the reported packing directory and substitute the
42
+ actual archive filename. Packing applies the package's publish file selection;
43
+ inspect that selection when a package needs generated assets at runtime.
44
+ A plan is an observation, not a reservation: source files can change before
45
+ the actual copy. Normal install verification remains authoritative.
46
+
47
+ The SDK adds optional `copyPlan` controls and a typed optional
48
+ `details.install_plan`. Custom result constructors that previously placed an
49
+ unrelated value under that key must migrate to the declared plan type. Other
50
+ extension detail fields retain their open record contract.
51
+
52
+ The install-plan regression has a reproducible source-mutation control:
53
+
54
+ ```bash
55
+ node scripts/release/package-install-plan-control.mjs
56
+ node scripts/release/package-install-plan-control.mjs --negative-control
57
+ ```
58
+
59
+ The baseline exits zero. The negative control changes only a disposable source
60
+ copy to report a complete entry-limited scan, then runs the same real filesystem
61
+ test and exits one. The linked control test requires both outcomes; the checkout
62
+ and project tracker are never mutated by the control.
63
+
64
+ Claim receipts and update coverage have matching baseline/mutant controls:
65
+
66
+ ```bash
67
+ node scripts/release/lifecycle-evidence-control.mjs
68
+ node scripts/release/lifecycle-evidence-control.mjs --negative-control
69
+ node scripts/release/lifecycle-evidence-control.mjs --update-coverage
70
+ node scripts/release/lifecycle-evidence-control.mjs --update-coverage --negative-control
71
+ ```
72
+
73
+ Each baseline exits zero and each unsafe mutant exits one. The claim mutant
74
+ disables compact MCP envelopes; the update mutant falsely reports full coverage
75
+ for a skipped source. The linked test executes all four outcomes against real
76
+ SDK behavior in disposable source copies.
77
+
78
+ ## Update verification
79
+
80
+ Update coverage describes checks actually completed. `checked` entries alone
81
+ contribute to known update counts; `skipped_unmanaged`, `skipped_non_github`,
82
+ `failed`, and `not_checked` remain distinct in `update_check_status_totals`.
83
+ Any actionable gap makes update coverage partial, even when no update is known.
84
+ Adoption records provenance but does not establish upstream freshness for local
85
+ or npm sources. Expected host-owned built-ins remain exempt from unmanaged
86
+ adoption warnings and adoption remediation. Runtime activation health and update freshness are separate
87
+ verdicts; inspect both before claiming that installed packages are current.
88
+
89
+ Use `pm package doctor --project --detail deep --json` to inspect activation
90
+ alongside update-check status totals. A strict doctor run may fail for partial
91
+ update coverage even when activation succeeds. Empty scopes and applicable
92
+ host-owned built-ins do not require third-party upstream checks.
@@ -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,14 @@ 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.
63
65
  - [Mutation Integrity](MUTATION_INTEGRITY.md) - shared CLI/SDK/MCP author, secret, append-only disposition, and stale-work guardrails.
64
66
  - [Agent Provenance ADR Amendment](AGENT_PROVENANCE_ADR.md) - extensible model, effort, role, and host provenance with privacy and compatibility boundaries.
65
67
  - [SDK Agent Session and Episode Context](SDK_AGENT_SESSION_CONTEXT.md) - inherited role/topic context, cross-process episode identity, and deterministic history grouping.
66
68
  - [SDK Agent Environments](AGENT_ENVIRONMENTS.md) - calibrated observations, total verdicts, isolated episodes, and an executable public-SDK environment.
67
69
  - [Improvement Ledger and History Analytics](IMPROVEMENT_ANALYTICS.md) - audited quantitative observations, live provenance coverage, and bounded observational fleet outcomes.
68
70
  - [Project Assurance Primitives](ASSURANCE.md) - SDK-owned measurements, assertions, lifecycle gates, cost receipts, and durable verdict history shared by CLI and MCP.
71
+ - [Planning Measurements](PLANNING_MEASUREMENTS.md) - lifecycle coverage, set-membership aggregation, and derived deadline constraints.
69
72
  - [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
73
  - [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
74
  - [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.
package/docs/RELEASING.md CHANGED
@@ -99,6 +99,7 @@ Policy:
99
99
  manifest changed by version substitution alone, and only the generated
100
100
  changelog heading changed. Any other path or content still fails closed
101
101
  - `CHANGELOG.md` is generated by the latest npm `pm-changelog` package (`pm install npm:pm-changelog --project`, then `pm changelog generate --mode replace --all-release-tags`) from closed tracker items across git release tag windows and checked in CI; do not edit it by hand
102
+ - Release preparation passes `--date-from-version` with the target calendar version so the generated heading already has its UTC release date before the tag exists. This keeps the preparation commit consistent with canonical post-tag generation and the normal `main` changelog check.
102
103
  - protected-branch pushes require `RELEASE_PAT`; Auto Release fails fast before the expensive release gates when `push=true`, `dry_run=false`, and that secret is not configured
103
104
  - release reliability gating requires `SENTRY_PERSONAL_ADMIN_TOKEN` for issue-threshold checks; Auto Release fails before creating the version commit/tag when the token is missing and `push=true`, while sourcemap upload remains optional through `SENTRY_AUTH_TOKEN`
104
105
  - after creating and pushing a new tag, auto-release waits for the tag-push `.github/workflows/release.yml` run to finish instead of dispatching a second publish workflow
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
@@ -108,6 +117,20 @@ Use focused runs while iterating, then run coverage before closure when risk or
108
117
 
109
118
  ## CI Retry and Timeout Diagnostics
110
119
 
120
+ Platform regressions from [pm-hrhfgi](../.agents/pm/issues/pm-hrhfgi.toon) and
121
+ [pm-zk67yf](../.agents/pm/issues/pm-zk67yf.toon) have portable negative controls.
122
+ Complete source scans process at most 32 item files per batch; the descriptor
123
+ pressure fixture fails unbounded reads while requiring genuine permission
124
+ failures to remain visible. The 10,000-item aggregation fixture separately
125
+ verifies completeness before pagination. Git fixtures that assert exact bytes
126
+ declare repository-local `core.autocrlf=false` and `core.eol=lf` so host defaults
127
+ cannot change the restoration target. Send generated shell scripts through
128
+ stdin (`bash -s`) so their size cannot exceed Windows command-line limits.
129
+ Runtime compaction is tested through a
130
+ real directory alias as well as its physical path, including original source
131
+ mapping and repeated-compaction byte stability. These tests run in the full
132
+ suite on the Nightly Validation platform matrix.
133
+
111
134
  CI retains the 30-second per-test timeout and retries one failed attempt. A
112
135
  test that passes only on retry is reported as flaky rather than silently folded
113
136
  into the pass count; a persistent assertion still fails after the bounded
@@ -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 |
@@ -11,7 +11,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
11
11
  - Uncovered error codes: 346
12
12
  - Coverage fraction: 0.052055
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 |
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.6"
9
+ "version": "2026.9.8"
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.6",
16
+ "version": "2026.9.8",
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.6",
3
+ "version": "2026.9.8",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.9.6",
3
+ "version": "2026.9.8",
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.6",
3
+ "version": "2026.9.8",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for calendar and agenda views.",