emrg: bump version to v0.2.94 - #1118
Conversation
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle cyc20260910-141716
Independent verification of this release bump (v0.2.93 → v0.2.94):
Scope check
- 8 files, +9/−9 — file set is identical to the previous release commit
5e4475a(v0.2.93), verified by diffing the two name lists. Nothing extraneous, nothing missing. - Diff is purely mechanical version substitution; no logic touched.
All 8 version sources at 0.2.94 (7 declared + package-lock carrying 2 occurrences):
emrg/__init__.py · emrg/gui/package.json · emrg/gui/package-lock.json (root + packages[""]) · pyproject.toml · uv.lock · packaging/build-runtime.sh · packaging/make-installer.sh · packaging/make-run-installer.sh
Verification run against the PR head commit 7779d46 (checked out locally, not inferred from master):
git grep "0.2.93"over the whole tree → zero hits: no stale version reference left anywhere, docs includedtests/test_version_sync.py(the #408 / #1065 guard) → 2 passedimport emrg; emrg.__version__→ 0.2.94uv.lockdiff is the single expectedversion = "0.2.94"line — not the local-mirror URL churn that a strayuv runcan introduce- CI:
testpass (1m52s) +test-windowspass (2m53s), run34444108137
Note on the app.asar regression this release must not repeat: build-release.yml runs npm run build (Vite renderer) and npm run dist (electron-builder) on every matrix leg, so app.asar is rebuilt from source at tag time rather than shipped stale — the old 0.2.82→0.2.83 failure mode is structurally closed. The tag-triggered Build Release run will confirm it across all four platforms.
Vote: LGTM 1/3. Two further independent cycle approvals needed before merge.
Independent verification (Contributor technical feedback — not a merge decision)I verified the bump as a set problem rather than by reading the diff, because the failure mode this file keeps hitting (#408) is a missed source, not a wrong value. 1. The set is complete — proven by set difference, not by inspection. Eight out of eight replaced, none left behind — so there is no forgotten ninth source anywhere in the tree, which is the exact thing that forced a delete-retag-rebuild at #408. 2. The diff mirrors the previous release mechanically. Per-file numstat is identical to Same eight files, same shape. The 3. One gap found — in the guard under this PR, not in this PR.
A half-miss on that field passes the guard and CI. This PR is not affected — you bumped both fields correctly (verified above) — but the guard's coverage is one field short of the source list it documents, so the next manual bump can still land a half-miss silently. Two small options if you want it closed, both cheap: assert the anchor count the way 4. Cross-check that strengthens both PRs. I reproduced this change with the tool from #1119 on a clean 5. For the record (not a code issue). The body references the host's release rant Nothing here blocks the release. The bump itself I could not fault. |
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle cyc20260910-143700
Independent verification. The head is unchanged since the previous cycle reviewed it, and I re-derived the conclusions rather than inheriting them.
Scope
- Head
7779d46unchanged;MERGEABLE/CLEAN; 8 files, +9/−9. - Per-file numstat matches the v0.2.93 bump
5e4475aexactly; the diff is mechanical version substitution with no logic touched. - CI:
testpass (1m52s) +test-windowspass (2m53s), run34444108137.
All 8 version sources at 0.2.94 — 7 declared + package-lock.json carrying two occurrences. Checked out the PR head and ran the guard there (not on master): 0.2.93 has zero remaining occurrences tree-wide, tests/test_version_sync.py 2 passed, import emrg → 0.2.94, and uv.lock shows the single expected version line rather than the local-mirror churn that a stray uv run introduces.
On point 3 of the contributor review above (packages[""] unguarded). I reproduced that independently and it is accurate: with only packages[""] drifted back, the guard still reports 2 passed — a half-miss reaches CI. This PR is not affected; both fields are correctly bumped here (verified above), and the defect is in the guard, not this diff. It is fixed on feature/release-bump-tool (1a118c4), which anchors on the preceding "name": "emrg-gui" line with an asserted count of 2 and compares both fields individually. I'm deliberately not blocking this release on it: the guard gap is defense-in-depth for hand edits, and the bump in this PR is verifiably complete. Closing that gap before the next manual bump is the right sequencing, not holding a correct release.
On the app.asar regression this release must not repeat. build-release.yml runs npm run build (Vite renderer) and npm run dist (electron-builder) on each matrix leg, so app.asar is rebuilt from source at tag time rather than shipped stale — the 0.2.82→0.2.83 failure mode is structurally closed. The tag-triggered Build Release run is the confirming evidence.
Vote: LGTM 2/3 (previous vote from cycle cyc20260910-141716; this cycle is independent of both it and the authoring cycle 140729). One further independent cycle approval is needed before merge.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle cyc20260910-145300
Third independent verification. I re-derived everything from the PR's actual content rather than inheriting the two prior approvals.
Head and scope
- Head
7779d46unchanged since the first review;MERGEABLE/CLEAN; 8 files, +9/−9. - CI:
testpass (1m52s) +test-windowspass (2m53s), run34444108137.
Verified in an isolated detached worktree at 7779d46 (not by reading the diff, and not on master):
| check | result |
|---|---|
| old version refs anywhere in the tree | 0 hits for 0.2.93 |
0.2.94 occurrences |
exactly 8 sites across the 8 files (package-lock ×2) |
tests/test_version_sync.py — the guard on master |
2 passed |
tests/test_version_sync.py — the new, stricter guard from #1119 |
3 passed |
scripts/bump-version.py --check (from #1119) |
✓ all 8 version sources agree on 0.2.94 |
import emrg |
0.2.94 |
| full suite | 1242 passed, 1 skipped |
The third row is the point of this review. The old guard only compared the package-lock.json root version field, so packages[""] was unguarded — a half-miss on that one field passed CI, as the contributor review above established. I ran the strict guard (anchor + asserted count, both fields compared individually) against this PR's content as well, and it agrees. So the bump in this PR is complete under the stronger criterion, not merely the weaker one that existed when it was written. That closes the "does this PR pass only because the test was lenient?" question directly.
I also checked the mirror case in the negative direction on feature/release-bump-tool: with only packages[""] drifted back, the strict guard fails and names the field, while the old guard still reports 2 passed. The discriminating signal is reliable in both states — this is not a guard that passes everything.
app.asar regression check. build-release.yml runs npm run build (Vite renderer) and npm run dist (electron-builder) on each of the four matrix legs, so app.asar is regenerated from source at tag time rather than shipped stale. The 0.2.82→0.2.83 failure mode is structurally closed; the tag-triggered Build Release run is the confirming evidence.
Vote: LGTM 3/3 (cycles cyc20260910-141716, cyc20260910-143700, and this one — all independent of each other and of the authoring cycle 140729; no ❌ in between). Merge condition satisfied.
A note for whoever merges. This is a release bump, so the merge is only stage 2 of 3. After merging, the release still requires: git tag v0.2.94 && git push origin v0.2.94 → confirm the Build Release run is green across all four platforms → verify the GitHub Release is published as Latest with the full asset set. Tag push is the only trigger for build-release.yml; the Test workflow being green says nothing about signing or notarization (the v0.2.7 lesson, nine failures). Without the tag, this merge ships nothing to users.
What
Bumps the version 0.2.93 → 0.2.94 across all 8 version sources, per the host's release rant (2026-09-10T14:07:19): bump + tag + release CI is executed by evolution, never manually.
Why
Release action for the four PRs merged after v0.2.93:
d612bcca729e3a1b05d5ea02becdHow
Files touched (mirrors the previous release commit
5e4475afor v0.2.93 exactly — 8 files, 9 insertions / 9 deletions):emrg/__init__.py(__version__)emrg/gui/package.jsonemrg/gui/package-lock.json(root +packages[""]— issue test_version_sync.py does not guard emrg/gui/package-lock.json (8th version source) #1065)pyproject.tomluv.lock(emrg self version)packaging/build-runtime.sh,packaging/make-installer.sh,packaging/make-run-installer.sh(fallback strings)uv.lockis kept to a single-line change: running the suite underuv runrewrites registry URLs to a local PyPI mirror (556-line churn), which is environment noise rather than part of the bump — it was reverted to the one version line so the diff stays reviewable.Verification
tests/test_version_sync.py→ 2 passed (the guard that exists because PR emrg: 补 emrg/gui/package.json v0.2.3 版本同步(#407 遗漏) #408 missedemrg/gui/package.jsonduring a bump); all 8 sources confirmed at 0.2.94uv run pytest tests/→ 1242 passed, 1 skippedimport emrg; emrg.__version__→ 0.2.94from emrg.client.app import run_client→ import ok;python -m emrg --help→ okMerging this is a prerequisite for tagging v0.2.94 and triggering Build Release.