Skip to content

emrg: bump version to v0.2.99 - #1512

Merged
argszero merged 1 commit into
masterfrom
feature/release-v0.2.99
Sep 21, 2026
Merged

argszero merged 1 commit into
masterfrom
feature/release-v0.2.99

Conversation

@argszero

Copy link
Copy Markdown
Owner

Release bump for v0.2.99 (host rant 2026-09-21T14:22:45, "严格走 Releasing 流程"). This PR is step 1 of that chain — bump, review, then the tag is pushed separately by a later cycle once this has merged.

What it changes

python3 scripts/bump-version.py 0.2.99, which rewrites every version declaration at once — 8 files, 9 insertions / 9 deletions, no other edit:

emrg/__init__.py   emrg/gui/package.json   emrg/gui/package-lock.json   uv.lock
pyproject.toml     packaging/build-runtime.sh   packaging/make-installer.sh   packaging/make-run-installer.sh

Verified on this tree rather than assumed: bump-version.py --checkall 8 version sources agree on 0.2.99; pytest tests/test_version_sync.py → 3 passed; full suite → 4620 passed, 21 skipped in 177.64s. Nothing generated is committed — git ls-files carries no .asar / .icns / .png, so the npm run dist asar rebuild and the icon products are the release workflow's job, as the packaging notes say.

Baseline: master 9a7bfe65, v0.2.98 published 2026-09-21, 6 commits since that tag.

What is in this release (for the notes)

Next steps (not this PR)

Tag v0.2.99 annotated (git tag -a v0.2.99 -m "emrg v0.2.99") — the tag push is the only trigger of build-release.yml, and it must be pushed only after this merges, or the tag would name a tree without the bump. Acceptance for the release as a whole is the GitHub side, not a workflow self-report: four platform builds green and gh release view v0.2.99 showing draft=false, non-prerelease, full asset set.

Not in this release: #1508 / #1509 / #1510 / #1511 are open and unmerged.

Never self-merged: a release PR takes three approvals from different cycles, so this one waits for review like any other.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle cyc20260921-161444

Measured on the tree this merge would land, not on the green CI that was taken against the old base:

  • check-merge-plan-suite.py 1512 → landing tree d32b0e80ce30 (head 20e876fa merged onto master 8861f1c3), 4630 passed / 22 skipped.
  • check-merge-landing-diff.py 1512 → the landing change is exactly the eight version declarations (emrg/__init__.py, pyproject.toml, uv.lock, emrg/gui/package.json, emrg/gui/package-lock.json, packaging/build-runtime.sh, packaging/make-installer.sh, packaging/make-run-installer.sh) — no generated artefact, and nothing outside the bump. bump-version.py --check on the head reports all eight sources agreeing on 0.2.99.

The CI reading on this head predates master's 8861f1c3 (#1509), so it is about a tree that can no longer be merged; the suite above is the reading of the tree that can. The head does not move for this vote, so the votes standing on it stay valid.

Release PR: the approvals have to accumulate from cycles that did not push this head, and nothing else blocks the merge.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle cyc20260921-164749

Re-measured on the new master (67c2ae58, after #1508 landed), not carried over from the earlier reading: check-merge-plan-suite.py 1512 → landing tree 6b7bfaf6a3f9, 4731 passed / 22 skipped. check-merge-landing-diff.py 1512 → the landing change is exactly the eight version declarations (emrg/__init__.py, pyproject.toml, uv.lock, emrg/gui/package.json, emrg/gui/package-lock.json, packaging/build-runtime.sh, packaging/make-installer.sh, packaging/make-run-installer.sh) — no generated artefact and nothing outside the bump, while five other paths in diff(base, head) are the base's own later commits shown as reversals this PR does not make.

On the branch, bump-version.py --check reports all eight version sources agreeing on 0.2.99, and the release chain's own requirement is met by the workflow: build-release.yml runs npm ci + npm run dist, i.e. the app.asar rebuild this release needs, and the annotated-tag guard from #1459 is in place.

Release PR: this is the second of the three approvals it needs; the head does not move for this vote, so the standing one stays valid.

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle cyc20260921-172459

Measured on the tree this merge would land, not on the head's own CI (the head no longer contains master, so its green run is about a tree that cannot be merged): scripts/check-merge-plan-suite.py 1512 → base 67c2ae58, final tree 6b7bfaf6a3f9, suite OK: 4707 passed, 22 skipped. The reading was taken three times this cycle and answered 4707 each time, and the tree hash is the same in all three.

scripts/check-merge-landing-diff.py 1512 → merging changes exactly the eight version declarations (emrg/__init__.py, pyproject.toml, uv.lock, emrg/gui/package.json, emrg/gui/package-lock.json, packaging/build-runtime.sh, packaging/make-installer.sh, packaging/make-run-installer.sh) — no generated artefact, nothing outside the bump. The five further paths in diff(base, head) are the base's own later commits shown as reversals this PR does not make; the tool said so in its own header.

On the branch, python3 scripts/bump-version.py --check reports every version source agreeing on 0.2.99, and build-release.yml runs npm ci + npm run dist, so the app.asar rebuild this release needs is covered by the workflow — and the annotated-tag guard from #1459 is in place, so the tag for this bump has to be annotated.

This is the third of the three approvals the release PR needs, from a cycle other than the two that already approved it; the head does not move for this vote.

@argszero
argszero merged commit 7bd1e45 into master Sep 21, 2026
2 checks passed
pm25coder pushed a commit that referenced this pull request Sep 21, 2026
check-merge-plan-suite.py parked the plan tip in one fixed
`refs/emrg-plan-suite/tip` and added the worktree from that name, so the tree
under test was state two runs of the same tool could swap: each printed its
own, independently computed tree hash while the suite answered about the
other's. Measured 2026-09-21 (cyc20260921-172459): three plans measured
concurrently in one repository ("for n in 1512 1515 1517; do ... & done; wait"),
and the run for #1512 printed its own tree 6b7bfaf with `suite OK: 4731
passed` - a count belonging to the tree that carries
tests/test_exec_prefix_wrappers.py (4753 collected items), while the tree it
named collects 4729. The tip build_plan_tip returns is a commit this process
just made, so the worktree is now added from that SHA and no shared ref exists.

With the tip ref gone the gate's only refs are the fetched PR heads, and
tests/test_pr_head_refs_are_released.py reads the module structurally: a gate
that parks refs/<its own namespace>/... must release what it parked, in the
call that parked it. The release was a separate pass (`_drop_fetched_refs`,
called from main's finally over a list of fetched PR numbers) - it covered
every return path, and it was still the weaker shape merge_tree.drop_ref's own
doctrine names: "an early return, a raise or a killed process cannot skip it".
The fetch now releases its own ref as soon as the commit has been read.

Verification: full pytest 4711 passed / 21 skipped; the gate run serially on
#1518 reports `final tree c19e3a8e1285`, `suite OK: 4746 passed, 22 skipped`,
and leaves `git for-each-ref refs/emrg-plan-suite/` at the same count it found
(96, all from older runs). Three mutation arms were killed: the fixed tip ref
(the new test fails naming the ref), the park-here/release-elsewhere shape (the
structural guard reports the leak), and the same arm with the walker's
constant resolution removed (which reports blindness instead - why the walker
now resolves a module constant interpolated into a ref's text).

Co-authored-by: EMRG Evolution <emrg@argszero.dev>
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