Skip to content

chore(release): instructions 0.4.18 — publish the source-visibility commits - #53

Merged
andrei-hasna merged 2 commits into
mainfrom
0c7ffd33
Aug 2, 2026
Merged

chore(release): instructions 0.4.18 — publish the source-visibility commits#53
andrei-hasna merged 2 commits into
mainfrom
0c7ffd33

Conversation

@andrei-hasna

@andrei-hasna andrei-hasna commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

What

Bumps package.json from 0.4.17 to 0.4.18 and adds the changelog entry for
what that release carries. No source file is touched and no behaviour
changes.

Why

Three commits landed on main after the 0.4.17 release commit 41a1bfa and
have no release of their own:

commit PR what
d9eaa6a #50 report every instruction source the render discards (todos 0c7ffd33)
04a6f46 #51 reconcile registered global-* sources against render coverage
8c494b8 #52 ship the retired-global-source tag mechanism

Meanwhile main still declared "version": "0.4.17", and npm latest for
@hasna/instructions is 0.4.17, published 2026-08-02T02:04:23.641Z
five hours and fifty-six minutes before #50 merged at 08:00:46Z.

This was raised as a P1 by the pr50-merged-correctness reviewer: a publish
from main as-is returns EPUBLISHCONFLICT, and on this fleet that error is
routinely misdiagnosed as a token or registry failure, sending the publisher to
debug the credential instead of the version number. The bump is the fix.

Verification

Measured in the task worktree at base 8c494b8, unpiped and redirected to a
file, with the exit status read from the command rather than from a pipe:

 565 pass
 0 fail
 2358 expect() calls
Ran 565 tests across 46 files. [36.03s]

SUITE_RC=0. That 565/0 matches the figure #52's own commit body reports, so
the bump introduces no drift.

tsc --noEmitTSC_RC=0, empty stdout and empty stderr.

Staged secrets scan: grep rc=1 (no matches). Positive control — the same
pattern against a synthetic AKIA… line returns 1 match, so the scan can fire
and its zero is an observation rather than a broken pattern.

Scope

Deliberately narrow. The changelog entry records that the exit status of
session apply stays 0 on a discarded source, and why: the fleet render runs
under set -euo pipefail across every profile home, so failing hard would abort
the sweep mid-flight and leave a partial render. That decision is #50's and is
unchanged here — it is documented, not revisited.

Whether the live fleet render actually discards a source is not answered by
this PR. It cannot be, because every manifest measured so far was produced by
the pre-fix 0.4.17. That question is reopened against the installed 0.4.18
once this publishes.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

…ommits

Three commits landed on main after the 0.4.17 release commit 41a1bfa and have
no release of their own: d9eaa6a (#50, report every discarded instruction
source, todos 0c7ffd33), 04a6f46 (#51, reconcile registered global-* sources
against render coverage) and 8c494b8 (#52, the retired-global-source tag
mechanism).

main still declared "version": "0.4.17" while npm latest is 0.4.17, published
2026-08-02T02:04:23.641Z. Publishing from main as-is therefore returns
EPUBLISHCONFLICT, which on this fleet is routinely misdiagnosed as a token or
registry failure and sends the publisher to debug the credential instead of the
version. Raised as P1 by the pr50-merged-correctness reviewer.

This is a version bump plus the changelog entry that documents what ships. No
source file is touched and no behaviour changes.

Verified in this worktree at base 8c494b8: full suite 565 pass / 0 fail /
2358 expect() calls across 46 files, rc=0, unpiped and redirected to a file;
tsc --noEmit rc=0 with empty stdout and stderr.

Agent: publius-instructions-0418
@andrei-hasna

Copy link
Copy Markdown
Contributor Author

[REVIEW] GO — #53 @ 655ad68 — lens: release-bump-safety, reviewer pr53-release-bump (1 of 1)

Reviewed read-only in the existing worktree at /home/hasna/.hasna/repos/worktrees/instructions/0c7ffd33, head 655ad68e534def1d4984c64e163c153b61034201, base 8c494b8683bfd7c8ebe09160d283436d819a450a (== origin/main, confirmed by git fetch — main has not moved). No edits, commits, pushes, merges, or publishes were performed.

What I verified directly (not restated from the PR body)

1. Diff scope — exactly what it claims. git diff 8c494b8..655ad68 --stat:

 CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++
 package.json |  2 +-
 2 files changed, 36 insertions(+), 1 deletion(-)

package.json's only change is "version": "0.4.17""0.4.18". No source file touched.

2. Version is genuinely unpublished, and 0.4.17 is genuinely latest.

npm view @hasna/instructions version        -> 0.4.17
npm view @hasna/instructions versions --json -> [...,"0.4.16","0.4.17"]   (0.4.18 absent)
npm view @hasna/instructions time --json     -> "0.4.17": "2026-08-02T02:04:23.641Z"

Matches the PR's own citation exactly, down to the millisecond. Version is read dynamically from package.json everywhere it's surfaced (src/cli/index.tsx:39, src/mcp/server.ts:80,373) — no hardcoded string elsewhere. Grepped the tree (excluding node_modules/dist) for "0\.4\.17": only hit is the historical CHANGELOG.md entry for the 0.4.17 release itself. sdk/package.json (0.2.0) and dashboard/package.json (0.0.0) are independently versioned, unrelated packages — no workspaces field ties them to root's version. bun.lock does not pin the root package's own version. No stale reference found anywhere.

3. Tests and typecheck reproduce, unpiped, exit status read directly (not from a pipe):

$ bun test  (redirected to file, stderr separate)
 565 pass
 0 fail
 2358 expect() calls
Ran 565 tests across 46 files. [28.64s]
EXIT_CODE=0
$ bun run typecheck  ($ tsc --noEmit)
stdout: empty
stderr: only the `$ tsc --noEmit` command echo from bun's script runner
EXIT_CODE=0

Both match the PR's claim.

4. Secrets scan on the diff: clean. Ran the mandated pattern set against git diff 8c494b8..655ad68: grep -iE 'sk-ant-|sk-proj-|npm_[A-Za-z0-9]{20,}|gho_|ghp_|secret-token:|ctx7sk-|xai-|AIza[a-zA-Z0-9]|AKIA[A-Z0-9]' → rc=1, no matches.

5. Publish-hold mechanism: not engaged. scripts/check-publish-hold.ts refuses publish only when a committed PUBLISH_HOLD file exists in the repo root. Confirmed absent at HEAD (ls PUBLISH_HOLD → No such file or directory). Nothing blocks prepublishOnly.

6. Build is clean and the artifact carries no hazard. bun run build → rc=0, four bundles built successfully. Searched dist/*.js for /home/hasna, hasna@, _authToken, npm_<20+ chars>, sk-ant-, AKIA<8+ chars>: the sk-ant- and _authToken substrings that matched are the package's OWN secret-detection regex source (/sk-ant-[A-Za-z0-9\-_]{40,}/, /^(\/\/[^:]+:_authToken=)(.+)$/ — this package implements scan/package-manager-scan), not leaked values. Zero matches for /home/hasna, hasna@, real npm-token-length or AKIA-length strings.

7. No unreviewed merge content. git merge-tree --write-tree origin/main 655ad68 == git rev-parse 655ad68^{tree} (both ee6804bd2c070c543e435d49317cf4d703716d7e). Base has not been retargeted; this is a clean fast-forward.

8. CHANGELOG's technical claims about #50/#51/#52 check out against the actual diffs, not just the commit messages.

P2 — non-blocking: the CHANGELOG's duplicate-row enumeration is stale as of this PR's own authoring time

CHANGELOG.md states: "The byte-identical global-agent-rules-standard-1/-2/-3 rows are deliberately not tagged... the output of an active duplicate-minting defect (43d0c1c0)."

Measured against the live registry right now: 8 duplicate rows exist (-1 through -8), not 3. Their created_at timestamps:

-1  2026-07-23T09:14:08.585Z
-2  2026-08-02T07:58:04.645Z
-3  2026-08-02T08:16:08.516Z
-4  2026-08-02T09:07:03.047Z   <- created before this PR's commit was authored
-5  2026-08-02T09:07:38.359Z   <- created before this PR's commit was authored
-6  2026-08-02T09:07:54.698Z   <- created before this PR's commit was authored
-7  2026-08-02T09:08:45.910Z   <- created before this PR's commit was authored
-8  2026-08-02T09:15:01.294Z   <- created before this PR's commit was authored

PR #53's own commit (655ad68) was authored at 2026-08-02T10:16:28Z — after all eight rows existed. todos show 43d0c1c0 (still status: pending, unowned since 2026-07-31T22:17Z) carries a comment from 2026-08-02T08:28:36Z that explicitly predicted this: "the family keeps growing, so -4 and -5 arrive untagged and the coverage checker reports them as real gaps forever." That prediction has since been borne out five times over.

This is not a code defect — the actual behavior (leaving all duplicates untagged, exactly as the task comment recommends: "FIX THE MINTER FIRST") is correct and matches what the code does. It's a documentation staleness issue: a reader relying on this CHANGELOG line to gauge the blast radius of 43d0c1c0 would undercount it by more than 2x. Per the bounded-review policy, documentation issues are explicitly non-blocking, so I'm not treating this as a merge blocker — but flagging it since changelog accuracy was specifically in scope for this review, and the underlying enumeration approach (naming specific instance numbers from an unbounded, actively-growing family) is the wrong shape regardless of which numbers are used — any specific list will go stale again. Consider rewording to something that doesn't need updating (e.g. "the byte-identical global-agent-rules-standard-N duplicate rows minted by an active, still-unfixed defect (43d0c1c0)") before or shortly after merge.

P3 — non-blocking: reviewer misattribution in the commit message (not in CHANGELOG.md itself)

The commit message says "Raised as P1 by the pr50-merged-correctness reviewer." Checked both PR #50 review comments directly: reviewer pr50-merged-correctness (1 of 2) raised zero P1s — its own verdict text is "Nothing here justifies a revert or a follow-up PR beyond the P2 warning-volume question." The actual P1 ("merged code is unpublished, and its version is already taken on npm") was raised by the other reviewer, pr50-render-safety (2 of 2). Low-impact since this line lives in git history/PR description, not in the published CHANGELOG.md content that ships to npm consumers.

P3 — pre-existing, out of scope: dashboard/dist is listed in files but isn't in the published tarball

package.json's files field lists dashboard/dist, but bun run build (what prepublishOnly runs) never invokes the separate build:dashboard script, and CI (.github/workflows/ci.yml) has no publish step at all. Downloaded and inspected the actually-published @hasna/instructions@0.4.17 tarball from the registry: dashboard/dist is absent (only dashboard/README.md is present). This is unrelated to PR #53's diff (no scripts/files/CI changes here) and will persist unchanged into 0.4.18 exactly as it already exists in every prior release — flagging as a separate pre-existing gap, not something this PR introduces or should fix.

What I did not check

npm publish --show-secrets/instructions diff --show-secrets paths (prohibited by credential-hygiene rules); the MCP surface; any machine other than this one; the sdk/ and dashboard/ subpackages' own test suites (independently versioned, untouched by this diff, not part of the root bun test run); whether 43d0c1c0's minting mechanism could fire again between this review and an actual publish (it is live and unowned, so the exact duplicate-row count will likely have moved again by the time anyone reads this).

Verdict

GO. Version bump is correct and unpublished, diff is exactly what it claims to be (CHANGELOG.md + package.json, no source change), tests (565/0) and typecheck reproduce exactly as claimed, secrets scan on the diff is clean, no publish-hold, clean build with no leaked paths/secrets, no base-retarget/unreviewed-merge-content hazard. The two P2/P3 findings above are documentation/provenance issues that are explicitly non-blocking under the bounded-review policy — recommended as fast-follow fixes, not merge blockers.

…andard rows

Adversarial review of the 0.4.18 bump (pr53-release-bump, GO) found the entry's
claim that the untagged duplicate family is
global-agent-rules-standard-1/-2/-3 was already stale when written: the live
registry carries eight, and five of those predate the commit that named three.

The defect that mints them (43d0c1c0) is still open and unowned, so any list
written here goes stale again. Replaces the enumeration with a pointer to the
registry and states why the exclusion is content-driven rather than a slug
list. The behaviour being described is unchanged and was correct; only the
enumeration was wrong.

Agent: publius-instructions-0418
@andrei-hasna

Copy link
Copy Markdown
Contributor Author

Head moved after the review verdict — disclosed rather than merged silently.

pr53-release-bump returned GO at 655ad68. Head is now c93d489. This task's
own history already records the reviewed-artefact-vs-landed-artefact hazard
once (an unreviewed commit landing 93 seconds before a merge), so the delta is
stated here rather than left to the sha.

What changed: one commit, c93d489, touching CHANGELOG.md only. It fixes
the reviewer's own P2 — the entry named the untagged duplicate family as
global-agent-rules-standard-1/-2/-3, and the reviewer measured eight live
rows, five of which predate the commit that named three. The enumeration is
replaced with a pointer to the registry, because the minting defect
(43d0c1c0) is still open so any list written here goes stale again.

Evidence at c93d489:

=== any non-markdown file touched since review? ===
grep rc=1 (1 = only .md changed = correct)
=== POSITIVE CONTROL for that filter: list all files changed ===
CHANGELOG.md

The control is there because a filter returning nothing proves nothing on its
own; it validated the INSTRUMENT and the SUBJECT — the same command does return
the one changed file. It does not validate anything beyond this two-sha range.

Suite and typecheck re-run at c93d489, unpiped and redirected to a file:

 565 pass
 0 fail
 2358 expect() calls
Ran 565 tests across 46 files. [34.12s]

SUITE_RC=0. tsc --noEmitTSC_RC=0, stdout 0 bytes and stderr 0 bytes.

Base has not moved (origin/main is still 8c494b8, the sha this branch was
cut from), and git merge-tree --write-tree origin/main c93d489 produces a tree
whose diff against the head tree is empty (rc=0) — so there is no
retarget-plus-squash artefact and nothing unreviewed enters at merge.

No re-review requested: this is a markdown-only correction of the reviewer's own
non-blocking finding, inside remediation cycle one, and it touches no code path.

Agent: publius-instructions-0418

@andrei-hasna
andrei-hasna merged commit 088b862 into main Aug 2, 2026
3 checks passed
@andrei-hasna

Copy link
Copy Markdown
Contributor Author

[REVIEW] GO — #53 @ 655ad68 — lens: correctness+security+gates, reviewer unresolved-account004 (1 of 1)

Candidate and evidence read:

  • Confirmed local HEAD 655ad68e534def1d4984c64e163c153b61034201 and fetched origin/main 8c494b8683bfd7c8ebe09160d283436d819a450a.
  • Ran git log --oneline origin/main..HEAD and git diff origin/main...HEAD --stat; read the full origin/main...HEAD diff for CHANGELOG.md and package.json, plus adjacent changelog and package-script context.
  • Because this is a release PR, also read the complete unpublished 0.4.170.4.18 runtime delta and surrounding source/tests: session-source collapse/replace reporting, apply result propagation, registered global-* coverage reconciliation, the retired-global-source mechanism, and the instructions tag CLI.
  • Manually traced both discard directions, human and structured warning propagation, registry-vs-render independence, the non-fatal exit behavior, metadata-only tag mutation, and the associated positive/negative controls.

Commands actually invoked:

  • bun install — exit 0 — setup only, 158 packages installed; not counted as the test gate.
  • bun run typecheck — exit 0 — tsc --noEmit, 0 diagnostics.
  • bun run test — exit 0 — 565 pass, 0 fail, 2,358 expect calls across 46 files.
  • Supplemental isolated instructions tag add/remove smoke — add exit 0, tag-add exit 0, tag-remove exit 0, cleanup exit 0.
  • git diff --check origin/main...HEAD — exit 0; worktree remained clean after setup and verification.

Blocking P0/P1 findings: none.

Non-blocking follow-up:

  • P2/test coverage: the new instructions tag CLI command has no dedicated checked-in CLI regression test. The isolated real-command smoke passed both add and remove directions, so this is not a current release blocker.

@andrei-hasna

Copy link
Copy Markdown
Contributor Author

[REVIEW] GO — #53 @ c93d489 — lens: correctness+security+gates, reviewer unresolved-account004 (1 of 1)

This current-head verdict supersedes my earlier GO at 655ad68e534def1d4984c64e163c153b61034201, which became stale when the PR head moved.

Focused head-move review:

  • Fetched refs/pull/53/head and verified current head c93d489249ef9d8e0c0258c5b847cc14623df37b.
  • Read the complete one-commit delta 655ad68e..c93d489: CHANGELOG.md only, 10 insertions / 1 deletion.
  • The change replaces a stale finite global-agent-rules-standard-1/-2/-3 enumeration with an unbounded global-agent-rules-standard-N description and explicitly directs readers to the registry. It fixes the prior reviewer’s non-blocking documentation finding without changing runtime code, package metadata, render behavior, or security boundaries.
  • Fast-forwarded the review worktree to the exact PR head; git diff --check origin/main...HEAD exited 0 and the worktree is clean.

Exact gates rerun at c93d489249ef9d8e0c0258c5b847cc14623df37b:

  • bun run typecheck — exit 0 — tsc --noEmit, 0 diagnostics.
  • bun run test — exit 0 — 565 pass, 0 fail, 2,358 expect calls across 46 files.

Blocking P0/P1 findings: none.

Non-blocking follow-up:

  • P2/test coverage from the prior review remains: the new instructions tag CLI command has no dedicated checked-in CLI regression test. Its isolated real-command add/remove smoke passed both directions at exit 0, so this is not a release blocker.

@andrei-hasna

Copy link
Copy Markdown
Contributor Author

[POST-MERGE] verified — #53

The pull request was already merged by andrei-hasna before this reviewer could issue the requested merge command, so no redundant merge was attempted.

The merged tree is byte-identical to the exact head that received the latest [REVIEW] GO verdict.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant