From 9c0609a6205529ad2e8cd18ea2e1d0cd8fd4b49b Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Tue, 28 Jul 2026 13:18:14 +0200 Subject: [PATCH 1/3] chore(pm): close 1 shipped-but-open trackers These trackers described work that had already shipped, in some cases weeks earlier. Leaving them open makes every agent that reads this workspace believe the work is still in flight, which is the opposite of what the tracker is for. Each was verified against the repository before closing: - changelog-script adoption trackers: confirmed all four changelog scripts in package.json pass --respect-item-release and pm-changelog is pinned at 2026.7.24 or later. - host-owned flag registration trackers: confirmed the package installs and loads on pm-cli 2026.7.28 with an empty failed[] in pm health, and that its commands register and execute. - audit and hardening waves: superseded, the package has shipped many releases since and now tracks pm-cli 2026.7.28. Closing is changelog-safe because every changelog script here passes --respect-item-release, so an item whose fix already shipped attributes to its original release window rather than to Unreleased. CHANGELOG.md regenerated after the closures, per repo convention. --- .agents/pm/chores/pm-github-w7m7.toon | 7 ++++--- .agents/pm/history/pm-github-w7m7.jsonl | 1 + CHANGELOG.md | 6 ++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.agents/pm/chores/pm-github-w7m7.toon b/.agents/pm/chores/pm-github-w7m7.toon index 1438c307..68f50dc1 100644 --- a/.agents/pm/chores/pm-github-w7m7.toon +++ b/.agents/pm/chores/pm-github-w7m7.toon @@ -2,15 +2,16 @@ id: pm-github-w7m7 title: Adopt --respect-item-release in changelog scripts and bump pm-changelog to 2026.7.24 description: "pm-changelog 2026.7.24 adds --respect-item-release, which makes the single-window generation path (--since-previous-tag --until-release-tag, changelog:check, release notes) honour an item's declared release field instead of trusting closed_at. Without it, closing a tracker whose fix shipped in an earlier release dates months-old work as new, which is why shipped-but-unclosed trackers accumulate: closing them corrupts the changelog. Adopting the flag fleet-wide makes late tracker closure safe and keeps every package's generation path in agreement with --all-release-tags." type: Chore -status: in_progress +status: closed priority: 2 tags[3]: changelog,fleet-consistency,release-hygiene created_at: "2026-07-24T21:30:26.518Z" -updated_at: "2026-07-24T21:42:59.772Z" -assignee: claude +updated_at: "2026-07-28T11:14:18.877Z" +closed_at: "2026-07-28T11:14:18.877Z" author: claude acceptance_criteria: "changelog, changelog:full, changelog:check and release:notes all pass --respect-item-release; pm-changelog devDependency is ^2026.7.24; npm run changelog:check is green; CHANGELOG.md content is unchanged by the flag for this repo (no item declares a release yet)" notes[2]{created_at,author,text}: "2026-07-24T21:30:27.187Z",claude,"Verified in this repo: pm-changelog 2026.7.24 installed; npm run changelog:full regenerated CHANGELOG.md with the flag active and produced a ZERO-line diff, confirming the flag is a safe no-op until an item declares a release; npm run changelog:check exits 0." "2026-07-24T21:42:59.772Z",claude,"Greptile review finding adopted: the daily release workflow invokes pm-changelog DIRECTLY (npx pm-changelog, three times) rather than through the npm scripts, so patching only package.json left the generation path that actually produces the published CHANGELOG.md and RELEASE_NOTES.md without the flag while release:check validated with it. Added --respect-item-release to all three release.yml invocations so generation and validation agree. YAML re-validated." +close_reason: "Shipped and verified 2026-07-28: all four changelog scripts in package.json pass --respect-item-release and pm-changelog is pinned at 2026.7.24 or later. Closing so the tracker stops advertising completed work as in flight." body: "" diff --git a/.agents/pm/history/pm-github-w7m7.jsonl b/.agents/pm/history/pm-github-w7m7.jsonl index 366f1dda..c92c0566 100644 --- a/.agents/pm/history/pm-github-w7m7.jsonl +++ b/.agents/pm/history/pm-github-w7m7.jsonl @@ -3,3 +3,4 @@ {"ts":"2026-07-24T21:30:26.857Z","author":"claude","op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-24T21:30:26.857Z"},{"op":"replace","path":"/metadata/status","value":"in_progress"}],"before_hash":"bb1bb0e43d550316b058cd96dfba018c4bf13abe4367e877d2d09f74561eccf2","after_hash":"3953df77fd26a1cd3d2d4adcdcaf2bee20f827f948b9fa4a3bcc504112a2cb62"} {"ts":"2026-07-24T21:30:27.187Z","author":"claude","op":"note_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-24T21:30:27.187Z"},{"op":"add","path":"/metadata/notes","value":[{"created_at":"2026-07-24T21:30:27.187Z","author":"claude","text":"Verified in this repo: pm-changelog 2026.7.24 installed; npm run changelog:full regenerated CHANGELOG.md with the flag active and produced a ZERO-line diff, confirming the flag is a safe no-op until an item declares a release; npm run changelog:check exits 0."}]}],"before_hash":"3953df77fd26a1cd3d2d4adcdcaf2bee20f827f948b9fa4a3bcc504112a2cb62","after_hash":"eeeeb2b27870732e27ea0767ba55f85e05cd59c828ffa54c81f25f74c435e968"} {"ts":"2026-07-24T21:42:59.772Z","author":"claude","op":"note_add","patch":[{"op":"add","path":"/metadata/notes/1","value":{"created_at":"2026-07-24T21:42:59.772Z","author":"claude","text":"Greptile review finding adopted: the daily release workflow invokes pm-changelog DIRECTLY (npx pm-changelog, three times) rather than through the npm scripts, so patching only package.json left the generation path that actually produces the published CHANGELOG.md and RELEASE_NOTES.md without the flag while release:check validated with it. Added --respect-item-release to all three release.yml invocations so generation and validation agree. YAML re-validated."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-24T21:42:59.772Z"}],"before_hash":"eeeeb2b27870732e27ea0767ba55f85e05cd59c828ffa54c81f25f74c435e968","after_hash":"d0e768b06bdcdb640252ab1aed4f4d086f138c8cf0f7035c081455aa0ed8f027"} +{"ts":"2026-07-28T11:14:18.877Z","author":"claude-code","author_source":"asserted","agent_harness":"claude-code","agent_instance":"178aa3540ae0b8aeb5b7ac26","agent_provenance":{"model":null,"effort":{"value":"xhigh","source":"environment"}},"op":"close","patch":[{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-28T11:14:18.877Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/closed_at","value":"2026-07-28T11:14:18.877Z"},{"op":"add","path":"/metadata/close_reason","value":"Shipped and verified 2026-07-28: all four changelog scripts in package.json pass --respect-item-release and pm-changelog is pinned at 2026.7.24 or later. Closing so the tracker stops advertising completed work as in flight."}],"before_hash":"d0e768b06bdcdb640252ab1aed4f4d086f138c8cf0f7035c081455aa0ed8f027","after_hash":"c7ad2f3735fff80d9484df1766e8383de375daa76e683b3d4bbf9187e107ddcb"} diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f29b5cd..313641d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Other + +- Adopt --respect-item-release in changelog scripts and bump pm-changelog to 2026.7.24 ([pm-github-w7m7](https://github.com/unbraind/pm-github/blob/main/.agents/pm/chores/pm-github-w7m7.toon)) + ## 2026.7.28 - 2026-07-28 ### Other From 446409ade793061cff52a0d9d367fb436f0b91b9 Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Tue, 28 Jul 2026 13:23:35 +0200 Subject: [PATCH 2/3] chore(pm): attribute each closed tracker to the release that shipped it Greptile flagged on pm-ops#30 that closing an item without a `release:` field gives `--respect-item-release` nothing to honour, so already-shipped work lands under `## Unreleased` and gets re-announced in the next release notes. That was a real defect in the sweep: the earlier verification confirmed the flag was present in every changelog script but not that the items themselves carried release attribution. Each closed item is now attributed to the first release tag cut at or after its last pre-close `updated_at`, read from `origin/main` because the close overwrote the field. Tags are zero-padded (`v2026.07.25`); the release field takes the unpadded form (`2026.7.25`). CHANGELOG.md regenerated: the entries move out of Unreleased and into their historical version sections. --- .agents/pm/chores/pm-github-w7m7.toon | 3 ++- .agents/pm/history/pm-github-w7m7.jsonl | 1 + CHANGELOG.md | 10 ++++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.agents/pm/chores/pm-github-w7m7.toon b/.agents/pm/chores/pm-github-w7m7.toon index 68f50dc1..b2530e05 100644 --- a/.agents/pm/chores/pm-github-w7m7.toon +++ b/.agents/pm/chores/pm-github-w7m7.toon @@ -6,10 +6,11 @@ status: closed priority: 2 tags[3]: changelog,fleet-consistency,release-hygiene created_at: "2026-07-24T21:30:26.518Z" -updated_at: "2026-07-28T11:14:18.877Z" +updated_at: "2026-07-28T11:22:47.536Z" closed_at: "2026-07-28T11:14:18.877Z" author: claude acceptance_criteria: "changelog, changelog:full, changelog:check and release:notes all pass --respect-item-release; pm-changelog devDependency is ^2026.7.24; npm run changelog:check is green; CHANGELOG.md content is unchanged by the flag for this repo (no item declares a release yet)" +release: 2026.7.25 notes[2]{created_at,author,text}: "2026-07-24T21:30:27.187Z",claude,"Verified in this repo: pm-changelog 2026.7.24 installed; npm run changelog:full regenerated CHANGELOG.md with the flag active and produced a ZERO-line diff, confirming the flag is a safe no-op until an item declares a release; npm run changelog:check exits 0." "2026-07-24T21:42:59.772Z",claude,"Greptile review finding adopted: the daily release workflow invokes pm-changelog DIRECTLY (npx pm-changelog, three times) rather than through the npm scripts, so patching only package.json left the generation path that actually produces the published CHANGELOG.md and RELEASE_NOTES.md without the flag while release:check validated with it. Added --respect-item-release to all three release.yml invocations so generation and validation agree. YAML re-validated." diff --git a/.agents/pm/history/pm-github-w7m7.jsonl b/.agents/pm/history/pm-github-w7m7.jsonl index c92c0566..b5d18313 100644 --- a/.agents/pm/history/pm-github-w7m7.jsonl +++ b/.agents/pm/history/pm-github-w7m7.jsonl @@ -4,3 +4,4 @@ {"ts":"2026-07-24T21:30:27.187Z","author":"claude","op":"note_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-24T21:30:27.187Z"},{"op":"add","path":"/metadata/notes","value":[{"created_at":"2026-07-24T21:30:27.187Z","author":"claude","text":"Verified in this repo: pm-changelog 2026.7.24 installed; npm run changelog:full regenerated CHANGELOG.md with the flag active and produced a ZERO-line diff, confirming the flag is a safe no-op until an item declares a release; npm run changelog:check exits 0."}]}],"before_hash":"3953df77fd26a1cd3d2d4adcdcaf2bee20f827f948b9fa4a3bcc504112a2cb62","after_hash":"eeeeb2b27870732e27ea0767ba55f85e05cd59c828ffa54c81f25f74c435e968"} {"ts":"2026-07-24T21:42:59.772Z","author":"claude","op":"note_add","patch":[{"op":"add","path":"/metadata/notes/1","value":{"created_at":"2026-07-24T21:42:59.772Z","author":"claude","text":"Greptile review finding adopted: the daily release workflow invokes pm-changelog DIRECTLY (npx pm-changelog, three times) rather than through the npm scripts, so patching only package.json left the generation path that actually produces the published CHANGELOG.md and RELEASE_NOTES.md without the flag while release:check validated with it. Added --respect-item-release to all three release.yml invocations so generation and validation agree. YAML re-validated."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-24T21:42:59.772Z"}],"before_hash":"eeeeb2b27870732e27ea0767ba55f85e05cd59c828ffa54c81f25f74c435e968","after_hash":"d0e768b06bdcdb640252ab1aed4f4d086f138c8cf0f7035c081455aa0ed8f027"} {"ts":"2026-07-28T11:14:18.877Z","author":"claude-code","author_source":"asserted","agent_harness":"claude-code","agent_instance":"178aa3540ae0b8aeb5b7ac26","agent_provenance":{"model":null,"effort":{"value":"xhigh","source":"environment"}},"op":"close","patch":[{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-28T11:14:18.877Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/closed_at","value":"2026-07-28T11:14:18.877Z"},{"op":"add","path":"/metadata/close_reason","value":"Shipped and verified 2026-07-28: all four changelog scripts in package.json pass --respect-item-release and pm-changelog is pinned at 2026.7.24 or later. Closing so the tracker stops advertising completed work as in flight."}],"before_hash":"d0e768b06bdcdb640252ab1aed4f4d086f138c8cf0f7035c081455aa0ed8f027","after_hash":"c7ad2f3735fff80d9484df1766e8383de375daa76e683b3d4bbf9187e107ddcb"} +{"ts":"2026-07-28T11:22:47.536Z","author":"claude-code","author_source":"asserted","agent_harness":"claude-code","agent_instance":"178aa3540ae0b8aeb5b7ac26","agent_provenance":{"model":null,"effort":{"value":"xhigh","source":"environment"}},"op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-28T11:22:47.536Z"},{"op":"add","path":"/metadata/release","value":"2026.7.25"}],"before_hash":"c7ad2f3735fff80d9484df1766e8383de375daa76e683b3d4bbf9187e107ddcb","after_hash":"ae563e3eace23cdf8e380c30b7d0df9d762adc8473af293b8bf97aac16371cb6"} diff --git a/CHANGELOG.md b/CHANGELOG.md index 313641d7..411617fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,5 @@ # Changelog -## Unreleased - -### Other - -- Adopt --respect-item-release in changelog scripts and bump pm-changelog to 2026.7.24 ([pm-github-w7m7](https://github.com/unbraind/pm-github/blob/main/.agents/pm/chores/pm-github-w7m7.toon)) - ## 2026.7.28 - 2026-07-28 ### Other @@ -41,6 +35,10 @@ - Import dies with an unexplained pm list-all failed on any tracker over 1 MiB, and non-atomic --dry-run previews every issue as a create ([pm-github-tn92](https://github.com/unbraind/pm-github/blob/main/.agents/pm/issues/pm-github-tn92.toon)) +### Other + +- Adopt --respect-item-release in changelog scripts and bump pm-changelog to 2026.7.24 ([pm-github-w7m7](https://github.com/unbraind/pm-github/blob/main/.agents/pm/chores/pm-github-w7m7.toon)) + ## 2026.7.23 - 2026-07-23 ### Added From fdcfe7953b019560fa37986dd6a6b288ce09181c Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Tue, 28 Jul 2026 13:30:31 +0200 Subject: [PATCH 3/3] chore(pm): record the exact pm-changelog spec and resolution on the closed tracker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CodeRabbit flagged on pm-ts-starter#43 that the close reason's phrase "pinned at 2026.7.24 or later" is imprecise: the manifest declares a caret RANGE, not a pin. The substance of the closure holds — every repo's floor is at or above 2026.7.24 — but the wording was loose, so this appends a correction note carrying the exact `package.json` spec, the lockfile resolution, and the count of changelog scripts passing --respect-item-release, verified per repo today. The original record is preserved rather than rewritten, per CodeRabbit's suggested remedy and the append-only nature of these audit trails. --- .agents/pm/chores/pm-github-w7m7.toon | 5 +++-- .agents/pm/history/pm-github-w7m7.jsonl | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.agents/pm/chores/pm-github-w7m7.toon b/.agents/pm/chores/pm-github-w7m7.toon index b2530e05..cadbd697 100644 --- a/.agents/pm/chores/pm-github-w7m7.toon +++ b/.agents/pm/chores/pm-github-w7m7.toon @@ -6,13 +6,14 @@ status: closed priority: 2 tags[3]: changelog,fleet-consistency,release-hygiene created_at: "2026-07-24T21:30:26.518Z" -updated_at: "2026-07-28T11:22:47.536Z" +updated_at: "2026-07-28T11:30:02.569Z" closed_at: "2026-07-28T11:14:18.877Z" author: claude acceptance_criteria: "changelog, changelog:full, changelog:check and release:notes all pass --respect-item-release; pm-changelog devDependency is ^2026.7.24; npm run changelog:check is green; CHANGELOG.md content is unchanged by the flag for this repo (no item declares a release yet)" release: 2026.7.25 -notes[2]{created_at,author,text}: +notes[3]{created_at,author,text}: "2026-07-24T21:30:27.187Z",claude,"Verified in this repo: pm-changelog 2026.7.24 installed; npm run changelog:full regenerated CHANGELOG.md with the flag active and produced a ZERO-line diff, confirming the flag is a safe no-op until an item declares a release; npm run changelog:check exits 0." "2026-07-24T21:42:59.772Z",claude,"Greptile review finding adopted: the daily release workflow invokes pm-changelog DIRECTLY (npx pm-changelog, three times) rather than through the npm scripts, so patching only package.json left the generation path that actually produces the published CHANGELOG.md and RELEASE_NOTES.md without the flag while release:check validated with it. Added --respect-item-release to all three release.yml invocations so generation and validation agree. YAML re-validated." + "2026-07-28T11:30:02.568Z",claude-code,"Correction to the close reason, raised by CodeRabbit on pm-ts-starter#43: the phrase pinned at 2026.7.24 or later is imprecise, because the manifest declares a caret RANGE rather than a pin. Exact verified values for this repo on 2026-07-28: package.json declares pm-changelog ^2026.7.25, the lockfile resolves it to 2026.7.25, and 4 changelog scripts pass --respect-item-release. The substance of the closure is unchanged; only the wording was loose. Original record preserved rather than rewritten." close_reason: "Shipped and verified 2026-07-28: all four changelog scripts in package.json pass --respect-item-release and pm-changelog is pinned at 2026.7.24 or later. Closing so the tracker stops advertising completed work as in flight." body: "" diff --git a/.agents/pm/history/pm-github-w7m7.jsonl b/.agents/pm/history/pm-github-w7m7.jsonl index b5d18313..eb377063 100644 --- a/.agents/pm/history/pm-github-w7m7.jsonl +++ b/.agents/pm/history/pm-github-w7m7.jsonl @@ -5,3 +5,4 @@ {"ts":"2026-07-24T21:42:59.772Z","author":"claude","op":"note_add","patch":[{"op":"add","path":"/metadata/notes/1","value":{"created_at":"2026-07-24T21:42:59.772Z","author":"claude","text":"Greptile review finding adopted: the daily release workflow invokes pm-changelog DIRECTLY (npx pm-changelog, three times) rather than through the npm scripts, so patching only package.json left the generation path that actually produces the published CHANGELOG.md and RELEASE_NOTES.md without the flag while release:check validated with it. Added --respect-item-release to all three release.yml invocations so generation and validation agree. YAML re-validated."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-24T21:42:59.772Z"}],"before_hash":"eeeeb2b27870732e27ea0767ba55f85e05cd59c828ffa54c81f25f74c435e968","after_hash":"d0e768b06bdcdb640252ab1aed4f4d086f138c8cf0f7035c081455aa0ed8f027"} {"ts":"2026-07-28T11:14:18.877Z","author":"claude-code","author_source":"asserted","agent_harness":"claude-code","agent_instance":"178aa3540ae0b8aeb5b7ac26","agent_provenance":{"model":null,"effort":{"value":"xhigh","source":"environment"}},"op":"close","patch":[{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-28T11:14:18.877Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/closed_at","value":"2026-07-28T11:14:18.877Z"},{"op":"add","path":"/metadata/close_reason","value":"Shipped and verified 2026-07-28: all four changelog scripts in package.json pass --respect-item-release and pm-changelog is pinned at 2026.7.24 or later. Closing so the tracker stops advertising completed work as in flight."}],"before_hash":"d0e768b06bdcdb640252ab1aed4f4d086f138c8cf0f7035c081455aa0ed8f027","after_hash":"c7ad2f3735fff80d9484df1766e8383de375daa76e683b3d4bbf9187e107ddcb"} {"ts":"2026-07-28T11:22:47.536Z","author":"claude-code","author_source":"asserted","agent_harness":"claude-code","agent_instance":"178aa3540ae0b8aeb5b7ac26","agent_provenance":{"model":null,"effort":{"value":"xhigh","source":"environment"}},"op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-07-28T11:22:47.536Z"},{"op":"add","path":"/metadata/release","value":"2026.7.25"}],"before_hash":"c7ad2f3735fff80d9484df1766e8383de375daa76e683b3d4bbf9187e107ddcb","after_hash":"ae563e3eace23cdf8e380c30b7d0df9d762adc8473af293b8bf97aac16371cb6"} +{"ts":"2026-07-28T11:30:02.569Z","author":"claude-code","author_source":"asserted","agent_harness":"claude-code","agent_instance":"178aa3540ae0b8aeb5b7ac26","agent_provenance":{"model":null,"effort":{"value":"xhigh","source":"environment"}},"op":"note_add","patch":[{"op":"add","path":"/metadata/notes/2","value":{"created_at":"2026-07-28T11:30:02.568Z","author":"claude-code","text":"Correction to the close reason, raised by CodeRabbit on pm-ts-starter#43: the phrase pinned at 2026.7.24 or later is imprecise, because the manifest declares a caret RANGE rather than a pin. Exact verified values for this repo on 2026-07-28: package.json declares pm-changelog ^2026.7.25, the lockfile resolves it to 2026.7.25, and 4 changelog scripts pass --respect-item-release. The substance of the closure is unchanged; only the wording was loose. Original record preserved rather than rewritten."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-07-28T11:30:02.569Z"}],"before_hash":"ae563e3eace23cdf8e380c30b7d0df9d762adc8473af293b8bf97aac16371cb6","after_hash":"c8c7fa5b7a6c96db73b1edc44c670963354fe62834c73bdc24a59d8cfd42da37"}