@unbrained/pm-cli 2026.9.9 → 2026.9.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.
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +17 -0
- package/dist/cli/command-namespaces.d.ts +9 -0
- package/dist/cli/command-namespaces.js +2 -0
- package/dist/cli/help-content.js +1 -1
- package/dist/cli/help-json-payload.d.ts +5 -1
- package/dist/cli/help-json-payload.js +2 -2
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.js +3 -3
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli/register-operations.d.ts +0 -5
- package/dist/cli/register-operations.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +154 -154
- package/dist/cli-bundle/chunks/chunk-4SFBH77G.js +2233 -0
- package/dist/cli-bundle/chunks/{chunk-4VL5P22L.js → chunk-74RGSPLL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WQKMSFBV.js → chunk-7WIHZI2M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-L5RCDKQ2.js → chunk-EOCKPCEY.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-GLQMKUGP.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-OHNLSGGV.js → chunk-I6XT3DLQ.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-MACGGTLQ.js +29 -0
- package/dist/cli-bundle/chunks/{chunk-ECBLPN7B.js → chunk-NKOYVKFM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-Z3XVXUVF.js → chunk-P6BEYAON.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3IPRM75M.js → chunk-PYUITRSV.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-T3AMFUCN.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-D3YVILJJ.js → chunk-TSWEX72T.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-J6ERHBV2.js → chunk-YKQTETJI.js} +71 -71
- package/dist/cli-bundle/chunks/{register-list-query-UIHRCS6D.js → register-list-query-CUIW7SSE.js} +2 -2
- package/dist/cli-bundle/chunks/register-mutation-5F5CYUWZ.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-XIZPLPQY.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-PERI45EM.js → register-setup-JVGPCAIL.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-OQUGRHKV.js → chunk-26O2WB73.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-5YU75QLV.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-QQQ4SAUO.js → chunk-7N5MRONP.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-B2CMFYRZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PNKIANFZ.js → chunk-CRY5MHEI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YCDQ2N23.js → chunk-F6WKFXBT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BUCJUZVG.js → chunk-FHUARRMA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-5FHTCOHS.js → chunk-M36SF4GE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-TTYXF5YD.js → chunk-OROZM37I.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XNR3DM6J.js → chunk-PNGYYQY7.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZTCE4UO6.js → chunk-SL5YVVPV.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-XSS3APUF.js → chunk-TPOL4TWE.js} +5 -5
- package/dist/cli-bundle/focused-chunks/{chunk-7PC4R5QB.js → chunk-U5SHHU7E.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-2WSBXIGF.js → chunk-XSMA2W6Q.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-ZAWAL2CG.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-7N6DOREF.js → chunk-ZDNAWWQI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YJUXGS57.js → chunk-ZJHYQOTM.js} +2 -2
- package/dist/cli-bundle/main.js +26 -26
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +37 -37
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +10 -10
- package/dist/sdk/agent/item-addressing.js +1 -1
- package/dist/sdk/agent-capability-contracts.js +1 -1
- package/dist/sdk/cli-bootstrap.js +1 -1
- package/dist/sdk/cli-contracts/command-aliases.d.ts +11 -1
- package/dist/sdk/cli-contracts/command-aliases.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +4 -1
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -3
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1
- package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +2 -0
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/completion.js +359 -346
- package/dist/sdk/index.d.ts +2 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/lifecycle/claim.js +1 -1
- package/dist/sdk/lifecycle/lifecycle-transitions.d.ts +1 -1
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
- package/dist/sdk/lifecycle/mcp-actions.js +1 -1
- package/dist/sdk/lifecycle/task-composition.d.ts +17 -0
- package/dist/sdk/lifecycle/task-composition.js +2 -0
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/workspace-contracts.d.ts +3 -0
- package/dist/sdk/query/workspace-contracts.js +2 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime.d.ts +69 -9
- package/dist/sdk/runtime.js +1 -1
- package/docs/COMMANDS.md +26 -24
- package/docs/COMMAND_NAMESPACES.md +65 -0
- package/docs/LIFECYCLE_COMMANDS.md +77 -0
- package/docs/README.md +2 -0
- package/docs/generated/AGENT_CAPABILITY_ROUTING.md +6 -6
- package/docs/generated/AGENT_COMMAND_SURFACE.md +19 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +21 -3
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +2 -2
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/README.md +4 -2
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/README.md +6 -4
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +0 -29
- package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +0 -2
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XZ6T7YPP.js +0 -2217
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +0 -2
package/docs/COMMANDS.md
CHANGED
|
@@ -54,8 +54,8 @@ JSON ceiling; TOON uses the smaller default agent ceiling.
|
|
|
54
54
|
| Family | Commands | Purpose |
|
|
55
55
|
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
56
56
|
| Bootstrap | `init`, `config`, `health`, `telemetry` | create and inspect tracker setup |
|
|
57
|
-
| Lifecycle | `create`, `copy`, `focus`, `claim`, `update`, `item reopen`, `append`, `close`, `release`, `delete
|
|
58
|
-
| Bulk | `item mutate`, `item complete`, `update
|
|
57
|
+
| Lifecycle | `create`, `copy`, `focus`, `claim`, `update`, `item reopen`, `append`, `close`, `release`, `close delete` | mutate item state, including terminal-work recurrence without duplicate creation |
|
|
58
|
+
| Bulk | `item mutate`, `item complete`, `update many`, `close many` | atomically commit heterogeneous SDK mutation batches or evidence-backed completion, or apply one change across a matched, dry-run-previewed set with a rollback checkpoint |
|
|
59
59
|
| Scheduling | `meet`, `event`, `remind` | low-friction Meeting/Event/Reminder creation |
|
|
60
60
|
| Planning | `plan create`, `plan add-step`, `plan update-step`, `plan complete-step`, `plan link`, `plan approve`, `plan materialize` | agent-optimized living plans with ordered steps, evidence, decisions, validation, and materialization |
|
|
61
61
|
| Links | `files`, `docs`, `test`, `deps` | connect items to artifacts, tests, and relationships |
|
|
@@ -404,28 +404,28 @@ pm list --status open --has-tests --no-files --json
|
|
|
404
404
|
|
|
405
405
|
## Bulk Operations
|
|
406
406
|
|
|
407
|
-
`update
|
|
407
|
+
`update many` and `close many` apply one change across a matched set with a dry-run preview and a rollback checkpoint. Both share the `--filter-*` scoping family (`--filter-status/-type/-tag/-priority/-sprint/-release/-parent/-assignee/-deadline-before|after/-updated-after|before/-created-after|before`) plus `--ids` for an explicit comma-separated allowlist intersected with the other filters. `update many` additionally accepts the missing-metadata selectors `--filter-ac-missing`/`--filter-estimates-missing`/`--filter-resolution-missing`/`--filter-metadata-missing` for bulk metadata backfill.
|
|
408
408
|
|
|
409
|
-
Both `update
|
|
409
|
+
Both `update many` and `close many` also accept the governance-field selectors `--filter-reviewer-missing`/`--filter-risk-missing`/`--filter-confidence-missing`/`--filter-sprint-missing`/`--filter-release-missing` and the content-field presence selectors under the `--filter-` prefix: `--filter-has-notes`/`--filter-no-notes`, `--filter-has-learnings`/`--filter-no-learnings`, `--filter-has-files`/`--filter-no-files`, `--filter-has-docs`/`--filter-no-docs`, `--filter-has-tests`/`--filter-no-tests`, `--filter-has-comments`/`--filter-no-comments`, `--filter-has-deps`/`--filter-no-deps`, `--filter-has-body`/`--filter-empty-body`, and `--filter-has-linked-command`/`--filter-no-linked-command`. These mirror the list/search presence filters and intersect with the rest of the scoping family, so you can bulk-select (for example) closed Tasks with no documented learnings before applying a change.
|
|
410
410
|
|
|
411
411
|
```bash
|
|
412
412
|
# Bulk metadata update by explicit id allowlist (compose with search --json | jq)
|
|
413
|
-
pm update
|
|
414
|
-
pm update
|
|
413
|
+
pm update many --ids pm-a,pm-b,pm-c --priority 1 --dry-run
|
|
414
|
+
pm update many --filter-tag wave:7 --reviewer maintainer-review
|
|
415
415
|
|
|
416
416
|
# Bulk-backfill a placeholder estimate onto open Tasks that have none
|
|
417
|
-
pm update
|
|
417
|
+
pm update many --filter-status open --filter-type Task --filter-estimates-missing --estimate 60 --dry-run
|
|
418
418
|
|
|
419
419
|
# Audited bulk close: routes EACH match through full `pm close` semantics
|
|
420
420
|
# (close validation, active-child orphan checks, blocked-edge cleanup) — unlike
|
|
421
421
|
# `update-many --status closed`, which bypasses them. A shared --reason is required
|
|
422
422
|
# and at least one filter is required so it never matches every item.
|
|
423
|
-
pm close
|
|
424
|
-
pm close
|
|
425
|
-
pm close
|
|
423
|
+
pm close many --filter-sprint S-12 --reason "Sprint S-12 acceptance criteria met" --dry-run
|
|
424
|
+
pm close many --filter-sprint S-12 --reason "Sprint S-12 acceptance criteria met"
|
|
425
|
+
pm close many --rollback close-many-20260604-abc123 # restore the batch
|
|
426
426
|
```
|
|
427
427
|
|
|
428
|
-
`close
|
|
428
|
+
`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>`.
|
|
429
429
|
|
|
430
430
|
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.
|
|
431
431
|
|
|
@@ -511,10 +511,10 @@ did-you-mean diagnostic instead of becoming an accidental custom field.
|
|
|
511
511
|
|
|
512
512
|
Repeated singular/plural list flags now accumulate, so `--tag a --tag b` is equivalent to `--tags a,b` (the same holds for `--status`, `--ids`, and `--fields` on read commands). Earlier versions silently kept only the last value. `list`/`search` also accept `--tags` as a never-block alias for the canonical read filter `--tag`.
|
|
513
513
|
|
|
514
|
-
`--tags` REPLACES the whole tag list. To edit tags without restating the full set, use the additive/subtractive flags on `create`/`update`/`update
|
|
514
|
+
`--tags` REPLACES the whole tag list. To edit tags without restating the full set, use the additive/subtractive flags on `create`/`update`/`update many`:
|
|
515
515
|
|
|
516
516
|
- `--add-tags <value>` adds tags to the existing list without replacing it (repeatable; CSV or JSON-array values accepted).
|
|
517
|
-
- `--remove-tags <value>` prunes the given tags from the existing list (repeatable; CSV or JSON-array). Available on `update`/`update
|
|
517
|
+
- `--remove-tags <value>` prunes the given tags from the existing list (repeatable; CSV or JSON-array). Available on `update`/`update many` only — `create` has no prior tags to remove.
|
|
518
518
|
|
|
519
519
|
```bash
|
|
520
520
|
pm update pm-abc1 --add-tags urgent,backend # keeps existing tags, adds two
|
|
@@ -522,7 +522,7 @@ pm update pm-abc1 --remove-tags stale # drops "stale", keeps the rest
|
|
|
522
522
|
pm create "New backend task" --add-tags backend,p1
|
|
523
523
|
```
|
|
524
524
|
|
|
525
|
-
Acceptance criteria get the same additive treatment on `update`/`update
|
|
525
|
+
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.
|
|
526
526
|
|
|
527
527
|
```bash
|
|
528
528
|
pm update pm-abc1 --add-ac "error path covered by a regression test"
|
|
@@ -555,7 +555,7 @@ pm update <id> \
|
|
|
555
555
|
--message "Append audit evidence"
|
|
556
556
|
```
|
|
557
557
|
|
|
558
|
-
`--expected` and `--actual` are short aliases for `--expected-result` and `--actual-result` on `create`/`update`/`update
|
|
558
|
+
`--expected` and `--actual` are short aliases for `--expected-result` and `--actual-result` on `create`/`update`/`update many`, matching the aliases `pm close` already accepts:
|
|
559
559
|
|
|
560
560
|
```bash
|
|
561
561
|
pm update <id> --expected "Retry succeeds after backoff" --actual "Retry threw on first attempt"
|
|
@@ -702,12 +702,12 @@ Use `pm close <id> "<reason>"` instead of `pm update --status closed`.
|
|
|
702
702
|
|
|
703
703
|
## Lifecycle Aliases
|
|
704
704
|
|
|
705
|
-
Lifecycle
|
|
705
|
+
Lifecycle composition flags combine claim, status, and close operations:
|
|
706
706
|
|
|
707
707
|
```bash
|
|
708
|
-
pm
|
|
709
|
-
pm
|
|
710
|
-
pm close
|
|
708
|
+
pm claim <id> --start # claim + move to the configured in-progress status
|
|
709
|
+
pm release <id> --pause # move to the configured open status + release claim
|
|
710
|
+
pm close <id> "<reason>" --release-assignment # close with evidence + release assignment
|
|
711
711
|
```
|
|
712
712
|
|
|
713
713
|
For lifecycle ownership commands, `--assignee <agent>` is accepted as an alias
|
|
@@ -715,9 +715,11 @@ for `--author <agent>` on `claim`, `release`, `start-task`, `pause-task`, and
|
|
|
715
715
|
`close-task`. Use `pm update --assignee <person>` when changing item metadata
|
|
716
716
|
rather than active work ownership.
|
|
717
717
|
|
|
718
|
-
|
|
718
|
+
The old task spellings remain hidden compatibility aliases. See [Lifecycle Commands and Ownership](LIFECYCLE_COMMANDS.md) for migration, typed SDK receipts, MCP controls, and partial-failure semantics.
|
|
719
719
|
|
|
720
|
-
|
|
720
|
+
Tracker references: [pm-eq4x](../.agents/pm/tasks/pm-eq4x.toon), [pm-ik19](../.agents/pm/tasks/pm-ik19.toon), [pm-qfte](../.agents/pm/tasks/pm-qfte.toon), [pm-98cz](../.agents/pm/features/pm-98cz.toon).
|
|
721
|
+
|
|
722
|
+
After `pm create` of a workable item type, the result includes a non-binding `next_transition` hint (`pm claim <id> --start` → `in_progress`) when the workflow defines a distinct in-progress status. This nudges agents to move work through `in_progress` instead of jumping straight from `open` to `closed`. Scheduling/reference types (Event, Meeting, Reminder, Milestone, Decision) never receive the hint. (GH-216)
|
|
721
723
|
|
|
722
724
|
## Scheduling Shortcuts
|
|
723
725
|
|
|
@@ -908,7 +910,7 @@ Use dry-run modes before broad lifecycle or cleanup changes.
|
|
|
908
910
|
- `embeddings` removes keyword/semantic artifacts (`search/embeddings.jsonl`, `search/vectorization-status.json`, `search/lancedb/`) plus `search/pending-refresh.json` and its gate, preventing a background worker from rebuilding a partial index against an empty ledger. Rebuild with keyword reindex and semantic reindex when enabled.
|
|
909
911
|
- `locks` removes only provably expired locks, using embedded `created_at + ttl_seconds`. Active, unreadable, or unparseable locks remain. The result reports `scanned`, `removed`, and `retained` counts.
|
|
910
912
|
|
|
911
|
-
The `checkpoints` scope prunes bulk-mutation rollback checkpoints under `checkpoints/` (written by `pm update
|
|
913
|
+
The `checkpoints` scope prunes bulk-mutation rollback checkpoints under `checkpoints/` (written by `pm update many`/`pm close many`) that are older than `checkpoints.retention_days` (default 14; set via `pm config <scope> set checkpoints_retention_days <n>`). Checkpoints whose `created_at` cannot be parsed are retained (safety-first, like the locks sweep), and the result includes a `checkpoints` summary (`scanned`/`removed`/`retained`/`retention_days`). Removing aged checkpoints permanently closes their `--rollback` window.
|
|
912
914
|
|
|
913
915
|
`--fix-hints` is a read-only flag: each failing check gains `details.fix_hints`, an array of `pm` command templates derived from the warning codes it raised (for example `pm history-repair <id>` for history drift, or `pm update <id> --reviewer "<name>"` for a missing reviewer). Generic hints may contain `<id>`/`<field>`/`<path>` placeholders the agent substitutes from the check's detail rows; the resolution check aliases concrete per-row commands and marks `fix_hints_truncated` when the list is summarized. It never mutates items. The mapping comes from the shared remediation registry that also backs `pm health --json` (see Self-Repair Remediation below), so agents gating on `pm validate` can auto-repair findings without hardcoding warning-code-to-command lookups.
|
|
914
916
|
|
|
@@ -916,7 +918,7 @@ The `checkpoints` scope prunes bulk-mutation rollback checkpoints under `checkpo
|
|
|
916
918
|
|
|
917
919
|
`--counts` keeps the validation envelope, check statuses, warning codes, scalar counts/totals, nested count maps, and fix summary totals while recursively omitting diagnostic and fix row arrays. False `*_truncated` markers are omitted; true markers, other false values, and zero counts remain. It is the preferred agent projection when deciding whether drift exists; remove it only when the affected ids or remediation rows are needed. The public SDK `projectValidateCounts` helper applies the identical projection to an already-computed `ValidateResult`.
|
|
918
920
|
|
|
919
|
-
By default the human view caps each diagnostic `*_item_ids` list at 5 entries and sets the matching `*_truncated` flag. `--json` **never** truncates those lists (machine consumers always receive the complete arrays), and `--all-affected-ids` (equivalent to `--verbose-diagnostics`) emits the full lists in human mode too — so bulk remediation can pipe every affected id straight into `pm update
|
|
921
|
+
By default the human view caps each diagnostic `*_item_ids` list at 5 entries and sets the matching `*_truncated` flag. `--json` **never** truncates those lists (machine consumers always receive the complete arrays), and `--all-affected-ids` (equivalent to `--verbose-diagnostics`) emits the full lists in human mode too — so bulk remediation can pipe every affected id straight into `pm update many`:
|
|
920
922
|
|
|
921
923
|
```bash
|
|
922
924
|
pm validate --check-metadata --all-affected-ids
|
|
@@ -1238,7 +1240,7 @@ Invariants:
|
|
|
1238
1240
|
- Promoting a step link preserves its semantic kind. `depends_on` normalizes to the canonical top-level `blocked_by`; `implements` and `verifies` remain first-class directed dependency kinds available to SDK relationship registries and graph consumers.
|
|
1239
1241
|
- Search keyword corpus includes plan_scope, step titles/bodies, decisions, discoveries, validation, and step linked items.
|
|
1240
1242
|
|
|
1241
|
-
`pm delete <id> --json` reports an explicit `outcome` (`deleted` or `would_delete`), `deleted` boolean, and `previous_status`. Compact and `--id-only` output use the mutation outcome as `status`, so agents never mistake the deleted item's former lifecycle state for the delete result.
|
|
1243
|
+
`pm close delete <id> --json` reports an explicit `outcome` (`deleted` or `would_delete`), `deleted` boolean, and `previous_status`. Compact and `--id-only` output use the mutation outcome as `status`, so agents never mistake the deleted item's former lifecycle state for the delete result.
|
|
1242
1244
|
|
|
1243
1245
|
## Machine Contracts
|
|
1244
1246
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Context and operations command namespaces
|
|
2
|
+
|
|
3
|
+
Tracked in [pm-kcs4](../.agents/pm/tasks/pm-kcs4.toon),
|
|
4
|
+
[pm-6apl](../.agents/pm/tasks/pm-6apl.toon), and
|
|
5
|
+
[pm-3i9q8g](../.agents/pm/tasks/pm-3i9q8g.toon).
|
|
6
|
+
|
|
7
|
+
The CLI groups navigation and maintenance under stable nouns. Existing root
|
|
8
|
+
spellings remain executable compatibility aliases with the same arguments,
|
|
9
|
+
results, exit codes, and SDK behavior.
|
|
10
|
+
|
|
11
|
+
| Native invocation | Compatibility spelling | Purpose |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `pm context next` | `pm next` | Select ready work and explain blockers |
|
|
14
|
+
| `pm context focus` | `pm focus` | Read, set, or clear the focused item |
|
|
15
|
+
| `pm ops stats` | `pm stats` | Inspect tracker statistics |
|
|
16
|
+
| `pm ops health` | `pm health` | Diagnose tracker health |
|
|
17
|
+
| `pm ops validate` | `pm validate` | Validate metadata and history |
|
|
18
|
+
| `pm ops gc` | `pm gc` | Clean optional cache artifacts |
|
|
19
|
+
| `pm ops telemetry` | `pm telemetry` | Inspect and manage telemetry |
|
|
20
|
+
| `pm ops eval` | `pm eval` | Evaluate retrieval quality |
|
|
21
|
+
| `pm ops test-all` | `pm test-all` | Run selected linked tests |
|
|
22
|
+
| `pm ops reindex` | `pm reindex` | Refresh indexes through search-advanced |
|
|
23
|
+
| `pm ops normalize` | `pm normalize` | Normalize through an active governance package |
|
|
24
|
+
| `pm history events` | `pm events` | Read or follow committed mutation events |
|
|
25
|
+
|
|
26
|
+
`pm context --limit 10 --for orient` still produces a context snapshot.
|
|
27
|
+
`pm history <id> --verify` still reads and verifies one item's history.
|
|
28
|
+
Namespace leaves do not change either default operation.
|
|
29
|
+
|
|
30
|
+
## Discover only what the current task needs
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pm context next --limit 5 --ready-only
|
|
34
|
+
pm context focus --id pm-example
|
|
35
|
+
pm ops health --check-only --summary
|
|
36
|
+
pm ops validate --check-history-drift
|
|
37
|
+
pm history events --item pm-example --limit 10
|
|
38
|
+
pm ops --help
|
|
39
|
+
pm contracts --command "ops stats" --flags-only
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Help, contracts, and shell completion expose native paths. Compatibility aliases
|
|
43
|
+
remain declared in the SDK alias table. Alias guidance uses the existing
|
|
44
|
+
`ux.deprecation_hints` setting. Human-readable calls emit it on stderr; JSON and
|
|
45
|
+
quiet calls suppress it. Compact contract summaries omit duplicate root alias
|
|
46
|
+
rows; full and explicitly selected contracts retain them. Optional commands appear only when their providing package is active;
|
|
47
|
+
namespace placement does not promote package behavior into core.
|
|
48
|
+
|
|
49
|
+
## SDK and package integration
|
|
50
|
+
|
|
51
|
+
`PM_NAMESPACED_COMMAND_ALIASES` and `resolvePmCommandOperation` are exported
|
|
52
|
+
from `@unbrained/pm-cli/sdk` and `@unbrained/pm-cli/sdk/contracts`.
|
|
53
|
+
The resolver maps a native path such as `context next` to the existing SDK
|
|
54
|
+
operation identity `next`. Unknown paths are preserved. SDK functions, MCP
|
|
55
|
+
action names, extension activation selectors, and command hooks retain their
|
|
56
|
+
existing operation identities.
|
|
57
|
+
|
|
58
|
+
Packages that provide `reindex` or `normalize` keep their existing command
|
|
59
|
+
registration. The CLI places the registered handler beneath `ops` after
|
|
60
|
+
activation, preserving flags, argument parsing, and nested commands. A conflicting
|
|
61
|
+
native destination fails explicitly instead of silently replacing a handler.
|
|
62
|
+
|
|
63
|
+
Generated Bash, Zsh, and Fish scripts recognize namespace command positions and
|
|
64
|
+
skip global option values when selecting a leaf. Re-generate installed completion
|
|
65
|
+
scripts after upgrading with `pm completion <shell>` from guide-shell.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Lifecycle Commands and Ownership
|
|
2
|
+
|
|
3
|
+
Tracked by [pm-ik19](../.agents/pm/tasks/pm-ik19.toon) and
|
|
4
|
+
[pm-eq4x](../.agents/pm/tasks/pm-eq4x.toon).
|
|
5
|
+
|
|
6
|
+
Bulk mutations and ownership compositions share SDK implementations with their
|
|
7
|
+
compatibility spellings. Runtime help and contracts describe the active surface:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pm update many --help
|
|
11
|
+
pm close many --help
|
|
12
|
+
pm close delete --help
|
|
13
|
+
pm contracts --command 'close many' --flags-only --json
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Command migration
|
|
17
|
+
|
|
18
|
+
| Canonical invocation | Compatibility invocation |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| `pm update many --ids <ids> --priority 1` | `pm update-many --ids <ids> --priority 1` |
|
|
21
|
+
| `pm close many --ids <ids> --reason "Verified"` | `pm close-many --ids <ids> --reason "Verified"` |
|
|
22
|
+
| `pm close delete <id> --dry-run` | `pm delete <id> --dry-run` |
|
|
23
|
+
| `pm claim <id> --start` | `pm start-task <id>` |
|
|
24
|
+
| `pm release <id> --pause` | `pm pause-task <id>` |
|
|
25
|
+
| `pm close <id> "Verified" --release-assignment` | `pm close-task <id> "Verified"` |
|
|
26
|
+
|
|
27
|
+
The old spellings remain accepted as hidden aliases. Bulk aliases are permanent;
|
|
28
|
+
the three task aliases are deprecated. Human output for deprecated aliases can
|
|
29
|
+
include migration hints according to `ux.deprecation_hints`; JSON and quiet
|
|
30
|
+
invocations suppress those hints. Bulk commands retain their existing filters,
|
|
31
|
+
stdin selection, dry runs, rollback behavior, and evidence flags. Put bulk flags
|
|
32
|
+
after `many`. Deletion recovery remains `pm history restore <id> <version>`.
|
|
33
|
+
|
|
34
|
+
Plain `claim`, `release`, `update`, and `close` keep their original semantics.
|
|
35
|
+
`claim --start` requires an explicit item and rejects `--next` and
|
|
36
|
+
`--if-available` before mutation. It claims ownership, then moves the item to the
|
|
37
|
+
configured in-progress status. `release --pause` moves work to the configured
|
|
38
|
+
open status, then releases ownership. `close --release-assignment` records the
|
|
39
|
+
close and its inline evidence, then releases ownership.
|
|
40
|
+
|
|
41
|
+
Each constituent operation enforces its own policy and writes its own history.
|
|
42
|
+
Compositions do not provide rollback across operations: for example, if the
|
|
43
|
+
status transition fails after a successful claim, the claim remains. Inspect the
|
|
44
|
+
item before retrying after an error.
|
|
45
|
+
|
|
46
|
+
## SDK and MCP
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import { PmClient } from "@unbrained/pm-cli/sdk";
|
|
50
|
+
|
|
51
|
+
const pm = new PmClient({ pmRoot: "/project/.agents/pm" });
|
|
52
|
+
const started = await pm.claim("pm-example", { start: true });
|
|
53
|
+
const paused = await pm.release("pm-example", { pause: true });
|
|
54
|
+
const closed = await pm.close("pm-example", "Acceptance verified", {
|
|
55
|
+
releaseAssignment: true,
|
|
56
|
+
resolution: "Implemented the requested behavior",
|
|
57
|
+
expectedResult: "Acceptance checks pass",
|
|
58
|
+
actualResult: "Acceptance checks passed",
|
|
59
|
+
validateClose: "warn",
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Literal `true` options return typed `StartTaskResult`, `PauseTaskResult`, or
|
|
64
|
+
`CloseTaskResult` receipts. Their discriminators remain `start_task`,
|
|
65
|
+
`pause_task`, and `close_task`, with the constituent results available under
|
|
66
|
+
`claim`, `update`, `close`, or `release`. Public `runStartTask`, `runPauseTask`, and
|
|
67
|
+
`runCloseTask` primitives expose the same SDK-owned compositions.
|
|
68
|
+
|
|
69
|
+
MCP actions remain `claim`, `release`, and `close`, using `start`, `pause`, and
|
|
70
|
+
`releaseAssignment`. Action-specific discovery types claim's `start` as boolean;
|
|
71
|
+
scheduling actions retain string timestamps. For the broad provider tool schema,
|
|
72
|
+
pass the claim boolean through `options: { start: true }` because its shared flat
|
|
73
|
+
`start` property retains the scheduling string contract. Bulk action names remain
|
|
74
|
+
`update_many`, `close_many`, and `delete` for transport compatibility.
|
|
75
|
+
|
|
76
|
+
See [SDK Lifecycle Policy](SDK_LIFECYCLE.md) for transaction and policy ownership
|
|
77
|
+
and [CLI Scripting Contract](SCRIPTING.md) for output projection.
|
package/docs/README.md
CHANGED
|
@@ -35,6 +35,7 @@ pm guide release --json
|
|
|
35
35
|
- [Onboarding](ONBOARDING.md) - first-two-hours maintainer and contributor setup.
|
|
36
36
|
- [Agent Guide](AGENT_GUIDE.md) - canonical agent loop, tracker linking, and token-minimal command choices.
|
|
37
37
|
- [Command Reference](COMMANDS.md) - command families with examples and when to use each family.
|
|
38
|
+
- [Context and Operations Namespaces](COMMAND_NAMESPACES.md) - native navigation, diagnostics, event streams, and compatibility aliases.
|
|
38
39
|
- [CLI Scripting Contract](SCRIPTING.md) - exit codes, flat mutation receipts versus read envelopes, stdout/stderr boundaries, stable JSON fields, uniform OR filters, and shell composition recipes.
|
|
39
40
|
- [Configuration](CONFIGURATION.md) - settings, storage formats, output, search, validation, and environment variables.
|
|
40
41
|
- [Testing](TESTING.md) - sandbox-safe local tests and linked-test orchestration.
|
|
@@ -100,6 +101,7 @@ Additional SDK, operations, and generated contracts:
|
|
|
100
101
|
- [Item Read Projections](ITEM_READ_PROJECTIONS.md) - identity, projections, and read completeness.
|
|
101
102
|
- [MCP Capability Surfaces](MCP_CAPABILITY_SURFACES.md) - negotiated MCP discovery contracts.
|
|
102
103
|
- [PR Review Loop](PR_REVIEW_LOOP.md) - complete review inventories and feedback acknowledgment.
|
|
104
|
+
- [Lifecycle Commands and Ownership](LIFECYCLE_COMMANDS.md) - canonical bulk commands, ownership compositions, and SDK/MCP migration.
|
|
103
105
|
- [SDK Lifecycle](SDK_LIFECYCLE.md) - lifecycle primitives and package integration.
|
|
104
106
|
- [SDK Runtime Boundaries](SDK_RUNTIME_BOUNDARIES.md) - runtime ownership and import boundaries.
|
|
105
107
|
- [Sentry Contract Epochs](SENTRY_CONTRACT_EPOCHS.md) - diagnostic compatibility and release epochs.
|
|
@@ -6,12 +6,12 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
|
|
|
6
6
|
|
|
7
7
|
| Capability family | Commands |
|
|
8
8
|
| --- | --- |
|
|
9
|
-
| workspace | `init`, `config`, `merge`, `schema`, `profile`, `telemetry`, `health`, `gc`, `workspace` |
|
|
10
|
-
| intake | `create`, `copy`, `focus`, `restore` |
|
|
11
|
-
| context | `list`, `aggregate`, `context`, `get`, `search`, `duplicates`, `eval`, `next`, `activity`, `stats`, `help` |
|
|
12
|
-
| lifecycle | `update`, `update
|
|
13
|
-
| evidence | `history`, `events`, `history
|
|
9
|
+
| workspace | `init`, `config`, `merge`, `schema`, `profile`, `ops telemetry`, `ops health`, `ops gc`, `workspace` |
|
|
10
|
+
| intake | `create`, `copy`, `context focus`, `history restore` |
|
|
11
|
+
| context | `list`, `aggregate`, `context`, `get`, `search`, `duplicates`, `ops eval`, `context next`, `history activity`, `ops stats`, `help` |
|
|
12
|
+
| lifecycle | `update`, `update many`, `close`, `close many`, `close delete`, `claim`, `release` |
|
|
13
|
+
| evidence | `history`, `history events`, `history redact`, `history repair`, `history compact`, `history-author-acknowledge`, `append`, `comments`, `notes`, `learnings`, `files`, `docs` |
|
|
14
14
|
| graph | `graph`, `deps`, `plan` |
|
|
15
|
-
| quality | `test`, `test-all`, `validate`, `assurance`, `contracts` |
|
|
15
|
+
| quality | `test`, `ops test-all`, `ops validate`, `assurance`, `contracts`, `ops` |
|
|
16
16
|
| automation | `meet`, `event`, `remind` |
|
|
17
17
|
| extensions | `package` |
|
|
@@ -15,6 +15,7 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
|
|
|
15
15
|
| `item-reopen` | full | lifecycle |
|
|
16
16
|
| `copy` | full | intake |
|
|
17
17
|
| `focus` | standard | intake |
|
|
18
|
+
| `context focus` | standard | intake |
|
|
18
19
|
| `list` | core | context |
|
|
19
20
|
| `list-all` | standard | context |
|
|
20
21
|
| `list-draft` | full | context |
|
|
@@ -31,23 +32,34 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
|
|
|
31
32
|
| `search` | core | context |
|
|
32
33
|
| `duplicates` | full | context |
|
|
33
34
|
| `eval` | full | context |
|
|
35
|
+
| `ops eval` | full | context |
|
|
34
36
|
| `next` | core | context |
|
|
37
|
+
| `context next` | core | context |
|
|
35
38
|
| `history` | standard | evidence |
|
|
36
39
|
| `events` | standard | evidence |
|
|
40
|
+
| `history events` | standard | evidence |
|
|
37
41
|
| `history-redact` | full | evidence |
|
|
42
|
+
| `history redact` | full | evidence |
|
|
38
43
|
| `history-repair` | full | evidence |
|
|
44
|
+
| `history repair` | full | evidence |
|
|
39
45
|
| `history-compact` | full | evidence |
|
|
46
|
+
| `history compact` | full | evidence |
|
|
40
47
|
| `history-author-acknowledge` | full | evidence |
|
|
41
48
|
| `merge` | full | workspace |
|
|
42
49
|
| `schema` | standard | workspace |
|
|
43
50
|
| `profile` | standard | workspace |
|
|
44
51
|
| `activity` | full | context |
|
|
52
|
+
| `history activity` | full | context |
|
|
45
53
|
| `restore` | full | intake |
|
|
54
|
+
| `history restore` | full | intake |
|
|
46
55
|
| `update` | core | lifecycle |
|
|
47
56
|
| `update-many` | full | lifecycle |
|
|
57
|
+
| `update many` | full | lifecycle |
|
|
48
58
|
| `close` | core | lifecycle |
|
|
49
59
|
| `close-many` | full | lifecycle |
|
|
60
|
+
| `close many` | full | lifecycle |
|
|
50
61
|
| `delete` | full | lifecycle |
|
|
62
|
+
| `close delete` | full | lifecycle |
|
|
51
63
|
| `append` | standard | evidence |
|
|
52
64
|
| `comments` | standard | evidence |
|
|
53
65
|
| `notes` | standard | evidence |
|
|
@@ -58,12 +70,18 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
|
|
|
58
70
|
| `plan` | core | graph |
|
|
59
71
|
| `test` | standard | quality |
|
|
60
72
|
| `test-all` | full | quality |
|
|
73
|
+
| `ops test-all` | full | quality |
|
|
61
74
|
| `telemetry` | full | workspace |
|
|
75
|
+
| `ops telemetry` | full | workspace |
|
|
62
76
|
| `stats` | full | context |
|
|
77
|
+
| `ops stats` | full | context |
|
|
63
78
|
| `health` | standard | workspace |
|
|
79
|
+
| `ops health` | standard | workspace |
|
|
64
80
|
| `validate` | core | quality |
|
|
81
|
+
| `ops validate` | core | quality |
|
|
65
82
|
| `assurance` | full | quality |
|
|
66
83
|
| `gc` | full | workspace |
|
|
84
|
+
| `ops gc` | full | workspace |
|
|
67
85
|
| `workspace` | full | workspace |
|
|
68
86
|
| `contracts` | standard | quality |
|
|
69
87
|
| `claim` | core | lifecycle |
|
|
@@ -75,6 +93,7 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
|
|
|
75
93
|
| `event` | full | automation |
|
|
76
94
|
| `remind` | full | automation |
|
|
77
95
|
| `help` | core | context |
|
|
96
|
+
| `ops` | core | quality |
|
|
78
97
|
| `completion-statuses` | internal | internal |
|
|
79
98
|
| `completion-tags` | internal | internal |
|
|
80
99
|
| `completion-types` | internal | internal |
|
|
@@ -44,7 +44,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
44
44
|
| `restore` | intake | 23 | 23 |
|
|
45
45
|
| `update` | lifecycle | 105 | 105 |
|
|
46
46
|
| `update-many` | lifecycle | 146 | 146 |
|
|
47
|
-
| `close` | lifecycle |
|
|
47
|
+
| `close` | lifecycle | 32 | 32 |
|
|
48
48
|
| `close-many` | lifecycle | 72 | 72 |
|
|
49
49
|
| `delete` | lifecycle | 24 | 24 |
|
|
50
50
|
| `append` | evidence | 25 | 25 |
|
|
@@ -65,8 +65,8 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
65
65
|
| `gc` | workspace | 22 | 22 |
|
|
66
66
|
| `workspace` | workspace | 23 | 23 |
|
|
67
67
|
| `contracts` | quality | 29 | 29 |
|
|
68
|
-
| `claim` | lifecycle |
|
|
69
|
-
| `release` | lifecycle |
|
|
68
|
+
| `claim` | lifecycle | 39 | 39 |
|
|
69
|
+
| `release` | lifecycle | 24 | 24 |
|
|
70
70
|
| `start-task` | lifecycle | 23 | 23 |
|
|
71
71
|
| `pause-task` | lifecycle | 23 | 23 |
|
|
72
72
|
| `close-task` | lifecycle | 24 | 24 |
|
|
@@ -74,3 +74,21 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
74
74
|
| `event` | automation | 33 | 33 |
|
|
75
75
|
| `remind` | automation | 29 | 29 |
|
|
76
76
|
| `test-runs-worker` | internal | 25 | 25 |
|
|
77
|
+
| `history redact` | evidence | 27 | 27 |
|
|
78
|
+
| `history repair` | evidence | 27 | 27 |
|
|
79
|
+
| `history compact` | evidence | 30 | 30 |
|
|
80
|
+
| `history activity` | context | 35 | 35 |
|
|
81
|
+
| `history restore` | intake | 23 | 23 |
|
|
82
|
+
| `context next` | context | 38 | 38 |
|
|
83
|
+
| `context focus` | intake | 22 | 22 |
|
|
84
|
+
| `ops stats` | context | 29 | 29 |
|
|
85
|
+
| `ops health` | workspace | 36 | 36 |
|
|
86
|
+
| `ops validate` | quality | 46 | 46 |
|
|
87
|
+
| `ops gc` | workspace | 22 | 22 |
|
|
88
|
+
| `ops telemetry` | workspace | 21 | 21 |
|
|
89
|
+
| `ops eval` | context | 25 | 25 |
|
|
90
|
+
| `ops test-all` | quality | 40 | 40 |
|
|
91
|
+
| `history events` | evidence | 33 | 33 |
|
|
92
|
+
| `update many` | lifecycle | 146 | 146 |
|
|
93
|
+
| `close many` | lifecycle | 72 | 72 |
|
|
94
|
+
| `close delete` | lifecycle | 24 | 24 |
|
|
@@ -11,7 +11,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
11
11
|
- Uncovered error codes: 352
|
|
12
12
|
- Coverage fraction: 0.051213
|
|
13
13
|
- Closed-domain probes: 19
|
|
14
|
-
- Grammar probes:
|
|
14
|
+
- Grammar probes: 98
|
|
15
15
|
|
|
16
16
|
| Error code | Canonical code | Disposition | Evidence kinds | Probe count |
|
|
17
17
|
| --- | --- | --- | --- | --- |
|
|
@@ -211,7 +211,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
211
211
|
| `missing_parameter_alias` | `missing_parameter_alias` | uncovered | none | 0 |
|
|
212
212
|
| `missing_positive_execution_receipt` | `missing_positive_execution_receipt` | uncovered | none | 0 |
|
|
213
213
|
| `missing_probe` | `missing_probe` | uncovered | none | 0 |
|
|
214
|
-
| `missing_required_argument` | `missing_required_argument` | executable | grammar |
|
|
214
|
+
| `missing_required_argument` | `missing_required_argument` | executable | grammar | 61 |
|
|
215
215
|
| `missing_required_option` | `missing_required_option` | uncovered | none | 0 |
|
|
216
216
|
| `missing_suggested_retry` | `missing_suggested_retry` | uncovered | none | 0 |
|
|
217
217
|
| `missing_suggested_retry_args` | `missing_suggested_retry_args` | uncovered | none | 0 |
|
package/marketplace.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
|
|
9
|
-
"version": "2026.9.
|
|
9
|
+
"version": "2026.9.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.9.
|
|
16
|
+
"version": "2026.9.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-digital-twin",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.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.",
|
|
@@ -23,7 +23,7 @@ bodies and full before/after snapshots.
|
|
|
23
23
|
- `pm dedupe-audit`
|
|
24
24
|
- `pm dedupe-merge`
|
|
25
25
|
- `pm comments-audit`
|
|
26
|
-
- `pm normalize`
|
|
26
|
+
- `pm ops normalize`
|
|
27
27
|
|
|
28
28
|
The package also augments existing commands with audit-only flags:
|
|
29
29
|
|
|
@@ -63,7 +63,7 @@ pm install audit --project
|
|
|
63
63
|
pm dedupe-audit --mode parent_scope --status all --limit 20 --json
|
|
64
64
|
pm dedupe-merge --keep pm-canonical --close pm-duplicate --dry-run --json
|
|
65
65
|
pm comments-audit --latest 3 --limit-items 20 --limit-rows 50 --json
|
|
66
|
-
pm normalize --dry-run --json
|
|
66
|
+
pm ops normalize --dry-run --json
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
`dedupe-audit --status all` explicitly selects every status and is equivalent
|
|
@@ -80,3 +80,5 @@ For `comments-audit`, `--limit-items` caps item
|
|
|
80
80
|
scanning while `--limit-rows` caps emitted comment rows across the whole
|
|
81
81
|
result. The older `--limit` spelling remains a deprecated alias for
|
|
82
82
|
`--limit-rows`; do not combine the two row-limit spellings.
|
|
83
|
+
|
|
84
|
+
`pm normalize` remains a compatibility alias for `pm ops normalize`.
|