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
- pm package doctor should warn when a schema package registers item types/fields but declares narrow activation.commands (silently non-global) elemento pm-ok47
- 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
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
Added
- Complete SDK package-author test-assertion surface: service-override + migration helpers elemento pm-6pmp
- item-format-migration: add format-version field to front-matter for future migration gating elemento pm-ae1u
Fixed
- Windows nightly: secondary POSIX-separator + mocked-path test class (static-quality-gate, docs-skills-gate, bundle-cli, contracts-snapshot, smoke-npx-from-pack) elemento pm-s5pe
- Nightly windows-latest STILL red after pm-i84i: scriptModule test harness imports .mjs scripts via absolute file:// URL, shebang survives missing transform (SyntaxError) elemento pm-dita
Added
- Search relevance eval harness: implement nDCG/MRR runner and gate in CI elemento pm-u8n5
- Offline BM25 lexical retrieval provider when no Ollama/OpenAI is configured elemento pm-75k9
- Add 120-file unit-test cap governance test to ci-workflow-contract.spec.ts elemento pm-wc0d
- Add integration test for background-refresh (instant mutations) non-blocking behavior elemento pm-5rge
- Add integration test for close-many --rollback checkpoint restore elemento pm-7p4w
- Add integration test for schema add-type / remove-type round-trip with governance.workflow_enforcement elemento pm-4dtf
- Add remediation registry entry for validate_metadata_duplicate_issue_codes warning elemento pm-sdbo
- Add remediation registry entry for extension_update_health_partial_coverage warning elemento pm-bdvm
- gc --scope checkpoints: prune stale bulk-mutation checkpoint files elemento pm-tyj8
- LanceDB snapshot: add gc --scope embeddings to include pending-refresh.json and drift-cache coordination elemento pm-3b1t
- Sentry KNOWN_NOISY_CONSOLE_MESSAGE_PATTERNS maintenance: add a governance test to prevent silent accumulation of stale patterns elemento pm-jxls
- Add vitest.config.ts coverage include/exclude governance guidance to ARCHITECTURE.md elemento pm-othr
- Add wiring-checklist reference card to ARCHITECTURE.md for new command authors elemento pm-zyse
- Add performance / startup-latency section to ARCHITECTURE.md elemento pm-p37b
- Add nightly.yml failure alerting: notify on Windows/Node25 smoke failures elemento pm-ehbb
- Add Windows path-separator test coverage for fs-utils and store/paths elemento pm-tq5t
Changed
- Refactor runUpdate (~950-line function) into table-driven per-field apply helpers elemento pm-e7dn
- Replace 'as unknown as ItemMetadata' double-casts (9 sites) with typed mutation/replay returns elemento pm-ul02
- COMMANDS.md omits pm get and pm copy; command-families table missing get/copy/update-many/close-many elemento pm-xvzm
Fixed
- pm-changelog over-escapes markdown in entry titles (parens + intra-word underscores) elemento pm-3299
- Nightly windows-latest red since 2026-06-14: ~373 tests fail with 'SyntaxError: Invalid or unexpected token' from file://-URL TS dynamic imports + POSIX-separator assertions elemento pm-i84i
- Accept --status all for duplicate-safe search and list filters elemento pm-i02t
- pm health 2.3-3.1s in dev repo (~2x the 1.3s baseline): drift-scan cache hit still reads + content-hashes every history stream elemento pm-c90s
- Daily auto-release was silently blocked 06-14..16 by a single stale, unresolved Sentry error (sentry-telemetry-gate is:unresolved has no time window) elemento pm-nb08
- appendLineAtomic is not truly atomic: concurrent appends to history JSONL can interleave elemento pm-xy9n
- Project-scope extension install writes ~69MB node_modules per workspace (peer pm-cli + transitive Sentry/OTel) elemento pm-oxq2
- Fix ARCHITECTURE.md storage layout: add plans/, stories/, schema/, checkpoints/, runtime/ dirs elemento pm-mcgf
- Fix nightly cross-platform reliability: macOS realpath in extension-command test and Windows .cmd spawn EINVAL elemento pm-gf6f
- GH-293..296 CLI parser and search regression bundle elemento pm-yy45
Removed
- Built-in type lists and storage layout drift: Plan missing; ARCHITECTURE.md still lists removed index/ dir elemento pm-7u4z
Other
- Export hygiene: 1 dead export + ~57 exported-but-internal-only symbols elemento pm-vn9l
- Document search eval golden-query harness usage in TESTING.md elemento pm-eg9k
- Sentry tracesSampleRate is hardcoded at 0.2 — expose as configurable knob or document intent elemento pm-gg8e
- CLAUDE_CODE_PLUGIN.md drift: architecture tree shows 9/14 commands + 1/4 agents; compat table says plugin 1.0.0 (actual 1.4.0) elemento pm-cxi9
- Docs index missing EXTENSION_AUTHOR_CONTRACTS + MIGRATION_CLI_SIMPLIFICATION links; migration note predates --pm-path elemento pm-c97q
- pm todos import: positional source arg silently ignored + folder-not-found error omits --folder flag (beads parity) elemento pm-90hp
- Unknown-command did-you-mean misses executable aliases: 'pm shwo' gets no suggestion (show/view/comment not in candidate set) elemento pm-i35t
Added
- pm context --fields: per-row field projection for focus items (GH-156 follow-up to --depth full) elemento pm-hnjf
- pm list output formats: csv/table for human export (GH-154 remainder) elemento pm-1lll
- pm plan discoverability: templates and auto-suggest for complex work (GH-158 remainder) elemento pm-aer3
- Dedupe merge workflow: pm dedupe-merge to consolidate duplicates (GH-163, builds on closed pm-4n1a detection) elemento pm-jmld
- pm search: structured inline query syntax (tag:/status:) + matched-text highlighting (GH-157 remainder) elemento pm-ldr1
- Auto-compact policy: config-driven threshold to trigger pm history-compact automatically elemento pm-0pnz
- pm history-compact: expose --scope all-streams (history GC pass) for closed items elemento pm-yj9w
- History stream bulk-compaction: pm history-compact --all-over N to batch-compact large streams elemento pm-f3pa
- Add agent-identity dimension to telemetry events: surface PM_AUTHOR as hashed author_context elemento pm-fbyu
- pm telemetry stats: add error_rate and resolution breakdown per command bucket elemento pm-gsoe
- Surface duration_ms percentile breakdown in pm telemetry stats (p50/p95 per command) elemento pm-3n3b
- GH-208: linked test sandbox ergonomics elemento pm-52eh
- Core read/validate integrity: exact-ID search rank guarantee across modes + parent-hierarchy cycle detection elemento pm-rkie
- Validate governance accuracy: suppress false-positive duplicate-code & terminal-item metadata noise + files --remove input clarity elemento pm-6bz1
- Sub-hour duration granularity for scheduling: support minutes in --duration / event duration= elemento pm-zoe4
Changed
- pm update --allow-audit-update: permit append-only --comment/--file/--doc evidence (GH-207) elemento pm-kanu
Fixed
- linked-test-adapters package install loses ESM module type elemento pm-v8fy
- GH-206: test-all silent run process-liveness regression elemento pm-mcxr
- Auto Release retries branch push after main advances elemento pm-5oti
- GH-284: align pm init required schema directories with health elemento pm-hl9y
- GH-215: enforce timestamps in history entries elemento pm-u42x
- GH-280: pm validate does not detect circular parent references (hierarchy cycles A-\>B-\>A of any length) elemento pm-8vul
- GH-281: exact-ID search match is rank-diluted in hybrid/semantic mode (keyword score normalized + capped by keyword weight) elemento pm-oqgf
- PR \#266 review feedback: tighten init and dynamic option validation elemento pm-at1j
- CI contracts snapshot temp cleanup can fail with ENOTEMPTY elemento pm-c61g
- pm templates: unknown subcommand + flags silently fall back to 'list' (exit 0) instead of erroring elemento pm-r2kd
- Dynamic package commands should reject excess args and unknown parent tokens elemento pm-nt1y
- GH-262: prevent path-like pm init from corrupting caller tracker settings elemento pm-jek2
- GH-265: schema unknown subcommands must not create custom types elemento pm-ablm
Other
- Repo-wide docstring coverage gate for source files elemento pm-p4mw
- SDK.md PM_PACKAGE_RESOURCE_KINDS drift: assets/prompts kinds missing elemento pm-u8y9
- GH-277: files --remove path-only input clarity elemento pm-k8ld
- GH-276: metadata check skip terminal items for planning fields elemento pm-pktw
- GH-278: duplicate_issue_codes exclude items closed-as-duplicate elemento pm-5fid
- GH-275: duplicate_issue_codes skip legitimate parent/child code-prefix pairs elemento pm-2nxe
- PR \#274 second review follow-up: prefix, format, and owner scoring elemento pm-89ur
- PR \#274 review follow-up: CodeQL and bot feedback elemento pm-0bwe
- GH \#267/\#271/\#272 follow-up: lifecycle automation, logical dependency validation, read format parity elemento pm-8uhf
- GH \#268-\#270 agent lookup and context output polish elemento pm-x7g1
- Dogfood audit 2026-06-12: ecosystem verification (CLI+SDK+packages) elemento pm-krgd