Fixed
- MCP annotation and linked-artifact tools silently read when add is passed at the top level: the strict schema declares add/text but dispatch only hoists ifAbsent item pm-wsqxwb
- pm comments --edit/--delete take an absolute index while a budget-truncated listing reports count as the page size and shows no row index, so 'edit the last comment' by count rewrites an older comment item pm-hka7ep
- Bare pm comments / pm notes reads keep the oldest page when output must be bounded, withholding the newest entries (GH-1605 fixed this for history only) item pm-8s53lj
- CLI argv keeps one value silently when two spellings of one extension flag differ (--status-filter a -s b), while direct callers are refused with extension_option_spelling_conflict item pm-wlxf8f
- pm comments/notes <id\> --add --file <path\> is refused as positional-and---add conflict instead of naming the swallowed --file flag, so the annotation flag-like check from pm-vcu7 loses precedence item pm-y26mvc
- GH-1667: sdk/graph does not export ProjectedGraphResult, the public return type of runGraph, and the merge conflict_resolution union has no public name, so extensions derive both item pm-gh1667
- GH-1666: per-command help and contracts for extension commands omit the inherited host flags (--json, --author, --pm-path) the command accepts and mark no flag as host- or extension-owned item pm-gh1666
- GH-1665: extension flag contracts omit the SDK option key, so PmClient.run and the extension test harness silently ignore a CLI-spelled option such as status-filter and fall back to the default item pm-gh1665
- TOON get --fields spends four lines on a complete omission receipt and drops requested empty collections, so a narrow read is two-thirds receipt and absent-vs-empty depends on that receipt item pm-sj66lm
- GH-1662: an infeasible --token-budget on context --for orient exits 0 with no context and contradictory receipts, its restore_with retry fails, and get/list intent receipts undercount the emitted envelope item pm-gh1662
- GH-1678: a scoped registerRenderer replacement bypasses --output-budget and its read_output receipt reports within_budget for the native payload, not the delivered bytes item pm-gh1678
Other
- Restore package headroom by excluding the generated refusal-closure census from the npm tarball item pm-dwy8kb
- Unknown-option refusals on extension commands with declared flags carry code unknown_option and list only the flags the command accepts item pm-1du7s3
Fixed
- GH-1677: the stale-revision refusal's next_steps and examples drop --pm-path, --no-extensions and the output mode, so the recovery reads return another tracker's item item pm-gh1677
- GH-1676: a pm close refused for missing close fields suggests a separate pm update and a retry, although pm close accepts --resolution, --expected-result and --actual-result itself item pm-gh1676
- GH-1674: pm list --fields/--compact and pm search print the verbose envelope that GH-1642 removed from the default projection, so --fields costs more than the default item pm-gh1674
- GH-1663: nested get --fields projections pad unrequested sibling collections with empty arrays (linked.files emits tests: \[\] and docs: \[\] for populated collections) and claim_state.claimed expands to the whole group item pm-gh1663
Other
- Packing ships only the declarations an exported types entry reaches, restoring the artifact headroom PR 1680 exhausted item pm-dg68kr
Fixed
- Release refuses an over-budget Sentry-injected package before tagging instead of stranding the tag item pm-ofllco
- GH-1670: pm health --full --summary silently drops --summary and emits the full projection (15.7 KB vs 636 B) with no receipt item pm-gh1670
Fixed
- GH-1660: the project telemetry block pm init writes is inert, so the wizard's telemetry decline and the project endpoint are ignored, and no supported way points opted-in tests at a local collector item pm-gh1660
- Start-blocker and revision-conflict follow-ups from the PR 1654 CodeRabbit full review item pm-mrvq8u
- Expected revisions advance from the pre-override document when an item_store_write override transforms contents item pm-thbdxu
- GH-1655: SDK placeholder and type refusals name CLI flags, and parent: null is refused, so typed callers have no documented way to clear a field item pm-gh1655
Added
- GH-1576: guard SDK and CLI mutations with expected item revisions item pm-gh1576
Fixed
- Starting work ignores open blockers: claim <id\> --start and update --status in_progress move a blocked item into progress without a refusal or warning item pm-urzubi
Fixed
- GH-1631: expose bounded extension-owned diagnostics on expected SDK errors item pm-gh1631
- Advertise safe linked-test command replacement after an immutable-command edit refusal item pm-1rfy0y
- Route project-schema keys to their declared flags in field refusals item pm-wftvem
- Typed refusals keep their own headline in human output: a likely_duplicate create refusal no longer reads as an invalid flag value item pm-btv6x7
- Preserve surrogate pairs in bounded extension error diagnostics item pm-y4v90c
Other
- Refresh mature GitHub Action pins: CodeQL 4.39.1, CodSpeed action 5.6.0 and TruffleHog 3.99.7 item pm-ey1zh7
Fixed
- A continuable key=value prose segment containing a colon is misread as a new key, so --comment/--note/--learning seeds store the raw entry with its text= prefix item pm-fr10t8
- GH-1580: Host-bound extension settings sections item pm-gh1580
- pm config set on a schema-invalid settings.json writes the fallback defaults as the whole file, deleting unrelated settings item pm-4zpq71
- Pin tested runtime peers in the published manifest so Bun installs resolve them without peer-range warnings item pm-2csj4k
Security
- GH-1647: acquireLock / acquireLockLease follow a symlinked locks directory and create the lock outside the tracker item pm-gh1647
Other
- Refresh aged Unicorn 79, Stryker 10.1.1 and knip 6.43.0 without changing strict lint policy item pm-8g06ma
- Adopt Vitest 5 with CodSpeed 6.1, keeping exact coverage, benchmark history and the CodSpeed Axios patch item pm-fokyhh
Fixed
- MCP read tools read every declared flat parameter, pm_search honours its keywords alias, and filtered pm context keeps dependency edges item pm-hke9z7
- GH-1642: compact brief pm list and pm search TOON envelopes while keeping the effective default sort visible item pm-gh1642
- GH-1644: disclose when a --for intent reduces an explicit --limit and recommend the measured canonical pm context --for orient item pm-gh1644
- GH-1643: make pm claim --next --start one atomic select-claim-start write and type the claim-target refusals item pm-gh1643
Fixed
- pm close clears the assignee but leaves claim_principal, so closed claimed items keep an active owner item pm-8xgg7i
- GH-1618: prevent automated comment churn from misleading next-work priority item pm-gh1618
- GH-1610: compact lean refusals and expose structured claim context item pm-gh1610
- GH-1627: bound the entire next response and compact optional TOON sections losslessly item pm-gh1627
- GH-1628: preserve terminal timestamps for identical forced SDK updates item pm-gh1628
- Pull-request CI requests 33 hosted-runner jobs per push against the account's 20-job concurrency cap, so required checks wait hours before they start item pm-m6ig79
- Text refusals drop the specific What happened detail when an echoed argv overflows the diagnostic ceiling item pm-4oc353
- GH-1622: investigate pm-presets SDK-loading fault blocking daily release item pm-gh1622
- Successful linked-test receipts carry non-actionable execution_context and all-zero failure_categories, even under --lean item pm-covpax
- Unknown-option recovery drops a dash-leading prose value: the advertised replay closes, comments or creates without the user's text item pm-stq61b
- GH-1633: accept comma-separated --unset field lists with per-field validation item pm-gh1633
- GH-1630: bound selective linked-test receipts to the selected collection item pm-gh1630
- GH-1626: offer same-command replay corrections for brief completeness spellings item pm-gh1626
- GH-1609: recover killed commit owners and bound lock waits with a monotonic clock item pm-gh1609
- GH-1624: define typed Unicode handling for extension output across JSON and TOON item pm-gh1624
- GH-1625: align extension-refusal Sentry capture with declared contracts and telemetry source context item pm-gh1625
- GH-1602: keep preflight warnings inside JSON error envelopes item pm-gh1602
- Bound independent native receipt regression cases item pm-native-index-proof
- GH-1558: Settle Windows generation-fixture rename rejections without weakening lock assertions item pm-gh1558
Security
- Registry advisories GHSA-mrwp-f3q8-3g9p (follow-redirects 1.16.1, high) and GHSA-g3hv-75wg-m249 (minimatch 10.2.6, moderate) block the static gate on main and every PR item pm-irviv0
Added
- GH-1597: expose host-bound item transaction status and safe abandonment or supersession item pm-gh1597
- GH-1598: bind batch mutation APIs to PmClient and expose canonical staged preview records item pm-gh1598
Fixed
- GH-1617: make history display order explicit and consistent across projections item pm-gh1617
- GH-1603: Reduce null agenda fields and escaped tag overhead in bounded context output item pm-gh1603
- GH-1606: Validate public SDK runtime operand values before mutation internals item pm-gh1606
- GH-1614: keep typed SDK data literal across CLI sentinel inputs item pm-gh1614