@unbrained/pm-cli 2026.8.9 → 2026.8.10

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 (172) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +40 -0
  3. package/dist/cli/commander-usage.js +17 -12
  4. package/dist/cli/help-json-payload.js +51 -16
  5. package/dist/cli/main.js +7 -6
  6. package/dist/cli-bundle/bundle-manifest.json +165 -165
  7. package/dist/cli-bundle/chunks/chunk-2QYH4QMI.js +30 -0
  8. package/dist/cli-bundle/chunks/{chunk-YC3UF2IO.js → chunk-EBO7OUUE.js} +57 -57
  9. package/dist/cli-bundle/chunks/{chunk-GMX5YOI3.js → chunk-ETML5C6H.js} +48 -48
  10. package/dist/cli-bundle/chunks/chunk-JUDU4RO4.js +194 -0
  11. package/dist/cli-bundle/chunks/{chunk-PYO5GZU6.js → chunk-JZSNADRR.js} +5 -5
  12. package/dist/cli-bundle/chunks/{chunk-EF43KODO.js → chunk-MENWVGJW.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-5JO6R4BS.js → chunk-S4EITGLA.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-2DTCZXSD.js → chunk-TIGKWVLA.js} +9 -9
  15. package/dist/cli-bundle/chunks/{chunk-RJC7TPF4.js → chunk-TRWXF476.js} +2 -2
  16. package/dist/cli-bundle/chunks/chunk-TSLDTJLQ.js +2 -0
  17. package/dist/cli-bundle/chunks/{register-list-query-BUE7PTCU.js → register-list-query-OJ6ZXKV4.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-mutation-FC3XLVIK.js → register-mutation-DKI7QC7O.js} +2 -2
  19. package/dist/cli-bundle/chunks/register-operations-P5OGMT6I.js +2 -0
  20. package/dist/cli-bundle/chunks/{register-setup-UQDTNTLJ.js → register-setup-S3KT2LTH.js} +2 -2
  21. package/dist/cli-bundle/focused-chunks/{chunk-6DO4YQWZ.js → chunk-2COZ67XT.js} +2 -2
  22. package/dist/cli-bundle/focused-chunks/chunk-2EXI2DKR.js +4 -0
  23. package/dist/cli-bundle/focused-chunks/{chunk-KNEHLPBF.js → chunk-34SX654S.js} +2 -2
  24. package/dist/cli-bundle/focused-chunks/chunk-36FTZ2NT.js +2 -0
  25. package/dist/cli-bundle/focused-chunks/chunk-3CQECMKR.js +16 -0
  26. package/dist/cli-bundle/focused-chunks/chunk-75774JWP.js +6 -0
  27. package/dist/cli-bundle/focused-chunks/{chunk-MRWVJ3ZG.js → chunk-7UN6BHHO.js} +2 -2
  28. package/dist/cli-bundle/focused-chunks/{chunk-VRXJSGIT.js → chunk-CHIBMEZR.js} +2 -2
  29. package/dist/cli-bundle/focused-chunks/chunk-DZGAHZZV.js +3 -0
  30. package/dist/cli-bundle/focused-chunks/chunk-FF4MNAYB.js +153 -0
  31. package/dist/cli-bundle/focused-chunks/{chunk-ZG54B4XG.js → chunk-GHTN2ILR.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/chunk-I4YM2I7S.js +2 -0
  33. package/dist/cli-bundle/focused-chunks/chunk-IMDTEN7K.js +2 -0
  34. package/dist/cli-bundle/focused-chunks/chunk-IW43E4XL.js +2 -0
  35. package/dist/cli-bundle/focused-chunks/{chunk-3WVHTUAW.js → chunk-JMVA4HKR.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-C3GCHDSQ.js → chunk-KR5RVXLQ.js} +31 -31
  37. package/dist/cli-bundle/focused-chunks/chunk-KSNJG4KI.js +16 -0
  38. package/dist/cli-bundle/focused-chunks/{chunk-73FIJONU.js → chunk-M6RPIXKC.js} +2 -2
  39. package/dist/cli-bundle/focused-chunks/chunk-MXYSIQ56.js +18 -0
  40. package/dist/cli-bundle/focused-chunks/chunk-RIIN5V4N.js +2 -0
  41. package/dist/cli-bundle/focused-chunks/{chunk-U46GQJNY.js → chunk-RKWSCYYN.js} +2 -2
  42. package/dist/cli-bundle/main.js +13 -13
  43. package/dist/cli-bundle/sdk-authoring.js +1 -1
  44. package/dist/cli-bundle/sdk-contracts.js +1 -1
  45. package/dist/cli-bundle/sdk-core.js +38 -38
  46. package/dist/cli-bundle/sdk-governance.js +1 -1
  47. package/dist/cli-bundle/sdk-graph.js +1 -1
  48. package/dist/cli-bundle/sdk-merge.js +1 -1
  49. package/dist/cli-bundle/sdk-query.js +1 -1
  50. package/dist/cli-bundle/sdk-runtime.js +1 -1
  51. package/dist/cli-bundle/sdk-testing.js +1 -1
  52. package/dist/cli-bundle/sdk.js +2 -2
  53. package/dist/core/diagnostics/remediation.js +9 -9
  54. package/dist/core/fs/fs-utils.d.ts +10 -0
  55. package/dist/core/fs/fs-utils.js +16 -4
  56. package/dist/core/item/item-format.js +3 -32
  57. package/dist/core/schema/fields-file.d.ts +1 -2
  58. package/dist/core/schema/fields-file.js +4 -11
  59. package/dist/core/schema/runtime-schema.js +3 -10
  60. package/dist/core/schema/status-defs-file.d.ts +1 -2
  61. package/dist/core/schema/status-defs-file.js +4 -32
  62. package/dist/core/schema/status-token.d.ts +2 -0
  63. package/dist/core/schema/status-token.js +32 -0
  64. package/dist/core/schema/type-workflows.d.ts +1 -2
  65. package/dist/core/schema/type-workflows.js +4 -11
  66. package/dist/core/shared/author.d.ts +1 -1
  67. package/dist/core/shared/author.js +21 -8
  68. package/dist/core/shared/errors.d.ts +4 -0
  69. package/dist/core/shared/errors.js +2 -2
  70. package/dist/core/shared/text-normalization.d.ts +1 -1
  71. package/dist/core/shared/text-normalization.js +2 -2
  72. package/dist/sdk/agent/command-recovery.d.ts +4 -0
  73. package/dist/sdk/agent/command-recovery.js +52 -0
  74. package/dist/sdk/agent/command-suggestions.d.ts +4 -0
  75. package/dist/sdk/agent/command-suggestions.js +67 -0
  76. package/dist/sdk/agent/create-option-policy.d.ts +12 -0
  77. package/dist/sdk/agent/create-option-policy.js +32 -0
  78. package/dist/sdk/agent/item-addressing.d.ts +19 -0
  79. package/dist/sdk/agent/item-addressing.js +208 -0
  80. package/dist/sdk/cli-bootstrap.d.ts +1 -1
  81. package/dist/sdk/cli-bootstrap.js +20 -5
  82. package/dist/sdk/cli-contracts/commander-mutation-options.js +16 -4
  83. package/dist/sdk/cli-contracts/flag-contracts.js +62 -21
  84. package/dist/sdk/cli-contracts/registration-helpers.js +10 -2
  85. package/dist/sdk/cli-contracts/runtime-contracts.js +5 -3
  86. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +6 -0
  87. package/dist/sdk/cli-contracts/tool-option-contracts.js +4 -2
  88. package/dist/sdk/cli-contracts/tool-parameter-tables.js +19 -4
  89. package/dist/sdk/cli-contracts/tool-schema.js +17 -4
  90. package/dist/sdk/context-intent-runtime.js +8 -5
  91. package/dist/sdk/context-signal-store.d.ts +34 -0
  92. package/dist/sdk/context-signal-store.js +24 -2
  93. package/dist/sdk/dependency-flag-validation.d.ts +15 -1
  94. package/dist/sdk/dependency-flag-validation.js +54 -2
  95. package/dist/sdk/generated-error-code-catalog.js +74 -2
  96. package/dist/sdk/governance/health.js +14 -7
  97. package/dist/sdk/governance/provenance-health.d.ts +13 -0
  98. package/dist/sdk/governance/provenance-health.js +63 -17
  99. package/dist/sdk/governance/validate-item-reader.d.ts +13 -0
  100. package/dist/sdk/governance/validate-item-reader.js +18 -0
  101. package/dist/sdk/governance/validate.d.ts +2 -2
  102. package/dist/sdk/governance/validate.js +15 -6
  103. package/dist/sdk/index.d.ts +4 -0
  104. package/dist/sdk/index.js +6 -2
  105. package/dist/sdk/lifecycle/close.js +17 -14
  106. package/dist/sdk/lifecycle/create.d.ts +2 -0
  107. package/dist/sdk/lifecycle/create.js +62 -9
  108. package/dist/sdk/lifecycle/update-many.js +39 -27
  109. package/dist/sdk/lifecycle/update.d.ts +6 -1
  110. package/dist/sdk/lifecycle/update.js +47 -10
  111. package/dist/sdk/merge/index.d.ts +1 -1
  112. package/dist/sdk/merge/index.js +3 -3
  113. package/dist/sdk/merge/install.d.ts +4 -0
  114. package/dist/sdk/merge/install.js +28 -16
  115. package/dist/sdk/merge/receipts.d.ts +3 -0
  116. package/dist/sdk/merge/receipts.js +81 -17
  117. package/dist/sdk/output-projection.js +24 -4
  118. package/dist/sdk/query/context.d.ts +2 -0
  119. package/dist/sdk/query/context.js +7 -4
  120. package/dist/sdk/query/light-metadata.d.ts +3 -0
  121. package/dist/sdk/query/light-metadata.js +19 -0
  122. package/dist/sdk/runtime.d.ts +4 -1
  123. package/dist/sdk/runtime.js +8 -3
  124. package/dist/sdk/schema-migration.js +7 -9
  125. package/dist/sdk/similarity-scoring.d.ts +1 -2
  126. package/dist/sdk/similarity-scoring.js +4 -16
  127. package/dist/sdk/workspace-snapshot.d.ts +4 -0
  128. package/dist/sdk/workspace-snapshot.js +24 -11
  129. package/docs/AGENT_GUIDE.md +3 -1
  130. package/docs/COMMANDS.md +8 -5
  131. package/docs/MERGE_SAFETY.md +7 -5
  132. package/docs/README.md +2 -5
  133. package/docs/READ_OUTPUT_CONTRACTS.md +2 -2
  134. package/docs/SDK.md +33 -8
  135. package/docs/SDK_AGENT_SESSION_CONTEXT.md +3 -2
  136. package/docs/SDK_CONTEXT.md +97 -0
  137. package/docs/SDK_CONTEXT_INTEGRITY.md +18 -3
  138. package/docs/agent-task-token-baseline.json +2 -2
  139. package/marketplace.json +2 -2
  140. package/package.json +5 -4
  141. package/packages/pm-beads/package.json +1 -1
  142. package/packages/pm-calendar/package.json +1 -1
  143. package/packages/pm-command-kit/package.json +1 -1
  144. package/packages/pm-digital-twin/package.json +1 -1
  145. package/packages/pm-governance-audit/package.json +1 -1
  146. package/packages/pm-guide-shell/package.json +1 -1
  147. package/packages/pm-kanban/package.json +1 -1
  148. package/packages/pm-lifecycle-hooks/package.json +1 -1
  149. package/packages/pm-linked-test-adapters/package.json +1 -1
  150. package/packages/pm-search-advanced/package.json +1 -1
  151. package/packages/pm-templates/package.json +1 -1
  152. package/packages/pm-todos/package.json +1 -1
  153. package/packages/pm-vcs/package.json +1 -1
  154. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  155. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  156. package/sdk/public-surface.json +194 -26
  157. package/dist/cli-bundle/chunks/chunk-5KN4DZYV.js +0 -194
  158. package/dist/cli-bundle/chunks/chunk-HUV2Z7IS.js +0 -28
  159. package/dist/cli-bundle/chunks/chunk-MHBVCUF2.js +0 -2
  160. package/dist/cli-bundle/chunks/register-operations-YH2WAOXU.js +0 -2
  161. package/dist/cli-bundle/focused-chunks/chunk-2VVP5RAA.js +0 -153
  162. package/dist/cli-bundle/focused-chunks/chunk-3GSFUDAI.js +0 -2
  163. package/dist/cli-bundle/focused-chunks/chunk-4H6MVCK3.js +0 -16
  164. package/dist/cli-bundle/focused-chunks/chunk-54TZJ4BM.js +0 -2
  165. package/dist/cli-bundle/focused-chunks/chunk-5NK5TJ5D.js +0 -2
  166. package/dist/cli-bundle/focused-chunks/chunk-JGRSQZJT.js +0 -18
  167. package/dist/cli-bundle/focused-chunks/chunk-NL57J7BZ.js +0 -4
  168. package/dist/cli-bundle/focused-chunks/chunk-P6BBIQRG.js +0 -6
  169. package/dist/cli-bundle/focused-chunks/chunk-PZAGVQNN.js +0 -3
  170. package/dist/cli-bundle/focused-chunks/chunk-QDAO3XEK.js +0 -14
  171. package/dist/cli-bundle/focused-chunks/chunk-T4IGQCSY.js +0 -2
  172. package/dist/cli-bundle/focused-chunks/chunk-XC2ZW3CJ.js +0 -2
package/docs/COMMANDS.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This is a task-oriented command guide. For exact flags, use runtime help because extensions and settings can change the active surface:
4
4
 
5
- Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon), [pm-mcxr](../.agents/pm/issues/pm-mcxr.toon), [pm-qd3woa](../.agents/pm/issues/pm-qd3woa.toon), [pm-ypuc39](../.agents/pm/issues/pm-ypuc39.toon), [pm-tz2ikr](../.agents/pm/issues/pm-tz2ikr.toon), and the schema-migration recovery contract [pm-s79kel](../.agents/pm/issues/pm-s79kel.toon).
5
+ Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon), [pm-mcxr](../.agents/pm/issues/pm-mcxr.toon), [pm-qd3woa](../.agents/pm/issues/pm-qd3woa.toon), [pm-ypuc39](../.agents/pm/issues/pm-ypuc39.toon), [pm-tz2ikr](../.agents/pm/issues/pm-tz2ikr.toon), the schema-migration recovery contract [pm-s79kel](../.agents/pm/issues/pm-s79kel.toon), the lossless mutation contracts [pm-x3dq0l](../.agents/pm/issues/pm-x3dq0l.toon), [pm-lppm6y](../.agents/pm/issues/pm-lppm6y.toon), and [pm-embm6t](../.agents/pm/issues/pm-embm6t.toon), and the SDK-first agent grammar tranche [pm-p316vn](../.agents/pm/issues/pm-p316vn.toon), [pm-st7wgu](../.agents/pm/issues/pm-st7wgu.toon), [pm-mkinft](../.agents/pm/issues/pm-mkinft.toon), [pm-ulqu](../.agents/pm/issues/pm-ulqu.toon), [pm-qmjx](../.agents/pm/issues/pm-qmjx.toon), [pm-4bzq](../.agents/pm/features/pm-4bzq.toon), [pm-x2vx](../.agents/pm/issues/pm-x2vx.toon), and [pm-g543](../.agents/pm/issues/pm-g543.toon).
6
6
 
7
7
  ```bash
8
8
  pm <command> --help
@@ -358,7 +358,9 @@ pm close-many --rollback close-many-20260604-abc123 # restore the batch
358
358
 
359
359
  `close-many` skips already-terminal matches by default (pass `--force` to re-close), accepts `--completed-at <timestamp>` to preserve one shared actual-completion time across the batch, reports a per-item plan (`close`/`skip`, plus `active_child_ids` for parents that would be orphaned) under `--dry-run`, and writes a checkpoint by default (`--no-checkpoint` to disable). Checkpoints for both commands live under `.agents/pm/checkpoints/<command>/` and are restored with `--rollback <checkpoint-id>`.
360
360
 
361
- When a flag is rejected with `Unknown option`, the error guidance now suggests the nearest supported flag (including abbreviations like `--desc` → `--description`) and notes when the flag is valid on a different command (for example `--type` on `test-all` points to `create`/`list`).
361
+ When a flag is rejected with `Unknown option`, the error guidance now suggests the nearest supported flag (including abbreviations like `--desc` → `--description`) and notes when the flag is valid on a different command (for example `--type` on `test-all` points to `create`/`list`). Unknown-command guidance ranks agent verb synonyms first, bounded edit distance second, and substring matches last; `pm log` therefore points to `history`, `comments`, and `notes`, never a `catalog` command.
362
+
363
+ Commands addressed to one item retain their canonical positional form and also accept `--id <item-id>` consistently. For example, `pm get --id pm-a1`, `pm comments --id pm-a1 --add "..."`, and `pm test --id pm-a1 --run` are equivalent to their positional forms. Supplying both forms is a usage error. Command-scoped `pm contracts --flags-only`, completion, and help expose the same alias.
362
364
 
363
365
  ## Create and Update
364
366
 
@@ -379,6 +381,7 @@ pm create "Fix login bug" --type Issue --priority high
379
381
  `pm create` defaults `--type` to `settings.governance.create_default_type` (falling back to `Task`).
380
382
  Set it with `pm config project set governance-create-default-type <Type>` (must resolve to a known item type).
381
383
  Pass `--create-mode strict` to require an explicit `--type` flag for governance-controlled flows.
384
+ Type-aware help reports requirements for the selected mode and lists stricter requirements separately. A strict required repeatable collection can be deliberately empty: for example, `--clear-deps` satisfies a required dependency consideration while writing no relationship edge and recording `explicit_unset=dependencies` in history. Required runtime-schema fields are named with their metadata key and expected input format in structured recovery.
382
385
  `pm update --status` can be constrained per item type via `schema.type_workflows` plus
383
386
  `pm config project set governance-workflow-enforcement <off|warn|strict>` (see CONFIGURATION.md → Per-Type Workflows).
384
387
  Priority accepts either `0..4` or the equivalent names `critical`, `high`, `medium`, `low`, and `minimal`.
@@ -450,7 +453,7 @@ pm update pm-abc1 --remove-tags stale # drops "stale", keeps the rest
450
453
  pm create "New backend task" --add-tags backend,p1
451
454
  ```
452
455
 
453
- Acceptance criteria get the same additive treatment on `update`/`update-many`: `--acceptance-criteria`/`--ac` REPLACES the whole value, while `--add-ac <text>` appends one criterion (repeatable; deduped on exact text) and `--remove-ac <text>` removes one criterion by exact text match (repeatable; a non-matching selector adds a `remove_ac_unmatched:<text>` warning instead of silently no-oping). Criteria are stored with semicolon-space separators, so one criterion cannot contain a semicolon. Disjoint `--add-ac` edits from concurrent agents/branches merge cleanly instead of clobbering each other.
456
+ Acceptance criteria get the same additive treatment on `update`/`update-many`: `--acceptance-criteria`/`--ac` explicitly REPLACES the whole value and returns an `acceptance_criteria_replaced:<before-count>:<after-count>` warning when it changes existing criteria. `--add-ac <text>` appends one criterion (repeatable; deduped on exact text), while `--remove-ac <text>` removes one criterion by exact text match. Every requested removal must match: otherwise the mutation fails atomically with `acceptance_criteria_remove_unmatched` and reports the unmatched selectors, without applying valid removals or additions. Whole-value replacement cannot be combined with additive flags in one mutation. Criteria are stored with semicolon-space separators, so one criterion cannot contain a semicolon. Disjoint `--add-ac` edits from concurrent agents/branches merge cleanly instead of clobbering each other.
454
457
 
455
458
  ```bash
456
459
  pm update pm-abc1 --add-ac "error path covered by a regression test"
@@ -489,7 +492,7 @@ pm update <id> \
489
492
  pm update <id> --expected "Retry succeeds after backoff" --actual "Retry threw on first attempt"
490
493
  ```
491
494
 
492
- Repeat `--ac`/`--acceptance-criteria` to build multi-part criteria; values are stored in order joined by `; `. Dependency inputs accept either a bare existing item id or the explicit `id=<id>,kind=<kind>` form, and malformed shorthand such as `related:pm-abcd` fails before it can create a dangling graph edge.
495
+ Repeat `--ac`/`--acceptance-criteria` to build multi-part criteria; values are stored in order joined by `; `. Dependency inputs accept either a bare existing item id or the explicit `id=<id>,kind=<kind>` form, and malformed shorthand such as `related:pm-abcd` fails before it can create a dangling graph edge. New local dependency targets must already exist. Cross-workspace targets must declare `source_kind=external` (canonicalized to `global`); deliberately staged local edges require `--allow-unresolved-deps` and return one structured `dependency_target_unresolved:<id>` warning per missing target. The same validation runs during `update-many --dry-run`, so preview and apply cannot disagree.
493
496
 
494
497
  Mutation commands (`create`/`update`/`close`/`append`/...) default to an
495
498
  agent-efficient `id`/`status`/`changed_field_count` envelope. Use
@@ -747,7 +750,7 @@ pm test <id> --run --only-last
747
750
  pm test-all --status in_progress --progress
748
751
  ```
749
752
 
750
- Linked test commands should be sandbox-safe. Prefer `node scripts/run-tests.mjs ...` for repo-local test suites; normal package-manager scripts such as `pnpm test` and `npm run test` are accepted because linked-test execution injects temporary `PM_PATH` and `PM_GLOBAL_PATH`. Direct runner binaries such as `vitest` or `node --test` still need the wrapper or explicit inline sandbox env. The two-token form `--add command "npm test -- parser"` (and `--add path "..."` / `--remove command "..."`) is accepted when the value is quoted into a single shell argument; it is normalized to `--add command=...` before parsing. Use `--add-json` when command strings contain commas, nested quotes, shell variables, or `--` separators that are awkward to preserve through CSV-style `--add` parsing. `--match`, `--only-index`, and `--only-last` select which linked tests execute without mutating the stored linked-test list.
753
+ Linked test commands should be sandbox-safe. Prefer `node scripts/run-tests.mjs ...` for repo-local test suites; normal package-manager scripts such as `pnpm test` and `npm run test` are accepted because linked-test execution injects temporary `PM_PATH` and `PM_GLOBAL_PATH`. Direct runner binaries such as `vitest` or `node --test` still need the wrapper or explicit inline sandbox env. The two-token form `--add command "npm test -- parser"` (and `--add path "..."` / `--remove command "..."`) is accepted when the value is quoted into a single shell argument; it is normalized to `--add command=...` before parsing. Use `--add-json` when command strings contain commas, nested quotes, shell variables, or `--` separators that are awkward to preserve through CSV-style `--add` parsing. Linked tests retain append order; consequently `--only-last` always selects the most recently added stored test. `--match`, `--only-index`, and `--only-last` select which linked tests execute without mutating the stored linked-test list.
751
754
 
752
755
  Strict linked-test guards:
753
756
 
@@ -65,11 +65,13 @@ When both sides change the same item scalar differently, the driver writes the s
65
65
 
66
66
  The driver result's `guidance` always points unresolved conflicts to `pm merge report`. When a clone-local receipt exists, guidance includes its privacy-safe receipt and item ids for exact correlation; discarded values remain confined to the local receipt and never appear in generic logs or tracker history. Tracked by [pm-fbrz7p](../.agents/pm/issues/pm-fbrz7p.toon).
67
67
 
68
- For item conflicts, the driver also writes a clone-local receipt below the Git
69
- directory. It contains retained and discarded values so recovery does not
70
- depend on a reflog. Raw values never enter public tracker history:
71
- reconciliation records field names and value hashes, while the explicit local
72
- report is the only command that shows recoverable values:
68
+ For item conflicts, the driver writes a clone-local receipt below the Git
69
+ directory and a durable privacy-safe sidecar below `merge-receipts/` in the
70
+ tracker. The local receipt contains retained and discarded values so recovery
71
+ does not depend on a reflog. The tracked sidecar contains only field names and
72
+ value hashes, so fresh clones and CI can still fail closed on an unreviewed
73
+ decision without publishing either value. When both copies exist the SDK
74
+ deduplicates them and prefers the locally recoverable copy:
73
75
 
74
76
  ```bash
75
77
  pm merge report
package/docs/README.md CHANGED
@@ -46,17 +46,14 @@ pm guide release --json
46
46
  - [Context Relevance and Packing](CONTEXT_RELEVANCE.md) - shared CLI/SDK signals, derived-store provenance, ranking explanations, and token budgets.
47
47
  - [Output Projection and Omission Contracts](OUTPUT_PROJECTION_CONTRACTS.md) - explicit withheld-field receipts, mode-paired row keys, and completion resolver outcomes.
48
48
  - [Output Token Accounting](OUTPUT_TOKEN_ACCOUNTING.md) - opt-in CLI/MCP byte attribution, bounded receipt overhead, and release-level tokens-per-task baselines.
49
- - [SDK Context Truth Contracts](SDK_CONTEXT_TRUTH_CONTRACTS.md) - typed tracker-root diagnostics and explicit merge-driver enforcement policy.
49
+ - [SDK Context Platform](SDK_CONTEXT.md) - task-oriented entry point for authoritative reads, ranking, package workflows, diagnostics, recovery, and verification.
50
50
  - [Self-Describing Context Contracts](SELF_DESCRIBING_CONTEXT_CONTRACTS.md) - intent-scoped reads, semantic flag invocation metadata, visibility parity, and generated error vocabulary.
51
51
  - [Universal Read Output Contracts](READ_OUTPUT_CONTRACTS.md) - cross-command include, amount, cost, and encoding controls for CLI, SDK, MCP, and packages.
52
52
  - [Mutation Integrity](MUTATION_INTEGRITY.md) - shared CLI/SDK/MCP author, secret, append-only disposition, and stale-work guardrails.
53
53
  - [Agent Provenance ADR Amendment](AGENT_PROVENANCE_ADR.md) - extensible model, effort, role, and host provenance with privacy and compatibility boundaries.
54
54
  - [SDK Agent Session and Episode Context](SDK_AGENT_SESSION_CONTEXT.md) - inherited role/topic context, cross-process episode identity, and deterministic history grouping.
55
- - [SDK Context Coordination](SDK_CONTEXT_COORDINATION.md) - durable mutation events, bounded duplicate governance, and scale-safe package primitives.
56
55
  - [Improvement Ledger and History Analytics](IMPROVEMENT_ANALYTICS.md) - audited quantitative observations, live provenance coverage, and bounded observational fleet outcomes.
57
56
  - [SDK Evidence Traceability and Integrity](SDK_EVIDENCE_TRACEABILITY.md) - reverse source-to-item lookup, atomic evidence replacement, no-op history, linked-test collision classification, and telemetry drain receipts.
58
- - [SDK Context Integrity Primitives](SDK_CONTEXT_INTEGRITY_PRIMITIVES.md) - batch duplicate discovery, structured errors, Plan evidence/lifecycle, sparse settings, tombstones, linked-test output, relocation diagnostics, and scoped output services.
59
- - [SDK Context Integrity](SDK_CONTEXT_INTEGRITY.md) - truthful `get` projections, bounded annotation mutations, shared author coordinates, health provider boundaries, and changeset-aware replication gates.
60
57
  - [Reproducible Workspaces and Snapshots](REPRODUCIBLE_WORKSPACES.md) - deterministic SDK recipes and content-addressed authoritative tracker restore points.
61
58
  - [Portable Corpus Shapes](CORPUS_SHAPES.md) - versioned SDK populations for realistic benchmarks, evaluations, and package tests.
62
59
  - [Agent UX Contracts](AGENT_UX_CONTRACTS.md) - ordering-cycle advisories, graph count units, collision safety, compact context, ownership wording, and recovery behavior.
@@ -80,7 +77,7 @@ pm guide release --json
80
77
  | `quickstart` | [Quickstart](QUICKSTART.md), [Command Reference](COMMANDS.md) |
81
78
  | `commands` | [Command Reference](COMMANDS.md), [Configuration](CONFIGURATION.md) |
82
79
  | `workflows` | [Agent Guide](AGENT_GUIDE.md), [Testing](TESTING.md) |
83
- | `sdk` | [SDK](SDK.md), [Architecture](ARCHITECTURE.md) |
80
+ | `sdk` | [SDK](SDK.md), [SDK context contracts](SDK_CONTEXT.md), [Architecture](ARCHITECTURE.md) |
84
81
  | `extensions`, `packages` | [Packages and Extensions](EXTENSIONS.md), [starter extension](examples/starter-extension/README.md) |
85
82
  | `skills` | [Agent Guide](AGENT_GUIDE.md) plus `.agents/skills/*` |
86
83
  | `harnesses` | [Agent Guide](AGENT_GUIDE.md) plus `.agents/skills/HARNESS_COMPATIBILITY.md` |
@@ -60,8 +60,8 @@ also fixes the expected unique-fact shape:
60
60
 
61
61
  | Tracker tier | Group spend / budget | Seen items | Suppressed repeats | Delivered bytes |
62
62
  | ------------ | -------------------- | ---------- | ------------------ | --------------- |
63
- | 2 items | 3,663 / 20,000 | 2 | 3 | 14,646 |
64
- | 2,243 items | 9,999 / 20,000 | 106 | 7 | 39,985 |
63
+ | 2 items | 3,820 / 20,000 | 2 | 3 | 15,274 |
64
+ | 2,243 items | 10,156 / 20,000 | 106 | 7 | 40,614 |
65
65
 
66
66
  These are deterministic synthetic-corpus measurements from
67
67
  `scripts/release/context-intent-calibration.json`; they contain no hosted
package/docs/SDK.md CHANGED
@@ -35,6 +35,14 @@ ownership are tracked by [pm-ig5cfe](../.agents/pm/issues/pm-ig5cfe.toon),
35
35
  [pm-495lkc](../.agents/pm/issues/pm-495lkc.toon), and
36
36
  [pm-miy5k6](../.agents/pm/issues/pm-miy5k6.toon).
37
37
 
38
+ Shared item addressing, lossless recovery, explicit-empty create policy,
39
+ semantic command discovery, and append-stable linked tests are tracked by
40
+ [pm-mkinft](../.agents/pm/issues/pm-mkinft.toon),
41
+ [pm-p316vn](../.agents/pm/issues/pm-p316vn.toon),
42
+ [pm-st7wgu](../.agents/pm/issues/pm-st7wgu.toon),
43
+ [pm-g543](../.agents/pm/issues/pm-g543.toon), and
44
+ [pm-x2vx](../.agents/pm/issues/pm-x2vx.toon).
45
+
38
46
  Use it for extension authoring, package authoring, command/action contract discovery, and deterministic app or CI automation. Do not import private `src/core/...` modules from external integrations or packages.
39
47
 
40
48
  ## Install
@@ -309,6 +317,7 @@ Command/action contract exports:
309
317
  - Execution and diagnostics engines: `runTest`, `runLinkedTests`, `runTestAll`, `runStartBackgroundRun`, `runTestRunsList`, `runTestRunsStatus`, `runTestRunsLogs`, `runTestRunsStop`, `runTestRunsResume`, `runTestRunsWorker`, `runEval`, `runTelemetry`, and `runStats`. Their CLI modules are compatibility re-exports of SDK-owned implementations.
310
318
  - Execution and diagnostics contracts: `TestCommandOptions` / `TestResult` / `TestRunResult`, `TestAllCommandOptions` / `TestAllResult`, `StartBackgroundRunCommandOptions` / `StartBackgroundRunResult`, `TestRuns*CommandOptions`, `EvalOptions` / `EvalResult`, `TelemetryCommandOptions` / `TelemetrySubcommand`, and `StatsCommandOptions` / `StatsResult`.
311
319
  - Linked-test authoring primitives: `parseLinkedTestJsonEntries`, the `parseLinkedTest*` field parsers, `LINKED_TEST_PM_CONTEXT_MODE_VALUES`, `LINKED_TEST_PROTECTED_ENV_KEYS`, `classifyLinkedTestFailure`, `countFailureCategories`, and `summarizeContextPreflight` let custom hosts validate, execute, classify, and report linked tests without duplicating CLI policy.
320
+ - Agent command primitives: `normalizeItemAddressInvocation` and `supportsItemIdAlias` project one item-id grammar across CLI adapters; `renderMissingOptionRetry` and `resolveMissingOptionPlaceholder` preserve attempted argv while deriving enum, boolean, and scalar recovery arity from flag contracts; `rankCommandPaths` and `scoreCommandPathMatch` provide deterministic synonym/edit-distance/substring ranking; `resolveCreateExplicitEmptyFlag` and `supportsCreateExplicitEmpty` model a considered-but-empty strict repeatable input without inventing metadata or graph edges.
312
321
  - Typed plan workflow primitives on `PmClient`: `plan`, `planCreate`, `planShow`, `planAddStep`, `planUpdateStep`, `planCompleteStep`, `planBlockStep`, `planReorderStep`, `planRemoveStep`, `planLink`, `planUnlink`, `planDecision`, `planDiscovery`, `planValidation`, `planResume`, `planApprove`, and `planMaterialize`
313
322
  - Plan contracts: `PlanSubcommand`, `PlanCommandOptions`, `PlanCommandResult`, `PlanResultPlan`, `PlanStepSummary`, `PlanShowDepth`, and `PlanTemplateName`
314
323
  - Typed package and extension lifecycle primitives on `PmClient`: `extension`, `extensionList`, `extensionActivate`, `extensionDeactivate`, `package`, `packageList`, `packageInstall`, `packageUninstall`, `packageDoctor`, `packageManage`, `packageDescribe`, `packageReload`, `packageCatalog`, `packageActivate`, `packageDeactivate`, `packageMigrate`, and `upgrade`; one-shot `extensionMigrate` and `packageMigrate` helpers mirror those lifecycle actions.
@@ -1272,11 +1281,21 @@ const result = await commitItemMutations({
1272
1281
  `commitWorkspaceTransaction` remains the escape hatch for arbitrary domains
1273
1282
  (relationship events, foreign stores, mixed-step plans); `commitItemMutations`
1274
1283
  covers the item-mutation 90% case with correct-by-construction wiring.
1275
- Update mutation options use the same acceptance-criteria representation as the
1276
- CLI: criteria are stored in one string with semicolons as boundaries. Therefore
1277
- each `addAc`/`removeAc` entry must be semicolon-free; unmatched removals are
1278
- reported as `remove_ac_unmatched:<text>` warnings rather than disappearing as
1279
- silent no-ops.
1284
+ Update mutation options use the same lossless acceptance-criteria contract as
1285
+ the CLI: criteria are stored in one string with semicolons as boundaries, so
1286
+ each `addAc`/`removeAc` entry must be semicolon-free. Every removal must match or
1287
+ the complete mutation rejects with `acceptance_criteria_remove_unmatched` and
1288
+ structured `unmatched` recovery data. Whole-value `acceptanceCriteria`
1289
+ replacement is mutually exclusive with additive edits and returns an
1290
+ `acceptance_criteria_replaced:<before-count>:<after-count>` warning when it
1291
+ changes existing criteria.
1292
+
1293
+ Create and update mutation options also resolve every newly supplied local
1294
+ dependency target before persistence. Use `source_kind: "external"` for a
1295
+ cross-workspace endpoint. A staged local import must opt in with
1296
+ `allowUnresolvedDeps: true`; successful results then retain one
1297
+ `dependency_target_unresolved:<id>` warning per missing target. Bulk dry-runs
1298
+ perform the identical validation before producing a plan.
1280
1299
 
1281
1300
  `parseItemMutationBatch` is the strict legacy JSON boundary for that primitive. It
1282
1301
  accepts either a non-empty mutation array or `{ "mutations": [...] }`, derives
@@ -3258,9 +3277,15 @@ For SDK and automation consumers, the key runtime change is the optional `recove
3258
3277
  - `suggested_retry`
3259
3278
 
3260
3279
  Treat `recovery.suggested_retry` as the first-choice deterministic replay
3261
- command when present. It is emitted only from structured recovery metadata or
3262
- flags declared on the invoked command; prose that merely mentions another flag
3263
- is not interpreted as a missing input.
3280
+ command when present. Generic missing-option retries preserve every original
3281
+ argv token, insert only absent real flags before the first `--` argument
3282
+ terminator while leaving that terminator in place, and derive placeholders from
3283
+ the declared flag domain (`<off|warn|strict>` for enum values and no placeholder
3284
+ for booleans). It is emitted only from structured recovery metadata or flags
3285
+ declared on the invoked command; prose that merely mentions another flag is not
3286
+ interpreted as a missing input. Strict close validation reports missing
3287
+ resolution fields first and suggests a targeted `pm update` before retrying the
3288
+ original close invocation.
3264
3289
 
3265
3290
  ## Authoring Pattern
3266
3291
 
@@ -95,14 +95,15 @@ host declarations retain precedence over this inference.
95
95
  `diagnoseAgentIdentity()` is the additive diagnostic companion to
96
96
  `detectAgentIdentity()`. It returns the same privacy-safe identity plus a
97
97
  `provenance_outcomes` row for every built-in dimension. Each row is
98
- `resolved`, `unavailable`, or `failed`, carries rule version `v1`, and may name
98
+ `resolved`, `unavailable`, `not_configured`, or `failed`, carries rule version `v1`, and may name
99
99
  the bounded built-in resolver. It never contains environment values, session
100
100
  paths, prompts, or file contents.
101
101
 
102
102
  New mutation history records failed resolver outcomes under
103
103
  `context.agent_provenance_outcomes`; ordinary unavailable dimensions retain
104
104
  the compact legacy-compatible null projection. A resolver is only counted as
105
- attempted when its required input exists. Consequently `pm health` can report
105
+ attempted when its required input belongs to the detected harness; a foreign
106
+ host's shared `AI_AGENT` value is not Codex input. Consequently `pm health` can report
106
107
  `provenance_resolver_zero_success:<harness>:<dimension>:<resolver>:<attempts>`
107
108
  without confusing an unavailable harness signal with a failed resolver. The
108
109
  warning is advisory and the storage check includes the bounded attempt and
@@ -0,0 +1,97 @@
1
+ # SDK context platform
2
+
3
+ Tracker: [pm-9hv1o7](../.agents/pm/issues/pm-9hv1o7.toon).
4
+
5
+ `pm` treats project management as context management. This task-oriented entry
6
+ point routes SDK hosts, package authors, CLI integrators, and agents to the
7
+ smallest authoritative context primitive.
8
+
9
+ ## Choose the smallest authoritative read
10
+
11
+ - Use `PmClient.context()` for ranked working context and bounded workspace memory.
12
+ - Use `PmClient.listAllItemMetadataLight()` or
13
+ `listAllItemMetadataLight(pmRoot)` for whole-project scalar metadata without
14
+ bodies or heavy annotation/evidence collections.
15
+ - Use `PmClient.get(id, { depth: "deep" })` when one item needs its complete
16
+ collections. Shallower reads carry an omission receipt naming every withheld
17
+ group and the exact `--fields` restoration.
18
+ - Use mutation events for changes since a cursor instead of repeatedly loading
19
+ a full workspace.
20
+
21
+ The root package, `sdk/runtime`, and `PmClient` expose the lightweight reader.
22
+ It distinguishes an empty tracker from a missing or invalid root and preserves
23
+ custom item-type folders from workspace settings.
24
+
25
+ ## Rank and pack context
26
+
27
+ Context ranking combines recency, activity, graph proximity, priority, risk,
28
+ knowledge density, structural fit, and caller affinity. Derived signal snapshots
29
+ are rebuildable; item documents and history remain authoritative. Invalid,
30
+ stale, or unwritable snapshots return a stable warning, its meaning, an
31
+ executable recovery command, and the expected effect. Re-running `pm context`
32
+ confirms a successful rebuild as fresh.
33
+
34
+ See [Context relevance and packing](CONTEXT_RELEVANCE.md) for signal and token
35
+ budgets, and [context coordination](SDK_CONTEXT_COORDINATION.md) for cursored
36
+ events and duplicate governance.
37
+
38
+ ## Preserve truth at boundaries
39
+
40
+ Bounded reads disclose omissions. Bounded annotation mutations return the
41
+ changed entry instead of replaying complete history. Unknown-author findings
42
+ route directly to append-only attribution. Diagnostics remain read-only unless
43
+ a mutation is explicitly selected.
44
+
45
+ See [context integrity](SDK_CONTEXT_INTEGRITY.md) for output selectors,
46
+ annotation receipts, attribution coordinates, provider boundaries, and
47
+ replication enforcement; see [truth contracts](SDK_CONTEXT_TRUTH_CONTRACTS.md)
48
+ for tracker-root and merge-driver distinctions.
49
+
50
+ ## Build package workflows
51
+
52
+ Use the root SDK for application workflows and `sdk/runtime` for dependency-light
53
+ host primitives. Runtime contracts are authoritative for active flags and
54
+ package-contributed commands:
55
+
56
+ ```bash
57
+ pm <command> --help --json
58
+ pm contracts --command <command> --flags-only --json
59
+ pm contracts --runtime-only --json
60
+ ```
61
+
62
+ Use `findSimilarItems` for one proposal, `findDuplicateClusters` for a bounded
63
+ whole-tracker sweep, and `prepareSimilarityText` with
64
+ `scorePreparedItemSimilarity` for custom pipelines. All paths share one
65
+ canonical Jaccard implementation and one canonical status-token normalizer.
66
+
67
+ See [context integrity primitives](SDK_CONTEXT_INTEGRITY_PRIMITIVES.md) for
68
+ duplicate batches, structured errors, Plan evidence, tombstones, linked-test
69
+ output, and extension output ownership.
70
+
71
+ ## Validate and recover
72
+
73
+ Fast health projections use light metadata. Validation materializes collections
74
+ needed by evidence and relationship checks, but loads bodies only for strict
75
+ history-drift verification. Unknown-author remediation is shared:
76
+
77
+ ```bash
78
+ pm health --verbose-author-events --json
79
+ pm history-author-acknowledge --all-actionable \
80
+ --attributed-author "<principal>" \
81
+ --reviewer "<reviewer>" \
82
+ --reason "<evidence>"
83
+ ```
84
+
85
+ Run repository gates after public SDK changes:
86
+
87
+ ```bash
88
+ pnpm build
89
+ pnpm typecheck
90
+ pnpm quality:surface-replication
91
+ pnpm sdk:surface:check
92
+ node scripts/run-tests.mjs coverage
93
+ ```
94
+
95
+ The replication gate reports an AST-derived denominator of repeated named rule
96
+ bodies and enforces a non-decreasing detector floor, so deleting declarations
97
+ cannot make recurring implementation rules disappear from governance reports.
@@ -18,6 +18,12 @@ pm get pm-a1b2 --output-include item,claim_state
18
18
 
19
19
  An unknown selector is a usage refusal that lists the valid vocabulary. Selecting the complete `item` object together with an item field is also refused because the two selectors express conflicting projection depths. Every successful projection carries an `omission_receipt` with the exact selectors needed to restore withheld item fields or sections.
20
20
 
21
+ Automatic receipts cover every heavy item collection (`comments`, `notes`,
22
+ `learnings`, `files`, `tests`, `docs`, `reminders`, and `events`) plus `body`,
23
+ `children`, `claim_state`, `linked`, and `schedule`. Empty included collections
24
+ are distinguishable from omitted collections because inclusion is derived from
25
+ property presence, not collection length.
26
+
21
27
  Standard and brief item reads expose the stable `collection_counts` selector;
22
28
  full reads retain those counts and normalize every supported collection key to
23
29
  an array. `--output-include item.collection_counts` therefore uses the same
@@ -49,7 +55,7 @@ pm history-author-acknowledge \
49
55
  --reason "Verified workspace provenance"
50
56
  ```
51
57
 
52
- The SDK exposes `resolveUnknownAuthorAcknowledgmentSelector` and `parseUnknownAuthorHistoryEventCoordinates` so packages never need a private copy of this grammar.
58
+ The SDK exposes `resolveUnknownAuthorAcknowledgmentSelector` and `parseUnknownAuthorHistoryEventCoordinates` so packages never need a private copy of this grammar. Health and validate map actionable unknown-author warnings directly to this append-only acknowledgment command instead of sending callers through another diagnostic loop.
53
59
 
54
60
  ## Health provider boundary
55
61
 
@@ -57,11 +63,18 @@ The SDK exposes `resolveUnknownAuthorAcknowledgmentSelector` and `parseUnknownAu
57
63
 
58
64
  Storage integrity is evaluated independently of that provider boundary. Lossless merge receipts remain visible as provenance, while only receipts containing discarded scalar values produce `merge_decisions_unreviewed` guidance; neither classification enables vector refresh or remote provider I/O.
59
65
 
66
+ Brief and summary check-only health projections use the scalar-only metadata
67
+ reader. Validation uses collection-bearing metadata for evidence and
68
+ relationship checks and materializes bodies only when strict history-drift
69
+ verification is requested.
70
+
60
71
  The storage check also reads at most 10,000 local immutable events for bounded
61
72
  agent-provenance resolver outcomes. This scan performs no network or provider
62
73
  I/O, tolerates malformed streams already owned by integrity diagnostics, and
63
74
  reports an advisory warning only when a resolver was actually attempted but
64
- never succeeded.
75
+ never succeeded. The same bounded pass classifies bare boolean and single-digit
76
+ values across every recorded provenance dimension, publishes only aggregate
77
+ harness/dimension/kind counts, and never echoes the historical value.
65
78
 
66
79
  ## Replication and refusal gate
67
80
 
@@ -70,7 +83,9 @@ never succeeded.
70
83
  - active set recurrence density;
71
84
  - the largest source member’s utilization of the mandatory file-size cap;
72
85
  - every remaining CLI-owned `PmCliError`, grouped by an explicit adapter-level disposition;
73
- - applied waivers, including their PM owner and expiry.
86
+ - applied waivers, including their PM owner and expiry;
87
+ - an AST-derived denominator of identical named rule bodies, declared coverage,
88
+ and a non-decreasing detected-cluster floor.
74
89
 
75
90
  Query waivers directly with:
76
91
 
@@ -14,12 +14,12 @@
14
14
  },
15
15
  {
16
16
  "id": "returning-agent",
17
- "max_estimated_tokens": 383
17
+ "max_estimated_tokens": 597
18
18
  },
19
19
  {
20
20
  "id": "failing-command",
21
21
  "max_estimated_tokens": 197
22
22
  }
23
23
  ],
24
- "composite_max_estimated_tokens": 2437
24
+ "composite_max_estimated_tokens": 2651
25
25
  }
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.8.9"
9
+ "version": "2026.8.10"
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.8.9",
16
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -120,7 +120,7 @@
120
120
  "lint:complexity:baseline": "eslint . --suppress-rule complexity --suppress-rule sonarjs/cognitive-complexity",
121
121
  "lint:duplicates": "jscpd --config .jscpd.json",
122
122
  "lint:codefactor": "pnpm quality:static",
123
- "quality:static": "pnpm build && pnpm exec tsx scripts/release/static-quality-gate.mts --max-eslint-suppressions 114 --max-coverage-ignore-pragmas 477 --min-docstring-coverage 100 --min-exported-docstring-coverage 100 --min-member-docstring-coverage 100 && node scripts/release/audit-package-boundary.mjs && node scripts/release/package-sdk-contract-parity.mjs && node scripts/release/surface-replication-gate.mjs && node scripts/release/token-budget-gate.mjs && node scripts/release/context-intent-calibration-gate.mjs && node scripts/release/tracker-measurement-gate.mjs && node scripts/release/gate-registry.mjs && node scripts/sdk-surface-snapshot.mjs --check && node scripts/bench/sdk-entrypoint-costs.mjs --check && node scripts/bench/cli-transport-floor.mjs --check",
123
+ "quality:static": "pnpm build && pnpm exec tsx scripts/release/static-quality-gate.mts --max-eslint-suppressions 114 --max-coverage-ignore-pragmas 477 --min-docstring-coverage 100 --min-exported-docstring-coverage 100 --min-member-docstring-coverage 100 && node scripts/release/audit-package-boundary.mjs && node scripts/release/package-sdk-contract-parity.mjs && node scripts/release/surface-replication-gate.mjs && node scripts/release/absence-tolerance-gate.mjs && node scripts/release/token-budget-gate.mjs && node scripts/release/context-intent-calibration-gate.mjs && node scripts/release/tracker-measurement-gate.mjs && node scripts/release/gate-registry.mjs && node scripts/sdk-surface-snapshot.mjs --check && node scripts/bench/sdk-entrypoint-costs.mjs --check && node scripts/bench/cli-transport-floor.mjs --check",
124
124
  "quality:token-budget": "node scripts/release/token-budget-gate.mjs",
125
125
  "quality:token-surface": "node scripts/measure-agent-token-surface.mjs --check",
126
126
  "quality:token-surface:update": "pnpm build && node scripts/measure-agent-token-surface.mjs --update",
@@ -133,6 +133,7 @@
133
133
  "quality:tracker-measurements": "pnpm build && node scripts/release/tracker-measurement-gate.mjs",
134
134
  "quality:package-artifact": "pnpm build && node scripts/release/package-artifact-gate.mjs",
135
135
  "quality:surface-replication": "node scripts/release/surface-replication-gate.mjs",
136
+ "quality:absence-tolerance": "node scripts/release/absence-tolerance-gate.mjs",
136
137
  "quality:docs-skills": "node scripts/release/docs-skills-gate.mjs",
137
138
  "quality:docs-links": "node scripts/release/docs-skills-gate.mjs --links-only",
138
139
  "quality:hosted-analysis": "node scripts/release/hosted-analysis-gate.mjs",
@@ -160,8 +161,8 @@
160
161
  "version:next": "node scripts/release-version.mjs next",
161
162
  "version:sync": "node scripts/sync-versions.mjs apply",
162
163
  "changelog:pm:install": "node dist/cli.js install npm:pm-changelog --project",
163
- "changelog:pm": "pnpm changelog:pm:install && node dist/cli.js changelog generate --output CHANGELOG.md --title \"Changelog\" --mode replace --all-release-tags --status closed --item-url-base https://github.com/unbraind/pm-cli/blob/main/.agents/pm",
164
- "changelog:pm:check": "pnpm changelog:pm:install && node dist/cli.js changelog generate --output CHANGELOG.md --title \"Changelog\" --mode replace --all-release-tags --status closed --item-url-base https://github.com/unbraind/pm-cli/blob/main/.agents/pm --check",
164
+ "changelog:pm": "pnpm changelog:pm:install && node dist/cli.js changelog generate --output CHANGELOG.md --title \"Changelog\" --mode replace --all-release-tags --status closed --exclude-tag changelog-exclude --item-url-base https://github.com/unbraind/pm-cli/blob/main/.agents/pm",
165
+ "changelog:pm:check": "pnpm changelog:pm:install && node dist/cli.js changelog generate --output CHANGELOG.md --title \"Changelog\" --mode replace --all-release-tags --status closed --exclude-tag changelog-exclude --item-url-base https://github.com/unbraind/pm-cli/blob/main/.agents/pm --check",
165
166
  "release:notes": "node scripts/generate-release-notes.mjs",
166
167
  "release:gates": "node scripts/release/run-gates.mjs --telemetry-mode best-effort",
167
168
  "verify:preflight": "node scripts/release/run-gates.mjs --telemetry-mode best-effort",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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.8.9",
4
+ "version": "2026.8.10",
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.8.9",
3
+ "version": "2026.8.10",
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",