@unbrained/pm-cli 2026.8.14 → 2026.8.15
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 +25 -2
- package/dist/cli/commander-usage.js +17 -4
- package/dist/cli/error-guidance.d.ts +2 -0
- package/dist/cli/error-guidance.js +52 -25
- package/dist/cli/main.js +3 -2
- package/dist/cli/register-mutation.js +4 -2
- package/dist/cli/register-operations.js +5 -5
- package/dist/cli-bundle/bundle-manifest.json +150 -150
- package/dist/cli-bundle/chunks/{chunk-TXMEUUUY.js → chunk-24GAV7XL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TMJ7URWS.js → chunk-AIM6VT2N.js} +9 -9
- package/dist/cli-bundle/chunks/chunk-DSWDLTDR.js +197 -0
- package/dist/cli-bundle/chunks/{chunk-FIW4P64F.js → chunk-J42EGKDK.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-KIEGUBYQ.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-SBRKH6OR.js → chunk-KLKYLSDX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-G5JUB66K.js → chunk-LJHOAVGI.js} +59 -59
- package/dist/cli-bundle/chunks/{chunk-BFALV3YP.js → chunk-MEM2ZS3O.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-QHPCJWEJ.js +35 -0
- package/dist/cli-bundle/chunks/{chunk-XAVMOK6B.js → chunk-WLPDLNEZ.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-T3EHHNNV.js → register-list-query-CT3LFDDN.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-E27WCLSZ.js → register-mutation-NWEVA5YS.js} +3 -3
- package/dist/cli-bundle/chunks/register-operations-AHIAG5KM.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-3YXZ444E.js → register-setup-ZJZFVAKE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-4X57RE4U.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-XDNAW5OI.js → chunk-6XKF3PGV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-7NJ4QYQ2.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-WCVE2NIG.js → chunk-EXZA4257.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-ITAUHSO6.js +50 -0
- package/dist/cli-bundle/focused-chunks/{chunk-4DQ2YERC.js → chunk-KLVUMNXJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-K7RWWOAG.js → chunk-KT5XMYSX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-PPFGQDSI.js → chunk-KTKH4IMG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-M67F5AIN.js +8 -0
- package/dist/cli-bundle/focused-chunks/{chunk-KSEDUWVZ.js → chunk-NSPYTG6G.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-OKA6ELTL.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-PUISBOPP.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-QLNMCESQ.js +155 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LZ4MV3RH.js → chunk-SLKC6QLJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-U65UC4G3.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-KFSZ3BP6.js → chunk-WTSER4WJ.js} +6 -6
- package/dist/cli-bundle/focused-chunks/{chunk-YOOI3UZX.js → chunk-ZMFXQ7VF.js} +2 -2
- package/dist/cli-bundle/main.js +13 -13
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +32 -35
- 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 +32 -31
- 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 +2 -2
- package/dist/core/diagnostics/remediation.js +7 -2
- package/dist/core/extensions/reserved-host-flags.js +3 -2
- package/dist/core/history/replay.d.ts +14 -1
- package/dist/core/history/replay.js +45 -8
- package/dist/core/output/output.d.ts +2 -0
- package/dist/core/output/output.js +3 -2
- package/dist/core/shared/command-types.d.ts +2 -0
- package/dist/core/shared/command-types.js +2 -2
- package/dist/core/shared/errors.d.ts +12 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/mcp/tool-definitions.js +9 -5
- package/dist/sdk/agent/refusal-reachability.d.ts +61 -0
- package/dist/sdk/agent/refusal-reachability.js +91 -3
- package/dist/sdk/cli-bootstrap.d.ts +2 -0
- package/dist/sdk/cli-bootstrap.js +7 -2
- package/dist/sdk/cli-contracts/completeness.js +3 -2
- package/dist/sdk/cli-contracts/flag-contracts.js +3 -2
- package/dist/sdk/cli-contracts/registration-helpers.js +3 -2
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
- package/dist/sdk/cli-contracts/runtime-contracts.js +23 -7
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +15 -5
- package/dist/sdk/cli-contracts/tool-schema.js +10 -3
- package/dist/sdk/cli-program.js +3 -2
- package/dist/sdk/core.d.ts +2 -2
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +26 -2
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +50 -26
- package/dist/sdk/governance/assurance-action.d.ts +7 -1
- package/dist/sdk/governance/assurance-action.js +7 -6
- package/dist/sdk/governance/assurance-mutation-error.d.ts +42 -1
- package/dist/sdk/governance/assurance-mutation-error.js +27 -3
- package/dist/sdk/governance/assurance-runtime.js +12 -11
- package/dist/sdk/governance/assurance.d.ts +9 -0
- package/dist/sdk/governance/assurance.js +80 -14
- package/dist/sdk/governance/extension-host-version.d.ts +25 -0
- package/dist/sdk/governance/extension-host-version.js +105 -0
- package/dist/sdk/governance/health.d.ts +32 -1
- package/dist/sdk/governance/health.js +119 -27
- package/dist/sdk/governance/provenance-health.d.ts +27 -0
- package/dist/sdk/governance/provenance-health.js +95 -3
- package/dist/sdk/governance/validate.js +7 -8
- package/dist/sdk/governance.d.ts +6 -0
- package/dist/sdk/governance.js +8 -2
- package/dist/sdk/history-repair.d.ts +13 -1
- package/dist/sdk/history-repair.js +62 -18
- package/dist/sdk/linked-artifacts.js +16 -5
- package/dist/sdk/pagination.d.ts +15 -0
- package/dist/sdk/pagination.js +9 -5
- package/dist/sdk/query/context.d.ts +5 -1
- package/dist/sdk/query/context.js +14 -5
- package/dist/sdk/read-output/continuation.d.ts +11 -0
- package/dist/sdk/read-output/continuation.js +132 -0
- package/dist/sdk/read-output-budget.d.ts +1 -1
- package/dist/sdk/read-output-budget.js +14 -10
- package/dist/sdk/read-output-contracts.d.ts +66 -2
- package/dist/sdk/read-output-contracts.js +183 -19
- package/dist/sdk/read-output-rows.d.ts +2 -0
- package/dist/sdk/read-output-rows.js +15 -2
- package/dist/sdk/runtime-input.js +4 -2
- package/docs/ASSURANCE.md +59 -2
- package/docs/COMMANDS.md +8 -2
- package/docs/READ_OUTPUT_CONTRACTS.md +49 -8
- package/docs/RELEASING.md +42 -5
- package/docs/SDK_CONTEXT_INTEGRITY.md +64 -2
- package/marketplace.json +2 -2
- package/package.json +3 -3
- 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/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/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/sdk/public-surface.json +1133 -187
- package/dist/cli-bundle/chunks/chunk-BBOFSVAK.js +0 -197
- package/dist/cli-bundle/chunks/chunk-YAMTJL6Y.js +0 -34
- package/dist/cli-bundle/chunks/chunk-YSVSMJ2B.js +0 -2
- package/dist/cli-bundle/chunks/register-operations-4R6I7CPY.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-F43TT2QQ.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-KYUQGTSB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PGXJQLCT.js +0 -155
- package/dist/cli-bundle/focused-chunks/chunk-Q4YY3XNF.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-QK753U3U.js +0 -46
- package/dist/cli-bundle/focused-chunks/chunk-QUMB2J27.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-SM7MTG27.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-ZM6TZVHC.js +0 -2
package/docs/RELEASING.md
CHANGED
|
@@ -24,7 +24,8 @@ Tracked documentation work: [pm-u9d0](../.agents/pm/epics/pm-u9d0.toon),
|
|
|
24
24
|
[pm-lwnifd](../.agents/pm/issues/pm-lwnifd.toon), and SDK-bound reliability
|
|
25
25
|
classification [pm-dqtzva](../.agents/pm/issues/pm-dqtzva.toon).
|
|
26
26
|
The local/hosted gate selection contract is tracked by
|
|
27
|
-
[pm-ei6x66](../.agents/pm/tasks/pm-ei6x66.toon).
|
|
27
|
+
[pm-ei6x66](../.agents/pm/tasks/pm-ei6x66.toon). Release-candidate analyzer
|
|
28
|
+
provenance is tracked by [pm-u1baah](../.agents/pm/issues/pm-u1baah.toon).
|
|
28
29
|
|
|
29
30
|
## Version Policy
|
|
30
31
|
|
|
@@ -80,6 +81,9 @@ Policy:
|
|
|
80
81
|
creating an ordinal replacement; an already-successful run is recorded as
|
|
81
82
|
recovered without republishing
|
|
82
83
|
- release preparation must pass all quality and compatibility gates before commit+tag push
|
|
84
|
+
- before dependency installation or build, auto-release verifies that the
|
|
85
|
+
candidate has exact-commit analyzer results or an immutable tree-identical
|
|
86
|
+
reviewed PR head with successful DeepScan and CodeFactor results
|
|
83
87
|
- `CHANGELOG.md` is generated by the latest npm `pm-changelog` package (`pm install npm:pm-changelog --project`, then `pm changelog generate --mode replace --all-release-tags`) from closed tracker items across git release tag windows and checked in CI; do not edit it by hand
|
|
84
88
|
- protected-branch pushes require `RELEASE_PAT`; Auto Release fails fast before the expensive release gates when `push=true`, `dry_run=false`, and that secret is not configured
|
|
85
89
|
- release reliability gating requires `SENTRY_PERSONAL_ADMIN_TOKEN` for issue-threshold checks; Auto Release fails before creating the version commit/tag when the token is missing and `push=true`, while sourcemap upload remains optional through `SENTRY_AUTH_TOKEN`
|
|
@@ -196,8 +200,9 @@ The build writes `dist/cli-bundle/bundle-manifest.json` atomically with SHA-256
|
|
|
196
200
|
|
|
197
201
|
4. Run the same release pipeline locally.
|
|
198
202
|
|
|
199
|
-
Push the final implementation commit
|
|
200
|
-
finish on that reviewed SHA, then run the
|
|
203
|
+
Push the final implementation commit through a reviewed pull request first,
|
|
204
|
+
wait for DeepScan and CodeFactor to finish on that reviewed SHA, then run the
|
|
205
|
+
canonical registry-owned preflight:
|
|
201
206
|
|
|
202
207
|
```bash
|
|
203
208
|
pnpm verify:preflight
|
|
@@ -207,7 +212,8 @@ The registry supplies the ordered executable plan, command arguments,
|
|
|
207
212
|
environment, capture policy, and explicit skip policy. Its receipt distinguishes
|
|
208
213
|
passed checks from declared skips. The same registry maps named PR, nightly,
|
|
209
214
|
and release workflow gates; hosted-only entries must explain why no faithful
|
|
210
|
-
local equivalent exists.
|
|
215
|
+
local equivalent exists. Analyzer provenance is the first executable step, so
|
|
216
|
+
an unreleasable candidate fails before build, coverage, or package work.
|
|
211
217
|
|
|
212
218
|
The preflight includes the mandatory local hosted-analysis proof:
|
|
213
219
|
|
|
@@ -218,13 +224,44 @@ pnpm quality:hosted-analysis
|
|
|
218
224
|
The gate accepts only DeepScan's explicit zero-new-issue status and
|
|
219
225
|
CodeFactor's explicit no-issues result. Both contexts are required by `main`
|
|
220
226
|
branch protection, and the release pipeline reruns the same immutable-tree
|
|
221
|
-
proof.
|
|
227
|
+
proof. The gate reads branch protection through REST first; if that transport
|
|
228
|
+
is unavailable or its core API quota is exhausted, it queries the equivalent
|
|
229
|
+
GraphQL rules across every cursor-paginated page and still requires one exact
|
|
230
|
+
`main` rule with strict updates plus both analyzer contexts. Malformed,
|
|
231
|
+
truncated, missing, or ambiguous admin policy data fails closed. GitHub Actions'
|
|
232
|
+
ephemeral token cannot request the repository `Administration: read` permission
|
|
233
|
+
required by both of those policy surfaces. When both admin transports reject
|
|
234
|
+
that token, the gate uses the contents-readable `GET /branches/main` summary
|
|
235
|
+
and requires that the exact candidate is the current protected branch head,
|
|
236
|
+
protection is enabled and enforced, and CodeFactor plus DeepScan are effective
|
|
237
|
+
required contexts. That summary intentionally cannot attest the admin-only
|
|
238
|
+
strict-update setting: its receipt reports `strict: null`,
|
|
239
|
+
`strict_verified: false`, and `verification_scope: effective_required_checks`
|
|
240
|
+
instead of inventing a positive result. Exact or immutable identical-tree
|
|
241
|
+
analyzer provenance remains mandatory and is emitted beside the policy receipt,
|
|
242
|
+
so the restricted-token recovery cannot admit an unanalyzed or different-tree
|
|
243
|
+
candidate. A maintainer token with administration-read access still verifies
|
|
244
|
+
and reports `strict: true` through REST or paginated GraphQL. It reads the
|
|
245
|
+
release commit first. When GitHub does not copy app results
|
|
222
246
|
onto a merge commit, the gate may reuse a reviewed merge-parent or squash-PR
|
|
223
247
|
head only when its immutable Git tree SHA exactly matches the release commit.
|
|
224
248
|
Squash provenance additionally requires one unambiguous GitHub association to a
|
|
225
249
|
closed PR merged into `main` with the release commit as its merge commit.
|
|
226
250
|
Missing, ambiguous, or different-tree provenance fails closed.
|
|
227
251
|
|
|
252
|
+
The supported default-branch arrival path is a reviewed pull request. A direct
|
|
253
|
+
push to `main` is releasable only if both analyzers attached successful evidence
|
|
254
|
+
to that exact commit; when they did not, the gate explicitly refuses the
|
|
255
|
+
candidate instead of letting the next scheduled release discover the missing
|
|
256
|
+
precondition after expensive work. CI runs `Release analyzer readiness (main)`
|
|
257
|
+
on every product-relevant push to `main`, providing continuous visibility
|
|
258
|
+
between release attempts. If GitHub's commit-association endpoint has not yet
|
|
259
|
+
published a new merge, the gate reads the pull-request number from GitHub's
|
|
260
|
+
standard merge message and accepts it only after the immutable PR resource
|
|
261
|
+
confirms that exact merge SHA, `main` base, and reviewed head. Remediate a
|
|
262
|
+
refused direct-main candidate by landing the next tree-changing fix through a
|
|
263
|
+
reviewed PR; never copy, synthesize, or bypass analyzer evidence.
|
|
264
|
+
|
|
228
265
|
```bash
|
|
229
266
|
# Read-only parity check
|
|
230
267
|
pnpm release:pipeline:dry-run
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SDK Context Integrity
|
|
2
2
|
|
|
3
|
-
Tracker: [pm-0k19l7](../.agents/pm/issues/pm-0k19l7.toon), [pm-9stazf](../.agents/pm/issues/pm-9stazf.toon), [pm-tu71](../.agents/pm/issues/pm-tu71.toon), [pm-0xmajx](../.agents/pm/issues/pm-0xmajx.toon), [pm-7rrqsk](../.agents/pm/issues/pm-7rrqsk.toon), [pm-ety1qc](../.agents/pm/issues/pm-ety1qc.toon), [pm-lu6sca](../.agents/pm/features/pm-lu6sca.toon), [pm-5y05kq](../.agents/pm/issues/pm-5y05kq.toon), [pm-gjjurs](../.agents/pm/issues/pm-gjjurs.toon), [pm-h97qxd](../.agents/pm/issues/pm-h97qxd.toon), [pm-h06944](../.agents/pm/issues/pm-h06944.toon),
|
|
3
|
+
Tracker: [pm-0k19l7](../.agents/pm/issues/pm-0k19l7.toon), [pm-9stazf](../.agents/pm/issues/pm-9stazf.toon), [pm-tu71](../.agents/pm/issues/pm-tu71.toon), [pm-0xmajx](../.agents/pm/issues/pm-0xmajx.toon), [pm-7rrqsk](../.agents/pm/issues/pm-7rrqsk.toon), [pm-ety1qc](../.agents/pm/issues/pm-ety1qc.toon), [pm-lu6sca](../.agents/pm/features/pm-lu6sca.toon), [pm-5y05kq](../.agents/pm/issues/pm-5y05kq.toon), [pm-gjjurs](../.agents/pm/issues/pm-gjjurs.toon), [pm-h97qxd](../.agents/pm/issues/pm-h97qxd.toon), [pm-h06944](../.agents/pm/issues/pm-h06944.toon), [pm-5t33or](../.agents/pm/features/pm-5t33or.toon), [pm-in23qu](../.agents/pm/issues/pm-in23qu.toon), [pm-h8tpeh](../.agents/pm/features/pm-h8tpeh.toon), [pm-okgxwa](../.agents/pm/issues/pm-okgxwa.toon), [pm-22rzjp](../.agents/pm/issues/pm-22rzjp.toon), [pm-76fkpp](../.agents/pm/issues/pm-76fkpp.toon), [pm-igdvfq](../.agents/pm/issues/pm-igdvfq.toon), [pm-643e0k](../.agents/pm/issues/pm-643e0k.toon), and [pm-larv4r](../.agents/pm/issues/pm-larv4r.toon).
|
|
4
4
|
|
|
5
5
|
## Agent Quick Context
|
|
6
6
|
|
|
@@ -54,7 +54,43 @@ rows. This lets governance envelopes reduce diagnostic findings before
|
|
|
54
54
|
omitting the whole verdict without redefining a nested tag or remediation list
|
|
55
55
|
as a pagination row. Receipts name every `compacted_row_paths` entry; a complete
|
|
56
56
|
omission also records the useful result's pre-omission estimate, while the
|
|
57
|
-
|
|
57
|
+
recovery names a bounded budget increase when no declared row path can resume.
|
|
58
|
+
|
|
59
|
+
Budget-compacted declared rows instead publish a bounded `outputCursor`
|
|
60
|
+
continuation on every transport. The cursor resumes the first withheld row and
|
|
61
|
+
rejects a command, path, row-total, or stable-identity mismatch. This gives SDK
|
|
62
|
+
and package loops a recursive self-improvement primitive: consume a bounded
|
|
63
|
+
page, update context, and continue without abandoning the ceiling.
|
|
64
|
+
|
|
65
|
+
`context --explain-ranking` projects explanations to the focus rows actually
|
|
66
|
+
served. `candidate_count` records the scorer population and `omitted_count`
|
|
67
|
+
records explanations intentionally withheld, while each returned row retains
|
|
68
|
+
its rank, baseline rank, score, and per-signal contributions. Explanation cost
|
|
69
|
+
therefore scales with the answer rather than with the active workspace.
|
|
70
|
+
|
|
71
|
+
Unknown-option recovery is likewise derived from the declared flag lexicon.
|
|
72
|
+
The structured `option_scope` is `declared_on_path`, `declared_elsewhere`, or
|
|
73
|
+
`declared_nowhere`; accepting command paths are included only for the second
|
|
74
|
+
case, while the third names the nearest current-path spellings and explicitly
|
|
75
|
+
terminates the otherwise-unbounded command search.
|
|
76
|
+
|
|
77
|
+
## Executable recovery-reference coverage
|
|
78
|
+
|
|
79
|
+
Structured refusal guidance is a forward-reference contract, not decorative
|
|
80
|
+
text. `verifyPmRecoveryReferences` accepts obligations derived from real error
|
|
81
|
+
envelopes and observations produced by executing a retry, resolving a declared
|
|
82
|
+
command path, or linking prose to an already executed recovery. Its report
|
|
83
|
+
includes the total obligation set, pass fraction, sorted findings, and stable
|
|
84
|
+
coverage buckets for `suggested_retry`, `candidate_command`, `example`, and
|
|
85
|
+
`next_step`, including zero-population buckets.
|
|
86
|
+
|
|
87
|
+
The repository integration corpus drives real CLI refusals, executes the
|
|
88
|
+
emitted retry in a temporary tracker, compares candidate commands with the
|
|
89
|
+
unbounded runtime contract enumeration, and binds examples and next steps to
|
|
90
|
+
those proofs. A seeded unreachable observation must lower the pass fraction
|
|
91
|
+
and produce `unreachable_reference`. The same corpus is a provider-backed
|
|
92
|
+
blocking assertion in `repository-context-quality`, so a well-formed but broken
|
|
93
|
+
recovery promise cannot pass CI merely because its text or target flag exists.
|
|
58
94
|
|
|
59
95
|
## Row discovery and exact output receipts
|
|
60
96
|
|
|
@@ -134,6 +170,26 @@ never succeeded. The same bounded pass classifies bare boolean and single-digit
|
|
|
134
170
|
values across every recorded provenance dimension, publishes only aggregate
|
|
135
171
|
harness/dimension/kind counts, and never echoes the historical value.
|
|
136
172
|
|
|
173
|
+
`historyRepair` and `historyRepairAll` retain the detected history hash epoch
|
|
174
|
+
instead of unconditionally upgrading it. `normalizeProvenance: true` adds a
|
|
175
|
+
privacy-safe repair mode that removes invalid bounded observations and records
|
|
176
|
+
only aggregate counts/classes in the synthetic audit event. The bulk form
|
|
177
|
+
selects both drifted streams and streams requiring provenance normalization.
|
|
178
|
+
|
|
179
|
+
Health results are self-indexing: every retained warning has a `findings` row
|
|
180
|
+
with its owning check, stable code, severity, and either executable remediation
|
|
181
|
+
or an explicit safe refusal. `failed_because` contains the exact warning tokens
|
|
182
|
+
that decide `ok: false` and survives brief/summary projection. Extension health
|
|
183
|
+
adds a host-version census by resolving the pm-cli package visible from each
|
|
184
|
+
loaded extension; npm/pnpm duplicate-version skew is gate-failing while matching
|
|
185
|
+
workspace-linked and deduplicated copies remain green.
|
|
186
|
+
|
|
187
|
+
Linked file/doc add parsing uses one SDK allowlist. Whitespace-free filesystem
|
|
188
|
+
paths and scheme-prefixed URLs remain positional even when a path or query
|
|
189
|
+
contains `=`. Leading assignment syntax, including malformed URL-plus-note
|
|
190
|
+
input, must use the declared `path`, `scope`, and `note` keys or fail before
|
|
191
|
+
mutation.
|
|
192
|
+
|
|
137
193
|
## Replication and refusal gate
|
|
138
194
|
|
|
139
195
|
`scripts/release/surface-replication-sets.json` declares replicated SDK, CLI, MCP, documentation, and test members. `pnpm quality:surface-replication` activates sets from the Git changeset, verifies every member invariant, and reports:
|
|
@@ -145,6 +201,12 @@ harness/dimension/kind counts, and never echoes the historical value.
|
|
|
145
201
|
- an AST-derived denominator of identical named rule bodies, declared coverage,
|
|
146
202
|
and a non-decreasing detected-cluster floor.
|
|
147
203
|
|
|
204
|
+
Trigger entries may constrain a shared file with `changed_lines_contain_any`.
|
|
205
|
+
The set then activates only when an added or removed diff line carries one of
|
|
206
|
+
those contract markers. Missing diff evidence fails closed and activates the
|
|
207
|
+
set, while an unrelated hunk in the same shared table does not force artificial
|
|
208
|
+
edits across every replicated member.
|
|
209
|
+
|
|
148
210
|
Query waivers directly with:
|
|
149
211
|
|
|
150
212
|
```bash
|
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
|
+
"version": "2026.8.15"
|
|
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.
|
|
16
|
+
"version": "2026.8.15",
|
|
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.
|
|
3
|
+
"version": "2026.8.15",
|
|
4
4
|
"description": "Git-native project management CLI for humans and agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@11.10.0",
|
|
@@ -120,11 +120,11 @@
|
|
|
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 &&
|
|
123
|
+
"quality:static": "pnpm build && 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 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",
|
|
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",
|
|
127
|
-
"quality:context-eval": "pnpm build && node scripts/release/
|
|
127
|
+
"quality:context-eval": "pnpm build && node scripts/release/repository-assurance.mjs repository-context-quality --trigger ci --json && pnpm quality:token-surface",
|
|
128
128
|
"quality:agent-task-token": "pnpm build && node scripts/release/agent-task-token-gate.mjs",
|
|
129
129
|
"quality:agent-task-token:update": "pnpm build && node scripts/release/agent-task-token-gate.mjs --update",
|
|
130
130
|
"quality:retrieval-eval": "pnpm build && node scripts/release/retrieval-eval-gate.mjs",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-digital-twin",
|
|
3
|
-
"version": "2026.8.
|
|
3
|
+
"version": "2026.8.15",
|
|
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,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.
|
|
4
|
+
"version": "2026.8.15",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "unbrained",
|
|
7
7
|
"url": "https://github.com/unbraind/pm-cli"
|