@unbrained/pm-cli 2026.5.24 → 2026.5.28

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 (246) hide show
  1. package/CHANGELOG.md +953 -522
  2. package/README.md +2 -10
  3. package/dist/cli/bootstrap-args.d.ts +18 -1
  4. package/dist/cli/bootstrap-args.js +143 -3
  5. package/dist/cli/bootstrap-args.js.map +1 -1
  6. package/dist/cli/commander-usage.js +134 -11
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/append.js +4 -3
  9. package/dist/cli/commands/append.js.map +1 -1
  10. package/dist/cli/commands/claim.js +5 -4
  11. package/dist/cli/commands/claim.js.map +1 -1
  12. package/dist/cli/commands/close.d.ts +3 -0
  13. package/dist/cli/commands/close.js +26 -3
  14. package/dist/cli/commands/close.js.map +1 -1
  15. package/dist/cli/commands/completion.d.ts +2 -2
  16. package/dist/cli/commands/completion.js +109 -56
  17. package/dist/cli/commands/completion.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +1 -1
  19. package/dist/cli/commands/config.js +82 -4
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/create.js +7 -272
  22. package/dist/cli/commands/create.js.map +1 -1
  23. package/dist/cli/commands/delete.js +4 -3
  24. package/dist/cli/commands/delete.js.map +1 -1
  25. package/dist/cli/commands/docs.d.ts +1 -12
  26. package/dist/cli/commands/docs.js +8 -312
  27. package/dist/cli/commands/docs.js.map +1 -1
  28. package/dist/cli/commands/extension/bundled-catalog.d.ts +14 -0
  29. package/dist/cli/commands/extension/bundled-catalog.js +268 -0
  30. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -0
  31. package/dist/cli/commands/extension/doctor.d.ts +31 -0
  32. package/dist/cli/commands/extension/doctor.js +345 -0
  33. package/dist/cli/commands/extension/doctor.js.map +1 -0
  34. package/dist/cli/commands/extension/install-sources.d.ts +37 -0
  35. package/dist/cli/commands/extension/install-sources.js +384 -0
  36. package/dist/cli/commands/extension/install-sources.js.map +1 -0
  37. package/dist/cli/commands/extension/managed-state.d.ts +48 -0
  38. package/dist/cli/commands/extension/managed-state.js +172 -0
  39. package/dist/cli/commands/extension/managed-state.js.map +1 -0
  40. package/dist/cli/commands/extension/scaffold.d.ts +14 -0
  41. package/dist/cli/commands/extension/scaffold.js +202 -0
  42. package/dist/cli/commands/extension/scaffold.js.map +1 -0
  43. package/dist/cli/commands/extension/shared.d.ts +14 -0
  44. package/dist/cli/commands/extension/shared.js +106 -0
  45. package/dist/cli/commands/extension/shared.js.map +1 -0
  46. package/dist/cli/commands/extension.d.ts +36 -68
  47. package/dist/cli/commands/extension.js +143 -1422
  48. package/dist/cli/commands/extension.js.map +1 -1
  49. package/dist/cli/commands/files.d.ts +1 -12
  50. package/dist/cli/commands/files.js +11 -308
  51. package/dist/cli/commands/files.js.map +1 -1
  52. package/dist/cli/commands/get.js +4 -3
  53. package/dist/cli/commands/get.js.map +1 -1
  54. package/dist/cli/commands/health.js +17 -3
  55. package/dist/cli/commands/health.js.map +1 -1
  56. package/dist/cli/commands/history-redact.js +23 -18
  57. package/dist/cli/commands/history-redact.js.map +1 -1
  58. package/dist/cli/commands/history-repair.js +24 -18
  59. package/dist/cli/commands/history-repair.js.map +1 -1
  60. package/dist/cli/commands/legacy-none-tokens.d.ts +3 -0
  61. package/dist/cli/commands/legacy-none-tokens.js +39 -0
  62. package/dist/cli/commands/legacy-none-tokens.js.map +1 -0
  63. package/dist/cli/commands/linked-artifacts.d.ts +96 -0
  64. package/dist/cli/commands/linked-artifacts.js +335 -0
  65. package/dist/cli/commands/linked-artifacts.js.map +1 -0
  66. package/dist/cli/commands/linked-test-parsers.d.ts +28 -0
  67. package/dist/cli/commands/linked-test-parsers.js +192 -0
  68. package/dist/cli/commands/linked-test-parsers.js.map +1 -0
  69. package/dist/cli/commands/list.js +19 -5
  70. package/dist/cli/commands/list.js.map +1 -1
  71. package/dist/cli/commands/normalize.js +4 -3
  72. package/dist/cli/commands/normalize.js.map +1 -1
  73. package/dist/cli/commands/plan.d.ts +5 -0
  74. package/dist/cli/commands/plan.js +56 -8
  75. package/dist/cli/commands/plan.js.map +1 -1
  76. package/dist/cli/commands/recurrence-parsers.d.ts +26 -0
  77. package/dist/cli/commands/recurrence-parsers.js +98 -0
  78. package/dist/cli/commands/recurrence-parsers.js.map +1 -0
  79. package/dist/cli/commands/restore.js +19 -8
  80. package/dist/cli/commands/restore.js.map +1 -1
  81. package/dist/cli/commands/search.js +5 -8
  82. package/dist/cli/commands/search.js.map +1 -1
  83. package/dist/cli/commands/test/linked-command-detection.d.ts +37 -0
  84. package/dist/cli/commands/test/linked-command-detection.js +200 -0
  85. package/dist/cli/commands/test/linked-command-detection.js.map +1 -0
  86. package/dist/cli/commands/test.d.ts +1 -2
  87. package/dist/cli/commands/test.js +8 -350
  88. package/dist/cli/commands/test.js.map +1 -1
  89. package/dist/cli/commands/update-many.js +4 -3
  90. package/dist/cli/commands/update-many.js.map +1 -1
  91. package/dist/cli/commands/update.js +83 -356
  92. package/dist/cli/commands/update.js.map +1 -1
  93. package/dist/cli/commands/validate.js +32 -12
  94. package/dist/cli/commands/validate.js.map +1 -1
  95. package/dist/cli/error-guidance.d.ts +1 -0
  96. package/dist/cli/error-guidance.js +6 -2
  97. package/dist/cli/error-guidance.js.map +1 -1
  98. package/dist/cli/main.d.ts +11 -0
  99. package/dist/cli/main.js +76 -28
  100. package/dist/cli/main.js.map +1 -1
  101. package/dist/cli/register-list-query.d.ts +4 -1
  102. package/dist/cli/register-list-query.js +242 -203
  103. package/dist/cli/register-list-query.js.map +1 -1
  104. package/dist/cli/register-mutation.js +73 -11
  105. package/dist/cli/register-mutation.js.map +1 -1
  106. package/dist/cli/register-operations.js +3 -3
  107. package/dist/cli/register-operations.js.map +1 -1
  108. package/dist/cli/register-setup.js +12 -7
  109. package/dist/cli/register-setup.js.map +1 -1
  110. package/dist/cli/registration-helpers.js +3 -2
  111. package/dist/cli/registration-helpers.js.map +1 -1
  112. package/dist/cli.js +4 -3
  113. package/dist/cli.js.map +1 -1
  114. package/dist/core/config/positional-value.d.ts +44 -0
  115. package/dist/core/config/positional-value.js +109 -0
  116. package/dist/core/config/positional-value.js.map +1 -0
  117. package/dist/core/extensions/extension-capability-aliases.d.ts +14 -0
  118. package/dist/core/extensions/extension-capability-aliases.js +159 -0
  119. package/dist/core/extensions/extension-capability-aliases.js.map +1 -0
  120. package/dist/core/extensions/extension-hook-runtime.d.ts +13 -0
  121. package/dist/core/extensions/extension-hook-runtime.js +414 -0
  122. package/dist/core/extensions/extension-hook-runtime.js.map +1 -0
  123. package/dist/core/extensions/extension-policy.d.ts +69 -0
  124. package/dist/core/extensions/extension-policy.js +481 -0
  125. package/dist/core/extensions/extension-policy.js.map +1 -0
  126. package/dist/core/extensions/extension-registries.d.ts +8 -0
  127. package/dist/core/extensions/extension-registries.js +52 -0
  128. package/dist/core/extensions/extension-registries.js.map +1 -0
  129. package/dist/core/extensions/extension-runtime-helpers.d.ts +6 -0
  130. package/dist/core/extensions/extension-runtime-helpers.js +29 -0
  131. package/dist/core/extensions/extension-runtime-helpers.js.map +1 -0
  132. package/dist/core/extensions/extension-types.d.ts +13 -39
  133. package/dist/core/extensions/extension-types.js +34 -2
  134. package/dist/core/extensions/extension-types.js.map +1 -1
  135. package/dist/core/extensions/index.d.ts +7 -0
  136. package/dist/core/extensions/index.js +11 -2
  137. package/dist/core/extensions/index.js.map +1 -1
  138. package/dist/core/extensions/loader.d.ts +4 -22
  139. package/dist/core/extensions/loader.js +22 -1139
  140. package/dist/core/extensions/loader.js.map +1 -1
  141. package/dist/core/history/drift-scan.d.ts +11 -0
  142. package/dist/core/history/drift-scan.js +114 -32
  143. package/dist/core/history/drift-scan.js.map +1 -1
  144. package/dist/core/history/history-rewrite.d.ts +43 -0
  145. package/dist/core/history/history-rewrite.js +48 -0
  146. package/dist/core/history/history-rewrite.js.map +1 -0
  147. package/dist/core/history/history.js +5 -4
  148. package/dist/core/history/history.js.map +1 -1
  149. package/dist/core/history/replay.js +4 -3
  150. package/dist/core/history/replay.js.map +1 -1
  151. package/dist/core/item/item-record.d.ts +19 -0
  152. package/dist/core/item/item-record.js +24 -0
  153. package/dist/core/item/item-record.js.map +1 -0
  154. package/dist/core/output/mutation-projection.d.ts +31 -0
  155. package/dist/core/output/mutation-projection.js +103 -0
  156. package/dist/core/output/mutation-projection.js.map +1 -0
  157. package/dist/core/output/output.d.ts +2 -0
  158. package/dist/core/output/output.js +5 -3
  159. package/dist/core/output/output.js.map +1 -1
  160. package/dist/core/schema/runtime-schema.js +8 -38
  161. package/dist/core/schema/runtime-schema.js.map +1 -1
  162. package/dist/core/search/vector-stores.js +46 -9
  163. package/dist/core/search/vector-stores.js.map +1 -1
  164. package/dist/core/sentry/helpers.d.ts +1 -1
  165. package/dist/core/sentry/helpers.js +20 -3
  166. package/dist/core/sentry/helpers.js.map +1 -1
  167. package/dist/core/shared/command-types.d.ts +1 -0
  168. package/dist/core/shared/command-types.js +2 -2
  169. package/dist/core/shared/command-types.js.map +1 -1
  170. package/dist/core/shared/constants.d.ts +10 -1
  171. package/dist/core/shared/constants.js +56 -58
  172. package/dist/core/shared/constants.js.map +1 -1
  173. package/dist/core/shared/levenshtein.js +23 -7
  174. package/dist/core/shared/levenshtein.js.map +1 -1
  175. package/dist/core/shared/primitives.d.ts +23 -0
  176. package/dist/core/shared/primitives.js +39 -2
  177. package/dist/core/shared/primitives.js.map +1 -1
  178. package/dist/core/store/front-matter-cache.d.ts +16 -2
  179. package/dist/core/store/front-matter-cache.js +99 -33
  180. package/dist/core/store/front-matter-cache.js.map +1 -1
  181. package/dist/core/store/item-store.js +8 -73
  182. package/dist/core/store/item-store.js.map +1 -1
  183. package/dist/mcp/server.js +76 -28
  184. package/dist/mcp/server.js.map +1 -1
  185. package/dist/sdk/cli-contracts/enum-contracts.d.ts +20 -0
  186. package/dist/sdk/cli-contracts/enum-contracts.js +156 -0
  187. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -0
  188. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +14 -0
  189. package/dist/sdk/cli-contracts/tool-option-contracts.js +243 -0
  190. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -0
  191. package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +11 -0
  192. package/dist/sdk/cli-contracts/tool-parameter-tables.js +901 -0
  193. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -0
  194. package/dist/sdk/cli-contracts.d.ts +11 -33
  195. package/dist/sdk/cli-contracts.js +30 -1356
  196. package/dist/sdk/cli-contracts.js.map +1 -1
  197. package/dist/sdk/package-import-adapters.d.ts +74 -0
  198. package/dist/sdk/package-import-adapters.js +186 -0
  199. package/dist/sdk/package-import-adapters.js.map +1 -0
  200. package/dist/sdk/package-runtime-options.d.ts +26 -0
  201. package/dist/sdk/package-runtime-options.js +71 -0
  202. package/dist/sdk/package-runtime-options.js.map +1 -0
  203. package/dist/sdk/runtime.d.ts +2 -0
  204. package/dist/sdk/runtime.js +4 -2
  205. package/dist/sdk/runtime.js.map +1 -1
  206. package/docs/AGENT_GUIDE.md +6 -10
  207. package/docs/CLAUDE_CODE_PLUGIN.md +5 -28
  208. package/docs/CODEX_PLUGIN.md +5 -5
  209. package/docs/COMMANDS.md +19 -3
  210. package/docs/CONFIGURATION.md +15 -0
  211. package/docs/EXTENSIONS.md +4 -63
  212. package/docs/RELEASING.md +4 -4
  213. package/marketplace.json +7 -3
  214. package/package.json +9 -6
  215. package/packages/pm-beads/extensions/beads/index.js +2 -49
  216. package/packages/pm-beads/extensions/beads/index.ts +2 -54
  217. package/packages/pm-beads/extensions/beads/runtime-loader.js +86 -0
  218. package/packages/pm-beads/extensions/beads/runtime-loader.ts +88 -0
  219. package/packages/pm-beads/extensions/beads/runtime.js +26 -115
  220. package/packages/pm-beads/extensions/beads/runtime.ts +33 -132
  221. package/packages/pm-calendar/extensions/calendar/index.js +47 -2
  222. package/packages/pm-calendar/extensions/calendar/index.ts +52 -2
  223. package/packages/pm-calendar/extensions/calendar/runtime.js +1 -0
  224. package/packages/pm-calendar/extensions/calendar/runtime.ts +1 -0
  225. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +14 -41
  226. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +25 -41
  227. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +10 -50
  228. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +17 -50
  229. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +8 -40
  230. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +10 -40
  231. package/packages/pm-search-advanced/extensions/search-advanced/index.js +1 -1
  232. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +4 -37
  233. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +6 -37
  234. package/packages/pm-todos/extensions/todos/index.js +3 -50
  235. package/packages/pm-todos/extensions/todos/index.ts +3 -55
  236. package/packages/pm-todos/extensions/todos/runtime-loader.js +86 -0
  237. package/packages/pm-todos/extensions/todos/runtime-loader.ts +88 -0
  238. package/packages/pm-todos/extensions/todos/runtime.js +24 -117
  239. package/packages/pm-todos/extensions/todos/runtime.ts +32 -129
  240. package/plugins/pm-claude/README.md +2 -2
  241. package/plugins/pm-claude/commands/pm-planner.md +1 -15
  242. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +5 -2
  243. package/plugins/pm-claude/skills/pm-planner/SKILL.md +3 -21
  244. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +15 -6
  245. package/plugins/pm-codex/skills/pm-native/SKILL.md +1 -13
  246. package/PRD.md +0 -1734
package/CHANGELOG.md CHANGED
@@ -1,616 +1,1047 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project are documented in this file.
3
+ ## 2026.5.28 - 2026-05-28
4
4
 
5
- The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
+ ### Added
6
+
7
+ - Minor UX/correctness: test --add wording, dep-kind vocab, same-command did-you-mean, plan materialize, close inline resolution, scaffold defineExtension ([pm-fl0c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-fl0c.toon))
7
8
 
8
- ## [Unreleased]
9
+ ### Other
9
10
 
10
- ## [2026.5.24] - 2026-05-24
11
+ - Agent-UX footguns: create-type silent mistype + token-bloat in validate/search output ([pm-edge](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-edge.toon))
12
+
13
+ ## 2026.5.27 - 2026-05-27
11
14
 
12
15
  ### Added
13
- - Contract tests now assert that the `pm-changelog` install, generate, and stage steps remain in `run-release-pipeline.mjs`, and that the `Verify generated pm changelog` step (`pnpm changelog:pm:check`) remains in `release.yml`, preventing silent regression if the integration is removed.
14
- - **`pm schema add-type <Name>`** registers a config-driven custom item type into `.agents/pm/schema/types.json` (shape `{ "definitions": [...] }`) so agents can use `pm create <Name> "..."` for project-specific work categories without hand-editing settings (pm-e1va). Flags: `--description`, `--default-status`, `--folder`, repeatable `--alias`, plus `--author`/`--force` governance and `--json`. The command is an idempotent UPSERT keyed on the type name (case-insensitive, merges aliases, overrides supplied fields), refuses to redefine built-in types (Chore, Decision, Epic, Event, Feature, Issue, Meeting, Milestone, Plan, Reminder, Task), rejects aliases (or a new type name) that would collide with a built-in or another registered type so `pm create --type` never resolves ambiguously, and emits a machine envelope reporting the registered type and the file path.
15
- - `pm create` and `pm update` now accept named priority aliases (`critical`, `high`, `medium`, `low`, `minimal`) in addition to numeric `0..4`, with one shared validation message for bad values (pm-fuat / pm-5k2w).
16
- - Unknown package-owned commands such as `pm guide`, `pm templates`, `pm calendar`, and `pm cal` now include concrete first-party install hints instead of only reporting an unknown command (pm-fuat / pm-5k2w).
17
- - The templates package now ships starter templates (`bug`, `feature`, `spike`, `chore`) so `pm templates` has a useful catalog immediately after installation; user-saved templates still override builtins by name (pm-fuat / pm-ypqp).
18
- - `pm delete --dry-run` previews the item file that would be deleted without mutating item storage or history, giving the single-item destructive path the same preview affordance as broader maintenance commands (pm-tobi / pm-5k2w).
16
+
17
+ - Cut list/search latency: skip 4.9MB cache rewrite + drop bodies + onRead short-circuit ([pm-4r5t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-4r5t.toon))
18
+ - Bundle CLI with esbuild for sub-200ms startup ([pm-gt82](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gt82.toon))
19
+ - Add --no-changed-fields flag and compact MCP mutation output to drop the redundant changed\_fields array ([pm-ch59](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ch59.toon))
20
+ - Add pm config set positional value form and shorten the invalid config-key error ([pm-mf4j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-mf4j.toon))
19
21
 
20
22
  ### Changed
21
- - Extract shared `scanHistoryDrift` core function to `src/core/history/drift-scan.ts`; health and validate commands compose format-specific outputs from the single scan (pm-qsk8)
22
- - Extract `createLazyModule` helper to `src/core/shared/lazy-module.ts`; replace nullable-promise-cache boilerplate in 5 CLI registration files (pm-c98b)
23
- - Replace 70-line inline copy of `FRONT_MATTER_KEY_ORDER` in `shared-constants-errors.spec.ts` with structural sentinel-ordering and uniqueness assertions that catch real contract changes without needing a manual update (pm-8fx3)
24
- - Extract shared `resolveAuthor` mutation-author helper to `src/core/shared/author.ts`; eliminate 10+ identical copies across command files (pm-xh0y)
25
- - Extract shared `isPathWithinDirectory` path-containment helper to `src/core/fs/path-utils.ts`; deduplicate across manifest, loader, extension, files, and search modules (pm-dpzc)
26
- - Update npm devDependencies to latest minor/patch: `@sentry/cli` 3.4.3, `@toon-format/toon` 2.3.0, `@types/node` 25.9.1, `@vitest/coverage-v8` 4.1.7, `tsx` 4.22.3, `vitest` 4.1.7 (pm-a2g6)
27
- - The invalid-type error from `pm create`/`pm update` now appends a discoverable hint pointing agents at the new registration command: `To register a custom type, run: pm schema add-type "X" (writes .agents/pm/schema/types.json).` (pm-e1va).
28
- - Daily release automation now fails loudly when source, package, script, or workflow changes exist since the last tag but `CHANGELOG.md` has an empty `[Unreleased]` section. The JSON result includes `changelog_required_files` and a deterministic `release_changelog_required:source_or_package_changes_without_unreleased_entry` warning so agents can fix the release blocker without reading the full workflow log.
29
- - `pm init` now prints a concise default summary while preserving the full settings tree behind `--verbose`; `--json` output is unchanged for machine consumers (pm-fuat / pm-5k2w).
30
- - Rendered text help now hides pure snake_case duplicates of kebab-case long flags while keeping those aliases parse-functional and present in machine-readable contracts/completions (pm-fuat / pm-5k2w).
31
- - `pm gc` help now states that cache artifacts are deleted by default unless `--dry-run` is passed; the runtime default is unchanged for compatibility (pm-tobi / pm-5k2w).
32
- - Extract shared `isTerminalStatus`/`normalizeStatusForRegistry` helpers to `src/core/item/status.ts`; deduplicate runtime terminal-status checks across the `list`, `search`, `context`, `close`, and `dedupe-audit` commands while preserving registry-aware normalization with raw-value fallback (pm-i04b).
33
- - Extract shared recurrence `weekdayOrderIndex` helper to `src/types.ts`; deduplicate four identical copies across item serialization, `create`/`update` parsing, and calendar expansion (pm-max1).
34
- - Extract shared item-type definition normalizer to `src/core/item/item-type-definition.ts`; single-source name/folder/alias/required-field/option/command-option-policy normalization and dedupe-sort semantics across the runtime registry and settings persistence, with the only layer-specific divergence (strict vs pass-through policy-command resolution) injected via an adapter (pm-v798).
23
+
24
+ - Calendar: improve positional view UX \(PM-CLI-Z Sentry\) ([pm-nb68](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-nb68.toon))
25
+ - Improve unknown-option recovery with nearest, abbreviated, and cross-command flag suggestions plus list --sort aliases ([pm-8nyc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-8nyc.toon))
26
+ - Split large command files exceeding 2000 LOC ([pm-mbdu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-mbdu.toon))
27
+ - Deduplicate item/metadata to record widening casts behind a shared toItemRecord helper ([pm-p5if](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-p5if.toon))
35
28
 
36
29
  ### Fixed
37
- - **Recover 16 unreadable item files** caused by an upstream `@toon-format/toon` 2.3.0 round-trip bug: its strict decoder mis-parses a quoted scalar value containing a bracketed token immediately followed by a colon (e.g. `[Unreleased]:`, `[med]:`) as a `key`+bracket+colon array header and throws `Invalid array length`, even though the library's own encoder emits that form. `parseToonItemDocument` now decodes via `src/core/item/toon-decode.ts`, which tries strict first and, only after failure, retries strict decoding with scalar-value brackets escaped so duplicate-key, array-length, and other strict protections remain enforced. Affected items load again across `pm get`/`list`/`search` with no `item_list_item_read_failed` warnings (pm-iqgj).
38
30
 
39
- ## [2026.5.23] - 2026-05-23
31
+ - Fix nightly cross-platform reliability: macOS realpath in extension-command test and Windows .cmd spawn EINVAL ([pm-gf6f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-gf6f.toon))
32
+ - Repeated loose-mapped --tag flags silently keep only the last value \(agent-unfriendly\) ([pm-cf1u](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-cf1u.toon))
33
+ - Address pre-existing extension/SDK issues surfaced by PR \#69 review \(CodeRabbit\) ([pm-ll50](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ll50.toon))
34
+ - Surface extension command handler error messages instead of opaque extension\_command\_handler\_failed code ([pm-zwl7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-zwl7.toon))
35
+ - Fix Auto Release failure: build dist before pm-changelog generation runs ([pm-yf8t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-yf8t.toon))
40
36
 
41
- ### Fixed
42
- - **`pm update --blocked-by` now records a `blocked_by` dependency edge** (matching `pm create`), so `pm deps` reflects the blocker and "what is blocking me" answers are correct instead of returning an empty graph (pm-kyd6). `--unset blocked-by` removes the edge and re-pointing it replaces the stale edge, keeping the `blocked_by` scalar and the dependency graph consistent.
43
- - `pm test --add` now rejects unknown keys (e.g. `name=`) with an allowed-key list instead of silently storing the whole `key=value,...` string as the command, and accepts `cmd` as an alias for `command` (pm-fu5d B2).
44
- - `pm list --statuss` (and similar near-miss typos) now auto-corrects to `--status`: the `--status` filter was missing from the list flag contract that powers the never-block typo normalizer, so it alone could not be suggested/corrected (pm-fu5d U2).
45
- - Crash: `pm context`, `pm list`, and `pm aggregate` no longer throw `Cannot read properties of undefined (reading 'trim')` when a status filter resolves an undefined token (Sentry PM-CLI-R; `normalizeStatusToken` now type-guards its input).
46
- - Crash: keyword and hybrid `pm search` no longer throw `Cannot read properties of undefined (reading 'join')` on items without reminders/events/dependencies (Sentry PM-CLI-S; reminder/event corpus builders tolerate missing arrays).
47
- - Crash: global option resolution guards against Commander command objects lacking `optsWithGlobals` (Sentry PM-CLI-T).
48
- - `pm calendar --date <date>` no longer crashes.
37
+ ### Security
49
38
 
50
- ### Changed
51
- - **Performance: removed the `zod` dependency from the settings hot path.** `settings.json` is now validated by a dependency-free validator that mirrors the previous schema exactly (type checks, required/optional fields, integer/positive constraints, literal unions, unknown-key stripping, all-or-nothing failure). Importing the settings module dropped from ~157ms to ~14ms, cutting the single largest startup cost off **every** command: `pm --help` ~227ms→~140ms and `pm list` ~540ms→~340ms (~38% faster) on the maintainer machine. One fewer runtime dependency.
52
- - `pm update --status closed|canceled` now auto-routes to the close/cancel flow instead of erroring, so agents that conflate `update` and `close` are never blocked (the most frequent real CLI error in telemetry).
53
- - Semantic and hybrid `pm search` degrade gracefully to keyword retrieval, with a clear label, when no embedding model is reachable — they never block.
54
- - `pm close` now clears the stale active blocker (`blocked_by`/`blocked_reason` scalars and the matching `blocked_by` dependency edges) on terminal transition and annotates it via `closed_cleared_blocked_by:<id>:<blocker>`, so completed work stops surfacing in blockers views (pm-fu5d C4).
55
- - `pm close` under minimal governance (validate-close off) now emits an informational `closed_with_active_children:<id>:<children>` warning when closing a parent with open children — it still never blocks, but no longer silently orphans them (pm-fu5d C3).
56
- - Equal `--event` start/end timestamps are now treated as an instant event (end dropped) instead of being rejected; an end earlier than start is still rejected (pm-uzmf).
57
- - Improved agent read-path token efficiency across `get`/`list`/`context` outputs.
39
+ - Latest CLI quality, SDK, telemetry, search, and calendar remediation ([pm-rnpb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-rnpb.toon))
40
+ - Harden extension install against path traversal and fill missing health/validate MCP schema props ([pm-qhu4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qhu4.toon))
41
+ - Add audited history-stream redaction command ([pm-xk39](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-xk39.toon))
42
+
43
+ ### Other
44
+
45
+ - pm health takes 8s and reports ok:false due to blocking telemetry flush to unreachable endpoint ([pm-1lgy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-1lgy.toon))
46
+ - Manual real-world E2E dogfood of full pm CLI surface \(2026-05-27\) ([pm-gqx7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-gqx7.toon))
47
+ - Calendar + SDK + vector-search + docs review \(2026-05-27\) ([pm-a0w4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-a0w4.toon))
48
+ - Code-quality & dead/duplicate code audit \(2026-05-27\) ([pm-jvbt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-jvbt.toon))
49
+ - Keep large modules maintainable via barrel re-export splits + explicit uncovered allowlist ([pm-3cbk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-3cbk.toon))
50
+ - CI/CD + test-suite performance: in-process CLI runner and dedupe redundant matrix legs ([pm-7rlp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-7rlp.toon))
51
+ - Bump @sentry/node 10.53.1 to 10.54.0 ([pm-0g2p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-0g2p.toon))
52
+ - Dedupe history-redact + history-repair lock+ownership scaffolding ([pm-kbm9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-kbm9.toon))
53
+ - Agent-UX combined PR: compact mutation output \(pm-ch59\) + smarter unknown-flag recovery \(pm-8nyc\) ([pm-70mi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-70mi.toon))
54
+ - Harden read-then-lock window uniformly across history-redact/restore/history-repair ([pm-uer0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-uer0.toon))
55
+ - Create native Codex plugin for pm CLI ([pm-0c9q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0c9q.toon))
56
+ - Unify plugin/MCP naming: pm-cli-claude→pm-claude, pm-cli-codex→pm-codex, pm-cli-native MCP→pm-mcp, packages @unbrained/pm-package-X→@unbrained/pm-X ([pm-ash0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ash0.toon))
57
+ - Dogfood 2026-05-20 low-severity CLI polish backlog \(config UX, init verbosity, help alias bloat, default-safety, doc/validator drift\) ([pm-5k2w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-5k2w.toon))
58
+ - Docs hygiene: stop shipping PRD.md in npm package, dedupe PRD<-\>docs, slim CHANGELOG, reconcile marketplace.json ([pm-rjgh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-rjgh.toon))
59
+ - Single-source extension capability and policy-surface contract lists ([pm-w98k](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-w98k.toon))
60
+ - Single-source Codex plugin docs tool surface ([pm-d97r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-d97r.toon))
61
+ - Single-source extension governance policy defaults ([pm-axd1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-axd1.toon))
62
+ - Single-source guide-shell routing snippets across docs ([pm-48vd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-48vd.toon))
63
+ - Single-source Plan workflow examples across plugin docs ([pm-3y56](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-3y56.toon))
64
+ - Single-source extension manifest and policy examples in docs ([pm-2awd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2awd.toon))
65
+ - Single-source Claude plugin capability inventory docs ([pm-0d0q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-0d0q.toon))
66
+ - Deduplicate Beads and Todos package adapter runtimes ([pm-ybfj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ybfj.toon))
67
+ - Deduplicate bundled package runtime option parsing helpers ([pm-y5u0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-y5u0.toon))
68
+ - Code dedup: extract shared CLI parser blocks and consolidate item-record casts ([pm-why9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-why9.toon))
69
+ - Deduplicate files/docs linked-resource command implementations ([pm-jzf4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-jzf4.toon))
70
+ - Deduplicate Claude and Codex plugin MCP wrappers and smoke flows ([pm-js0r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-js0r.toon))
71
+ - Extract shared legacy settings test fixtures ([pm-ibyi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ibyi.toon))
72
+ - Extract reusable semantic HTTP mock fixtures ([pm-gvk2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-gvk2.toon))
73
+ - Deduplicate beads/todos index.ts package-runtime loader \(install-safe mechanism needed\) ([pm-wwa7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-wwa7.toon))
74
+ - Generate full historical CHANGELOG.md through pm-changelog ([pm-afl9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-afl9.toon))
75
+ - Verify and repair pm-changelog-generated main CHANGELOG release alignment ([pm-5baq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5baq.toon))
76
+ - Handle concurrent project package installs without EEXIST ([pm-hw6z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hw6z.toon))
77
+ - pm-changelog generator silently drops items the bundled @unbrained/pm-cli SDK cannot read ([pm-hybj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hybj.toon))
78
+
79
+ ## 2026.5.24 - 2026-05-24
58
80
 
59
81
  ### Added
60
- - `--event duration=<relative>` (e.g. `duration=2h`, `duration=+1d`) on `pm create`/`pm update` derives the event end from start; mutually exclusive with an explicit `end`. A zero-length duration collapses to an instant event, matching the equal start/end behaviour (pm-uzmf / pm-fu5d CAL1).
61
- - `pm package` / `pm extension --list` as an alias for `--explore` (pm-fu5d U3).
62
- - `pm search --mode semantic|hybrid` emits `search_<mode>_degraded:no_vector_matches:results_are_lexical` when vector ranking contributes no hits, so agents can tell results are effectively lexical even though the reported mode stays semantic/hybrid (pm-fu5d S1).
63
- - `pm create` emits an `event_without_schedule:<id>:no_time_set` warning for Event-type items created with no schedule, so schedule-less Events that never appear on the calendar are surfaced at creation (never blocks) (pm-uzmf).
64
- - `pm create <type> <title>` positional form and close-via-update auto-routing for agent ergonomics.
65
- - **`pm history-repair <id>`** — a first-class, audited command that re-anchors a drifted history chain so `pm health` / `pm validate --check-history-drift` return ok. It deterministically replays the stream, recomputes every before/after hash, repairs legacy patch ops that no longer strictly apply (`replace`→`add` on first-write paths; skips unresolvable array-shape ops), reconciles the latest hash with the on-disk item document, and appends an auditable `history_repair` marker. It never modifies item content, supports `--dry-run`/`--author`/`--message`/`--force` with the same ownership/lock governance as `history-redact`, and is a safe no-op on a clean stream. Exposed via the CLI, the MCP `history-repair` action, SDK contracts, and shell completions. This is the missing peer to `history-redact` (which only re-anchors a chain when a redaction match occurs), so cleanly-drifted legacy streams could never be repaired before.
66
82
 
67
- ### Changed (history)
68
- - Consolidated the duplicated history replay/patch mechanics shared by `history`, `restore`, `history-redact`, and `history-repair` into a single `src/core/history/replay.ts` module (`ReplayDocument`, `replayHash`, `normalizeReplayPatch*`, `toReplayDocument`, `tryApplyReplayPatch`, `verifyHistoryChain`, `reanchorHistoryEntries`). Each command keeps its own thin error-formatting wrapper to preserve exact CLI error contracts. No behavior change.
69
-
70
- ## [2026.5.18] - 2026-05-18
83
+ - Dogfood 2026-05-21 follow-ups: test --add key validation, semantic-fallback labeling, close active-children info, stale blocker on close ([pm-fu5d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-fu5d.toon))
84
+ - pm schema add-type CLI + invalid-type error hint \(pm-e1va\) ([pm-fy8o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-fy8o.toon))
85
+ - Config-driven custom item types: wire schema/types.json into runtime schema ([pm-e1va](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-e1va.toon))
71
86
 
72
87
  ### Changed
73
- - CI: split the serial `gates` job into a parallel matrix (`coverage`, `typecheck`, `static`, `compat`, `smokes`) all fanning out from the shared `build-foundation` dist artifact, and moved the slow Windows test job from push CI to nightly so it no longer dominates the push critical path. Reduces push critical path from ~10 min to ~5-6 min on the free-tier runners; Windows + macOS cross-platform coverage now runs daily in `nightly.yml` so regressions are still caught within 24h.
74
- - `pm package` / `pm extension` bare invocations now default to `--explore` instead of erroring on the required-action contract, matching the agent-friendly default used by `pm templates`.
75
- - `pm create` now defaults `--type` to the configurable `settings.governance.create_default_type` (falling back to `Task`) so the positional-title shortcut (`pm create "title"`) succeeds without forcing an explicit `--type` flag.
76
- - Telemetry `command_resolution` is now derived from the CLI exit code rather than the JSON output's `ok` field, so warning-but-exit-zero commands (`pm validate`, `pm health`) are no longer reported as failures in the telemetry KPI dashboards.
77
88
 
78
- ### Added
79
- - New `settings.governance.create_default_type` knob lets each workspace pick the default item type for the positional-title `pm create` shortcut.
89
+ - pm update --blocked-by does not create a pm deps graph edge ([pm-kyd6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-kyd6.toon))
90
+ - pm update/create --test shares the B2 silent key-corruption \(no cmd alias, no unknown-key rejection\) ([pm-swie](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-swie.toon))
91
+ - Agent UX: pm update --status closed, explicit semantic/hybrid search, and pm create <type\> <title\> must never block agents ([pm-j1v7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-j1v7.toon))
80
92
 
81
- ## [2026.5.14] - 2026-05-14
93
+ ### Fixed
82
94
 
83
- ### Added
84
- - Added shared `scripts/release/verify-published-release.mjs` and `pnpm release:verify-published` so maintainers and GitHub Actions run the same npm, `npx`, `bunx`, and GitHub Release verification logic.
85
- - Added installable first-party packages for calendar, templates, governance audit, guide shell, linked-test adapters, and advanced search workflows, with package catalog/list discovery and packed CLI smoke coverage.
95
+ - pm-changelog extension fails on large tracker JSON ([pm-bu50](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-bu50.toon))
96
+ - Calendar: pm cal <view\> --date crashes \(positional view + any flag\) ([pm-l292](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-l292.toon))
86
97
 
87
- ### Changed
88
- - Hardened daily release automation so empty `[Unreleased]` changelog content skips cleanly, generated release notes stay sourced from changelog plus pm evidence, and hosted Sentry severity thresholds match the current maintained baseline instead of blocking on known historical noise.
89
- - Continued the package-first refactor by moving optional workflows into bundled packages while keeping the bare CLI/SDK smaller and exposing runtime package actions through installed extension contracts.
90
- - Improved agent-facing command contracts, release gates, activity/audit flows, plugin launchers, and package runtime helper exports for more deterministic automation.
98
+ ### Removed
91
99
 
92
- ## [2026.5.12] - 2026-05-12
100
+ - Deduplicate item-store mutation and delete lifecycle setup ([pm-za3c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-za3c.toon))
101
+ - CLI ergonomics polish: concise init, help alias collapse, named priorities, package install hints, starter templates, delete dry-run ([pm-fuat](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-fuat.toon))
102
+ - Default-safety policy for destructive pm commands \(gc keeps delete-by-default; add pm delete --dry-run\) ([pm-tobi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-tobi.toon))
103
+ - Remove dead code: command-aware.ts module, 5 orphaned exported functions, unused undici dependency ([pm-b7do](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-b7do.toon))
93
104
 
94
- ### Changed
95
- - Added `pm install '*'` / `pm install all` to install all bundled first-party pm packages, including shell-expanded `pm install *`, and added typechecking for TypeScript-authored package sources.
96
- - Added `pm upgrade` for package-first maintenance, including dry-run planning, CLI/SDK npm self-upgrade, managed package refresh from recorded sources, SDK/MCP action contracts, and docs/help coverage.
97
- - Moved the Beads and Todo import/export bridges out of active project extension state so they are sourced from the first-party `packages/pm-beads` and `packages/pm-todos` package roots and installed on demand.
105
+ ### Security
98
106
 
99
- ## [2026.5.11] - 2026-05-11
107
+ - Deduplicate path containment helpers across package and extension code ([pm-dpzc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-dpzc.toon))
108
+ - Update npm dependencies: minor version bumps \(sentry/cli, toon, node types, vitest, tsx\) ([pm-a2g6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-a2g6.toon))
109
+
110
+ ### Other
111
+
112
+ - Release @unbrained/pm-cli 2026.5.24 ([pm-jpfc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-jpfc.toon))
113
+ - Recover 16 unreadable TOON item files: strict decoder mis-parses bracketed tokens followed by a colon inside quoted text fields ([pm-iqgj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-iqgj.toon))
114
+ - Deduplicate recurrence weekday ordering helper ([pm-max1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-max1.toon))
115
+ - Deduplicate item-type definition normalization across settings and registry ([pm-v798](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-v798.toon))
116
+ - Deduplicate runtime terminal-status checks across query commands ([pm-i04b](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-i04b.toon))
117
+ - Centralize audit ownership-conflict guidance ([pm-ols6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ols6.toon))
118
+ - Deduplicate comments, notes, and learnings command stacks ([pm-9y8q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-9y8q.toon))
119
+ - Deduplicate mutation author fallback resolution across commands ([pm-xh0y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-xh0y.toon))
120
+ - Deduplicate health and validate history-drift checks ([pm-qsk8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-qsk8.toon))
121
+ - Deduplicate lazy dynamic-import cache boilerplate in CLI registration ([pm-c98b](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-c98b.toon))
122
+ - Deduplicate front-matter key-order contract literals in tests ([pm-8fx3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-8fx3.toon))
123
+ - Install and validate pm-changelog package ([pm-7811](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7811.toon))
124
+ - Linked test sandbox cleanup can fail with ENOTEMPTY ([pm-u43m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-u43m.toon))
125
+ - Extract shared direct CLI spawn helper for integration tests ([pm-401l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-401l.toon))
126
+ - Extract shared JSON error-envelope test assertions ([pm-alqo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-alqo.toon))
127
+ - Extract shared temporary-directory lifecycle helpers for tests ([pm-7tug](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-7tug.toon))
128
+ - Extract shared test item factories for command specs ([pm-eltf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-eltf.toon))
129
+ - Extract shared extension fixture writer for tests ([pm-j15d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-j15d.toon))
130
+ - Deduplicate templates package runtime and legacy command implementation ([pm-ypqp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ypqp.toon))
131
+ - Calendar agent ergonomics: equal start/end rejected; schedule-less Event items invisible ([pm-uzmf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-uzmf.toon))
132
+ - history-repair command + legacy drift cleanup + replay dedup ([pm-c3dx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-c3dx.toon))
133
+ - Auto daily release silently skips releasable commits when CHANGELOG \[Unreleased\] is empty ([pm-ot8r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ot8r.toon))
134
+ - Session 2026-05-23: agent-UX + deps-graph integrity batch \(multi-agent\) ([pm-uz25](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-uz25.toon))
135
+ - Deduplicate history, restore, and redaction replay helpers ([pm-pjs5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-pjs5.toon))
136
+ - pm plan: materialize creates dependency cycle; decision/discovery/validation flag mismatch; --steps all unsupported ([pm-6blp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-6blp.toon))
137
+ - pm validate: ok:false on warn-only checks + dumps every item ID per field ([pm-1nht](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-1nht.toon))
138
+
139
+ ## 2026.5.23 - 2026-05-23
100
140
 
101
141
  ### Added
102
- - Claude Code plugin v1.3.0: added `pm-triage-agent`, `pm-verification-agent`, and `pm-delivery-chain` subagents for full end-to-end pm workflow orchestration without leaving Claude Code.
103
- - Claude Code plugin: registered `pm` as the canonical marketplace ID so the plugin installs via `/plugin install pm-cli@pm` (both `pm` and `pm-cli` marketplace IDs resolve to the same plugin).
104
- - Claude Code plugin: rewrote session-start hook to use native `dist/pi/native.js` modules when available (repo checkout), falling back to `npx @unbrained/pm-cli` — no global `pm` CLI required.
105
142
 
106
- ## [2026.5.10] - 2026-05-10
143
+ - pm health output stays large even with --brief/--skip flags; add a true one-line summary mode ([pm-nbht](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-nbht.toon))
144
+ - Reduce default verbosity of pm activity/history CLI output and add a compact mode to pm history ([pm-3pbs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-3pbs.toon))
107
145
 
108
- ### Changed
109
- - Added top-level `ok` fields to `pm test --run --json` and `pm test-all --json` so agents can gate linked-test execution without parsing every result row.
110
- - Capped and truncated semantic reindex embedding payloads for local Ollama providers, with adaptive timeout splitting, to avoid full-corpus reindex failures on large item bodies.
146
+ ### Fixed
111
147
 
112
- ## [2026.5.6] - 2026-05-06
148
+ - Sentry PM-CLI-R/PM-CLI-S: undefined-status .trim and undefined-tags .join crashes \(fixed in HEAD, mark resolvedInNextRelease\) ([pm-d7us](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-d7us.toon))
113
149
 
114
- ### Changed
115
- - Hardened daily auto-release publishing so a newly pushed tag dispatches and waits for the tag-aware Release workflow, avoiding `GITHUB_TOKEN` push-trigger suppression.
116
- - Clarified GitHub-hosted Sentry issue-threshold gating so release uploads can use CI-scoped Sentry tokens while issue-read checks require `SENTRY_PERSONAL_ADMIN_TOKEN`.
117
- - Made the Release workflow retry-safe after partial publication by skipping `npm publish` when the target version already exists and by passing the explicit release tag to GitHub Release creation.
150
+ ### Security
118
151
 
119
- ### Fixed
120
- - Stabilized the linked-test timeout regression on Windows runners by keeping bounded-completion coverage while allowing slower process teardown.
121
- - Fixed telemetry queue flushing to preserve events appended while another flush is in flight on Windows runners.
152
+ - Harden secret-scan guardrail for GitHub token prefixes and local credential hygiene ([pm-h4zb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-h4zb.toon))
122
153
 
123
- ## [2026.5.5] - 2026-05-05
154
+ ### Other
124
155
 
125
- ### Added
126
- - Added mixed-frontmatter compatibility coverage to the release gate so previous-version `json_markdown` workspaces with YAML wrappers before JSON item data are migrated in a temp project before release.
127
- - Added `--repair` to bundled install scripts to clear stale global `pm` shims before reinstalling from the npm registry.
156
+ - Audited history-repair \(re-anchor\) command + clear legacy history drift so pm health is ok ([pm-85hm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-85hm.toon))
157
+ - pm create --blocked-by stores free-text metadata, not a dependency edge or blocked status \(agent-confusing\) ([pm-orrl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-orrl.toon))
158
+ - MCP pm\_comments returns full comment history \(no default limit\) token bloat on long-lived items ([pm-6vfg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-6vfg.toon))
159
+ - MCP pm\_run activity defaults to verbose raw history-patch dump \(token waste for agents\) ([pm-8jd3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-8jd3.toon))
160
+ - Dogfood 2026-05-20: CLI/agent-UX consistency fixes \(append text forms, scope errors, --list parity, command typo suggestions\) ([pm-atsv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-atsv.toon))
161
+ - MCP pm\_search defaults to full item bodies, blowing past agent token limits ([pm-qrxs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qrxs.toon))
128
162
 
129
- ### Changed
130
- - Hardened release post-publish verification so npm/npx/bunx checks run from a clean temp directory and fail the release workflow if package execution does not converge.
131
- - Hardened the daily auto-release pipeline so `.agents/pm`-only tracker commits are ignored for publish eligibility, preventing post-release tracker closure from creating a package-only release.
132
- - Hardened the Sentry/telemetry release gate so GitHub runners use portable token-based Sentry API checks instead of host-local wrappers, with clearer captured-output diagnostics on gate failures.
133
- - Documented npm registry installs as the supported global update path and added recovery guidance for broken git-sourced global installs.
163
+ ## 2026.5.18 - 2026-05-18
134
164
 
135
- ### Fixed
136
- - Fixed item-format migration to ignore leading YAML wrappers before JSON front matter, continue past unreadable item files with deterministic warnings, and avoid writing `item_format` settings before migration completes.
165
+ ### Added
137
166
 
138
- ## [2026.5.4] - 2026-05-04
167
+ - Add pm plan list subcommand or did-you-mean to pm list --type Plan ([pm-zpa5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zpa5.toon))
168
+ - pm list should default to --brief \(full output via --full\) to halve token cost ([pm-b7sd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-b7sd.toon))
169
+ - Add agent-optimized pm plan command with linked dependencies ([pm-v7dj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-v7dj.toon))
170
+ - Add built-in Plan item type and storage/search integration ([pm-jauk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-jauk.toon))
171
+ - Drastically improve GitHub runner time and resource usage \(free-tier only\) ([pm-tzwy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-tzwy.toon))
172
+ - Add pm init checks for AGENTS/CLAUDE pm workflow guidance ([pm-7t04](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7t04.toon))
173
+ - Add dependency mutation command for existing items ([pm-zdec](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-zdec.toon))
174
+ - Narrow contracts --command output by default and add projection modes ([pm-xlzl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xlzl.toon))
175
+ - Add dependency visualization command \(pm deps\) ([pm-x85o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-x85o.toon))
176
+ - Add extension project scaffold command or template ([pm-wsui](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-wsui.toon))
177
+ - Add governance normalize command with dry-run and apply modes ([pm-vi2v](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-vi2v.toon))
178
+ - Add scoped audit override mode for pm update metadata mutations ([pm-umhv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-umhv.toon))
179
+ - Pi wrapper action parity: add completion action ([pm-oqe0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-oqe0.toon))
180
+ - Add files discovery subcommand for referenced paths ([pm-n2ts](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-n2ts.toon))
181
+ - Implement governance query controls from 2026-04-06 issue report ([pm-jqgc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-jqgc.toon))
182
+ - Add definition-of-done config baseline ([pm-jdt8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-jdt8.toon))
183
+ - Add dependency-cycle diagnostics to pm validate lifecycle checks ([pm-i4ef](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-i4ef.toon))
184
+ - M5 roadmap: Pi agent extension advanced ergonomics ([pm-hbc1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-hbc1.toon))
185
+ - Add list-draft command parity for draft status ([pm-ex1y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ex1y.toon))
186
+ - Add calendar --full-period option and clarify period boundary wording ([pm-euh6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-euh6.toon))
187
+ - Issue2 Feature: Run-level env controls and shared-host-safe flags ([pm-ec5o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ec5o.toon))
188
+ - Extend pm validate with low-signal metadata quality checks ([pm-dw5s](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-dw5s.toon))
189
+ - Comments shorthand compatibility and docs parity ([pm-cvwi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-cvwi.toon))
190
+ - Add deterministic linked-test replacement mode for update test mutations ([pm-bjpo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bjpo.toon))
191
+ - Stability regressions and update/file UX guidance hardening ([pm-ap8l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ap8l.toon))
192
+ - Add package-first command aliases and pm install ([pm-9x1c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-9x1c.toon))
193
+ - Extend SDK contracts and Pi wrapper for extension lifecycle actions ([pm-9ajy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-9ajy.toon))
194
+ - Add reusable item templates for pm create ([pm-780f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-780f.toon))
195
+ - Add lazy dynamic tag completion with optional eager expansion ([pm-6qnu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-6qnu.toon))
196
+ - Add extension adopt workflow for unmanaged extensions ([pm-5dia](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5dia.toon))
197
+ - Wave 8/9: add test-all limit/offset blast-radius controls ([pm-5a4f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5a4f.toon))
198
+ - Add glob-based linked artifact additions for files/docs ([pm-3eu2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-3eu2.toon))
199
+ - Health vectorization status and targeted refresh ([pm-3ebr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-3ebr.toon))
200
+ - Extended schema fields v1.1 - parent, reviewer, risk, sprint, release ([pm-2p6q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2p6q.toon))
201
+ - Health optional directory strictness and compatibility ([pm-2i0i](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2i0i.toon))
202
+ - Repo restructure and module boundaries ([pm-2c8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2c8.toon))
203
+ - Agent integration and docs hardening for calendar/reminders ([pm-122q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-122q.toon))
204
+ - Add activity filtering and stream mode for large program automation ([pm-0g7a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0g7a.toon))
205
+ - Calendar parity integrations and release hardening ([pm-02gd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-02gd.toon))
206
+ - pm claim --if-available \(skip when held\) — reduce 533 ownership\_conflict events ([pm-d4bo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-d4bo.toon))
207
+ - pm get/show: did-you-mean suggestions for unknown IDs \(telemetry: 233 hits/30d\) ([pm-99x5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-99x5.toon))
208
+ - pm init footer + bundle calendar so cal/templates are discoverable ([pm-8wwl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-8wwl.toon))
209
+ - pm update with no fields should noop-succeed, not fail \(telemetry: 128 hits/30d\) ([pm-7cup](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7cup.toon))
210
+ - Auto-route pm update --status closed --close-reason to pm close \(telemetry: 248 hits/30d\) ([pm-12ib](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-12ib.toon))
211
+ - Add --with-packages flag to pm init for one-shot package install ([pm-hosd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-hosd.toon))
139
212
 
140
213
  ### Changed
141
- - Relaxed release workflow npx/bunx post-publish checks to emit warnings instead of hard-failing the pipeline when registry/executor convergence lags, while keeping npm publication metadata as a blocking verification gate.
142
214
 
143
- ## [2026.5.3-8] - 2026-05-03
215
+ - Implement atomic dependency replacement mode for pm update ([pm-tixl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-tixl.toon))
216
+ - Update completion and Pi wrapper for calendar/reminder support ([pm-qze9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qze9.toon))
217
+ - Align update body contracts completion and regressions ([pm-ha5a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ha5a.toon))
218
+ - Task: implement update close\_reason flag and reopen auto-clear ([pm-g8jp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-g8jp.toon))
219
+ - Update completion and Pi wrapper for event recurrence flags ([pm-5hbj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5hbj.toon))
220
+ - Pi wrapper all-fields create/update parity ([pm-096j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-096j.toon))
221
+ - Embedding timeout UX: improve ollama feedback for PM-CLI-A/9 ([pm-ibp7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ibp7.toon))
144
222
 
145
- ### Changed
146
- - Updated release workflow npx verification to run the explicit package binary command (`npx @unbrained/pm-cli@<version> pm --version`) to avoid npm exec binary resolution drift on GitHub-hosted runners.
223
+ ### Fixed
147
224
 
148
- ## [2026.5.3-7] - 2026-05-03
225
+ - pm test --add causes immediate history drift via null timeout\_seconds ([pm-er4q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-er4q.toon))
226
+ - Add regression coverage for pm init agent guidance workflows ([pm-0nia](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0nia.toon))
227
+ - Fix validate --check-files false-positive on linked project paths ([pm-m9tv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-m9tv.toon))
228
+ - Fix pm test run exit semantics for failed linked tests ([pm-c1bn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-c1bn.toon))
229
+ - MCP pm\_context crashes on caller-supplied projection flags \(compact/brief/fields/includeBody\) ([pm-xy02](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-xy02.toon))
230
+ - auto-release.yml workflow\_dispatch silently overrides explicit push=false to true ([pm-qa2h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qa2h.toon))
231
+ - pm install exits 0 on error \(CRITICAL agent-blocker\) ([pm-naiv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-naiv.toon))
232
+ - CLI silently corrupts --tags '\["a","b"\]' JSON-array input \(agent-unfriendly\) ([pm-klqo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-klqo.toon))
233
+ - pm bare command silent exit 0 — no help shown ([pm-8rj2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-8rj2.toon))
234
+ - Fix CSV status filter and multi-status support in pm list ([pm-ziv0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ziv0.toon))
235
+ - Fix TOON array-of-objects continuation lines double-indent ([pm-ps85](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ps85.toon))
236
+ - Fix: ENOENT lstat in extension path operations ([pm-bh13](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-bh13.toon))
237
+ - Fix: localeCompare on undefined in sort comparators ([pm-b9y1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-b9y1.toon))
238
+
239
+ ### Removed
240
+
241
+ - Remove session-based ownership model ([pm-5rh2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5rh2.toon))
242
+ - Implement pm delete command ([pm-4yl0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4yl0.toon))
243
+ - M1: Core command set init create get update append delete claim release close ([pm-06t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-06t.toon))
149
244
 
150
- ### Changed
151
- - Updated release post-publish verification commands to execute the package `pm` binary explicitly (`npm exec --package ... -- pm --version` and `bunx ... pm --version`) and parse terminal line output robustly.
245
+ ### Security
152
246
 
153
- ## [2026.5.3-6] - 2026-05-03
247
+ - 2026-05-02 Full PM CLI Audit: Build Fix, Security, Performance, Telemetry ([pm-nnhi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-nnhi.toon))
248
+
249
+ ### Other
250
+
251
+ - Opt CI JavaScript actions into Node 24 runtime ([pm-1lef](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-1lef.toon))
252
+ - Suppress benign extension\_service\_override\_collision when calendar+guide-shell both bundled ([pm-5u9z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-5u9z.toon))
253
+ - Accept positional title for pm plan create like pm create does ([pm-qbts](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qbts.toon))
254
+ - Accept pm init --yes alias for --defaults ([pm-lwbr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lwbr.toon))
255
+ - Dogfood + remediation session 13 \(2026-05-17\) ([pm-vmeo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-vmeo.toon))
256
+ - Clean project linked-file validation hygiene ([pm-xz1p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-xz1p.toon))
257
+ - Expose Plan workflow in SDK, MCP, plugins, docs, and dogfood ([pm-aqat](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-aqat.toon))
258
+ - Implement pm plan command family for agent harness workflows ([pm-ze5g](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ze5g.toon))
259
+ - CI: cache .agents/pm/search/lancedb + sentry release cache ([pm-n28v](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-n28v.toon))
260
+ - CI: cache vitest/.cache + tsbuildinfo for incremental builds + faster tests ([pm-1pah](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-1pah.toon))
261
+ - CI: skip non-source jobs on docs-only changes ([pm-iv1u](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-iv1u.toon))
262
+ - CI: split quality+smoke gates into a parallel job, share dist via artifact ([pm-27yz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-27yz.toon))
263
+ - Document pm init agent guidance context workflow ([pm-1265](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-1265.toon))
264
+ - Expose agent guidance init option in settings, contracts, help, and config ([pm-b8rf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-b8rf.toon))
265
+ - Wire pm init approval flow and declined guidance persistence ([pm-8rjn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8rjn.toon))
266
+ - Build idempotent AGENTS/CLAUDE pm guidance detector and writer ([pm-g2nd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-g2nd.toon))
267
+ - Implement Issue3 files stable-append mutation mode ([pm-xv39](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xv39.toon))
268
+ - GC safety ergonomics: dry-run and scoped cleanup ([pm-xrm7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xrm7.toon))
269
+ - Decouple optional package actions from static SDK contracts ([pm-wxxv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wxxv.toon))
270
+ - Issue3 Task: Contracts Pi docs and tests parity ([pm-wvr0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wvr0.toon))
271
+ - Implement comments-audit command with filters/latest ([pm-w1j3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-w1j3.toon))
272
+ - Implement PM-context parity mode and mismatch metadata for linked tests ([pm-vrsn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vrsn.toon))
273
+ - Implement Issue4 create progressive policy mode ([pm-v7aw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-v7aw.toon))
274
+ - Implement health optional-directory defaults and strict mode ([pm-t7xl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-t7xl.toon))
275
+ - Design full pm package manifest and resource model ([pm-t5ud](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-t5ud.toon))
276
+ - Implement extension help and contracts runtime integration ([pm-sucq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-sucq.toon))
277
+ - Configurable item types and required-option UX ([pm-r15d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-r15d.toon))
278
+ - M4: Keyword indexing and search command ([pm-pmd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pmd.toon))
279
+ - M2: RFC6902 patch generation per mutation ([pm-p9z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-p9z.toon))
280
+ - Implement background start paths and test-runs command surface ([pm-ormq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ormq.toon))
281
+ - PM CLI 2026-04-06 audit findings remediation ([pm-o7be](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-o7be.toon))
282
+ - Pi wrapper numeric scalar flag parity ([pm-ni7x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ni7x.toon))
283
+ - Implement Issue1 validate scan-mode and candidate totals ([pm-kshe](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-kshe.toon))
284
+ - Implement pm validate and --validate-close behavior ([pm-k6ml](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-k6ml.toon))
285
+ - Implement list parent filter and get guidance updates ([pm-jlsh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-jlsh.toon))
286
+ - M5: Built-in Pi tool wrapper extension ([pm-igv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-igv.toon))
287
+ - Implement list offset pagination and JSON stream mode ([pm-ice4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ice4.toon))
288
+ - Implement extension doctor summary/deep diagnostics command ([pm-hjrr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hjrr.toon))
289
+ - Implement and verify pm context command ([pm-f583](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-f583.toon))
290
+ - Pi wrapper workflow preset: close-task ([pm-ewoq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ewoq.toon))
291
+ - Align templates-save Pi contracts with supported CLI flags ([pm-eg0a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-eg0a.toon))
292
+ - Pi wrapper fallback path hardening ([pm-e6qb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-e6qb.toon))
293
+ - Full-scope SDK and extension platform upgrade for app/CI integrations ([pm-dhie](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-dhie.toon))
294
+ - Wave 8/9: non-interactive help paging safeguards and --no-pager ([pm-crk9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-crk9.toon))
295
+ - Implement pm notes and pm learnings command stack ([pm-c465](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-c465.toon))
296
+ - M5 roadmap: Pi tool wrapper packaging/distribution polish ([pm-bdz5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bdz5.toon))
297
+ - Execute Agent-First CLI UX v3 implementation ([pm-b21u](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-b21u.toon))
298
+ - Implement fail-on-skipped policy and linked-test assertions ([pm-au2z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-au2z.toon))
299
+ - External follow-up: reduce tracked-all orphaned noise from PM internals ([pm-a228](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-a228.toon))
300
+ - Implement Issue5 comments audit append path ([pm-8k10](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8k10.toon))
301
+ - Docs, contracts, and verification sweep for external audit follow-up ([pm-64f1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-64f1.toon))
302
+ - Implement config list/export command actions ([pm-5lmj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5lmj.toon))
303
+ - Implement pm dedupe-audit command modes and merge suggestions ([pm-4n1a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4n1a.toon))
304
+ - Sync contracts/completion/Pi for background test-run surfaces ([pm-4moz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4moz.toon))
305
+ - M4 follow-up: exact-title lexical boost for deterministic search ranking ([pm-4iga](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4iga.toon))
306
+ - Issue3 Task: Default-on validate command reference check ([pm-2ajr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2ajr.toon))
307
+ - Implement search argument and projection mode changes ([pm-0nxf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0nxf.toon))
308
+ - pm install <invalid\> lacks did-you-mean for built-in aliases ([pm-uuee](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-uuee.toon))
309
+ - pm validate after fresh create is scary — downgrade default profile noise ([pm-tylj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-tylj.toon))
310
+ - pm contracts default returns 286 KB / 9612 lines — token catastrophe for agents ([pm-p8j6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-p8j6.toon))
311
+ - CI: smaller matrix on PRs, full matrix on main push only ([pm-lkd7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-lkd7.toon))
312
+ - Investigate validate/health telemetry classification \(71-74% failure rate\) ([pm-bzx3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-bzx3.toon))
313
+ - Telemetry queue tmp file orphan cleanup \(83MB stale\) ([pm-nhka](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-nhka.toon))
314
+ - Stop listing provided --flag as missing in error recovery bundle ([pm-ixi1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ixi1.toon))
315
+ - Default project scope for files/docs/tests and simplify scope UX ([pm-ntnf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ntnf.toon))
316
+ - CI: combine pnpm test + pnpm test:coverage into single coverage run ([pm-hpjd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hpjd.toon))
317
+ - MCP pm\_list defaults to compact projection for agents ([pm-2cqx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-2cqx.toon))
318
+ - MCP pm\_update --comment string crashes with 'values.map is not a function' ([pm-qeu1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qeu1.toon))
319
+ - Cache item body in metadata cache for fast keyword search ([pm-jw36](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-jw36.toon))
320
+ - pm install writes absolute-home-path into tracked .managed-extensions.json ([pm-u83w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-u83w.toon))
321
+ - Smoke test after audit ([pm-xmsn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xmsn.toon))
322
+ - Implement pm guide docs and skills modernization ([pm-4z9m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4z9m.toon))
323
+ - Perf: pm health takes 2.5s due to vectorization check ([pm-tibg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-tibg.toon))
324
+ - Sentry extension errors: cannot find module and activate failures ([pm-p7av](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-p7av.toon))
325
+ - 2026-05-03 latest PM CLI dogfood audit ([pm-jrjt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-jrjt.toon))
326
+ - Merge Dependabot PRs: dev+prod deps and pnpm/action-setup ([pm-2723](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2723.toon))
327
+ - Accept positional title argument in pm create ([pm-7vm9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-7vm9.toon))
328
+ - Release @unbrained/pm-cli after 2026.5.12 ([pm-dc5d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-dc5d.toon))
329
+
330
+ ## 2026.5.14 - 2026-05-14
154
331
 
155
- ### Changed
156
- - Added npm/npx/bunx propagation retries to release publication verification so post-publish checks wait for registry availability instead of failing immediately on transient 404 windows.
332
+ ### Added
157
333
 
158
- ## [2026.5.3-5] - 2026-05-03
334
+ - Publish package gallery and marketplace metadata ([pm-2b3l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2b3l.toon))
335
+ - Add reusable package-first temp-project dogfood script ([pm-8l7d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-8l7d.toon))
159
336
 
160
337
  ### Changed
161
- - Hardened release workflow reliability gating so Sentry threshold checks are skipped when the runner does not provide the `sentry` CLI binary, preventing false-negative publish blocks on GitHub-hosted runners.
162
338
 
163
- ## [2026.5.3-4] - 2026-05-03
164
-
165
- ### Changed
166
- - Relaxed tag release version policy guard in `.github/workflows/release.yml` to validate tag/version consistency without blocking same-day retry tags when a previous tag run failed before npm publication.
167
- - Hardened `scripts/release/run-release-pipeline.mjs` same-day retry version resolution so local retry cuts always advance beyond the currently checked-out package version when npm has not yet observed failed prior tags.
339
+ - Extract guide and completion UX into installable package ([pm-zjuv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zjuv.toon))
340
+ - Extract governance audit surfaces into installable package ([pm-ixt3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ixt3.toon))
341
+ - Define linked test runner package boundary ([pm-7xk5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7xk5.toon))
342
+ - Extract advanced search and vectorization into installable pm package ([pm-2rj1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2rj1.toon))
343
+ - Extract calendar UX into installable pm package ([pm-pznn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pznn.toon))
344
+ - Extract create templates into installable pm package ([pm-2fgn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2fgn.toon))
168
345
 
169
- ## [2026.5.3-3] - 2026-05-03
346
+ ### Other
170
347
 
171
- ### Fixed
172
- - Relaxed release compatibility health evaluation so compatibility gating only blocks on failing health checks, not warning-only health states, preventing false negatives on GitHub-hosted release runs.
348
+ - Simplify command inputs for setup-agnostic agent workflows ([pm-ej01](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ej01.toon))
349
+ - Sync package JS runtimes to public SDK surface ([pm-2t78](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-2t78.toon))
350
+ - Expose package runtime helpers through public SDK ([pm-hkql](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hkql.toon))
351
+ - Hybrid semantic reindex should emit bounded progress and deterministic JSON completion ([pm-6zqq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-6zqq.toon))
352
+ - Expose runtime command-path state in extension explore ([pm-5mua](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-5mua.toon))
353
+ - Migrate extension terminology to package-first docs and UX ([pm-lwun](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-lwun.toon))
173
354
 
174
- ## [2026.5.3-2] - 2026-05-03
355
+ ## 2026.5.12 - 2026-05-12
175
356
 
176
357
  ### Added
177
- - Added a scheduled auto-release workflow (`.github/workflows/auto-release.yml`) with one-release-per-UTC-day defaults, manual same-day override controls, and a shared release pipeline driver.
178
- - Added release automation scripts under `scripts/release/` for changelog promotion, strict static quality checks, temporary-project backward-compatibility validation, Sentry/telemetry threshold gating, unified release gate execution, and full local pipeline orchestration.
179
- - Added release automation contract coverage in `tests/integration/release-automation-contract.spec.ts`.
180
358
 
181
- ### Changed
182
- - Hardened CI, nightly, and release workflows with explicit static quality and compatibility migration gates.
183
- - Release workflow now verifies published package availability via npm, npx, and bunx, and verifies GitHub release metadata after publication.
184
- - Expanded release-readiness runtime checks to cover new release scripts, package commands, and auto-release workflow presence.
359
+ - Generalize pm package resources for project-management extensions ([pm-su6i](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-su6i.toon))
185
360
 
186
- ## [2026.5.3] - 2026-05-03
361
+ ### Other
187
362
 
188
- ### Added
189
- - Added progressive `pm context` depth, section, activity, staleness, and agenda controls so agents can request brief, standard, deep, or focused project snapshots without broad list scans.
190
- - Added detailed CLI telemetry error classification for failed command finishes, including normalized `error_code`, `error_category`, and exit-code metadata for telemetry and local OTLP spans.
191
- - Added regression coverage for bootstrap argument parsing, telemetry classification, Sentry helper filtering, migration gates, context output, and front-matter cache behavior.
363
+ - Run package-first CLI and SDK temp-project E2E ([pm-gy6w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gy6w.toon))
364
+ - Implement pm upgrade for CLI, SDK, and packages ([pm-bob2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bob2.toon))
365
+ - Suppress linked-test sandbox ENOENT seed races ([pm-kk4t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-kk4t.toon))
366
+ - Extract bundled import/export customizations into installable pm packages ([pm-hxp2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hxp2.toon))
367
+ - M5: Built-in todos import export extension ([pm-3s0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3s0.toon))
368
+ - M5: Built-in beads import extension ([pm-odt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-odt.toon))
369
+ - Classify barebone core boundary and package migration matrix ([pm-c933](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-c933.toon))
370
+ - Stop tracking runtime metadata cache ([pm-4det](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4det.toon))
192
371
 
193
- ### Changed
194
- - Decomposed `src/cli/main.ts` from ~5800 lines into modular command registration files: `register-setup.ts`, `register-list-query.ts`, `register-mutation.ts`, `register-operations.ts`, and shared `registration-helpers.ts`, reducing main.ts to ~2550 lines while preserving all command behavior and help text.
195
- - Centralized command argument parsing and command registration helpers to reduce CLI surface drift across help, contracts, completion, and runtime telemetry paths.
196
- - Centralized shared HTTP request handling for embeddings and vector-store providers, reducing duplicated semantic search transport logic.
197
- - Changed the built-in telemetry capture default from `max` to `redacted` so new installs preserve agent reliability diagnostics without sending local paths or personal identifiers by default.
198
- - Hardened CI, nightly, and release workflows around the sandboxed test harness and release readiness contracts while preserving the free GitHub Actions release path.
372
+ ## 2026.5.11 - 2026-05-11
199
373
 
200
374
  ### Fixed
201
- - Hardened Sentry filtering so expected handled CLI usage/validation errors are logged as structured usage signals without reopening Sentry exception groups, while unexpected failures still capture normally.
202
- - Hardened `pm normalize` closed-item backfill so it satisfies resolution metadata requirements without duplicating potentially sensitive `close_reason` text into new tracked fields.
203
375
 
204
- ### Performance
205
- - Added persistent on-disk front-matter cache (`src/core/store/front-matter-cache.ts`) for `listAllFrontMatter` operations, using mtime+size fingerprinting for incremental refresh and context-fingerprint-based invalidation when preferred format or schema changes. Warm `list-open` drops from full-scan to ~60ms for 636-item corpora.
376
+ - Fix Claude plugin smoke marketplace contract ([pm-sw92](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-sw92.toon))
206
377
 
207
- ### Security
208
- - Hardened telemetry and Sentry scrubbing so emails, private IPs, absolute local paths, bearer values, and inline credential assignments are redacted even when higher-detail telemetry capture is explicitly selected.
209
- - Redacted sensitive infrastructure details from tracked project metadata and kept production telemetry/Sentry release audit notes in the ignored private operations area.
378
+ ### Other
210
379
 
211
- ## [2026.5.2] - 2026-05-02
380
+ - Profile and optimize command startup latency ([pm-m4ov](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-m4ov.toon))
212
381
 
213
- ### Changed
214
- - Reworked the README and public docs into progressive, agent-oriented pages with GitHub-compatible links and `pm` tracker cross-references.
215
- - Hardened Sentry signal quality by suppressing expected handled `PmCliError` usage/validation failures while retaining unexpected exception capture.
216
- - Added optional token-gated Sentry release and sourcemap upload to the free GitHub release workflow so published CLI stack traces can resolve source context when Sentry credentials are configured.
217
- - Updated generated GitHub release notes so closed release-tagged `pm` evidence remains visible after the release item is completed.
382
+ ## 2026.5.10 - 2026-05-10
218
383
 
219
384
  ### Security
220
- - Kept private operations material out of public docs and package output; local production operations artifacts remain ignored by git.
221
385
 
222
- ## [2026.5.1-2] - 2026-05-01
386
+ - 2026-05-09 latest-build full pm CLI dogfood audit and remediation ([pm-m35h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-m35h.toon))
387
+
388
+ ## 2026.5.6 - 2026-05-06
223
389
 
224
390
  ### Fixed
225
- - Pinned direct runtime and development dependency ranges instead of publishing `latest` specifiers, including `undici@^8.1.0`, so installs are deterministic and GitHub Dependabot evaluates the manifest against a non-vulnerable patched range.
226
391
 
227
- ## [2026.5.1] - 2026-05-01
392
+ - GitHub \#21: document resilient global git-install recovery ([pm-drje](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-drje.toon))
393
+ - GitHub \#20: resilient mixed-frontmatter item-format migration ([pm-w5j7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-w5j7.toon))
228
394
 
229
- ### Fixed
230
- - Fixed first-mutation compatibility for trackers created by `@unbrained/pm-cli@2026.3.12`: legacy settings that omit `item_format` now auto-select the current default format and run the existing pre-mutation item-file migration instead of blocking writes, preserving existing items, linked artifacts, comments, close metadata, and history integrity.
231
- - Fixed npm package repository metadata so provenance publishing validates against the canonical `unbraind/pm-cli` GitHub source repository.
395
+ ### Other
396
+
397
+ - Release @unbrained/pm-cli after 2026.5.4 ([pm-0rjf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-0rjf.toon))
398
+
399
+ ## 2026.5.3-2 - 2026-05-04
400
+
401
+ ### Other
402
+
403
+ - Release @unbrained/pm-cli after 2026.5.2 ([pm-0qv7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-0qv7.toon))
404
+
405
+ ## 2026.5.3 - 2026-05-03
232
406
 
233
407
  ### Added
234
- - Added `scripts/generate-release-notes.mjs` and `pnpm release:notes` to generate GitHub release notes from `CHANGELOG.md` plus sanitized `pm` tracker metadata.
408
+
409
+ - Analyze persisted telemetry and add remote analysis skill ([pm-cakn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cakn.toon))
410
+ - Feature: Telemetry pipeline verified end-to-end ([pm-0kjv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-0kjv.toon))
235
411
 
236
412
  ### Changed
237
- - Release workflow now checks out full git history for tag discovery, uploads generated release-note artifacts, and publishes the generated `CHANGELOG.md` + `pm` tracker release body to GitHub Releases without requiring paid GitHub features.
413
+
414
+ - Code quality review - latest refactor surface ([pm-zk79](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zk79.toon))
415
+ - Code quality + architecture review with targeted tests ([pm-lvww](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lvww.toon))
416
+ - main.ts still has 4 extraction candidates \(~1325 lines\) ([pm-sh6o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-sh6o.toon))
417
+ - Duplicated parseLimit/parsePriority/parseType across 8+ command files ([pm-hb8t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hb8t.toon))
418
+ - UX: Telemetry shows 84 'No update flags provided' errors - improve guidance ([pm-sh4x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-sh4x.toon))
419
+
420
+ ### Fixed
421
+
422
+ - Fix Grafana RabbitMQ queue panel metric selector mismatch ([pm-r9ei](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-r9ei.toon))
423
+ - PmCliError events leaking to Sentry via captureConsoleIntegration ([pm-9iho](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-9iho.toon))
424
+
425
+ ### Security
426
+
427
+ - Security/privacy leakage gate - redact host/IP/token from tracked files ([pm-m0fh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-m0fh.toon))
428
+ - Pin GitHub Actions to immutable SHAs ([pm-hfny](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hfny.toon))
429
+ - Execute latest dogfood audit and targeted fixes ([pm-mm3h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mm3h.toon))
430
+ - Enhance check-secrets.mjs with private IP detection rule ([pm-daft](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-daft.toon))
431
+ - Chore: 2026-05-02 Phase 3 Audit - IP scrub, dogfood, analysis tooling ([pm-2326](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2326.toon))
432
+ - Issue: Private IP address in committed pm task files ([pm-xk8b](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-xk8b.toon))
433
+
434
+ ### Other
435
+
436
+ - Telemetry + Sentry analysis and remediation ([pm-xwl6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xwl6.toon))
437
+ - Calendar + agent output audit ([pm-wyvu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wyvu.toon))
438
+ - Blocker: telemetry endpoint returning HTTP 521 ([pm-ut35](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ut35.toon))
439
+ - SDK + extension platform audit and ergonomics ([pm-lvea](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lvea.toon))
440
+ - Dogfood full E2E lifecycle in temp sandbox ([pm-g4zb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-g4zb.toon))
441
+ - Dogfood lifecycle matrix in temp project ([pm-cu50](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cu50.toon))
442
+ - Search + Calendar + SDK deep validation ([pm-937o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-937o.toon))
443
+ - Search/vector/auto-indexing deep audit \(critical path\) ([pm-4u2e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4u2e.toon))
444
+ - 2026-05-03 Full PM CLI Re-Audit \(Live Cycle\) ([pm-476d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-476d.toon))
445
+ - CI/CD + telemetry/Sentry client re-audit ([pm-44hv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-44hv.toon))
446
+ - Live remote infra + Sentry SaaS analysis ([pm-2o82](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2o82.toon))
447
+ - CI/CD hardening sweep - workflows + release scripts ([pm-0kd4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0kd4.toon))
448
+ - Validate UUID fields at telemetry ingestion boundary ([pm-vhdc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-vhdc.toon))
449
+ - Execute telemetry + observability rollout implementation ([pm-ny6y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ny6y.toon))
450
+ - Decision: Re-audit final verification and system health summary ([pm-tdo5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-tdo5.toon))
451
+ - 2026-05-02 Comprehensive PM CLI Audit \(v2026.5.2\) ([pm-5zkg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-5zkg.toon))
452
+ - Performance baseline: list-open reads all 636 items front-matter on every invocation ([pm-f6wr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-f6wr.toon))
453
+ - main.ts exceeds 5000+ lines - assess decomposition into per-command registration modules ([pm-6c3h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-6c3h.toon))
454
+ - Decision: v2026.5.2 Audit Results - System Healthy ([pm-dmam](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-dmam.toon))
455
+ - Code duplication: toErrorMessage and toNonEmptyString across 5+ files ([pm-540l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-540l.toon))
456
+ - CI: make package test scripts sandbox-first ([pm-swja](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-swja.toon))
457
+ - Extract shared HTTP fetch/timeout/error patterns from providers.ts and vector-stores.ts ([pm-p0p1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-p0p1.toon))
458
+ - 2026-04-26 comprehensive dogfood audit stabilization ([pm-mb4n](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mb4n.toon))
459
+ - Project tracker validation hygiene warnings remain ([pm-e0b5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-e0b5.toon))
460
+ - 2026-05-01 Full PM CLI Dogfood Audit v2 ([pm-2eb3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-2eb3.toon))
461
+
462
+ ## 2026.5.2 - 2026-05-02
238
463
 
239
464
  ### Added
240
- - Added `Decision` as a built-in item type with `decisions/` folder mapping, completion support, and stats coverage.
241
- - Added structured `close_through_update` error context with actionable `pm close` examples when users attempt `pm update --status closed`.
242
- - Added audit flag recommendations (`--allow-audit-update`, `--allow-audit-dep-update`, `--allow-audit-comment`) to ownership conflict error guidance as non-force alternatives.
243
- - Added lifecycle dependency-cycle diagnostics to `pm validate` with deterministic cycle counts/sample paths and configurable `--dependency-cycle-severity off|warn|error` policy.
244
- - Added extension scaffold lifecycle action (`pm extension --init`, alias `--scaffold`) that generates idempotent starter extension projects with manifest, entrypoint, and quick-start guidance.
245
- - Added `pm normalize` lifecycle metadata governance workflow with deterministic dry-run planning (default), explicit `--apply` mode, list-style filter targeting, and ownership-safe apply controls (`--allow-audit-update`, `--force`).
246
465
 
247
- ### Changed
248
- - Bumped `pnpm/action-setup` from v5 to v6 in all CI/release/nightly workflows (pnpm v11 support).
249
- - Bumped `softprops/action-gh-release` from v2 to v3 in release workflow (Node 24 runtime).
250
- - Bumped `undici`, `@types/node`, `@vitest/coverage-v8`, `vitest`, and `typescript` to latest.
251
- - Updated SDK/extension docs to explicitly cover `cli-contracts` public exports, capability contract constants, inline command flag schema capability requirements, and importer/exporter capability gating parity.
252
- - Clarified templates command name binding in help/docs (`pm templates save <name>`, `pm templates show <name>`), including explicit guidance that `--name` is unsupported.
253
- - Improved calendar usage guidance when `--full-period` is used with `--view agenda` by recommending `--from`/`--to` bounded windows in both runtime error text and help tips.
254
- - Improved calendar UX ergonomics by accepting `today` for `--date`/`--from`/`--to` boundaries and by adding explicit recurrence delimiter guidance for malformed `--event` CSV payloads.
255
- - Improved implicit Ollama hybrid search latency by bounding semantic timeout windows and emitting deterministic warning codes when auto-defaulted semantic execution falls back to keyword mode.
256
- - Improved extension doctor load diagnostics with targeted warning codes and remediation hints for missing `@unbrained/pm-cli` SDK dependency resolution and ESM module-mode mismatches.
257
- - Improved private diagnostics event segmentation by adding additive package/version and source-context metadata fields.
258
- - Improved `pm update-many` no-op validation guidance by listing actionable mutation flag examples when users provide filters/`--dry-run` without any mutation flags.
259
-
260
- - Added `pm files discover <ID>` to scan item text for existing project/global file paths, report addable vs already linked candidates, and optionally add missing linked files with `--apply`.
261
- - Added `pm create --comment` plain-text shorthand support so comment seeds can be passed as raw text without mandatory `text=<value>` wrappers.
262
- - Added ownership-safe dependency-only audit updates via `pm update --allow-audit-dep-update` / `--allow_audit_dep_update` for append-only non-owner `--dep` additions.
263
- - Added cache cleanup safety controls on `pm gc`: `--dry-run`, repeatable/comma-delimited `--scope index|embeddings|runtime`, and deterministic `guidance` output (including reindex hints after search-artifact cleanup).
264
- - Added linked-test PM-context ergonomics flags `--check-context` and `--auto-pm-context` for `pm test --run` and `pm test-all`, including preflight summary warnings and run-level execution-context metadata (`requested_pm_context_mode`, `auto_pm_context_applied`).
265
- - Added hardened background-run attribution fallback for `requested_by` in `pm test-runs` metadata: explicit author -> `PM_AUTHOR` -> settings author default -> `USER`/`LOGNAME`/`USERNAME` -> OS username -> `unknown`.
266
- - Added contract/completion alias parity improvements: `pm contracts` now publishes canonical flag + alias metadata for command surfaces, and generated completion scripts include accepted alias candidates from the shared contract registry.
267
- - Added extension lifecycle flag-forwarding parity so subcommand forms (`pm extension manage ...`, `pm extension doctor ...`) honor the same action flags as top-level action forms.
268
- - Added command-flag contract parity coverage for `pm contracts --flags-only` across core command families (`comments`, `notes`, `learnings`, `files`, `docs`, `history`, `config`, `restore`, `delete`, `extension`, `test-runs`, `validate`) plus action-scoped `command_flags` projection when filtering with `--action` and no explicit `--command`.
269
- - Added additive governance `summary` metrics to `pm comments-audit` output (`totals`, coverage ratio/percent, and `by_type`) while preserving existing export payloads.
270
- - Added append-only ownership-safe audit bypass parity for `pm notes` and `pm learnings` via `--allow-audit-comment`, including ownership-conflict guidance, completion surfaces, contracts, and Pi wrapper action mapping.
271
- - Added non-silent bare `pm test-runs` behavior so the root command defaults to list output when no subcommand is supplied.
272
- - Added refined linked-test PM-context mismatch diagnostics that explicitly explain per-test `pm_context_mode` override precedence over run-level `--pm-context` values.
273
- - Added `pm update --replace-deps` atomic dependency replacement mode so existing dependency sets can be replaced in one mutation/history entry.
274
- - Added ownership ergonomics enhancements: `pm release --allow-audit-release` for non-owner handoffs that only clear assignee metadata, plus `pm get` `claim_state` metadata with current assignee and latest claim/release history context.
275
- - Added `pm contracts --schema-only --action create` `x-create-required-options` metadata so machine consumers can resolve effective create required options per type and create mode.
276
- - Added managed background linked-test execution for `pm test --run --background` and `pm test-all --background`, including persistent run registry metadata, worker lifecycle orchestration, and duplicate-run fingerprint prevention.
277
- - Added `pm test-runs` lifecycle command surface (`list`, `status`, `logs`, `stop`, `resume`) for background run management with health/resource snapshots and tailed stdout/stderr inspection.
278
- - Added configurable test-result tracking policy at `settings.testing.record_results_to_items` with `pm config <project|global> get|set test-result-tracking --policy enabled|disabled`.
279
- - Added bounded deterministic item-level `test_runs` summary persistence (settings-gated) for `pm test --run` and `pm test-all`, including background-run propagation metadata.
280
- - Added bundled managed extension sources at `.agents/pm/extensions/beads` and `.agents/pm/extensions/todos`, each with manifest + runtime entrypoint wiring for extension-managed command registration.
281
- - Added bundled extension alias installs for `pm extension --install beads` and `pm extension --install todos` (with parity support for explicit local bundled paths).
282
- - Added unified command/action contract registry exports in `src/sdk/cli-contracts.ts` (including JSON Schema Draft 2020-12 tool-parameter contract) for cross-surface CLI + agent parity.
283
- - Added centralized command help narratives across core command paths (`Why use this command`, practical examples, and targeted tips) through a shared help composer.
284
- - Added structured CLI error guidance rendering for commander usage failures and runtime `PmCliError` failures with deterministic sections (`What happened`, `What is required`, `Why`, `Examples`, optional `Next steps`).
285
- - Added sparse default TOON rendering that emits command payloads directly and omits `null`/`undefined`/empty arrays/empty objects for token-efficient agent workflows while keeping `--json` payload compatibility.
286
- - Added strict action-scoped Pi tool parameter schema v4 in `src/sdk/cli-contracts.ts` (`oneOf` action branches with per-action required fields, richer per-field metadata, and `additionalProperties: false`).
287
- - Added machine-readable JSON error envelopes for usage/runtime failures when `--json` is active (`type`, `code`, `title`, `detail`, `required`, `exit_code`, optional remediation fields).
288
- - Added layered help defaults: compact command help by default plus explicit deep-help rendering with `--explain`.
289
- - Added machine-readable help payloads for `pm <command> --help --json` and `pm help <command> --json` with deterministic option metadata (`required`, aliases, value format).
290
- - Added `pm contracts` command for runtime contract introspection (`--action`, `--command`, `--schema-only`) including shared schema/action/flag surfaces.
291
- - Added merge-conflict marker detection in item and history parsing paths with actionable remediation guidance.
292
- - Added `pm health` `integrity` diagnostics for conflict markers and parse/JSONL anomalies with deterministic warning codes.
293
- - `list*` commands now accept `--include-body` to project item `body` into each returned row when needed for metadata completeness analysis.
294
- - Added `pm aggregate` grouped governance queries with expanded `--group-by` dimensions (`parent`, `type`, `priority`, `status`, `assignee`, `tags`, `sprint`, `release`) while keeping default grouped-count mode (`parent,type`) and optional `--count`/`--include-unparented`.
295
- - Added `pm dedupe-audit` duplicate corpus checks with `title_exact`, `title_fuzzy`, and `parent_scope` modes plus machine-readable merge suggestions.
296
- - Added list-family projection and ordering controls: `--compact`, `--fields <csv>`, `--sort <priority|deadline|updated_at|created_at|title|parent>`, and `--order <asc|desc>`.
297
- - Added expanded `pm comments-audit` governance filters: `--parent`, `--tag`, `--sprint`, `--release`, and `--priority`.
298
- - Added `pm health` vector refresh intent controls: `--check-only`, `--no-refresh`, and `--refresh-vectors` (default targeted refresh behavior is unchanged).
299
- - Added persistent item reminders via repeatable `--reminder at=<iso|relative>,text=<text>` support on `pm create` and `pm update` (including explicit `--clear-reminders` semantics).
300
- - Added `pm update --body` / `-b` support (including stdin token `--body -`) so existing items can backfill or replace body content with standard update history/lock semantics.
301
- - Added `pm calendar` (alias: `pm cal`) with deterministic `agenda` (default), `day`, `week`, and `month` views across deadlines and reminders, plus `--past` and range/filter options.
302
- - Added `pm context` (alias: `pm ctx`) as an agent-first project snapshot command that combines deterministic high-level/low-level active work focus with agenda/reminder context, including blocked fallback when active work is empty.
303
- - Added persistent item scheduled events via repeatable `--event` support on `pm create` and `pm update`, including one-off entries plus recurrence fields (`recur_freq`, `recur_interval`, `recur_count`, `recur_until`, `recur_by_weekday`, `recur_by_month_day`, `recur_exdates`) and explicit `--clear-events` semantics.
304
- - Added bounded recurring occurrence expansion to `pm calendar` so recurring item events are materialized into agenda/day/week/month windows.
305
- - Added calendar source and recurrence controls: `--include`, `--recurrence-lookahead-days`, `--recurrence-lookback-days`, and `--occurrence-limit`.
306
- - Added resilient entry parsing for mutation `--add` and create/update repeatable seed flags: CSV `key=value`, markdown-style `key: value`, and `-` stdin-token ingestion are now supported with deterministic normalization.
307
- - Added stdin token support for `pm append --body -` and structured comment ingestion for `pm comments --add` (plain text remains supported).
308
- - Added runtime-configurable item type registry support: `settings.item_types.definitions` plus extension `registerItemTypes(...)` registrations now drive allowed type values, aliases, per-type required create fields/repeatables, option schemas, and type folder routing.
309
- - Added calendar-native built-in item types: `Event`, `Reminder`, `Milestone`, and `Meeting` (with deterministic folder routing, completion defaults, and help/usage fallback guidance parity).
310
- - Added `--type-option` / `--type_option` support on `pm create` and `pm update` for validated per-type metadata (`key=value` or `key=<name>,value=<value>`, with explicit `--clear-type-options` semantics).
311
- - Added per-type `command_option_policies` support (settings + extension item-type registrations) for `create`/`update` option-level `required`, `enabled`, and `visible` behavior controls.
312
- - Added type-aware help policy sections for `pm create --help` / `pm update --help` when `--type <value>` is supplied, including required/disabled/hidden option summaries from active settings/extensions.
313
- - Added type-option schema surfacing in type-aware help (`pm create --help --type <value>` / `pm update --help --type <value>`) including required markers, allowed values, aliases, and option descriptions.
314
- - Added extension-first command routing for deterministic core-command replacement when extension handlers register matching command paths.
315
- - Added `pm extension` lifecycle management command with mutually-exclusive actions: `--install`, `--uninstall`, `--explore`, `--manage`, `--doctor`, `--adopt`, `--adopt-all`, `--activate`, and `--deactivate`.
316
- - Added extension install source normalization for local paths plus GitHub URL/shorthand forms (`https://github.com/...`, `github.com/...`, `--gh/--github owner/repo[/path]`) with optional `--ref` support.
317
- - Added scope-local managed extension state (`<extensions-root>/.managed-extensions.json`) with deterministic metadata for source, install/update timestamps, and GitHub update checks.
318
- - Added `pm extension --doctor` (and `pm extension doctor` shorthand) with consolidated extension diagnostics, normalized warning-code summaries, remediation hints, and optional deep diagnostics via `--detail deep`.
319
- - Added Extension Host V2 override planes: `registerParser` (command-context parsing), `registerPreflight` (mutation-gate/migration interception), and `registerService` (output/error/help plus lock/history/item-store service overrides) with deterministic last-wins precedence.
320
- - Added richer command lifecycle hook payload parity (`beforeCommand` / `afterCommand`) including command options, global options, and final command result context.
321
- - Added live runtime wiring for extension search/vector selectors (`settings.search.provider`, `settings.vector_store.adapter`) in `pm search` and `pm reindex`.
322
- - Added extension item-field default/validation wiring on create/update write paths from `registerItemFields(...)`.
323
- - Added stable SDK package exports at `@unbrained/pm-cli/sdk` with public extension type contracts and `defineExtension(...)` helper.
324
- - Added Ollama-aware semantic auto-default resolution for `pm search`/`pm reindex` when semantic settings are unset and local Ollama is installed, including compatibility-safe fallback to keyword mode for implicit default search when auto semantic execution fails.
325
- - Added `pm health` history drift diagnostics (`history_drift`) that detect missing/unreadable history streams and item/hash mismatches against latest history `after_hash`.
326
- - Added `pm health` vectorization diagnostics (`vectorization`) with targeted stale-ID semantic refresh and deterministic vectorization ledger tracking (`search/vectorization-status.json`).
327
- - Added configurable missing history-stream policy at `settings.history.missing_stream` with `pm config <project|global> get|set history-missing-stream-policy --policy auto_create|strict_error`.
328
- - Added configurable sprint/release format policy at `settings.validation.sprint_release_format` with `pm config <project|global> get|set sprint-release-format-policy --policy warn|strict_error`.
329
- - Added configurable parent-reference policy at `settings.validation.parent_reference` with `pm config <project|global> get|set parent-reference-policy --policy warn|strict_error`.
330
- - Added reusable create templates via `pm templates save/list/show` and additive `pm create --template` support with deterministic explicit-flag override precedence.
331
- - Added additive history diagnostics: `pm history --diff` (changed-field summaries) and `pm history --verify` (hash-chain/current-hash validation output).
332
- - Added linked artifact path hygiene features for `pm files` and `pm docs`: `--migrate`, `--validate-paths`, and `--audit` (plus `pm files --list` for explicit listing).
333
- - Added repeatable `--add-glob` support for `pm files` and `pm docs` to expand deterministic file/doc matches (plain glob or `pattern=<glob>,scope=<scope>,note=<text>` entries).
334
- - Added deterministic `--tag` completion suggestions in bash/zsh/fish scripts derived from tracked item metadata.
335
- - Added history-only restore recovery so `pm restore` can recreate missing/deleted item files when the corresponding history stream exists.
336
- - Added first-class `pm notes` and `pm learnings` commands with parity to `pm comments` (`<id> [text]`, `--add`, `--limit`, `--author`, `--message`, `--force`) including structured/stdin payload parsing.
337
- - Added command-surface parity updates for `notes`/`learnings` across help narratives, shell completion scripts, command-aware output summaries, and Pi wrapper action routing.
338
- - Added CLI/Pi shared contract parity for extension lifecycle actions (`extension-install`, `extension-uninstall`, `extension-explore`, `extension-manage`, `extension-doctor`, `extension-adopt`, `extension-adopt-all`, `extension-activate`, `extension-deactivate`) and their schema parameters (`target`, `scope`, `github`, `ref`).
339
- - Added integration regressions for repeated `pm files --add` / `pm docs --add` mutation flows to keep linked-artifact add workflows stable across subsequent command invocations.
340
- - Added transactional linked/log mutation support on `pm update` via repeatable `--comment`, `--note`, `--learning`, `--file`, `--test`, and `--doc` flags (including explicit `--clear-comments|--clear-notes|--clear-learnings|--clear-files|--clear-tests|--clear-docs` semantics) so metadata + linked surfaces can be updated in one mutation.
341
- - Added dependency mutation support on existing items through `pm update`: repeatable `--dep` add plus explicit `--clear-deps` semantics and repeatable `--dep-remove`/`--dep_remove` selector removals, with parity across help/completion/contracts/Pi wrapper surfaces.
342
- - Added read-only dependency visualization command `pm deps` with deterministic `tree` (default) and `graph` projections, including cycle-safe traversal and missing-node reporting.
343
- - Added `pm update --close-reason` / `--close_reason` support so callers can explicitly set `close_reason`, and clear it with `--unset close-reason`, without using `pm close`.
344
- - Added standalone `pm validate` command with deterministic check payloads for metadata completeness, closed-item resolution fields, linked-file/orphaned-file hygiene, and item/history drift.
345
- - Added metadata-profile validation policy controls (`core|strict|custom`) for `pm validate --check-metadata`, plus config surfaces `metadata-validation-profile` and `metadata-required-fields` for settings-backed required-field governance.
346
- - Added `pm validate --scan-mode default|tracked-all` for file-check candidate selection, including explicit `candidate_total`/`candidate_scanned` reporting while preserving compatibility fields.
347
- - Added `pm validate --scan-mode tracked-all-strict` plus structured file-check exclusion reporting (`excluded_by_reason`) so tracked coverage behavior is explicit and machine-readable.
348
- - Added explicit tracked-all-strict force-inclusion visibility in `pm validate` file-check details (`strict_mode_forces_pm_internals`, `strict_mode_forces_pm_internals_notice`) plus warning token `validate_files_tracked_all_strict_forces_pm_internals`.
349
- - Added `pm validate --strict-exit` (alias `--fail-on-warn`) to return non-zero exit (`1`) when validation warnings are present (`ok=false`).
350
- - Added `pm contracts --runtime-only` (alias `--active-only`) and runtime action availability metadata (`action_availability`) so machine callers can filter to invocable actions in current runtime conditions.
351
- - Added extension lifecycle adopt action (`pm extension --adopt`) to register existing unmanaged installs into managed state metadata without reinstalling extension files (with optional GitHub provenance via `--gh/--github` + `--ref`).
352
- - Added extension lifecycle bulk adopt action (`pm extension --adopt-all`) to register all unmanaged installs in selected scope into managed state metadata without reinstalling extension files.
353
- - Added extension triage update-health diagnostics (`update_health_coverage`, `update_health_partial`) and normalized warning-code surfacing (`warning_codes`, including `extension_update_health_partial_coverage`) for `pm extension --manage` / `pm extension --doctor`.
354
- - Added strict warning exit controls for extension diagnostics (`pm extension --doctor --strict-exit`, alias `--fail-on-warn`) plus machine-usable blocking-failure indicators (`blocking_failure_count`, `has_blocking_failures`).
355
- - Added explicit extension state semantics in extension listings/diagnostics (`active` compatibility alias, `enabled`, `runtime_active`, `activation_status`) so configured-vs-runtime status is unambiguous.
356
- - Added unknown capability guidance hardening: `extension_capability_unknown` warnings now include inline allowed capability lists and nearest-match suggestions when confidence is high, and health/doctor payloads include `capability_guidance` metadata.
357
- - Added health parity warning surfacing for extension update-check partial coverage (`extension_update_health_partial_coverage`) so `pm health` mirrors extension triage visibility when unmanaged loaded extensions reduce coverage.
358
- - Added extension capability contract metadata publishing for diagnostics consumers (`capability_contract.version`, `capability_contract.capabilities`, `capability_contract.legacy_aliases`) plus legacy alias guidance (`migration`/`validation` -> `schema`) in unknown-capability diagnostics.
359
- - Added extension diagnostics/runtime controls: `pm extension --doctor --detail deep --trace`, `pm extension --manage --runtime-probe`, and `--fix-managed-state` support for `manage`/`doctor`, with parity wiring across CLI contracts, shell completion, and Pi wrapper arguments.
360
- - Added `pm close --validate-close [warn|strict]` for additive close-time resolution-field validation (`resolution`, `expected_result`, `actual_result`) with warning-first default behavior.
361
- - Added `pm files --append-stable` for minimal-diff file-link appends that preserve existing link order and reduce history patch churn during large audits.
362
- - Added `pm create --create-mode strict|progressive` so strict remains default while governance workflows can use staged progressive creation.
363
- - Added `pm comments --allow-audit-comment` to permit append-only audit comments on items owned by other assignees without broad ownership override semantics.
364
- - Added `pm comments-audit` full-history export mode (`--full-history`) with mutually-exclusive latest controls, explicit export metadata (`filters.full_history`, `export.mode`, `export.row_count`), and NDJSON-friendly `rows[]` payload support.
365
- - Added ownership-safe non-owner metadata update mode on `pm update` via `--allow-audit-update` / `--allow_audit_update`, with explicit lifecycle/ownership/linkage guardrails.
366
- - Added `pm update-many` bulk mutation workflow with deterministic filter targeting, `--dry-run` planning, checkpoint capture, and `--rollback <checkpoint-id>` restore support.
367
- - Added `pm update-many` linked-array mutation parity with `pm update` (`--dep`, `--comment`, `--note`, `--learning`, `--file`, `--test`, `--doc`, `--reminder`, `--event`, `--clear-*`, `--replace-deps`, `--replace-tests`), including deterministic dry-run/apply actionability for linked-array payloads and command/contracts/completion/help parity updates.
368
- - Added task lifecycle alias commands: `pm start-task`, `pm pause-task`, and `pm close-task` for discoverable claim/update/close/release workflows.
369
- - Added `pm contracts` projection flags `--flags-only` and `--availability-only` for lightweight machine-readable output selection.
370
- - Added completion mode controls: `pm completion --eager-tags` for embedded tag expansion and hidden `pm completion-tags` helper command for default lazy tag lookup.
371
- - Added `pm calendar --full-period` for anchored day/week/month windows without now-clipping.
372
- - Added `pm activity` timeline filters (`--id`, `--op`, `--author`, `--from`, `--to`) and JSON line stream mode (`--stream [rows|ndjson|jsonl]`).
373
- - Added compatibility-safe extension manifest/command migration aids: legacy capability aliases (`migration`/`validation`) now remap to `schema` with `extension_capability_legacy_alias`, and legacy command-definition `handler` aliases map to `run` with `extension_command_definition_legacy_handler_alias`.
374
- - Added `--offset` pagination and JSON-only `--stream` output mode for `pm list` and all `pm list-*` command families to improve large-result processing ergonomics.
375
- - Added additive `pm health --strict-directories` behavior with required-vs-optional directory diagnostics (`missing_required`, `missing_optional`) so optional built-in item-type directory gaps do not fail default health runs.
376
- - Added strict warning exit controls for health diagnostics (`pm health --strict-exit`, alias `--fail-on-warn`) for CI-friendly non-zero health gating.
377
- - Added `pm config <project|global> list` and `pm config <project|global> export` for config-key discovery and one-shot resolved snapshot export.
378
- - Added explicit extension manage update-check reporting with per-extension `update_check_status` / `update_check_reason` fields and triage `update_check_status_totals`.
379
- - Added explicit `--progress` flag support to `pm test`, `pm test-all`, and `pm reindex` so non-interactive runs can opt into deterministic stderr progress visibility.
380
- - Added additive linked-test runtime environment controls: repeatable `--env-set` / `--env-clear` and `--shared-host-safe` on `pm test --run` and `pm test-all`.
381
- - Added per-linked-test runtime directives in linked test metadata (`env_set`, `env_clear`, `shared_host_safe`) for deterministic command-level execution control.
382
- - Added linked-test PM-context and strict-governance controls: `--pm-context schema|tracker|auto`, `--fail-on-context-mismatch`, `--fail-on-skipped`, `--fail-on-empty-test-run`, and `--require-assertions-for-pm` on `pm test --run` and `pm test-all`.
383
- - Added linked-test PM-context auto-routing (`--pm-context auto`) and per-linked-test context override metadata (`pm_context_mode=schema|tracker|auto`) for mixed-mode linked test execution.
384
- - Added linked-test assertion metadata support (`assert_stdout_contains`, `assert_stdout_regex`, `assert_stderr_contains`, `assert_stderr_regex`, `assert_stdout_min_lines`, `assert_json_field_equals`, `assert_json_field_gte`) with deterministic assertion-failure classification and per-run `execution_context` metadata in `run_results`.
385
- - Added structured linked-test failure classification in `run_results` (`failure_category`) and aggregated `failure_categories` totals in `pm test`/`pm test-all` results for triage (`infra_collision` vs `assertion_failure` and related categories).
386
- - Added standalone `pm validate` linked command-reference diagnostics (`command_references`) with default-on stale PM-id detection and dedicated warning token (`validate_command_references_stale_pm_ids:<count>`).
387
- - Added default-on resolution remediation command hints in `pm validate` details for missing resolution metadata (`resolution`, `expected_result`, `actual_result`).
388
- - Added unquoted multi-word query support for `pm search <keywords...>` so variadic tokens are normalized into one query string without requiring shell quoting.
389
- - Added `--parent <id>` filtering support to `pm list` and all `pm list-*` command families, with shared contract/completion/Pi wrapper parity.
390
- - Added `pm search` projection controls (`--compact`, `--full`, `--fields <csv>`) with deterministic projection metadata in result payloads.
391
- - Added extension command metadata surfacing (`action`, `intent`, `examples`, `failure_hints`, argument/flag descriptors) in dynamic `--help` text and `--help --json` payloads.
392
- - Added runtime extension command/action schema inclusion in `pm contracts` output (`extension_commands`, merged action availability/schema branches, extension-sourced command flag metadata).
466
+ - SDK: Export ItemFrontMatter and ItemDocument types ([pm-slul](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-slul.toon))
467
+ - Add vector dimension mismatch warning counter to LanceDB queries ([pm-k213](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-k213.toon))
468
+ - Performance: Parallelize listAllFrontMatter I/O ([pm-hiji](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-hiji.toon))
469
+ - Architecture: Decompose extension loader types ([pm-f9s0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-f9s0.toon))
470
+ - Performance: list/filter operations scan all 625+ item files on each invocation ([pm-cd2f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-cd2f.toon))
471
+ - Docs: Add practical SDK extension examples ([pm-7k9o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7k9o.toon))
472
+ - Code Quality: Extract shared primitives module ([pm-5na9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-5na9.toon))
473
+ - Agent UX: Add --brief output mode and context suggestions ([pm-32si](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-32si.toon))
474
+ - Feature: Telemetry Pipeline Audit - Fully Operational ([pm-jkip](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-jkip.toon))
475
+ - Agent-optimized documentation structure ([pm-r9gu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-r9gu.toon))
476
+ - Feature: Core commands verified - all 10 types and lifecycle ([pm-qwe2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-qwe2.toon))
477
+ - Feature: SDK & Extension System Audit - Comprehensive ([pm-qdha](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-qdha.toon))
478
+ - Feature: Extensibility architecture verified - governance, custom types, agent UX ([pm-oe33](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-oe33.toon))
479
+ - Feature: SDK exports complete with 78 public symbols ([pm-92s0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-92s0.toon))
480
+ - pm files --add bare path fails with misleading error \(scope implied required\) ([pm-8r2r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-8r2r.toon))
481
+ - Feature: Core Commands Audit - All Passing ([pm-7kiy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7kiy.toon))
482
+ - Feature: Calendar Subsystem Audit - All Passing ([pm-7k60](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7k60.toon))
483
+ - Feature: Calendar fully functional with recurrence expansion ([pm-409c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-409c.toon))
484
+ - Audit latest CLI, SDK, calendar, and telemetry workflows ([pm-3fti](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-3fti.toon))
485
+ - Add --compact mode to pm activity for agent-friendly condensed output ([pm-ne67](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ne67.toon))
393
486
 
394
487
  ### Changed
395
- - `settings.output.default_format` now drives default command rendering for `printResult`-based commands (without requiring explicit `--json`), while explicit per-command format decisions still take precedence.
396
- - `pm create --template <name>` now allows template-provided `type` defaults to satisfy create requirements when `--type` is omitted on the command line.
397
- - Relative time parsing now supports preset `now` and negative offsets (for example `-1d`) across shared ISO/relative parsing paths, restoring documented `pm activity --from/--to` behavior.
398
- - `pm list-open` now resolves against workflow-configured `open_status` values instead of assuming literal status `open`, so customized workflows (for example `triage`) are returned correctly.
399
- - Bundled `beads`/`todos` extension command help now includes discoverable option flags (`--file`, `--folder`, `--author`, `--message`, and related flags) after install, matching runtime-supported invocation surfaces.
400
- - Updated command-by-command documentation parity across `README.md`, `PRD.md`, `docs/ARCHITECTURE.md`, and `AGENTS.md` to reflect contracts projection behavior, `comments-audit` summary metrics, `notes`/`learnings` audit bypass parity, root `test-runs` list behavior, and PM-context mismatch guidance.
401
- - Removed the `pm install` command surface; extension lifecycle installs now flow through `pm extension` only.
402
- - `pm beads import`, `pm todos import`, and `pm todos export` are now extension-discovered command paths that appear only after corresponding bundled extensions are installed and active.
403
- - Commander option normalization, shell completion flag generation, and Pi wrapper action/schema/arg mapping now consume the shared command contract registry to reduce cross-surface drift.
404
- - Ownership-conflict guidance for `pm comments --add` now recommends `--allow-audit-comment` before `--force` for append-only audit workflows.
405
- - `pm search` now defaults to compact projection for both TOON and JSON output unless callers request `--full` or explicit `--fields`.
406
- - `pm get` missing-item guidance now uses deterministic recovery examples (`pm list-open --limit 20`, `pm search "<keyword>" --limit 10`) instead of echoing invalid IDs.
407
- - `pm help` and `pm help <command>` now exit successfully without trailing invalid-usage envelopes.
408
- - Runtime `PmCliError.context` fields (`required`, `why`, `examples`, `next_steps`, and optional code/type overrides) now flow through canonical text/JSON guidance rendering.
409
- - Top-level `--json` error handling now emits canonical machine-readable diagnostics instead of text-only guidance.
410
- - `pm history` malformed stream errors now include explicit repair/restore remediation guidance.
411
- - Extension schema-capability registrations now enforce stricter deterministic validation for `registerFlags`, `registerItemFields`, `registerItemTypes`, and `registerMigration` input shapes.
412
- - Commander error output now emits a single high-signal structured guidance payload (duplicate default commander stderr lines are suppressed).
413
- - `pm comments` now accepts optional positional text shorthand (`pm comments <ID> "<text>"`) as an intuitive alias for `--add <text>`, and tolerates bare `--author` by falling back to existing author resolution (`PM_AUTHOR` -> settings default -> `unknown`).
414
- - Default `list*` output remains front-matter-only; `body` projection is now explicit and opt-in via `--include-body` to preserve lightweight list payloads.
415
- - Calendar command output now defaults to markdown for agent/human readability while preserving explicit `--format toon|json|markdown` and global `--json` overrides; all other commands keep existing TOON-default behavior.
416
- - Calendar markdown summaries now include scheduled-event counts and event rendering includes recurring/location metadata where present.
417
- - `pm comments-audit` now treats `--latest 0` as a valid summary-only export mode with deterministic `export.row_count = 0` semantics.
418
- - `pm comments-audit --latest` and `--full-history` now enforce explicit mutual exclusivity in guidance/help output.
419
- - `pm contracts --command <name>` now scopes action/command/availability output to the selected command for lower-noise machine payloads; use no `--command` filter for full corpus output.
420
- - Mutation-triggered search cache invalidation now covers linked-test run-tracking paths (`pm test --run`, `pm test-all`) and lifecycle alias mutation flows.
421
- - Calendar JSON/markdown summaries now expose deterministic aggregate breakdowns (`by_kind`, `by_type`, `by_status`, `recurring_events`) and markdown event lines now include richer metadata tokens (item type, recurrence rule, end-time projection, timezone/location, and description context).
422
- - Command-aware output summaries now consume the canonical calendar `summary.events` structure (instead of stale `summary.total`) and emit richer calendar highlight metadata (`events`, `deadlines`, `reminders`, `scheduled`, `view`).
423
- - Mutation parsing errors for entry-style flags now include actionable format guidance and explicit stdin-token usage hints to reduce malformed-input retries.
424
- - `pm create` log-seed repeatables (`--comment`, `--note`, `--learning`) now reject parsed unsupported keys to prevent silent narrative truncation when unquoted comma segments resemble key/value tokens; guidance now explicitly routes punctuation-heavy text to quoted `text=...`, markdown key/value input, or stdin token usage.
425
- - Type validation/filtering/completion now resolve from the runtime registry across create/update/list/search/calendar/completion/init/health/storage paths while preserving built-in defaults when no custom type config exists.
426
- - Commander required-option UX for missing `--type` now includes rationale, active allowed values, and concrete fix examples.
427
- - Type-governed `pm create` required-option failures now aggregate all missing required create flags plus required type-option keys into one deterministic usage error payload and include a deterministic type-specific "next valid example" command.
428
- - Unavailable-command help requests (`pm <unknown> --help`) now emit explicit `unknown command` guidance and usage exit status (`2`) instead of successful help-path exits.
429
- - Dynamic extension command help now supports `registerFlags` policy metadata (`required`, `enabled`, `visible`) with additive markers and hidden-flag suppression.
430
- - Dynamic extension flags can now declare `type` / `value_type` metadata (`string`/`number`/`boolean`) for deterministic loose-option coercion on matching command paths.
431
- - Search and reindex semantic execution now supports extension provider/adapter primary paths with deterministic fallback to built-in provider/vector configuration when available.
432
- - `pm reindex --mode semantic|hybrid` now rewrites `search/vectorization-status.json` to keep health-time vector freshness checks synchronized with indexed corpus state.
433
- - `pm health` now includes managed extension-state diagnostics and warnings for project/global extension roots.
434
- - Documentation surfaces (`README.md`, `docs/EXTENSIONS.md`, `docs/ARCHITECTURE.md`, `PRD.md`) now include extension lifecycle-manager workflows and install-source equivalence guidance.
435
- - Date/deadline parsing now accepts month-relative offsets (`+6m`) and normalized date-string variants (for example `2026-03-31T13-59` and `20260331T135900Z`) across deadline, reminder, event, list/search filter, and calendar date inputs while preserving canonical ISO persistence.
436
- - `pm beads import --file -` now fails fast when stdin is an interactive TTY and returns explicit piped-input/EOF guidance instead of waiting for manual stream termination.
437
- - CLI top-level error handling now preserves canonical exit-code mapping via graceful `process.exitCode` semantics to reduce buffered output truncation risk in emulated terminal environments.
438
- - Output rendering now treats broken-pipe writes (`EPIPE`) as expected pipeline behavior with stream-specific exit semantics: stdout `EPIPE` preserves success exits for early-terminated read pipelines, stderr `EPIPE` remains non-zero, and unhandled Node stack traces are suppressed.
439
- - Linked test runtime execution now uses shell-compatible spawn orchestration, closes child stdin for non-interactive runs, emits interactive stderr heartbeat progress for long-running commands, and applies deterministic timeout/maxBuffer diagnostics with force-kill fallback for stubborn subprocess trees.
440
- - History-touching commands now enforce `settings.history.missing_stream` consistently across read/diagnostic paths (`history`, `activity`, `stats`, `health`) and existing-item mutation/restore flows.
441
- - Linked-test sandbox runs now seed project/global `settings.json` and `extensions/` directories into temporary sandbox roots so extension-defined type/filter behavior matches direct workspace commands.
442
- - `pm test --add` and `pm create --test` now require `command=...` for new linked-test entries (optional `path=...` is metadata-only); runtime still skips legacy stored path-only entries with deterministic diagnostics.
443
- - `pm update` now auto-clears stale `close_reason` when reopening items from `closed` to non-terminal statuses unless an explicit `--close-reason` value is provided in the same mutation.
444
- - `pm claim` now allows takeover of already-assigned non-terminal items without `--force`; force remains required for terminal-status or lock-override claim paths.
445
- - `pm comments` guidance is now explicit about `--force` usage across rich help, shell completion, and docs parity surfaces.
446
- - Ownership-conflict guidance now includes explicit approved `--force` scenarios (PM audits, coordinated metadata correction, and ownership handoff cleanup) while preserving ownership enforcement semantics.
447
- - `pm create`/`pm update` now validate `--sprint` and `--release` using a warning-first default (`warn`) with deterministic `validation_warning:*` signals, and optional strict rejection mode (`strict_error`) for enforcement.
448
- - `pm create`/`pm update` now validate missing `--parent` references using warning-first defaults (`validation_warning:parent_reference_missing:<id>`) with optional strict rejection mode (`strict_error`).
449
- - CLI contracts and Pi wrapper action/schema mapping now include additive `templates-*` actions, `create --template`, `history --diff/--verify`, and files/docs linked-path hygiene flags.
450
- - CLI contracts, shell completion, and Pi wrapper action/parameter mappings now include additive parity for `validate`, `close --validate-close`, list `--offset/--stream`, and long-run `--progress` controls.
451
- - `pm validate --check-files --scan-mode tracked-all` now excludes PM-internal storage files by default, adds `--include-pm-internals` for explicit internal-audit scans, and reports filtered/raw candidate counts (`candidate_total*`, `candidate_scanned*`, `pm_internal_excluded_count`); `tracked-all-strict` now also reports explicit force-inclusion visibility/warnings.
452
- - `pm extension --manage` and `pm health` extension diagnostics now include condensed `details.triage` summaries with prioritized counts and remediation-oriented next steps alongside full detailed payloads.
453
- - `pm extension --manage`/`pm extension --doctor` warning surfaces are now normalized so top-level `warnings` align with triage warning codes/counts, and update-health partial coverage warnings only trigger when unmanaged extensions are action-required.
454
- - `pm extension --manage` keeps compatibility-safe default runtime state reporting (`runtime_active`/`activation_status` unchanged) unless `--runtime-probe` is explicitly requested.
455
- - Extension activation validation failures now carry structured registration trace metadata that deep doctor trace mode can surface for actionable remediation.
456
- - CLI/contracts/completion/Pi wrapper parity now includes linked-test runtime env controls (`--env-set`, `--env-clear`, `--shared-host-safe`) and `pm validate --check-command-references`.
457
-
458
- ## [2026.3.12] - 2026-03-12
459
488
 
460
- ### Changed
489
+ - Update-many: improve error message when no mutation flags provided ([pm-twtu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-twtu.toon))
490
+ - Calendar: allow --full-period for agenda view or improve error message ([pm-8qpc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-8qpc.toon))
491
+
492
+ ### Fixed
493
+
494
+ - Telemetry: Fix queue bloat and move flush to background ([pm-sgko](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-sgko.toon))
495
+ - Search: Fix cosine similarity with L2 normalization ([pm-h2pi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-h2pi.toon))
496
+ - Telemetry queue oversized-event pruning not applied during flush phase \(regression\) ([pm-on3q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-on3q.toon))
497
+ - Fix integration test: health check list missing telemetry entry ([pm-hb6x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hb6x.toon))
498
+ - Issue: Telemetry queue bloat from oversized result\_summary payloads ([pm-ntr0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ntr0.toon))
461
499
 
462
- #### Release Versioning and Distribution
463
- - npm package identity switched to scoped publish target `@unbrained/pm-cli` to avoid naming collisions with existing unscoped packages while keeping the `pm` executable unchanged.
464
- - Versioning policy now follows calendar SemVer-compatible releases: `YYYY.M.D` for the first release of a day and `YYYY.M.D-N` for subsequent same-day releases (`N >= 2`).
465
- - Installer defaults now target `@unbrained/pm-cli` while preserving `PM_CLI_PACKAGE` override support for local/tarball smoke tests.
500
+ ### Removed
466
501
 
467
- #### CI/CD and Release Guardrails
468
- - Added automated version policy enforcement script (`scripts/release-version.mjs`) with tag/version consistency checks and registry-aware same-day release sequencing.
469
- - Added tracked-file credential leak scanner (`scripts/check-secrets.mjs`) and wired it into CI/release gates.
470
- - Added packaged `npx` smoke test (`scripts/smoke-npx-from-pack.mjs`) to verify tarball executability before release publish.
471
- - Release workflow now uses the GitHub `release` Environment, validates version sequencing before publish, and creates a GitHub Release with generated notes after npm publish.
502
+ - Remove 15 dead root-level facade re-export files ([pm-l9j6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-l9j6.toon))
503
+
504
+ ### Security
472
505
 
473
- #### CLI UX
474
- - `pm list` now excludes terminal statuses (`closed`, `canceled`) by default, showing only the active working-set of items. Use `pm list-all` to include all items regardless of status. This aligns with common CLI conventions (analogous to `docker ps` vs `docker ps -a`) and makes `pm list` the intuitive day-to-day view without having to type `pm list-open` or filter manually. `pm list-all` is unchanged and continues to return all items.
506
+ - 2026-05-02 Full PM CLI Audit Phase 2: Dead Code Removal, Security Enhancement, Sentry Optimization ([pm-kkmo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-kkmo.toon))
507
+ - Rewrite README and public documentation ([pm-1sb2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-1sb2.toon))
508
+ - Documentation overhaul and public docs safety ([pm-3042](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-3042.toon))
509
+ - Pin release dependency ranges for Dependabot hygiene ([pm-q71q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-q71q.toon))
510
+
511
+ ### Other
512
+
513
+ - Release @unbrained/pm-cli 2026.5.2 ([pm-5jw8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-5jw8.toon))
514
+ - 2026-05-02 Full Audit: All Systems Verified ([pm-ss8d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ss8d.toon))
515
+ - Lower Sentry tracesSampleRate from 1.0 to 0.2 for free plan quota ([pm-wvhs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wvhs.toon))
516
+ - 2026-05-01 Full PM CLI Audit Implementation ([pm-twpc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-twpc.toon))
517
+ - Telemetry queue timeout: 21 events stuck with flush timeout ([pm-sgmb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-sgmb.toon))
518
+ - 2026-05-02 Comprehensive PM CLI Audit ([pm-rrjv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-rrjv.toon))
519
+ - SDK: bundled extensions use internal imports instead of @unbrained/pm-cli/sdk ([pm-qfuq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qfuq.toon))
520
+ - Sentry CLI token needs broader scopes for issue analysis ([pm-q4jp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-q4jp.toon))
521
+ - Dead code: root-level facade re-export shims unused ([pm-nr8k](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-nr8k.toon))
522
+ - Decision: 2026-05-02 Comprehensive Audit Results ([pm-mve5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-mve5.toon))
523
+ - Telemetry: Backfill legacy source\_context ([pm-dqer](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-dqer.toon))
524
+ - Telemetry: Create Grafana dashboard ([pm-6js7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-6js7.toon))
525
+ - Docs: Create telemetry stack runbook ([pm-2lbp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2lbp.toon))
526
+ - Verify remote telemetry stack receives events and data flows to \[redacted\_monitoring\_ui\] ([pm-g8gj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-g8gj.toon))
527
+ - Chore: Prune stuck telemetry queue entries ([pm-wrbo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-wrbo.toon))
528
+ - Epic: 2026-04-28 Full PM CLI Dogfood Audit ([pm-wg1d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-wg1d.toon))
529
+ - Make lifecycle validate patterns configurable ([pm-urxb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-urxb.toon))
530
+ - Decision: PM CLI audit confirms production readiness ([pm-unbq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-unbq.toon))
531
+ - SDK docs: document cli-contracts exports and extension capability requirements ([pm-qrxb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qrxb.toon))
532
+ - Decision: Cap telemetry result\_summary payload size ([pm-q9yt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-q9yt.toon))
533
+ - Calendar --include scheduled alias missing \(calendar summary uses 'scheduled' but filter requires 'events'\) ([pm-itb0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-itb0.toon))
534
+ - Core commands audit: full CRUD lifecycle verified with all item types ([pm-ewxk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ewxk.toon))
535
+ - pm templates bare command shows empty output \(should list templates\) ([pm-dc2y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-dc2y.toon))
536
+ - Calendar audit: all views verified working, reminders and deadlines render correctly ([pm-71sj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-71sj.toon))
537
+ - Templates command: document correct invocation syntax \(positional vs --name\) ([pm-6y6i](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-6y6i.toon))
538
+ - Extension system audit: install/manage/doctor/activate lifecycle fully working ([pm-3s52](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3s52.toon))
539
+ - Telemetry pipeline verified: all \[redacted\_service\_count\] services healthy, E2E event ingestion working ([pm-3akm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3akm.toon))
540
+ - Chore: Telemetry queue steady-state has 100 pending entries ([pm-2gmr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2gmr.toon))
541
+ - 2026-04-30 Full PM CLI Dogfood Audit ([pm-23me](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-23me.toon))
542
+ - Priority --priority error message missing 0..4 range and semantic labels ([pm-1h7w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-1h7w.toon))
543
+ - pm health ok:false for normal telemetry queue draining is non-actionable noise ([pm-gmnh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gmnh.toon))
544
+ - pm cal --include events\|scheduled expands recurring events without default cap ([pm-vg5h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-vg5h.toon))
545
+ - Calendar recurring event line has redundant double-title \(item title repeated in event title field\) ([pm-b1pd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-b1pd.toon))
546
+
547
+ ## 2026.5.1-2 - 2026-05-01
548
+
549
+ ### Other
550
+
551
+ - Stabilize post-release cross-platform CI tests ([pm-7d3m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-7d3m.toon))
552
+ - Release @unbrained/pm-cli after 2026.3.12 ([pm-x6ni](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-x6ni.toon))
553
+
554
+ ## 2026.5.1 - 2026-05-01
475
555
 
476
556
  ### Added
477
557
 
478
- #### CI and Release Automation
479
- - Automated npm publish workflow (`.github/workflows/release.yml`) triggered on `v*.*.*` version tags: runs full build, typecheck, test, and coverage suite before publishing to npm; requires `NPM_TOKEN` secret.
480
- - npm provenance attestation enabled (`--provenance` on `npm publish`) linking each release to its source commit and build pipeline via Sigstore; consumers can verify supply chain integrity and npm shows a Provenance badge.
481
- - Node 24 added to CI matrix (`ci.yml` and `nightly.yml`) ensuring forward compatibility with the Node 24 LTS line.
482
- - Node 25 (current release) added to nightly CI matrix for early forward-compatibility detection.
483
- - Dependabot configured (`.github/dependabot.yml`) for weekly npm and GitHub Actions dependency updates.
484
-
485
- #### Developer Documentation
486
- - `docs/ARCHITECTURE.md` comprehensive internal architecture guide covering source tree, item storage, mutation contract, history/restore, extension system, search architecture, and testing.
487
- - `docs/EXTENSIONS.md` extension development guide covering manifest format, full `ExtensionApi` reference, lifecycle hooks, built-in extensions, and a minimal example.
488
- - `docs/**` added to `package.json` `files` allowlist so documentation ships with the npm package.
489
- - README links to new `docs/` guides from the Repository Structure section.
490
-
491
- #### Community and npm Package Hygiene
492
- - `package.json` now includes `repository`, `bugs`, `homepage`, and `author` fields for proper npm page display and discoverability.
493
- - Keywords expanded: added `ai`, `git-native`, `task-tracker`, `coding-agents`.
494
- - GitHub issue templates added (`.github/ISSUE_TEMPLATE/bug-report.yml` and `feature-request.yml`) for structured bug reports and feature requests.
495
- - Pull request template added (`.github/PULL_REQUEST_TEMPLATE.md`) to guide contributors through the checklist including pm item links, test evidence, and docs updates.
496
-
497
- #### Shell Completion
498
- - `pm completion bash` outputs a bash tab-completion script. Source it or add `eval "$(pm completion bash)"` to `~/.bashrc`.
499
- - `pm completion zsh` outputs a zsh tab-completion script. Add `eval "$(pm completion zsh)"` to `~/.zshrc`.
500
- - `pm completion fish` outputs a fish tab-completion script. Pipe to `~/.config/fish/completions/pm.fish`.
501
- - `pm completion <shell> --json` returns structured `{ shell, script, setup_hint }` for programmatic use.
502
- - Completion covers all subcommands, global flags, list filters (`--type`, `--assignee`, `--sprint`, `--release`, `--priority`, etc.), search modes, item types, statuses, priorities, and shell names.
503
-
504
- #### List Command Filters
505
- - `--assignee <value>` filter for all `list*` commands exact match on `assignee` field; use `--assignee-filter unassigned` to filter for unassigned items.
506
- - `--sprint <value>` filter for all `list*` commands exact match on `sprint` field.
507
- - `--release <value>` filter for all `list*` commands exact match on `release` field.
508
-
509
- #### Core CLI Commands
510
- - Full command surface: `init`, `create`, `get`, `update`, `append`, `close`, `delete`, `claim`, `release`, `list`, `list-all`, `list-draft`, `list-open`, `list-in-progress`, `list-blocked`, `list-closed`, `list-canceled`, `comments`, `files`, `docs`, `test`, `test-all`, `stats`, `health`, `gc`, `history`, `activity`, `restore`, `search`, `reindex`.
511
- - `pm config <project|global> set definition-of-done --criterion <text>` and `pm config <project|global> get definition-of-done` for team-level Definition of Done criteria management.
512
- - `pm beads import [--file <path>]` built-in Beads JSONL import command (extension-packaged).
513
- - `pm todos import [--folder <path>]` and `pm todos export [--folder <path>]` built-in todos markdown import/export commands (extension-packaged).
514
-
515
- #### Item Schema
516
- - Canonical front-matter schema with required fields: `id`, `title`, `description`, `type`, `status`, `priority`, `tags`, `created_at`, `updated_at`.
517
- - Full optional metadata surface: `deadline`, `assignee`, `author`, `estimated_minutes`, `acceptance_criteria`, `definition_of_ready`, `order`, `goal`, `objective`, `value`, `impact`, `outcome`, `why_now`, `parent`, `reviewer`, `risk`, `confidence`, `sprint`, `release`, `blocked_by`, `blocked_reason`, `unblock_note`.
518
- - Issue-specific metadata fields: `reporter`, `severity`, `environment`, `repro_steps`, `resolution`, `expected_result`, `actual_result`, `affected_version`, `fixed_version`, `component`, `regression`, `customer_impact`.
519
- - Deterministic key ordering and stable canonical serialization across all item mutations.
520
- - `tags` sorted lexicographically and deduplicated on every write.
521
- - `risk`/`severity`/`confidence` accept `med` alias normalizing to stored `medium`.
522
- - `regression` accepts `true|false|1|0` boolean inputs.
523
- - Linked arrays (`dependencies`, `comments`, `notes`, `learnings`, `files`, `tests`, `docs`) all have deterministic sort orders.
524
- - Relative deadline inputs (`+6h`, `+1d`, `+2w`) resolved to absolute ISO timestamps at write time.
525
- - Sentinel value `none` (case-insensitive) for any scalar option unsets/omits the field and records intent in history.
526
-
527
- #### `pm create` Flags
528
- - All schema fields passable explicitly: required seed flags (`--dep`, `--comment`, `--note`, `--learning`, `--file`, `--test`, `--doc`); `--ac`/`--acceptance-criteria`/`--acceptance_criteria` alias; `--estimate`/`--estimated-minutes`/`--estimated_minutes` alias; snake_case aliases for all hyphenated flags.
529
- - `--unblock-note`/`--unblock_note` for recording unblock rationale.
530
- - Issue metadata flags: `--reporter`, `--severity`, `--environment`, `--repro-steps`, `--resolution`, `--expected-result`, `--actual-result`, `--affected-version`, `--fixed-version`, `--component`, `--regression`, `--customer-impact`.
531
- - Planning/workflow flags: `--parent`, `--reviewer`, `--risk`, `--confidence`, `--sprint`, `--release`, `--blocked-by`, `--blocked-reason`, `--definition-of-ready`, `--order`/`--rank`, `--goal`, `--objective`, `--value`, `--impact`, `--outcome`, `--why-now`.
532
-
533
- #### `pm update` Flags
534
- - All `pm create` optional fields also supported on `pm update`, including `--title`/`-t` and `--ac` aliases.
535
- - `--type` mutation support for changing item type after creation.
536
- - `--status closed` rejected with clear error directing callers to `pm close <ID> <TEXT>`.
537
-
538
- #### History and Restore
539
- - Append-only RFC6902 patch history per item in `.agents/pm/history/<id>.jsonl`.
540
- - SHA-256 before/after hash chain per history entry for integrity verification.
541
- - `pm history <ID> [--limit]` and `pm activity [--limit]` commands.
542
- - `pm restore <ID> <TIMESTAMP|VERSION>` replays history to exact target state and appends a `restore` history event.
543
- - Hash verification on restore with loud failure on mismatch.
544
-
545
- #### Concurrency and Safety
546
- - Lock-file (`locks/<id>.lock`) with TTL-based stale detection and PID/owner/timestamp metadata.
547
- - Atomic writes via temp-file + rename for all item mutations.
548
- - Claim/release ownership model with conflict exit code `4`.
549
- - `--force` for stale-lock steal and terminal-status claim override.
550
- - Conflict guard for mutations against items owned by another assignee.
551
-
552
- #### Search
553
- - `pm search <keywords>` in keyword, semantic, and hybrid modes with deterministic ordering.
554
- - `--include-linked` flag expands keyword/hybrid lexical corpus with linked docs/files/tests content; scope-root containment enforced with both resolved-path and symlink-realpath checks.
555
- - `--limit 0` returns a deterministic empty result without executing provider embedding queries.
556
- - Deterministic exact-title token lexical boost for keyword and hybrid lexical component.
557
- - Configurable multi-factor lexical tuning via `search.tuning` settings object (`title_exact_bonus`, `title_weight`, `description_weight`, `tags_weight`, `status_weight`, `body_weight`, `comments_weight`, `notes_weight`, `learnings_weight`, `dependencies_weight`, `linked_content_weight`).
558
- - `search.score_threshold` for mode-aware minimum score filtering (default `0`).
559
- - `search.hybrid_semantic_weight` for configurable semantic-vs-lexical blend in hybrid mode (default `0.7`).
560
- - `pm reindex` rebuilds deterministic keyword cache artifacts (`index/manifest.json`, `search/embeddings.jsonl`); `--mode semantic|hybrid` generates embeddings and upserts to the active vector store.
561
- - Embedding provider abstraction for OpenAI-compatible and Ollama providers with deterministic per-request input deduplication, cardinality validation, configurable batch sizing (`search.embedding_batch_size`), and per-batch retry semantics (`search.scanner_max_batch_retries`).
562
- - Vector store adapter abstraction for Qdrant and LanceDB with deterministic snapshot persistence + reload across process boundaries, query-hit ordering (score desc, id asc tie-break), and upsert/delete operations.
563
- - Mutation-triggered stale keyword artifact invalidation and best-effort semantic embedding refresh for affected item IDs (including vector pruning for deleted items).
564
-
565
- #### Extension System
566
- - Global (`~/.pm-cli/extensions`) and project (`.agents/pm/extensions`) extension directories with deterministic load order and project-over-global precedence.
567
- - Extension manifest with capability declarations (`commands`, `renderers`, `hooks`, `schema`, `importers`, `search`); registrations outside declared capabilities fail activation deterministically.
568
- - `api.registerCommand`, `api.registerRenderer`, `api.registerFlags`, `api.registerItemFields`, `api.registerMigration`, `api.registerImporter`, `api.registerExporter`, `api.registerSearchProvider`, `api.registerVectorStoreAdapter` registration surface.
569
- - `api.registerImporter`/`api.registerExporter` auto-wire `<name> import`/`<name> export` extension command paths with isolated handler execution.
570
- - Hook lifecycle: `beforeCommand`, `afterCommand`, `onWrite`, `onRead`, `onIndex` with per-hook context snapshot isolation and failure containment.
571
- - Command result override and renderer override with cloned context snapshots to prevent mutation leakage.
572
- - Dynamically surfaced extension command paths include help metadata derived from `registerFlags` definitions.
573
- - Mandatory migration blocking: `mandatory=true` migrations with non-applied status block write commands (bypassable with `--force` on force-capable commands).
574
- - Extension entry paths enforced to remain within extension directory via symlink-resolved realpath check.
575
- - Loose-option parser hardening: null-prototype option maps and prototype key rejection (`__proto__`, `constructor`, `prototype`).
576
- - `pm health` reports extension load/activation diagnostics and migration status summaries.
577
-
578
- #### Built-in Extensions
579
- - Built-in Beads import: maps Beads JSONL records to PM items with deterministic defaults and `op: "import"` history entries.
580
- - Built-in todos import/export: round-trips todos markdown (JSON front-matter + body) with deterministic field defaults, canonical optional metadata preservation (planning/workflow and issue fields), hierarchical ID preservation (e.g. `pm-legacy.1.2`), and `med` alias normalization.
581
- - Built-in Pi agent extension at `.pi/extensions/pm-cli/index.ts`: registers a `pm` tool with full v0.1 action dispatch parity, camelCase wrapper parameters for all canonical scalar metadata, explicit empty-string passthrough for empty-allowed flags, numeric-flag stringification, claim/release parameter forwarding, and packaged CLI fallback (`node <package-root>/dist/cli.js` when `pm` is unavailable).
582
-
583
- #### Safety Guardrails for Linked Tests
584
- - `pm test <ID> --add` rejects entries invoking `pm test-all` (including `npx`, `pnpm dlx`, `npm exec` launcher forms) to prevent recursive orchestration loops.
585
- - `pm test <ID> --run` defensively skips legacy `pm test-all` entries and reports deterministic skip diagnostics.
586
- - `pm test <ID> --add` rejects sandbox-unsafe test-runner commands (`npm run test`, `pnpm run test`, `yarn run test`, `bun run test`, `vitest` direct runners) unless explicitly sandboxed with `node scripts/run-tests.mjs ...` or both `PM_PATH` and `PM_GLOBAL_PATH`.
587
- - `pm test-all` deduplicates linked entries per run (keyed by scope + normalized command or scope + path); duplicate-key timeout conflicts resolve to the maximum `timeout_seconds`.
588
-
589
- #### Tooling and CI
590
- - TypeScript source with ESM modules and `tsc` compilation; strict null checks and no implicit any.
591
- - Vitest test suite (52 files, 473 tests) with 100% lines/branches/functions/statements coverage gate enforced in CI.
592
- - Sandboxed test runner `scripts/run-tests.mjs` creates a temporary directory, sets both `PM_PATH` and `PM_GLOBAL_PATH`, runs the requested Vitest command, and cleans up afterward.
593
- - CI matrix across Ubuntu, macOS, and Windows on Node 20; additional Ubuntu run on Node 22.
594
- - Nightly validation workflow for Node 20 and 22.
595
- - Installer scripts `scripts/install.sh` (Linux/macOS) and `scripts/install.ps1` (Windows PowerShell) with idempotent update flows and post-install `pm --version` verification.
596
- - npm packaging allowlist (`files` in `package.json`) and `prepublishOnly` build guard.
597
- - Repository governance baseline: `LICENSE` (MIT), `CHANGELOG.md`, `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`.
558
+ - List command large-output ergonomics ([pm-a4z3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-a4z3.toon))
559
+ - Add opt-in runtime probe mode for extension manage parity ([pm-p0ij](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-p0ij.toon))
560
+ - Implement context command runtime and surfaces ([pm-iyqf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-iyqf.toon))
561
+ - Add pm version and source classification to telemetry payloads ([pm-3dd9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-3dd9.toon))
562
+ - Expand aggregate group-by to support priority, status, assignee, tags ([pm-bhhe](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-bhhe.toon))
563
+ - Add telemetry runtime diagnostics to pm health ([pm-300m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-300m.toon))
564
+ - Implement CLI telemetry consent and runtime pipeline ([pm-5v5w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-5v5w.toon))
565
+ - 2026-04-25 full dogfood audit remediation wave ([pm-2hrt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2hrt.toon))
566
+ - List parent filtering and get recovery guidance ([pm-v7o7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-v7o7.toon))
567
+ - Search UX and projection controls ([pm-qb71](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-qb71.toon))
568
+ - Add compact/full/fields search output controls with compact default ([pm-nrxm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-nrxm.toon))
569
+ - Extension help and contracts runtime introspection ([pm-4bhw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-4bhw.toon))
570
+ - Add --parent filter support for list and list-\* commands ([pm-08zg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-08zg.toon))
571
+ - Add governance batch-mutation mode with explicit ownership override planning ([pm-lwps](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-lwps.toon))
572
+ - Automate duplicate-cluster detection and canonical mapping report ([pm-7lum](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7lum.toon))
573
+ - Clarify ownership conflict guidance for force overrides ([pm-8sgf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-8sgf.toon))
574
+ - Stdin and PTY fail-safe behavior ([pm-olxl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-olxl.toon))
575
+ - Sunset pm install command and migrate to extension manager installs ([pm-8a2s](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-8a2s.toon))
576
+ - Config key discovery and export actions ([pm-kslz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-kslz.toon))
577
+ - Bulk comments audit query surface ([pm-ayyt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ayyt.toon))
578
+ - Add AGENTS rule to check existing pm items before creating new ones ([pm-o5uw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-o5uw.toon))
579
+ - External follow-up: add focused extension diagnostics triage summaries ([pm-doek](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-doek.toon))
580
+ - Help System Redesign Across All Commands ([pm-j162](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-j162.toon))
581
+ - Add test-result tracking settings and config policy ([pm-z9k7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-z9k7.toon))
582
+ - Background test service parity and release verification ([pm-elsh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-elsh.toon))
583
+ - Background linked-test orchestration and run management ([pm-bi0z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-bi0z.toon))
584
+ - Configurable test-result tracking on PM items ([pm-16f4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-16f4.toon))
585
+ - Add README badges and update CONTRIBUTING.md to reference docs/ ([pm-x4f9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-x4f9.toon))
586
+ - Add Node 25 to nightly CI and create docs/ architecture+extension guides ([pm-aa6w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-aa6w.toon))
587
+ - Add package.json npm metadata and GitHub community files ([pm-ixbk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ixbk.toon))
588
+ - Add automated npm release workflow and Node 24 CI coverage ([pm-mwe8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-mwe8.toon))
589
+ - Add files/docs repeated-add regressions and update flag guidance ([pm-e0ab](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-e0ab.toon))
590
+ - Add --ac alias for create acceptance criteria ([pm-vyqe](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vyqe.toon))
591
+ - Reject flagged package-manager test runners in pm test --add ([pm-mlc3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mlc3.toon))
592
+ - Add integration test for pm list active-only behavior ([pm-gus1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gus1.toon))
593
+ - Add issue-specific metadata fields to item schema and CLI ([pm-rs40](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-rs40.toon))
594
+ - Add confidence metadata flag support for create/update ([pm-kpz5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-kpz5.toon))
595
+ - Add med alias for risk flag values ([pm-7w60](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7w60.toon))
596
+ - Add snake\_case aliases for create/update acceptance and estimate flags ([pm-mfza](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mfza.toon))
597
+ - Add --title and -t support for pm update ([pm-w1r6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-w1r6.toon))
598
+ - Add --ac alias parity for pm update acceptance criteria ([pm-3qrp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3qrp.toon))
599
+ - Add notes and learnings command parity ([pm-v1s1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-v1s1.toon))
600
+ - Add pm completion command for bash/zsh/fish shell completion ([pm-7hx6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7hx6.toon))
601
+ - Add history missing-stream policy setting and config support ([pm-8wnm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8wnm.toon))
602
+ - Add option-policy schema and registry resolution ([pm-gu1m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gu1m.toon))
603
+ - Add extension registration support for custom item types/options ([pm-37pj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-37pj.toon))
604
+ - Add advanced event filters and bounded recurrence controls ([pm-8kxm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8kxm.toon))
605
+ - Add create/update event and recurrence mutation flags ([pm-enar](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-enar.toon))
606
+ - Add event and recurrence schema normalization ([pm-f0v0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-f0v0.toon))
607
+ - Add create/update reminder flags and mutation paths ([pm-ysgr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ysgr.toon))
608
+ - Add TOON migration tests docs and verification ([pm-ybpq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ybpq.toon))
609
+ - Add tests and completion coverage for include-body list flag ([pm-6e0p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-6e0p.toon))
610
+ - Dedicated extension doctor diagnostics surface ([pm-gm9y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gm9y.toon))
611
+ - Strict skipped-test policy and linked-test assertion semantics ([pm-wtq6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-wtq6.toon))
612
+ - Issue3 Feature: Extract PM-id references from linked commands ([pm-bf54](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-bf54.toon))
613
+ - Issue2 Feature: Per-linked-test env directives ([pm-dlvv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-dlvv.toon))
614
+ - Enforce command-required linked tests at mutation time ([pm-44iu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-44iu.toon))
615
+ - Linked-test sandbox project/global extension parity ([pm-bkvx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-bkvx.toon))
616
+ - Issue5: comments audit append policy path ([pm-ahq1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ahq1.toon))
617
+ - Issue4: create strict vs progressive policy mode ([pm-431e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-431e.toon))
618
+ - Issue3: files add stable append diff mode ([pm-6jps](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-6jps.toon))
619
+ - Issue1: validate check-files full tracked scan mode ([pm-j371](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-j371.toon))
620
+ - Validation command and close-time metadata checks ([pm-gtdx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gtdx.toon))
621
+ - Implement managed extension state and lifecycle health surfaces ([pm-grst](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-grst.toon))
622
+ - Implement extension source resolver and installer engine ([pm-2poj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2poj.toon))
623
+ - Implement pm extension lifecycle command surface ([pm-7ghv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7ghv.toon))
624
+ - Implement agent-first help/schema/error surfaces ([pm-dqqa](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-dqqa.toon))
625
+ - Feature: comments force guidance parity ([pm-7y8q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7y8q.toon))
626
+ - Feature: claim takeover on non-terminal items ([pm-w9w4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-w9w4.toon))
627
+ - Feature: update close\_reason lifecycle integrity ([pm-m4vu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-m4vu.toon))
628
+ - Support pm update body end-to-end ([pm-ghha](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ghha.toon))
629
+ - Phase 2 docs, migration guidance, and release verification ([pm-r9nf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-r9nf.toon))
630
+ - Phase 2 SDK v2 contracts with backward-compat adapters ([pm-0u1y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-0u1y.toon))
631
+ - Phase 2 pluggable core service kernel ([pm-qlo0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-qlo0.toon))
632
+ - Phase 2 preflight and lifecycle interception engine ([pm-977j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-977j.toon))
633
+ - Phase 2 parser and command-contract override engine ([pm-k1zw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-k1zw.toon))
634
+ - Implement missing-history stream policy and restore fallback ([pm-kb21](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-kb21.toon))
635
+ - Health history drift detection ([pm-7vr9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-7vr9.toon))
636
+ - Activate semantic defaults via local Ollama runtime detection ([pm-zvn2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-zvn2.toon))
637
+ - Docs, Contracts, and Verification Hardening ([pm-i0iy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-i0iy.toon))
638
+ - Command-Aware Human Output Redesign ([pm-t2hj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-t2hj.toon))
639
+ - Structured Error Guidance and Diagnostics ([pm-frk8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-frk8.toon))
640
+ - Exit/output and subprocess runtime hardening ([pm-axlr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-axlr.toon))
641
+ - Implement flexible deadline/date parser behavior ([pm-lau3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-lau3.toon))
642
+ - Canonical status alias normalization across CLI surfaces ([pm-1r6p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-1r6p.toon))
643
+ - Compatibility docs and verification hardening ([pm-tob5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-tob5.toon))
644
+ - Flexible parser and stdin ingestion foundation ([pm-e7fd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-e7fd.toon))
645
+ - SDK publishing and stability contract ([pm-oga6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-oga6.toon))
646
+ - Full registration runtime wiring ([pm-zd6y](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-zd6y.toon))
647
+ - Core command-dispatch override engine ([pm-al0h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-al0h.toon))
648
+ - Policy-driven option controls for create/update ([pm-5bwo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-5bwo.toon))
649
+ - Required-option guidance and docs parity ([pm-b3id](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-b3id.toon))
650
+ - Dynamic type integration across CLI, storage, and completion ([pm-277p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-277p.toon))
651
+ - Configurable item type registry \(settings + extensions\) ([pm-x2k0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-x2k0.toon))
652
+ - Calendar occurrence engine and advanced view filtering ([pm-8m6s](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-8m6s.toon))
653
+ - Event and recurrence schema with mutation contracts ([pm-0ab3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-0ab3.toon))
654
+ - Persistent reminder item fields and CLI mutation support ([pm-c877](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-c877.toon))
655
+ - Calendar command with markdown default and multi-view rendering ([pm-tuhf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-tuhf.toon))
656
+ - Command integration tests and docs for TOON storage ([pm-u919](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-u919.toon))
657
+ - Automatic migration and legacy format gate ([pm-z8bl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-z8bl.toon))
658
+ - Dual-format item codec and storage support ([pm-5cbm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-5cbm.toon))
659
+ - Add include-body support across list variants ([pm-ykib](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ykib.toon))
660
+ - Governance sweep 2026-04-03 net-new remediation ([pm-r7t2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-r7t2.toon))
661
+ - Harden entry and add input resilience ([pm-nhgt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-nhgt.toon))
662
+ - Linked-test PM context parity controls and mismatch guardrails ([pm-8izv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-8izv.toon))
663
+ - Implement deterministic guard for ambiguous create log seeds ([pm-m3mf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-m3mf.toon))
598
664
 
599
665
  ### Changed
600
- - `pm create` and `pm update` explicit-field contracts expanded to cover all optional schema fields so callers can always pass complete intent without relying on defaults.
601
- - Documentation contracts (`PRD.md`, `README.md`, `AGENTS.md`) fully updated to cover all implemented command surfaces, schema fields, extension API, safety guardrails, and contributor workflow.
666
+
667
+ - Improve update-command close and audit-owner failure guidance from telemetry ([pm-syt7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-syt7.toon))
668
+ - Align update-many status mutation support with help/contracts ([pm-3cx8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3cx8.toon))
669
+ - Implement pm update-many with dry-run checkpoints and rollback ([pm-lf6s](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lf6s.toon))
670
+ - Update docs and changelog for six audit findings ([pm-9eaz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-9eaz.toon))
671
+ - Improve required option error/help guidance with examples ([pm-bzyr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bzyr.toon))
672
+ - Installer scripts and update path ([pm-tq1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-tq1.toon))
673
+ - Release-readiness guard for update help/contract parity ([pm-cujj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-cujj.toon))
674
+ - T5: Update docs for terminal compatibility guarantees ([pm-qkva](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qkva.toon))
675
+ - T2: Refactor CLI error exits to graceful exitCode flow ([pm-1119](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-1119.toon))
676
+ - Promote strategic metadata flags into canonical create/update contract ([pm-phob](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-phob.toon))
677
+ - Release readiness refactor ([pm-ote](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-ote.toon))
678
+ - Update linked-test regressions docs and verification evidence ([pm-dk0a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-dk0a.toon))
679
+ - Document update body support and ship verification evidence ([pm-ipm8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ipm8.toon))
680
+ - Wire update body runtime mutation path ([pm-eszd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-eszd.toon))
681
+ - Phase 2: update extension architecture and migration docs ([pm-4epk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4epk.toon))
682
+ - Update docs and release evidence for default Ollama semantic behavior ([pm-ptu0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ptu0.toon))
683
+ - Error2: Refactor commander usage mapping and dedupe error output ([pm-eonv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-eonv.toon))
684
+ - Parser update: support +m and flexible date strings ([pm-y8a8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-y8a8.toon))
685
+ - C3: Update docs and release notes for comments UX ([pm-bx5r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bx5r.toon))
686
+ - Update docs and verify status alias release readiness ([pm-posc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-posc.toon))
687
+ - Enforce option policies in create/update and help errors ([pm-co62](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-co62.toon))
688
+ - Update docs and finalize calendar/reminder release changes ([pm-2v01](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2v01.toon))
689
+ - Update body backfill normalization parity ([pm-ihfm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-ihfm.toon))
690
+ - Publish governance refactor report \(2026-04-04\) ([pm-2r70](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2r70.toon))
602
691
 
603
692
  ### Fixed
604
- - Status parsing now accepts `in-progress` and normalizes to canonical `in_progress` across `pm create`, `pm update`, `pm calendar`, and `pm test-all` filters.
605
- - Item/front-matter and built-in import normalization now resolve `in-progress` to `in_progress` to avoid validation failures while preserving deterministic stored status values.
606
- - `pm todos import` correctly preserves hierarchical IDs (e.g. `pm-legacy.1.2`) from todos front-matter verbatim.
607
- - `pm todos import` correctly round-trips canonical optional metadata fields (planning/workflow and issue metadata).
608
- - Pi extension packaged CLI fallback path resolves correctly from the package root.
609
- - `pm search --mode semantic|hybrid --limit 0` short-circuits without executing provider embedding queries.
610
- - Embedding provider request deduplication preserves correct output fan-out back to original input cardinality and order.
611
- - LanceDB snapshot persistence correctly reloads across process boundaries.
612
693
 
613
- ## [0.1.0] - 2026-02-17
694
+ - Fix parser overrides for core commands without positional args ([pm-7jkm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-7jkm.toon))
695
+ - Fix LanceDB vector dimension mismatch blocking default search ([pm-oyt8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-oyt8.toon))
696
+ - Fix Beads Import Lossiness ([pm-axl0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-axl0.toon))
697
+ - Release-readiness contract audit and next fix \(2026-03-06 run 5\) ([pm-x89f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-x89f.toon))
698
+ - Release-readiness contract audit and next fix \(2026-03-06 run 4\) ([pm-2joy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2joy.toon))
699
+ - Release-readiness contract audit and next fix \(2026-03-06 run 3\) ([pm-eamp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-eamp.toon))
700
+ - Release-readiness contract audit and next fix \(2026-03-06 run\) ([pm-qkj9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-qkj9.toon))
701
+ - Release readiness contract audit and next fix ([pm-oadl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-oadl.toon))
702
+ - Fix sandbox runner passthrough for targeted test commands ([pm-2rl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2rl.toon))
703
+ - T4: Add terminal compatibility regression coverage ([pm-gh7d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gh7d.toon))
704
+ - Terminal compatibility regression suite and docs parity ([pm-t6f7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-t6f7.toon))
705
+ - Phase 2: parser override regression and docs coverage ([pm-6024](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-6024.toon))
706
+ - Add regression coverage for Ollama-backed semantic defaults ([pm-9k33](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-9k33.toon))
707
+ - Test1: Expand regression coverage for help/error/output UX ([pm-jfpf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-jfpf.toon))
708
+ - Cross-command regression verification for date parsing expansion ([pm-x6l7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-x6l7.toon))
709
+ - C2: Add comments shorthand regression coverage ([pm-k0mr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-k0mr.toon))
710
+ - Add status alias regression tests ([pm-0kga](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0kga.toon))
711
+ - Document resilient input formats and lock regression coverage ([pm-s9hl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-s9hl.toon))
712
+ - E1: Expand override and no-extension regression matrix ([pm-5chf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5chf.toon))
713
+ - Ship regression tests docs and verification evidence ([pm-r9dy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-r9dy.toon))
714
+ - Expand recurrence regression and runtime contract tests ([pm-5xih](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5xih.toon))
715
+ - Expand regression and release-readiness tests for calendar/reminders ([pm-tyq3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-tyq3.toon))
716
+ - Fix cross-platform CI regressions surfaced by GitHub checks ([pm-skyg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-skyg.toon))
717
+ - Regression and release hardening ([pm-qwp7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-qwp7.toon))
718
+
719
+ ### Removed
720
+
721
+ - Remove none token semantics across command surfaces ([pm-rl4e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-rl4e.toon))
722
+ - Implement explicit clear/unassigned semantics and remove none token behavior ([pm-d7id](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-d7id.toon))
723
+ - M4 follow-up: remove deleted items from semantic vector indexes ([pm-fdla](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-fdla.toon))
724
+ - Extend restore to recover missing or deleted item files from history ([pm-g6qd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-g6qd.toon))
725
+ - Remove TOON front\_matter wrapper from item files ([pm-h3tp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-h3tp.toon))
614
726
 
615
- ### Added
616
- - Initial `pm-cli` v0.1.0 command surface and release-hardening baseline.
727
+ ### Security
728
+
729
+ - Ignore local .env files for telemetry/security operations ([pm-qgvj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qgvj.toon))
730
+ - Remediate open GitHub findings and recurring checks ([pm-i7w2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-i7w2.toon))
731
+ - Add npm provenance attestation to release workflow ([pm-mwap](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-mwap.toon))
732
+ - Cut public release 2026.3.9 ([pm-1h88](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-1h88.toon))
733
+ - Release hardening: scoped npm + version policy + CI ([pm-1hm2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-1hm2.toon))
734
+ - Fix devDependency security vulnerabilities via c8 and rollup updates ([pm-r3fi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-r3fi.toon))
735
+ - Harden include-linked symlink containment ([pm-lxa0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lxa0.toon))
736
+ - Harden include-linked path containment ([pm-q35x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-q35x.toon))
737
+ - M5: Enforce symlink-resolved extension entry boundary ([pm-fsyv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-fsyv.toon))
738
+ - Track and commit imported pm issue/history files ([pm-rbdu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-rbdu.toon))
739
+ - Sanitize publishable worktree before push ([pm-mcli](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-mcli.toon))
740
+ - Track GitHub Dependabot alert \#12 for undici \(GHSA-cxrh-j4jr-qwg3\) ([pm-pagj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-pagj.toon))
741
+ - Track GitHub Dependabot alert \#11 for undici \(GHSA-9qxr-qj54-h672\) ([pm-tl4d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-tl4d.toon))
742
+ - Track GitHub Dependabot alert \#10 for undici \(GHSA-m4v8-wqvr-p9f7\) ([pm-ipul](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ipul.toon))
743
+ - Track GitHub Dependabot alert \#9 for undici \(GHSA-3787-6prv-h9w3\) ([pm-d3i5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-d3i5.toon))
744
+ - Track GitHub Dependabot alert \#8 for undici \(GHSA-wqq4-5wpv-mx2g\) ([pm-v6vi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-v6vi.toon))
745
+ - Track GitHub Dependabot alert \#2 for undici \(GHSA-q768-x9m6-m9qp\) ([pm-5p3z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-5p3z.toon))
746
+ - Track GitHub Dependabot alert \#18 for undici \(GHSA-2mjp-6q6p-2qxm\) ([pm-10no](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-10no.toon))
747
+ - Track GitHub Dependabot alert \#20 for undici \(GHSA-phc3-fgpg-7m6h\) ([pm-090w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-090w.toon))
748
+ - Track GitHub Dependabot alert \#21 for undici \(GHSA-4992-7rv2-5pvq\) ([pm-cg7l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-cg7l.toon))
749
+ - Track GitHub Dependabot alert \#24 for undici \(GHSA-2mjp-6q6p-2qxm\) ([pm-x4sy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-x4sy.toon))
750
+ - Track GitHub Dependabot alert \#27 for undici \(GHSA-4992-7rv2-5pvq\) ([pm-02c4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-02c4.toon))
751
+ - Track GitHub Dependabot alert \#29 for picomatch \(GHSA-3v7f-55p6-f55p\) ([pm-5e88](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-5e88.toon))
752
+ - Track GitHub Dependabot alert \#13 for undici \(GHSA-g9mf-h72j-4rw9\) ([pm-51y8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-51y8.toon))
753
+ - Track GitHub Dependabot alert \#7 for zod \(GHSA-m95q-7qp3-xv42\) ([pm-4ydh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-4ydh.toon))
754
+ - Track GitHub Dependabot alert \#4 for undici \(GHSA-f772-66g8-q5h3\) ([pm-eu59](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-eu59.toon))
755
+ - Track GitHub Dependabot alert \#3 for undici \(GHSA-8qr4-xgw6-wmr3\) ([pm-bv2c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-bv2c.toon))
756
+ - Track GitHub Dependabot alert \#1 for undici \(GHSA-3cvr-822r-rqcc\) ([pm-ncbe](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ncbe.toon))
757
+ - Track GitHub Dependabot alert \#19 for undici \(GHSA-f269-vfmq-vjvj\) ([pm-rb9v](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-rb9v.toon))
758
+ - Track GitHub Dependabot alert \#22 for undici \(GHSA-vrm6-8vpv-qv8q\) ([pm-i1rm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-i1rm.toon))
759
+ - Track GitHub Dependabot alert \#23 for undici \(GHSA-v9p9-hfj2-hcw8\) ([pm-53q4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-53q4.toon))
760
+ - Track GitHub Dependabot alert \#25 for undici \(GHSA-vrm6-8vpv-qv8q\) ([pm-s5vv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-s5vv.toon))
761
+ - Track GitHub Dependabot alert \#26 for undici \(GHSA-v9p9-hfj2-hcw8\) ([pm-ylg3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ylg3.toon))
762
+ - Track GitHub Dependabot alert \#6 for undici \(GHSA-r6ch-mqf9-qc9w\) ([pm-8m72](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-8m72.toon))
763
+ - Track GitHub Dependabot alert \#5 for fast-json-patch \(GHSA-8gh8-hqwg-xf34\) ([pm-pacx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-pacx.toon))
764
+ - D2: Update compatibility and security/trust guidance ([pm-3949](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3949.toon))
765
+ - Documentation, migration, and safety posture ([pm-31fj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-31fj.toon))
766
+
767
+ ### Other
768
+
769
+ - Auto-migrate previous-version trackers on first mutation ([pm-yvwt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-yvwt.toon))
770
+ - Run latest-build temp-project dogfood audit and remediate findings ([pm-j16d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-j16d.toon))
771
+ - Context blocked-fallback test uses date-sensitive default deadline ([pm-0xhj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-0xhj.toon))
772
+ - SDK starter example leaves extension health warning ([pm-mwiz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-mwiz.toon))
773
+ - 2026-04-26 Comprehensive PM CLI Dogfood Audit - Full Results ([pm-z87r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-z87r.toon))
774
+ - Continuous governance automation and policy enforcement ([pm-5rjn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-5rjn.toon))
775
+ - Telemetry and observability rollout ([pm-lnq3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-lnq3.toon))
776
+ - Agent context command \( / \) ([pm-abhj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-abhj.toon))
777
+ - Implement local telemetry queue retention\_days TTL cleanup ([pm-pxx0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-pxx0.toon))
778
+ - Clarify or harden SDK import resolution for local extension installs ([pm-1etl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-1etl.toon))
779
+ - Investigate search command latency from persisted telemetry ([pm-bhmu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-bhmu.toon))
780
+ - Follow-up: enhance calendar UX for agents and LLM parsing ([pm-kglq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-kglq.toon))
781
+ - Track extension GitHub shorthand source documentation parity ([pm-h8j3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-h8j3.toon))
782
+ - Generate unknown-command remediation examples from runtime registry ([pm-a01m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-a01m.toon))
783
+ - Generate shell completion flags from command contracts ([pm-xhot](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xhot.toon))
784
+ - Align default item types with Decision tracking guidance ([pm-mpmv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-mpmv.toon))
785
+ - 2026-04-26 comprehensive pm CLI dogfood audit ([pm-8pzn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8pzn.toon))
786
+ - Strengthen SDK typing for extension registration contracts ([pm-bqg4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-bqg4.toon))
787
+ - Enforce telemetry capture\_level setting in runtime event collection ([pm-gusd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gusd.toon))
788
+ - Run weekly GitHub findings review ([pm-lou4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lou4.toon))
789
+ - Clarify strict create empty repeatable semantics ([pm-k8i0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-k8i0.toon))
790
+ - Backfill telemetry documentation files referenced in tracker links ([pm-35wb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-35wb.toon))
791
+ - Align extension hook docs with runtime types and SDK surface ([pm-hbtn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hbtn.toon))
792
+ - Reject undefined placeholder IDs in parent/dependency inputs ([pm-g9yi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-g9yi.toon))
793
+ - C1: Publish explicit extension SDK exports ([pm-l16r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-l16r.toon))
794
+ - Consolidate 2026-04-25 dogfood audit evidence and tracker links ([pm-odcr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-odcr.toon))
795
+ - Clarify config policy value ergonomics for strict modes ([pm-9ayo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-9ayo.toon))
796
+ - Allow unquoted multi-word search queries ([pm-v6ob](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-v6ob.toon))
797
+ - Replace invalid-id echo in get not-found guidance ([pm-opbo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-opbo.toon))
798
+ - Include active extension commands/actions in contracts output ([pm-nnfc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-nnfc.toon))
799
+ - Wave 8/9: restore replay patch compatibility and diagnostics ([pm-n5cw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-n5cw.toon))
800
+ - Wave 8/9: clarify get --json body field behavior ([pm-gb25](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gb25.toon))
801
+ - Expose extension command schema details in runtime help ([pm-ek2h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ek2h.toon))
802
+ - Harden mutation-triggered vector refresh coverage across write paths ([pm-bgd8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bgd8.toon))
803
+ - Wave 8/9: event parse errors with field-specific attribution ([pm-a3eq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-a3eq.toon))
804
+ - Expose start-task pause-task close-task as first-class CLI aliases ([pm-3www](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3www.toon))
805
+ - Full-repo audit hardening pass \(warnings + metadata alignment\) ([pm-4vm7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4vm7.toon))
806
+ - Run full verification and release evidence for audit remediation ([pm-ac8x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ac8x.toon))
807
+ - Help1: Centralize help composer and command narratives ([pm-vf7n](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vf7n.toon))
808
+ - Preserve confidence in todos import mapping ([pm-zoyg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zoyg.toon))
809
+ - CI workflows and quality gates ([pm-wo8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-wo8.toon))
810
+ - M5 roadmap: Todos import/export extension parity polish ([pm-pu4i](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pu4i.toon))
811
+ - Implement centralized status alias normalization ([pm-ptal](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ptal.toon))
812
+ - M5: Hook lifecycle ([pm-p8p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-p8p.toon))
813
+ - M5 follow-up: include built-in extensions in health probe ([pm-l88i](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-l88i.toon))
814
+ - M5 roadmap: Beads import extension parity polish ([pm-imob](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-imob.toon))
815
+ - T1: Implement stdin and PTY fail-safe behavior ([pm-fas4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-fas4.toon))
816
+ - Restore full todos import metadata parity ([pm-ecbn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ecbn.toon))
817
+ - Retire pm install path semantics with command removal ([pm-cxn3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cxn3.toon))
818
+ - Drive repository coverage gate back to 100 percent ([pm-r28k](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-r28k.toon))
819
+ - PM CLI governance and documentation overhaul ([pm-wtsp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-wtsp.toon))
820
+ - M5 hardening: unknown extension capability diagnostics ([pm-hzh6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hzh6.toon))
821
+ - M5 follow-up: validate extension registration handler types ([pm-qkx0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qkx0.toon))
822
+ - External issue report remediation 2026-04-05 ([pm-gt8u](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-gt8u.toon))
823
+ - Ship1: Full verification, closure evidence, commit, and push ([pm-y76e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-y76e.toon))
824
+ - Sync docs and contracts for external audit remediation ([pm-c8dz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-c8dz.toon))
825
+ - External follow-up: suppress EPIPE stack traces in piped output ([pm-4emi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4emi.toon))
826
+ - Governance standards alignment follow-up 2026-04-04 ([pm-xjf9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xjf9.toon))
827
+ - Background linked-test service and item result tracking ([pm-lm0j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-lm0j.toon))
828
+ - Persist bounded test run summaries on item records ([pm-i2pc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-i2pc.toon))
829
+ - Run background-service release verification and closure evidence ([pm-9ik7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-9ik7.toon))
830
+ - Sync prompt docs with close workflow ([pm-vx7l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-vx7l.toon))
831
+ - Create contract verification sample ([pm-awo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-awo.toon))
832
+ - Sync prompt-03 create template with canonical contract ([pm-wi28](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-wi28.toon))
833
+ - Release-readiness maintenance loop 2026-03-06 ([pm-tkie](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-tkie.toon))
834
+ - Release readiness maintenance sweep ([pm-r59c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-r59c.toon))
835
+ - Harden settings serialization contract coverage ([pm-gm5l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-gm5l.toon))
836
+ - Sync legacy prompt docs with create contract ([pm-h22w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-h22w.toon))
837
+ - Maintain release readiness 2026-03-09 \(Run 9\) ([pm-7vr0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-7vr0.toon))
838
+ - Maintain release readiness 2026-03-09 \(Run 8\) ([pm-2cr5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-2cr5.toon))
839
+ - Maintain release readiness 2026-03-09 \(Run 7\) ([pm-zre8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-zre8.toon))
840
+ - Maintain release readiness 2026-03-09 \(Run 6\) ([pm-j0o4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-j0o4.toon))
841
+ - Maintain release readiness 2026-03-09 \(Run 5\) ([pm-6k5l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-6k5l.toon))
842
+ - Maintain release readiness 2026-03-09 \(Run 4\) ([pm-eyoz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-eyoz.toon))
843
+ - Maintain release readiness 2026-03-09 \(Run 3\) ([pm-k4u5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-k4u5.toon))
844
+ - Maintain release readiness 2026-03-09 ([pm-o4ky](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-o4ky.toon))
845
+ - Release-readiness maintenance loop 2026-03-09 ([pm-36zp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-36zp.toon))
846
+ - Release-readiness maintenance loop 2026-03-08 run 1 \(chore archival variant\) ([pm-knwz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-knwz.toon))
847
+ - Release-readiness maintenance loop 2026-03-07 run 11 ([pm-dyu6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-dyu6.toon))
848
+ - Release-readiness maintenance loop 2026-03-07 run 10 ([pm-u8fr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-u8fr.toon))
849
+ - Release-readiness maintenance loop 2026-03-07 run 9 ([pm-acx9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-acx9.toon))
850
+ - README maintainer bootstrap parity with AGENTS ([pm-8mkp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-8mkp.toon))
851
+ - Contributing maintainer bootstrap global-install parity ([pm-m91u](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-m91u.toon))
852
+ - Release-readiness loop: enforce global install bootstrap contract ([pm-uh4d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-uh4d.toon))
853
+ - Close-workflow contract guard across docs and runtime ([pm-fvox](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-fvox.toon))
854
+ - AGENTS closed-sweep guidance and contract guard ([pm-gsd9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-gsd9.toon))
855
+ - Packaging hardening for npm release ([pm-cyj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-cyj.toon))
856
+ - Deduplicate test-all linked test execution across items ([pm-v6e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-v6e.toon))
857
+ - M5 roadmap: Runtime wiring for extension registrations ([pm-jvfw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-jvfw.toon))
858
+ - M5 roadmap: Broader override surfaces ([pm-bfd9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bfd9.toon))
859
+ - M5 roadmap: Broader call-site expansion for hooks ([pm-m6yd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-m6yd.toon))
860
+ - M5 roadmap: Broader command sandbox API boundary ([pm-qype](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qype.toon))
861
+ - M4 roadmap: Broader multi-factor tuning for hybrid search ([pm-qyyv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qyyv.toon))
862
+ - M4 roadmap: Broader adapter optimization and persistence refinements ([pm-8ikr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8ikr.toon))
863
+ - M4 roadmap: Advanced provider optimization ([pm-ip91](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ip91.toon))
864
+ - M4 roadmap: mutation-triggered semantic embedding refresh ([pm-eg97](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-eg97.toon))
865
+ - T6: Run full verification, close items, and ship ([pm-r4t0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-r4t0.toon))
866
+ - Expand README quick start create example to full field surface ([pm-mltd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mltd.toon))
867
+ - Generalize CLI help text for universal positioning ([pm-30zl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-30zl.toon))
868
+ - Make semantic search fully working using Ollama ([pm-b4pb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-b4pb.toon))
869
+ - Guard todos import hierarchical ID preservation ([pm-57lj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-57lj.toon))
870
+ - M4 follow-up: resolve search sonar warnings ([pm-f35q](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-f35q.toon))
871
+ - M4 follow-up: semantic/hybrid search limit=0 deterministic empty result ([pm-6mn1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-6mn1.toon))
872
+ - M4: Honor embedding batch + retry settings in semantic indexing ([pm-i25f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-i25f.toon))
873
+ - Optimize test-all dedupe across timeout variants ([pm-cnil](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cnil.toon))
874
+ - Release-readiness verification and baseline dogfood sweep ([pm-scca](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-scca.toon))
875
+ - Sync AGENTS Pi create example with explicit contract ([pm-oie4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-oie4.toon))
876
+ - Enforce close-command closure path ([pm-3nv9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3nv9.toon))
877
+ - M5 follow-up: surface registerFlags on dynamic command help ([pm-vqam](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vqam.toon))
878
+ - M5 hardening: enforce extension capability declarations ([pm-mwwp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mwwp.toon))
879
+ - Harden sandbox guard for run-script test commands ([pm-q813](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-q813.toon))
880
+ - M5 follow-up: classify applied extension migrations ([pm-cw6c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cw6c.toon))
881
+ - M5 follow-up: enforce mandatory extension migration write gate ([pm-2p5x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2p5x.toon))
882
+ - M5 follow-up: report pending extension migrations in health ([pm-42oa](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-42oa.toon))
883
+ - M5 follow-up: dispatch lock lifecycle hooks ([pm-671u](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-671u.toon))
884
+ - M3 follow-up: harden activity when history directory is missing ([pm-er7n](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-er7n.toon))
885
+ - M5 follow-up: isolate hook execution contexts ([pm-3ses](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3ses.toon))
886
+ - M5 follow-up: Extension API registration surface baseline ([pm-iuzs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-iuzs.toon))
887
+ - M5 follow-up: dispatch onWrite hooks for create and restore ([pm-f3q4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-f3q4.toon))
888
+ - M5 follow-up: health extension activation probe ([pm-pjj7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pjj7.toon))
889
+ - M5 follow-up: health history stream read hook dispatch ([pm-ndb1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ndb1.toon))
890
+ - Harden chained sandbox env detection per segment ([pm-wdgn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wdgn.toon))
891
+ - Harden recursive test-all detection for pnpm dlx and npm exec launchers ([pm-11t5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-11t5.toon))
892
+ - Record explicit acceptance\_criteria unset in create history metadata ([pm-7pp6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7pp6.toon))
893
+ - Harden recursive test-all detection for npx package specs ([pm-8fvl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8fvl.toon))
894
+ - M5 follow-up: activity history directory read hook dispatch ([pm-xyv3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-xyv3.toon))
895
+ - M5 follow-up: isolate override and renderer contexts ([pm-8d71](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8d71.toon))
896
+ - M5: Harden extension command handler context sandbox ([pm-0e8w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0e8w.toon))
897
+ - M5 follow-up: validate extension hook registration handlers ([pm-30lh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-30lh.toon))
898
+ - Harden recursive test-all detection for global-flag invocation forms ([pm-k3zx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-k3zx.toon))
899
+ - M5 follow-up: normalize extension command path whitespace ([pm-433d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-433d.toon))
900
+ - M5 follow-up: dispatch onIndex hooks in gc command ([pm-3aeu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3aeu.toon))
901
+ - M4: Mutation-triggered search cache invalidation ([pm-zgkk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zgkk.toon))
902
+ - M4: Strict keyword search filter validation parity ([pm-r5ku](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-r5ku.toon))
903
+ - M6: Command help and README examples validated in tests ([pm-15o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-15o.toon))
904
+ - M6: Fixture corpus for restore import and search ([pm-si1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-si1.toon))
905
+ - M6: CI matrix finalized ([pm-8z7](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8z7.toon))
906
+ - M5: Renderer and command extension points ([pm-geq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-geq.toon))
907
+ - M5: Extension manifest loader and sandbox boundary ([pm-7sd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7sd.toon))
908
+ - M4: Reindex command ([pm-nj3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-nj3.toon))
909
+ - M4: Hybrid ranking and include-linked option ([pm-cwp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cwp.toon))
910
+ - M4: Vector store adapters for Qdrant and LanceDB ([pm-kj4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-kj4.toon))
911
+ - M4: Embedding provider abstraction ([pm-yv2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-yv2.toon))
912
+ - M3: stats health and gc commands ([pm-zau](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zau.toon))
913
+ - M3: test-all orchestration and dependency-failed exit handling ([pm-66o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-66o.toon))
914
+ - M3: comments files docs and test commands ([pm-kwl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-kwl.toon))
915
+ - M3: list and list-\* filters with deterministic sort ([pm-r0m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-r0m.toon))
916
+ - M2: Restore by timestamp or version with replay and hash validation ([pm-9lc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-9lc.toon))
917
+ - M2: History and activity commands ([pm-2fj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2fj.toon))
918
+ - M2: Append-only history writer ([pm-pg9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pg9.toon))
919
+ - M1: Lock acquire release with TTL and conflicts ([pm-nkx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-nkx.toon))
920
+ - M1: ID generation and normalization ([pm-dgb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-dgb.toon))
921
+ - M1: Markdown item parser and serializer ([pm-l4o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-l4o.toon))
922
+ - M0: Error model and exit code mapping ([pm-siz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-siz.toon))
923
+ - M0: Deterministic serializer utilities ([pm-vdh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vdh.toon))
924
+ - M0: Project scaffolding CLI entrypoint config loader ([pm-k8v](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-k8v.toon))
925
+ - Replace docs-as-contract tests with pm-data/runtime checks ([pm-sevn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-sevn.toon))
926
+ - Docs parity: mark Pi wrapper packaging polish as implemented ([pm-du3c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-du3c.toon))
927
+ - Release-readiness maintenance loop 2026-03-08 run 2 ([pm-3tjx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3tjx.toon))
928
+ - Release-readiness maintenance loop 2026-03-08 run 1 ([pm-vz16](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vz16.toon))
929
+ - Promote unblock-note to canonical workflow field ([pm-1p6f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-1p6f.toon))
930
+ - Release-readiness maintenance loop 2026-03-07 run 8 ([pm-a5ea](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-a5ea.toon))
931
+ - Release-readiness maintenance loop 2026-03-07 run 7 ([pm-wjdr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wjdr.toon))
932
+ - Release-readiness maintenance loop 2026-03-07 run 6 ([pm-mn6w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mn6w.toon))
933
+ - Release-readiness maintenance loop 2026-03-07 run 5 ([pm-f0e9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-f0e9.toon))
934
+ - Release-readiness maintenance loop 2026-03-07 run 4 ([pm-iziy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-iziy.toon))
935
+ - Release-readiness maintenance loop 2026-03-07 run 3 ([pm-204c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-204c.toon))
936
+ - Release-readiness maintenance loop 2026-03-07 run 2 ([pm-phpq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-phpq.toon))
937
+ - Normalize duplicate milestone epics in tracker ([pm-d9yz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-d9yz.toon))
938
+ - Bootstrap dogfood backlog and execute highest-priority gap ([pm-ep96](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ep96.toon))
939
+ - Release-readiness audit and next hardening changeset ([pm-lfae](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-lfae.toon))
940
+ - Release-readiness drift audit and sync ([pm-mpd6](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-mpd6.toon))
941
+ - Testing strategy and 100 percent coverage gates ([pm-912](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-912.toon))
942
+ - Docs contract sync for release readiness ([pm-pq8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pq8.toon))
943
+ - External audit issue remediation and compatibility hardening ([pm-my6o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-my6o.toon))
944
+ - Universal terminal compatibility hardening ([pm-mudv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-mudv.toon))
945
+ - Milestone 6 - Hardening + Release Readiness ([pm-jiw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-jiw.toon))
946
+ - Milestone 5 - Extension System + Built-ins ([pm-b1w](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-b1w.toon))
947
+ - Milestone 4 - Search ([pm-f45](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-f45.toon))
948
+ - Milestone 3 - Query + Operations ([pm-54d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-54d.toon))
949
+ - Milestone 2 - History + Restore ([pm-c0r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-c0r.toon))
950
+ - Milestone 1 - Core Item CRUD + Locking ([pm-u9r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-u9r.toon))
951
+ - Milestone 0 - Foundations ([pm-2xl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-2xl.toon))
952
+ - Build pm-cli v1 ([pm-j7a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-j7a.toon))
953
+ - Linked-test PM command context can drift from workspace dataset ([pm-6pij](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-6pij.toon))
954
+ - Align extension metadata and completion/wrapper parity ([pm-h2eo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-h2eo.toon))
955
+ - Issue2 Task: Structured linked-test failure classification ([pm-4g5i](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-4g5i.toon))
956
+ - Enforce command-required linked test mutations ([pm-wn34](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wn34.toon))
957
+ - Implement sandbox seeding for project/global extension parity ([pm-qtvv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qtvv.toon))
958
+ - External audit follow-up docs sync and verification gate ([pm-ykgu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ykgu.toon))
959
+ - Track open Dependabot PR \#5 ([pm-akty](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-akty.toon))
960
+ - Track open Dependabot PR \#6 ([pm-7akk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7akk.toon))
961
+ - Track open Dependabot PR \#7 ([pm-n8w4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-n8w4.toon))
962
+ - Track open Dependabot PR \#10 ([pm-eoil](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-eoil.toon))
963
+ - Track open Dependabot PR \#12 ([pm-16pn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-16pn.toon))
964
+ - Verify extension manager rollout and deliver release evidence ([pm-3gzy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3gzy.toon))
965
+ - Overhaul extension and SDK documentation with install equivalence examples ([pm-cdsf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cdsf.toon))
966
+ - Sync docs/contracts/wrapper parity for unresolved external audit additions ([pm-tcx8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-tcx8.toon))
967
+ - Task: harden comments force guidance across help/docs/completion ([pm-8k83](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8k83.toon))
968
+ - Task: allow claim takeover without force for non-terminal items ([pm-05u4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-05u4.toon))
969
+ - Phase 2: full verification matrix and closure evidence ([pm-1had](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-1had.toon))
970
+ - Phase 2: publish SDK contracts for parser/preflight/services ([pm-j24z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-j24z.toon))
971
+ - Phase 2: compatibility adapters and migration diagnostics ([pm-ngdf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ngdf.toon))
972
+ - Phase 2: integrate service overrides into core modules ([pm-leol](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-leol.toon))
973
+ - Phase 2: implement service override contracts and runtime registry ([pm-78jt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-78jt.toon))
974
+ - Phase 2: lifecycle mutation safety and compatibility tests ([pm-5mqd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-5mqd.toon))
975
+ - Phase 2: implement extension preflight override pipeline ([pm-sh14](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-sh14.toon))
976
+ - Phase 2: wire parser override contracts in runtime ([pm-nfii](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-nfii.toon))
977
+ - Finalize tests docs verification and release evidence for history hardening ([pm-0vnr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0vnr.toon))
978
+ - Implement shared history-stream policy helper and command enforcement ([pm-1tyv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-1tyv.toon))
979
+ - Document and verify health drift/vectorization changes ([pm-yo5m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-yo5m.toon))
980
+ - Implement health vectorization targeted refresh ([pm-v48k](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-v48k.toon))
981
+ - Implement health history drift diagnostics ([pm-x0vj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-x0vj.toon))
982
+ - Implement Ollama-aware semantic default resolution in runtime ([pm-wn3r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wn3r.toon))
983
+ - Docs1: Refresh README/PRD/architecture/extensions/changelog ([pm-qhcw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qhcw.toon))
984
+ - Output1: Implement command-aware non-JSON result summaries ([pm-x3fh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-x3fh.toon))
985
+ - Error1: Introduce structured error model and builders ([pm-gggs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gggs.toon))
986
+ - T3: Harden linked-test subprocess anti-hang behavior ([pm-dzrj](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-dzrj.toon))
987
+ - Docs/help refresh for expanded deadline/date inputs ([pm-9sg4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-9sg4.toon))
988
+ - C1: Implement intuitive comments argument parsing ([pm-hcco](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hcco.toon))
989
+ - Wire resilient entry ingestion across mutation commands ([pm-0pvk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0pvk.toon))
990
+ - Implement tolerant entry parser and stdin token utility ([pm-luay](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-luay.toon))
991
+ - E2: Final verification and closure evidence ([pm-rl7j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-rl7j.toon))
992
+ - D1: Rewrite extension and architecture docs for full override ([pm-8qne](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-8qne.toon))
993
+ - C2: Backward-safe extension SDK compatibility shims ([pm-bw3h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-bw3h.toon))
994
+ - B3: Executable extension migration lifecycle ([pm-twpm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-twpm.toon))
995
+ - B2: Wire search providers and vector adapters ([pm-14qs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-14qs.toon))
996
+ - B1: Wire registerItemFields into runtime validation ([pm-t0yd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-t0yd.toon))
997
+ - A3: Hook context parity and lifecycle symmetry ([pm-osk5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-osk5.toon))
998
+ - A2: Core override precedence and collision diagnostics ([pm-t6xf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-t6xf.toon))
999
+ - A1: Unified extension-first command router ([pm-2bxh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-2bxh.toon))
1000
+ - Support type-aware storage routing and safe type moves ([pm-rv63](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-rv63.toon))
1001
+ - Build and wire runtime item type registry ([pm-h1no](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-h1no.toon))
1002
+ - Follow-up: expand built-in item types for calendar-native work ([pm-p5q3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-p5q3.toon))
1003
+ - Document recurrence features and finalize release evidence ([pm-tytr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-tytr.toon))
1004
+ - Implement recurrence occurrence expansion in calendar views ([pm-0c0g](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0c0g.toon))
1005
+ - Implement calendar command core views and filtering ([pm-ezri](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ezri.toon))
1006
+ - Implement reminder schema validation and deterministic ordering ([pm-7e6n](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7e6n.toon))
1007
+ - Integrate command and extension format behavior ([pm-3aga](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3aga.toon))
1008
+ - Implement automatic migration and mutation gate ([pm-s0ne](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-s0ne.toon))
1009
+ - Implement dual-format codec and store lookup ([pm-oex4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-oex4.toon))
1010
+ - Implement item\_format settings model ([pm-9689](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-9689.toon))
1011
+ - Document include-body list contract and capture validation evidence ([pm-gudp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-gudp.toon))
1012
+ - Implement include-body retrieval in list command pipeline ([pm-vsux](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-vsux.toon))
1013
+ - Rewrite README for public users ([pm-uc33](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-uc33.toon))
1014
+ - M1: Item schema model and validation ([pm-3gi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-3gi.toon))
1015
+ - Track open Dependabot PR \#9 ([pm-u4hy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-u4hy.toon))
1016
+ - Track open Dependabot PR \#14 ([pm-0jpx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-0jpx.toon))
1017
+ - Differentiate pm list \(active-only\) from pm list-all \(all items\) ([pm-zzt1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-zzt1.toon))
1018
+ - Issue3: Validate stale PM-id command references ([pm-br88](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-br88.toon))
1019
+ - Issue2: Shared-host linked-test determinism ([pm-9dp3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-9dp3.toon))
1020
+ - External audit Issue1 follow-up: log-seed ambiguity guard ([pm-pb0g](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-pb0g.toon))
1021
+ - Agent-friendly comments command UX hardening ([pm-v3g3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-v3g3.toon))
1022
+ - List JSON Body Projection Contract ([pm-0lbm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-0lbm.toon))
1023
+ - External audit follow-up: linked-test evidence and extension diagnostics ([pm-5z9r](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-5z9r.toon))
1024
+ - Linked-test parity and runnable command enforcement ([pm-mf5z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-mf5z.toon))
1025
+ - External audit follow-up: validation and large-output ergonomics ([pm-qfg8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-qfg8.toon))
1026
+ - Extension lifecycle manager and SDK parity rollout ([pm-m9jc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-m9jc.toon))
1027
+ - Agent-First CLI UX v3 follow-up ([pm-pfn8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-pfn8.toon))
1028
+ - External audit follow-up: unresolved UX and dependency visualization gaps ([pm-iswo](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-iswo.toon))
1029
+ - CLI UX and Integrity Hardening ([pm-hp31](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-hp31.toon))
1030
+ - History stream resilience and restore recovery hardening ([pm-ofh9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-ofh9.toon))
1031
+ - Health drift and vectorization integrity ([pm-1hkq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-1hkq.toon))
1032
+ - Auto-enable semantic search when local Ollama is available ([pm-67uh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-67uh.toon))
1033
+ - CLI UX Overhaul: Help, Errors, and Output ([pm-izbd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-izbd.toon))
1034
+ - Deadline/date parsing compatibility hardening ([pm-va6e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-va6e.toon))
1035
+ - Status alias compatibility hardening ([pm-g6a2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-g6a2.toon))
1036
+ - Full Override SDK + Extensions Platform ([pm-x395](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-x395.toon))
1037
+ - Configurable option policies for core commands ([pm-00yy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-00yy.toon))
1038
+ - Calendar parity phase 2: events and recurrence ([pm-vdrn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-vdrn.toon))
1039
+ - Agent-optimized calendar and reminders ([pm-qh3p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-qh3p.toon))
1040
+ - TOON item storage migration ([pm-bckz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-bckz.toon))
1041
+ - Code/test/docs for create log-seed ambiguity guard ([pm-l5tr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-l5tr.toon))
1042
+
1043
+ ## 2026.3.12 - 2026-03-13
1044
+
1045
+ ### Other
1046
+
1047
+ - Release @unbrained/pm-cli 2026.3.12 ([pm-lz4m](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-lz4m.toon))