@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
|
@@ -43,16 +43,16 @@ pm-mcp-http
|
|
|
43
43
|
|
|
44
44
|
Configuration is explicit and environment-only:
|
|
45
45
|
|
|
46
|
-
| Variable
|
|
47
|
-
|
|
48
|
-
| `PM_MCP_HTTP_HOST`
|
|
49
|
-
| `PM_MCP_HTTP_PORT`
|
|
50
|
-
| `PM_MCP_HTTP_ALLOWED_ORIGINS` | Comma-separated exact browser origins
|
|
51
|
-
| `PM_MCP_HTTP_BEARER_TOKEN`
|
|
52
|
-
| `PM_MCP_HTTP_AUTH_ISSUER`
|
|
53
|
-
| `PM_MCP_HTTP_RESOURCE`
|
|
54
|
-
| `PM_MCP_HTTP_SCOPES`
|
|
55
|
-
| `PM_MCP_DISCOVERY_CURSOR_KEY` | Shared 32-byte-or-longer secret for discovery pages | process-local key
|
|
46
|
+
| Variable | Meaning | Default |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `PM_MCP_HTTP_HOST` | Bind host | `127.0.0.1` |
|
|
49
|
+
| `PM_MCP_HTTP_PORT` | Bind port, including `0` for an ephemeral test port | `3000` |
|
|
50
|
+
| `PM_MCP_HTTP_ALLOWED_ORIGINS` | Comma-separated exact browser origins | none |
|
|
51
|
+
| `PM_MCP_HTTP_BEARER_TOKEN` | Opaque deployment token for the bundled verifier | none |
|
|
52
|
+
| `PM_MCP_HTTP_AUTH_ISSUER` | Exact HTTPS authorization-server issuer | none |
|
|
53
|
+
| `PM_MCP_HTTP_RESOURCE` | Canonical MCP resource/audience URI | none |
|
|
54
|
+
| `PM_MCP_HTTP_SCOPES` | Space-separated consent scopes | `pm:read pm:write` |
|
|
55
|
+
| `PM_MCP_DISCOVERY_CURSOR_KEY` | Shared 32-byte-or-longer secret for discovery pages | process-local key |
|
|
56
56
|
|
|
57
57
|
A non-loopback bind fails closed unless token, issuer, and resource are all
|
|
58
58
|
present. Production deployments should normally call
|
|
@@ -151,18 +151,18 @@ inherit one another's trace context. Raw bearer tokens are hashed for
|
|
|
151
151
|
constant-time comparison by the bundled verifier and are never included in
|
|
152
152
|
claims, errors, traces, or JSON-RPC result data.
|
|
153
153
|
|
|
154
|
-
| Threat
|
|
155
|
-
|
|
156
|
-
| DNS rebinding/browser drive-by | Loopback default plus exact `Origin` allowlist
|
|
157
|
-
| Token passthrough
|
|
158
|
-
| Issuer mix-up
|
|
159
|
-
| Confused audience
|
|
160
|
-
| Excess authority
|
|
161
|
-
| Query/log credential leak
|
|
162
|
-
| Header injection
|
|
163
|
-
| Trace privacy leak
|
|
164
|
-
| Proxy cache disclosure
|
|
165
|
-
| Replay after disconnect
|
|
154
|
+
| Threat | Enforced boundary |
|
|
155
|
+
|---|---|
|
|
156
|
+
| DNS rebinding/browser drive-by | Loopback default plus exact `Origin` allowlist |
|
|
157
|
+
| Token passthrough | Bearer is verified at pm and never forwarded to another service |
|
|
158
|
+
| Issuer mix-up | Exact discovery/response issuer checks and issuer-keyed credentials |
|
|
159
|
+
| Confused audience | Exact protected-resource audience check |
|
|
160
|
+
| Excess authority | Required-scope intersection before dispatch |
|
|
161
|
+
| Query/log credential leak | Query tokens rejected; challenges and errors omit token material |
|
|
162
|
+
| Header injection | Schema-derived allowlist, reserved-name checks, control-byte rejection |
|
|
163
|
+
| Trace privacy leak | Syntax/size validation, baggage-key allowlist, request-local storage |
|
|
164
|
+
| Proxy cache disclosure | MCP and metadata errors use explicit content types; MCP results use `no-store` |
|
|
165
|
+
| Replay after disconnect | No session, event id, resume cursor, or redelivery; retry uses a new request id |
|
|
166
166
|
|
|
167
167
|
## Deprecated-feature inventory and sunset
|
|
168
168
|
|
|
@@ -75,7 +75,7 @@ SDK-backed tools. `resources/list` and `resources/read` expose the corresponding
|
|
|
75
75
|
`ui://` documents:
|
|
76
76
|
|
|
77
77
|
| View | Authoritative tool | Purpose |
|
|
78
|
-
|
|
78
|
+
|---|---|---|
|
|
79
79
|
| Context explorer | `pm_context` | Context, provenance, omissions, and token cost |
|
|
80
80
|
| Relationship graph | `pm_graph` | Typed edges, explaining paths, and governance |
|
|
81
81
|
| Plan and milestone | `pm_plan` | Steps, dependencies, decisions, and validation |
|
package/docs/MERGE_SAFETY.md
CHANGED
|
@@ -136,12 +136,12 @@ History scalar rebasing and ignored settlement artifacts are tracked by
|
|
|
136
136
|
[pm-gh1553](../.agents/pm/issues/pm-gh1553.toon) and
|
|
137
137
|
[pm-gh1556](../.agents/pm/issues/pm-gh1556.toon).
|
|
138
138
|
|
|
139
|
-
| Artifact
|
|
140
|
-
|
|
141
|
-
| Item `.toon` / `.md`
|
|
142
|
-
| `history/*.jsonl`
|
|
143
|
-
| tracker `**/*.jsonl` except the later `history/*.jsonl` override | `pm-relationship`
|
|
144
|
-
| root `settings.json` and nested `**/*.json`
|
|
139
|
+
| Artifact | Driver | Merge behavior |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| Item `.toon` / `.md` | `pm-item-toon` / `pm-item-markdown` | Three-way field merge; append-like collections use set union, `updated_at` uses the latest timestamp, scalar conflicts select the value from the later document update with stable value order as an equal-timestamp tie-break, and canonical serialization recomputes TOON counts. |
|
|
142
|
+
| `history/*.jsonl` | `pm-history` | Preserves the common prefix and both divergent suffixes, orders deterministically, then re-anchors the resulting hash chain. |
|
|
143
|
+
| tracker `**/*.jsonl` except the later `history/*.jsonl` override | `pm-relationship` | Covers default and package-owned custom relationship event paths, unions divergent suffixes by `eventId` (timestamp-ordered, ours-first on ties), and renumbers `sequence` consecutively so the strict-sequence store loader accepts the merged stream. |
|
|
144
|
+
| root `settings.json` and nested `**/*.json` | `pm-json` | Recursively merges objects per key. Arrays compose when both branches preserve the base and add distinct entries, so independent extension installs and evaluation additions merge without weakening edit/removal conflict detection. |
|
|
145
145
|
|
|
146
146
|
History union validates each event in its original branch before rebasing its
|
|
147
147
|
effects. A whole metadata-field replacement still assigns its exact value when
|
|
@@ -32,11 +32,11 @@ pm config project set mutation_guard_stale_in_progress_hours 48
|
|
|
32
32
|
|
|
33
33
|
Defaults preserve author compatibility while providing secret advice:
|
|
34
34
|
|
|
35
|
-
| Setting
|
|
36
|
-
|
|
37
|
-
| `mutation_guard.require_attributed_author` | `false`
|
|
38
|
-
| `mutation_guard.secret_guard`
|
|
39
|
-
| `mutation_guard.stale_in_progress_hours`
|
|
35
|
+
| Setting | Default | Behavior |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `mutation_guard.require_attributed_author` | `false` | When enabled, reject an effective author of `unknown`. |
|
|
38
|
+
| `mutation_guard.secret_guard` | `advise` | `off`, stderr/structured `advise`, or pre-write `block`. |
|
|
39
|
+
| `mutation_guard.stale_in_progress_hours` | `72` | Age threshold for unclaimed active work in `pm health`. |
|
|
40
40
|
|
|
41
41
|
A blocking secret policy may be bypassed only by an explicit `--force` on a
|
|
42
42
|
force-capable mutation. The warning records that an override occurred while
|
|
@@ -64,13 +64,13 @@ explicit receipt with `has_omissions: false`,
|
|
|
64
64
|
|
|
65
65
|
Mutually exclusive output modes emit only their active row collection:
|
|
66
66
|
|
|
67
|
-
| Command mode
|
|
68
|
-
|
|
69
|
-
| `activity` (digest default) | `activity_digest`
|
|
70
|
-
| `activity --raw/--compact`
|
|
71
|
-
| `activity --full`
|
|
72
|
-
| `history` (compact default) | `compact_history`
|
|
73
|
-
| `history --full`
|
|
67
|
+
| Command mode | Active row key | Withheld group | Restore |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| `activity` (digest default) | `activity_digest` | `event_rows` | `--raw` |
|
|
70
|
+
| `activity --raw/--compact` | `compact_activity` | `provenance` | `--full` |
|
|
71
|
+
| `activity --full` | `activity` | none | already complete |
|
|
72
|
+
| `history` (compact default) | `compact_history` | `raw_history` | `--full` |
|
|
73
|
+
| `history --full` | `history` | none | already complete |
|
|
74
74
|
|
|
75
75
|
Inactive row keys are omitted, not zero-filled. This makes a wrong parser loud:
|
|
76
76
|
reading `.activity` from compact activity now yields a missing key instead of a
|
|
@@ -177,11 +177,11 @@ for their domain without adding package-specific logic to the CLI renderer.
|
|
|
177
177
|
|
|
178
178
|
The following bounded built-ins now use this shared declaration:
|
|
179
179
|
|
|
180
|
-
| Command mode
|
|
181
|
-
|
|
182
|
-
| `deps --summary`
|
|
183
|
-
| `graph --summary`
|
|
184
|
-
| `validate --counts` | `diagnostic_rows`
|
|
180
|
+
| Command mode | Withheld group | Restore |
|
|
181
|
+
|---|---|---|
|
|
182
|
+
| `deps --summary` | selected dependency tree, graph, or relationship context | `--full` |
|
|
183
|
+
| `graph --summary` | `result_rows` | `--full` |
|
|
184
|
+
| `validate --counts` | `diagnostic_rows` | `--full` |
|
|
185
185
|
|
|
186
186
|
Passing `--full` with the corresponding compact flag is a usage error. An
|
|
187
187
|
explicit full request and the default full request produce the same payload
|
|
@@ -337,7 +337,7 @@ metadata as a continuation negative control. The checked-in report is
|
|
|
337
337
|
[`scripts/release/context-intent-calibration.json`](../scripts/release/context-intent-calibration.json).
|
|
338
338
|
|
|
339
339
|
| Intent | 2-item tokens / budget | 2,243-item tokens / budget | Current-scale rows | Degradation |
|
|
340
|
-
|
|
340
|
+
|---|---|---|---|---|
|
|
341
341
|
| `context:orient` | 735 / 2,400 | 1,028 / 2,400 | 3 | bounded sections |
|
|
342
342
|
| `get:inspect` | 401 / 3,200 | 415 / 3,200 | item envelope | standard item |
|
|
343
343
|
| `list:triage` | 443 / 3,200 | 3,189 / 3,200 | 69 | budget-derived rows |
|
|
@@ -348,7 +348,7 @@ Whole-answer cursor cost is measured against the unprojected single call for
|
|
|
348
348
|
the identical ordered row set:
|
|
349
349
|
|
|
350
350
|
| Family | Rows | Pages | Optimized bytes/row | Optimized walk | Repeated-metadata control | Unbounded call | Walk / unbounded |
|
|
351
|
-
|
|
351
|
+
|---|---|---|---|---|---|---|---|
|
|
352
352
|
| `list:triage` | 1,998 | 31 | 172.93 | 345,519 B | 387,489 B | 1,558,741 B | 0.2217 |
|
|
353
353
|
| `search:discover` | 1,998 | 66 | 202.50 | 404,591 B | 470,046 B | 1,681,847 B | 0.2406 |
|
|
354
354
|
|
package/docs/PACKED_FIRST_RUN.md
CHANGED
|
@@ -14,7 +14,7 @@ node scripts/release/packed-first-run.mjs /path/to/installed/@unbrained/pm-cli
|
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
| Journey | Required observation |
|
|
17
|
-
|
|
17
|
+
|---|---|
|
|
18
18
|
| Installed README | Ordered init/create/list from `60 Second Example`; missing/reordered commands, unsupported expressions or unbalanced quotes fail. No shell execution. |
|
|
19
19
|
| Persistence | Each command returns nonempty output below 4,096 characters; the created item exists. |
|
|
20
20
|
| Branch merge | Independent comments survive a real Git merge; reconciliation and strict history verification succeed. |
|
package/docs/QUICKSTART.md
CHANGED
|
@@ -94,16 +94,16 @@ pm create \
|
|
|
94
94
|
|
|
95
95
|
Useful item types:
|
|
96
96
|
|
|
97
|
-
| Type
|
|
98
|
-
|
|
99
|
-
| `Epic`
|
|
100
|
-
| `Feature`
|
|
101
|
-
| `Task`
|
|
102
|
-
| `Chore`
|
|
103
|
-
| `Issue`
|
|
104
|
-
| `Decision`
|
|
105
|
-
| `Plan`
|
|
106
|
-
| `Event`, `Reminder`, `Milestone`, `Meeting` | calendar-aware planning
|
|
97
|
+
| Type | Use |
|
|
98
|
+
|---|---|
|
|
99
|
+
| `Epic` | broad outcome or initiative |
|
|
100
|
+
| `Feature` | user-facing capability or major slice |
|
|
101
|
+
| `Task` | implementation work |
|
|
102
|
+
| `Chore` | maintenance, refactoring, or housekeeping work |
|
|
103
|
+
| `Issue` | bug or defect |
|
|
104
|
+
| `Decision` | recorded choice and rationale |
|
|
105
|
+
| `Plan` | agent-optimized living plan with ordered steps and evidence |
|
|
106
|
+
| `Event`, `Reminder`, `Milestone`, `Meeting` | calendar-aware planning |
|
|
107
107
|
|
|
108
108
|
## Find and Claim Work
|
|
109
109
|
|
package/docs/README.md
CHANGED
|
@@ -17,17 +17,17 @@ pm guide release --json
|
|
|
17
17
|
|
|
18
18
|
## Read Path
|
|
19
19
|
|
|
20
|
-
| Reader
|
|
21
|
-
|
|
22
|
-
| New user
|
|
23
|
-
| New maintainer
|
|
24
|
-
| Coding agent
|
|
25
|
-
| Maintainer
|
|
26
|
-
| Package author
|
|
27
|
-
| Codex or ChatGPT plugin implementer | [Codex Plugin](CODEX_PLUGIN.md)
|
|
28
|
-
| Codex user
|
|
29
|
-
| Claude Code user
|
|
30
|
-
| Machine client
|
|
20
|
+
| Reader | First page | Then read |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| New user | [Quickstart](QUICKSTART.md) | [Command Reference](COMMANDS.md) |
|
|
23
|
+
| New maintainer | [Onboarding](ONBOARDING.md) | [Agent Guide](AGENT_GUIDE.md), [Testing](TESTING.md), [Releasing](RELEASING.md) |
|
|
24
|
+
| Coding agent | [Agent Guide](AGENT_GUIDE.md) | [Configuration](CONFIGURATION.md), then command help |
|
|
25
|
+
| Maintainer | [Contributing](../CONTRIBUTING.md) | [Testing](TESTING.md), [Releasing](RELEASING.md), [Architecture](ARCHITECTURE.md) |
|
|
26
|
+
| Package author | [Packages and Extensions](EXTENSIONS.md) | [SDK](SDK.md), [starter extension](examples/starter-extension/README.md) |
|
|
27
|
+
| Codex or ChatGPT plugin implementer | [Codex Plugin](CODEX_PLUGIN.md) | [Native ChatGPT and Codex Plugin Implementation Plan](CHATGPT_CODEX_PLUGIN_IMPLEMENTATION.md) |
|
|
28
|
+
| Codex user | [Codex Plugin](CODEX_PLUGIN.md) | [Agent Guide](AGENT_GUIDE.md), then [Command Reference](COMMANDS.md) |
|
|
29
|
+
| Claude Code user | [Claude Code Plugin](CLAUDE_CODE_PLUGIN.md) | [Agent Guide](AGENT_GUIDE.md), then [Command Reference](COMMANDS.md) |
|
|
30
|
+
| Machine client | `pm contracts --json` | [CLI Scripting Contract](SCRIPTING.md), [Command Reference](COMMANDS.md#machine-contracts), optionally `pm install guide-shell --project && pm guide commands` |
|
|
31
31
|
|
|
32
32
|
## Documentation Map
|
|
33
33
|
|
|
@@ -127,16 +127,16 @@ Additional SDK, operations, and generated contracts:
|
|
|
127
127
|
|
|
128
128
|
## Guide Topic Map
|
|
129
129
|
|
|
130
|
-
| Optional `pm guide` topic | Primary docs
|
|
131
|
-
|
|
132
|
-
| `quickstart`
|
|
133
|
-
| `commands`
|
|
134
|
-
| `workflows`
|
|
135
|
-
| `sdk`
|
|
136
|
-
| `extensions`, `packages`
|
|
137
|
-
| `skills`
|
|
138
|
-
| `harnesses`
|
|
139
|
-
| `release`
|
|
130
|
+
| Optional `pm guide` topic | Primary docs |
|
|
131
|
+
|---|---|
|
|
132
|
+
| `quickstart` | [Quickstart](QUICKSTART.md), [Command Reference](COMMANDS.md) |
|
|
133
|
+
| `commands` | [Command Reference](COMMANDS.md), [Configuration](CONFIGURATION.md) |
|
|
134
|
+
| `workflows` | [Agent Guide](AGENT_GUIDE.md), [Testing](TESTING.md) |
|
|
135
|
+
| `sdk` | [SDK](SDK.md), [SDK context contracts](SDK_CONTEXT.md), [Architecture](ARCHITECTURE.md) |
|
|
136
|
+
| `extensions`, `packages` | [Packages and Extensions](EXTENSIONS.md), [starter extension](examples/starter-extension/README.md) |
|
|
137
|
+
| `skills` | [Agent Guide](AGENT_GUIDE.md) plus `.agents/skills/*` |
|
|
138
|
+
| `harnesses` | [Agent Guide](AGENT_GUIDE.md) plus `.agents/skills/HARNESS_COMPATIBILITY.md` |
|
|
139
|
+
| `release` | [Releasing](RELEASING.md), [CHANGELOG](../CHANGELOG.md) |
|
|
140
140
|
|
|
141
141
|
Community files:
|
|
142
142
|
|
|
@@ -10,12 +10,12 @@ Complete package-envelope fitting and session-reference recovery are tracked by
|
|
|
10
10
|
|
|
11
11
|
Every built-in read surface uses four output dimensions: what to include, how much to return, how much the result may cost, and how to encode it. The same canonical controls work through the CLI, SDK, MCP, generated schemas, runtime contracts, and shell completions.
|
|
12
12
|
|
|
13
|
-
| Dimension | CLI
|
|
14
|
-
|
|
15
|
-
| Include
|
|
16
|
-
| Amount
|
|
17
|
-
| Cost
|
|
18
|
-
| Encoding
|
|
13
|
+
| Dimension | CLI | SDK and MCP | Meaning |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Include | `--output-include <csv>` | `outputInclude` | Retain named fields or sections, or select a declared projection mode. |
|
|
16
|
+
| Amount | `--output-limit <n\|unbounded>` | `outputLimit` | Bound shared row collections. |
|
|
17
|
+
| Cost | `--output-budget <n\|unbounded>` | `outputBudget` | Fail closed when even the compact result cannot fit. |
|
|
18
|
+
| Encoding | `--output-format <toon\|json>` | `outputFormat` | Select the CLI renderer and record the requested encoding. |
|
|
19
19
|
|
|
20
20
|
The contract covers `list`, `context`, `search`, `get`, `next`, `health`, `deps`, `graph`, `history`, `activity`, `validate`, `events`, `contracts`, `comments`, `notes`, `files`, `docs`, `stats`, and `aggregate`, including list aliases and `ctx`.
|
|
21
21
|
|
|
@@ -295,9 +295,9 @@ may only shrink, while repeat suppression may only hold or improve. The gate
|
|
|
295
295
|
also fixes the expected unique-fact shape:
|
|
296
296
|
|
|
297
297
|
| Tracker tier | Group spend / budget | Seen items | Suppressed repeats | Delivered bytes |
|
|
298
|
-
|
|
299
|
-
| 2 items
|
|
300
|
-
| 2,243 items
|
|
298
|
+
|---|---|---|---|---|
|
|
299
|
+
| 2 items | 3,820 / 20,000 | 2 | 3 | 15,274 |
|
|
300
|
+
| 2,243 items | 10,156 / 20,000 | 106 | 7 | 40,614 |
|
|
301
301
|
|
|
302
302
|
These are deterministic synthetic-corpus measurements from
|
|
303
303
|
`scripts/release/context-intent-calibration.json`; they contain no hosted
|
|
@@ -99,7 +99,7 @@ The refusal contract distinguishes four states before any command-specific
|
|
|
99
99
|
read or mutation begins:
|
|
100
100
|
|
|
101
101
|
| Selected root state | Code | Exit | Recovery |
|
|
102
|
-
|
|
102
|
+
|---|---|---:|---|
|
|
103
103
|
| Path does not exist | `tracker_root_missing` | 3 | Tokenized, non-interactive `pm --pm-path <path> init --defaults --agent-guidance skip` |
|
|
104
104
|
| Directory exists but `settings.json` does not | `tracker_not_initialized` | 3 | The same initialization retry |
|
|
105
105
|
| Path or ancestor is a regular file | `tracker_root_not_directory` | 2 | Select a directory; never suggest `pm init` against the file |
|
package/docs/RELEASING.md
CHANGED
|
@@ -220,15 +220,15 @@ Signal tiers:
|
|
|
220
220
|
|
|
221
221
|
Category precedence (first matching bucket wins):
|
|
222
222
|
|
|
223
|
-
| Priority | Category
|
|
224
|
-
|
|
225
|
-
| 1
|
|
226
|
-
| 2
|
|
227
|
-
| 3
|
|
228
|
-
| 4
|
|
229
|
-
| 5
|
|
230
|
-
| 6
|
|
231
|
-
| 7
|
|
223
|
+
| Priority | Category | Trigger terms (from strong + weak signals unless noted) |
|
|
224
|
+
|---|---|---|
|
|
225
|
+
| 1 | `Security` | `security`, `cve`, `vulnerability` |
|
|
226
|
+
| 2 | `Deprecated` | `deprecated`, `deprecation` |
|
|
227
|
+
| 3 | `Removed` | `removed`, `remove`, `deleted`, `delete` |
|
|
228
|
+
| 4 | `Fixed` | `fix`, `fixed`, `bug`, `bugfix`, `hotfix`, `regression` |
|
|
229
|
+
| 5 | `Added` | `feature`, `feat`, `added`, `add`, `new` |
|
|
230
|
+
| 6 | `Changed` | strong-signal `change`, `changed`, `refactor`, `update`, `updated`, `improve`; for non-bug-like types only, title fallback is also used |
|
|
231
|
+
| 7 | `Other` | no classifier match |
|
|
232
232
|
|
|
233
233
|
Bug-like default:
|
|
234
234
|
|
|
@@ -284,7 +284,16 @@ semantic class is `usage`, `not_found`, or `conflict`. Message and title prose
|
|
|
284
284
|
never participate. Unknown codes, missing or mismatched exits, unhandled
|
|
285
285
|
events, and every `generic_failure` or `dependency_failed` remain blocking.
|
|
286
286
|
This keeps rewording independent from release policy and makes stale or broad
|
|
287
|
-
message allowlists impossible.
|
|
287
|
+
message allowlists impossible. The gate skips issues seen only in
|
|
288
|
+
`environment=test` (opted-in CI tests); an issue with any other event counts
|
|
289
|
+
whenever any of its events falls inside the activity window. Activity and
|
|
290
|
+
environment are separate Sentry queries, because Sentry applies `lastSeen` after
|
|
291
|
+
an environment filter: a combined query would also skip an issue whose
|
|
292
|
+
production event predates the window while a test event falls inside it. When
|
|
293
|
+
the listing of issues with non-test events may be truncated, nothing is skipped,
|
|
294
|
+
and a failed listing fails the gate. Both listings follow Sentry's next-page links
|
|
295
|
+
up to `--sentry-limit` (default `200`); when active issues remain beyond it, the
|
|
296
|
+
gate fails, because it cannot judge issues it never read.
|
|
288
297
|
|
|
289
298
|
Sentry API requests use a 120-second deadline by default. Operators can set
|
|
290
299
|
`--sentry-request-timeout-ms` between `1` and `300000` when reproducing
|
package/docs/SCRIPTING.md
CHANGED
|
@@ -6,16 +6,16 @@ Use this contract when composing `pm` with shells, CI runners, `jq`, or another
|
|
|
6
6
|
|
|
7
7
|
## Process Contract
|
|
8
8
|
|
|
9
|
-
| Exit | Meaning
|
|
10
|
-
|
|
11
|
-
| `0`
|
|
12
|
-
| `1`
|
|
13
|
-
| `2`
|
|
14
|
-
| `3`
|
|
15
|
-
| `4`
|
|
16
|
-
| `5`
|
|
17
|
-
| `6`
|
|
18
|
-
| `7`
|
|
9
|
+
| Exit | Meaning | Script response |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `0` | The requested operation completed. A successful read may still return zero rows. | Parse stdout. |
|
|
12
|
+
| `1` | Runtime or unexpected failure. | Preserve stderr and stop. |
|
|
13
|
+
| `2` | Invalid flags, values, or command composition. | Correct the invocation; do not retry unchanged. |
|
|
14
|
+
| `3` | Requested tracker or resource was not found. | Correct the path or ID. |
|
|
15
|
+
| `4` | State or concurrency conflict. | Refresh live state before deciding whether to retry. |
|
|
16
|
+
| `5` | A required dependency operation failed. | Inspect the dependency evidence before retrying. |
|
|
17
|
+
| `6` | The request succeeded but matched nothing to change. | Treat as success and inspect the effect receipt. |
|
|
18
|
+
| `7` | The request succeeded and changed only part of the selected targets. | Treat as success and inspect unmatched/skipped rows. |
|
|
19
19
|
|
|
20
20
|
Exits `0`, `6`, and `7` are successful outcomes. Bulk mutation envelopes repeat
|
|
21
21
|
the distinction as `outcome: effect`, `outcome: no_effect`, or `outcome:
|