2026.7.16

Other

  • 2026-07-15 full CLI SDK and ecosystem manual audit and optimization plan (review pass 91) Eintrag pm-45lr

2026.7.15

Added

  • Promote governance, validation, health, and maintenance primitives to the public SDK: validate, health, gc, changelog/reporting hooks Eintrag pm-oxrw
  • GH-444: ergonomic author attribution — global --author, init author_default, unknown-author advisory Eintrag pm-cpja
  • Promote schema, config, profile, and init primitives to the public SDK: full workspace customization programmatically Eintrag pm-3mna
  • Promote package & extension lifecycle primitives to the public SDK: install, upgrade, extension list/enable/disable, managed-package state Eintrag pm-x6jf
  • Promote annotation and link primitives to the public SDK: comments, notes, learnings, files, docs, deps, append metadata Eintrag pm-zwpp
  • Point-in-time read projection: pm get --at <version\|timestamp\> renders reconstructed historical item state without mutating Eintrag pm-hib1

Fixed

  • Linked-test item reference parser skips item IDs after value-bearing flags Eintrag pm-jhg9
  • Sentry PM-CLI-2B: external extension subprocess cannot resolve pm executable Eintrag pm-d4ns
  • Sentry PM-CLI-29: external Neo4j command reports missing configuration as a high pm-cli error Eintrag pm-7n5a
  • Nightly windows/Node24: package-manifest SDK-surface exemption uses POSIX endsWith — governance-audit runtime.ts check fails on backslash paths Eintrag pm-u5zr
  • GH-522: Windows nightly red — init next-steps hints POSIX-quote native Windows paths (quoteCommandArg backslash escaping) Eintrag pm-b24b
  • GH-567: macOS+Windows nightly red — extension-install copy self-nesting check misses symlinked/short-name temp paths (realpath fallback asymmetry) Eintrag pm-0fhw
  • Adopt CodSpeed continuous CPU benchmarking in CI: review/land PR\#564 and establish the per-PR perf-regression signal Eintrag pm-yh6t
  • GH-562: pm init rejects --id-prefix/--prefix flag though id prefix is only positional Eintrag pm-nmzx
  • GH-560: extension renderer overrides diverge between SDK harness and real CLI output Eintrag pm-as4a
  • GH-557: contract layer intercepts -h/--help before variadic-positional handlers, blocking legitimate positional content Eintrag pm-albl
  • GH-547: SDK exporters and renderers cannot suppress host rendering of handled output Eintrag pm-f38n
  • GH-550: extension list flags are erased at the real CLI boundary Eintrag pm-evav
  • GH-558: export canonical item-to-context-relevance candidate derivation from the public SDK Eintrag pm-qyc6
  • GH-555: remove unnecessary spread in relationship registry ordering assertion Eintrag pm-ofgc
  • Validate lifecycle cycles using ordering relationship kinds only Eintrag pm-6irg

Security

  • Add OSSF Scorecard supply-chain security workflow with published results and SARIF code-scanning upload Eintrag pm-k7dp

Other

  • validate_history_unknown_author_events: legacy/actionable split for immutable unknown-author history events + first-party automation author coverage Eintrag pm-demq
  • Ship DeepSource, DeepScan, and Scrutinizer CI free-OSS analyzer configurations with documented activation Eintrag pm-3a68
  • ADR: relationship graph semantics — typed directional, ordering, provenance, evidence, and associative edges with schema-extensible invariants Eintrag pm-4jqm

2026.7.14

Added

  • Promote history-stream maintenance primitives to the public SDK: history-redact, history-repair, history-compact (audited rewrite, re-anchor, checkpoint/prune) Eintrag pm-4a7m
  • Context usage feedback signal: served-then-acted-on outcomes strengthen relevance scoring (retrieval-practice effect) Eintrag pm-uwfs

Changed

  • Replace obsolete front-matter vocabulary with item metadata terminology Eintrag pm-hq28

Fixed

  • Sentry no longer captures deliberate Ctrl+C/Ctrl+D interrupts as error-level events (AbortError, PM-CLI-27) Eintrag pm-ksv2
  • pm get --full omits children for Plan parents while pm list --parent returns them Eintrag pm-y4z5
  • Intentional package CommandError outcomes create high-severity Sentry issues (PM-CLI-16) Eintrag pm-7071
  • Extension install self-copy guard: reject source-inside-destination layouts before fs.cp EINVAL (PM-CLI-28) Eintrag pm-8myl
  • Torn-install bundle transients block scheduled releases: boot-time chunk-integrity self-check + distinct error code for gate classification Eintrag pm-wfvq
  • GH-446: pm get omits schedule facet (events/start_at/end_at/location) for Meeting/Event/Reminder Eintrag pm-x1g5
  • GH-533: create/update accept empty --title — required-title contract inconsistent between omitted and empty string Eintrag pm-7je0
  • GH-535: pm deps omits dangling parent references (missing_count:0, missing:false) contradicting validate's dangling_reference_count Eintrag pm-p9sc
  • GH-542: MCP pm_copy nests title/message under options while sibling tools declare flat camelCase params — own suite triggers unexpected-arg warnings Eintrag pm-hno5
  • GH-532: --estimated-minutes accepts negative numbers and floats — missing non-negative-integer range validation Eintrag pm-jh9t
  • GH-534: no-op update reports phantom changed_fields in --json while TOON reports empty, and changed_field_count is always null in JSON Eintrag pm-45mb
  • GH-526: aggregate --sum/--avg accept unknown field names and silently report 0 Eintrag pm-96vo
  • GH-530: list --status <invalid\> silently returns count 0 — validate against the status domain like --type and search status: Eintrag pm-kj4k
  • GH-544: linked-file path anchoring — files/docs add/glob/discover/validate-paths resolve at process.cwd() while validate --check-files anchors at the workspace root Eintrag pm-chyh
  • Separate active dangling dependency warnings from terminal historical reference diagnostics Eintrag pm-2ler

Other

  • PR review helper: watch GitHub checks and enforce thread-scoped replies Eintrag pm-0fxa
  • Docstring coverage regressed below achieved-100% by PR\#536 extraction files; quality:static floors never ratcheted and mask drift; drop dead closure-pattern export Eintrag pm-fb3i
  • Token-budget context packer: diversity-aware selection, projection degradation, and bounded output for pm context/next Eintrag pm-55ra
  • Complete public linked-resource SDK primitives and actionable dependency governance Eintrag pm-jcvg

2026.7.13

Added

  • Bare-core audit extraction phase 2: move audit command implementations and audit flags out of default CLI/SDK into pm-governance-audit Eintrag pm-vjk3
  • Cursor pagination and bounded-output defaults for list/search/context at scale Eintrag pm-dfg0
  • Notes/learnings repair parity: add --edit/--delete (and a real --stdin/--file input source) matching comments, so bad annotation entries are fixable via the CLI Eintrag pm-a2h3

Changed

  • S3: move the --allow-audit-\* override flag family out of core command registrations into pm-governance-audit (enforcement stays core) Eintrag pm-7dcf
  • S2: move the --audit linked-usage report mode off pm files/pm docs into pm-governance-audit Eintrag pm-27mv
  • S1: relocate dedupe-audit/dedupe-merge/comments-audit/normalize implementations into pm-governance-audit and delete their public SDK exports Eintrag pm-79fr

Fixed

  • Runtime-extension snapshot caches go stale in long-lived in-process embeddings (install invisible to next invocation) Eintrag pm-8fxc
  • GH-518: reduce Complex Method in src/cli/commands/next.ts (CodeFactor, PR\#517 rank rendering) Eintrag pm-2gvp

Other

  • Extract governance audit runtime from the default CLI and SDK Eintrag pm-w1c0
  • S5: coverage migration + bare-core vs installed-plugin e2e verification for the audit extraction Eintrag pm-rxp1
  • S4: purge audit surface from default SDK contracts, MCP tool definitions, completion, help, and docs; package declares its own contracts; re-measure token surface Eintrag pm-kg18
  • Promote terminal-status and mutation runner primitives required by package-owned governance workflows Eintrag pm-yu6d
  • Decision: extension-point mechanism and bare-core fallback semantics for extracted audit flags (D1+D2 of pm-vjk3) Eintrag pm-fg0b
  • Scale benchmark harness: synthetic 10k/100k/1M-item workspace generator + latency/memory/token baseline for the read and claim hot paths Eintrag pm-mi2x
  • Lazy-load @sentry/node off the command hot path (~850ms ESM load on every command, even when telemetry disabled) Eintrag pm-1ybs
  • ADR: workspace scale-out strategy — indexed reads, storage fan-out, and bounded-output contracts for 100k-1M-item workspaces (proposed) Eintrag pm-bl8x
  • Local test/coverage dev loop 17+min: replace per-call spawnSync CLI runner with synchronous worker-thread bridge Eintrag pm-kvd0

2026.7.12

Added

  • Promote plan workflow primitives to the public SDK: plan create/steps/dependencies/decisions/discoveries/validation/materialization Eintrag pm-je50

Fixed

  • Restore 100% SDK workspace read-error coverage Eintrag pm-jw2a
  • GH-510: macOS nightly red — withTempPmPath skips realpath canonicalization; init-path-guard probe-root assertion fails (/var vs /private/var) Eintrag pm-dprb
  • GH-454: schema add-field accepts reserved built-in names silently; collision error names no partner Eintrag pm-b9ov
  • GH-509: pm claim --next lacks candidate filters and race-loss walk — thread next filters + advance to next candidate Eintrag pm-fjxm
  • Prevent Decision items from entering agent work lanes by default; allow explicit maintainer opt-in Eintrag pm-eqk0
  • GH-513: pm next ready\[\] documented as ranked but not priority-ordered; no rank/score exposed Eintrag pm-1mwk
  • Fix red main coverage gate: measure-agent-token-surface.mjs landed without a covering spec Eintrag pm-ksca
  • GH-508: dedupe LegacyNoneCollectionNormalizer tables duplicated between create.ts and update.ts (CodeFactor) Eintrag pm-zuw8
  • Release-readiness guard expects pre-sync version:check command after date-version synchronization Eintrag pm-pmmv
  • Restore generated-loader docstrings and redact host path from tracker history Eintrag pm-9ugc
  • Full coverage contention times out metadata content-filter integration case Eintrag pm-d30l
  • GH-453: plan materialize --json response omits title/type/parent on materialized entries Eintrag pm-ypha
  • GH-452: plan materialize dead-ends on types with required-on-create custom fields Eintrag pm-qd2h
  • GH-507: recovery suggested_retry appends <value\> to missing boolean EXTENSION flags (contract arity ignored) Eintrag pm-9qcr
  • GH-505: nested extension failures suggest irrelevant missing flags instead of preserving tracker recovery Eintrag pm-o71e
  • GH-504: importer/exporter registered without options yields an unusable CLI command (no arg/flag contracts) Eintrag pm-0mjz
  • GH-503: flattened extension-command aliases (csv-export, jira-sync) drop option contracts Eintrag pm-s9iu

Other

  • Coverage to 100%: src/core, src/mcp, and src/sdk modules Eintrag pm-krwu
  • Baseline agent token cost of the CLI surface: measure pm --help, per-command help, and contracts payload sizes before consolidation Eintrag pm-a22j
  • Research and document the July 2026 native ChatGPT/Codex plugin implementation plan Eintrag pm-n28t
  • Align all plugin and package manifests to date-based versioning with release-time sync Eintrag pm-hxsv

Closed

  • Closed: GH-516: pm init seeds unrelated managed packages into fresh PM_GLOBAL_PATH workspaces Eintrag pm-b0se
  • Closed: GH-448: boolean custom field is silently never persisted (data-loss class) Eintrag pm-sjfs

2026.7.11

Added

  • pm claim --next: atomically claim the next actionable item so parallel agents each get distinct work Eintrag pm-114v

Fixed

  • Dangling dependency references: accepted at create/update, skipped by validate, and treated as satisfied by pm next (silent unblock) Eintrag pm-ol5v
  • Classify tracker-not-initialized Sentry CommandErrors as expected handled CLI errors Eintrag pm-w7jq
  • GH-498: pm comments rejects --body — accept it as an alias for --add and hint on unknown options Eintrag pm-z32q
  • GH-500: suggested_retry renders boolean flags with a "<value\>" placeholder — literal suggestion fails Eintrag pm-6y58
  • pm next repeats the recommended item verbatim as ready\[0\] — emit an id reference instead Eintrag pm-hfg5
  • pm next recommends another agent's assigned in_progress item as 'resume to finish' — recommendation must be caller-aware Eintrag pm-yl6c
  • GH-489: pm next summary reports blocked: 0 while blocked items exist — blocked companion list missing Eintrag pm-l0bu
  • GH-496: extension flags declared list:true don't accumulate repeated occurrences — host maps to scalar, Commander last-wins drops values Eintrag pm-kfq5
  • Reserved item-field name collisions are invisible to SDK lint/preflight/harness Eintrag pm-ghf1
  • Repeated --ac flags on create/update silently keep only the last acceptance criterion Eintrag pm-b84u
  • GH-497: pm create --template silently drops tags and custom type-option fields — only built-ins (priority/assignee) apply Eintrag pm-l6rz
  • pm create/update --dep silently normalizes malformed shorthand into dangling dependency ids (related:pm-x26a -\> pm-related:pm-x26a) Eintrag pm-zazb
  • contracts-snapshot gate is environment-dependent: fixture baked in installed-extension contracts, failing CI on extension version drift or absence Eintrag pm-zcjy
  • GH-495: extension context pm_root ignores root-layout trackers (falls back to non-existent .agents/pm) Eintrag pm-kvev
  • pm close never stamps closed_at, so changelog and release-notes bucketing always falls back to updated_at Eintrag pm-m4iu

Other

  • Repo-wide 100% docstring coverage: public API + data contracts (gate-enforced) Eintrag pm-4ak1
  • Docstring gate: extend static-quality-gate to enforce public-API + data-contract coverage repo-wide Eintrag pm-5566
  • Docstrings: src/types (shared data model interfaces + consts) Eintrag pm-uxmf
  • Docstrings: src/sdk (public SDK surface + cli-contracts) Eintrag pm-uwu0
  • Docstrings: packages/\* (module docs + exported/public surface for all 11 shipped packages) Eintrag pm-qely
  • Docstrings: src/core/extensions (extension-types + loader/runtime contracts) Eintrag pm-mswi
  • Docstrings: src/cli/commands (largest surface — command option/result interfaces) Eintrag pm-m0uc
  • Docstrings: src/core (search, schema, test, history, telemetry, governance, store, item, and remaining core modules) Eintrag pm-768v
  • Docstrings: src/cli (non-commands), src/mcp, src/ root modules Eintrag pm-2vb2
  • Untrack vendored pm-changelog extension dist from git (installed npm artifact, restored by changelog:pm:install) Eintrag pm-sod3
  • Refresh CodeQL Actions and reject incompatible Node 26 type-contract bump Eintrag pm-2a9n

Closed

  • Closed: GH-501: pm init <path\> roots a tracker that workspace discovery cannot find — tracker_not_initialized loop right after init Eintrag pm-69nl

2026.7.10

Added

  • GH-473: pm install prints a post-install verification summary Eintrag pm-yjim

Fixed

  • Sentry release gate misclassifies handled duplicate-import refusal as a blocking runtime error Eintrag pm-io4t
  • GH-488: path-target pm init emits executable tracker-scoped follow-up commands Eintrag pm-x26a
  • Declarative extension install: activation failure is misreported and scaffold next_steps break when @unbrained/pm-cli is unresolvable Eintrag pm-3wsi
  • Project package install with --pm-path can write extensions into the caller workspace Eintrag pm-qt5d
  • GH-482: Node 24 nightly coverage gate flake — readdir-order-dependent branch at front-matter-cache.ts:505 Eintrag pm-gume
  • Context evaluation runner and CI gate: rank-aware quality metrics plus token-budget regression checks Eintrag pm-xmp5
  • Token-cost regression gate: CI budget check over a representative command-output corpus Eintrag pm-cu1i
  • GH-484: pm update --blocked-by silently overwrites prior blockers instead of appending Eintrag pm-q6gx
  • GH-485: pm search rewrites quoted status:all hybrid queries into --status and drops keywords Eintrag pm-2ldo

Other

  • Pre-install package-owned command names should hint the owning package install command Eintrag pm-b3e9
  • Context relevance scorer contract: pluggable SDK weighting, deterministic default model, and extension override path Eintrag pm-h3no

2026.7.9

Added

  • GH-442: lean pm contracts --summary mode for cheap agent bootstrap (25KB -\> 1-3KB) Eintrag pm-vxxm
  • GH-470: pm list --today and --recent shorthand filters for recently active items Eintrag pm-bfma

2026.7.8

Added

  • GH-467: isolated package/extension diagnostics — project-scoped doctor and smoke tests without global pm state leaking in Eintrag pm-6abs
  • GH-474: pm search --limit support in hybrid mode Eintrag pm-alnj

Fixed

  • Triage: close GH-455 with shipped evidence once the Ollama embedding auto-default fix releases Eintrag pm-hq0r

Other

  • Expose package lifecycle primitives through public SDK helpers Eintrag pm-kffw
  • Expose sentry telemetry gate as package script alias Eintrag pm-w86l
  • ADR: 2026-06-07 deep review + remediation pass (never-block, MCP/version coherence, docs/CI hardening) Eintrag pm-96wm
  • GH-476: pm context rejects --max-items with an untargeted unknown_option (alias or recovery hint) Eintrag pm-5h9g

2026.7.7

Added

  • Promote query/read primitives to the public SDK: list, get, search, context, next, aggregate, stats Eintrag pm-rjqr
  • Promote item lifecycle primitives to the public SDK: create, update, close, claim/release, copy, delete, restore, focus Eintrag pm-98cz

Fixed

  • SDK client.run() rejects structured payloads for create: raw {type,title} fails with 'Missing required option --title' Eintrag pm-395t
  • GH-427: Windows Node 24 nightly fails — POSIX-only error-code assertions (EACCES/EISDIR) in restore-command and history-rewrite specs Eintrag pm-lt6n
  • pm plan create silently ignores the root --id-only flag (prints full plan envelope) Eintrag pm-oz0k
  • Annotation --add silently stores flag-like tokens as content: pm notes <id\> --add --stdin records the literal note "--stdin" Eintrag pm-vcu7
  • Bare extension command group (pm changelog / pm graph) exits 0 with zero output instead of rendering group help Eintrag pm-1k57
  • pm extension --install pm-<alias\> / @unbrained/pm-<alias\> fails with 'Local extension source does not exist' instead of suggesting the bundled catalog alias Eintrag pm-jqd2
  • GH-463: linked PM tracker-read tests should auto-remediate or suggest --auto-pm-context Eintrag pm-6e1d
  • GH-455: pm health auto-selects an uninstalled Ollama embedding model then fails vector refresh Eintrag pm-aems
  • Relative lancedb vector-store path resolves against process cwd, creating nested .agents/pm/.agents/pm stores Eintrag pm-og1v

Other

  • GH-458: claim/start-task reject --assignee with an untargeted recovery hint (alias or better hint) Eintrag pm-qfte
  • GH-468: clarify or publish the pm SDK npm package coordinates (@unbrained/pm-sdk is 404) Eintrag pm-25d0
  • 2026-07-07 ecosystem audit \#16: all-status review, long-horizon gap items (merge semantics, event stream, policy roles, flow metrics) Eintrag pm-su60
  • 2026-07-06 ecosystem audit \#15: WIP hygiene, GH/commit coverage verification, grammar+SDK domain completions, horizon-4 planning Eintrag pm-pvij
  • chore: 2026-07-06 ecosystem audit \#14 — WIP status hygiene (docstring family reset) + stale in-progress detection backlog Eintrag pm-6a1g
  • chore: 2026-07-06 ecosystem audit \#13 — Semgrep-issue metadata backfill, scale-out initiative pm-9rxu, composability contract set Eintrag pm-lgim
  • 2026-07-06 ecosystem audit \#12: GH-467..474 backlog coverage + code-scanning capability epic Eintrag pm-3rgp
  • pm install should accept multiple package targets (help already advertises \[targets...\]) Eintrag pm-hj9h
  • Triage: close stale dogfood reports GH-436 (pm next/focus) and GH-440 (context --fields) with shipped evidence Eintrag pm-7cx8
  • Unblock dependabot PRs: @types/node 26 type error, pnpm release-age cooldown, codeql-action lockstep group Eintrag pm-2czc