@unbrained/pm-cli 2026.9.7 → 2026.9.9
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 +7 -2
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +231 -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.d.ts +0 -5
- 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-NPN5I67J.js → chunk-3IPRM75M.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4VL5P22L.js +2 -0
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +29 -0
- package/dist/cli-bundle/chunks/chunk-D3YVILJJ.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ECBLPN7B.js +3 -0
- package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +235 -0
- package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +2 -0
- package/dist/cli-bundle/chunks/chunk-L5RCDKQ2.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-OHNLSGGV.js +79 -0
- package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-BAX2BYUW.js → chunk-XZ6T7YPP.js} +256 -150
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-Z3XVXUVF.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-UIHRCS6D.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-PERI45EM.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-5FHTCOHS.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7N6DOREF.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-7PC4R5QB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-BUCJUZVG.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-OQUGRHKV.js +10 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-PNKIANFZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-QQQ4SAUO.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-XNR3DM6J.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +9 -0
- package/dist/cli-bundle/focused-chunks/chunk-YCDQ2N23.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-YJUXGS57.js +20 -0
- package/dist/cli-bundle/focused-chunks/chunk-ZTCE4UO6.js +58 -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 +37 -37
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +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/policy/workflow-policy-schema.d.ts +312 -0
- package/dist/core/policy/workflow-policy-schema.js +2 -0
- package/dist/core/policy/workflow-policy-store.d.ts +24 -0
- package/dist/core/policy/workflow-policy-store.js +2 -0
- package/dist/core/policy/workflow-policy.d.ts +139 -0
- package/dist/core/policy/workflow-policy.js +2 -0
- 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.d.ts +1 -0
- 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.d.ts +1 -1
- 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 +174 -839
- 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.d.ts +3 -1
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
- package/dist/sdk/governance/workflow-completeness.js +2 -0
- package/dist/sdk/governance/workflow-policy.d.ts +47 -0
- package/dist/sdk/governance/workflow-policy.js +4 -0
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +2 -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 -1
- 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.d.ts +1 -1
- 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.d.ts +27 -0
- 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.d.ts +6 -4
- 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.d.ts +1 -1
- 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.d.ts +2 -1
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.d.ts +4 -0
- 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.d.ts +2 -1
- 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.d.ts +4 -0
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/COMMANDS.md +10 -0
- package/docs/CONFIGURATION.md +12 -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 +4 -0
- package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +33 -0
- package/docs/WORKFLOW_POLICIES.md +129 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +7 -7
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -5
- package/marketplace.json +2 -2
- package/package.json +5 -5
- 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-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-JX4DH4WC.js +0 -3
- 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-operations-I5W3KMGB.js +0 -2
- 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-PEFABF7E.js +0 -26
- 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,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,15 @@ 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.
|
|
65
|
+
- [Declarative Workflow Policies](WORKFLOW_POLICIES.md) - portable lifecycle requirements, independent approvals, and completeness reports.
|
|
63
66
|
- [Mutation Integrity](MUTATION_INTEGRITY.md) - shared CLI/SDK/MCP author, secret, append-only disposition, and stale-work guardrails.
|
|
64
67
|
- [Agent Provenance ADR Amendment](AGENT_PROVENANCE_ADR.md) - extensible model, effort, role, and host provenance with privacy and compatibility boundaries.
|
|
65
68
|
- [SDK Agent Session and Episode Context](SDK_AGENT_SESSION_CONTEXT.md) - inherited role/topic context, cross-process episode identity, and deterministic history grouping.
|
|
66
69
|
- [SDK Agent Environments](AGENT_ENVIRONMENTS.md) - calibrated observations, total verdicts, isolated episodes, and an executable public-SDK environment.
|
|
67
70
|
- [Improvement Ledger and History Analytics](IMPROVEMENT_ANALYTICS.md) - audited quantitative observations, live provenance coverage, and bounded observational fleet outcomes.
|
|
68
71
|
- [Project Assurance Primitives](ASSURANCE.md) - SDK-owned measurements, assertions, lifecycle gates, cost receipts, and durable verdict history shared by CLI and MCP.
|
|
72
|
+
- [Planning Measurements](PLANNING_MEASUREMENTS.md) - lifecycle coverage, set-membership aggregation, and derived deadline constraints.
|
|
69
73
|
- [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
74
|
- [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
75
|
- [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.
|
|
@@ -167,6 +167,11 @@ Cursor recovery carries the opaque value once in `recovery.cursor` and declares
|
|
|
167
167
|
the accepting `cli`, `sdk`, and `mcp` binding beside it. This avoids
|
|
168
168
|
serializing the same cursor once per transport while retaining an executable,
|
|
169
169
|
machine-readable binding for each surface.
|
|
170
|
+
When `restore_with` is `"recovery"`, consumers must resolve the adjacent
|
|
171
|
+
`recovery` object: pass its `cursor` value through `cli` (`--output-cursor`)
|
|
172
|
+
or the `sdk`/`mcp` field (`outputCursor`) while repeating the original query.
|
|
173
|
+
The string is a reference, not a shell command. Other `restore_with` values
|
|
174
|
+
provide retry guidance when no declared row collection can continue.
|
|
170
175
|
|
|
171
176
|
Budget-compacted declared row paths are independently resumable. The
|
|
172
177
|
disclosure's `continuations` entries name the row path, retained/remaining/total
|
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
|
|
@@ -79,6 +88,16 @@ so PR-local CodeFactor maintainability annotations fail locally before commit or
|
|
|
79
88
|
push. Existing legacy high-complexity test fixtures are tracked separately and
|
|
80
89
|
must not be used as precedent for new changed production/script code.
|
|
81
90
|
|
|
91
|
+
`lint:duplicates` runs three zero-clone profiles: the broad repository profile,
|
|
92
|
+
the production cross-format profile, and a supplemental long-table profile at
|
|
93
|
+
28 lines / 80 tokens. The last profile detects the historical GH-508 normalizer
|
|
94
|
+
tables below the other profiles' token floors; it does not replace their shorter
|
|
95
|
+
line thresholds. Its real detector regression rejects the historical table rows
|
|
96
|
+
and accepts a shared declaration. The earlier 12-line / 60-token exploratory
|
|
97
|
+
census informed calibration, but is not the enforced profile. These bounded
|
|
98
|
+
profiles do not claim complete equivalence with hosted analyzers.
|
|
99
|
+
See [pm-xspd](../.agents/pm/chores/pm-xspd.toon) for calibration evidence.
|
|
100
|
+
|
|
82
101
|
The local parity rules catch analyzer classes before push. The mandatory hosted
|
|
83
102
|
proof runs after the final commit is pushed and both apps have finished:
|
|
84
103
|
|
|
@@ -108,6 +127,20 @@ Use focused runs while iterating, then run coverage before closure when risk or
|
|
|
108
127
|
|
|
109
128
|
## CI Retry and Timeout Diagnostics
|
|
110
129
|
|
|
130
|
+
Platform regressions from [pm-hrhfgi](../.agents/pm/issues/pm-hrhfgi.toon) and
|
|
131
|
+
[pm-zk67yf](../.agents/pm/issues/pm-zk67yf.toon) have portable negative controls.
|
|
132
|
+
Complete source scans process at most 32 item files per batch; the descriptor
|
|
133
|
+
pressure fixture fails unbounded reads while requiring genuine permission
|
|
134
|
+
failures to remain visible. The 10,000-item aggregation fixture separately
|
|
135
|
+
verifies completeness before pagination. Git fixtures that assert exact bytes
|
|
136
|
+
declare repository-local `core.autocrlf=false` and `core.eol=lf` so host defaults
|
|
137
|
+
cannot change the restoration target. Send generated shell scripts through
|
|
138
|
+
stdin (`bash -s`) so their size cannot exceed Windows command-line limits.
|
|
139
|
+
Runtime compaction is tested through a
|
|
140
|
+
real directory alias as well as its physical path, including original source
|
|
141
|
+
mapping and repeated-compaction byte stability. These tests run in the full
|
|
142
|
+
suite on the Nightly Validation platform matrix.
|
|
143
|
+
|
|
111
144
|
CI retains the 30-second per-test timeout and retries one failed attempt. A
|
|
112
145
|
test that passes only on retry is reported as flaky rather than silently folded
|
|
113
146
|
into the pass count; a persistent assertion still fails after the bounded
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Declarative workflow policies
|
|
2
|
+
|
|
3
|
+
Tracker: [pm-mj42og](../.agents/pm/features/pm-mj42og.toon) and [pm-htbetn](../.agents/pm/features/pm-htbetn.toon).
|
|
4
|
+
|
|
5
|
+
Projects can describe their lifecycle requirements as versioned data. The SDK
|
|
6
|
+
uses the same evaluator for item mutations, policy previews, and completeness
|
|
7
|
+
reports. Existing projects have no implicit policies. A declaration can advise,
|
|
8
|
+
warn, or refuse; refusal also requires an explicit workspace opt-in.
|
|
9
|
+
|
|
10
|
+
## Configure a requirement
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pm schema policy-put close-evidence --definition '{"id":"close-evidence","effect":"refuse","subject":{"statuses":["closed"]},"rule":{"kind":"require_fields","fields":["resolution","actual_result"]}}'
|
|
14
|
+
pm schema policies
|
|
15
|
+
pm schema policy-check pm-example --definition '{"status":"closed"}'
|
|
16
|
+
pm schema policy-mode refuse
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Use canonical status ids and metadata field names. `body` selects the Markdown
|
|
20
|
+
body. Custom fields can use dotted paths with at most eight segments. Empty
|
|
21
|
+
strings, arrays, objects, null, and absent values do not satisfy required fields;
|
|
22
|
+
zero and false are meaningful values.
|
|
23
|
+
|
|
24
|
+
`policy-put` replaces a declaration with the same id. `policy-remove <id>` removes
|
|
25
|
+
one declaration. `policy-mode advise` disables refusal while retaining diagnostics.
|
|
26
|
+
Registry writes are locked and recorded in workspace history. `--dry-run` previews
|
|
27
|
+
registry changes without writing. Malformed registries fail closed.
|
|
28
|
+
|
|
29
|
+
## Selectors and rules
|
|
30
|
+
|
|
31
|
+
All selectors in `subject` must match; values within one selector are alternatives.
|
|
32
|
+
Supported selectors are `types` (case insensitive), `tags`, `statuses`, `operations`,
|
|
33
|
+
`parents`, and `dependency: { "kind": "implements", "id": "pm-example" }` (id optional).
|
|
34
|
+
Parent and dependency selectors inspect direct relationships. Status selectors
|
|
35
|
+
match the destination; other selectors inspect both snapshots so a mutation cannot
|
|
36
|
+
escape a protected scope by removing its tag or changing its type.
|
|
37
|
+
|
|
38
|
+
| Rule kind | Required properties | Behavior |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `require_fields` | `fields` | Checks evidence on lifecycle, scope, or required-field changes |
|
|
41
|
+
| `transition` | `allowed` | Allows listed `[from, to]` status pairs; `$create` and `$delete` represent absent records |
|
|
42
|
+
| `authors` | `authors` | Requires a listed mutation actor |
|
|
43
|
+
| `field_writers` | `fields`, `authors` | Requires a listed actor when protected fields change |
|
|
44
|
+
| `approval` | `fields`, `authors` | Requires independent approval when an existing item changes status or is deleted |
|
|
45
|
+
|
|
46
|
+
Operation selectors use exact history operation names. Unknown declaration keys
|
|
47
|
+
are errors. Policies contain no executable expressions or regular expressions.
|
|
48
|
+
At most 256 declarations and 64 terms per selector/rule are accepted. Registry
|
|
49
|
+
reads are bounded to 1 MiB, and approval-history reads to 4 MiB.
|
|
50
|
+
|
|
51
|
+
Actor names are provenance supplied by the caller or local configuration. They
|
|
52
|
+
are not authenticated identities, and these rules are not an access-control
|
|
53
|
+
boundary against a caller who can edit the tracker or choose an author name.
|
|
54
|
+
Authenticated, signed identity ([pm-u14c](../.agents/pm/stories/pm-u14c.toon))
|
|
55
|
+
is a prerequisite for stronger authorization guarantees.
|
|
56
|
+
|
|
57
|
+
## Approvals
|
|
58
|
+
|
|
59
|
+
Prepare the declared fields, then have a different workflow actor record approval:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pm schema policy-put review --definition '{"id":"review","effect":"refuse","subject":{"statuses":["closed"]},"rule":{"kind":"approval","fields":["body","resolution"],"authors":["reviewer"]}}'
|
|
63
|
+
pm schema policy-approve pm-example --policy review --author reviewer --message 'Reviewed acceptance evidence'
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Approval events bind the item id, selected field values, and complete policy
|
|
67
|
+
revision. Changing reviewed content or the declaration invalidates the approval.
|
|
68
|
+
Unrelated metadata changes do not. The actor performing the transition must differ
|
|
69
|
+
from the approval actor. Only sealed approval events from a verified item history
|
|
70
|
+
chain count. `policy-check` previews transitions; `policy-approve` always records
|
|
71
|
+
an event and rejects `--dry-run`.
|
|
72
|
+
|
|
73
|
+
Approval rules apply to existing items. Creation and initial imports have no
|
|
74
|
+
reviewable history and skip approval requirements; use `transition` rules with
|
|
75
|
+
`["$create", "open"]` to constrain their initial status. Deletion requires approval
|
|
76
|
+
of the current record, using the same content and independent-actor checks.
|
|
77
|
+
|
|
78
|
+
Refused mutations preserve item state and item history, and append a workspace
|
|
79
|
+
refusal event. Accepted mutations attach bounded policy decisions to their normal
|
|
80
|
+
history event. Diagnostics contain policy ids and missing field paths, without
|
|
81
|
+
copying reviewed content into errors.
|
|
82
|
+
If the mandatory refusal audit cannot be appended, the mutation instead raises
|
|
83
|
+
`workflow_policy_audit_failed` and preserves the original failure in the SDK
|
|
84
|
+
error's `cause`. Item data remains unchanged; resolve the workspace history lock
|
|
85
|
+
or storage failure before retrying. Package imports do not downgrade this error
|
|
86
|
+
to an item-lock warning.
|
|
87
|
+
|
|
88
|
+
## Completeness reports and SDK
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pm schema policy-presets
|
|
92
|
+
pm validate --check-completeness --strict-exit
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Presets return optional advisory declarations for familiar item types. They do
|
|
96
|
+
not install policies. Author the declarations appropriate to the project's own
|
|
97
|
+
types and lifecycle using `policy-put`. Completeness reports group counts by type,
|
|
98
|
+
return bounded violation examples, and use only `require_fields` declarations
|
|
99
|
+
without `subject.operations`. The report identifies this scope as
|
|
100
|
+
`operation_independent_require_fields`. All item selectors, including status,
|
|
101
|
+
still apply. `policy-check` without a proposed definition uses the same state-only
|
|
102
|
+
scope. Operation-scoped rules remain enforced during matching mutations; a clean
|
|
103
|
+
state report does not imply permission to perform every future operation.
|
|
104
|
+
To check a lifecycle field invariant in both state reports and mutations, select
|
|
105
|
+
its `statuses` without restricting `operations`.
|
|
106
|
+
Default validation includes this check; projects without declarations remain
|
|
107
|
+
unaffected.
|
|
108
|
+
An unreadable or malformed `schema/policies.json` produces an error-level
|
|
109
|
+
`completeness` result with a repair hint. Other requested validation checks still
|
|
110
|
+
run, and `--strict-exit` fails until the policy registry is repaired.
|
|
111
|
+
|
|
112
|
+
The published `@unbrained/pm-cli/sdk/governance` entrypoint exports
|
|
113
|
+
`runWorkflowPolicyAction`, `evaluateWorkflowPolicies`, policy types, parsers,
|
|
114
|
+
`WORKFLOW_POLICY_SCHEMA`, and `WORKFLOW_POLICY_DOCUMENT_SCHEMA`. `PmClient` exposes
|
|
115
|
+
`workflowPolicy(action, name, options)`. CLI `schema` and MCP `pm_schema` use the
|
|
116
|
+
same action vocabulary and SDK implementation; MCP options accept camelCase
|
|
117
|
+
keys and structured JSON definitions.
|
|
118
|
+
|
|
119
|
+
For repeated pure evaluation, `createWorkflowPolicyEvaluator(document)` returns
|
|
120
|
+
an evaluator that owns a private normalized policy snapshot and hashes each
|
|
121
|
+
declaration once. Later edits to the supplied document do not change that
|
|
122
|
+
snapshot; create another evaluator to adopt them. Completeness validation uses
|
|
123
|
+
one such snapshot for the whole supplied corpus.
|
|
124
|
+
|
|
125
|
+
The schema contract version is 4.16. Existing schema operations remain available;
|
|
126
|
+
`SchemaResult` now also includes `WorkflowPolicyActionResult`. Consumers that
|
|
127
|
+
exhaustively narrow schema results should handle the `policy_result: true`
|
|
128
|
+
discriminant. Validation options include `checkCompleteness`, and validation
|
|
129
|
+
results can contain a `completeness` check.
|
|
@@ -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 |
|
|
@@ -38,7 +38,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
38
38
|
| `history-compact` | evidence | 30 | 30 |
|
|
39
39
|
| `history-author-acknowledge` | evidence | 28 | 28 |
|
|
40
40
|
| `merge` | workspace | 27 | 27 |
|
|
41
|
-
| `schema` | workspace |
|
|
41
|
+
| `schema` | workspace | 43 | 43 |
|
|
42
42
|
| `profile` | workspace | 22 | 22 |
|
|
43
43
|
| `activity` | context | 35 | 35 |
|
|
44
44
|
| `restore` | intake | 23 | 23 |
|
|
@@ -60,7 +60,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
60
60
|
| `telemetry` | workspace | 21 | 21 |
|
|
61
61
|
| `stats` | context | 29 | 29 |
|
|
62
62
|
| `health` | workspace | 36 | 36 |
|
|
63
|
-
| `validate` | quality |
|
|
63
|
+
| `validate` | quality | 46 | 46 |
|
|
64
64
|
| `assurance` | quality | 30 | 30 |
|
|
65
65
|
| `gc` | workspace | 22 | 22 |
|
|
66
66
|
| `workspace` | workspace | 23 | 23 |
|
|
@@ -4,14 +4,14 @@ Tracker: `pm-f05lsg`.
|
|
|
4
4
|
|
|
5
5
|
Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
|
|
6
6
|
|
|
7
|
-
- Catalog error codes:
|
|
7
|
+
- Catalog error codes: 371
|
|
8
8
|
- Executable error codes: 19
|
|
9
9
|
- Executable-code ratchet floor: 18
|
|
10
10
|
- Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
|
|
11
|
-
- Uncovered error codes:
|
|
12
|
-
- Coverage fraction: 0.
|
|
11
|
+
- Uncovered error codes: 352
|
|
12
|
+
- Coverage fraction: 0.051213
|
|
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 |
|
|
@@ -365,6 +365,12 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
365
365
|
| `vectorization_stale_items_remaining` | `vectorization_stale_items_remaining` | uncovered | none | 0 |
|
|
366
366
|
| `visible_surface_ceiling_exceeded` | `visible_surface_ceiling_exceeded` | uncovered | none | 0 |
|
|
367
367
|
| `workflow_duplicate_type` | `workflow_duplicate_type` | uncovered | none | 0 |
|
|
368
|
+
| `workflow_policy_approval_history_invalid` | `workflow_policy_approval_history_invalid` | uncovered | none | 0 |
|
|
369
|
+
| `workflow_policy_audit_failed` | `workflow_policy_audit_failed` | uncovered | none | 0 |
|
|
370
|
+
| `workflow_policy_input_unreadable` | `workflow_policy_input_unreadable` | uncovered | none | 0 |
|
|
371
|
+
| `workflow_policy_invalid` | `workflow_policy_invalid` | uncovered | none | 0 |
|
|
372
|
+
| `workflow_policy_refused` | `workflow_policy_refused` | uncovered | none | 0 |
|
|
373
|
+
| `workflow_policy_registry_invalid` | `workflow_policy_registry_invalid` | uncovered | none | 0 |
|
|
368
374
|
| `workflow_status_unknown` | `workflow_status_unknown` | uncovered | none | 0 |
|
|
369
375
|
| `workflow_transition_malformed` | `workflow_transition_malformed` | uncovered | none | 0 |
|
|
370
376
|
| `workflow_type_empty` | `workflow_type_empty` | 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.9"
|
|
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.9",
|
|
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.9.
|
|
3
|
+
"version": "2026.9.9",
|
|
4
4
|
"description": "Git-native project management CLI for humans and agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@11.10.0",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"lint:eslint": "eslint . --max-warnings=0",
|
|
120
120
|
"lint:eslint:prune": "eslint . --prune-suppressions",
|
|
121
121
|
"lint:complexity:baseline": "eslint . --suppress-rule complexity --suppress-rule sonarjs/cognitive-complexity",
|
|
122
|
-
"lint:duplicates": "jscpd --config .jscpd.json && jscpd --config .jscpd.source.json",
|
|
122
|
+
"lint:duplicates": "jscpd --config .jscpd.json && jscpd --config .jscpd.source.json && jscpd --config .jscpd.tables.json",
|
|
123
123
|
"lint:codefactor": "pnpm quality:static",
|
|
124
124
|
"quality:static": "pnpm lint:eslint && pnpm lint:duplicates && pnpm build && node scripts/contracts-snapshot.mjs --check && node scripts/generate-agent-capability-surfaces.mjs --check && node scripts/generate-error-code-catalog.mjs --check && node scripts/release/repository-assurance.mjs repository-static-quality --trigger ci --json && node scripts/release/audit-package-boundary.mjs && node scripts/release/package-sdk-contract-parity.mjs && node scripts/release/surface-replication-gate.mjs && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs && node scripts/release/refusal-closure-gate.mjs && node scripts/release/agent-task-token-gate.mjs && pnpm quality:mcp-deprecations && node dist/cli.js assurance run tracker-context-quality --trigger ci --dry-run --json --output-budget unbounded && node scripts/release/gate-registry.mjs && node scripts/sdk-surface-snapshot.mjs --check && node scripts/bench/sdk-entrypoint-costs.mjs --check && node scripts/bench/cli-transport-floor.mjs --check && node dist/cli.js assurance run graph-composition --trigger ci --dry-run --json --output-budget unbounded && node dist/cli.js assurance run record-integrity --trigger ci --dry-run --json --output-budget unbounded",
|
|
125
125
|
"quality:command-grammar": "pnpm build && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs",
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
"@eslint/js": "^10.0.1",
|
|
221
221
|
"@modelcontextprotocol/ext-apps": "1.7.5",
|
|
222
222
|
"@sentry/cli": "^3.7.0",
|
|
223
|
-
"@types/node": "^26.
|
|
223
|
+
"@types/node": "^26.5.0",
|
|
224
224
|
"@types/npm-package-arg": "^6.1.4",
|
|
225
225
|
"@vitest/coverage-v8": "^4.1.11",
|
|
226
226
|
"esbuild": "0.28.2",
|
|
@@ -231,11 +231,11 @@
|
|
|
231
231
|
"github-slugger": "2.0.0",
|
|
232
232
|
"greptile": "^3.5.2",
|
|
233
233
|
"jscpd": "^5.1.2",
|
|
234
|
-
"marked": "18.0.
|
|
234
|
+
"marked": "18.0.12",
|
|
235
235
|
"parse5": "8.0.1",
|
|
236
236
|
"tsx": "^4.23.13",
|
|
237
237
|
"typescript": "^6.0.3",
|
|
238
|
-
"typescript-eslint": "^8.
|
|
238
|
+
"typescript-eslint": "^8.70.0",
|
|
239
239
|
"vitest": "^4.1.11"
|
|
240
240
|
}
|
|
241
241
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-digital-twin",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.9",
|
|
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.",
|