Added
- Assurance presets and self-derivation: a new workspace acquires a working quality contract in one command, seeded from its own record rather than from a generic template elemento pm-m7bb7r
- Measurement provider API: extensions contribute measurement sources, so a coverage percentage, a benchmark millisecond, an eval score, an RL episode reward, or a registry dist-tag is bounded on the same terms as an item count elemento pm-uhv1m5
Fixed
- The relationship graph's only automated reader is a nine-field census with no structural property, so the deepest enforceable statement about an 11,291-edge record is that every active item has two edges elemento pm-4vz6mz
- The measurement ratchet has a single polarity: a filed number can only be enforced as a ceiling, so no quality floor this project wants to hold is expressible elemento pm-g4k74y
- Telemetry flush reliability: configurable cold-connect timeout without foreground blocking elemento pm-pmwozm
- The real all-package install is budgeted in one of its two instances, so the coverage gate flakes and then reports no coverage verdict at all elemento pm-h9gsix
- Absence-tolerant readers accept only ENOENT, so a tracker root that is a regular file raises an unclassified fault instead of the typed refusal the guard already owns — and that fault blocks the daily release elemento pm-6xlyss
- Mixed linked-resource remove and add in one command silently favors removal elemento pm-c6urop
- Global flags before a subcommand corrupt guided-error command examples by treating the flag value as the command elemento pm-lph0y6
Other
- ADR: Lifecycle-sensitive graph partitions are advisory; stable all-status outcomes carry blocking assurance elemento pm-dczodv
- The Windows nightly leg cannot separate product defects from harness noise: 744 hardcoded POSIX path literals and 203 raw errno strings in the suite fail on Windows for reasons unrelated to pm behaviour elemento pm-j668gl
Fixed
- Read-output session receipts can emit an invalid next_state after the served-item set crosses its own 10,000-ID input ceiling elemento pm-b0v8fs
- Linked pm test children inherit production Sentry environment and turn sandbox failures into release-blocking incidents elemento pm-9aaji6
- SDK entrypoint import-cost gate false-fails on cold filesystem cache: single-shot fresh-process sampling exceeds the 30ms noise margin elemento pm-cg1sjb
- Legacy invalid provenance findings block health without a safe disposition path elemento pm-5q8wa0
- History drift scan hashes reordered linked-test projections elemento pm-eax4y8
- Linked-test removal must be lossless and observable for commands containing comma or equals delimiters elemento pm-m0b7h8
- Annotation transposition recovery: detect pm <collection\> add <id\> before the item id is consumed as text elemento pm-rncuf7
- Health result contract parity: every checks\[\] row exposes a boolean ok beside its tri-state status elemento pm-h97qxd
- The relationship ratchet bounds every edge kind that carries meaning and leaves the one kind that carries none unbounded, so the cheapest way to satisfy every graph guarantee is to add edges no algorithm can traverse elemento pm-q6n8sj
- Assurance registry mutations and gate verdicts record author unknown while carrying the full detected provenance in the same entry, so the audit artifact fails the question it exists to answer elemento pm-33mjrw
- Two assurance measurement sources answer from a projection that omits the fields they read, so a completeness gate reports zero missing evidence on a workspace with 874 items lacking it elemento pm-py7qv2
- Assurance mutation refusals cross the CLI as unclassified Sentry faults (PM-CLI-2Y/2Z/30) elemento pm-v0a0un
- GH-976: version history hashes so repeated tests_add streams verify across supported pm versions elemento pm-2htk4p
- GH-975: export isAlreadyClaimedError through a supported SDK subpath elemento pm-hfqju5
- GH-974: merge receipt preferred contradicts retained side under stable_value_order elemento pm-qckpnq
- GH-971: health preflight collision diagnostics ignore declared command ownership elemento pm-zryb9d
- GH-969: brief item reads can exceed standard output because omission receipts bill empty fields elemento pm-gok2km
- GH-970: repeated row contracts consume half of agent read output without a suppression contract elemento pm-gjjurs
- The output encoding named toon has no tabular array form, so every row collection pays three to five lines per row while the storage format beside it uses the encoding correctly elemento pm-5y05kq
- pm activity answers what happened to one item in the last half hour when the agent asked what changed in the workspace: 20 rows cover 5 of the 272 items touched in 24 hours and none carries a title elemento pm-j1r8gl
- pm stats default output is dominated by rows that carry no information: 7 of 17 type buckets are zero, the status split agents actually need is missing, and the row contract costs more than the data elemento pm-7nqo6b
Added
- pm gate: named assertion bundles bound to lifecycle triggers, returning one structured verdict document instead of prose, so local and hosted enforcement run identical semantics elemento pm-wn6wot
- Assurance verdicts are appended to the immutable record, so what was enforced when, and who relaxed a bound, is replayable and provable rather than reconstructed from CI logs elemento pm-91xeam
- pm assert: a bound over a measurement carrying polarity, scope, lifetime, enforcement level, and a required negative control, so every guarantee states which direction it can fail in elemento pm-lyfu7b
- pm measure: a named population over the workspace declared as data, with a composable source vocabulary and derived arithmetic so a bound can be denominated in the unit it actually means elemento pm-2lex4r
- Refusal reachability: every error code declares the states it owns, and an entrypoint-level probe proves each state is still reachable as that typed code rather than as an untyped fault elemento pm-elmpav
- Source-to-item traceability: derive which tracked work produced any given file or line, so an agent can ask why this code exists and get an evidence-backed answer elemento pm-f86lth
- Automatic semantic session attribution: infer bounded topic and role from claimed work and harness context without per-call identity flags elemento pm-3zgh2c
Fixed
- Unknown-option recovery names three of six commands that accept the flag, capped silently and in arbitrary order, so the hint excludes the right answer while reading as exhaustive elemento pm-yqe0mo
- Subcommand-token error contract: one unknown-subcommand code with nearest-match recovery across every subcommand family elemento pm-185870
Added
- GH-472: create error for missing required custom fields lists the field names elemento pm-4bzq
- Provenance records distinguish unavailable configuration from resolver failures elemento pm-lu6sca
Fixed
- GH-959 recurrence: snapshot restore planning races lease-expiry fixture cleanup elemento pm-usq49n
- GH-960: structured diagnostic notices preserve machine-readable JSON envelopes elemento pm-embm6t
- GH-956: lossless acceptance-criteria replacement and unmatched-removal failure contract elemento pm-lppm6y
- GH-954: fail-fast dependency target validation with explicit forward-reference intent elemento pm-x3dq0l
- Preserve executable recovery semantics across terminators, nested aliases, and tracker scope elemento pm-szn67i
- Measure source replication against an independently discovered denominator elemento pm-b84irw
- GH-515: pm test --add reorders linked tests — --only-last can execute a non-newest command elemento pm-x2vx
- GH-490: unknown-command suggester ranks substring hits over synonyms/edit distance — pm log suggests 'extension catalog' elemento pm-g543
- GH-441: type-aware create help mislabels applicable flags as required (ignores create-mode) elemento pm-qmjx
- GH-519: close recovery bundle suggests --validate-close "<value\>" for an enum flag and hides the real resolution-fields blocker elemento pm-ulqu
- GH-950: item-addressing commands reject a consistent --id alias and misroute recovery elemento pm-mkinft
- GH-951: required-field policy can force fabricated relationship edges elemento pm-st7wgu
- GH-953: close recovery suggested_retry is not executable and drops supplied flags elemento pm-p316vn
- A sandboxed fixture records provenance from the host harness environment, so the suite is green on CI and deterministically red for any agent running it locally elemento pm-xgah3a
- The session-role dimension is wired to a boolean child-session flag, so every nested claude-code invocation records the role literally as "1" and fleet analytics will group real work under a meaningless label elemento pm-eq9dlw
- GH-921/GH-922: merge-decision receipts are not durable in fresh-clone CI elemento pm-1j5j21
- GH-948: version-skewed pm invocations silently rewrite the tracked merge fence during unrelated commands elemento pm-l56d0o
- A measurement ratchet bound stops enforcing the moment its owner reaches a terminal status, so every guarded population goes unbounded exactly when its fix ships elemento pm-5z9plz
- The docs tree grows one file per shipped contract, so 39 of 51 documents are stubs and the SDK's story is split across twelve files elemento pm-9hv1o7
- The status-token normalization rule is replicated at five sites and the replication gate covers none of them elemento pm-ulxdqp
- The two slowest governance commands load every item body while twenty other SDK modules use the light read path elemento pm-sr3xzg
- GH-946: context signal-store staleness warning has no executable remediation contract elemento pm-wn1jy1
- GH-943: health remediation points at validate while actionable unknown-author recovery remains undiscoverable elemento pm-jwmszf
- GH-942: expose the lightweight all-item metadata reader through the public SDK elemento pm-yrj7qr
- GH-941: pm read omits notes without declaring their omission and invites duplicate writes elemento pm-swfelk
Other
- Refresh pinned GitHub Actions for PR \#958 with exact-head compatibility proof elemento pm-obh6lo
- The measurement ratchet floors only aggregate graph totals, so converting typed semantic edges to untyped ones passes every declaration elemento pm-70jyvw
Fixed
- The release gate cannot classify Sentry events emitted before its own contract producer shipped, so a correct usage refusal from an older release blocks the daily cut for the whole rolling window and clears only by hand elemento pm-h75tjh
- Entity projections carry a collection key only when it is non-empty, so an absent key cannot be distinguished from an unprojected one and neither projection level is a superset of the other elemento pm-b1w8vr
- Ordering recorded as blocks is invisible to actionability: the same prerequisite schedules differently depending on which endpoint wrote it elemento pm-jkbqt8
- Dependency-kind lexicon: fifteen accepted spellings for roughly eight relations, canonicalized inconsistently at write time, so the stored graph vocabulary keeps fragmenting elemento pm-4020c5
- GH-930: duplicates --status all silently scans zero items elemento pm-sy24w2
- GH-920: health conflates lossless merge receipts with discarded-value decisions elemento pm-jtwsct
- GH-937: package list exposes alias rows as packages and overstates the catalog total elemento pm-fr6u17
- Post-merge guidance names history-repair, which clears drift but never settles the merge receipt, so every merged item leaves a permanent merge_decisions_unreviewed warning elemento pm-lwmstb
- GH-925: package manage diagnostics reject universal read-output controls elemento pm-479ggz
- Surface replication gate activates unrelated sets through shared required members elemento pm-kmnvug
- GH-924: closed completed plans still recommend pm close elemento pm-ltlcsw
- Merge direction decides which agent's value survives: the same two branches converge to different item state depending on which side merges, and nothing reports the divergence elemento pm-dlx7v7
- GH-931: linked-test detector misclassifies unrelated node dist/cli.js commands as pm elemento pm-u3o3ur
- Release candidate acceptance hard-codes the pre-bump CLI version and blocks the daily cut elemento pm-7ipajv
Added
- The CLI has 195 error codes and contracts none of them: the surface agents read when they are wrong is the only one with no enumeration, no stability promise, and no gate elemento pm-x4nn3z
Fixed
- PR \#935 review remediation: executable gate registry and fail-closed runtime context parsing elemento pm-n41vay
- GH-926: warn before a stale pm binary mutates a project pinned to a newer CLI/SDK elemento pm-1eted6
- PR \#935 CI: preserve dependency-free fast-version startup and regenerate runtime contracts elemento pm-dskxwf
- Make stale-runtime compatibility classification action-aware across mixed CLI commands elemento pm-zjelve
- CLI and SDK refusal contracts now preserve consistent codes and recovery semantics elemento pm-0xmajx
- Sentry exception capture never writes the pm.error_code and pm.exit_code tags the release gate reads, so every unexpected runtime error is unclassifiable by construction and blocks the daily cut for the full rolling window elemento pm-qxo5iu
- Sentry PM-CLI-2S: resource-exhausted copy reports a high handled error without actionable storage guidance elemento pm-4odf0c
- Sentry PM-CLI-2Q: expected snapshot-name validation is captured as a high production error elemento pm-qyg51h
- The release gate classifies production errors by message prose and reads none of the 236 error codes the product declares, so every waiver is a latent re-block and a broad substring is a silent waiver elemento pm-dqtzva
- The mandatory command-wiring replication set is enforced only by a prose checklist, and the census shows partial application is the single largest recurring defect class in the record elemento pm-7rrqsk
- pm get silently discards --output-include field names because entity reads bind the flag to sections while collection reads bind it to fields, and the omission receipt reports no omissions either way elemento pm-0k19l7
- GH-919: \_workspace author-attribution coordinates cannot be acknowledged elemento pm-ety1qc
- pm comments write response replays the entire accumulated history, so one append can emit hundreds of comments elemento pm-9stazf
- GH-457: pm health hangs during vectorization check with no output (never-block violation) elemento pm-tu71
Security
- GHSA-2v37-7h3g-55p8: pin patched nanoid in the Vite/PostCSS development graph elemento pm-5dwz1a
- GH-933: nested PM writes in non-PM linked tests can mutate the source project elemento pm-alhqbz
Other
- One governed verification plan now drives local preflight and maps hosted release gates elemento pm-ei6x66
- Every command declares its exit-code set, and the code distinguishes applied from applied-to-nothing elemento pm-hqa8g1
- Floor polarity for the tracker measurement ratchet, with graph edge and node floors declared elemento pm-z0cfor
- Refresh tsx to 4.23.11 with full release-gate proof elemento pm-nw1y14
Added
- Caller-carried output sessions compose token budgets across reads and suppress repeated item facts elemento pm-hid9g1
- Fleet attribution analytics: per-harness and per-model throughput, rework, and defect-escape rates derived from immutable history alone elemento pm-gw6uyq
- Improvement ledger: measured properties of pm carry a recorded time series, because a ceiling proves a number did not grow and can never prove a change made it smaller elemento pm-chahyq
Fixed
- Nested pm test coverage changes repository-root fixtures because outer PM_PATH sandboxing leaks into package-owned run-tests elemento pm-ay3l0p
- Read surfaces have no common row contract: field projection reaches 4 of 11 commands and the row collection sits under a different key on each, so no single shell or jq expression works across pm elemento pm-sb0tns
- Sentry PM-CLI-2W: rejected unknown-author acknowledgments are emitted as high production errors elemento pm-c3uru0
- Expose live bounded provenance coverage over immutable history elemento pm-1wiugq
- GH-915: Windows nightly Vite import portability and shared contract-fixture isolation regressions elemento pm-ssd7vv
- GH-914: macOS extension source identity compares non-canonical /var and /private/var paths elemento pm-eu46an
- The coverage gate every contributor is told to run is not a gate: run-tests.mjs coverage prints the shortfall and exits 0, so only CI can fail on coverage elemento pm-2qqcgl
- The one projection that promises completeness is the one that loses data: pm contracts --full drops all 76 structured command summaries, returns 160 bare name strings, and reports has_omissions false elemento pm-x0iv17
- GH-910: keep extension assets outside item merge-driver patterns elemento pm-t9qbmp
- GH-911: preserve runtime dependency resolution in post-install activation probes elemento pm-pg9599
- GH-912 regression: restore atomic cross-owner seeded Plan creation elemento pm-hxuqsa
Other
- Refresh compatible tooling dependencies: tsx 4.23.8 and pm-changelog 2026.8.6 elemento pm-l9fv1e
Fixed
- GH-909: executable extension migration application and remediation contract elemento pm-ig5cfe
- GH-908: explicit package-source identity and bare-name ambiguity diagnostics elemento pm-495lkc
- GH-907: preflight override ownership and statically disjoint command scopes elemento pm-miy5k6
- Release ratchet verdicts are a property of the working copy, not the commit: gitignored installs and clone-local git config decide three populations, so an identical commit passes locally and fails in CI elemento pm-fr4dg8
- Exact-tag Release recovery must bootstrap tracker gates and publish an unpublished immutable tag from its tagged source elemento pm-lwnifd
Other
- Refresh compatible 2026-08-05 TypeScript-ESLint and Unicorn quality tooling elemento pm-7gxbl8
Fixed
- GH-896: heterogeneous atomic specification batches need batch-local references and one discoverable SDK-first CLI path elemento pm-o8z748
- Completion is decomposed while creation is composed: create takes nine inline evidence flags, close takes none, so the prescribed finish protocol is seven invocations and seven unrelated history entries elemento pm-cyn0y6
- Reindex coverage test leaks semantic refresh HTTP beyond its mock lifetime elemento pm-cflhoj
- Sentry PM-CLI-2V: pm init surfaces raw EACCES when the managed workspace .gitignore cannot be written elemento pm-3gh457
- Filed defect populations grow after they are measured and nothing turns a tracker measurement into a ceiling: the maintenance passes that record the count are the writer that widens it elemento pm-ips23h
- Tracker-only PM governance commits cannot satisfy required CI without changing the generated changelog elemento pm-2x5x83
- GH-891: external blockers make graph stale_lifecycle_block impossible to resolve truthfully elemento pm-6sc8jq
- GH-889: merge-conflict recovery guidance hides the durable discarded-value report elemento pm-fbrz7p
- GH-890: extension collision diagnostics omit the effective winner and cannot distinguish safe scoped overlap elemento pm-6mjxgq
- GH-885: create-time close_reason_required recovery recommends an impossible different-command retry elemento pm-5uclvd
- GH-887: terminal create contract is non-atomic and inconsistent across importer-facing closure metadata elemento pm-ykdt4m
Security
- 2026-08-04 holistic pm CLI, SDK, and ecosystem manual review and optimization plan elemento pm-gzyt2j
Other
- Auto Release fresh clones build the CLI and install merge drivers before tracker gates elemento pm-xvccnm
- Tracker data-quality ratchet in CI: pm validate and pm health run against this repository's own workspace with a shrinking-only per-warning baseline elemento pm-kpftft
- Eliminate July static-analysis nullability, dead-code, and redundant-allocation findings elemento pm-cp5pbo
Added
- GH-471: pm context includes an installed package/extension health summary elemento pm-h85e
- Static contribution manifest: persist the install-time contribution inventory so the command registry is built from data and extension modules import only when a contribution is actually invoked elemento pm-021kdp
Fixed
- Uniform multi-value filter-value grammar: --status accepts CSV but --type/--priority fail fast and --tag silently matches the literal CSV string elemento pm-gknu
- list applies an undisclosed default lifecycle scope and reports the scoped count as the corpus total with has_more false, while search applies no such scope, so the two discovery surfaces disagree about what exists elemento pm-999jh7
- GH-882: unresolved extension commands must lead with the activation failure and actionable recovery elemento pm-4uplae
- Extension-mode is folded into the metadata-cache identity, so alternating --no-extensions with a normal invocation evicts a 4.5 MB cache and every command costs 5 seconds instead of 0.4 elemento pm-77okxr
- Declared activation.commands is silently overridden by the renderers/hooks/parser/preflight capability tier, so any extension beyond plain commands is eagerly imported on every invocation elemento pm-j0w7j9
- GH-832: package command namespace ownership and collision diagnostics are not discoverable elemento pm-6z0wzf
- GH-681: latest calendar ordinal must satisfy stable package peer ranges elemento pm-csuce0
- The model provenance resolver derives the harness session-file path with an incomplete slug encoding, so it silently resolves nothing in any workspace whose path contains an underscore - including this repository elemento pm-9gvazz
- GH-878: nested workspace snapshot and help paths are enumerated but not resolvable by structured help elemento pm-7wx1f9
- Warn when custom schema fields collide with MCP transport or tool-specific inputs elemento pm-yfdav2
- GH-844: local npm package archives are rejected as install sources elemento pm-lw6acw
- The one-release-per-day guard compares a prefix glob against unpadded date keys, so it is correct only by accident of tag creation order and silently skips a real release for any out-of-order tag elemento pm-ki67py
Security
- Refresh transitive brace-expansion and PostCSS patches for 2026-08-03 audit advisories elemento pm-2cv2o1
Other
- Scripting contract: documented and test-gated guarantees for exit codes, stdout/stderr stream discipline, and stable machine-readable field names elemento pm-psy1
- Published artifact weight: the npm tarball ships 20MB of inline-source sourcemaps plus duplicate tsc and bundle outputs elemento pm-998juj