@unbrained/pm-cli 2026.9.18 → 2026.9.20

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 (189) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +963 -924
  3. package/dist/cli/invocation-profile.d.ts +26 -0
  4. package/dist/cli/invocation-profile.js +3 -0
  5. package/dist/cli/main.d.ts +10 -76
  6. package/dist/cli/main.js +1 -2
  7. package/dist/cli/register-operations.js +1 -1
  8. package/dist/cli/runtime/activation.d.ts +51 -0
  9. package/dist/cli/runtime/activation.js +2 -0
  10. package/dist/cli/runtime/invocation-options.d.ts +41 -0
  11. package/dist/cli/runtime/invocation-options.js +2 -0
  12. package/dist/cli/runtime/selection.d.ts +29 -0
  13. package/dist/cli/runtime/selection.js +2 -0
  14. package/dist/cli/runtime/telemetry-outcome.d.ts +20 -0
  15. package/dist/cli/runtime/telemetry-outcome.js +2 -0
  16. package/dist/cli-bundle/bundle-manifest.json +156 -156
  17. package/dist/cli-bundle/chunks/{chunk-T4J2X3RK.js → chunk-2FEKKSLN.js} +1255 -1255
  18. package/dist/cli-bundle/chunks/{chunk-XFGWFVR3.js → chunk-2QLXN6HZ.js} +46 -46
  19. package/dist/cli-bundle/chunks/chunk-2UNYUB4A.js +2 -0
  20. package/dist/cli-bundle/chunks/chunk-33R5PEKI.js +8 -0
  21. package/dist/cli-bundle/chunks/chunk-7YUYLYJQ.js +6 -0
  22. package/dist/cli-bundle/chunks/{chunk-GRFRKHFC.js → chunk-FBWAECBI.js} +3 -3
  23. package/dist/cli-bundle/chunks/chunk-GRHSNUQO.js +20 -0
  24. package/dist/cli-bundle/chunks/chunk-HAFSMFJK.js +3 -0
  25. package/dist/cli-bundle/chunks/chunk-JBJUOOJI.js +238 -0
  26. package/dist/cli-bundle/chunks/chunk-K7RWRJLT.js +29 -0
  27. package/dist/cli-bundle/chunks/{chunk-AOD5WE6U.js → chunk-QZTS23BV.js} +2 -2
  28. package/dist/cli-bundle/chunks/chunk-TTFVQB4S.js +2 -0
  29. package/dist/cli-bundle/chunks/{register-list-query-43EQISX7.js → register-list-query-5V43MYPN.js} +6 -6
  30. package/dist/cli-bundle/chunks/{register-mutation-TSZNAKEU.js → register-mutation-EVRYSU72.js} +4 -4
  31. package/dist/cli-bundle/chunks/register-operations-LJU5H2CU.js +2 -0
  32. package/dist/cli-bundle/chunks/register-setup-HJUNGYBB.js +2 -0
  33. package/dist/cli-bundle/focused-chunks/chunk-3XPBKIV6.js +12 -0
  34. package/dist/cli-bundle/focused-chunks/{chunk-PNCUNPSA.js → chunk-5BLRMUMK.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-QVVOXVYI.js → chunk-6MNKQKT6.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-246P5AK7.js → chunk-DPBTIFW7.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/chunk-DRNXMOSV.js +2 -0
  38. package/dist/cli-bundle/focused-chunks/chunk-FXAZPSU6.js +165 -0
  39. package/dist/cli-bundle/focused-chunks/{chunk-YJYSFWSW.js → chunk-HYPK5OPA.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-GEFWBVPQ.js → chunk-IA5CCSBB.js} +2 -2
  41. package/dist/cli-bundle/focused-chunks/{chunk-C6SH62BX.js → chunk-ISEOBALS.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/{chunk-7UZHYT5B.js → chunk-K5ZCBC6Y.js} +3 -3
  43. package/dist/cli-bundle/focused-chunks/chunk-L6L4XCLY.js +2 -0
  44. package/dist/cli-bundle/focused-chunks/chunk-N6KI3LWF.js +3 -0
  45. package/dist/cli-bundle/focused-chunks/chunk-PC6ZZVNP.js +20 -0
  46. package/dist/cli-bundle/focused-chunks/chunk-RQL5WLNZ.js +30 -0
  47. package/dist/cli-bundle/focused-chunks/{chunk-MMX7BQLH.js → chunk-U2SB2BMM.js} +2 -2
  48. package/dist/cli-bundle/focused-chunks/chunk-UIS5FVHH.js +59 -0
  49. package/dist/cli-bundle/main.js +26 -27
  50. package/dist/cli-bundle/sdk-authoring.js +1 -1
  51. package/dist/cli-bundle/sdk-contracts.js +2 -2
  52. package/dist/cli-bundle/sdk-core.js +39 -39
  53. package/dist/cli-bundle/sdk-governance.js +1 -1
  54. package/dist/cli-bundle/sdk-graph.js +1 -1
  55. package/dist/cli-bundle/sdk-merge.js +42 -42
  56. package/dist/cli-bundle/sdk-query.js +1 -1
  57. package/dist/cli-bundle/sdk-runtime.js +1 -1
  58. package/dist/cli-bundle/sdk-testing.js +1 -1
  59. package/dist/cli-bundle/sdk.js +8 -8
  60. package/dist/cli.js +1 -1
  61. package/dist/core/checkpoint/mutation-checkpoint.d.ts +1 -1
  62. package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
  63. package/dist/core/diagnostics/remediation.js +1 -1
  64. package/dist/core/extensions/extension-types.d.ts +2 -2
  65. package/dist/core/extensions/loader.d.ts +9 -15
  66. package/dist/core/extensions/loader.js +1 -1
  67. package/dist/core/extensions/manifest-parser.d.ts +5 -0
  68. package/dist/core/extensions/manifest-parser.js +2 -0
  69. package/dist/core/extensions/registration-contracts.d.ts +34 -0
  70. package/dist/core/extensions/registration-contracts.js +2 -0
  71. package/dist/core/fs/atomic-create.d.ts +7 -0
  72. package/dist/core/fs/atomic-create.js +2 -0
  73. package/dist/core/governance/issue-codes.d.ts +10 -1
  74. package/dist/core/governance/issue-codes.js +1 -1
  75. package/dist/core/history/history.js +1 -1
  76. package/dist/core/schema/runtime-schema.d.ts +1 -1
  77. package/dist/core/schema/runtime-schema.js +2 -2
  78. package/dist/core/session/session-state.js +1 -1
  79. package/dist/core/store/settings-concurrency.d.ts +7 -0
  80. package/dist/core/store/settings-concurrency.js +2 -0
  81. package/dist/core/store/settings.d.ts +8 -1
  82. package/dist/core/store/settings.js +3 -2
  83. package/dist/core/validate/fix-planning.d.ts +3 -3
  84. package/dist/core/validate/fix-planning.js +1 -1
  85. package/dist/sdk/agent/refusal-reachability.d.ts +1 -1
  86. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  87. package/dist/sdk/completion/bash.d.ts +3 -0
  88. package/dist/sdk/completion/bash.js +2 -0
  89. package/dist/sdk/completion/fish.d.ts +3 -0
  90. package/dist/sdk/completion/fish.js +1054 -0
  91. package/dist/sdk/completion/shared.d.ts +103 -0
  92. package/dist/sdk/completion/shared.js +2 -0
  93. package/dist/sdk/completion/zsh.d.ts +3 -0
  94. package/dist/sdk/completion/zsh.js +1109 -0
  95. package/dist/sdk/completion.d.ts +5 -30
  96. package/dist/sdk/completion.js +1 -2160
  97. package/dist/sdk/contracts.d.ts +1 -0
  98. package/dist/sdk/contracts.js +1 -1
  99. package/dist/sdk/extension/install-runtime.d.ts +1 -1
  100. package/dist/sdk/extension/install-runtime.js +2 -2
  101. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  102. package/dist/sdk/governance/closure-timestamps.d.ts +32 -0
  103. package/dist/sdk/governance/closure-timestamps.js +2 -0
  104. package/dist/sdk/governance/health.js +1 -1
  105. package/dist/sdk/governance/provenance-health.d.ts +27 -0
  106. package/dist/sdk/governance/provenance-health.js +1 -1
  107. package/dist/sdk/governance/validate-normalization.d.ts +2 -0
  108. package/dist/sdk/governance/validate-normalization.js +1 -1
  109. package/dist/sdk/governance/validate.js +1 -1
  110. package/dist/sdk/governance.d.ts +1 -0
  111. package/dist/sdk/governance.js +1 -1
  112. package/dist/sdk/graph/index.d.ts +1 -0
  113. package/dist/sdk/graph/index.js +1 -1
  114. package/dist/sdk/graph/query-contracts.d.ts +18 -0
  115. package/dist/sdk/graph/query-contracts.js +2 -0
  116. package/dist/sdk/graph/run.d.ts +2 -0
  117. package/dist/sdk/graph/run.js +1 -1
  118. package/dist/sdk/graph/traversal.js +1 -1
  119. package/dist/sdk/lifecycle-policy.js +1 -1
  120. package/dist/sdk/public-surface.json +1 -1
  121. package/dist/sdk/query/search/corpus.d.ts +27 -0
  122. package/dist/sdk/query/search/corpus.js +2 -0
  123. package/dist/sdk/query/search/filters.d.ts +27 -0
  124. package/dist/sdk/query/search/filters.js +2 -0
  125. package/dist/sdk/query/search/input.d.ts +28 -0
  126. package/dist/sdk/query/search/input.js +2 -0
  127. package/dist/sdk/query/search/lexical.d.ts +34 -0
  128. package/dist/sdk/query/search/lexical.js +2 -0
  129. package/dist/sdk/query/search/response.d.ts +34 -0
  130. package/dist/sdk/query/search/response.js +2 -0
  131. package/dist/sdk/query/search/semantic.d.ts +229 -0
  132. package/dist/sdk/query/search/semantic.js +3 -0
  133. package/dist/sdk/query/search/types.d.ts +123 -0
  134. package/dist/sdk/query/search/types.js +2 -0
  135. package/dist/sdk/query/search.d.ts +13 -364
  136. package/dist/sdk/query/search.js +1 -2
  137. package/dist/sdk/runtime/actions.d.ts +4 -0
  138. package/dist/sdk/runtime/actions.js +2 -0
  139. package/dist/sdk/runtime/context.d.ts +38 -0
  140. package/dist/sdk/runtime/context.js +2 -0
  141. package/dist/sdk/runtime/schema.d.ts +4 -0
  142. package/dist/sdk/runtime/schema.js +2 -0
  143. package/dist/sdk/runtime.d.ts +90 -95
  144. package/dist/sdk/runtime.js +1 -1
  145. package/docs/ARCHITECTURE.md +68 -0
  146. package/docs/HISTORY_GOVERNANCE_REPAIR.md +66 -0
  147. package/docs/MCP_OPTION_CONFORMANCE.md +41 -0
  148. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +18 -2
  149. package/docs/PERFORMANCE.md +37 -0
  150. package/docs/README.md +1 -0
  151. package/docs/SDK_AGENT_SESSION_CONTEXT.md +28 -4
  152. package/docs/SDK_LIFECYCLE.md +16 -2
  153. package/docs/WORKSPACE_CONCURRENCY.md +67 -0
  154. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
  155. package/marketplace.json +2 -2
  156. package/package.json +3 -3
  157. package/packages/pm-beads/package.json +1 -1
  158. package/packages/pm-calendar/package.json +1 -1
  159. package/packages/pm-command-kit/package.json +1 -1
  160. package/packages/pm-digital-twin/package.json +1 -1
  161. package/packages/pm-governance-audit/package.json +1 -1
  162. package/packages/pm-guide-shell/package.json +1 -1
  163. package/packages/pm-kanban/package.json +1 -1
  164. package/packages/pm-lifecycle-hooks/package.json +1 -1
  165. package/packages/pm-linked-test-adapters/package.json +1 -1
  166. package/packages/pm-search-advanced/package.json +1 -1
  167. package/packages/pm-templates/package.json +1 -1
  168. package/packages/pm-todos/package.json +1 -1
  169. package/packages/pm-vcs/package.json +1 -1
  170. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  171. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  172. package/dist/cli-bundle/chunks/chunk-CA5DRNGA.js +0 -29
  173. package/dist/cli-bundle/chunks/chunk-CI2JCBN2.js +0 -237
  174. package/dist/cli-bundle/chunks/chunk-FZZVWWQP.js +0 -2
  175. package/dist/cli-bundle/chunks/chunk-IPR2ICDO.js +0 -20
  176. package/dist/cli-bundle/chunks/chunk-WD7BQXA7.js +0 -6
  177. package/dist/cli-bundle/chunks/chunk-WUDF7HWM.js +0 -2
  178. package/dist/cli-bundle/chunks/chunk-X2EVS624.js +0 -3
  179. package/dist/cli-bundle/chunks/chunk-Y2OK7IAD.js +0 -8
  180. package/dist/cli-bundle/chunks/register-operations-KFZIKATY.js +0 -2
  181. package/dist/cli-bundle/chunks/register-setup-KTJ4ZE65.js +0 -2
  182. package/dist/cli-bundle/focused-chunks/chunk-7D6M45AN.js +0 -30
  183. package/dist/cli-bundle/focused-chunks/chunk-BVOQRMHF.js +0 -164
  184. package/dist/cli-bundle/focused-chunks/chunk-HRANNGHM.js +0 -2
  185. package/dist/cli-bundle/focused-chunks/chunk-LG3SYXBX.js +0 -20
  186. package/dist/cli-bundle/focused-chunks/chunk-LI6IGGB3.js +0 -2
  187. package/dist/cli-bundle/focused-chunks/chunk-QKG7JD34.js +0 -3
  188. package/dist/cli-bundle/focused-chunks/chunk-QYQFBJXD.js +0 -59
  189. package/dist/cli-bundle/focused-chunks/chunk-ZDX2BCOT.js +0 -12
@@ -1,8 +1,9 @@
1
1
  # SDK Lifecycle Policy
2
2
 
3
3
  Tracked by [pm-z5pmf8](../.agents/pm/issues/pm-z5pmf8.toon),
4
- [pm-xm0id4](../.agents/pm/issues/pm-xm0id4.toon), and
5
- [pm-2ew0w3](../.agents/pm/issues/pm-2ew0w3.toon).
4
+ [pm-xm0id4](../.agents/pm/issues/pm-xm0id4.toon),
5
+ [pm-2ew0w3](../.agents/pm/issues/pm-2ew0w3.toon), and
6
+ [pm-scbr0s](../.agents/pm/issues/pm-scbr0s.toon).
6
7
 
7
8
  The public SDK owns lifecycle transactions and policy. CLI and MCP operations
8
9
  delegate to SDK modules, so an item does not gain different storage,
@@ -39,6 +40,10 @@ Package authors can import these operations from `@unbrained/pm-cli/sdk`
39
40
  without importing CLI modules or spawning the executable. Existing CLI import
40
41
  paths remain source-compatible while integrations migrate.
41
42
 
43
+ See [Concurrent Workspace Mutations](WORKSPACE_CONCURRENCY.md) for settings
44
+ snapshot reconciliation, schema publication, session locks, and checkpoint
45
+ collision semantics shared by these operations.
46
+
42
47
  ## Relationship Identity
43
48
 
44
49
  Tracked by [pm-olcoon](../.agents/pm/issues/pm-olcoon.toon).
@@ -94,6 +99,15 @@ An embedded SDK consumer can explicitly choose `orderingEdges: "remove"` for
94
99
  a domain where predecessor facts are intentionally ephemeral. The CLI and MCP
95
100
  do not expose that override and use the durable default.
96
101
 
102
+ Explicit removal returns `closed_removed_predecessors:<item>:<ids>` for the
103
+ complete removed row set and `closed_removed_predecessors_count:<item>:<n>`
104
+ for its cardinality. The count is the number of dependency rows, including
105
+ distinct provenance rows that reference the same item. Clearing a transient
106
+ `blocked_by` scalar is reported separately as
107
+ `closed_cleared_blocked_by:<item>:<blocker>` and does not inflate that count.
108
+ Both removal and its receipts use the same selected rows; other relationship
109
+ kinds survive unchanged.
110
+
97
111
  ```ts
98
112
  import {
99
113
  closeItem,
@@ -0,0 +1,67 @@
1
+ # Concurrent Workspace Mutations
2
+
3
+ Tracked by [pm-bgcu](../.agents/pm/issues/pm-bgcu.toon). Power-loss durability is
4
+ governed by [pm-o2kc](../.agents/pm/epics/pm-o2kc.toon).
5
+
6
+ The CLI and MCP use the SDK's persistence primitives. Atomic replacement makes
7
+ one file write indivisible, but preserving concurrent edits also requires
8
+ protecting the read and decision that precede that write.
9
+
10
+ ## Settings snapshots
11
+
12
+ `readSettings` attaches an internal, non-enumerable persistence snapshot.
13
+ `writeSettings` compares the caller's edited snapshot with the latest document
14
+ while holding the `workspace-history` lock. Changes to different object keys
15
+ are combined, including separate keys in a newly introduced nested object.
16
+ Unchanged keys keep the current persisted values; sparse defaults and
17
+ file-backed schema definitions remain sparse.
18
+
19
+ Concurrent incompatible edits to the same scalar, array, or deleted object
20
+ return a conflict before writing. Read a fresh settings snapshot and reapply
21
+ the intended operation. Equal concurrent changes are idempotent. A successful
22
+ write advances that instance's baseline, so reusing it cannot replay an earlier
23
+ edit over another writer. Conflict messages name keys without exposing values.
24
+ Deleting the settings document also invalidates an unchanged read snapshot;
25
+ its next write returns the same structured conflict.
26
+
27
+ Keep the object returned by `readSettings` when editing settings. Constructing
28
+ a new object, spreading it, or using `structuredClone` drops the internal
29
+ snapshot; `writeSettings` treats such objects as explicit whole-document
30
+ replacements. They are suitable for initialization, not concurrent edits.
31
+
32
+ The same lock protects the persisted document, its workspace history entry,
33
+ and compensation if history append fails. This prevents concurrent writers
34
+ from forking the chain or leaving an accepted write unrecorded. It does not
35
+ claim crash atomicity across separate filesystem writes.
36
+
37
+ ## Schema, session, and rollback state
38
+
39
+ Schema mutations hold the existing `schema-types`, `schema-statuses`, or
40
+ `schema-fields` lock while reading and modifying their file. Profile application
41
+ uses the same lock order. Bootstrap stages complete seed bytes and publishes
42
+ them through a non-replacing hard link: a concurrent schema writer or reader
43
+ can never be overwritten by a delayed bootstrap. A filesystem that refuses
44
+ hard links returns an error instead of falling back to an unsafe overwrite.
45
+
46
+ Focus and semantic attribution share the `session-state` lock across the full
47
+ read-modify-write operation. Independent agents retain their attribution while
48
+ focus changes. This state remains local and ephemeral.
49
+
50
+ Rollback checkpoints use the same atomic, non-replacing publication as schema
51
+ seeds. Filesystem identity also protects paths reached through symlink aliases.
52
+ A byte-identical retry succeeds; reusing an ID for different contents fails without
53
+ replacing the original rollback evidence. Different checkpoint paths remain
54
+ independent.
55
+
56
+ Atomic publication guarantees complete visible bytes and prevents replacement.
57
+ It does not flush file data or directory entries to stable storage, so success
58
+ does not guarantee survival of power loss. A stronger durability policy must
59
+ cover all writers, newly created ancestor directories, retry acknowledgements,
60
+ and supported filesystems; syncing only this publication path would not establish
61
+ that workspace-wide guarantee.
62
+
63
+ The mutation locks use the existing bounded contention and stale-owner recovery
64
+ mechanism. Settings use configured lock TTL and wait values. Internal session
65
+ locks use the standard defaults; `PM_LOCK_WAIT_MS` still
66
+ overrides their wait budget. Every acquired lock is released on success and
67
+ failure.
@@ -4,12 +4,12 @@ Tracker: `pm-f05lsg`.
4
4
 
5
5
  Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
6
6
 
7
- - Catalog error codes: 377
7
+ - Catalog error codes: 378
8
8
  - Executable error codes: 19
9
9
  - Executable-code ratchet floor: 18
10
10
  - Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
11
- - Uncovered error codes: 358
12
- - Coverage fraction: 0.050398
11
+ - Uncovered error codes: 359
12
+ - Coverage fraction: 0.050265
13
13
  - Closed-domain probes: 19
14
14
  - Grammar probes: 113
15
15
 
@@ -353,6 +353,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
353
353
  | `validate_metadata_duplicate_issue_codes` | `validate_metadata_duplicate_issue_codes` | uncovered | none | 0 |
354
354
  | `validate_metadata_missing_acceptance_criteria` | `validate_metadata_missing_acceptance_criteria` | uncovered | none | 0 |
355
355
  | `validate_metadata_missing_close_reason` | `validate_metadata_missing_close_reason` | uncovered | none | 0 |
356
+ | `validate_metadata_missing_closed_at` | `validate_metadata_missing_closed_at` | uncovered | none | 0 |
356
357
  | `validate_metadata_missing_confidence` | `validate_metadata_missing_confidence` | uncovered | none | 0 |
357
358
  | `validate_metadata_missing_estimate` | `validate_metadata_missing_estimate` | uncovered | none | 0 |
358
359
  | `validate_metadata_missing_release` | `validate_metadata_missing_release` | uncovered | none | 0 |
package/marketplace.json CHANGED
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
9
- "version": "2026.9.18"
9
+ "version": "2026.9.20"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "pm-claude",
14
14
  "source": "./plugins/pm-claude",
15
15
  "description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
16
- "version": "2026.9.18",
16
+ "version": "2026.9.20",
17
17
  "author": {
18
18
  "name": "unbrained",
19
19
  "url": "https://github.com/unbraind/pm-cli"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -222,7 +222,7 @@
222
222
  "@eslint/js": "^10.0.1",
223
223
  "@modelcontextprotocol/ext-apps": "2.0.0",
224
224
  "@sentry/cli": "^3.8.0",
225
- "@types/node": "^26.5.1",
225
+ "@types/node": "^26.6.1",
226
226
  "@types/npm-package-arg": "^6.1.4",
227
227
  "@vitest/coverage-v8": "^4.1.11",
228
228
  "esbuild": "0.28.2",
@@ -232,7 +232,7 @@
232
232
  "fast-check": "^4.10.1",
233
233
  "github-slugger": "2.0.0",
234
234
  "greptile": "^3.5.2",
235
- "jscpd": "^5.2.1",
235
+ "jscpd": "^5.3.0",
236
236
  "marked": "18.0.13",
237
237
  "parse5": "8.0.1",
238
238
  "tsx": "^4.23.13",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for importing Beads JSONL records.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-calendar",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for calendar and agenda views.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-command-kit",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-digital-twin",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-governance-audit",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for governance audit and normalization workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-guide-shell",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for guide and shell completion workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-kanban",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm archetype package: a complete Kanban continuous-flow profile built on public SDK primitives.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-lifecycle-hooks",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package demonstrating safe lifecycle hook registration.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-linked-test-adapters",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for optional linked-test run management adapters and reporters.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-search-advanced",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for semantic, hybrid, and reindex search workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-templates",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for reusable create templates.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-todos",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for Todo markdown import and export.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-vcs-sdk-exemplar",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Beyond-PM exemplar: a VCS-style changeset workflow built entirely on public pm SDK and extension primitives.",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pm-claude",
3
3
  "description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.",
4
- "version": "2026.9.18",
4
+ "version": "2026.9.20",
5
5
  "author": {
6
6
  "name": "unbrained",
7
7
  "url": "https://github.com/unbraind/pm-cli"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm-codex",
3
- "version": "2026.9.18",
3
+ "version": "2026.9.20",
4
4
  "description": "Native Codex integration for pm-cli with bundled MCP tools, skills, commands, and agent workflows.",
5
5
  "author": {
6
6
  "name": "unbrained",