[#1021] 2.7.1#1022
Conversation
Patch bump 2.7.0 -> 2.7.1 from main 31708d5. npm `latest` is 2.7.0, so a publish without this release-source bump would fail as a duplicate. Version strings only, edited by path rather than global replacement: package.json.version, package-lock.json.version, and package-lock.json.packages[""].version. No dependency, source, docs, or build-output diff; lockfile resolutions untouched. Ships since v2.7.0: #1010 (Claude file-chat wake delivery under continuous TUI repaint, PR #1020), #1018 (claude-opus-5 pinned model, PR #1019), #1003-#1009 (governed-batch + installation/operator docs refresh, PRs #1011-#1017). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Epic Alignment: PASS
Standalone #1021 implements only the release-source bump contract; public release/tag/publish remain correctly outside this PR.
Checked (evidence)
- Structural gate: live PR body includes filled
## EPIC Alignmentand## Self-Verification; live amended #1021 defines the standalone release flow and path-specific three-field contract. - Exact source version: parsed PR-tip manifests show
package.json.version = 2.7.1,package-lock.json.version = 2.7.1, andpackage-lock.json.packages[""].version = 2.7.1(package.json:3,package-lock.json:3,9). - Riskiest part: lockfile resolution integrity; live diff is exactly
package.json+1/-1 andpackage-lock.json+2/-2, and no residual"version": "2.7.0"remains in the PR-tip lockfile. - Release boundary: the diff contains no source, dependency, tag, release, or publish change; it conforms to #1021’s prohibition on
release:patch. - Kill-list: scanned all items — clean; no scope creep.
- CI:
gh pr checks 1022→test pass 1m4s(live).
Findings
- None.
Decision
The three root version fields are synchronized at 2.7.1 and dependency resolution is untouched. Approval applies to 7ea62768e97dde18916e559a6dcad628e18d8712.
|
@re2 APPROVE at 2 files, +3/−3, base @dev asked that the "no dependency resolution moved" claim be confirmed independently rather than eyeballed. I verified it structurally rather than by reading the diff — parsed both lock files and compared the full So of 600 lock entries, the only one whose content differs is the root package, and its sole change is the version string. That is a stronger statement than "the diff looks like 3 lines" — it rules out a reordered or re-resolved dependency hiding elsewhere in a 600-entry file. The global-replace hazard you flagged (deps at Checked (evidence)Scope. 2.7.1 is the correct next publishable patch. Ordering boundary respected — verified by absence, not by assertion.
Verification at this SHA in a clean worktree: No concerns. Head unmoved at On the post-merge boundary: agreed and worth restating for the gate — after merge, verification is that final |
Closes #1021.
Release-source bump
2.7.0→2.7.1from main31708d5. npmlatestis2.7.0, so a publish without this bump would fail as a duplicate version. Version strings only — no dependency, source, docs, or build-output diff.EPIC Alignment
npm publishare explicitly not part of this PR.package.jsonroot and both lockfile version fields stay identical; source merges before any tag/release/publish.Changes (2 files, +3/−3)
Exactly the three fields the ticket names, edited by path, not by global replacement:
versionpackage.json:3versionpackage-lock.json:3packages[""].versionpackage-lock.json:9Path-specific editing matters here even though a global replace would happen to be safe today:
package-lock.jsonalso carries dependency versions (e.g.2.6.1,2.1.1), so a string sweep is safe only by coincidence of no dep sharing the release version. Verified no2.7.0occurrence remains in either file, and lockfile dependency resolutions are untouched.Included since v2.7.0
claude-opus-5as an explicit pinned Claude model while preservingopus (latest)(PR [#1018] Add Claude Opus 5 as a pinned selectable model #1019).Self-Verification
npm test→ 64 passed, 0 failed, 2 skipped (the two skips are the pre-existing Jest-style files, out of Unref routes.js module-load pollers + add cross-platform 'npm test' (fix full-suite hang) #836 scope).npm run build→ succeeds, TypeScript clean.npm pack --dry-run→ succeeds:quadwork-2.7.1.tgz, 150 files, 1.1 MB packed / 3.3 MB unpacked,version: 2.7.1— confirms the bump reaches the tarball and thefilesallowlist still resolves (the Settings: changing an agent's Command doesn't update mcp_inject — converting to gemini leaves stale 'flag' and crashes the CLI #937/2.3.4 crash-loops on fresh install: server requires src/lib/injectMode.js, not in npm files whitelist (#937 regression) + add pack-smoke guard #939 guard).git diffagainst the baseline is exactly the three version lines in two files;grepconfirms no residual2.7.0in either.main@31708d5, the commit named in the ticket.release:patchwas not used and must not be — it chainsnpm version patch && git push origin main --follow-tags && gh release create --latest && npm publish, which both pushes directly tomain(against the project rule) and performs the public release plus publish in one non-interruptible command.After merge
Per the ticket's release flow, this PR stops at the source bump. After @Head merges I will verify final main reads
2.7.1and stop there. Creating thev2.7.1GitHub release/tag requires a separate explicit public-release authorization and is the PO's action — not chained from merge verification — andnpm publishis an operator-only gate.🤖 Generated with Claude Code