2026.7.24-3

Fixed

2026.7.24-2

Added

  • Stale in-progress detection: validate/health flag in_progress items with no active claim or recent activity Eintrag pm-w8q4

Fixed

  • Full coverage gate flakes when real all-package install exceeds generic 30-second unit timeout under load Eintrag pm-7x0wqg
  • Sentry PM-CLI-2K: schema migration input error crosses CLI boundary as high TypeError Eintrag pm-rxqcp9
  • Author attribution enforcement: opt-in strict unknown-author rejection, SDK test-all author parity, and audited disposition for stranded actionable events Eintrag pm-h90s

Security

  • Write-time secret detection advisory: mutation paths flag credential-shaped content before it enters the immutable history stream Eintrag pm-pim7

2026.7.24

Added

  • pm validate needs a counts-only projection so agents can read drift numbers without row-array payloads Eintrag pm-a9mc
  • GH-445: suppress/factor repeated inherited tags in pm context rows (--no-tags + tag folding) Eintrag pm-ishm
  • NDJSON output mode: --format ndjson on list/search/context emits one JSON object per line for grep/jq/xargs pipelines Eintrag pm-646c
  • Workspace-scoped audit history stream: schema/config/profile/init mutations recorded as append-only hash-chained JSONL Eintrag pm-klo8
  • Schema evolution migrations: lossless, history-recorded bulk migration of existing items when custom types, fields, or statuses are renamed or retired Eintrag pm-dijg
  • Beyond-PM SDK exemplar phase 2: temporal digital-twin graph with entity relationships, event replay, point-in-time state, and invariants Eintrag pm-kr3t
  • Bounded SQLite metadata list reads and compact get child continuations Eintrag pm-px153l
  • Workspace memory tiers: derived rollup summaries of closed-item epochs keep decades-old work queryable in bounded tokens Eintrag pm-5qmm

Fixed

  • pm deps tree must remain bounded on cyclic deep relationship graphs Eintrag pm-gygna8
  • GH-449: contracts policy_modes advertises 'enforce' but governance config accepts 'strict' (contract drift) Eintrag pm-kjbh
  • Scoped renderer ownership: safe package renderers should not keep isolated package doctor in warning state Eintrag pm-nf7q
  • Extension flag value-arity decided by three divergent predicates in cli/extension-command-help.ts - help, parse, and summary surfaces can disagree Eintrag pm-853a
  • Post-install activation verification can load stale overwritten extension modules Eintrag pm-4v4c
  • Relationship timestamp snapshots must honor event time for late and offline arrivals Eintrag pm-j3swnb

Security

  • Extension install: untrusted manifest dependency specs reach npm install unvalidated (arg injection all-OS; shell command injection on Windows) Eintrag pm-g072
  • CodeQL alert 30: polynomial ReDoS in shared path normalization primitive Eintrag pm-v3zd3o

Other

  • SDK reference documentation for promoted primitives + migration notes for the CLI-on-SDK layering Eintrag pm-ds3b
  • SDK authoring DX polish: manifest-drift guard in scaffold tests, expectation key naming, repeated --capability, define\* index signatures Eintrag pm-llrp
  • Extension install should scaffold newly required item-type folders (pm health ok:false after installing pm-kanban until pm init) Eintrag pm-l98s
  • As a platform developer, I can build a non-PM domain system (e.g. a git-like VCS or a company's business workflows) using only pm SDK primitives Eintrag pm-8ngt
  • Cursor fingerprints: replace per-command presentation-flag deny-lists with contract-declared semantic classification in sdk/pagination Eintrag pm-fgih

2026.7.23

Added

  • SDK relationship registry and graph-query primitives: custom typed edges, adjacency, paths, closures, impact, and bounded subgraphs Eintrag pm-ju83
  • Context relevance signal feature store: derived recency, graph, claim, risk, deadline, knowledge-density, and semantic-match signals Eintrag pm-3hps

Fixed

  • GH-646: classify merge reconciliation discards by net outcome Eintrag pm-mmm9o5
  • GH-649: reject self-referential ordering relationships at the SDK mutation boundary Eintrag pm-k9t17l
  • GH-645: standard-depth get/show JSON omits notes without notes_count Eintrag pm-3esl28
  • GH-638: delete JSON envelope reports the removed item as open Eintrag pm-tz2ikr
  • GH-635: plan create cannot forward strict Plan-required metadata Eintrag pm-qd3woa
  • GH-642: linked-test runner enters interactive init wizard before repository commands Eintrag pm-lcnk2n
  • GH-641: plan link promotion rejects registered implements relationship kind Eintrag pm-ypuc39

Other

  • Capstone: zero the SDK import-boundary baseline — flip remaining CLI/MCP private-core imports to SDK primitives and harden the ratchet into a hard boundary gate Eintrag pm-9x6e

2026.7.22

Fixed

  • GH-576: unknown-command help probes return structured non-zero errors Eintrag pm-bu1m
  • Sentry PM-CLI-2G: make merge-driver installation permission failures actionable Eintrag pm-bnmlsc
  • Sentry PM-CLI-2F: classify manifest-proven torn bundle call-time TypeError Eintrag pm-pz7xtx
  • Compatibility gate rejects compact legacy create envelopes after release promotion Eintrag pm-pkdpyz
  • Sentry PM-CLI-2E: directory-shaped settings.json crashes CLI bootstrap Eintrag pm-k0nl2w
  • Sentry PM-CLI-2D: storage-integrity history scan reads .jsonl directories as files Eintrag pm-o1c53b
  • GH-551: dependency seeds accept global source_kind and preserve cross-workspace IDs Eintrag pm-topu
  • GH-595: list JSON always emits total/has_more/truncated/next_cursor and omits unset filters Eintrag pm-wrss
  • GH-623: opt-in post-merge history reconciliation hook and one-command verify repair Eintrag pm-mfkv92
  • GH-553/GH-584: CodeFactor unnecessary-spread findings — restructure flagged spread sites (class owner) Eintrag pm-zt1c
  • GH-574: flattened extension alias subcommands still drop option contracts after GH-503/GH-550 fixes (empty --help, valid options rejected as positionals) Eintrag pm-7ufz

Security

  • Dependabot alert \#42: brace-expansion CPU denial of service (GHSA-3jxr-9vmj-r5cp) Eintrag pm-f5hy2n

Other

  • GitHub analyzer follow-up: GH-628 unnecessary spread, GH-629 duplicate blocks, and GH-630 unsafe optional chaining Eintrag pm-aw59hb
  • GH-582: runRegisteredListCommand flagged Complex Method by CodeFactor — extract option-assembly helpers in register-list-query.ts Eintrag pm-zwya

2026.7.21

Added

  • Graph planning & structural analytics: critical-path slack, betweenness/closeness centrality, and articulation points/bridges Eintrag pm-efuo34
  • CLI+MCP surface for atomic bulk item mutations: JSON mutation batch on stdin over commitItemMutations Eintrag pm-xm7c
  • GH-438: accept a full item JSON document on stdin for pm create / pm update Eintrag pm-kipd
  • GH-435: lean JSON output mode omitting null/empty fields (~50% token cut for --json) Eintrag pm-cfed
  • GH-437: make lean mutation output the CLI default (parity with MCP compact envelope) Eintrag pm-nilh
  • GH-443: lean error mode — drop constant required/why boilerplate from structured errors Eintrag pm-g9xk

2026.7.20

Added

  • Tracker merge semantics: field-aware merge guidance, history-chain-safe JSONL merging, and post-merge reconciliation for multi-branch agent workflows Eintrag pm-g5sx
  • GH-613: public SDK bulk item-mutation helper on commitWorkspaceTransaction — atomic create/update/close batches without hand-rolled step+compensation wiring Eintrag pm-y9hq
  • GH-612: additive --add-ac/--remove-ac forms for acceptance criteria — replace-only --ac clobbers concurrent branch edits Eintrag pm-xh82
  • GH-599: git merge driver + documented workflow for append-only history/\*.jsonl (concurrent appends fork the hash chain) Eintrag pm-wc1r

Fixed

  • Merge-driver fence completeness: relationships/\*.jsonl event stores uncovered and schema-added custom type folders silently drop driver coverage Eintrag pm-i4fx
  • MERGE_SAFETY.md documented an invalid config invocation: 'pm config set project ids.token_length 6' exits 2 (scope must precede the verb) Eintrag pm-46octv
  • GH-601: SDK mutation option bags and projected list items are Record<string,unknown\> — typos and wrong types compile clean under strict Eintrag pm-x29o
  • GH-600: item id generation not collision-safe across branches/concurrent agents (4 base36 chars, local-disk-only uniqueness) Eintrag pm-pibw
  • GH-615: pm notes --message without content is a silent no-op — apply the GH-588 empty-comment guard to the notes twin Eintrag pm-iedg
  • GH-602: SDK .d.ts require @types/node but package does not declare it — tsc errors inside node_modules for consumers; plus shipped JSDoc defects Eintrag pm-n1xx
  • GH-596: update-many --ids must report nonexistent requested IDs Eintrag pm-ukml
  • GH-597: reject empty append text without false updated_at freshness Eintrag pm-d9g9
  • Nightly macOS+Windows red post-PR\#568: staging-base selection compares realpath'd source against non-canonical temp dir — staging lands inside source, fs.cp EINVAL self-copy Eintrag pm-hvt3
  • fix: nightly windows/Node24 red — vcs-extension spec asserts POSIX 'relationships/events.jsonl' against native default store path Eintrag pm-34yf
  • GH-607: validate reports ok:true / checked_items:0 on structurally-unparseable item .toon — silently skips what pm get hard-errors on Eintrag pm-cxyv
  • GH-598: pm init .gitignore block hardcodes .agents/pm/ prefix — custom-root workspaces commit runtime cache and conflict on every merge Eintrag pm-4uqm

Other

  • Adopt collision-resistant id entropy in the pm-cli repository (ids.token_length 4 -\> 6) Eintrag pm-88cy
  • Adopt PR\#614 merge safety in the pm-cli repository itself: pm merge install, committed .gitattributes fence, CI storage-integrity + strict history-verify gates, transactions GC schedule Eintrag pm-iwsj

2026.7.19

Added

  • Public SDK transaction boundary: atomic multi-item + relationship-event commit primitive Eintrag pm-4e12
  • Beyond-PM SDK exemplar spike: minimal VCS-style changeset workflow as a pm package (custom schema + event-sourced history + hooks) Eintrag pm-xtrd

Fixed

  • Workspace-transaction journals: .agents/pm/transactions/ outside the init gitignore block with no retention or GC Eintrag pm-8xod
  • GH-609: settings.json/schema/\*.json have no merge driver; validate reports ok:true by silently falling back to defaults on unparseable config Eintrag pm-xdn6
  • GH-611: delete/modify merge silently resurrects deleted items and leaves conflict markers in history/\*.jsonl while validate stays green Eintrag pm-wwfd
  • GH-604: pm history <id\> --verify exits 0 when verification.ok is false; no --strict-exit — unusable as a merge-safety gate Eintrag pm-ol3p
  • GH-608: concurrent edits to different fields always conflict on the shared updated_at scalar (no field-level .toon merge) Eintrag pm-m3nl
  • GH-603: history-repair cements cross-author data loss after a lossy merge — reverting patch discards the other author's mutation, validate fully green Eintrag pm-gpo7
  • GH-606: concurrent note/tag appends hard-conflict the .toon item file; stale count headers corrupt the item beyond parsing Eintrag pm-9q2t
  • GH-588: pm comment --message exits 0 recording nothing — comment invocation without any comment text must fail fast Eintrag pm-yp56
  • GH-589: pm next --assignee X answers from anonymous-caller perspective and pm claim conflates assignment with claim Eintrag pm-cj9v
  • GH-591: pm context agenda events re-embed full item payloads already listed in the same response (~35% of brief output) Eintrag pm-6m1i
  • GH-592: tracker_not_initialized recovery re-suggests pm init even when a --pm-path tracker exists — following it silently splits workspace state Eintrag pm-tmhs
  • GH-586: graph audit severity and code summaries mix finding and affected-item units Eintrag pm-um4g
  • GH-590: cycle-creating blocked_by mutations succeed silently — items deadlock out of pm next with no inline feedback Eintrag pm-i6pi
  • GH-585: extension alias collision diagnostics for core command groups Eintrag pm-v1yo

2026.7.18

Fixed

  • MCP nested options accept unknown keys silently (pm_deps options.dep no-ops) — extend pm-qxwu top-level warning into options objects Eintrag pm-upi0
  • Sentry PM-CLI-2C: classify Node MaxListeners runtime warnings as warning-level diagnostics Eintrag pm-qpfv
  • GH-578: align pm context and pm list-blocked with edge-aware pm next semantics Eintrag pm-uxkf
  • pm deps context format reports missing_count without enumerating missing references and disagrees with tree format Eintrag pm-8kch

Security

  • CodeQL alert 27: js/polynomial-redos in sdk/test/linked-command-detection.ts trailing-dash prefix trim Eintrag pm-8og4

Other

  • As an agent, I can traverse why an item exists, what it affects, what blocks it, and its evidence chain from one bounded graph query Eintrag pm-8xr8

2026.7.17

Added

  • SDK-only exemplar: minimal custom PM CLI package proving the universal-tool story end-to-end Eintrag pm-cbwg
  • Promote execution and diagnostics primitives to the public SDK: linked-test running and test-run lifecycle, search eval harness, telemetry stats/export Eintrag pm-oslr

Fixed

  • cli/main.ts commander program is a module-level singleton: dynamically registered extension commands/flags persist across in-process invocations Eintrag pm-qfdd
  • Windows packed-extension install regression exceeds the generic Vitest timeout Eintrag pm-ph3i