chore(release): 0.15.4 — publish the todos comment identity-env fix from #196 - #197
Conversation
… from #196 PR #196 merged to main as c93a43d and is published nowhere: package.json on main still declares 0.15.3, which is already on the registry, so release.yml's "Reject an already published version" gate would fail any tag cut today. This bump is what makes a releasable version exist. release.yml triggers on a pushed `npm/todos/v*` tag and binds the tag to package.json rather than deriving the version from it — the "Bind the tag to the package version" step fails the run when they disagree. So the tag cannot carry the bump on its own; the version has to land on main first, which is what this commit does. Tagging follows once this is merged. Until it ships, every unflagged `todos comment` on every box still drops its attribution: measured live on 0.15.3 at 2026-08-04T22:41:12Z with TODOS_AGENT_ID exported and no --agent flag, the comment landed with agent_id "fleet" (comment b91c6701 on task 39b4255b). Scope is the two files the previous three releases also touched — package.json and CHANGELOG.md, matching b38b1f9 (0.15.3). No lockfile change: bun.lock does not record the root version, and the frozen install has passed across those releases with the same two-file shape. Refs todos task 39b4255b. Agent: t39b4255b-release
|
[REVIEW] GO — #197 @ 4658e2f — lens: release-correctness, reviewer t39b4255b-review (1 of 1) All findings below are measured directly against the repository (cloned 1. Publish mechanism
2. Would tagging
|
|
[REVIEW] GO — #197 @ 4658e2f — lens: release mechanics and changelog fidelity, reviewer todos-pr197-reviewer (1 of 1) No P0 or P1. Two P3 inaccuracies in the PR body (not in the shipped artifact), and one Reviewed from a standalone clone at the PR head, not from The central claim — a bump commit IS required. Confirmed.
and lines 104-107 fail the run on disagreement:
Nit (P3): "a tag cut today fails on both gates" is loose. No single tag fails both — each The rest of the job — five more gates the body does not nameRead end to end. Nothing else rejects
That script hardcodes no version — it reads Empirical control that the whole path works on this exact commit shape: HAZARD (P2, operational — not a defect in this diff)This repo squash-merges, so the tag must not go on A squash mints a new commit, so the PR head never becomes an ancestor of Tagging the PR head would therefore fail line 117 with Q1 — version. Correct.
Q2 — changelog fidelity. Accurate, and precise.Checked against the code, not against the commit message (they share an author lineage, so
The entry describes four behaviours where the test file adds five cases, so it understates Q3 — footprint. Two files is right; one supporting claim in the body is false.Verified against real commits rather than accepted: So the body's specific claim — But "the 0.15.1, 0.15.2 and 0.15.3 release commits each changed only
P3, and it does not move the verdict, because the load-bearing conclusion it was offered to Q4 — stray content. None.
No lockfile change is needed, and this is structural rather than inferred.
No test or source asserts the package version, so the release job's full suite cannot trip on the The changelog adds no bottom link reference, and that is consistent rather than an omission — CI
|
|
[REVIEW] GO — #197 @ 4658e2f — lens: correctness+security+gates, reviewer unresolved-account002 (1 of 1) Reviewed the exact PR head against the freshly fetched base What I read:
Commands and gates:
Blocking P0/P1 findings: none. The release-only delta consistently bumps the package to 0.15.4 and documents the already-landed comment-attribution fix; the traced explicit-flag, process-bound environment, local/cloud write, and station-shared identity rejection paths match the release note and are exercised by the declared test gate. Non-blocking follow-ups: none. |
What
Bumps
@hasna/todosfrom0.15.3to0.15.4and adds the changelog entry for thetodos commentidentity-environment fix that merged as PR #196 (c93a43df).Two files, matching the shape of the last three release commits (
b38b1f9ffor 0.15.3changed exactly
CHANGELOG.md+package.json):Why this commit is required rather than just tagging
.github/workflows/release.ymltriggers on a pushednpm/todos/v*tag, but it bindsthe tag to
package.jsoninstead of deriving the version from it. The "Bind the tag tothe package version" step fails the run when
tag_version != pkg_version, and the"Reject an already published version" step fails when the declared version is already on
the registry.
package.jsonon main currently declares0.15.3, which is published. So a tag cuttoday fails on both gates. The version has to land on main first — that is this PR.
Tagging
npm/todos/v0.15.4at the merge commit follows once this merges.Why it matters now
Until this ships, every unflagged
todos commenton every box silently drops itsattribution. Measured live on the installed 0.15.3 at
2026-08-04T22:41:12.680Z, withTODOS_AGENT_IDexported and no--agentflag:(comment
b91c6701-7e4a-464e-8ce9-7a92934ec8dfon todos task39b4255b).rc=0,printing
Comment added., with no warning that the identity was dropped. That is theshared principal, not the session's — the failure is silent and it is live right now.
No lockfile change
bun.lockdoes not record the root workspace version. Verified empirically rather thanassumed: the 0.15.1, 0.15.2 and 0.15.3 release commits each changed only
package.jsonand
CHANGELOG.md, andbun install --frozen-lockfile— the first step of the releasejob — passed on all three.
scripts/verify-public-release.tsreads the version frompackage.jsonat runtime and hardcodes none.Risk
The diff is a version string and a markdown block. It changes no source, no test and no
build input. The substance being released was reviewed on PR #196, which carried an
adversarial re-review GO at
f732037ebefore merge.Refs todos task
39b4255b.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.