@unbrained/pm-cli 2026.11.3 → 2026.11.5
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/HARNESS_COMPATIBILITY.md +1 -1
- package/.agents/skills/README.md +14 -14
- package/.agents/skills/pm-developer/SKILL.md +16 -16
- package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +14 -14
- package/.agents/skills/pm-developer/references/SCRIPTING_COMPOSITION.md +10 -10
- package/.agents/skills/pm-extensions/SKILL.md +13 -13
- package/.agents/skills/pm-extensions/references/AUTHORING.md +12 -12
- package/.agents/skills/pm-sdk/SKILL.md +27 -27
- package/.agents/skills/pm-sdk/references/SURFACE_MAP.md +32 -32
- package/.agents/skills/pm-test-audit/references/AUDIT.md +1 -1
- package/.agents/skills/pm-user/SKILL.md +35 -35
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +9 -9
- package/CHANGELOG.md +19 -0
- package/README.md +13 -13
- package/dist/cli/error-guidance.d.ts +14 -35
- package/dist/cli/error-guidance.js +2 -2
- package/dist/cli/expected-revisions.d.ts +55 -0
- package/dist/cli/expected-revisions.js +2 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/register-setup.js +1 -1
- package/dist/cli/runtime/invocation-options.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/chunk-2RPORE7M.js +31 -0
- package/dist/cli-bundle/chunks/{chunk-Y7H55PCY.js → chunk-335BZ75D.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-5GWEY4P6.js +122 -0
- package/dist/cli-bundle/chunks/chunk-6VRX2CM7.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-5JZMF4M5.js → chunk-7DEKAXVA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-32BCU6HN.js → chunk-7ZRCYESH.js} +47 -46
- package/dist/cli-bundle/chunks/chunk-AUEKTX7V.js +6 -0
- package/dist/cli-bundle/chunks/chunk-D7KYPRK4.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-2CBHQXYJ.js → chunk-DAX3AOFI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JPKIUWLG.js → chunk-F6NDMKZ4.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FRNMQM45.js +2 -0
- package/dist/cli-bundle/chunks/chunk-HNGLDMSZ.js +9 -0
- package/dist/cli-bundle/chunks/{chunk-DEJHTFEF.js → chunk-HRCMORE7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-HRFGFIYU.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-5IPXDZKU.js → chunk-JI2GDE4I.js} +66 -66
- package/dist/cli-bundle/chunks/{chunk-MQJXZX3Q.js → chunk-LS3GI3H4.js} +53 -53
- package/dist/cli-bundle/chunks/chunk-OH6WQ7VT.js +3 -0
- package/dist/cli-bundle/chunks/{chunk-TZ3D3DPQ.js → chunk-OJDMJT7Y.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-S4LPZ4TN.js +20 -0
- package/dist/cli-bundle/chunks/chunk-UEGXWXUZ.js +2 -0
- package/dist/cli-bundle/chunks/chunk-XLSHFYXZ.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-UYNMKUGA.js → chunk-YKXATU2G.js} +2 -2
- package/dist/cli-bundle/chunks/item-revision-OJJVPQY7.js +2 -0
- package/dist/cli-bundle/chunks/item-transaction-QEPBUCMY.js +2 -0
- package/dist/cli-bundle/chunks/mutation-admission-INMM3HHG.js +2 -0
- package/dist/cli-bundle/chunks/{register-list-query-I6AZA3IX.js → register-list-query-5Y5JKWU5.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-3DAXCLXR.js → register-mutation-WC7OSQID.js} +2 -2
- package/dist/cli-bundle/chunks/register-operations-PO63DBZH.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-RRFOS7IT.js +2 -0
- package/dist/cli-bundle/chunks/{stage-7H36OTDJ.js → stage-E3MMV4TV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-5PMJOJCZ.js +44 -0
- package/dist/cli-bundle/focused-chunks/chunk-7KK66ISG.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-D4XQOMG4.js → chunk-AHWJPZSJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-C3O6JJPO.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LKN2WGGB.js → chunk-C6P6HPCX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-CPMSL4HS.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-CZM75DE3.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-TYHDZUL4.js → chunk-D2TBEBNW.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-E56OXRYH.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-I5FODKYB.js → chunk-F62XGAAY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-G4QP365K.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-G5PJCR7R.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-GS3JC5UU.js +23 -0
- package/dist/cli-bundle/focused-chunks/chunk-I5LGPUWH.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-LW64TINU.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-M6V7UMWL.js +26 -0
- package/dist/cli-bundle/focused-chunks/chunk-MC7IE7D7.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-MG7C3JUY.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-F3X6UWMI.js → chunk-MK4HV4JO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZQRCVRGS.js → chunk-NQ7GYFOX.js} +54 -54
- package/dist/cli-bundle/focused-chunks/chunk-O7EI33NP.js +91 -0
- package/dist/cli-bundle/focused-chunks/{chunk-RY4QEMAE.js → chunk-RFTJZ5VB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-SNOXXRSJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-UPJUTP2V.js +12 -0
- package/dist/cli-bundle/focused-chunks/{chunk-HJ27QLZV.js → chunk-VWWTIX5L.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-HOXIIZEO.js → chunk-XHOBYCVE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-YMGB2O4E.js +81 -0
- package/dist/cli-bundle/focused-chunks/item-revision-CTDO4H3I.js +2 -0
- package/dist/cli-bundle/focused-chunks/item-transaction-AEAYVVHA.js +2 -0
- package/dist/cli-bundle/focused-chunks/mutation-admission-4WM7TNHZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{stage-4SQHVI3O.js → stage-WV7QXR4C.js} +2 -2
- package/dist/cli-bundle/main.js +25 -25
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +5 -5
- package/dist/cli-bundle/sdk-core.js +1 -1
- 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 +57 -57
- 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/core/config/positional-value.d.ts +7 -1
- package/dist/core/config/positional-value.js +1 -1
- package/dist/core/extensions/reserved-host-flags.js +1 -1
- package/dist/core/history/history-rewrite.js +1 -1
- package/dist/core/item/literal-mutation-input.d.ts +17 -0
- package/dist/core/item/literal-mutation-input.js +1 -1
- package/dist/core/item/parent-reference-policy.d.ts +8 -4
- package/dist/core/item/parent-reference-policy.js +1 -1
- package/dist/core/item/sprint-release-format.d.ts +2 -1
- package/dist/core/item/sprint-release-format.js +1 -1
- package/dist/core/output/mutation-projection.js +1 -1
- package/dist/core/shared/command-types.d.ts +7 -0
- package/dist/core/store/item-mutation-precondition.d.ts +72 -6
- package/dist/core/store/item-mutation-precondition.js +1 -1
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/settings-validator.js +1 -1
- package/dist/core/store/settings.d.ts +14 -0
- package/dist/core/store/settings.js +5 -4
- package/dist/core/telemetry/policy.d.ts +27 -1
- package/dist/core/telemetry/policy.js +1 -1
- package/dist/core/telemetry/runtime.d.ts +18 -7
- package/dist/core/telemetry/runtime.js +4 -4
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
- package/dist/sdk/cli-contracts/completeness.js +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +11 -0
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
- package/dist/sdk/cli-contracts/registration-helpers.js +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1
- package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +8 -5
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/cli-program.js +1 -1
- package/dist/sdk/config.d.ts +3 -3
- package/dist/sdk/config.js +1 -1
- package/dist/sdk/environment/project-runtime-compatibility.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
- package/dist/sdk/governance/health.d.ts +2 -2
- package/dist/sdk/governance/health.js +2 -2
- package/dist/sdk/governance/validate.js +1 -1
- package/dist/sdk/history/salvage.js +3 -3
- package/dist/sdk/history-compact.d.ts +7 -1
- package/dist/sdk/history-compact.js +1 -1
- package/dist/sdk/history-repair.d.ts +2 -1
- package/dist/sdk/history-repair.js +1 -1
- package/dist/sdk/index.d.ts +6 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/init.d.ts +4 -4
- package/dist/sdk/init.js +8 -8
- package/dist/sdk/lifecycle/checkpoint-rollback.d.ts +10 -2
- package/dist/sdk/lifecycle/checkpoint-rollback.js +1 -1
- package/dist/sdk/lifecycle/claim.d.ts +4 -0
- package/dist/sdk/lifecycle/claim.js +1 -1
- package/dist/sdk/lifecycle/close-many.d.ts +11 -2
- package/dist/sdk/lifecycle/close-many.js +1 -1
- package/dist/sdk/lifecycle/close.d.ts +25 -0
- package/dist/sdk/lifecycle/close.js +1 -1
- package/dist/sdk/lifecycle/create.d.ts +7 -5
- package/dist/sdk/lifecycle/create.js +1 -1
- package/dist/sdk/lifecycle/item-revision.d.ts +162 -0
- package/dist/sdk/lifecycle/item-revision.js +2 -0
- package/dist/sdk/lifecycle/restore.js +1 -1
- package/dist/sdk/lifecycle/shared-unset-fields.d.ts +628 -4
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
- package/dist/sdk/lifecycle/start-blockers.d.ts +52 -0
- package/dist/sdk/lifecycle/start-blockers.js +2 -0
- package/dist/sdk/lifecycle/task-composition.d.ts +11 -0
- package/dist/sdk/lifecycle/task-composition.js +1 -1
- package/dist/sdk/lifecycle/update-many.d.ts +11 -2
- package/dist/sdk/lifecycle/update-many.js +1 -1
- package/dist/sdk/lifecycle/update.d.ts +5 -4
- package/dist/sdk/lifecycle/update.js +2 -2
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/declared-blockers.d.ts +16 -0
- package/dist/sdk/query/declared-blockers.js +2 -0
- package/dist/sdk/query/get.d.ts +7 -0
- package/dist/sdk/query/get.js +1 -1
- package/dist/sdk/query/projection-contracts.js +1 -1
- package/dist/sdk/runtime/actions.js +1 -1
- package/dist/sdk/runtime/mutation-value-validation.js +1 -1
- package/dist/sdk/runtime-input.d.ts +12 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime-primitives.d.ts +1 -0
- package/dist/sdk/runtime-primitives.js +1 -1
- package/dist/sdk/runtime.d.ts +10 -0
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/structured-mutations.js +1 -1
- package/dist/sdk/telemetry.d.ts +1 -1
- package/dist/sdk/telemetry.js +2 -2
- package/dist/sdk/test/batch.js +2 -2
- package/dist/sdk/test/execution.js +2 -2
- package/dist/sdk/test/linked-command-detection.js +1 -1
- package/dist/sdk/workspace-transaction.d.ts +17 -6
- package/dist/sdk/workspace-transaction.js +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.js +1 -1
- package/docs/AGENT_GUIDE.md +48 -48
- package/docs/AGENT_OUTPUT_ENCODINGS.md +20 -20
- package/docs/ASSURANCE.md +10 -10
- package/docs/BOUNDED_CONTEXT_READS.md +3 -3
- package/docs/CLAUDE_CODE_PLUGIN.md +1 -1
- package/docs/CLI_GRAMMAR.md +2 -2
- package/docs/COMMANDS.md +144 -32
- package/docs/COMMAND_NAMESPACES.md +1 -1
- package/docs/CONFIGURATION.md +82 -70
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +2 -2
- package/docs/CONTEXT_INTEGRITY_CONTRACTS.md +5 -5
- package/docs/CORPUS_SHAPES.md +1 -1
- package/docs/DEPENDENCY_KIND_CONTRACT.md +6 -6
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +5 -5
- package/docs/ECOSYSTEM_PLANNING_REVIEW.md +3 -3
- package/docs/EXTENSION_AUTHOR_CONTRACTS.md +4 -4
- package/docs/HISTORY_ATTESTATION.md +1 -1
- package/docs/HISTORY_MAINTENANCE.md +1 -1
- package/docs/LIFECYCLE_COMMANDS.md +1 -1
- package/docs/MCP_2026_07_28.md +16 -16
- package/docs/MCP_2026_07_28_CONFORMANCE.md +19 -19
- package/docs/MCP_REMOTE_TRANSPORT_SECURITY.md +22 -22
- package/docs/MCP_SKILLS_AND_APPS.md +1 -1
- package/docs/MERGE_SAFETY.md +6 -6
- package/docs/MUTATION_INTEGRITY.md +5 -5
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +14 -14
- package/docs/PACKED_FIRST_RUN.md +1 -1
- package/docs/QUICKSTART.md +10 -10
- package/docs/README.md +21 -21
- package/docs/READ_OUTPUT_CONTRACTS.md +9 -9
- package/docs/RECURRENCE_RECOVERY_CONTRACTS.md +1 -1
- package/docs/RELEASING.md +19 -10
- package/docs/SCRIPTING.md +10 -10
- package/docs/SDK.md +183 -38
- package/docs/SDK_ARTIFACT_OUTPUT.md +1 -1
- package/docs/SDK_PRIMITIVE_INVENTORY.md +2 -2
- package/docs/SELF_DESCRIBING_CONTEXT_CONTRACTS.md +7 -7
- package/docs/TESTING.md +1 -1
- package/docs/WORKFLOW_POLICIES.md +2 -2
- package/docs/WORKSPACE_POSITION_AND_LIFECYCLE.md +8 -8
- package/docs/agent-task-token-baseline.json +1 -1
- package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
- package/docs/generated/AGENT_COMMAND_SURFACE.md +1 -1
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +112 -112
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +13 -4
- package/docs/performance/cli-transport-overhead.md +7 -7
- package/marketplace.json +1 -1
- 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/README.md +5 -5
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/GAP_REPORT.md +16 -16
- 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/README.md +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/GAP_REPORT.md +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +6 -6
- package/plugins/pm-claude/package.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +1 -1
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +1 -1
- package/dist/cli-bundle/chunks/chunk-7ZEFHFAU.js +0 -2
- package/dist/cli-bundle/chunks/chunk-B6UTLYLM.js +0 -3
- package/dist/cli-bundle/chunks/chunk-HBKD5HZB.js +0 -2
- package/dist/cli-bundle/chunks/chunk-L6LCLC37.js +0 -2
- package/dist/cli-bundle/chunks/chunk-NR4KABHC.js +0 -31
- package/dist/cli-bundle/chunks/chunk-PWD5RY2D.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XRMYA4R7.js +0 -20
- package/dist/cli-bundle/chunks/chunk-YWS4XV4I.js +0 -6
- package/dist/cli-bundle/chunks/chunk-ZOAJNPBL.js +0 -129
- package/dist/cli-bundle/chunks/item-transaction-ZHLJTBD7.js +0 -2
- package/dist/cli-bundle/chunks/mutation-admission-ZQMRMGIB.js +0 -2
- package/dist/cli-bundle/chunks/register-operations-G3QGGQ5Z.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-LDXHMNOT.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-3XGKBVJ3.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-4HY6EGPB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AK2CI2GI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HUXZCPWT.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-IKXJ57XA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-MOY6KZGJ.js +0 -44
- package/dist/cli-bundle/focused-chunks/chunk-PWUTFKSI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PZRB7IXH.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-WSYPVBKS.js +0 -80
- package/dist/cli-bundle/focused-chunks/chunk-WXLG7HZ5.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-WZDFCVLX.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-YGO3FWA2.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-YVLAP3BL.js +0 -23
- package/dist/cli-bundle/focused-chunks/chunk-ZYXQACPB.js +0 -2
- package/dist/cli-bundle/focused-chunks/item-transaction-PZ2FQ6B2.js +0 -2
- package/dist/cli-bundle/focused-chunks/mutation-admission-XOOK6XFH.js +0 -2
package/docs/CONFIGURATION.md
CHANGED
|
@@ -37,7 +37,7 @@ it to the right typed flag based on the key (so `--policy`/`--format`/`--criteri
|
|
|
37
37
|
remain optional for single values):
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
pm config set telemetry-tracking off # off|on|true|false
|
|
40
|
+
pm config set telemetry-tracking off # off|on|true|false; global profile
|
|
41
41
|
pm config set item-format toon # same as --format toon
|
|
42
42
|
pm config set governance-preset strict # same as --policy strict
|
|
43
43
|
pm config set definition-of-done "Tests pass" # same as --criterion "Tests pass"
|
|
@@ -80,34 +80,35 @@ If the existing `settings.json` is valid JSON but fails schema validation (for e
|
|
|
80
80
|
|
|
81
81
|
## Common Settings
|
|
82
82
|
|
|
83
|
-
| Setting
|
|
84
|
-
|
|
85
|
-
| `id_prefix`
|
|
86
|
-
| `ids.token_length`
|
|
87
|
-
| `author_default`
|
|
88
|
-
| `mutation_guard.require_attributed_author` | reject mutations whose effective author remains `unknown` (default `false`)
|
|
89
|
-
| `mutation_guard.secret_guard`
|
|
90
|
-
| `mutation_guard.stale_in_progress_hours`
|
|
91
|
-
| `item_format`
|
|
92
|
-
| `output.default_format`
|
|
93
|
-
| `locks.ttl_seconds`
|
|
94
|
-
| `locks.wait_ms`
|
|
95
|
-
| `history.missing_stream`
|
|
96
|
-
| `history.compact_policy.enabled`
|
|
97
|
-
| `history.compact_policy.max_entries`
|
|
98
|
-
| `history.compact_policy.trigger`
|
|
99
|
-
| `testing.record_results_to_items`
|
|
100
|
-
| `testing.allow_untrusted_linked_tests`
|
|
101
|
-
| `validation.sprint_release_format`
|
|
102
|
-
| `validation.parent_reference`
|
|
103
|
-
| `item_types.definitions[]`
|
|
104
|
-
| `governance.create_default_type`
|
|
105
|
-
| `governance.workflow_enforcement`
|
|
106
|
-
| `governance.
|
|
107
|
-
| `governance.
|
|
108
|
-
| `governance.
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
83
|
+
| Setting | Purpose |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `id_prefix` | generated item ID prefix, default `pm-` |
|
|
86
|
+
| `ids.token_length` | random base36 token length for newly minted item ids (4-12, default `4`); raise it to shrink cross-branch id collision odds in concurrent multi-agent workflows (see [Merge Safety](MERGE_SAFETY.md)) |
|
|
87
|
+
| `author_default` | configured mutation author before automatic harness detection |
|
|
88
|
+
| `mutation_guard.require_attributed_author` | reject mutations whose effective author remains `unknown` (default `false`) |
|
|
89
|
+
| `mutation_guard.secret_guard` | credential-shaped content policy: `off`, `advise`, or `block` (default `advise`) |
|
|
90
|
+
| `mutation_guard.stale_in_progress_hours` | age threshold for unclaimed in-progress work surfaced by `pm health` (integer >= 1, default `72`) |
|
|
91
|
+
| `item_format` | item storage format (`toon` writes; legacy markdown is read/migrate only) |
|
|
92
|
+
| `output.default_format` | default renderer, usually `toon` |
|
|
93
|
+
| `locks.ttl_seconds` | stale lock threshold |
|
|
94
|
+
| `locks.wait_ms` | wait budget before a contended lock returns `lock_conflict`; item-store mutations, restore and the hierarchy lock restart it on each owner handoff (120 s cap), other locks use it as a fixed total (default `3000`; `0` fails fast) |
|
|
95
|
+
| `history.missing_stream` | `auto_create` or `strict_error` |
|
|
96
|
+
| `history.compact_policy.enabled` | enable the compaction advisory: `pm health` warns on over-threshold streams (default `false`); when disabled, `max_entries`/`trigger` are inert |
|
|
97
|
+
| `history.compact_policy.max_entries` | when the policy is enabled, the entry count above which a stream is flagged by `pm health` and the default `pm history-compact --all-over` threshold (default `500`) |
|
|
98
|
+
| `history.compact_policy.trigger` | policy intent when enabled: `health_warn` (advisory only) or `auto` (scheduled sweeps expected) |
|
|
99
|
+
| `testing.record_results_to_items` | persist bounded linked-test summaries |
|
|
100
|
+
| `testing.allow_untrusted_linked_tests` | permit the explicit `pm test --allow-untrusted-linked-tests` one-run override (default `false`; does not trust or execute commands by itself) |
|
|
101
|
+
| `validation.sprint_release_format` | `warn` or `strict_error` |
|
|
102
|
+
| `validation.parent_reference` | `warn` or `strict_error` (`strict_error` is the built-in default; `pm create --allow-missing-parent` is the explicit escape hatch) |
|
|
103
|
+
| `item_types.definitions[]` | custom item types and type options |
|
|
104
|
+
| `governance.create_default_type` | default `--type` used by `pm create "title"` when `--type` is omitted (defaults to `Task`); must resolve to a known item type |
|
|
105
|
+
| `governance.workflow_enforcement` | per-type transition enforcement mode for `pm update --status` (`off` default, `warn`, or `strict`) |
|
|
106
|
+
| `governance.start_blocker_enforcement` | starting an item (`update --status in_progress`, `claim --start`, `claim --next --start`, `start-task`) while a declared `blocked_by` target is open: `strict` (default; refuse unless `--force`), `warn`, or `off`; `claim --next --start` skips a refused candidate and claims the next eligible one |
|
|
107
|
+
| `governance.duplicate_detection_mode` | create/copy similarity policy: `off`, `advisory`, or `strict`; the minimal preset uses `off`, while the default and strict presets use `strict` |
|
|
108
|
+
| `governance.duplicate_detection_threshold` | inclusive likely-duplicate score from `0` through `1` (default `0.8`) |
|
|
109
|
+
| `governance.duplicate_detection_limit` | maximum matches attached to a create/copy advisory from `0` through `20` (default `3`) |
|
|
110
|
+
| `schema.type_workflows[]` | per-type allowed status transitions (see Per-Type Workflows below) |
|
|
111
|
+
| `search.*` | search mode, scoring, providers, embedding timeout, and vector settings |
|
|
111
112
|
|
|
112
113
|
Lock recovery is tracked by
|
|
113
114
|
[pm-02z97f](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-02z97f.toon)
|
|
@@ -218,15 +219,15 @@ underscore aliases remain accepted for compatibility.
|
|
|
218
219
|
|
|
219
220
|
## Environment Variables
|
|
220
221
|
|
|
221
|
-
| Variable
|
|
222
|
-
|
|
223
|
-
| `PM_AUTHOR`
|
|
224
|
-
| `PM_PATH`
|
|
225
|
-
| `PM_GLOBAL_PATH`
|
|
226
|
-
| `PM_LOCK_WAIT_MS`
|
|
227
|
-
| `PM_OLLAMA_MODEL`
|
|
228
|
-
| `PM_DISABLE_OLLAMA_AUTO_DEFAULTS` | disable implicit Ollama search defaults
|
|
229
|
-
| `PM_CONTEXT_USAGE_DISABLED`
|
|
222
|
+
| Variable | Use |
|
|
223
|
+
|---|---|
|
|
224
|
+
| `PM_AUTHOR` | optional explicit session-wide mutation author override |
|
|
225
|
+
| `PM_PATH` | override project tracker root for tests or sandboxes |
|
|
226
|
+
| `PM_GLOBAL_PATH` | override global profile root for tests or sandboxes |
|
|
227
|
+
| `PM_LOCK_WAIT_MS` | per-process override for the `locks.wait_ms` budget (a no-progress window only where that lock uses the progress policy); non-negative integer milliseconds, with `0` restoring fail-fast lock conflicts |
|
|
228
|
+
| `PM_OLLAMA_MODEL` | choose default Ollama embedding model |
|
|
229
|
+
| `PM_DISABLE_OLLAMA_AUTO_DEFAULTS` | disable implicit Ollama search defaults |
|
|
230
|
+
| `PM_CONTEXT_USAGE_DISABLED` | set to `1` to disable the derived context/next usage-feedback ledger with zero filesystem reads or writes |
|
|
230
231
|
|
|
231
232
|
For command-level tracker targeting, prefer `--pm-path <tracker-root>`. The old
|
|
232
233
|
`--path` flag is still accepted, but it means the pm tracker storage directory
|
|
@@ -263,23 +264,31 @@ Tests should set both `PM_PATH` and `PM_GLOBAL_PATH` to temporary directories. T
|
|
|
263
264
|
|
|
264
265
|
### Telemetry environment variables
|
|
265
266
|
|
|
266
|
-
Telemetry is enabled by default. Use `pm config set telemetry-tracking off` to opt out persistently (see [Common Settings](#common-settings)).
|
|
267
|
+
Telemetry is enabled by default. Use `pm config set telemetry-tracking off` to opt out persistently (see [Common Settings](#common-settings)). Consent and the event endpoint live only in the global profile:
|
|
267
268
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
269
|
+
- A scope-less `telemetry-tracking` call targets the global profile.
|
|
270
|
+
- Project-scope `get` and `set` refuse. Project `list` and `export` omit the key.
|
|
271
|
+
- `pm init` asks only while no choice is recorded in the global profile. It keeps a choice another process records while its prompt is open. It reports the global value and writes no project `telemetry` block.
|
|
272
|
+
- An older project `telemetry` block is ignored.
|
|
273
|
+
|
|
274
|
+
When enabled, these environment variables tune runtime behaviour. All boolean knobs accept `1`, `true`, `yes`, or `on` (case-insensitive); any other value leaves the knob off.
|
|
275
|
+
|
|
276
|
+
| Variable | Values | Use |
|
|
277
|
+
|---|---|---|
|
|
278
|
+
| `PM_TELEMETRY_DISABLED` | boolean | Hard-disable all telemetry for this process, ignoring settings. |
|
|
271
279
|
| `DO_NOT_TRACK` | boolean | Hard-disable event capture, identity creation, flush workers, endpoint probes, and Sentry, regardless of persisted preferences. |
|
|
272
280
|
| `PM_TELEMETRY_SEND_TEST_EVENTS` | boolean | Explicitly allow inferred test events. Hard opt-outs still take precedence. |
|
|
273
281
|
| `PM_TELEMETRY_READ_SAMPLE_RATE` | number greater than `0` and at most `1` | Override automatic successful-read sampling; `1`, empty, or invalid values retain every invocation. Omit for automatic frequency bounding. |
|
|
274
|
-
| `PM_NO_TELEMETRY`
|
|
275
|
-
| `PM_TELEMETRY_OTEL_DISABLED`
|
|
276
|
-
| `PM_TELEMETRY_INLINE_FLUSH`
|
|
277
|
-
| `PM_TELEMETRY_SOURCE_CONTEXT`
|
|
278
|
-
| `PM_TELEMETRY_HTTP_TIMEOUT_MS`
|
|
279
|
-
| `PM_TELEMETRY_INGEST_KEY`
|
|
280
|
-
| `
|
|
281
|
-
| `
|
|
282
|
-
| `
|
|
282
|
+
| `PM_NO_TELEMETRY` | boolean | Alias for `PM_TELEMETRY_DISABLED` (honoured by the same checks). |
|
|
283
|
+
| `PM_TELEMETRY_OTEL_DISABLED` | boolean | Disable only OTLP trace-span export; the event queue still flushes. |
|
|
284
|
+
| `PM_TELEMETRY_INLINE_FLUSH` | boolean | Flush the queue and OTLP spans inline instead of dispatching the detached worker. Mainly for tests; normal use relies on the background worker. |
|
|
285
|
+
| `PM_TELEMETRY_SOURCE_CONTEXT` | `user` \| `automation` \| `test` \| `dogfood` | Override the inferred source context recorded on each event. Unrecognized nonempty values use inferred context with `source_context_source=env_override_rejected`; the raw value is never emitted. |
|
|
286
|
+
| `PM_TELEMETRY_HTTP_TIMEOUT_MS` | integer milliseconds | Bound each background event or OTLP request (default `20000`, clamped to `1000`–`25000` to stay below the worker lock TTL). |
|
|
287
|
+
| `PM_TELEMETRY_INGEST_KEY` | string | Sent as the `x-pm-telemetry-key` header on queue flushes; never logged. |
|
|
288
|
+
| `PM_TELEMETRY_ENDPOINT` | http(s) URL | Deliver events to this collector instead of the configured endpoint. Events captured under it go to a queue and state file of their own that only a process with the same value reads or reports; a later flush removes them after a day idle. `pm telemetry clear` removes them too, but it also revokes consent and deletes every telemetry queue and state file of the profile. An empty value uses the configured endpoint; any other value that is not an http(s) URL disables delivery. URL credentials are sent as Basic auth, by `pm health --check-telemetry` too. |
|
|
289
|
+
| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | URL | OTLP/HTTP traces endpoint for command spans. Takes precedence over the base endpoint. |
|
|
290
|
+
| `OTEL_EXPORTER_OTLP_ENDPOINT` | URL | Base OTLP endpoint; the traces endpoint is derived by appending `/v1/traces`. |
|
|
291
|
+
| `OTEL_SERVICE_NAME` | string | `service.name` attribute on exported spans (defaults to `pm-cli`). |
|
|
283
292
|
|
|
284
293
|
Unrecognized source-context overrides produce one bounded warning per process on
|
|
285
294
|
stderr, naming the accepted values without echoing the rejected input. JSON
|
|
@@ -325,9 +334,12 @@ Interaction rules:
|
|
|
325
334
|
|
|
326
335
|
Test environments inferred from `VITEST`, `VITEST_WORKER_ID`, `NODE_TEST_CONTEXT`
|
|
327
336
|
(native `node --test` children), or `NODE_ENV=test` suppress telemetry and Sentry
|
|
328
|
-
before identity creation. A valid explicit `PM_TELEMETRY_SOURCE_CONTEXT
|
|
329
|
-
`PM_TELEMETRY_SEND_TEST_EVENTS=1` permits intentional test
|
|
330
|
-
|
|
337
|
+
before identity creation. A valid explicit `PM_TELEMETRY_SOURCE_CONTEXT`,
|
|
338
|
+
including `test`, or `PM_TELEMETRY_SEND_TEST_EVENTS=1` permits intentional test
|
|
339
|
+
delivery, so a test that only wants the label must also set
|
|
340
|
+
`PM_TELEMETRY_DISABLED=1`. Point such tests at a local collector: set
|
|
341
|
+
`PM_TELEMETRY_ENDPOINT` for events, `SENTRY_DSN` for errors, and
|
|
342
|
+
`OTEL_EXPORTER_OTLP_*` for spans. Inferred tests use inline telemetry flushing even
|
|
331
343
|
after an opt in, so CLI delivery settles before process exit and disposable-root
|
|
332
344
|
cleanup. SDK telemetry completion also awaits inline delivery before returning.
|
|
333
345
|
Neither setting overrides a hard opt-out. `pm telemetry status` exposes effective `enabled`, persisted
|
|
@@ -360,12 +372,12 @@ Tracing and privacy delivery: [pm-58yzil](../.agents/pm/features/pm-58yzil.toon)
|
|
|
360
372
|
|
|
361
373
|
Crash and error diagnostics are reported to Sentry only when telemetry is enabled and the process is not opted out. These environment variables tune the Sentry client.
|
|
362
374
|
|
|
363
|
-
| Variable
|
|
364
|
-
|
|
365
|
-
| `PM_SENTRY_DISABLED`
|
|
366
|
-
| `SENTRY_DSN`
|
|
367
|
-
| `SENTRY_ENVIRONMENT`
|
|
368
|
-
| `PM_SENTRY_TRACE_COMMANDS`
|
|
375
|
+
| Variable | Values | Use |
|
|
376
|
+
|---|---|---|
|
|
377
|
+
| `PM_SENTRY_DISABLED` | boolean | Disable Sentry error reporting for this process (the Sentry SDK is not even imported). `PM_TELEMETRY_DISABLED` / `PM_NO_TELEMETRY` also disable it. |
|
|
378
|
+
| `SENTRY_DSN` | URL | Override the destination DSN. Defaults to the bundled pm-cli project DSN. |
|
|
379
|
+
| `SENTRY_ENVIRONMENT` | string | Override the reported environment tag. Defaults to `test` under Vitest, `ci` when `CI` is set, otherwise `production`. |
|
|
380
|
+
| `PM_SENTRY_TRACE_COMMANDS` | boolean | Explicitly initialize Sentry for successful commands. Defaults to off, preserving lazy startup. All consent opt-outs and test isolation still apply; a zero trace sample rate avoids initialization. |
|
|
369
381
|
| `SENTRY_TRACES_SAMPLE_RATE` | number `0`–`1` | Fraction of command spans sampled for performance tracing. Defaults to `0.2` (20%). Set to `1` for full-trace performance debugging or `0` to disable tracing. Non-numeric or out-of-range values fall back to the default. |
|
|
370
382
|
|
|
371
383
|
> Sentry is hard-disabled under Vitest (`VITEST` / `VITEST_WORKER_ID`), so these knobs are no-ops inside the test suite.
|
|
@@ -628,21 +640,21 @@ When query expansion or rerank providers fail, `pm search` degrades gracefully a
|
|
|
628
640
|
|
|
629
641
|
`search.default_mode` decides the mode a bare `pm search` runs in (`--mode` always wins):
|
|
630
642
|
|
|
631
|
-
| Value
|
|
632
|
-
|
|
633
|
-
| `auto`
|
|
634
|
-
| `keyword`
|
|
635
|
-
| `semantic`, `hybrid` | pin the semantic path; an unreachable provider still degrades to keyword hits with a `search_semantic_fallback` warning
|
|
643
|
+
| Value | Behavior |
|
|
644
|
+
|---|---|
|
|
645
|
+
| `auto` | default; `hybrid` when `search.provider` names the active embedding provider and a vector store or extension adapter resolves (or an extension search provider is active), `keyword` otherwise |
|
|
646
|
+
| `keyword` | pin exact-token ranking for every bare search |
|
|
647
|
+
| `semantic`, `hybrid` | pin the semantic path; an unreachable provider still degrades to keyword hits with a `search_semantic_fallback` warning |
|
|
636
648
|
|
|
637
649
|
Every search result reports `mode_source` (`explicit`, `settings`, or `auto`) beside the effective `mode`.
|
|
638
650
|
|
|
639
651
|
Mutation commands invalidate keyword search caches immediately. Semantic vector refresh is controlled by `search.mutation_refresh_policy`:
|
|
640
652
|
|
|
641
|
-
| Policy
|
|
642
|
-
|
|
643
|
-
| `semantic_configured` | default; refresh vectors during mutations only when semantic provider/store settings are explicitly configured
|
|
644
|
-
| `cache_only`
|
|
645
|
-
| `semantic_auto`
|
|
653
|
+
| Policy | Behavior |
|
|
654
|
+
|---|---|
|
|
655
|
+
| `semantic_configured` | default; refresh vectors during mutations only when semantic provider/store settings are explicitly configured |
|
|
656
|
+
| `cache_only` | fastest writes; invalidate keyword caches and leave vector refresh to `pm reindex` or `pm health --refresh-vectors` |
|
|
657
|
+
| `semantic_auto` | also apply implicit local Ollama/LanceDB defaults during mutations |
|
|
646
658
|
|
|
647
659
|
Useful commands:
|
|
648
660
|
|
|
@@ -28,7 +28,7 @@ Where two descriptions express one experiment, both slugs resolve to its owner.
|
|
|
28
28
|
Existing acceptance owners retain their original delivery boundary.
|
|
29
29
|
|
|
30
30
|
| Stable slug | Historical ordinal | Source note (UTC) | Canonical owner | Disposition |
|
|
31
|
-
|
|
31
|
+
|---|---|---|---|---|
|
|
32
32
|
| `act-r-activation` | 1 | 2026-07-07T15:12:12.161Z | [pm-fr9ok0](../.agents/pm/tasks/pm-fr9ok0.toon) | Proposed experiment |
|
|
33
33
|
| `typed-spreading-activation` | 2 | 2026-07-07T15:12:12.161Z | [pm-fdb8e8](../.agents/pm/tasks/pm-fdb8e8.toon) | Proposed experiment |
|
|
34
34
|
| `learned-linear-signal-weights` | 3 | 2026-07-07T15:12:12.161Z | [pm-ex5p2u](../.agents/pm/tasks/pm-ex5p2u.toon) | Proposed experiment |
|
|
@@ -112,7 +112,7 @@ The 18 candidate compositions from pm-vvib retain the architecture decision gate
|
|
|
112
112
|
Individual experiment drafts record the ideas without accepting that decision.
|
|
113
113
|
|
|
114
114
|
| Candidate | Composition | Canonical owner |
|
|
115
|
-
|
|
115
|
+
|---|---|---|
|
|
116
116
|
| 1 | Prospective memory | [pm-0uvib0](../.agents/pm/tasks/pm-0uvib0.toon) |
|
|
117
117
|
| 2 | Metacognitive revalidation | [pm-ur2t9o](../.agents/pm/tasks/pm-ur2t9o.toon) |
|
|
118
118
|
| 3 | Interference and belief revision | [pm-xfta80](../.agents/pm/tasks/pm-xfta80.toon) |
|
|
@@ -53,11 +53,11 @@ History writers using item-hash epoch 2 always emit `item_hash_version: 2`. An e
|
|
|
53
53
|
|
|
54
54
|
Repair keeps implicit legacy streams implicit and byte-stable when no drift exists. Unsupported explicit epochs still fail with a typed `unsupported_item_hash_version` diagnostic instead of being rewritten.
|
|
55
55
|
|
|
56
|
-
| Writer/runtime range
|
|
57
|
-
|
|
58
|
-
| Legacy writers before an explicit marker | implicit epoch 1 | Modern readers retain legacy canonicalization candidates.
|
|
59
|
-
| Observed 2026.8.24 through 2026.8.28
|
|
60
|
-
| 2026.8.31 and newer
|
|
56
|
+
| Writer/runtime range | Item-hash output | Read contract |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| Legacy writers before an explicit marker | implicit epoch 1 | Modern readers retain legacy canonicalization candidates. |
|
|
59
|
+
| Observed 2026.8.24 through 2026.8.28 | explicit epoch 2 | Modern readers accept both field-frozen and expanded epoch-2 forms without mixing forms inside one entry. |
|
|
60
|
+
| 2026.8.31 and newer | explicit epoch 3 | Exact pins and bounded ranges that cannot select an epoch-3 reader cause current runtimes to reject the write before mutation. |
|
|
61
61
|
|
|
62
62
|
The table records confirmed release boundaries rather than inventing an exact
|
|
63
63
|
first release for legacy epoch 1 or epoch 2. The SDK exports
|
package/docs/CORPUS_SHAPES.md
CHANGED
|
@@ -46,7 +46,7 @@ identifier is `https://schema.unbrained.dev/pm/corpus-shape/v1`.
|
|
|
46
46
|
## Built-in populations
|
|
47
47
|
|
|
48
48
|
| Shape | Purpose |
|
|
49
|
-
|
|
49
|
+
|---|---|
|
|
50
50
|
| `scratch` | Seconds-old, shallow project with minimal history |
|
|
51
51
|
| `representative` | Medium-lived project with rich evidence and typed lineage |
|
|
52
52
|
| `deep-graph` | Deep relationship graph with deterministic cycles |
|
|
@@ -4,12 +4,12 @@ Tracker: [pm-4020c5](../.agents/pm/issues/pm-4020c5.toon), [pm-jkbqt8](../.agent
|
|
|
4
4
|
|
|
5
5
|
Dependency rows have one canonical stored spelling per relationship meaning. Command inputs remain compatibility-friendly: hyphens normalize to underscores and the aliases below are accepted, but `pm create` and `pm update` persist the canonical kind. Existing historical rows are never rewritten implicitly.
|
|
6
6
|
|
|
7
|
-
| Canonical kind | Accepted legacy aliases
|
|
8
|
-
|
|
9
|
-
| `blocked_by`
|
|
10
|
-
| `related`
|
|
11
|
-
| `parent`
|
|
12
|
-
| `child`
|
|
7
|
+
| Canonical kind | Accepted legacy aliases |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `blocked_by` | `depends_on`, `depends-on` |
|
|
10
|
+
| `related` | `related_to`, `related-to` |
|
|
11
|
+
| `parent` | `child_of`, `child-of`, `epic` |
|
|
12
|
+
| `child` | `parent_child`, `parent-child`, `task` |
|
|
13
13
|
|
|
14
14
|
`epic` and `task` are compatibility aliases, not item types embedded in the relationship ontology. New integrations should use `parent` or `child` and express the work classification through the item `type` field.
|
|
15
15
|
|
|
@@ -7,12 +7,12 @@ Tracker references: [pm-cha95z](../.agents/pm/tasks/pm-cha95z.toon), [pm-5t33or]
|
|
|
7
7
|
Failures are context-management surfaces. Every diagnostic family now declares
|
|
8
8
|
a format-aware token ceiling and one degradation ladder in the public SDK:
|
|
9
9
|
|
|
10
|
-
| Class
|
|
11
|
-
|
|
12
|
-
| `error`
|
|
13
|
-
| `warning`
|
|
10
|
+
| Class | Text | JSON | Corrective action that survives degradation |
|
|
11
|
+
|---|---:|---:|---|
|
|
12
|
+
| `error` | 768 | 2000 | required action, retry/domain, or next step |
|
|
13
|
+
| `warning` | 768 | 2000 | required action, retry/domain, or next step |
|
|
14
14
|
| `validation_summary` | 1500 | 3000 | required action, retry/domain, or next step |
|
|
15
|
-
| `recovery_bundle`
|
|
15
|
+
| `recovery_bundle` | 768 | 2000 | required action, retry/domain, or next step |
|
|
16
16
|
|
|
17
17
|
The smallest explicit ceiling is 192 estimated tokens. At that floor, the
|
|
18
18
|
projector may reduce the diagnostic to its code, required action, compact
|
|
@@ -38,7 +38,7 @@ canonical GitHub file URL under the [documentation policy](../AGENTS.md#document
|
|
|
38
38
|
so installed readers can access the data without a broken package-relative path.
|
|
39
39
|
|
|
40
40
|
| Measure | Initial observation | Interpretation |
|
|
41
|
-
|
|
41
|
+
|---|---:|---|
|
|
42
42
|
| Directed graph edges | 14,097 | Deduplicated directed basis |
|
|
43
43
|
| Ordering layers / critical-path edges | 12 / 11 | Acyclic prerequisite graph |
|
|
44
44
|
| Missing graph endpoints / isolated items | 0 / 0 | Across all statuses |
|
|
@@ -98,7 +98,7 @@ measured evidence govern promotion. Priority measures impact; horizon measures
|
|
|
98
98
|
readiness and uncertainty. Review monthly and when a material observation changes.
|
|
99
99
|
|
|
100
100
|
| Horizon | Illustrative window | Canonical outcomes and promotion evidence |
|
|
101
|
-
|
|
101
|
+
|---|---|---|
|
|
102
102
|
| Current | 0–3 months | [Agent-legible grammar](../.agents/pm/milestones/pm-j82fd3.toon), active readiness, retrieval failures, release diagnosis and current protocol proof. Require completed-task token comparisons, preserved compatibility and actual installed-consumer evidence. |
|
|
103
103
|
| Emerging | 3–12 months | [Provable history](../.agents/pm/milestones/pm-w7ccmv.toon), reproducible observations and [measured self-improvement](../.agents/pm/milestones/pm-zzylb9.toon). Require independent replay, mutation coverage and three consecutive measured improvement cycles. |
|
|
104
104
|
| Expansion | 12–36 months | [Proven scale](../.agents/pm/milestones/pm-o87av6.toon), [universal domain platform](../.agents/pm/milestones/pm-t4d7nz.toon), [federated agents](../.agents/pm/milestones/pm-z1kr34.toon). Require published million-item/fleet distributions and SDK-only domain exemplars. |
|
|
@@ -151,7 +151,7 @@ it does not prove the outstanding 100k/1M performance acceptance.
|
|
|
151
151
|
Five project golden queries were evaluated at k=10:
|
|
152
152
|
|
|
153
153
|
| Mode | Mean nDCG | Mean MRR | Mean recall | Broad history/episode query recall |
|
|
154
|
-
|
|
154
|
+
|---|---:|---:|---:|---:|
|
|
155
155
|
| Keyword | 0.7451 | 0.80 | 0.8727 | 4/11 |
|
|
156
156
|
| Semantic | 0.7944 | 0.85 | 0.8182 | 1/11 |
|
|
157
157
|
| Hybrid | 0.8405 | 0.90 | 0.8364 | 2/11 |
|
|
@@ -44,7 +44,7 @@ Every `pm` command records a telemetry event. Extension commands use the same te
|
|
|
44
44
|
Allowed values:
|
|
45
45
|
|
|
46
46
|
| Value | Meaning |
|
|
47
|
-
|
|
47
|
+
|---|---|
|
|
48
48
|
| `redacted` | Default. Records sanitized command args, options, result summary, and runtime environment. |
|
|
49
49
|
| `minimal` | Records structural metadata and one-way digests only. No readable command text, args, options, result summary, or runtime environment is kept. |
|
|
50
50
|
| `max` | Same as `redacted`, but raises the per-string truncation cap from 512 to 2048 characters. Redaction still applies. |
|
|
@@ -77,7 +77,7 @@ Create path:
|
|
|
77
77
|
|
|
78
78
|
- Used by `pm update`, `pm close`, `pm claim`, `pm release`, `pm restore`, `pm delete`, and other mutations of existing items.
|
|
79
79
|
- Locates the item, acquires the lock, reads the item through the `onRead` hook, enforces ownership and history policy, applies the mutation, enters the commit fence, consults `item_store_write`, writes the item atomically, appends history, fires `onWrite` for the item and history stream, records the after-command affected-item snapshot, then releases the lock.
|
|
80
|
-
- `item_store_write` handlers can redirect the target path, replace serialized contents, or skip the physical item write.
|
|
80
|
+
- `item_store_write` handlers can redirect the target path, replace serialized contents, or skip the physical item write. Inside an expected-revision scope (`withExpectedItemRevisions`, `--expect-hash`) the scope then advances to the item read back from storage, not the pre-override document, so the caller's next guarded write is admitted while the item stays readable in the tracker with the id the commit kept. A handler that rewrites the embedded id leaves no revision to bind to, so that write refuses with `item_revision_conflict` although no other writer ran. An item moved out of the tracker advances the scope to the empty tombstone, and a later guarded `update`, `close` or `delete` cannot locate it. Contents the store cannot parse back make the next guarded `update`, `close` or `delete` fail with `item_document_invalid` before any revision check, and a guarded `restore` refuse with `item_revision_conflict`. An `item_store_delete` handler that skips or redirects the removal advances the scope to the item that remains.
|
|
81
81
|
- The commit fence verifies the lock lease and the stored item revision first. When the lease was taken over (`lock_lost`) or the item changed after the read (`stale_revision`), the mutation refuses before `item_store_write` or `item_store_delete` (non-dry-run) runs, so a handler that persists the payload itself never commits a refused write.
|
|
82
82
|
|
|
83
83
|
Both paths guarantee:
|
|
@@ -91,7 +91,7 @@ Both paths guarantee:
|
|
|
91
91
|
`changed_fields` sentinel values:
|
|
92
92
|
|
|
93
93
|
| Value | Meaning |
|
|
94
|
-
|
|
94
|
+
|---|---|
|
|
95
95
|
| `["imported"]` | Item came from an importer. |
|
|
96
96
|
| `["restored"]` | Item was restored from a previous state. |
|
|
97
97
|
| `["deleted"]` | Item was deleted. |
|
|
@@ -99,7 +99,7 @@ Both paths guarantee:
|
|
|
99
99
|
Surface matrix:
|
|
100
100
|
|
|
101
101
|
| Surface | Create path | `mutateItem` path |
|
|
102
|
-
|
|
102
|
+
|---|---|---|
|
|
103
103
|
| `onRead` hook | No | Yes |
|
|
104
104
|
| `item_store_write` service override | No | Yes |
|
|
105
105
|
| `history_append` service override | Yes | Yes |
|
|
@@ -77,7 +77,7 @@ server-local proof paths are available only to local CLI and SDK callers.
|
|
|
77
77
|
The JSON document has exactly these fields:
|
|
78
78
|
|
|
79
79
|
| Field | Meaning |
|
|
80
|
-
|
|
80
|
+
|---|---|
|
|
81
81
|
| `format` | Literal `pm-history-attestation` |
|
|
82
82
|
| `version` | Integer `1` |
|
|
83
83
|
| `hash_algorithm` | `sha256` or `sha512`, for bundle commitments |
|
|
@@ -10,7 +10,7 @@ these policies; the CLI exposes the same operations through one history family.
|
|
|
10
10
|
## Command paths
|
|
11
11
|
|
|
12
12
|
| Native command | Permanent compatibility spelling | Purpose |
|
|
13
|
-
|
|
13
|
+
|---|---|---|
|
|
14
14
|
| `pm history <id>` | unchanged | Read or verify one item stream |
|
|
15
15
|
| `pm history activity` | `pm activity` | Read activity across streams |
|
|
16
16
|
| `pm history redact <id>` | `pm history-redact <id>` | Remove selected sensitive content |
|
|
@@ -17,7 +17,7 @@ pm contracts --command 'close many' --flags-only --json
|
|
|
17
17
|
## Command migration
|
|
18
18
|
|
|
19
19
|
| Canonical invocation | Compatibility invocation |
|
|
20
|
-
|
|
20
|
+
|---|---|
|
|
21
21
|
| `pm update many --ids <ids> --priority 1` | `pm update-many --ids <ids> --priority 1` |
|
|
22
22
|
| `pm close many --ids <ids> --reason "Verified"` | `pm close-many --ids <ids> --reason "Verified"` |
|
|
23
23
|
| `pm close delete <id> --dry-run` | `pm delete <id> --dry-run` |
|
package/docs/MCP_2026_07_28.md
CHANGED
|
@@ -49,10 +49,10 @@ Legacy means every revision that establishes a session with an `initialize`
|
|
|
49
49
|
handshake, which the canonical revision defines as `2025-11-25` and earlier.
|
|
50
50
|
The stdio adapter therefore accepts the full initialize-era set, newest first:
|
|
51
51
|
|
|
52
|
-
| Revision
|
|
53
|
-
|
|
54
|
-
| `2025-11-25` | yes
|
|
55
|
-
| `2025-06-18` | yes
|
|
52
|
+
| Revision | Accepted at `initialize` | Notes |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `2025-11-25` | yes | Final legacy revision; offered when a client omits `protocolVersion` |
|
|
55
|
+
| `2025-06-18` | yes | Earlier legacy revision retained for existing consumers |
|
|
56
56
|
|
|
57
57
|
`initialize` answers with the revision the client requested, because a legacy
|
|
58
58
|
client has no fall-forward mechanism and treats the answered version as the
|
|
@@ -101,18 +101,18 @@ windows. Removal is a reviewed compatibility change, never a history rewrite.
|
|
|
101
101
|
|
|
102
102
|
## Removed, migrated, and deprecated behavior
|
|
103
103
|
|
|
104
|
-
| Prior behavior
|
|
105
|
-
|
|
106
|
-
| `initialize` and `notifications/initialized`
|
|
107
|
-
| `Mcp-Session-Id` and protocol sessions
|
|
108
|
-
| `ping`
|
|
109
|
-
| `resources/subscribe` and `resources/unsubscribe`
|
|
110
|
-
| SSE event ids and `Last-Event-ID` replay
|
|
111
|
-
| Reverse `roots/list`, sampling, and elicitation requests
|
|
112
|
-
| Core tasks
|
|
113
|
-
| `logging/setLevel`
|
|
114
|
-
| Roots, Sampling, Logging, HTTP+SSE, and non-none `includeContext` | Retain only in bounded legacy compatibility while `pm-vzcisw` drives deprecation removal.
|
|
115
|
-
| Dynamic Client Registration
|
|
104
|
+
| Prior behavior | Disposition |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `initialize` and `notifications/initialized` | Legacy stdio adapter only; absent from modern behavior. |
|
|
107
|
+
| `Mcp-Session-Id` and protocol sessions | Removed; explicit application handles are ordinary arguments. |
|
|
108
|
+
| `ping` | Legacy adapter only; modern calls return Method Not Found. |
|
|
109
|
+
| `resources/subscribe` and `resources/unsubscribe` | Replaced by the implemented `subscriptions/listen` filter. |
|
|
110
|
+
| SSE event ids and `Last-Event-ID` replay | Removed; callers retry with a new request id. |
|
|
111
|
+
| Reverse `roots/list`, sampling, and elicitation requests | Migrate to MRTR `input_required` under `pm-rz9gep`. |
|
|
112
|
+
| Core tasks | Migrate to `io.modelcontextprotocol/tasks` under `pm-rzs24j`. |
|
|
113
|
+
| `logging/setLevel` | Removed; optional request-local log metadata is never shared, and remote operations use host OpenTelemetry. |
|
|
114
|
+
| Roots, Sampling, Logging, HTTP+SSE, and non-none `includeContext` | Retain only in bounded legacy compatibility while `pm-vzcisw` drives deprecation removal. |
|
|
115
|
+
| Dynamic Client Registration | Legacy authorization fallback; Client ID Metadata Documents are canonical under `pm-3zh9s4`. |
|
|
116
116
|
|
|
117
117
|
## Rollout, rollback, and proof
|
|
118
118
|
|
|
@@ -5,25 +5,25 @@ Tracker: [pm-55yf1t](../.agents/pm/tasks/pm-55yf1t.toon). The official
|
|
|
5
5
|
every revision-level change to one canonical pm owner and records executable
|
|
6
6
|
evidence or an explicit open obligation.
|
|
7
7
|
|
|
8
|
-
| Requirement family
|
|
9
|
-
|
|
10
|
-
| Stateless per-request version, client capabilities, and identity
|
|
11
|
-
| Mandatory `server/discover`, deterministic capabilities and identity
|
|
12
|
-
| Unsupported version `-32022`
|
|
13
|
-
| Header mismatch `-32020` and missing capability `-32021`
|
|
14
|
-
| Required result `resultType`; legacy omission means complete only at compatibility boundary
|
|
15
|
-
| No modern initialize, initialized notification, ping, or protocol session
|
|
16
|
-
| Legacy interoperability covers every initialize-era revision the spec names
|
|
17
|
-
| MRTR `input_required`, retry state, and reverse-request removal
|
|
18
|
-
| `subscriptions/listen`, request-scoped streams, no SSE resumability
|
|
19
|
-
| Official `io.modelcontextprotocol/tasks` extension
|
|
20
|
-
| Cacheable list/read results, deterministic tools, JSON Schema 2020-12, any JSON structured content | [pm-hv1x1x](../.agents/pm/features/pm-hv1x1x.toon)
|
|
21
|
-
| Issuer-bound authorization, client metadata documents, consent, headers, OpenTelemetry
|
|
22
|
-
| Stable MCP Apps negotiation, tool/resource metadata, fallback, sandboxing, and accessible views
|
|
23
|
-
| Draft Skills over MCP list/get/read, compatibility, provenance, digests, bounds, and pagination
|
|
24
|
-
| Per-request `io.modelcontextprotocol/logLevel`; omission forbids `notifications/message`
|
|
25
|
-
| Deprecated Roots, Sampling, Logging, HTTP+SSE, `includeContext`, dynamic registration
|
|
26
|
-
| Official schema, real stdio/HTTP, packed/published, npx/bunx, negative controls
|
|
8
|
+
| Requirement family | Canonical owner | Current disposition | Executable evidence |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| Stateless per-request version, client capabilities, and identity | [pm-vae5ec](../.agents/pm/features/pm-vae5ec.toon) | Implemented | `tests/unit/sdk/mcp/protocol.spec.ts`, `tests/integration/mcp-stateless-protocol.spec.ts` |
|
|
11
|
+
| Mandatory `server/discover`, deterministic capabilities and identity | [pm-vae5ec](../.agents/pm/features/pm-vae5ec.toon) | Implemented | direct SDK/server tests plus plugin and release real-process probes |
|
|
12
|
+
| Unsupported version `-32022` | [pm-vae5ec](../.agents/pm/features/pm-vae5ec.toon) | Implemented | SDK and server negative controls |
|
|
13
|
+
| Header mismatch `-32020` and missing capability `-32021` | [pm-vae5ec](../.agents/pm/features/pm-vae5ec.toon) | Implemented in SDK, stdio, and Streamable HTTP | SDK negative controls and `tests/integration/mcp-streamable-http.spec.ts` |
|
|
14
|
+
| Required result `resultType`; legacy omission means complete only at compatibility boundary | [pm-vae5ec](../.agents/pm/features/pm-vae5ec.toon) | Implemented for modern pm results | SDK unit and modern direct-server tests |
|
|
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
|
+
| 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
|
+
| 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; consumer acceptance remains a per-release gate | subscription SDK, stdio, HTTP, backpressure, disconnect, and retry tests |
|
|
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
|
+
| 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; 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 |
|
|
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 |
|
|
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 |
|
|
27
27
|
|
|
28
28
|
This matrix describes implementation coverage, not a blanket certification of
|
|
29
29
|
every deployed artifact. Programme completion requires each owner's positive
|