@unbrained/pm-cli 2026.9.6 → 2026.9.8
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/.agents/skills/pm-developer/SKILL.md +12 -4
- package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +19 -10
- package/.agents/skills/pm-extensions/SKILL.md +6 -0
- package/.agents/skills/pm-sdk/SKILL.md +11 -2
- package/.agents/skills/pm-user/SKILL.md +5 -0
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +218 -182
- package/dist/cli/after-command-context-usage.js +1 -48
- package/dist/cli/argv-utils.js +1 -40
- package/dist/cli/bootstrap-args.js +1 -9
- package/dist/cli/bundle-integrity.js +2 -110
- package/dist/cli/commander-usage.js +11 -771
- package/dist/cli/commands/activity.js +1 -9
- package/dist/cli/commands/aggregate.js +1 -5
- package/dist/cli/commands/append.js +1 -5
- package/dist/cli/commands/claim.js +1 -5
- package/dist/cli/commands/close-many.js +1 -5
- package/dist/cli/commands/close.js +1 -9
- package/dist/cli/commands/comments.js +1 -5
- package/dist/cli/commands/config.js +1 -9
- package/dist/cli/commands/context.js +1 -9
- package/dist/cli/commands/contracts.js +1 -5
- package/dist/cli/commands/copy.js +1 -9
- package/dist/cli/commands/create.js +1 -9
- package/dist/cli/commands/delete.js +1 -9
- package/dist/cli/commands/deps.js +1 -9
- package/dist/cli/commands/docs.js +1 -9
- package/dist/cli/commands/duplicates.js +1 -9
- package/dist/cli/commands/eval.js +1 -9
- package/dist/cli/commands/extension/describe.js +1 -5
- package/dist/cli/commands/extension/scaffold.js +1 -5
- package/dist/cli/commands/extension/shared.js +1 -5
- package/dist/cli/commands/extension.js +1 -9
- package/dist/cli/commands/files.js +1 -9
- package/dist/cli/commands/focus.js +1 -9
- package/dist/cli/commands/gc.js +1 -9
- package/dist/cli/commands/get.js +1 -9
- package/dist/cli/commands/graph.js +1 -10
- package/dist/cli/commands/health.js +1 -9
- package/dist/cli/commands/history-compact.js +1 -10
- package/dist/cli/commands/history-redact.js +1 -11
- package/dist/cli/commands/history-repair.js +1 -10
- package/dist/cli/commands/history.js +1 -5
- package/dist/cli/commands/index.js +1 -58
- package/dist/cli/commands/init-agent-guidance.js +1 -9
- package/dist/cli/commands/init.js +1 -9
- package/dist/cli/commands/learnings.js +1 -5
- package/dist/cli/commands/lifecycle-transitions.js +1 -5
- package/dist/cli/commands/list.js +1 -9
- package/dist/cli/commands/merge.js +1 -11
- package/dist/cli/commands/next.js +1 -9
- package/dist/cli/commands/notes.js +1 -5
- package/dist/cli/commands/plan.js +1 -9
- package/dist/cli/commands/profile.js +1 -9
- package/dist/cli/commands/restore.js +1 -9
- package/dist/cli/commands/scheduling-shortcuts.js +1 -9
- package/dist/cli/commands/schema.js +1 -10
- package/dist/cli/commands/search.js +1 -9
- package/dist/cli/commands/stats.js +1 -9
- package/dist/cli/commands/telemetry.js +1 -9
- package/dist/cli/commands/test-all.js +1 -9
- package/dist/cli/commands/test-runs.js +1 -9
- package/dist/cli/commands/test.js +1 -9
- package/dist/cli/commands/update-many.js +1 -5
- package/dist/cli/commands/update.js +1 -9
- package/dist/cli/commands/upgrade.js +1 -5
- package/dist/cli/commands/validate.js +1 -15
- package/dist/cli/context-intent-invocation.js +1 -20
- package/dist/cli/description-stdin.js +1 -17
- package/dist/cli/error-guidance.js +1 -1353
- package/dist/cli/extension-command-help.js +5 -636
- package/dist/cli/extension-command-options.js +1 -427
- package/dist/cli/extension-recovery.js +1 -126
- package/dist/cli/help-content.js +2 -1001
- package/dist/cli/help-json-payload.js +4 -570
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.js +5 -2573
- package/dist/cli/migration-gates.js +1 -289
- package/dist/cli/public.js +1 -20
- package/dist/cli/register-annotations.js +1 -270
- package/dist/cli/register-assurance.js +1 -62
- package/dist/cli/register-files-lookup.js +1 -56
- package/dist/cli/register-history-activity.d.ts +8 -0
- package/dist/cli/register-history-activity.js +2 -0
- package/dist/cli/register-history-author.js +1 -38
- package/dist/cli/register-history-maintenance.d.ts +9 -0
- package/dist/cli/register-history-maintenance.js +2 -0
- package/dist/cli/register-list-query.js +10 -943
- package/dist/cli/register-mutation-options.js +1 -9
- package/dist/cli/register-mutation.js +19 -1893
- package/dist/cli/register-operations.js +1 -920
- package/dist/cli/register-setup.js +1 -716
- package/dist/cli/register-structured-mutation.js +1 -196
- package/dist/cli/registration-helpers.js +1 -5
- package/dist/cli/runtime-compatibility-boundary.js +4 -42
- package/dist/cli/schema-registration-helpers.js +1 -73
- package/dist/cli/search-refresh.js +1 -13
- package/dist/cli/stats-analytics-json.js +1 -68
- package/dist/cli/telemetry-flush.js +1 -10
- package/dist/cli-bundle/bundle-manifest.json +164 -156
- package/dist/cli-bundle/chunks/chunk-3BZZA6A3.js +5 -0
- package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +235 -0
- package/dist/cli-bundle/chunks/chunk-DAM4CBBR.js +2202 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FLDWYEND.js +77 -0
- package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-G5ADGQ2D.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-JAAEYHUA.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-JX4DH4WC.js → chunk-KR3RP4FH.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-LEZOUXG6.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +29 -0
- package/dist/cli-bundle/chunks/chunk-RHSFOMHU.js +2 -0
- package/dist/cli-bundle/chunks/chunk-XOD2PCB6.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-YVEQ2AMO.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-KSK3R63M.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +20 -0
- package/dist/cli-bundle/chunks/{register-operations-I5W3KMGB.js → register-operations-DWVHR2NC.js} +2 -2
- package/dist/cli-bundle/chunks/register-setup-BQ5SVD4B.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-3WRPWLA7.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7MBUII7U.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-COPBO5HW.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-DUN4IXYN.js +20 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-EE5QSM4Z.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-HJVARYM3.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-KOOMJ54F.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +56 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-OPFHFGDD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +9 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-RMWES4M6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-RXT4P5QH.js +10 -0
- package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PEFABF7E.js → chunk-WE3IUNIW.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +2 -0
- package/dist/cli-bundle/main.js +20 -20
- 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 +29 -29
- 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 +11 -11
- package/dist/cli.js +1 -104
- package/dist/core/checkpoint/checkpoint-gc.js +1 -169
- package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
- package/dist/core/config/nested-settings.js +1 -534
- package/dist/core/config/positional-value.js +1 -109
- package/dist/core/diagnostics/remediation.js +1 -506
- package/dist/core/extensions/activation-summary-markdown.js +2 -145
- package/dist/core/extensions/activation-summary.js +1 -92
- package/dist/core/extensions/activation-transaction.js +1 -46
- package/dist/core/extensions/capability-usage.js +1 -173
- package/dist/core/extensions/command-hook-context.js +1 -13
- package/dist/core/extensions/command-metadata-contract.js +1 -22
- package/dist/core/extensions/command-visibility-tier.js +1 -29
- package/dist/core/extensions/contribution-inventory.js +1 -173
- package/dist/core/extensions/exporter-output-contract.js +1 -66
- package/dist/core/extensions/extension-candidate.js +1 -18
- package/dist/core/extensions/extension-capability-aliases.js +1 -158
- package/dist/core/extensions/extension-hook-runtime.js +1 -699
- package/dist/core/extensions/extension-policy.js +1 -599
- package/dist/core/extensions/extension-registries.js +1 -62
- package/dist/core/extensions/extension-runtime-helpers.js +1 -33
- package/dist/core/extensions/extension-types.js +1 -102
- package/dist/core/extensions/flag-definition-validation.js +1 -52
- package/dist/core/extensions/flag-value-types.js +1 -64
- package/dist/core/extensions/index.js +1 -526
- package/dist/core/extensions/item-field-types.js +1 -39
- package/dist/core/extensions/item-fields.js +1 -261
- package/dist/core/extensions/loader.js +1 -2223
- package/dist/core/extensions/manifest-schema.js +1 -69
- package/dist/core/extensions/module-graph-snapshot.js +1 -33
- package/dist/core/extensions/preflight-ownership.js +1 -41
- package/dist/core/extensions/registration-validation.js +1 -82
- package/dist/core/extensions/registration-values.js +1 -209
- package/dist/core/extensions/reserved-host-flags.js +1 -36
- package/dist/core/extensions/runtime-registrations.js +1 -67
- package/dist/core/extensions/service-ownership.js +1 -19
- package/dist/core/extensions/version-compat.js +1 -216
- package/dist/core/fs/fs-utils.js +2 -158
- package/dist/core/fs/host-environment-errors.js +1 -141
- package/dist/core/fs/index.js +1 -9
- package/dist/core/fs/path-utils.js +1 -17
- package/dist/core/governance/content-fields.js +1 -160
- package/dist/core/governance/issue-codes.js +1 -151
- package/dist/core/governance/metadata-coverage.js +1 -358
- package/dist/core/history/drift-cache.js +3 -72
- package/dist/core/history/drift-scan.js +1 -342
- package/dist/core/history/event-classification.js +1 -109
- package/dist/core/history/event-index.js +8 -784
- package/dist/core/history/history-compact-bulk.js +1 -104
- package/dist/core/history/history-diff.js +1 -158
- package/dist/core/history/history-rewrite.d.ts +6 -1
- package/dist/core/history/history-rewrite.js +1 -107
- package/dist/core/history/history-storage-stats.js +1 -102
- package/dist/core/history/history-stream-policy.js +1 -62
- package/dist/core/history/history.js +2 -617
- package/dist/core/history/identity.js +1 -30
- package/dist/core/history/index.js +1 -9
- package/dist/core/history/projection.js +1 -196
- package/dist/core/history/read.d.ts +9 -0
- package/dist/core/history/read.js +1 -57
- package/dist/core/history/replay.js +2 -439
- package/dist/core/history/version-address.js +1 -32
- package/dist/core/history/workspace-history.js +2 -433
- package/dist/core/io/body-file.js +1 -62
- package/dist/core/io/bulk-ids-input.js +1 -112
- package/dist/core/item/actionability.js +1 -327
- package/dist/core/item/dependency-reference.js +1 -20
- package/dist/core/item/id.js +1 -112
- package/dist/core/item/index.js +1 -12
- package/dist/core/item/item-format-version.js +1 -78
- package/dist/core/item/item-format.js +5 -1473
- package/dist/core/item/item-record.js +1 -23
- package/dist/core/item/item-type-definition.js +1 -133
- package/dist/core/item/parent-reference-policy.js +1 -57
- package/dist/core/item/parse.js +2 -603
- package/dist/core/item/plan-lifecycle.js +1 -19
- package/dist/core/item/priority.js +1 -61
- package/dist/core/item/sprint-release-format.js +1 -38
- package/dist/core/item/status-filter.js +1 -115
- package/dist/core/item/status.js +1 -43
- package/dist/core/item/toon-decode.js +1 -29
- package/dist/core/item/type-registry.js +1 -715
- package/dist/core/item/type-synonyms.js +1 -38
- package/dist/core/lock/index.js +1 -9
- package/dist/core/lock/lock-gc.js +1 -240
- package/dist/core/lock/lock.js +3 -590
- package/dist/core/output/mutation-projection.js +1 -217
- package/dist/core/output/output-control.js +1 -25
- package/dist/core/output/output.js +11 -494
- package/dist/core/output/query-summary.js +1 -58
- package/dist/core/output/tabular.js +1 -77
- package/dist/core/packages/manifest.js +1 -244
- package/dist/core/packages/root.js +1 -84
- package/dist/core/profile/profile-describe.js +1 -83
- package/dist/core/profile/profile-lint.js +1 -415
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-presets.js +1 -370
- package/dist/core/reproducibility/context.js +1 -82
- package/dist/core/schema/fields-file.js +2 -288
- package/dist/core/schema/item-types-file.js +2 -296
- package/dist/core/schema/runtime-field-filters.js +1 -49
- package/dist/core/schema/runtime-field-values.js +1 -313
- package/dist/core/schema/runtime-schema.js +2 -826
- package/dist/core/schema/status-defs-file.js +2 -227
- package/dist/core/schema/status-token.js +1 -31
- package/dist/core/schema/type-inference.js +1 -95
- package/dist/core/schema/type-presets.js +1 -87
- package/dist/core/schema/type-workflows.js +1 -104
- package/dist/core/search/background-refresh.js +2 -286
- package/dist/core/search/bm25.js +1 -146
- package/dist/core/search/cache.js +2 -534
- package/dist/core/search/corpus.js +1 -311
- package/dist/core/search/embedding-batches.js +1 -163
- package/dist/core/search/eval.js +1 -225
- package/dist/core/search/http-client.js +1 -75
- package/dist/core/search/providers.js +1 -242
- package/dist/core/search/relevance.js +1 -244
- package/dist/core/search/semantic-defaults.js +1 -199
- package/dist/core/search/staleness.js +1 -30
- package/dist/core/search/vector-stores.js +2 -664
- package/dist/core/search/vectorization-metadata.js +1 -81
- package/dist/core/sentry/helpers.js +1 -272
- package/dist/core/sentry/instrument.js +1 -387
- package/dist/core/session/session-state.js +1 -260
- package/dist/core/shared/agent-session-context.js +1 -133
- package/dist/core/shared/author.js +1 -1172
- package/dist/core/shared/command-types.js +1 -4
- package/dist/core/shared/conflict-markers.js +1 -31
- package/dist/core/shared/constants.js +1 -405
- package/dist/core/shared/errors.js +1 -20
- package/dist/core/shared/html-entity-decode.js +1 -131
- package/dist/core/shared/index.js +1 -12
- package/dist/core/shared/item-metadata-contract.js +1 -89
- package/dist/core/shared/lazy-module.js +1 -16
- package/dist/core/shared/levenshtein.js +1 -61
- package/dist/core/shared/memo.js +1 -19
- package/dist/core/shared/numeric-parsers.js +1 -20
- package/dist/core/shared/option-alias-visibility.js +1 -67
- package/dist/core/shared/primitives.js +1 -127
- package/dist/core/shared/serial-queue.js +1 -79
- package/dist/core/shared/serialization.js +1 -210
- package/dist/core/shared/split-comma-list.js +1 -30
- package/dist/core/shared/text-normalization.js +1 -38
- package/dist/core/shared/time.js +1 -306
- package/dist/core/store/index.js +1 -12
- package/dist/core/store/item-format-migration.js +1 -125
- package/dist/core/store/item-metadata-cache.js +1 -1116
- package/dist/core/store/item-metadata-query-index.js +9 -394
- package/dist/core/store/item-metadata-read-work.js +1 -43
- package/dist/core/store/item-store.js +1 -693
- package/dist/core/store/paths.d.ts +1 -1
- package/dist/core/store/paths.js +1 -214
- package/dist/core/store/settings-read-cache.js +1 -85
- package/dist/core/store/settings-validator.js +1 -421
- package/dist/core/store/settings.js +3 -1309
- package/dist/core/store/tracker-preflight.js +1 -141
- package/dist/core/telemetry/consent.js +5 -108
- package/dist/core/telemetry/observability.js +1 -246
- package/dist/core/telemetry/runtime.js +4 -1988
- package/dist/core/test/background-runs.js +4 -945
- package/dist/core/test/item-test-run-tracking.js +1 -63
- package/dist/core/test/run-selectors.js +1 -120
- package/dist/core/validate/estimate-defaults.js +1 -89
- package/dist/core/validate/fix-planning.js +1 -189
- package/dist/core/validate/linked-artifact-reference.js +1 -36
- package/dist/core/validate/missing-by-type.js +1 -34
- package/dist/core/validate/missing-link-owners.js +1 -95
- package/dist/core/validate/stale-file-classification.js +1 -82
- package/dist/mcp/http-server.js +5 -448
- package/dist/mcp/legacy-adapter.js +1 -77
- package/dist/mcp/runtime-capabilities.js +1 -200
- package/dist/mcp/server.js +4 -1233
- package/dist/mcp/tool-definitions.js +1 -804
- package/dist/sdk/actionability.js +1 -13
- package/dist/sdk/agent/closed-domain-contracts.js +1 -161
- package/dist/sdk/agent/command-recovery.js +1 -59
- package/dist/sdk/agent/command-suggestions.js +1 -66
- package/dist/sdk/agent/create-option-policy.js +1 -31
- package/dist/sdk/agent/identity-config.js +1 -106
- package/dist/sdk/agent/item-addressing.js +1 -207
- package/dist/sdk/agent/refusal-closure-census.js +1 -151
- package/dist/sdk/agent/refusal-closure.js +1 -133
- package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
- package/dist/sdk/agent/refusal-reachability.js +1 -593
- package/dist/sdk/agent/subcommand-recovery.js +1 -83
- package/dist/sdk/agent/task-transcript-contracts.js +1 -197
- package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
- package/dist/sdk/agent-capability-contracts.js +1 -428
- package/dist/sdk/agent-session-context.js +1 -9
- package/dist/sdk/annotations.js +1 -448
- package/dist/sdk/author-attribution.js +1 -468
- package/dist/sdk/authoring.js +1 -20
- package/dist/sdk/cli-bootstrap.js +1 -838
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
- package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
- package/dist/sdk/cli-contracts/command-aliases.js +1 -107
- package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
- package/dist/sdk/cli-contracts/commander-types.js +1 -159
- package/dist/sdk/cli-contracts/completeness.js +1 -393
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
- package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
- package/dist/sdk/cli-contracts/string-lists.js +1 -16
- package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
- package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -17
- package/dist/sdk/cli-program.js +1 -49
- package/dist/sdk/command-line.d.ts +2 -5
- package/dist/sdk/command-line.js +1 -78
- package/dist/sdk/comments.js +1 -133
- package/dist/sdk/compile-cache.js +1 -73
- package/dist/sdk/completion.js +157 -837
- package/dist/sdk/compose.js +1 -1090
- package/dist/sdk/config.js +1 -1204
- package/dist/sdk/context/recency.js +1 -33
- package/dist/sdk/context/semantic-session-attribution.js +1 -82
- package/dist/sdk/context/usage-egress.js +1 -29
- package/dist/sdk/context/usage-ledger.js +3 -185
- package/dist/sdk/context-intent-contracts.js +1 -709
- package/dist/sdk/context-intent-runtime.js +1 -115
- package/dist/sdk/context-packing.js +1 -218
- package/dist/sdk/context-relevance.js +1 -503
- package/dist/sdk/context-signal-store.js +2 -426
- package/dist/sdk/context-usage.js +1 -367
- package/dist/sdk/contracts.js +1 -23
- package/dist/sdk/core-governance.js +1 -14
- package/dist/sdk/core.js +1 -14
- package/dist/sdk/corpus-shape.js +1 -401
- package/dist/sdk/define.js +1 -220
- package/dist/sdk/dependencies.js +1 -718
- package/dist/sdk/dependency-flag-validation.js +1 -156
- package/dist/sdk/dependency-provenance.js +1 -135
- package/dist/sdk/docs.js +1 -14
- package/dist/sdk/duplicates.js +1 -40
- package/dist/sdk/environment/agent-environment.js +1 -466
- package/dist/sdk/environment/host-environment-errors.js +1 -8
- package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
- package/dist/sdk/environment/source-context.js +1 -28
- package/dist/sdk/environment/tracker-preflight.js +1 -9
- package/dist/sdk/error-code-catalog.js +1 -153
- package/dist/sdk/error-runtime.js +1 -58
- package/dist/sdk/errors.js +1 -58
- package/dist/sdk/eval.js +1 -190
- package/dist/sdk/extension/author-manifest.js +1 -92
- package/dist/sdk/extension/bundled-catalog.js +1 -332
- package/dist/sdk/extension/concurrency.js +1 -25
- package/dist/sdk/extension/copy-scope.d.ts +2 -0
- package/dist/sdk/extension/copy-scope.js +2 -0
- package/dist/sdk/extension/custom-field-collisions.js +1 -30
- package/dist/sdk/extension/describe.js +3 -189
- package/dist/sdk/extension/doctor.js +1 -606
- package/dist/sdk/extension/install-plan.d.ts +69 -0
- package/dist/sdk/extension/install-plan.js +2 -0
- package/dist/sdk/extension/install-receipts.d.ts +7 -0
- package/dist/sdk/extension/install-receipts.js +2 -0
- package/dist/sdk/extension/install-runtime.js +3 -313
- package/dist/sdk/extension/install-snapshot.js +1 -66
- package/dist/sdk/extension/install-sources.js +5 -1057
- package/dist/sdk/extension/managed-state.js +2 -252
- package/dist/sdk/extension/migrations.js +2 -174
- package/dist/sdk/extension/output-ownership.js +1 -25
- package/dist/sdk/extension/runtime-summary.js +1 -18
- package/dist/sdk/extension/scaffold.js +4 -2308
- package/dist/sdk/extension/shared.js +1 -147
- package/dist/sdk/extension/source-resolution.js +1 -65
- package/dist/sdk/extension/update-check.js +1 -67
- package/dist/sdk/extension-command-context.js +1 -44
- package/dist/sdk/extension-contracts.js +1 -73
- package/dist/sdk/extension.d.ts +7 -2
- package/dist/sdk/extension.js +1 -2196
- package/dist/sdk/files.js +1 -535
- package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
- package/dist/sdk/flag-invocation-contracts.js +1 -344
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
- package/dist/sdk/generated-error-code-catalog.js +1 -16
- package/dist/sdk/governance/assurance-action-contracts.js +1 -4
- package/dist/sdk/governance/assurance-action.js +1 -411
- package/dist/sdk/governance/assurance-limits.js +1 -10
- package/dist/sdk/governance/assurance-mutation-error.js +1 -81
- package/dist/sdk/governance/assurance-presets.js +1 -135
- package/dist/sdk/governance/assurance-runtime.js +1 -238
- package/dist/sdk/governance/assurance.js +4 -1182
- package/dist/sdk/governance/boundary-fixtures.js +1 -200
- package/dist/sdk/governance/coverage-assurance.js +1 -60
- package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
- package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
- package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
- package/dist/sdk/governance/defect-recurrence.js +1 -623
- package/dist/sdk/governance/extension-host-version.js +1 -115
- package/dist/sdk/governance/gc.js +1 -368
- package/dist/sdk/governance/health.js +1 -2367
- package/dist/sdk/governance/hierarchy-validation.js +1 -108
- package/dist/sdk/governance/linked-file-report.js +1 -71
- package/dist/sdk/governance/merge-receipt-history.js +1 -206
- package/dist/sdk/governance/provenance-health.js +1 -282
- package/dist/sdk/governance/reindex.js +4 -761
- package/dist/sdk/governance/stale-work.js +1 -82
- package/dist/sdk/governance/status-role-diagnostics.js +1 -35
- package/dist/sdk/governance/storage-integrity.js +1 -280
- package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
- package/dist/sdk/governance/upgrade.js +2 -327
- package/dist/sdk/governance/validate-history-drift.js +1 -81
- package/dist/sdk/governance/validate-item-reader.js +1 -17
- package/dist/sdk/governance/validate-normalization.js +1 -36
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +1 -0
- package/dist/sdk/governance.js +1 -31
- package/dist/sdk/graph/adapter.js +1 -181
- package/dist/sdk/graph/analytics.js +1 -474
- package/dist/sdk/graph/assembly.js +1 -377
- package/dist/sdk/graph/cache.js +1 -160
- package/dist/sdk/graph/centrality.js +1 -258
- package/dist/sdk/graph/conformance.js +1 -130
- package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
- package/dist/sdk/graph/deadline-scheduling.js +2 -0
- package/dist/sdk/graph/durable-cache.d.ts +1 -1
- package/dist/sdk/graph/durable-cache.js +1 -361
- package/dist/sdk/graph/governance-contracts.js +1 -34
- package/dist/sdk/graph/governance.d.ts +13 -1
- package/dist/sdk/graph/governance.js +1 -735
- package/dist/sdk/graph/hierarchy-integrity.js +1 -310
- package/dist/sdk/graph/index.d.ts +3 -2
- package/dist/sdk/graph/index.js +1 -26
- package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
- package/dist/sdk/graph/lifecycle-coverage.js +2 -0
- package/dist/sdk/graph/mutation-advisory.js +1 -176
- package/dist/sdk/graph/remediation.js +1 -197
- package/dist/sdk/graph/run.d.ts +15 -1
- package/dist/sdk/graph/run.js +1 -768
- package/dist/sdk/graph/scheduling.js +1 -124
- package/dist/sdk/graph/traversal.js +1 -284
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
- package/dist/sdk/graph.js +1 -15
- package/dist/sdk/guide-topics.js +1 -707
- package/dist/sdk/guide.js +1 -279
- package/dist/sdk/history/maintenance.d.ts +71 -0
- package/dist/sdk/history/maintenance.js +2 -0
- package/dist/sdk/history/salvage.js +2 -247
- package/dist/sdk/history/subject.d.ts +19 -0
- package/dist/sdk/history/subject.js +2 -0
- package/dist/sdk/history-analytics.js +1 -282
- package/dist/sdk/history-compact.js +1 -527
- package/dist/sdk/history-mcp.js +1 -68
- package/dist/sdk/history-provenance.js +1 -182
- package/dist/sdk/history-read.js +1 -96
- package/dist/sdk/history-redact.d.ts +1 -14
- package/dist/sdk/history-redact.js +1 -643
- package/dist/sdk/history-repair.d.ts +5 -0
- package/dist/sdk/history-repair.js +1 -657
- package/dist/sdk/improvement-ledger-validation.js +1 -62
- package/dist/sdk/improvement-ledger.js +2 -257
- package/dist/sdk/index.d.ts +4 -0
- package/dist/sdk/index.js +1 -183
- package/dist/sdk/init-agent-guidance.js +2 -496
- package/dist/sdk/init.js +2 -820
- package/dist/sdk/invocation-author.js +1 -39
- package/dist/sdk/item-children.js +1 -90
- package/dist/sdk/item-metadata-index.js +1 -15
- package/dist/sdk/item-schedule.js +1 -27
- package/dist/sdk/item-transaction.js +1 -396
- package/dist/sdk/learnings.js +1 -29
- package/dist/sdk/lifecycle/append.js +2 -53
- package/dist/sdk/lifecycle/claim.d.ts +2 -0
- package/dist/sdk/lifecycle/claim.js +1 -242
- package/dist/sdk/lifecycle/close-many.js +1 -438
- package/dist/sdk/lifecycle/close.js +1 -468
- package/dist/sdk/lifecycle/copy.js +1 -212
- package/dist/sdk/lifecycle/create.js +1 -1949
- package/dist/sdk/lifecycle/delete.js +1 -45
- package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
- package/dist/sdk/lifecycle/focus.js +1 -91
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
- package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
- package/dist/sdk/lifecycle/mcp-actions.js +1 -51
- package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
- package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
- package/dist/sdk/lifecycle/plan.js +1 -1606
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
- package/dist/sdk/lifecycle/reopen.js +1 -68
- package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
- package/dist/sdk/lifecycle/restore.d.ts +1 -0
- package/dist/sdk/lifecycle/restore.js +1 -330
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
- package/dist/sdk/lifecycle/update-many.js +1 -861
- package/dist/sdk/lifecycle/update.js +1 -2136
- package/dist/sdk/lifecycle-completion.js +1 -92
- package/dist/sdk/lifecycle-policy.js +1 -120
- package/dist/sdk/linked-artifacts.js +1 -530
- package/dist/sdk/mcp/apps.js +4 -133
- package/dist/sdk/mcp/authorization.js +1 -404
- package/dist/sdk/mcp/discovery.js +1 -494
- package/dist/sdk/mcp/interactions.js +1 -336
- package/dist/sdk/mcp/protocol.d.ts +7 -0
- package/dist/sdk/mcp/protocol.js +1 -184
- package/dist/sdk/mcp/skills.js +1 -389
- package/dist/sdk/mcp/subscriptions.js +1 -211
- package/dist/sdk/mcp/tasks.js +2 -430
- package/dist/sdk/mcp/transport.js +1 -260
- package/dist/sdk/merge/abandoned-receipts.js +1 -46
- package/dist/sdk/merge/driver.js +1 -212
- package/dist/sdk/merge/index.js +1 -16
- package/dist/sdk/merge/install.js +3 -561
- package/dist/sdk/merge/receipt-file-boundary.js +1 -46
- package/dist/sdk/merge/receipt-operation.js +1 -96
- package/dist/sdk/merge/receipt-schema.js +1 -397
- package/dist/sdk/merge/receipts.js +4 -525
- package/dist/sdk/merge/reconcile.js +1 -352
- package/dist/sdk/merge/three-way.js +3 -775
- package/dist/sdk/merge.js +1 -10
- package/dist/sdk/mutation-events.js +1 -292
- package/dist/sdk/mutation-guard.js +1 -216
- package/dist/sdk/notes.js +1 -139
- package/dist/sdk/output-contracts.js +1 -172
- package/dist/sdk/output-projection.js +1 -430
- package/dist/sdk/output-token-accounting.js +1 -140
- package/dist/sdk/output.js +1 -64
- package/dist/sdk/ownership-source.js +1 -21
- package/dist/sdk/package-import-adapters.js +1 -442
- package/dist/sdk/package-migrations.js +1 -20
- package/dist/sdk/package-runtime-options.js +1 -80
- package/dist/sdk/pagination.js +1 -162
- package/dist/sdk/profile.js +1 -454
- package/dist/sdk/provenance.js +1 -258
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/activity.js +1 -401
- package/dist/sdk/query/aggregate.d.ts +16 -0
- package/dist/sdk/query/aggregate.js +1 -390
- package/dist/sdk/query/calendar.js +1 -964
- package/dist/sdk/query/complete-list.js +1 -215
- package/dist/sdk/query/context.js +1 -1702
- package/dist/sdk/query/duplicate-candidates.js +1 -70
- package/dist/sdk/query/get.js +1 -450
- package/dist/sdk/query/history.js +1 -186
- package/dist/sdk/query/item-filter-options.js +1 -9
- package/dist/sdk/query/light-metadata.js +1 -18
- package/dist/sdk/query/list-filter-shared.js +1 -81
- package/dist/sdk/query/list.js +1 -1304
- package/dist/sdk/query/multi-value-filters.js +1 -78
- package/dist/sdk/query/next.js +1 -513
- package/dist/sdk/query/parsers.js +1 -44
- package/dist/sdk/query/projection-contracts.js +1 -184
- package/dist/sdk/query/search-contracts.js +1 -230
- package/dist/sdk/query/search-pagination.js +1 -35
- package/dist/sdk/query/search-rendering.js +1 -105
- package/dist/sdk/query/search.js +2 -1987
- package/dist/sdk/query.js +1 -35
- package/dist/sdk/read-output/continuation.js +1 -194
- package/dist/sdk/read-output-budget.js +1 -135
- package/dist/sdk/read-output-contracts.js +1 -1225
- package/dist/sdk/read-output-rows.js +1 -186
- package/dist/sdk/read-output-session.js +1 -208
- package/dist/sdk/relationship-analytics.js +1 -410
- package/dist/sdk/relationship-context.js +1 -284
- package/dist/sdk/relationship-history.js +4 -519
- package/dist/sdk/relationship-kinds/contract.js +1 -22
- package/dist/sdk/relationship-migration.js +1 -77
- package/dist/sdk/relationships.js +1 -579
- package/dist/sdk/reproducibility/process.js +1 -87
- package/dist/sdk/runtime-action-aliases.js +1 -59
- package/dist/sdk/runtime-extended-actions.js +1 -177
- package/dist/sdk/runtime-input.js +1 -614
- package/dist/sdk/runtime-primitives.js +1 -84
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.js +1 -1928
- package/dist/sdk/scheduling-shortcuts.js +1 -63
- package/dist/sdk/schema-migration.js +3 -856
- package/dist/sdk/schema.js +1 -1376
- package/dist/sdk/search-refresh-worker.js +1 -18
- package/dist/sdk/similarity-scoring.js +1 -53
- package/dist/sdk/similarity.js +1 -326
- package/dist/sdk/start-task-status.js +1 -14
- package/dist/sdk/stats.js +1 -270
- package/dist/sdk/structured-mutations.js +1 -580
- package/dist/sdk/telemetry-flush.js +1 -13
- package/dist/sdk/telemetry.js +1 -405
- package/dist/sdk/templates.js +2 -292
- package/dist/sdk/test/batch.js +2 -509
- package/dist/sdk/test/entry.js +1 -70
- package/dist/sdk/test/execution.js +6 -2211
- package/dist/sdk/test/linked-command-detection.js +1 -546
- package/dist/sdk/test/measurements.js +1 -91
- package/dist/sdk/test/parsers.js +1 -545
- package/dist/sdk/test/runs.js +1 -193
- package/dist/sdk/test/trust.js +2 -206
- package/dist/sdk/testing.js +4 -1391
- package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
- package/dist/sdk/traceability/source-traceability.js +1 -292
- package/dist/sdk/tracker-root-discovery.js +1 -9
- package/dist/sdk/workspace-contracts-cache.js +1 -28
- package/dist/sdk/workspace-contracts.js +1 -33
- package/dist/sdk/workspace-memory.js +2 -318
- package/dist/sdk/workspace-recipe.js +1 -71
- package/dist/sdk/workspace-snapshot.js +4 -613
- package/dist/sdk/workspace-transaction-gc.js +1 -149
- package/dist/sdk/workspace-transaction.js +2 -363
- package/dist/sdk/workspace.js +3 -127
- package/dist/types/index.js +1 -9
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
- package/docs/EXTENSIONS.md +1 -0
- package/docs/HISTORY_MAINTENANCE.md +125 -0
- package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
- package/docs/PACKAGE_EVIDENCE.md +92 -0
- package/docs/PLANNING_MEASUREMENTS.md +183 -0
- package/docs/README.md +3 -0
- package/docs/RELEASING.md +1 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +23 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +5 -5
- 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/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/scripts/finalize-build.mjs +45 -3
- package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
- package/dist/cli-bundle/chunks/chunk-BAX2BYUW.js +0 -2111
- package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
- package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
- package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
- package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
- package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
- package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
- package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
- package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
- package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
- package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
- package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
- package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# History maintenance and recovery
|
|
2
|
+
|
|
3
|
+
Tracked by [pm-34w8za](../.agents/pm/chores/pm-34w8za.toon) and
|
|
4
|
+
[pm-tqel](../.agents/pm/tasks/pm-tqel.toon).
|
|
5
|
+
|
|
6
|
+
History is authoritative context: maintenance must preserve replay integrity,
|
|
7
|
+
version addresses, provenance, and retained recovery evidence. The SDK owns
|
|
8
|
+
these policies; the CLI exposes the same operations through one history family.
|
|
9
|
+
|
|
10
|
+
## Command paths
|
|
11
|
+
|
|
12
|
+
| Native command | Permanent compatibility spelling | Purpose |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| `pm history <id>` | unchanged | Read or verify one item stream |
|
|
15
|
+
| `pm history activity` | `pm activity` | Read activity across streams |
|
|
16
|
+
| `pm history redact <id>` | `pm history-redact <id>` | Remove selected sensitive content |
|
|
17
|
+
| `pm history repair [id]` | `pm history-repair [id]` | Repair or salvage a stream using explicit policy |
|
|
18
|
+
| `pm history compact [id]` | `pm history-compact [id]` | Retain a baseline and selected history tail |
|
|
19
|
+
| `pm history restore <id> <timestamp-or-version>` | `pm restore <id> <timestamp-or-version>` | Restore an item's historical state |
|
|
20
|
+
|
|
21
|
+
Compatibility commands remain executable with their existing flags and result
|
|
22
|
+
shapes. Default discovery omits these root aliases. `pm --all --help` and full
|
|
23
|
+
contracts retain the compatibility inventory. SDK function names and MCP action
|
|
24
|
+
identifiers remain stable, including `history-repair` and `restore`.
|
|
25
|
+
|
|
26
|
+
Bash, Zsh, and Fish completion expose the activity flags under both spellings,
|
|
27
|
+
including `--unbounded`. The `--stream` mode is optional; Zsh offers `rows`,
|
|
28
|
+
`ndjson`, and `jsonl` when a mode is supplied.
|
|
29
|
+
Completion accepts global options before `history` and between `history` and
|
|
30
|
+
its operation, including valued options such as `--pm-path <path>` and
|
|
31
|
+
`--output-format=json`. Option values and later positional arguments do not
|
|
32
|
+
select an operation; the first ordinary history argument remains the item ID.
|
|
33
|
+
Zsh and Fish also offer the value-taking `--id` alternative for redaction,
|
|
34
|
+
repair, and compaction under both native and compatibility spellings.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pm history repair --help
|
|
38
|
+
pm contracts --command "history compact" --flags-only --json
|
|
39
|
+
pm contracts --command "history restore" --availability-only --json
|
|
40
|
+
pm history activity --limit 10
|
|
41
|
+
pm history pm-example --verify --strict-exit
|
|
42
|
+
pm history compact pm-example --dry-run
|
|
43
|
+
pm history repair pm-example --dry-run
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Maintenance previews do not write history or item files. Redaction, repair,
|
|
47
|
+
and compaction return diagnostic report envelopes for both native and legacy
|
|
48
|
+
spellings. Review the operation's report before applying a rewrite. Restore
|
|
49
|
+
returns the standard flat mutation
|
|
50
|
+
receipt; activity uses the existing bounded read envelope and streaming
|
|
51
|
+
contracts. Universal output controls resolve against the selected leaf, so a
|
|
52
|
+
restore does not inherit the parent history read envelope.
|
|
53
|
+
SDK agent-task transcripts resolve the selected history operation through
|
|
54
|
+
leading and interleaved global options before validating output and exit
|
|
55
|
+
contracts. Native maintenance steps use diagnostic reports, restore uses a
|
|
56
|
+
mutation receipt, and ordinary item history retains its collection contract.
|
|
57
|
+
|
|
58
|
+
History identifiers must be a single filename: path separators, traversal-only
|
|
59
|
+
names, null bytes, and drive or stream syntax are rejected before resolution.
|
|
60
|
+
Bulk compaction thresholds must be non-negative safe integers, up to
|
|
61
|
+
`9007199254740991`, in both CLI flags and SDK options. Invalid thresholds are
|
|
62
|
+
rejected before scanning streams.
|
|
63
|
+
`--min-entries` is a bulk-only threshold; single-ID compaction rejects it
|
|
64
|
+
instead of silently ignoring it.
|
|
65
|
+
|
|
66
|
+
Redaction diagnostics hide matcher and replacement values after resolving the
|
|
67
|
+
leading command path through global options. Words such as `history` or
|
|
68
|
+
`redact` appearing only as values of an unrelated command do not activate this
|
|
69
|
+
privacy filter. Unknown flags still permit redaction before validation fails.
|
|
70
|
+
|
|
71
|
+
## SDK integration
|
|
72
|
+
|
|
73
|
+
Use `runHistoryRedact`, `runHistoryRepair`, `runHistoryCompact`, and `runRestore`
|
|
74
|
+
from the public SDK for ordinary integrations. These functions retain each
|
|
75
|
+
operation's validation, audit events, version mapping, and recovery policy.
|
|
76
|
+
|
|
77
|
+
`runHistoryMaintenance` is the shared SDK pipeline for history transforms. It
|
|
78
|
+
accepts a resolved subject, settings, type registry, operation policy, execution
|
|
79
|
+
options, and a transform. The transform receives one captured stream, chain
|
|
80
|
+
verification, current item, and resolved author. It returns planned entries,
|
|
81
|
+
a result renderer, and optional transactional callbacks.
|
|
82
|
+
|
|
83
|
+
The pipeline performs these steps:
|
|
84
|
+
|
|
85
|
+
1. Read original bytes and decode entries from the same file read.
|
|
86
|
+
2. Capture the current item and construct the operation-specific plan.
|
|
87
|
+
3. Verify the complete planned chain, including during dry runs.
|
|
88
|
+
4. For a changed apply, enforce ownership and acquire the existing rewrite lock.
|
|
89
|
+
5. Recheck both stream and item bytes under that lock; reject concurrent changes.
|
|
90
|
+
6. Persist with rollback, then collect post-write hook warnings and render the report.
|
|
91
|
+
|
|
92
|
+
`readHistorySnapshot` exposes the paired raw bytes and decoded entries when an
|
|
93
|
+
integration needs a concurrency baseline. `readHistoryEntries` remains the
|
|
94
|
+
array-returning compatibility API.
|
|
95
|
+
|
|
96
|
+
A custom `applyRewrite` callback owns any coupled item/history transaction and
|
|
97
|
+
its rollback. `beforeWrite` runs under the lock for evidence checks, and
|
|
98
|
+
`afterWrite` supplies operation-specific hook and index warnings. Planning must
|
|
99
|
+
not persist changes. The shared pipeline verifies the planned chain but cannot
|
|
100
|
+
make arbitrary callback side effects transactional.
|
|
101
|
+
|
|
102
|
+
Redaction uses the coupled item/history transaction. Repair retains its
|
|
103
|
+
source-bound abandonment and salvage policies. Compaction retains baseline,
|
|
104
|
+
checkpoint, and historical version mappings. Restore uses the same snapshot
|
|
105
|
+
and under-lock drift primitives while retaining its lifecycle transaction and
|
|
106
|
+
unreadable-item recovery reader. Copy retains its existing SDK lifecycle
|
|
107
|
+
implementation.
|
|
108
|
+
|
|
109
|
+
## Verification
|
|
110
|
+
|
|
111
|
+
The namespace integration tests compare native and compatibility previews and
|
|
112
|
+
activity results, verify untouched bytes after previews, apply restore, and
|
|
113
|
+
verify the resulting chain. SDK maintenance tests exercise invalid plans and
|
|
114
|
+
concurrent changes. Existing redaction, repair, compaction, and restore suites
|
|
115
|
+
continue to cover operation-specific rollback and retained evidence.
|
|
116
|
+
|
|
117
|
+
Run tests through the sandbox wrapper described in [Testing](TESTING.md):
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
node scripts/run-tests.mjs test -- tests/integration/history-namespace.integration.spec.ts tests/unit/sdk/history/maintenance.spec.ts tests/unit/sdk/cli-contracts/history-namespace-completion.spec.ts
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
See [Mutation Integrity](MUTATION_INTEGRITY.md),
|
|
124
|
+
[Context Integrity Contracts](CONTEXT_INTEGRITY_CONTRACTS.md), and
|
|
125
|
+
[CLI Grammar](CLI_GRAMMAR.md) for the surrounding guarantees.
|
|
@@ -15,17 +15,27 @@ evidence or an explicit open obligation.
|
|
|
15
15
|
| No modern initialize, initialized notification, ping, or protocol session | [pm-sqvshj](../.agents/pm/decisions/pm-sqvshj.toon) | Implemented with bounded legacy stdio adapter | modern removed-method and legacy handshake tests |
|
|
16
16
|
| Legacy interoperability covers every initialize-era revision the spec names | [pm-edywqn](../.agents/pm/issues/pm-edywqn.toon) | Implemented: `2025-11-25` and `2025-06-18` accepted, requested revision echoed | `tests/integration/mcp-handshake.spec.ts` handshake matrix plus the plugin smoke `assertProtocolHandshakeMatrix` real-process gate and its negative control |
|
|
17
17
|
| MRTR `input_required`, retry state, and reverse-request removal | [pm-rz9gep](../.agents/pm/features/pm-rz9gep.toon) | Implemented for SDK and stateless stdio adapter | `tests/unit/sdk/mcp/interactions.spec.ts`; direct server negative controls |
|
|
18
|
-
| `subscriptions/listen`, request-scoped streams, no SSE resumability | [pm-v7e337](../.agents/pm/features/pm-v7e337.toon) | Implemented
|
|
18
|
+
| `subscriptions/listen`, request-scoped streams, no SSE resumability | [pm-v7e337](../.agents/pm/features/pm-v7e337.toon) | Implemented; consumer acceptance remains a per-release gate | subscription SDK, stdio, HTTP, backpressure, disconnect, and retry tests |
|
|
19
19
|
| Official `io.modelcontextprotocol/tasks` extension | [pm-rzs24j](../.agents/pm/features/pm-rzs24j.toon) | Implemented for eligible tool calls, durable lifecycle, and stdio methods; notifications remain with subscriptions owner | `tests/unit/sdk/mcp/tasks.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
|
|
20
20
|
| Cacheable list/read results, deterministic tools, JSON Schema 2020-12, any JSON structured content | [pm-hv1x1x](../.agents/pm/features/pm-hv1x1x.toon) | Implemented for current pm tool/resource/prompt surfaces | SDK schema/cache tests and direct modern server surface suite |
|
|
21
|
-
| Issuer-bound authorization, client metadata documents, consent, headers, OpenTelemetry | [pm-3zh9s4](../.agents/pm/features/pm-3zh9s4.toon) | Implemented
|
|
22
|
-
| Stable MCP Apps negotiation, tool/resource metadata, fallback, sandboxing, and accessible views | [pm-pznhee](../.agents/pm/features/pm-pznhee.toon) | Implemented in the public SDK and stateless server;
|
|
23
|
-
| Draft Skills over MCP list/get/read, compatibility, provenance, digests, bounds, and pagination | [pm-8nzivt](../.agents/pm/features/pm-8nzivt.toon) | Implemented against exact SEP-2640 draft revision;
|
|
21
|
+
| Issuer-bound authorization, client metadata documents, consent, headers, OpenTelemetry | [pm-3zh9s4](../.agents/pm/features/pm-3zh9s4.toon) | Implemented; deployment-specific identity-provider verification remains host-owned | authorization SDK adversarial tests, real HTTP bearer suite, and threat model |
|
|
22
|
+
| Stable MCP Apps negotiation, tool/resource metadata, fallback, sandboxing, and accessible views | [pm-pznhee](../.agents/pm/features/pm-pznhee.toon) | Implemented in the public SDK and stateless server; exact-version journeys run in the published-release verifier | `tests/unit/sdk/mcp/apps.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
|
|
23
|
+
| Draft Skills over MCP list/get/read, compatibility, provenance, digests, bounds, and pagination | [pm-8nzivt](../.agents/pm/features/pm-8nzivt.toon) | Implemented against exact SEP-2640 draft revision; the published-release verifier checks negotiation and content digests | `tests/unit/sdk/mcp/skills.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
|
|
24
|
+
| Per-request `io.modelcontextprotocol/logLevel`; omission forbids `notifications/message` | [pm-pd7nh0](../.agents/pm/tasks/pm-pd7nh0.toon) | SDK validates the eight severity values and rejects malformed metadata with `-32602`; pm emits no protocol log notifications | `tests/unit/sdk/mcp/protocol.spec.ts`, real stdio and Streamable HTTP negative controls |
|
|
24
25
|
| Deprecated Roots, Sampling, Logging, HTTP+SSE, `includeContext`, dynamic registration | [pm-vzcisw](../.agents/pm/chores/pm-vzcisw.toon) | Canonical source ratcheted; bounded stdio adapter and dated migration policy remain | generated inventory, negative controls, adapter tests, and migration guide |
|
|
25
|
-
| Official schema, real stdio/HTTP, packed/published, npx/bunx, negative controls | [pm-55yf1t](../.agents/pm/tasks/pm-55yf1t.toon) |
|
|
26
|
+
| Official schema, real stdio/HTTP, packed/published, npx/bunx, negative controls | [pm-55yf1t](../.agents/pm/tasks/pm-55yf1t.toon) | Conformance and released-consumer gates implemented; each release must produce its own acceptance evidence | SDK/server suites, plugin smokes, published-release verifier |
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
This matrix describes implementation coverage, not a blanket certification of
|
|
29
|
+
every deployed artifact. Programme completion requires each owner's positive
|
|
30
|
+
and negative tests plus exact packed and published consumer proof for the
|
|
31
|
+
revision being assessed. A source fix does not retroactively change a released
|
|
32
|
+
package. Read the live programme item
|
|
33
|
+
[pm-rs9vry](../.agents/pm/features/pm-rs9vry.toon) for outstanding obligations.
|
|
34
|
+
|
|
35
|
+
Logging remains deprecated in the official revision. pm accepts its optional
|
|
36
|
+
request metadata for interoperability but does not advertise logging support
|
|
37
|
+
or emit `notifications/message`, even when a client opts in. The request-local
|
|
38
|
+
threshold is exposed by `resolveMcpRequestContext` as `logLevel`; it is never
|
|
39
|
+
inherited by the next request. Ordinary diagnostics continue through stderr or
|
|
40
|
+
the configured telemetry path. See the normative
|
|
41
|
+
[request metadata schema](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/2026-07-28/schema.ts).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Install Plans and Update Evidence
|
|
2
|
+
|
|
3
|
+
Tracked by [pm-5bsofk](../.agents/pm/issues/pm-5bsofk.toon) and
|
|
4
|
+
[pm-gf5zw8](../.agents/pm/issues/pm-gf5zw8.toon), with claim controls tracked by
|
|
5
|
+
[pm-eqdo85](../.agents/pm/issues/pm-eqdo85.toon).
|
|
6
|
+
|
|
7
|
+
## Install planning
|
|
8
|
+
|
|
9
|
+
Preview an install with `pm package install ./local-package --project --dry-run`.
|
|
10
|
+
The `details.install_plan` receipt distinguishes directory, archive, npm, and
|
|
11
|
+
GitHub sources and reports logical file bytes, file/directory/link counts, and
|
|
12
|
+
the copy policy. External local directories are directory snapshots, including
|
|
13
|
+
development artifacts; nested destinations exclude `.agents`, `node_modules`,
|
|
14
|
+
and installer backup directories at every depth using the installer's filter.
|
|
15
|
+
Counts are lower bounds when `complete` is false, with `stop_reason`
|
|
16
|
+
identifying the entry or depth limit. A source-directory alias resolves to its
|
|
17
|
+
directory before copying; symlink entries inside the source remain links and
|
|
18
|
+
their targets are never traversed.
|
|
19
|
+
Planning writes no destination files, managed state, or activation settings;
|
|
20
|
+
archive and remote source resolution can still prepare temporary source files
|
|
21
|
+
and perform network or dependency-resolution work.
|
|
22
|
+
|
|
23
|
+
For development-heavy or incomplete local snapshots, `packed_alternative`
|
|
24
|
+
provides argument vectors for `npm pack --ignore-scripts --json` and archive
|
|
25
|
+
installation. Run packing in its reported `cwd`, substitute the returned
|
|
26
|
+
`pack_result[0].filename`, and install the resulting archive. Normal local
|
|
27
|
+
installs also return their pre-copy plan. SDK callers can use
|
|
28
|
+
`planExtensionDirectoryCopy(source, destination, { maxEntries, maxDepth, signal })`
|
|
29
|
+
or `PmClient.packageInstall(source, { project: true, dryRun: true, copyPlan })`;
|
|
30
|
+
the defaults inspect at most 10,000 entries and 64 directory levels.
|
|
31
|
+
Strict MCP requests use `install`, `package-install`, or `extension-install`
|
|
32
|
+
with `target` or `github` and `dryRun: true`. Generic `package` and `extension`
|
|
33
|
+
requests also require `install: true` and a source when enabling `dryRun`.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pm package install ./local-package --project --dry-run --json
|
|
37
|
+
npm pack --ignore-scripts --json
|
|
38
|
+
pm package install ./package-name-1.0.0.tgz --project
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Run the last two commands in the reported packing directory and substitute the
|
|
42
|
+
actual archive filename. Packing applies the package's publish file selection;
|
|
43
|
+
inspect that selection when a package needs generated assets at runtime.
|
|
44
|
+
A plan is an observation, not a reservation: source files can change before
|
|
45
|
+
the actual copy. Normal install verification remains authoritative.
|
|
46
|
+
|
|
47
|
+
The SDK adds optional `copyPlan` controls and a typed optional
|
|
48
|
+
`details.install_plan`. Custom result constructors that previously placed an
|
|
49
|
+
unrelated value under that key must migrate to the declared plan type. Other
|
|
50
|
+
extension detail fields retain their open record contract.
|
|
51
|
+
|
|
52
|
+
The install-plan regression has a reproducible source-mutation control:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
node scripts/release/package-install-plan-control.mjs
|
|
56
|
+
node scripts/release/package-install-plan-control.mjs --negative-control
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The baseline exits zero. The negative control changes only a disposable source
|
|
60
|
+
copy to report a complete entry-limited scan, then runs the same real filesystem
|
|
61
|
+
test and exits one. The linked control test requires both outcomes; the checkout
|
|
62
|
+
and project tracker are never mutated by the control.
|
|
63
|
+
|
|
64
|
+
Claim receipts and update coverage have matching baseline/mutant controls:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
node scripts/release/lifecycle-evidence-control.mjs
|
|
68
|
+
node scripts/release/lifecycle-evidence-control.mjs --negative-control
|
|
69
|
+
node scripts/release/lifecycle-evidence-control.mjs --update-coverage
|
|
70
|
+
node scripts/release/lifecycle-evidence-control.mjs --update-coverage --negative-control
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Each baseline exits zero and each unsafe mutant exits one. The claim mutant
|
|
74
|
+
disables compact MCP envelopes; the update mutant falsely reports full coverage
|
|
75
|
+
for a skipped source. The linked test executes all four outcomes against real
|
|
76
|
+
SDK behavior in disposable source copies.
|
|
77
|
+
|
|
78
|
+
## Update verification
|
|
79
|
+
|
|
80
|
+
Update coverage describes checks actually completed. `checked` entries alone
|
|
81
|
+
contribute to known update counts; `skipped_unmanaged`, `skipped_non_github`,
|
|
82
|
+
`failed`, and `not_checked` remain distinct in `update_check_status_totals`.
|
|
83
|
+
Any actionable gap makes update coverage partial, even when no update is known.
|
|
84
|
+
Adoption records provenance but does not establish upstream freshness for local
|
|
85
|
+
or npm sources. Expected host-owned built-ins remain exempt from unmanaged
|
|
86
|
+
adoption warnings and adoption remediation. Runtime activation health and update freshness are separate
|
|
87
|
+
verdicts; inspect both before claiming that installed packages are current.
|
|
88
|
+
|
|
89
|
+
Use `pm package doctor --project --detail deep --json` to inspect activation
|
|
90
|
+
alongside update-check status totals. A strict doctor run may fail for partial
|
|
91
|
+
update coverage even when activation succeeds. Empty scopes and applicable
|
|
92
|
+
host-owned built-ins do not require third-party upstream checks.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Planning measurements
|
|
2
|
+
|
|
3
|
+
Tracked by [pm-6olc95](../.agents/pm/issues/pm-6olc95.toon),
|
|
4
|
+
[pm-398z0u](../.agents/pm/issues/pm-398z0u.toon), and
|
|
5
|
+
[pm-d2wfig](../.agents/pm/features/pm-d2wfig.toon). Distribution work is tracked
|
|
6
|
+
by [pm-fx0rcb](../.agents/pm/tasks/pm-fx0rcb.toon).
|
|
7
|
+
|
|
8
|
+
These SDK primitives make three planning questions reproducible: which recorded
|
|
9
|
+
populations have relationship context, how many items belong to each category,
|
|
10
|
+
and whether estimated prerequisite work fits an authored deadline. The CLI and
|
|
11
|
+
MCP use the same SDK implementations.
|
|
12
|
+
|
|
13
|
+
## Relationship coverage across lifecycle states
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pm graph audit --summary
|
|
17
|
+
pm graph audit --save-baseline --summary
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`--summary` retains recorded population totals, acyclicity, and lifecycle
|
|
21
|
+
connectivity counts. Use `--full` for degree histograms, status/type distributions,
|
|
22
|
+
edge-kind shares, and reachability detail. Baselines always persist the full census.
|
|
23
|
+
The summary omission receipt declares `--full` as the recovery path.
|
|
24
|
+
|
|
25
|
+
`profile.coverage_by_lifecycle` reports `all`, `active`, and `terminal` populations.
|
|
26
|
+
`profile.coverage_by_status` reports the actual schema statuses, including
|
|
27
|
+
`closed`, `canceled`, and custom terminal states. Every population reports:
|
|
28
|
+
|
|
29
|
+
- `nodes`: recorded items, excluding missing and external placeholders.
|
|
30
|
+
- `isolated` and `degree_leq_one`: items with zero or at most one incident edge.
|
|
31
|
+
- `semantic_nodes` and `without_semantic_edges`: presence or absence of incident
|
|
32
|
+
provenance or verification edges, using the audit's semantic-kind definition.
|
|
33
|
+
- `degree_histogram`: exact incident directed-edge counts and their populations.
|
|
34
|
+
|
|
35
|
+
The existing active-only counters and type profiles retain their meanings.
|
|
36
|
+
Population measurements include policy-exempt isolates; exemptions affect
|
|
37
|
+
findings, not census denominators. Incident edges use the assembled graph's
|
|
38
|
+
normalized, deduplicated directed basis. Reciprocal spellings can still be
|
|
39
|
+
reported separately by duplicate-edge findings.
|
|
40
|
+
|
|
41
|
+
`ordering_acyclic` states whether the complete ordering graph is acyclic.
|
|
42
|
+
`active_ordering_acyclic` states whether any detected ordering cycle touches
|
|
43
|
+
active or unknown-lifecycle work. A historical cycle remains a structural cycle
|
|
44
|
+
even when the historical-debt policy gives its finding informational severity.
|
|
45
|
+
Missing-reference findings retain their separate active and terminal populations.
|
|
46
|
+
|
|
47
|
+
After a saved baseline, signed lifecycle and status deltas measure backfill
|
|
48
|
+
progress. An older baseline that never measured these populations reports
|
|
49
|
+
`lifecycle_comparable: false`; it does not imply that the historical population
|
|
50
|
+
was empty. Save a new baseline to begin comparable measurements. Malformed new
|
|
51
|
+
census fields invalidate a persisted baseline rather than producing misleading
|
|
52
|
+
comparisons. Rebuildable query-cache entries from the older format are discarded.
|
|
53
|
+
|
|
54
|
+
## Group membership and bounded aggregation
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pm aggregate --group-by tags --limit 20
|
|
58
|
+
pm aggregate --group-by tags,type --sum estimated_minutes --completion
|
|
59
|
+
pm aggregate --group-by tags --set-mode tuple
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Set-valued dimensions group by distinct normalized members by default. An item
|
|
63
|
+
with `alpha` and `beta` contributes once to each group, even if a member appears
|
|
64
|
+
more than once or differs only in case or surrounding whitespace. The same
|
|
65
|
+
expansion rule applies to every array-valued grouping dimension; scalar dimensions
|
|
66
|
+
compose with those memberships. Empty sets retain a `null` group displayed as
|
|
67
|
+
`(untagged)` for tags.
|
|
68
|
+
|
|
69
|
+
`--set-mode tuple` selects the previous behavior: the complete normalized set is
|
|
70
|
+
one comma-joined key. This is useful when comparing exact category combinations.
|
|
71
|
+
It is a distinct operation, and `filters.set_mode` records the interpretation.
|
|
72
|
+
|
|
73
|
+
Counts, completion rates, sums, and averages are computed independently in each
|
|
74
|
+
membership group. Consequently, summing group counts or numeric sums can count
|
|
75
|
+
one item more than once. `totals.items_grouped` counts distinct input items;
|
|
76
|
+
`totals.group_memberships` counts all group contributions.
|
|
77
|
+
|
|
78
|
+
Aggregation reads the complete matching item population before paging groups.
|
|
79
|
+
An unreadable input fails the strict read rather than becoming a partial count.
|
|
80
|
+
The default page contains at most 50 groups. `count` is the total group count,
|
|
81
|
+
`returned_count` is the page size, and `truncated` indicates further groups.
|
|
82
|
+
Pass the returned `next_after` value as `--after` to continue. Keep the grouping
|
|
83
|
+
and filters unchanged between pages. A cursor absent from the current result is
|
|
84
|
+
rejected with restart guidance; pages are not an immutable snapshot of a tracker
|
|
85
|
+
that is being concurrently edited.
|
|
86
|
+
|
|
87
|
+
## Derived deadline constraints
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pm graph slack --limit 10
|
|
91
|
+
pm graph slack --summary
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The existing unit-weighted `rows`, `makespan`, and hop-based `slack` remain intact.
|
|
95
|
+
The additional `deadline_schedule` uses `estimated_minutes` and authored
|
|
96
|
+
`deadline` finish constraints. Its `basis` is `derived_elapsed_minutes`, and
|
|
97
|
+
`as_of` records the clock used. This computation writes no item fields.
|
|
98
|
+
|
|
99
|
+
A forward pass computes earliest estimated starts from the invocation clock. A
|
|
100
|
+
backward pass transfers each dated finish constraint through the ordering graph,
|
|
101
|
+
retaining the tightest successor constraint. A derived row identifies the
|
|
102
|
+
controlling `deadline_id`, its `latest_start`, and `slack_minutes` relative to the
|
|
103
|
+
earliest possible start. Negative slack indicates a time shortfall; this can
|
|
104
|
+
coexist with positive hop-based slack.
|
|
105
|
+
|
|
106
|
+
`overcommitted` findings name the authored deadline, the shortfall in minutes,
|
|
107
|
+
and a bounded controlling prerequisite path. `path_truncated` identifies a path
|
|
108
|
+
whose leading steps were omitted; the retained suffix still ends at the dated
|
|
109
|
+
item. Moving the authored deadline later recomputes the finding.
|
|
110
|
+
|
|
111
|
+
Missing, negative, or nonfinite estimates are explicit `unknown_estimate`
|
|
112
|
+
residuals. Unknown predecessor duration produces `unknown_predecessor_estimate`
|
|
113
|
+
and `null` temporal slack, never zero-cost feasibility. Cycles and work gated by
|
|
114
|
+
cycles report `cycle_or_gated_by_cycle`. Invalid dates and dates outside the
|
|
115
|
+
representable range are also residuals. `complete: false` means feasibility
|
|
116
|
+
cannot be established for the entire input graph; counts remain separate from
|
|
117
|
+
bounded samples.
|
|
118
|
+
|
|
119
|
+
Estimates represent elapsed duration with independent work allowed in parallel.
|
|
120
|
+
There is no staffing, resource-contention, working-hours, holiday, or progress
|
|
121
|
+
model. The workspace adapter schedules active work and reports `population: active`;
|
|
122
|
+
completed work no longer consumes future duration or contributes overdue deadlines.
|
|
123
|
+
The pure SDK function schedules the supplied graph, so callers can select other
|
|
124
|
+
populations explicitly. ISO
|
|
125
|
+
date-only deadlines denote UTC midnight. Undated components have no latest-start
|
|
126
|
+
constraint. Topology cache hits do not reuse time-sensitive deadline results;
|
|
127
|
+
they are derived from the current metadata on every invocation.
|
|
128
|
+
|
|
129
|
+
The pure derivation defaults to a work bound of 100,000 input items plus graph
|
|
130
|
+
nodes and edges, checked before graph passes. Larger inputs return
|
|
131
|
+
`work_limit_exceeded: true` and `complete: false` with no manufactured schedule.
|
|
132
|
+
Rows, residual samples, findings, and path identifiers obey the supplied `limit`.
|
|
133
|
+
All retained paths also share a total identifier budget of `maxWork`, so large
|
|
134
|
+
finding limits cannot create quadratic path evidence. Exhaustion preserves exact
|
|
135
|
+
counts and sets both `path_truncated` and the result's `truncated` flag.
|
|
136
|
+
The workspace CLI still pays its existing metadata-read and graph-assembly cost;
|
|
137
|
+
the derivation bound is not a claim that loading a million-item workspace is free.
|
|
138
|
+
Summary mode suppresses the evidence arrays and retains their counts.
|
|
139
|
+
|
|
140
|
+
## Public SDK
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
import {
|
|
144
|
+
assembleWorkspaceRelationshipGraph,
|
|
145
|
+
auditWorkspaceRelationshipGraph,
|
|
146
|
+
deriveRelationshipDeadlines,
|
|
147
|
+
} from "@unbrained/pm-cli/sdk/graph";
|
|
148
|
+
import { runAggregate } from "@unbrained/pm-cli/sdk/query";
|
|
149
|
+
|
|
150
|
+
const items = [
|
|
151
|
+
{ id: "work", title: "Prepare", status: "open", estimated_minutes: 60 },
|
|
152
|
+
{
|
|
153
|
+
id: "milestone", title: "Deliver", status: "open", blocked_by: "work",
|
|
154
|
+
estimated_minutes: 30, deadline: "2026-10-01T12:00:00Z",
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
const assembly = assembleWorkspaceRelationshipGraph(items);
|
|
158
|
+
const coverage = auditWorkspaceRelationshipGraph(assembly).profile;
|
|
159
|
+
const schedule = deriveRelationshipDeadlines(assembly.graph, items, {
|
|
160
|
+
now: "2026-10-01T10:00:00Z",
|
|
161
|
+
maxWork: 100_000,
|
|
162
|
+
limit: 20,
|
|
163
|
+
});
|
|
164
|
+
const categories = await runAggregate(
|
|
165
|
+
{ groupBy: "tags", setMode: "element", limit: 20 },
|
|
166
|
+
{ path: "/path/to/project/.agents/pm" },
|
|
167
|
+
);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The derivation accepts an `AbortSignal`. Relationship orientation comes from the
|
|
171
|
+
supplied graph registry, so custom ordering kinds and inverse spellings use the
|
|
172
|
+
same execution semantics. MCP `pm_run` with `action: "aggregate"` accepts
|
|
173
|
+
`options.setMode`, `options.limit`, and `options.after`. MCP `pm_graph` with
|
|
174
|
+
`subcommand: "slack"` returns the same deadline evidence.
|
|
175
|
+
|
|
176
|
+
## Distribution
|
|
177
|
+
|
|
178
|
+
Build finalization compacts whitespace in retained runtime JavaScript modules.
|
|
179
|
+
It preserves module paths and identifiers, keeps public declaration documentation,
|
|
180
|
+
and composes source maps back to the original TypeScript for release symbolication.
|
|
181
|
+
Existing bundled outputs remain unchanged by this pass. Source maps remain local
|
|
182
|
+
release artifacts and are excluded from the npm packlist. Artifact size and file
|
|
183
|
+
count ceilings are checked against the actual npm pack projection.
|
package/docs/README.md
CHANGED
|
@@ -52,6 +52,7 @@ pm guide release --json
|
|
|
52
52
|
- [MCP Remote Transport, Authorization, and Migration](MCP_REMOTE_TRANSPORT_SECURITY.md) - Streamable HTTP operation, subscriptions, OAuth and trace boundaries, threat model, and deprecated-feature ratchet.
|
|
53
53
|
- [SDK Artifact Output Contracts](SDK_ARTIFACT_OUTPUT.md) - clean stdout/file exporter channels, bounded receipts, binary-safe delivery, and shared NDJSON terminal framing.
|
|
54
54
|
- [Context Relevance and Packing](CONTEXT_RELEVANCE.md) - shared CLI/SDK signals, derived-store provenance, ranking explanations, and token budgets.
|
|
55
|
+
- [Context Algorithm Portfolio](CONTEXT_ALGORITHM_PORTFOLIO.md) - stable proposal slugs, historical aliases, individual owners, cognitive compositions, and experiment gates.
|
|
55
56
|
- [Output Projection and Omission Contracts](OUTPUT_PROJECTION_CONTRACTS.md) - explicit withheld-field receipts, mode-paired row keys, and completion resolver outcomes.
|
|
56
57
|
- [Output Token Accounting](OUTPUT_TOKEN_ACCOUNTING.md) - opt-in CLI/MCP byte attribution, bounded receipt overhead, and release-level tokens-per-task baselines.
|
|
57
58
|
- [SDK Context Platform](SDK_CONTEXT.md) - task-oriented entry point for authoritative reads, ranking, package workflows, diagnostics, recovery, and verification.
|
|
@@ -60,12 +61,14 @@ pm guide release --json
|
|
|
60
61
|
- [Generated Refusal Closure Census](generated/REFUSAL_CLOSURE_CENSUS.md) - complete error-catalog join to executable refusal evidence and explicit uncovered obligations.
|
|
61
62
|
- [Universal Read Output Contracts](READ_OUTPUT_CONTRACTS.md) - cross-command include, amount, cost, and encoding controls for CLI, SDK, MCP, and packages.
|
|
62
63
|
- [Diagnostic Output Contracts](DIAGNOSTIC_OUTPUT_CONTRACTS.md) - action-first error budgets, deterministic degradation, SDK projection, and executable refusal assurance.
|
|
64
|
+
- [History Maintenance and Recovery](HISTORY_MAINTENANCE.md) - native history commands, permanent aliases, shared SDK transforms, and transactional recovery.
|
|
63
65
|
- [Mutation Integrity](MUTATION_INTEGRITY.md) - shared CLI/SDK/MCP author, secret, append-only disposition, and stale-work guardrails.
|
|
64
66
|
- [Agent Provenance ADR Amendment](AGENT_PROVENANCE_ADR.md) - extensible model, effort, role, and host provenance with privacy and compatibility boundaries.
|
|
65
67
|
- [SDK Agent Session and Episode Context](SDK_AGENT_SESSION_CONTEXT.md) - inherited role/topic context, cross-process episode identity, and deterministic history grouping.
|
|
66
68
|
- [SDK Agent Environments](AGENT_ENVIRONMENTS.md) - calibrated observations, total verdicts, isolated episodes, and an executable public-SDK environment.
|
|
67
69
|
- [Improvement Ledger and History Analytics](IMPROVEMENT_ANALYTICS.md) - audited quantitative observations, live provenance coverage, and bounded observational fleet outcomes.
|
|
68
70
|
- [Project Assurance Primitives](ASSURANCE.md) - SDK-owned measurements, assertions, lifecycle gates, cost receipts, and durable verdict history shared by CLI and MCP.
|
|
71
|
+
- [Planning Measurements](PLANNING_MEASUREMENTS.md) - lifecycle coverage, set-membership aggregation, and derived deadline constraints.
|
|
69
72
|
- [Defect Recurrence and Boundary Evidence](DEFECT_RECURRENCE.md) - captured external samples, structured defect-escape evidence, incremental change-risk indexing, and executable recovery-producer census.
|
|
70
73
|
- [Recurrence and Executable Recovery Contracts](RECURRENCE_RECOVERY_CONTRACTS.md) - terminal-item recurrence, duplicate-intake routing, capability-aware reindex recovery, and target-aware generated test guidance.
|
|
71
74
|
- [Trustworthy Context and Evidence Contracts](TRUSTWORTHY_CONTEXT_EVIDENCE.md) - full-record assurance, graph composition, boolean health rows, lossless linked-test removal, and role-labelled recovery.
|
package/docs/RELEASING.md
CHANGED
|
@@ -99,6 +99,7 @@ Policy:
|
|
|
99
99
|
manifest changed by version substitution alone, and only the generated
|
|
100
100
|
changelog heading changed. Any other path or content still fails closed
|
|
101
101
|
- `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
|
|
102
|
+
- Release preparation passes `--date-from-version` with the target calendar version so the generated heading already has its UTC release date before the tag exists. This keeps the preparation commit consistent with canonical post-tag generation and the normal `main` changelog check.
|
|
102
103
|
- 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
|
|
103
104
|
- 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`
|
|
104
105
|
- after creating and pushing a new tag, auto-release waits for the tag-push `.github/workflows/release.yml` run to finish instead of dispatching a second publish workflow
|
package/docs/SCRIPTING.md
CHANGED
|
@@ -78,6 +78,27 @@ declaring every command's default token ceiling. Use `pm contracts --full
|
|
|
78
78
|
with TOON- and JSON-specific token ceilings for every active core or package
|
|
79
79
|
command.
|
|
80
80
|
|
|
81
|
+
Claim receipts ([pm-eqdo85](../.agents/pm/issues/pm-eqdo85.toon)) also keep
|
|
82
|
+
`claimed_by`, `previous_assignee`, and `forced`. Conditional contention adds
|
|
83
|
+
`skipped`; ranked claims add `available` and `attempts`. The change count
|
|
84
|
+
reflects ownership fields actually changed: an unchanged repeat or skipped
|
|
85
|
+
claim reports zero and does not write a duplicate mutation event.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
pm claim pm-a1b2 --json
|
|
89
|
+
pm claim pm-a1b2 --if-available --json
|
|
90
|
+
pm claim --next --json
|
|
91
|
+
pm claim pm-a1b2 --full-changed-fields --json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Use `--full-changed-fields` to restore the complete item, `changed_fields`,
|
|
95
|
+
and ranked-selection recommendation. `--id-only` returns only identity and
|
|
96
|
+
status; `--quiet` suppresses stdout. Direct typed SDK `claim` and
|
|
97
|
+
`claimNext` calls return the full result. Generic SDK/MCP actions use the
|
|
98
|
+
compact transport contract and accept `fullChangedFields` or `idOnly`.
|
|
99
|
+
Custom SDK claim runners may omit the optional `changed_fields` member;
|
|
100
|
+
receipts without that evidence retain their existing envelope.
|
|
101
|
+
|
|
81
102
|
JSON object field order is not an API. Consume fields by name. Read envelopes keep the stable pagination vocabulary `items`, `count`, `total`, `has_more`, and, when another page exists, `next_cursor`. The `filters` object echoes the effective query scope. Plain `pm list` and `pm search` are all-status reads and disclose `filters.status: "all"`; lifecycle-specific commands such as `pm list-open` remain explicit shortcuts.
|
|
82
103
|
|
|
83
104
|
Projection flags intentionally change row shape. Use `--fields` when a script requires an exact subset, `--brief` or `--compact` only when the documented sparse shape is sufficient, and `--full` when linked metadata is required. Check `row_contract` on generic read surfaces that expose one; do not infer omitted fields as empty values.
|
package/docs/TESTING.md
CHANGED
|
@@ -50,6 +50,15 @@ children, then cleans the roots up. Instrumentation tests can still exercise
|
|
|
50
50
|
Sentry initialization through their mocked module boundary; ordinary negative
|
|
51
51
|
fixtures must never create production incidents from a developer host.
|
|
52
52
|
|
|
53
|
+
Temporary directories must live outside the checkout and outside any ancestor
|
|
54
|
+
workspace with initialized tracker data. The runner rejects a checkout-local
|
|
55
|
+
temporary root, including a symlink alias, before starting build or test
|
|
56
|
+
processes ([pm-bukwmy](../.agents/pm/issues/pm-bukwmy.toon)). If the default
|
|
57
|
+
temporary filesystem is full, set `TMPDIR` (or `TEMP`/`TMP` on Windows) to an
|
|
58
|
+
existing isolated scratch directory; an ignored directory inside the repository
|
|
59
|
+
is not isolated. Filesystem fixtures must honor `node:os`'s `tmpdir()` and remove
|
|
60
|
+
only the temporary directories they created.
|
|
61
|
+
|
|
53
62
|
Public SDK changes additionally run semantic surface and import-cost contracts:
|
|
54
63
|
|
|
55
64
|
```bash
|
|
@@ -108,6 +117,20 @@ Use focused runs while iterating, then run coverage before closure when risk or
|
|
|
108
117
|
|
|
109
118
|
## CI Retry and Timeout Diagnostics
|
|
110
119
|
|
|
120
|
+
Platform regressions from [pm-hrhfgi](../.agents/pm/issues/pm-hrhfgi.toon) and
|
|
121
|
+
[pm-zk67yf](../.agents/pm/issues/pm-zk67yf.toon) have portable negative controls.
|
|
122
|
+
Complete source scans process at most 32 item files per batch; the descriptor
|
|
123
|
+
pressure fixture fails unbounded reads while requiring genuine permission
|
|
124
|
+
failures to remain visible. The 10,000-item aggregation fixture separately
|
|
125
|
+
verifies completeness before pagination. Git fixtures that assert exact bytes
|
|
126
|
+
declare repository-local `core.autocrlf=false` and `core.eol=lf` so host defaults
|
|
127
|
+
cannot change the restoration target. Send generated shell scripts through
|
|
128
|
+
stdin (`bash -s`) so their size cannot exceed Windows command-line limits.
|
|
129
|
+
Runtime compaction is tested through a
|
|
130
|
+
real directory alias as well as its physical path, including original source
|
|
131
|
+
mapping and repeated-compaction byte stability. These tests run in the full
|
|
132
|
+
suite on the Nightly Validation platform matrix.
|
|
133
|
+
|
|
111
134
|
CI retains the 30-second per-test timeout and retries one failed attempt. A
|
|
112
135
|
test that passes only on retry is reported as flaky rather than silently folded
|
|
113
136
|
into the pass count; a persistent assertion still fails after the bounded
|
|
@@ -6,10 +6,10 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
6
6
|
| --- | --- | ---: | ---: |
|
|
7
7
|
| `init` | workspace | 30 | 30 |
|
|
8
8
|
| `config` | workspace | 36 | 36 |
|
|
9
|
-
| `extension` | extensions |
|
|
10
|
-
| `package` | extensions |
|
|
11
|
-
| `packages` | extensions |
|
|
12
|
-
| `install` | extensions |
|
|
9
|
+
| `extension` | extensions | 54 | 54 |
|
|
10
|
+
| `package` | extensions | 55 | 55 |
|
|
11
|
+
| `packages` | extensions | 55 | 55 |
|
|
12
|
+
| `install` | extensions | 27 | 27 |
|
|
13
13
|
| `upgrade` | extensions | 29 | 29 |
|
|
14
14
|
| `create` | intake | 100 | 100 |
|
|
15
15
|
| `copy` | intake | 24 | 24 |
|
|
@@ -22,7 +22,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
22
22
|
| `list-blocked` | context | 84 | 84 |
|
|
23
23
|
| `list-closed` | context | 84 | 84 |
|
|
24
24
|
| `list-canceled` | context | 84 | 84 |
|
|
25
|
-
| `aggregate` | context |
|
|
25
|
+
| `aggregate` | context | 40 | 40 |
|
|
26
26
|
| `context` | context | 45 | 45 |
|
|
27
27
|
| `ctx` | context | 45 | 45 |
|
|
28
28
|
| `get` | context | 30 | 30 |
|
|
@@ -11,7 +11,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
11
11
|
- Uncovered error codes: 346
|
|
12
12
|
- Coverage fraction: 0.052055
|
|
13
13
|
- Closed-domain probes: 19
|
|
14
|
-
- Grammar probes:
|
|
14
|
+
- Grammar probes: 97
|
|
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 | 60 |
|
|
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.8"
|
|
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.8",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "unbrained",
|
|
19
19
|
"url": "https://github.com/unbraind/pm-cli"
|
package/package.json
CHANGED