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
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
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
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
Changed
- CodeFactor/Complexity: decompose runUpdate, the update mutate apply-callback, and register-mutation MCP arrows elemento pm-0n6p
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
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
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
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
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
Other
- Package and extension scaffolds emit least-privilege manifest policy metadata elemento pm-bav0