@unbrained/pm-cli 2026.9.28 → 2026.9.29

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.
Files changed (101) hide show
  1. package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +7 -6
  2. package/.agents/skills/pm-user/references/BACKLOG_SHAPING.md +1 -1
  3. package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +26 -3
  4. package/.claude-plugin/marketplace.json +2 -2
  5. package/CHANGELOG.md +17 -0
  6. package/dist/cli/error-guidance.js +1 -1
  7. package/dist/cli/help-json-payload.js +2 -2
  8. package/dist/cli/main.js +2 -2
  9. package/dist/cli/runtime/invocation-options.d.ts +3 -1
  10. package/dist/cli/runtime/invocation-options.js +1 -1
  11. package/dist/cli-bundle/bundle-manifest.json +153 -153
  12. package/dist/cli-bundle/chunks/{chunk-OYCCWPBM.js → chunk-2AQKVJMW.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-UT7GRGHY.js → chunk-4DOL43PF.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-GLH2LNRH.js → chunk-5KEPG36D.js} +2 -2
  15. package/dist/cli-bundle/chunks/{chunk-YERBAGQD.js → chunk-D32HVIB2.js} +2 -2
  16. package/dist/cli-bundle/chunks/{chunk-A2G5OG6W.js → chunk-GP6QTYSD.js} +2 -2
  17. package/dist/cli-bundle/chunks/{chunk-CPOWTIIS.js → chunk-OTLIM22J.js} +2 -2
  18. package/dist/cli-bundle/chunks/{chunk-PLNNUAFZ.js → chunk-P75SO5HO.js} +2 -2
  19. package/dist/cli-bundle/chunks/{chunk-PR4UAMI5.js → chunk-PJSQAWWQ.js} +60 -60
  20. package/dist/cli-bundle/chunks/{chunk-VMJLM7P2.js → chunk-S5A2UIRV.js} +2 -2
  21. package/dist/cli-bundle/chunks/{chunk-ZFHJP7YD.js → chunk-SC6JHXFT.js} +31 -29
  22. package/dist/cli-bundle/chunks/{chunk-NBDB3SRC.js → chunk-SEJ53XDN.js} +48 -48
  23. package/dist/cli-bundle/chunks/{chunk-35DME35A.js → chunk-SJI55O65.js} +2 -2
  24. package/dist/cli-bundle/chunks/{chunk-NEUIVBFO.js → chunk-U3QJGJYN.js} +2 -2
  25. package/dist/cli-bundle/chunks/{register-list-query-N6RP6PSP.js → register-list-query-R3ELWWPY.js} +2 -2
  26. package/dist/cli-bundle/chunks/{register-mutation-CY7JGQE6.js → register-mutation-WHXJXIHJ.js} +2 -2
  27. package/dist/cli-bundle/chunks/{register-operations-53HAD3QP.js → register-operations-7ASWBYQG.js} +2 -2
  28. package/dist/cli-bundle/chunks/{register-setup-NVX6374E.js → register-setup-FDRTUG54.js} +2 -2
  29. package/dist/cli-bundle/focused-chunks/{chunk-YZB7IPR6.js → chunk-2O3QFI3G.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/{chunk-Y5Z3XNGY.js → chunk-4A4DO5ZT.js} +2 -2
  31. package/dist/cli-bundle/focused-chunks/{chunk-K7GSZ7YZ.js → chunk-5MC57KRC.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/{chunk-IWLMQLBO.js → chunk-6OXJVE74.js} +17 -17
  33. package/dist/cli-bundle/focused-chunks/{chunk-6IVQPNYN.js → chunk-7URX7FMY.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-5KJXX2TZ.js → chunk-AVP5C674.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-DTLRXY77.js → chunk-AZE7KUHG.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-V7OPZRL6.js → chunk-DZVOCJFY.js} +14 -14
  37. package/dist/cli-bundle/focused-chunks/{chunk-AZA4AEOR.js → chunk-FBIRNSYP.js} +6 -6
  38. package/dist/cli-bundle/focused-chunks/{chunk-A5O3VYWV.js → chunk-IFBA3ZAT.js} +2 -2
  39. package/dist/cli-bundle/focused-chunks/{chunk-ONDNR3VU.js → chunk-K3AIMRIK.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-ZMQTIS3L.js → chunk-KLKKCHWM.js} +2 -2
  41. package/dist/cli-bundle/focused-chunks/{chunk-BRLXKRI2.js → chunk-MRH4A542.js} +4 -4
  42. package/dist/cli-bundle/focused-chunks/{chunk-IJXZQE3D.js → chunk-NXQZMKW5.js} +2 -2
  43. package/dist/cli-bundle/focused-chunks/{chunk-BGWF6CMP.js → chunk-NY6FLQTN.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/{chunk-OVVCXTIE.js → chunk-T4H6Q44B.js} +2 -2
  45. package/dist/cli-bundle/main.js +22 -22
  46. package/dist/cli-bundle/sdk-authoring.js +1 -1
  47. package/dist/cli-bundle/sdk-contracts.js +1 -1
  48. package/dist/cli-bundle/sdk-core.js +22 -21
  49. package/dist/cli-bundle/sdk-governance.js +1 -1
  50. package/dist/cli-bundle/sdk-graph.js +1 -1
  51. package/dist/cli-bundle/sdk-merge.js +28 -28
  52. package/dist/cli-bundle/sdk-query.js +1 -1
  53. package/dist/cli-bundle/sdk-runtime.js +1 -1
  54. package/dist/cli-bundle/sdk-testing.js +1 -1
  55. package/dist/cli-bundle/sdk.js +2 -2
  56. package/dist/core/history/replay.js +1 -1
  57. package/dist/core/output/mutation-projection.js +1 -1
  58. package/dist/core/telemetry/runtime.js +2 -2
  59. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  60. package/dist/sdk/index.d.ts +1 -0
  61. package/dist/sdk/index.js +1 -1
  62. package/dist/sdk/lifecycle/plan-mutation-receipt.d.ts +53 -0
  63. package/dist/sdk/lifecycle/plan-mutation-receipt.js +2 -0
  64. package/dist/sdk/lifecycle/plan.d.ts +3 -0
  65. package/dist/sdk/lifecycle/plan.js +1 -1
  66. package/dist/sdk/linked-artifacts.js +1 -1
  67. package/dist/sdk/public-surface.json +1 -1
  68. package/dist/sdk/runtime/actions.js +1 -1
  69. package/dist/sdk/runtime-input.d.ts +2 -0
  70. package/dist/sdk/runtime-input.js +1 -1
  71. package/dist/sdk/runtime.js +1 -1
  72. package/dist/sdk/similarity-scoring.js +1 -1
  73. package/dist/sdk/telemetry.d.ts +2 -0
  74. package/dist/sdk/telemetry.js +3 -1
  75. package/docs/CLI_GRAMMAR.md +18 -1
  76. package/docs/ECOSYSTEM_PLANNING_REVIEW.md +270 -0
  77. package/docs/README.md +1 -0
  78. package/docs/SDK_EVIDENCE_TRACEABILITY.md +34 -0
  79. package/docs/agent-task-token-baseline.json +28 -2
  80. package/docs/agent-task-transcripts.json +137 -14
  81. package/docs/ecosystem-review-2026-09-28.json +3159 -0
  82. package/marketplace.json +2 -2
  83. package/package.json +1 -1
  84. package/packages/pm-beads/package.json +1 -1
  85. package/packages/pm-calendar/package.json +1 -1
  86. package/packages/pm-command-kit/package.json +1 -1
  87. package/packages/pm-digital-twin/package.json +1 -1
  88. package/packages/pm-governance-audit/package.json +1 -1
  89. package/packages/pm-guide-shell/package.json +1 -1
  90. package/packages/pm-kanban/package.json +1 -1
  91. package/packages/pm-lifecycle-hooks/package.json +1 -1
  92. package/packages/pm-linked-test-adapters/package.json +1 -1
  93. package/packages/pm-search-advanced/package.json +1 -1
  94. package/packages/pm-templates/package.json +1 -1
  95. package/packages/pm-todos/package.json +1 -1
  96. package/packages/pm-vcs/package.json +1 -1
  97. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  98. package/plugins/pm-claude/package.json +2 -2
  99. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  100. package/plugins/pm-codex/package.json +2 -2
  101. package/plugins/pm-codex/plugin.json +1 -1
@@ -0,0 +1,270 @@
1
+ # Ecosystem planning review — 2026-09-28
2
+
3
+ Tracked by [pm-p9a4](../.agents/pm/tasks/pm-p9a4.toon),
4
+ [pm-m08hza](../.agents/pm/decisions/pm-m08hza.toon),
5
+ [pm-1jzupz](../.agents/pm/features/pm-1jzupz.toon), and
6
+ [pm-wg07](../.agents/pm/chores/pm-wg07.toon).
7
+
8
+ Project management = context management. This review records a complete
9
+ structural census, targeted semantic review, measured operational checks, and
10
+ planning decisions on existing canonical items. It does not certify that every
11
+ historical sentence is correct or that every future capability is implemented.
12
+ Read the live item before acting on this dated evidence.
13
+
14
+ ## Population and evidence
15
+
16
+ The strict CLI snapshot at `2026-09-28T05:40:12.139Z` contains 2,826 items:
17
+ 2,532 closed, 221 open, 59 draft, and 14 canceled. No records or fields were
18
+ omitted, and no item or directory was unreadable. Blocking is also a derived
19
+ dependency condition: the initial orientation reported 60 blocked open items,
20
+ although no item used a literal `blocked` lifecycle status.
21
+
22
+ The cursor-resumed event read collected 68,876 complete events from 2,841
23
+ streams through `2026-09-28T05:41:59.143Z`, including deleted-item and workspace
24
+ history. All 23 Plan items also received deep plan reads for steps, decisions,
25
+ validation and resume metadata. This later cutoff includes the first review claim/comment events;
26
+ it is not silently equated with the earlier item snapshot. History-drift
27
+ validation passed across all 2,826 current items. The public SDK independently
28
+ verified hash chains for all 2,841 collected streams with zero failures.
29
+
30
+ [The per-item census](ecosystem-review-2026-09-28.json) records every snapshot
31
+ ID, status, content fingerprint, structural classification, missing planning
32
+ fields, historical evidence gaps, and remediation owner. These are mechanical
33
+ findings, not invented historical estimates, outcomes, or review approvals.
34
+ The full raw corpus stays outside public documentation.
35
+
36
+ | Measure | Initial observation | Interpretation |
37
+ | --- | ---: | --- |
38
+ | Directed graph edges | 14,097 | Deduplicated directed basis |
39
+ | Ordering layers / critical-path edges | 12 / 11 | Acyclic prerequisite graph |
40
+ | Missing graph endpoints / isolated items | 0 / 0 | Across all statuses |
41
+ | Active / terminal outcome-unreachable items | 0 / 0 | Typed reachability basis |
42
+ | Generic `related` edges | 5,589 | 39.65% of directed edges |
43
+ | Specialized semantic edges | 1,885 | Discovery, recurrence, incident, verification, supersession |
44
+ | Items without a specialized semantic edge | 1,463 | 86 active, 1,377 terminal; not necessarily invalid |
45
+ | Legacy hierarchy exceptions | 7 children | Existing informational cardinality/direction findings |
46
+ | Closed items missing structured resolution evidence | 170 | Preserved residual, not a new regression |
47
+ | Active items missing required planning fields | 1 | Sentry major-upgrade item, repaired in this review |
48
+ | Tracked non-tracker artifacts with exact item links | 1,921 / 1,921 | Path ownership, not proof for every code change |
49
+ | Duplicate candidate clusters | 28 | Reviewed candidates, not 28 duplicate obligations |
50
+
51
+ Scanner records with different provider identities, parent/child acceptance
52
+ slices, distinct incidents and dated release executions remain separate. The
53
+ three identically titled accidental probes are already canceled. Similar audit
54
+ titles require their own event/acceptance comparison before any consolidation.
55
+ No existing item was deleted or closed merely because it matched a title.
56
+
57
+ ## Graph organization
58
+
59
+ Use one structural parent and outcome paths for scope, `implements` for delivery,
60
+ `blocked_by` for an actual prerequisite, `discovered_from` for provenance,
61
+ `verifies` for verification responsibility, and `recurs_from` only for an
62
+ established recurring mechanism. Maintain prior evidence when correcting a link.
63
+ A declaration that an item will verify something is not a passing test result.
64
+
65
+ The native reconstruction plan retains its original execution obligations;
66
+ overlapping newly added steps are explicitly superseded by their existing owners,
67
+ and a dated census checkpoint records the completed refresh.
68
+
69
+ The planning pass restores explicit missing prerequisites in prospective
70
+ reminders, cross-branch relevance and external-package verification. The
71
+ historical batch restores three `discovered_from` edges to the governance run
72
+ whose original comment explicitly named the discoveries. Their release and
73
+ closure evidence remain unchanged. Generic links and transitive ordering
74
+ shortcuts are not added to meet density or depth targets.
75
+
76
+ [pm-qnl2](../.agents/pm/tasks/pm-qnl2.toon) owns active enrichment;
77
+ [pm-lnrk](../.agents/pm/tasks/pm-lnrk.toon) owns historical batches;
78
+ [pm-pj2isb](../.agents/pm/chores/pm-pj2isb.toon) owns misleading placeholder
79
+ metadata. The completed [pm-e9zh](../.agents/pm/chores/pm-e9zh.toon) preserves
80
+ its explicitly unrecoverable 170-item residual. A missing historical observation
81
+ must remain unknown until independent evidence is found.
82
+
83
+ After this pass the live graph contains 2,829 items and 14,118 directed edges,
84
+ including 1,894 specialized semantic edges. Generic `related` is 5,590 after one
85
+ reviewed correction from causal provenance to non-causal coordination; no dangling endpoints, isolated items or ordering contradictions were
86
+ introduced. Outcome reachability remains 100%. The 1,458 records without a
87
+ specialized semantic edge remain visible for evidence review; absence alone
88
+ does not justify inventing a relationship.
89
+
90
+ ## Horizon and outcome organization
91
+
92
+ These are planning windows, not delivery promises. Capacity, prerequisites and
93
+ measured evidence govern promotion. Priority measures impact; horizon measures
94
+ readiness and uncertainty. Review monthly and when a material observation changes.
95
+
96
+ | Horizon | Illustrative window | Canonical outcomes and promotion evidence |
97
+ | --- | --- | --- |
98
+ | 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. |
99
+ | 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. |
100
+ | 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. |
101
+ | Exploratory | 36+ months | [Multi-decade continuity](../.agents/pm/milestones/pm-ljrh29.toon) and independently evaluated cognitive mechanisms. Require explicit architecture decisions, migration proofs, calibrated uncertainty and rejection criteria. |
102
+
103
+ The [SDK-complete outcome](../.agents/pm/milestones/pm-9rgaal.toon) and
104
+ [GA stability contract](../.agents/pm/milestones/pm-xp1xsw.toon) retain their own
105
+ acceptance boundaries. Earlier SDK promotion work remains completed history;
106
+ future integrations must use published SDK contracts and expose gaps as individual
107
+ items. New names or parallel roadmap trees do not improve traceability.
108
+
109
+ ## Concrete planning refinements
110
+
111
+ - **Command simplicity:** root help already has thirteen entries including help.
112
+ Evaluate the remaining grammar through complete orient/retrieve/claim/mutate/
113
+ verify/close and recovery journeys. Preserve working aliases and capabilities.
114
+ Count tokens across errors, retries, cursor pages and contract discovery.
115
+ The new [Plan receipt issue](../.agents/pm/issues/pm-hqy7lr.toon) records
116
+ whole-plan output amplification observed during single-step mutations; its
117
+ acceptance requires bounded SDK-owned receipts and preserved full inspection.
118
+ - **Algorithms:** the [existing portfolio](CONTEXT_ALGORITHM_PORTFOLIO.md)
119
+ remains authoritative. Individual items now detail bounded candidate quotas,
120
+ evidence coverage per token, typed spreading activation, activation decay,
121
+ approximate affinity sketches and content-addressed summary trees. Each names
122
+ inputs, costs, fallback, negative controls and a promotion/rejection rule.
123
+ Mathematical guarantees require their assumptions; a heuristic is not a proof.
124
+ - **Scale and branches:** separately measure cold build and warm reads at 3,
125
+ 100,000 and 1,000,000 items, and 1/10/100/1,000 agents. Exercise partitions,
126
+ retries, expired claims, clock skew and arbitrary merge order. Record p50/p95/
127
+ p99, memory, index amplification and no-lost-acknowledged-write evidence.
128
+ - **Recursive improvement:** bind observe, propose, evaluate, land and remeasure
129
+ stages to immutable evidence. Keep the evaluator and held-out data independent
130
+ of the change under evaluation. Rejected proposals stay searchable.
131
+ - **Universal environments:** episodes use SDK reset/observe/step/score contracts,
132
+ seeded snapshots, idempotent actions, independent verdicts and temporal cutoffs.
133
+ Distinguish termination from truncation and prevent future-evidence leakage.
134
+ - **Durability:** append-only API behavior, hash-chain tamper evidence,
135
+ authenticated authorship and externally anchored proof are different guarantees.
136
+ Migration, redaction and cryptographic rotation need explicit restore tests.
137
+
138
+ ## Verified behavior and remaining limits
139
+
140
+ ### Local qwen3 retrieval
141
+
142
+ The project already selects local Ollama `qwen3-embedding:0.6b`. Refresh embedded
143
+ 1,085 stale inputs in 34 requests, with zero retries or splits, at approximately
144
+ 11.91 inputs/second. This proves multi-input batching at the current corpus size;
145
+ it does not prove the outstanding 100k/1M performance acceptance.
146
+
147
+ Five project golden queries were evaluated at k=10:
148
+
149
+ | Mode | Mean nDCG | Mean MRR | Mean recall | Broad history/episode query recall |
150
+ | --- | ---: | ---: | ---: | ---: |
151
+ | Keyword | 0.7451 | 0.80 | 0.8727 | 4/11 |
152
+ | Semantic | 0.7944 | 0.85 | 0.8182 | 1/11 |
153
+ | Hybrid | 0.8405 | 0.90 | 0.8364 | 2/11 |
154
+
155
+ Aggregate passes conceal weak queries. The existing retrieval-quality owner
156
+ [pm-p1g43q](../.agents/pm/features/pm-p1g43q.toon) now carries this observation,
157
+ feasible per-query floors, held-out paraphrase evaluation and mode comparisons.
158
+ At k=10, a query with eleven relevant items cannot attain recall 1. The final
159
+ semantic index check covered all 2,829 current items with zero stale vectors.
160
+
161
+ ### MCP and SDK
162
+
163
+ The official [versioning page](https://modelcontextprotocol.io/docs/2026-07-28/learn/versioning)
164
+ identifies `2026-07-28` as current. The repository
165
+ [conformance matrix](MCP_2026_07_28_CONFORMANCE.md) was compared with the official
166
+ [key changes](https://modelcontextprotocol.io/specification/2026-07-28/changelog).
167
+ The focused SDK, stateless stdio, Streamable HTTP and legacy-handshake run passed
168
+ 145 tests in twelve files. Exact-version public verification also passed direct
169
+ and package-selected npx/bunx CLI dispatch, MCP discovery, Skills, Apps and HTTP,
170
+ including missing-bin negative controls. This is focused conformance evidence, not an assertion
171
+ that every optional extension or every deployment is certified. Deprecated
172
+ features must not be newly advertised merely to increase a feature count.
173
+
174
+ Ordinary review mutations recorded detected Codex identity, model and effort
175
+ without `PM_AUTHOR` or author flags. Role/topic inference carries its source and
176
+ confidence. Missing signals remain unknown; configuration is not native proof.
177
+
178
+ ### Daily release
179
+
180
+ Version `2026.9.28` exists in npm and GitHub. The
181
+ [original automatic attempt](https://github.com/unbraind/pm-cli/actions/runs/36375818142)
182
+ failed after Windows global npm installation failed in the child release run.
183
+ The [same-version recovery](https://github.com/unbraind/pm-cli/actions/runs/36380136948)
184
+ passed npm, global npm and Bun on Linux, macOS and Windows and advertised the
185
+ existing version. It did not create a second automatic version that day.
186
+
187
+ The new [installer-diagnostics issue](../.agents/pm/issues/pm-q7c36n.toon)
188
+ records why the original cause remains unknown: the subprocess wrapper discards
189
+ error/signal details and the installer labels every retry registry availability.
190
+ Recovery proves the artifact can pass; it does not erase the failed attempt or
191
+ establish its cause. Keep automatic reliability, publication and consumer
192
+ acceptance as separate measurements.
193
+
194
+ ## Prevention and repeatability
195
+
196
+ Six active-only zero-debt assertions now join `tracker-context-quality` for
197
+ missing description, acceptance criteria, risk, confidence, estimate and expected
198
+ result. The existing local and hosted quality pipeline invokes this same native
199
+ SDK gate. Terminal evidence gaps are deliberately outside the active-only policy.
200
+ An isolated temporary workspace failed all six assertions with missing fields
201
+ and passed all six after repair. This checks presence; semantic quality still
202
+ requires evidence review.
203
+
204
+ For repeat reviews, follow the
205
+ [ecosystem planning skill](../.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md).
206
+ Use complete CLI snapshots outside the prompt, cursor-resumed event streams,
207
+ exact source fingerprints, all-status duplicate checks and bounded mutation
208
+ batches. At million-item scale, use streaming/indexed consumers rather than
209
+ loading a whole JSON collection into the agent's context. Every changed item
210
+ retains its canonical owner, history and original acceptance boundary.
211
+
212
+ ## Verification record
213
+
214
+ Quiescent validation passed for all 2,829 final items. The 170 historical
215
+ structured-evidence warnings are unchanged. All 38 changed history streams pass
216
+ the public SDK chain verifier; the 35 pre-existing streams retain byte-identical
217
+ historical prefixes. The three enriched closed features retain identical status,
218
+ closure, resolution and release fields. Final graph-composition and all 47
219
+ tracker-context-quality assertions pass, including the six new readiness rules.
220
+
221
+ An earlier long-running context gate saw one history-drift failure while this
222
+ review was still mutating the tracker. Independent validation and the final gate
223
+ pass with writes stopped; the earlier result is retained as a concurrent-read
224
+ observation, not rewritten as success. Skill/document validation, local links
225
+ and the generated changelog check also pass. All review claims are released. Three distinct issues were added after duplicate
226
+ checks: installer diagnostics, Plan mutation receipts and startup admission
227
+ diagnosis. Existing programmes retain their original acceptance boundaries.
228
+
229
+ The broad static run passed its build, lint, generated contracts, SDK parity,
230
+ command grammar, task-token, MCP deprecation, gate-registry and context-quality
231
+ checks, then failed the import-cost timing gate (bare Node median 305 ms against
232
+ 106 ms). An isolated rerun passed all ten SDK entrypoints with unchanged budgets.
233
+ The initial timing failure remains part of the evidence; it is not a continuous
234
+ all-green static invocation.
235
+
236
+ The remaining graph and record-integrity gates passed. The mutation gate passed
237
+ with 323 of 330 mutants killed and seven classified as equivalent. The CLI
238
+ transport benchmark initially exceeded its list threshold (442 ms versus 419 ms);
239
+ the isolated rerun also failed: get 385/362 ms, context 466/433 ms, next
240
+ 457/440 ms and create 424/398 ms. No performance limit was raised. The new
241
+ [startup investigation](../.agents/pm/issues/pm-bj7rq0.toon) distinguishes runner
242
+ qualification from a demonstrated product regression and preserves the completed
243
+ transport-floor implementation. This is an unresolved validation limitation.
244
+
245
+ ## PR review corrections
246
+
247
+ PR #1333 identified two overly broad relationship claims. The standing release
248
+ reminder predates the new installer-diagnostics issue, so their link is `related`
249
+ coordination rather than `discovered_from` provenance. Four `verifies` rows from
250
+ the historical batch were removed: checking citations, history continuity and
251
+ release attribution does not verify the source run or feature behavior. The three
252
+ source-backed discovery links on closed features remain valid and unchanged.
253
+
254
+ The original writes and their corrections remain in immutable history. Five
255
+ holder/target/text-scoped citation exemptions distinguish the batch inventory
256
+ from verification claims without raising the prose-edge ceiling. The corrected
257
+ graph-composition gate passes.
258
+
259
+ The follow-up review narrowed those five exemptions to the complete original
260
+ paragraphs, including their historical source-event coordinates. In an isolated
261
+ temporary tracker the original citations pass, while a later batch comment
262
+ asserting an unrecorded prerequisite is blocked with one detected gap. This
263
+ prevents the common phrase “Historical batch” from exempting future claims.
264
+
265
+ Annotation review corrected 26 notes and five comments that contained literal
266
+ JSON wrappers around prose. Supported note/comment edits retain the exact inner
267
+ text and append correction events. Per-item rereads confirm lifecycle, closure,
268
+ release, expected and actual fields are unchanged; original annotations remain
269
+ in the history streams. Planning guidance now distinguishes plain-text input
270
+ from intentional JSON events.
package/docs/README.md CHANGED
@@ -59,6 +59,7 @@ pm guide release --json
59
59
  - [Context Relevance and Packing](CONTEXT_RELEVANCE.md) - shared CLI/SDK signals, derived-store provenance, ranking explanations, and token budgets.
60
60
  - [Next-work Selection Budgets](NEXT_SELECTION_BUDGETS.md) - bounded executable recommendations, omission receipts, and graded 10k/100k context verification.
61
61
  - [Context Algorithm Portfolio](CONTEXT_ALGORITHM_PORTFOLIO.md) - stable proposal slugs, historical aliases, individual owners, cognitive compositions, and experiment gates.
62
+ - [Ecosystem Planning Review](ECOSYSTEM_PLANNING_REVIEW.md) - dated all-status census, canonical horizons, operational evidence, and active-readiness gates.
62
63
  - [Output Projection and Omission Contracts](OUTPUT_PROJECTION_CONTRACTS.md) - explicit withheld-field receipts, mode-paired row keys, and completion resolver outcomes.
63
64
  - [Output Token Accounting](OUTPUT_TOKEN_ACCOUNTING.md) - opt-in CLI/MCP byte attribution, bounded receipt overhead, and release-level tokens-per-task baselines.
64
65
  - [SDK Context Platform](SDK_CONTEXT.md) - task-oriented entry point for authoritative reads, ranking, package workflows, diagnostics, recovery, and verification.
@@ -103,12 +103,46 @@ Replacement requires at least one corresponding `--file` or `--doc` value and ca
103
103
 
104
104
  Repeating an already-present `pm files --add` or `pm docs --add` batch is a true no-op: `changed` is false, the item file is not rewritten, and append-only history receives no synthetic mutation entry.
105
105
 
106
+ An explicit non-empty replacement note updates the existing path/scope entry
107
+ atomically. A bare-path retry preserves its note; a different scope identifies
108
+ a separate link. The same rule applies to glob additions and standalone
109
+ `--note`. Migration collisions first retain the established last matching
110
+ entry; an explicit note revision then applies to that surviving identity.
111
+ This fixes [pm-zqxlfs](../.agents/pm/issues/pm-zqxlfs.toon):
112
+
113
+ ```bash
114
+ pm files <id> --add path=src/new.ts,note="verified current implementation"
115
+ pm docs <id> --add docs/new.md --note "verified current contract"
116
+ ```
117
+
106
118
  Audited history redaction participates in the same projection transaction as
107
119
  ordinary item mutation. After rewriting an item and its history stream, pm
108
120
  invalidates drift verification state and incrementally refreshes the metadata
109
121
  index before releasing the derived-index lock. A warmed index therefore cannot
110
122
  pair pre-redaction item content with post-redaction history during validation.
111
123
 
124
+ ## Compact Plan mutation receipts
125
+
126
+ Tracked by [pm-hqy7lr](../.agents/pm/issues/pm-hqy7lr.toon).
127
+ CLI and MCP Plan mutations return identity, action, step identity when available,
128
+ complete step counts, materialization/skip/warning counts, and an inspection
129
+ command. They omit bodies, resume context, and unrelated steps, so a single-step
130
+ update does not grow with the Plan. `pm plan show <id> --depth deep` retrieves
131
+ the complete current Plan without repeating a mutation. The omission receipt
132
+ explicitly distinguishes this acknowledgement from a full read.
133
+ Local CLI/SDK recovery commands include the resolved `--pm-path`, safely quoted,
134
+ so they inspect the same tracker even with a non-default root. MCP receipts
135
+ omit the server-resolved filesystem root in both compact and full output.
136
+ For MCP recovery, call `pm_plan` with `subcommand: "show"`, `depth: "deep"`,
137
+ the receipt ID, and the original request's workspace selection (`path` or `cwd`).
138
+
139
+ SDK `runPlan` retains its full typed result and adds `mutation_receipt` for
140
+ consumers that need a compact acknowledgement. Existing full transport output
141
+ is available with CLI `--full-changed-fields` or MCP `fullChangedFields: true`.
142
+ The named `PlanMutationReceipt` type is exported from `@unbrained/pm-cli/sdk`.
143
+ CLI `--no-changed-fields` also selects a compact Plan receipt.
144
+ Read-only `plan show` retains its existing projection behavior.
145
+
112
146
  ## Operational receipts
113
147
 
114
148
  Linked tests recognize compound acquisition failures such as “could not acquire … lock” together with contention context such as “already running” or “held by another” as `infra_collision`. Generic assertion text mentioning a lock or timeout remains `assertion_failure`, preventing false infrastructure classifications. A command refused by clone-local provenance policy is classified separately as `trust_refusal`, so reports do not misstate a pre-execution safety decision as an assertion failure.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 4,
3
3
  "transcript_version": 2,
4
- "transcript_digest": "sha256:b8a6aea318c41e6a40dbcaf8094da8397ca747515a7df249d35c1f21ad94a307",
4
+ "transcript_digest": "sha256:6d4041acfaa4075dde1972d6127a74f18916f7661738b4f5d5fd47a61c179a78",
5
5
  "estimator": "ceil(utf8_bytes / 4)",
6
6
  "measurement_scope": "output_before_token_accounting",
7
7
  "published_with_release": true,
@@ -259,7 +259,33 @@
259
259
  "accounting_mode": "self_reported"
260
260
  }
261
261
  ]
262
+ },
263
+ {
264
+ "id": "plan-execution-mutations",
265
+ "max_estimated_tokens": 848,
266
+ "steps": [
267
+ {
268
+ "id": "create-plan",
269
+ "max_estimated_tokens": 21,
270
+ "accounting_mode": "self_reported"
271
+ },
272
+ {
273
+ "id": "add-step",
274
+ "max_estimated_tokens": 275,
275
+ "accounting_mode": "self_reported"
276
+ },
277
+ {
278
+ "id": "complete-step",
279
+ "max_estimated_tokens": 274,
280
+ "accounting_mode": "self_reported"
281
+ },
282
+ {
283
+ "id": "inspect-plan",
284
+ "max_estimated_tokens": 278,
285
+ "accounting_mode": "self_reported"
286
+ }
287
+ ]
262
288
  }
263
289
  ],
264
- "composite_max_estimated_tokens": 13034
290
+ "composite_max_estimated_tokens": 13882
265
291
  }
@@ -17,13 +17,22 @@
17
17
  ],
18
18
  "capability_evidence": {
19
19
  "workspace_state": [
20
- { "step_id": "context", "field_path": "summary.active_items" }
20
+ {
21
+ "step_id": "context",
22
+ "field_path": "summary.active_items"
23
+ }
21
24
  ],
22
25
  "active_ownership": [
23
- { "step_id": "context", "field_path": "activity" }
26
+ {
27
+ "step_id": "context",
28
+ "field_path": "activity"
29
+ }
24
30
  ],
25
31
  "actionable_work": [
26
- { "step_id": "context", "field_path": "hierarchy" }
32
+ {
33
+ "step_id": "context",
34
+ "field_path": "hierarchy"
35
+ }
27
36
  ]
28
37
  }
29
38
  },
@@ -36,13 +45,22 @@
36
45
  ],
37
46
  "capability_evidence": {
38
47
  "workspace_state": [
39
- { "step_id": "next", "field_path": "summary.in_progress" }
48
+ {
49
+ "step_id": "next",
50
+ "field_path": "summary.in_progress"
51
+ }
40
52
  ],
41
53
  "active_ownership": [
42
- { "step_id": "next", "field_path": "held_by_others" }
54
+ {
55
+ "step_id": "next",
56
+ "field_path": "held_by_others"
57
+ }
43
58
  ],
44
59
  "actionable_work": [
45
- { "step_id": "next", "field_path": "recommended.id" }
60
+ {
61
+ "step_id": "next",
62
+ "field_path": "recommended.id"
63
+ }
46
64
  ]
47
65
  }
48
66
  },
@@ -55,12 +73,23 @@
55
73
  ],
56
74
  "capability_evidence": {
57
75
  "workspace_state": [
58
- { "step_id": "context", "field_path": "summary.active_items" }
76
+ {
77
+ "step_id": "context",
78
+ "field_path": "summary.active_items"
79
+ }
59
80
  ],
60
81
  "active_ownership": [
61
- { "step_id": "in-progress", "field_path": "items" }
82
+ {
83
+ "step_id": "in-progress",
84
+ "field_path": "items"
85
+ }
62
86
  ],
63
- "actionable_work": [{ "step_id": "open", "field_path": "items" }]
87
+ "actionable_work": [
88
+ {
89
+ "step_id": "open",
90
+ "field_path": "items"
91
+ }
92
+ ]
64
93
  }
65
94
  }
66
95
  ]
@@ -186,7 +215,9 @@
186
215
  "expected_accounting_mode": "self_reported",
187
216
  "required_fields": ["code", "refusal", "recovery"],
188
217
  "expected_error_code": "unknown_context_intent",
189
- "expected_field_values": { "recovery.recovery_mode": "compact" },
218
+ "expected_field_values": {
219
+ "recovery.recovery_mode": "compact"
220
+ },
190
221
  "expected_refusal_surface": "--for"
191
222
  },
192
223
  {
@@ -266,7 +297,9 @@
266
297
  "expected_output_kind": "entity",
267
298
  "expected_accounting_mode": "self_reported",
268
299
  "required_fields": ["item.id", "item.status"],
269
- "expected_field_values": { "item.status": "open" }
300
+ "expected_field_values": {
301
+ "item.status": "open"
302
+ }
270
303
  },
271
304
  {
272
305
  "id": "close",
@@ -283,7 +316,9 @@
283
316
  "expected_output_kind": "entity",
284
317
  "expected_accounting_mode": "self_reported",
285
318
  "required_fields": ["item.id", "item.status"],
286
- "expected_field_values": { "item.status": "closed" }
319
+ "expected_field_values": {
320
+ "item.status": "closed"
321
+ }
287
322
  }
288
323
  ]
289
324
  },
@@ -329,7 +364,9 @@
329
364
  "expected_output_kind": "collection",
330
365
  "expected_accounting_mode": "self_reported",
331
366
  "required_fields": ["rows", "outcome", "exit_code"],
332
- "expected_field_values": { "outcome": "partial_effect" }
367
+ "expected_field_values": {
368
+ "outcome": "partial_effect"
369
+ }
333
370
  },
334
371
  {
335
372
  "id": "no-effect",
@@ -347,7 +384,93 @@
347
384
  "expected_output_kind": "collection",
348
385
  "expected_accounting_mode": "self_reported",
349
386
  "required_fields": ["rows", "outcome", "exit_code"],
350
- "expected_field_values": { "outcome": "no_effect" }
387
+ "expected_field_values": {
388
+ "outcome": "no_effect"
389
+ }
390
+ }
391
+ ]
392
+ },
393
+ {
394
+ "id": "plan-execution-mutations",
395
+ "description": "Create a Plan, add and complete a step, then inspect its durable evidence without echoing the full Plan on each mutation.",
396
+ "steps": [
397
+ {
398
+ "id": "create-plan",
399
+ "args": [
400
+ "create",
401
+ "--id",
402
+ "pm-transcript-plan",
403
+ "--type",
404
+ "Plan",
405
+ "--title",
406
+ "Transcript execution Plan",
407
+ "--create-mode",
408
+ "progressive"
409
+ ],
410
+ "expected_exit_code": 0,
411
+ "expected_output_kind": "mutation_receipt",
412
+ "expected_accounting_mode": "self_reported",
413
+ "required_fields": ["id", "status"]
414
+ },
415
+ {
416
+ "id": "add-step",
417
+ "args": [
418
+ "plan",
419
+ "add-step",
420
+ "pm-transcript-plan",
421
+ "--step-title",
422
+ "Verify result",
423
+ "--step-body",
424
+ "Durable execution context retained for later inspection."
425
+ ],
426
+ "expected_exit_code": 0,
427
+ "expected_output_kind": "diagnostic",
428
+ "expected_accounting_mode": "self_reported",
429
+ "required_fields": [
430
+ "id",
431
+ "step.id",
432
+ "steps_summary.total",
433
+ "inspection_command"
434
+ ],
435
+ "expected_field_values": {
436
+ "kind": "plan_mutation",
437
+ "steps_summary.total": 1
438
+ }
439
+ },
440
+ {
441
+ "id": "complete-step",
442
+ "args": [
443
+ "plan",
444
+ "complete-step",
445
+ "pm-transcript-plan",
446
+ "plan-step-001",
447
+ "--step-evidence",
448
+ "Verified result"
449
+ ],
450
+ "expected_exit_code": 0,
451
+ "expected_output_kind": "diagnostic",
452
+ "expected_accounting_mode": "self_reported",
453
+ "required_fields": [
454
+ "id",
455
+ "step.status",
456
+ "steps_summary.completed",
457
+ "omission_receipt"
458
+ ],
459
+ "expected_field_values": {
460
+ "step.status": "completed",
461
+ "steps_summary.completed": 1
462
+ }
463
+ },
464
+ {
465
+ "id": "inspect-plan",
466
+ "args": ["plan", "show", "pm-transcript-plan", "--depth", "deep"],
467
+ "expected_exit_code": 0,
468
+ "expected_output_kind": "diagnostic",
469
+ "expected_accounting_mode": "self_reported",
470
+ "required_fields": ["plan.steps", "plan.steps_summary.completed"],
471
+ "expected_field_values": {
472
+ "plan.steps_summary.completed": 1
473
+ }
351
474
  }
352
475
  ]
353
476
  }