2026.7.6

Added

  • Expose SDK runAction and PmClient execution surface for programmatic integrations elemento pm-xzhz

Other

  • ADR: the pm SDK is the single public API — CLI and MCP are presentation layers (proposed) elemento pm-muhw

2026.7.5

Added

  • Architecture boundary ratchet: prevent new CLI/MCP private core imports while SDK promotion shrinks the baseline elemento pm-8778
  • Lock contention auto-retry: bounded jittered wait before lock_conflict so parallel agent mutations self-heal elemento pm-2muu
  • As a new teammate or onboarding agent, I want accurate docs, one-command onboarding, and automated date-based releases, so that I can become productive quickly and ship safely elemento pm-ixm6
  • As a coding agent, I want keyword, semantic, and hybrid search with inline field filters, so that I can find relevant prior context before creating new work and never duplicate an item elemento pm-nnro

Fixed

  • pm claim silently steals items already assigned to another agent — claim must be atomic test-and-set for multi-agent work distribution elemento pm-8t5x
  • Extension activation adds ~200ms to every command when bundled packages are installed elemento pm-4oww
  • pm close <id\> -m 'text' still hard-blocks with close_reason_required: accept --message text as close-reason fallback (like closed pm-7x8d did for --resolution) elemento pm-9hry
  • beads/todos import-export runtime broken from real npm installs: runtime-loader imports .ts under node_modules (type-strip refused) elemento pm-ejy7

Other

  • Bundle GH-433 self-parent guard, Windows nightly lock proof, and pnpm 11 bootstrap hardening elemento pm-q1ke
  • Inventory the CLI-to-core call graph: map every command to core modules and classify logic for SDK promotion elemento pm-lodl
  • 2026-07-04 ecosystem audit \#4: coverage matrix, governance capability epic & relationship modeling elemento pm-osea
  • As a future maintainer, I want every significant architectural decision recorded as an ADR with context, decision, and consequences, so that I can understand why the system is built the way it is elemento pm-xugp
  • As a maintainer extending pm with agents, I want CodeFactor A+ enforced by ratcheted static gates, so that the codebase stays maintainable no matter how many agents contribute elemento pm-r0z2
  • As an MCP-connected agent, I want narrow pm\_\* tools kept in lockstep with the CLI via machine-readable contracts, so that I get drift-free, discoverable operations over the same primitives elemento pm-wo7x
  • As a coding agent bootstrapping any project, I want to define custom item types, statuses, fields, workflows, and profiles via config, so that pm fits the project's domain without code changes elemento pm-0zuv
  • As a maintainer, I want consent-aware local telemetry and health diagnostics, so that I can observe how pm is used and detect problems without leaking any project data elemento pm-gnya
  • As one of many parallel agents, I want atomic claim and lock semantics with bounded auto-retry, so that we each get distinct work and never corrupt shared tracker state elemento pm-miju
  • As an agent gating on tracker quality, I want pm validate and pm health to surface every data-quality gap with a machine-executable remediation, so that I can keep context trustworthy and rebuild it from pm alone elemento pm-tra4
  • As a third-party author, I want an SDK to compose, validate, test, and ship a pm extension or package, so that pm can be customized and optimized for any project without forking elemento pm-m2kl
  • As a coding agent, I want every mutation to be atomic and fully replayable from an append-only history, so that I can trust the tracker's state and recover any prior context at any time elemento pm-hu11
  • As a coding agent, I want every pm command to be self-describing and to never block without a machine-actionable recovery path, so that I can operate the full item lifecycle with zero out-of-band context elemento pm-nh73
  • Backfill full-context bodies (and comments/deps/risk) on all active items so context is rebuildable from pm CLI alone elemento pm-o043
  • Sandbox audit fixes: package describe accepts npm package name; pm context <id\> routes to pm get elemento pm-ayn7
  • 2026-07-04 full pm-backlog audit: reconcile pm items with entire ecosystem (code, tests, docs, ideas, decisions) elemento pm-y904
  • GH-426: reduce complex method in compatibility-check.spec runCurrentPmCommand elemento pm-24o5
  • SDK testing-helper input validation: runRegisteredCommandForTest positional misuse crashes; createExtensionTestHarness accepts non-extension module silently elemento pm-2exf

Closed

  • Closed: Extension installs are dead-on-arrival in CommonJS host projects: installed extension dirs lack package.json type:module elemento pm-r0m4

2026.7.4

Security

  • Extreme mandatory quality gates: strict ESLint everywhere, jscpd strict/zero-threshold, suppressions budget, Trivy/ShellCheck/PSScriptAnalyzer/actionlint CI, admin-proof branch protection elemento pm-7wmq

Other

  • Test meaningfulness audit: strengthen hollow assertions, de-mock thin specs, convert contract source-mirrors to behavior elemento pm-4i73

2026.7.3

Fixed

  • GH-416: Windows nightly validate linked-artifact prune classification elemento pm-xpkt

Other

  • Perf: pm context / pm next hot path ~700ms on an ~850-item tracker elemento pm-z1pv
  • 2026-07-02 full ecosystem audit & optimization pass (CLI+SDK+packages+docs+CI) elemento pm-fpod
  • Lane C: Code quality audit (complexity, dead code, cross-file duplication, long files, type safety, dependencies) elemento pm-hfli
  • Lane F: CI/CD best-practice + secret/PII leak scan incl. pm history files elemento pm-mo2v
  • Lane E: Docs audit (progressive disclosure, minimal README, link graph, duplicated docs/skills) elemento pm-p99b
  • Lane B: SDK best-practice + package-authoring DX review (define/compose/harness/preflight loop, scaffold matrix) elemento pm-6vy7
  • Lane A: E2E ecosystem smoke in temp workspace (pack+install CLI, all first-party packages, full command surface, agent UX/token-efficiency) elemento pm-kes3
  • Lane D: Performance audit (startup latency, per-command responsiveness, hot paths) elemento pm-3l76
  • CodeFactor residual complexity and duplication cleanup for 27-issue main snapshot elemento pm-bssk
  • Zero the jscpd clone baseline: dedupe registration-helpers/flag-contracts source clones and 21 test-spec clones elemento pm-chxp

2026.7.2

Changed

  • CodeFactor/Complexity: decompose runUpdate, the update mutate apply-callback, and register-mutation MCP arrows elemento pm-0n6p

2026.7.1

Changed

  • CodeFactor/Complexity: decompose runCreate (CC 172) and the audit-scope update guard (CC 38) elemento pm-g7vl

Fixed

  • Auto Release blocked: bot cannot push version commit to protected main (GH006, 12 required checks) elemento pm-9gxi

Removed

  • CodeFactor/Complexity: remove 33 suppressions and split 100+ complexity-point dispatch hot spots elemento pm-o34s

Other

  • CodeFactor/Complexity: zero out the SDK contract-resolution, extension-loader and composition surface elemento pm-lzzp
  • AGENTS.md: mandate reading full live pm item data (status/resolution/comments) before any state claim elemento pm-g61e
  • CodeFactor/Complexity: cut cyclomatic-complexity debt across the extension authoring, management & diagnostics surface elemento pm-zro7

2026.6.30

Added

  • pm package/extension init --capability profile: scaffold a project-profile starter package elemento pm-h2hk
  • Project profile author-time validation: lintProjectProfile + assertProjectProfile + pm profile lint elemento pm-j1fj
  • Extension-contributed project profiles: api.registerProfile end-to-end elemento pm-08sv
  • SDK test harness summary/render surface elemento pm-2qte
  • Describe --markdown writes reference docs to a file elemento pm-u2tm
  • SDK + CLI: render extension/package surfaces to Markdown reference docs (renderExtensionSurfaceMarkdown + describe --markdown) elemento pm-dmum
  • First-party baseline profile package built on public SDK primitives elemento pm-a7o4
  • Project profile presets: compose types, statuses, fields, workflows, templates, and packages elemento pm-v37g
  • Add pm package / pm packages shell completion (bash/zsh/fish), including the package-only --declarative flag elemento pm-mthy
  • pm package init --declarative: scaffold a composeExtension blueprint starter + author-time preflight test elemento pm-8mxg
  • pm next: recommend the next actionable (unblocked, ready) work item with rationale + blocked companion elemento pm-nj90
  • Complete scaffold capability matrix: --capability renderers/parser/preflight/services starters elemento pm-i5p5
  • pm package/extension init --capability schema: scaffold custom item type/field/migration starter elemento pm-d1ig
  • Scaffolded & authored command-bearing extensions reliably activate for their own commands elemento pm-yxb5
  • TypeScript-only extension loading: ship .ts entry, load via Node native type stripping (no compiled .js) elemento pm-2p7a

Changed

  • CodeFactor/Duplication: remove duplicated code blocks (×20: 2 Critical, 3 Major, 15 Minor) elemento pm-fmjy
  • CodeFactor/Complexity: reduce cyclomatic complexity (×152: 3 Critical, 7 High, 142 Moderate) elemento pm-arzz
  • ADR: pm extensions are authored AND loaded as TypeScript via Node native type stripping elemento pm-m1uz

Fixed

  • CodeFactor no-regression gate: complexity ceiling + ESLint suppressions baseline + Greptile in local CI/CD elemento pm-bkcv
  • MCP action-schema contracts drifted from CLI flag tables (guide.list, health.brief, validate.parentCycleSeverity, contracts.full) elemento pm-zx13
  • pm next hides completed-container closeout rows while leaf work exists elemento pm-9g87
  • Windows background stop progress assertion elemento pm-bnh3
  • GH-348/GH-376: Windows nightly Vitest worker fork exits unexpectedly after passing tests elemento pm-2kkl
  • CodeFactor/Maintainability: fix unsafe optional chaining (no-unsafe-optional-chaining ×25) elemento pm-m8yl
  • CI: make Codecov badge uploads branch-explicit elemento pm-x878
  • pm next should skip completed open containers when recommending actionable work elemento pm-2n6i
  • pm validate --check-files mis-handles remote (URL) doc/file references: flagged as deleted and silently destroyed by --prune-missing elemento pm-k2n4
  • pm install does not scaffold extension-contributed item-type folders (transient missing_directory health warning) elemento pm-rjab
  • Contracts command lookup should handle package namespace roots elemento pm-y1o4
  • GH-363: Windows nightly (Node 24) red — runtime-loader colon-path + telemetry detached-spawn unhandled error + npm-install regression elemento pm-xaib
  • Auto Release blocked-alert step can never create its tracking issue (auto-release.yml missing issues:write) elemento pm-qawd
  • Aggregate --status all should match duplicate-safe lifecycle filters elemento pm-bhtx
  • Sentry PM-CLI-1T: pm stats should tolerate disappearing history streams elemento pm-7o0s
  • Package lifecycle typo recovery should suggest action subcommands elemento pm-js02
  • describeExtensionBlueprint omits importer/exporter-with-options command definitions (parity gap vs describeExtensionActivation) elemento pm-zqes
  • deriveExtensionCapabilities omits 'schema' for importer/exporter options.flags (declarative blueprint under-grant) elemento pm-v3ty
  • Scaffolded search/importers package commands fail to dispatch: lazy-activation probe skips command-bearing extensions that omit activation.commands elemento pm-nacb
  • Harden extensionNeedsActivationForProbe: non-terminal search gate + command-bearing importers elemento pm-b5r8

Removed

  • CodeFactor/Maintainability: remove useless object-spread fallbacks (unicorn/no-useless-fallback-in-spread ×57) elemento pm-xsth

Other

  • PR \#406 review follow-up: clear partial MCP extension registries before fallback execution elemento pm-dyzy
  • ADR: profile lint severity model — errors break apply, warnings flag suspicious-but-valid cross-references elemento pm-qcdu
  • Action-scoped MCP parameter descriptions: split shared name/target description per action (schema vs profile) elemento pm-fq80
  • Built-in MCP actions are now extension-aware: pm_profile/pm_list/pm_schema activate workspace extensions like the CLI elemento pm-zumn
  • Docs: SDK.md/EXTENSIONS.md document api.registerProfile + regenerate contracts/full.json elemento pm-ol8j
  • Dogfood: pm-kanban registers kanbanProfile so pm profile apply kanban works elemento pm-kj7x
  • SDK profile parity: assertRegisteredProfile + composeExtension blueprint.profiles + deriveExtensionCapabilities + describe elemento pm-l8fl
  • pm profile list/show/apply merges extension-registered profiles with source labels elemento pm-vpwt
  • registerProfile core registration surface: ExtensionApi + registry + loader gate + capability-usage + policy surface elemento pm-6oox
  • Decompose cli-contracts.ts monolith into flag-contracts + tool-schema sibling modules elemento pm-3wue
  • First-party package manifests declare current SDK compatibility floor elemento pm-6d7q
  • Package scaffolds declare current SDK compatibility floor elemento pm-sf08
  • Refresh Sentry release and telemetry dependencies elemento pm-4dz7
  • CodeFactor parity tooling: local ESLint (unicorn) + complexity + duplication lint to reproduce findings and prevent regressions elemento pm-6sqo
  • CodeFactor/Maintainability: clear remaining unicorn lints (no-thenable ×4, no-useless-spread ×2, no-useless-length-check ×1) elemento pm-q0ye
  • ADR: offline BM25 lexical provider + relevance eval harness for search quality elemento pm-f2al
  • ADR: explicit pm_format_version front-matter field for storage schema evolution elemento pm-eeai
  • Normalize stale audit containers and intentional-open resolved items elemento pm-psc0
  • Docs & CI/CD audit 2026-06-12 elemento pm-gpea
  • Audit (2026-06-07): observability / telemetry / health elemento pm-lzrq
  • Audit (2026-06-07): storage/history + search/semantic elemento pm-34gb
  • Audit (2026-06-07): MCP + SDK/extensions/packages elemento pm-b4cp
  • Audit (2026-06-07): CLI surface & schema/config elemento pm-srex
  • Audit (2026-06-07): docs/onboarding/release/CI + tests/coverage elemento pm-5dbn
  • Expose project profile application through MCP contracts and drift gates elemento pm-bhmk
  • 2026-06-25 PM ecosystem taxonomy and context backlog normalization elemento pm-57vh
  • Sub-agent lane: release, GitHub, Sentry, telemetry, and live-ops evidence elemento pm-3whx
  • Sub-agent lane: SDK, packages, MCP, and universal customization backlog elemento pm-o578
  • Sub-agent lane: source, tests, docs, and command-surface coverage map elemento pm-xezi
  • Sub-agent lane: tracker taxonomy, hierarchy, and duplicate hygiene elemento pm-klpw
  • Refresh runtime dependencies for audit baseline elemento pm-r642
  • Extend pm package init --declarative to the full capability matrix (hooks/search/importers/schema/renderers/parser/preflight/services) elemento pm-lfdv
  • ADR: dependency-aware actionability for pm next — ready = active leaf with no open blocked_by; reuse compareCriticalItems + shared blocked_by resolver elemento pm-9x6k
  • Schema-capability scaffolds must omit narrow activation.commands so custom item types/fields register globally elemento pm-halx
  • Schema scaffold docs: EXTENSIONS.md, SDK.md, shell completion, help-content examples elemento pm-pwf1
  • Schema scaffold tests: unit coverage (package+extension variants) + materialize/run generated node:test smoke elemento pm-x3vi
  • Implement schema scaffold capability in scaffold.ts (manifest/entrypoint/README/define\* guidance, omit activation.commands) elemento pm-mdw6
  • Document activation.commands lazy-activation contract in scaffold README, EXTENSIONS.md, SDK.md elemento pm-scvz
  • Scaffold emits manifest activation.commands matching registered command paths per capability elemento pm-mhih

Closed

  • Closed: pm package doctor should warn when a schema package registers item types/fields but declares narrow activation.commands (silently non-global) elemento pm-ok47

2026.6.24

Added

  • TypeScript-first extension & package scaffolding + SDK docs reframe elemento pm-09rh
  • Modular declarative authoring: mergeExtensionBlueprints + composeExtensionPackage elemento pm-2p38
  • SDK unified author-time preflight capstone: preflightExtension + assertExtensionPreflight elemento pm-ozaf
  • SDK author-time version-compatibility preflight: checkExtensionManifestCompatibility + assertExtensionManifestCompatible elemento pm-1w0d
  • SDK author-once manifest synthesis: synthesizeExtensionManifest + assertExtensionManifestMatchesBlueprint elemento pm-u5le

Changed

  • Extract shared version-compat core (core/extensions/version-compat.ts); loader delegates, behavior-preserving elemento pm-sjea

Other

  • ADR: pm extensions & SDK packages must be authored fully in TypeScript elemento pm-2c28
  • Convert docs/examples extensions to TypeScript-first (starter-extension, policy-restricted-extension) elemento pm-ax7z
  • Reframe SDK docs & docstrings TypeScript-first (SDK.md, EXTENSIONS.md, define\*/compose\*) elemento pm-l2ud
  • Scaffolder emits TypeScript source: index.ts + tsconfig.json + type-check/test scripts (./index.ts entry) elemento pm-frou
  • defineExtensionBlueprint: typed identity helper for partial blueprint fragments elemento pm-nvgy
  • composeExtensionPackage: author-once capstone returning { module, manifest } elemento pm-cn0c
  • mergeExtensionBlueprints: pure modular composition of partial ExtensionBlueprints elemento pm-high
  • assertExtensionPreflight(blueprint, options) — throwing CI/test bookend (testing.ts) + barrel re-export elemento pm-t8yl
  • preflightExtension(blueprint, options) — pure unified author-time analyzer (compose.ts) elemento pm-tcw1
  • assertExtensionManifestCompatible(manifest, target) — SDK testing assert elemento pm-hng2
  • checkExtensionManifestCompatibility(manifest, target) — pure author-time analyzer elemento pm-knma
  • assertExtensionManifestMatchesBlueprint(manifest, blueprint): strict least-privilege CI guard against capability drift elemento pm-pfxi
  • synthesizeExtensionManifest(blueprint, identity): generate a complete least-privilege ExtensionManifest from a blueprint elemento pm-nr5j

2026.6.23

Added

  • SDK lintExtensionBlueprint + assertExtensionBlueprint: author-time preflight for composeExtension blueprints (capability drift, duplicate commands, empty surfaces) elemento pm-9ect
  • SDK describeExtensionBlueprint: static author-time surface map of a composeExtension blueprint (author-time inverse of describeExtensionActivation) elemento pm-tlpv
  • Declarative extension authoring: composeExtension blueprint + deriveExtensionCapabilities + defineExtensionManifest elemento pm-iqq0
  • pm extension/package describe: agent-facing CLI + MCP surface for describeExtensionActivation elemento pm-l4c8
  • SDK describeExtensionActivation: single-call introspection of every registered surface (complements assert\*/run\*) elemento pm-16ue
  • SDK authoring-time define\* typed builders for every extension registration surface elemento pm-12tj
  • Unified extension test harness (createExtensionTestHarness): one fluent fixture binding all activate/assert/invoke/deactivate SDK helpers elemento pm-jcyn

Fixed

  • deriveExtensionCapabilities omits 'schema' for a CommandDefinition with inline flags (manifest under-grant would fail activation) elemento pm-5758
  • GH-340: Windows nightly telemetry OTLP cleanup EBUSY elemento pm-zpe7

Other

  • ADR: SDK author-time helpers are the static inverse of runtime extension checks (derive↔reconcile, describe-blueprint↔describe-activation, lint↔loader-enforcement+doctor) elemento pm-4oio
  • ADR: SDK define\* builders are zero-cost identity helpers (defineConfig pattern), generic for object defs / non-generic for function defs elemento pm-3mph

2026.6.22

Added

  • Add importers package scaffold and dependency-maintenance closeout elemento pm-j5az
  • pm package init --capability search: scaffold search provider starter packages elemento pm-pwai
  • pm package init --capability <kind\>: scaffold capability-targeted starter packages (commands\|hook) elemento pm-nhby
  • SDK invoke helpers for importers & exporters: runRegisteredImporterForTest + runRegisteredExporterForTest elemento pm-1p2u
  • SDK invoke helpers for search providers, vector store adapters and migrations elemento pm-bd3u
  • Complete the SDK extension-invoke testing surface: runRegisteredHookForTest + override invoke helpers elemento pm-miqm
  • SDK testing helper to invoke a registered extension command handler: runRegisteredCommandForTest elemento pm-owm0
  • SDK deactivate test lifecycle: deactivateExtensionForTest + assertExtensionDeactivated helpers elemento pm-0zn9
  • Least-privilege capability reconciliation: pm package doctor flags declared-but-unused extension capabilities + SDK assertExtensionCapabilityUsage elemento pm-fk84

Fixed

Other

  • Package and extension scaffolds emit least-privilege manifest policy metadata elemento pm-bav0