@unbrained/pm-cli 2026.8.27 → 2026.8.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +25 -1
  3. package/dist/cli/error-guidance.js +61 -7
  4. package/dist/cli/register-annotations.js +58 -41
  5. package/dist/cli-bundle/bundle-manifest.json +121 -121
  6. package/dist/cli-bundle/chunks/{chunk-SH6P7FXI.js → chunk-BY2FQ2NI.js} +2 -2
  7. package/dist/cli-bundle/chunks/{chunk-TNX6HC54.js → chunk-E73FDIWT.js} +2 -2
  8. package/dist/cli-bundle/chunks/{chunk-SHMDY36D.js → chunk-FEVBFFCQ.js} +2 -2
  9. package/dist/cli-bundle/chunks/{chunk-CVBBGWW5.js → chunk-M7OXRQE3.js} +10 -6
  10. package/dist/cli-bundle/chunks/{chunk-R4ETAOJC.js → chunk-NBCBFVZI.js} +2 -2
  11. package/dist/cli-bundle/chunks/{chunk-SKXLJIEK.js → chunk-NTXZHRKA.js} +45 -45
  12. package/dist/cli-bundle/chunks/{chunk-52EKTW6V.js → chunk-QE6WQXFO.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-MFNTKMTI.js → chunk-TIQ6AMH2.js} +2 -2
  14. package/dist/cli-bundle/chunks/chunk-X2RROGZE.js +2 -0
  15. package/dist/cli-bundle/chunks/{chunk-OS27HHBN.js → chunk-XRVVYRRO.js} +28 -28
  16. package/dist/cli-bundle/chunks/{chunk-3OO3W6FW.js → chunk-XWEQGHHG.js} +2 -2
  17. package/dist/cli-bundle/chunks/{register-list-query-EUWM6VII.js → register-list-query-J35ZPQQ5.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-mutation-FD4HSAVU.js → register-mutation-J6XJJOGU.js} +4 -4
  19. package/dist/cli-bundle/chunks/{register-operations-HRMNFEC3.js → register-operations-AE3JEMFT.js} +2 -2
  20. package/dist/cli-bundle/chunks/{register-setup-33GNICLX.js → register-setup-OQERLLWE.js} +2 -2
  21. package/dist/cli-bundle/focused-chunks/{chunk-4BR5UU52.js → chunk-4ZDRZYYJ.js} +41 -41
  22. package/dist/cli-bundle/focused-chunks/{chunk-MXTYGECH.js → chunk-AHAM2HAU.js} +2 -2
  23. package/dist/cli-bundle/focused-chunks/{chunk-SUBSWYW3.js → chunk-JZYPPMXF.js} +2 -2
  24. package/dist/cli-bundle/focused-chunks/chunk-LLNTHF5X.js +2 -0
  25. package/dist/cli-bundle/focused-chunks/chunk-LYFWQMVC.js +2 -0
  26. package/dist/cli-bundle/focused-chunks/{chunk-EKX37ZHA.js → chunk-THEPQMLX.js} +2 -2
  27. package/dist/cli-bundle/focused-chunks/chunk-YJLDHJOD.js +2 -0
  28. package/dist/cli-bundle/main.js +14 -14
  29. package/dist/cli-bundle/sdk-authoring.js +1 -1
  30. package/dist/cli-bundle/sdk-contracts.js +2 -2
  31. package/dist/cli-bundle/sdk-core.js +26 -26
  32. package/dist/cli-bundle/sdk-governance.js +1 -1
  33. package/dist/cli-bundle/sdk-merge.js +20 -20
  34. package/dist/cli-bundle/sdk-query.js +1 -1
  35. package/dist/cli-bundle/sdk-runtime.js +1 -1
  36. package/dist/cli-bundle/sdk-testing.js +1 -1
  37. package/dist/cli-bundle/sdk.js +10 -10
  38. package/dist/mcp/tool-definitions.js +5 -5
  39. package/dist/sdk/agent/command-recovery.js +3 -3
  40. package/dist/sdk/agent/task-transcript-contracts.d.ts +52 -0
  41. package/dist/sdk/agent/task-transcript-contracts.js +198 -0
  42. package/dist/sdk/annotations.d.ts +5 -2
  43. package/dist/sdk/annotations.js +66 -36
  44. package/dist/sdk/cli-bootstrap.d.ts +2 -8
  45. package/dist/sdk/cli-bootstrap.js +7 -67
  46. package/dist/sdk/cli-contracts/bootstrap-command-scanner.d.ts +23 -0
  47. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +80 -0
  48. package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
  49. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +5 -5
  50. package/dist/sdk/cli-contracts/tool-parameter-tables.js +15 -2
  51. package/dist/sdk/cli-contracts/tool-schema.d.ts +1 -1
  52. package/dist/sdk/cli-contracts/tool-schema.js +16 -3
  53. package/dist/sdk/comments.d.ts +4 -0
  54. package/dist/sdk/comments.js +2 -2
  55. package/dist/sdk/completion.js +9 -5
  56. package/dist/sdk/contracts.d.ts +1 -0
  57. package/dist/sdk/contracts.js +3 -2
  58. package/dist/sdk/extension/install-sources.d.ts +13 -0
  59. package/dist/sdk/extension/install-sources.js +62 -30
  60. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +26 -2
  61. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +26 -14
  62. package/dist/sdk/index.d.ts +1 -0
  63. package/dist/sdk/index.js +3 -2
  64. package/dist/sdk/learnings.d.ts +4 -0
  65. package/dist/sdk/learnings.js +7 -4
  66. package/dist/sdk/lifecycle/close.js +4 -3
  67. package/dist/sdk/notes.d.ts +4 -0
  68. package/dist/sdk/notes.js +2 -2
  69. package/dist/sdk/runtime-input.js +5 -2
  70. package/dist/sdk/runtime.d.ts +6 -6
  71. package/dist/sdk/runtime.js +8 -8
  72. package/docs/COMMANDS.md +4 -3
  73. package/docs/OUTPUT_TOKEN_ACCOUNTING.md +20 -7
  74. package/docs/RELEASING.md +9 -1
  75. package/docs/SDK.md +12 -0
  76. package/docs/SDK_CONTEXT_INTEGRITY.md +12 -1
  77. package/docs/SDK_RUNTIME_BOUNDARIES.md +10 -0
  78. package/docs/TESTING.md +6 -2
  79. package/docs/agent-task-token-baseline.json +97 -11
  80. package/docs/agent-task-transcripts.json +211 -0
  81. package/docs/generated/FLAG_LEXICON_BUDGETS.md +3 -3
  82. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +6 -3
  83. package/docs/performance/cli-transport-overhead.md +10 -2
  84. package/marketplace.json +2 -2
  85. package/package.json +2 -2
  86. package/packages/pm-beads/package.json +1 -1
  87. package/packages/pm-calendar/package.json +1 -1
  88. package/packages/pm-command-kit/package.json +1 -1
  89. package/packages/pm-digital-twin/package.json +1 -1
  90. package/packages/pm-governance-audit/package.json +1 -1
  91. package/packages/pm-guide-shell/package.json +1 -1
  92. package/packages/pm-kanban/package.json +1 -1
  93. package/packages/pm-lifecycle-hooks/package.json +1 -1
  94. package/packages/pm-linked-test-adapters/package.json +1 -1
  95. package/packages/pm-search-advanced/package.json +1 -1
  96. package/packages/pm-templates/package.json +1 -1
  97. package/packages/pm-todos/package.json +1 -1
  98. package/packages/pm-vcs/package.json +1 -1
  99. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  100. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  101. package/sdk/public-surface.json +197 -25
  102. package/dist/cli-bundle/chunks/chunk-QTO7USTH.js +0 -2
  103. package/dist/cli-bundle/focused-chunks/chunk-2AGZ5BRT.js +0 -2
  104. package/dist/cli-bundle/focused-chunks/chunk-AQ5IYEZZ.js +0 -2
  105. package/dist/cli-bundle/focused-chunks/chunk-YHWHX6YY.js +0 -2
@@ -1,25 +1,111 @@
1
1
  {
2
- "version": 1,
2
+ "version": 3,
3
+ "transcript_version": 2,
4
+ "transcript_digest": "sha256:2bf91406426d2a9e5de1da10ba67f7b8e9d4a4baa09eb488fe89ae3925c78f3f",
3
5
  "estimator": "ceil(utf8_bytes / 4)",
4
6
  "measurement_scope": "output_before_token_accounting",
5
7
  "published_with_release": true,
6
- "scenarios": [
8
+ "tasks": [
7
9
  {
8
- "id": "small-workspace",
9
- "max_estimated_tokens": 552
10
+ "id": "context-bootstrap",
11
+ "max_estimated_tokens": 1978,
12
+ "steps": [
13
+ {
14
+ "id": "triage",
15
+ "max_estimated_tokens": 552,
16
+ "accounting_mode": "self_reported"
17
+ },
18
+ {
19
+ "id": "orient",
20
+ "max_estimated_tokens": 1055,
21
+ "accounting_mode": "self_reported"
22
+ },
23
+ {
24
+ "id": "inspect",
25
+ "max_estimated_tokens": 371,
26
+ "accounting_mode": "self_reported"
27
+ }
28
+ ]
10
29
  },
11
30
  {
12
- "id": "large-workspace",
13
- "max_estimated_tokens": 1055
31
+ "id": "closed-domain-recovery",
32
+ "max_estimated_tokens": 630,
33
+ "steps": [
34
+ {
35
+ "id": "refuse-intent",
36
+ "max_estimated_tokens": 259,
37
+ "accounting_mode": "self_reported"
38
+ },
39
+ {
40
+ "id": "retry-intent",
41
+ "max_estimated_tokens": 371,
42
+ "accounting_mode": "self_reported"
43
+ }
44
+ ]
14
45
  },
15
46
  {
16
- "id": "returning-agent",
17
- "max_estimated_tokens": 371
47
+ "id": "unknown-option-recovery",
48
+ "max_estimated_tokens": 585,
49
+ "steps": [
50
+ {
51
+ "id": "refuse-option",
52
+ "max_estimated_tokens": 422,
53
+ "accounting_mode": "independent_transport"
54
+ },
55
+ {
56
+ "id": "retry-option",
57
+ "max_estimated_tokens": 163,
58
+ "accounting_mode": "self_reported"
59
+ }
60
+ ]
18
61
  },
19
62
  {
20
- "id": "failing-command",
21
- "max_estimated_tokens": 219
63
+ "id": "lifecycle-mutation",
64
+ "max_estimated_tokens": 812,
65
+ "steps": [
66
+ {
67
+ "id": "create",
68
+ "max_estimated_tokens": 20,
69
+ "accounting_mode": "self_reported"
70
+ },
71
+ {
72
+ "id": "inspect-open",
73
+ "max_estimated_tokens": 363,
74
+ "accounting_mode": "self_reported"
75
+ },
76
+ {
77
+ "id": "close",
78
+ "max_estimated_tokens": 31,
79
+ "accounting_mode": "self_reported"
80
+ },
81
+ {
82
+ "id": "inspect-closed",
83
+ "max_estimated_tokens": 398,
84
+ "accounting_mode": "self_reported"
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "id": "bulk-effect-outcomes",
90
+ "max_estimated_tokens": 326,
91
+ "steps": [
92
+ {
93
+ "id": "create-bulk-target",
94
+ "max_estimated_tokens": 20,
95
+ "accounting_mode": "self_reported"
96
+ },
97
+ {
98
+ "id": "partial-effect",
99
+ "max_estimated_tokens": 174,
100
+ "accounting_mode": "self_reported"
101
+ },
102
+ {
103
+ "id": "no-effect",
104
+ "max_estimated_tokens": 132,
105
+ "accounting_mode": "self_reported"
106
+ }
107
+ ]
22
108
  }
23
109
  ],
24
- "composite_max_estimated_tokens": 2197
110
+ "composite_max_estimated_tokens": 4331
25
111
  }
@@ -0,0 +1,211 @@
1
+ {
2
+ "version": 2,
3
+ "tasks": [
4
+ {
5
+ "id": "context-bootstrap",
6
+ "description": "Orient in a scaled workspace and inspect the canonical focus item.",
7
+ "steps": [
8
+ {
9
+ "id": "triage",
10
+ "args": ["list", "--for", "triage", "--limit", "2"],
11
+ "expected_exit_code": 0,
12
+ "expected_output_kind": "collection",
13
+ "expected_accounting_mode": "self_reported",
14
+ "required_fields": ["items"]
15
+ },
16
+ {
17
+ "id": "orient",
18
+ "args": ["context", "--for", "orient", "--limit", "5"],
19
+ "expected_exit_code": 0,
20
+ "expected_output_kind": "diagnostic",
21
+ "expected_accounting_mode": "self_reported",
22
+ "required_fields": ["summary.active_items", "hierarchy", "activity"]
23
+ },
24
+ {
25
+ "id": "inspect",
26
+ "args": ["get", "$ANCHOR_ID", "--for", "inspect"],
27
+ "expected_exit_code": 0,
28
+ "expected_output_kind": "entity",
29
+ "expected_accounting_mode": "self_reported",
30
+ "required_fields": ["item.id"]
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "id": "closed-domain-recovery",
36
+ "description": "Reject an invalid context intent and execute the advertised shell-free retry.",
37
+ "steps": [
38
+ {
39
+ "id": "refuse-intent",
40
+ "args": ["get", "$ANCHOR_ID", "--for", "invalid-agent-intent"],
41
+ "expected_exit_code": 2,
42
+ "expected_output_kind": "refusal",
43
+ "expected_accounting_mode": "self_reported",
44
+ "required_fields": ["code", "refusal", "recovery"],
45
+ "expected_error_code": "unknown_context_intent",
46
+ "expected_refusal_surface": "--for"
47
+ },
48
+ {
49
+ "id": "retry-intent",
50
+ "args": ["get", "$ANCHOR_ID", "--for", "inspect"],
51
+ "expected_exit_code": 0,
52
+ "expected_output_kind": "entity",
53
+ "expected_accounting_mode": "self_reported",
54
+ "required_fields": ["item.id"],
55
+ "recovery_for": "refuse-intent"
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "id": "unknown-option-recovery",
61
+ "description": "Identify an unsupported option after valid flags and continue with the corrected command.",
62
+ "steps": [
63
+ {
64
+ "id": "refuse-option",
65
+ "args": [
66
+ "search",
67
+ "agent task",
68
+ "--status",
69
+ "open",
70
+ "--limit",
71
+ "5",
72
+ "--include-body"
73
+ ],
74
+ "expected_exit_code": 2,
75
+ "expected_output_kind": "refusal",
76
+ "expected_accounting_mode": "independent_transport",
77
+ "required_fields": ["code", "refusal", "recovery"],
78
+ "expected_error_code": "unknown_option",
79
+ "expected_refusal_surface": "--include-body"
80
+ },
81
+ {
82
+ "id": "retry-option",
83
+ "args": ["search", "agent task", "--status", "open", "--limit", "5"],
84
+ "expected_exit_code": 0,
85
+ "expected_output_kind": "collection",
86
+ "expected_accounting_mode": "self_reported",
87
+ "required_fields": ["items"],
88
+ "recovery_for": "refuse-option"
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "id": "lifecycle-mutation",
94
+ "description": "Create, inspect, close, and confirm a project item through public CLI receipts.",
95
+ "steps": [
96
+ {
97
+ "id": "create",
98
+ "args": [
99
+ "create",
100
+ "--id",
101
+ "$LIFECYCLE_ID",
102
+ "--title",
103
+ "Transcript lifecycle item",
104
+ "--description",
105
+ "Golden multi-step lifecycle task",
106
+ "--type",
107
+ "Task",
108
+ "--status",
109
+ "open",
110
+ "--create-mode",
111
+ "progressive"
112
+ ],
113
+ "expected_exit_code": 0,
114
+ "expected_output_kind": "mutation_receipt",
115
+ "expected_accounting_mode": "self_reported",
116
+ "required_fields": ["id", "changed_field_count"]
117
+ },
118
+ {
119
+ "id": "inspect-open",
120
+ "args": ["get", "$LIFECYCLE_ID", "--for", "inspect"],
121
+ "expected_exit_code": 0,
122
+ "expected_output_kind": "entity",
123
+ "expected_accounting_mode": "self_reported",
124
+ "required_fields": ["item.id", "item.status"],
125
+ "expected_field_values": { "item.status": "open" }
126
+ },
127
+ {
128
+ "id": "close",
129
+ "args": ["close", "$LIFECYCLE_ID", "Golden task completed"],
130
+ "expected_exit_code": 0,
131
+ "expected_output_kind": "mutation_receipt",
132
+ "expected_accounting_mode": "self_reported",
133
+ "required_fields": ["id", "status", "close_reason"]
134
+ },
135
+ {
136
+ "id": "inspect-closed",
137
+ "args": ["get", "$LIFECYCLE_ID", "--for", "inspect"],
138
+ "expected_exit_code": 0,
139
+ "expected_output_kind": "entity",
140
+ "expected_accounting_mode": "self_reported",
141
+ "required_fields": ["item.id", "item.status"],
142
+ "expected_field_values": { "item.status": "closed" }
143
+ }
144
+ ]
145
+ },
146
+ {
147
+ "id": "bulk-effect-outcomes",
148
+ "description": "Preserve successful partial-effect and no-effect outcomes across a bulk lifecycle task.",
149
+ "steps": [
150
+ {
151
+ "id": "create-bulk-target",
152
+ "args": [
153
+ "create",
154
+ "--id",
155
+ "$BULK_ID",
156
+ "--title",
157
+ "Transcript bulk effect target",
158
+ "--description",
159
+ "Golden bulk outcome transcript target",
160
+ "--type",
161
+ "Task",
162
+ "--status",
163
+ "open",
164
+ "--create-mode",
165
+ "progressive"
166
+ ],
167
+ "expected_exit_code": 0,
168
+ "expected_output_kind": "mutation_receipt",
169
+ "expected_accounting_mode": "self_reported",
170
+ "required_fields": ["id", "status", "changed_field_count"]
171
+ },
172
+ {
173
+ "id": "partial-effect",
174
+ "args": [
175
+ "close-many",
176
+ "--ids",
177
+ "$BULK_ID,pm-transcript-missing",
178
+ "--reason",
179
+ "Golden partial-effect transcript",
180
+ "--validate-close",
181
+ "off",
182
+ "--no-checkpoint"
183
+ ],
184
+ "expected_exit_code": 7,
185
+ "expected_output_kind": "collection",
186
+ "expected_accounting_mode": "self_reported",
187
+ "required_fields": ["rows", "outcome", "exit_code"],
188
+ "expected_field_values": { "outcome": "partial_effect" }
189
+ },
190
+ {
191
+ "id": "no-effect",
192
+ "args": [
193
+ "close-many",
194
+ "--ids",
195
+ "$BULK_ID",
196
+ "--reason",
197
+ "Golden no-effect transcript",
198
+ "--validate-close",
199
+ "off",
200
+ "--no-checkpoint"
201
+ ],
202
+ "expected_exit_code": 6,
203
+ "expected_output_kind": "collection",
204
+ "expected_accounting_mode": "self_reported",
205
+ "required_fields": ["rows", "outcome", "exit_code"],
206
+ "expected_field_values": { "outcome": "no_effect" }
207
+ }
208
+ ]
209
+ }
210
+ ]
211
+ }
@@ -48,9 +48,9 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
48
48
  | `close-many` | lifecycle | 72 | 72 |
49
49
  | `delete` | lifecycle | 24 | 24 |
50
50
  | `append` | evidence | 24 | 24 |
51
- | `comments` | evidence | 30 | 30 |
52
- | `notes` | evidence | 34 | 34 |
53
- | `learnings` | evidence | 26 | 26 |
51
+ | `comments` | evidence | 31 | 31 |
52
+ | `notes` | evidence | 35 | 35 |
53
+ | `learnings` | evidence | 27 | 27 |
54
54
  | `files` | evidence | 39 | 39 |
55
55
  | `docs` | evidence | 30 | 30 |
56
56
  | `deps` | graph | 32 | 32 |
@@ -4,12 +4,12 @@ Tracker: `pm-f05lsg`.
4
4
 
5
5
  Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
6
6
 
7
- - Catalog error codes: 344
7
+ - Catalog error codes: 347
8
8
  - Executable error codes: 19
9
9
  - Executable-code ratchet floor: 18
10
10
  - Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
11
- - Uncovered error codes: 325
12
- - Coverage fraction: 0.055233
11
+ - Uncovered error codes: 328
12
+ - Coverage fraction: 0.054755
13
13
  - Closed-domain probes: 19
14
14
  - Grammar probes: 94
15
15
 
@@ -25,6 +25,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
25
25
  | `ambiguous_option_combination` | `ambiguous_option_combination` | uncovered | none | 0 |
26
26
  | `annotation_alias_conflict` | `annotation_alias_conflict` | uncovered | none | 0 |
27
27
  | `annotation_flag_like_value` | `annotation_flag_like_value` | uncovered | none | 0 |
28
+ | `annotation_if_absent_without_append` | `annotation_if_absent_without_append` | uncovered | none | 0 |
28
29
  | `annotation_message_without_text` | `annotation_message_without_text` | uncovered | none | 0 |
29
30
  | `annotation_transposed_subcommand` | `annotation_transposed_subcommand` | uncovered | none | 0 |
30
31
  | `append_empty_body` | `append_empty_body` | uncovered | none | 0 |
@@ -213,6 +214,8 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
213
214
  | `no_update_fields` | `no_update_fields` | uncovered | none | 0 |
214
215
  | `no_version_bounds_declared` | `no_version_bounds_declared` | executable | owned_state | 1 |
215
216
  | `non_refusal_exit` | `non_refusal_exit` | uncovered | none | 0 |
217
+ | `npm_package_archive_missing` | `npm_package_archive_missing` | uncovered | none | 0 |
218
+ | `npm_package_archive_unsafe` | `npm_package_archive_unsafe` | uncovered | none | 0 |
216
219
  | `npm_package_not_found` | `npm_package_not_found` | uncovered | none | 0 |
217
220
  | `ownership_conflict` | `ownership_conflict` | uncovered | none | 0 |
218
221
  | `ownership_dependency_bypass_restricted_options` | `ownership_dependency_bypass_restricted_options` | uncovered | none | 0 |
@@ -1,12 +1,20 @@
1
1
  # CLI transport overhead
2
2
 
3
- Tracked by [pm-yse5dt](../../.agents/pm/tasks/pm-yse5dt.toon).
3
+ Tracked by [pm-yse5dt](../../.agents/pm/tasks/pm-yse5dt.toon), with RSS
4
+ admission reliability owned by
5
+ [pm-pz49xc](../../.agents/pm/issues/pm-pz49xc.toon).
4
6
 
5
7
  Each result starts from a fresh isolated workspace containing exactly one item.
6
8
  The command runs in a fresh Node v26.5.0 process on
7
9
  linux/x64; setup and fixture generation are
8
10
  outside the timed interval. Short local gates use the best observed latency,
9
- while the report retains p50 and p95 evidence.
11
+ while the report retains p50 and p95 evidence. RSS admission uses the measured
12
+ median so one page-level outlier cannot false-fail the gate; the maximum remains
13
+ in the report as diagnostic evidence. Every post-warmup RSS sample must be a
14
+ finite measurement; an unavailable sample makes the admission median unavailable
15
+ and fails closed when a budget exists. Admission adds a fixed 512 KiB noise margin
16
+ without changing the committed budget; a majority persistent increase beyond
17
+ that bounded margin still fails.
10
18
 
11
19
  | Command | best | p50 | p95 |
12
20
  | --------- | -----: | -----: | -----: |
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.27"
9
+ "version": "2026.8.28"
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.27",
16
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -122,7 +122,7 @@
122
122
  "lint:complexity:baseline": "eslint . --suppress-rule complexity --suppress-rule sonarjs/cognitive-complexity",
123
123
  "lint:duplicates": "jscpd --config .jscpd.json",
124
124
  "lint:codefactor": "pnpm quality:static",
125
- "quality:static": "pnpm build && node scripts/contracts-snapshot.mjs --check && node scripts/generate-agent-capability-surfaces.mjs --check && node scripts/generate-error-code-catalog.mjs --check && node scripts/release/repository-assurance.mjs repository-static-quality --trigger ci --json && 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/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs && node scripts/release/refusal-closure-gate.mjs && pnpm quality:mcp-deprecations && node dist/cli.js assurance run tracker-context-quality --trigger ci --dry-run --json --output-budget unbounded && 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 && node dist/cli.js assurance run graph-composition --trigger ci --dry-run --json --output-budget unbounded && node dist/cli.js assurance run record-integrity --trigger ci --dry-run --json --output-budget unbounded",
125
+ "quality:static": "pnpm build && node scripts/contracts-snapshot.mjs --check && node scripts/generate-agent-capability-surfaces.mjs --check && node scripts/generate-error-code-catalog.mjs --check && node scripts/release/repository-assurance.mjs repository-static-quality --trigger ci --json && 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/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs && node scripts/release/refusal-closure-gate.mjs && node scripts/release/agent-task-token-gate.mjs && pnpm quality:mcp-deprecations && node dist/cli.js assurance run tracker-context-quality --trigger ci --dry-run --json --output-budget unbounded && 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 && node dist/cli.js assurance run graph-composition --trigger ci --dry-run --json --output-budget unbounded && node dist/cli.js assurance run record-integrity --trigger ci --dry-run --json --output-budget unbounded",
126
126
  "quality:command-grammar": "pnpm build && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs",
127
127
  "quality:recovery-closure": "pnpm build && node scripts/release/refusal-closure-gate.mjs",
128
128
  "quality:token-budget": "node scripts/release/token-budget-gate.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.8.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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.27",
4
+ "version": "2026.8.28",
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.27",
3
+ "version": "2026.8.28",
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",