Skip to content

emrg: bump version to v0.2.95 - #1194

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

emrg: bump version to v0.2.95#1194
argszero merged 1 commit into
masterfrom
feature/release-v0.2.95

Conversation

@argszero

@argszero argszero commented Sep 13, 2026

Copy link
Copy Markdown
Owner

What

Bumps the version 0.2.94 → 0.2.95 across all 8 version sources, per the host's release rant (2026-09-13T21:27:06, emrg): bump + tag + release CI is executed by evolution, never manually.

Why

58 commits landed on master since v0.2.94 (37d687e, published 2026-09-10). By theme:

A. Merge-precheck tool family (the bulk of this release — 8 new scripts on master + their tests)

PR Tool / change
#1139 #1144 #1145 #1170 check-vote-count.py — counts LGTMs that still count (a vote predating a head push is void, ❌ resets the run, one vote per cycle), reads verdicts through markdown decoration, and now also reports mergeable/mergeStateStatus (votes alone are not mergeability)
#1152 #1138 #1153 check-pr-base.py, check-merge-freshness.py, check-merge-order.py — can the base reach master, is the green CI about a tree that can still merge, which PRs does merging this one dirty
#1155 check-merge-tree-health.py — does the tree produced by merging this PR still pass the repo's own guards
#1175 check-merge-pairs.py — any two PRs that merge cleanly but land a broken tree
#1158 #1161 #1169 #1172 #1174 #1178 #1180 #1182 check-merge-sequence.py — is every step of an ordered plan healthy; default plan is now cumulative, an empty plan reports "unmeasurable" rather than "all pass"
#1155 #1186 #1188 #1190 check-merge-plan-suite.py — the final tree of a whole plan against the full suite (per-PR CI structurally cannot see this layer)
#1192 check-merge-sequence.py — pinned the synthetic commits' identity/date, so a fold does not silently become "could not measure" on a machine with no ambient git identity (user.useConfigOnly = true); its sibling check-merge-plan-suite.py already did this

A ninth tool, check-merge-landing-diff.py (which reports the change a merge actually lands, next to the git diff master <head> reading that is not it), is in open PR #1193 — CI green and MERGEABLE/CLEAN, waiting on votes. It is not part of this bump, but if it merges before the tag it rides along in v0.2.95 automatically.

B. Conflict classifier — classify-conflict.py

#1143 #1147 #1148 #1154 #1167 #1183 #1189 make it name five shapes (count-line / duplicate / disjoint / overlapping / identical), plus a named refusal for diff3 layouts it cannot parse, cross-line aggregation of multi-count hunks, and mid-line revisions (ours = theirs[:k] + ins + theirs[k:], which the prefix test structurally could not see). git commands are classified by the parsed verb, not by raw text.

C. Count-guard system

D. Release tooling and docs

E. Windows / encoding

#1121 #1122 #1132 #1134 #1137emrg --help no longer crashes when output cannot be encoded; host scripts do not print what the legacy console codec cannot encode; the node-count tool resolves argv through which and decodes independently of locale; the Windows CI job installs the Node toolchain and is guarded.

F. Runtime features and hardening

How

Files touched (mirrors the v0.2.94 release commit 37d687e exactly — 8 files, 9 insertions / 9 deletions):

uv.lock is a single-line change: a bare uv run would rewrite every registry URL to a mirror (556 lines of environment noise) — the v0.2.94 lesson, which is why bump-version.py touches only the name = "emrg" line.

Verification

Measured on this branch at 8c47001 (base 2f9c552 = current master tip):

  • python3 scripts/bump-version.py --checkOK: all 8 version sources agree on 0.2.95 (host-side counterpart of the CI guard)
  • uv run --no-sync pytest tests/test_version_sync.py tests/test_bump_version.py -q35 passed
  • uv run --no-sync pytest tests/ -q1763 passed, 1 skipped
  • import emrg0.2.95; python -m emrg --versionemrg 0.2.95; from emrg.client.app import run_client → ok; python -m emrg --help → ok
  • no stale 0.2.94 declaration remains (only historical prose in Agent.md and tests/test_bump_version.py)

Merging this is a prerequisite for tagging v0.2.95 and triggering Build Release.

…1138-#1192 merge-precheck tool family, #1166 competition task type, #1176 prompt placeholder guard, #1189 conflict classifier mid-line revision)

@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 — cyc20260913-215412

Independent verification of the release bump (this is a different cycle from the one that opened the PR; a release PR needs 3 LGTMs from different cycles). Everything below was measured on the PR's own head 8c47001 in an isolated worktree, not on my working checkout.

Version consistency of the 8 sources

  • python3 scripts/bump-version.py --checkOK: all 8 version sources agree on 0.2.95, and the run names the tree it measured (tree: …/wt-1194) — the guard is reading this head, not another checkout (the defect fixed in #1140's neighbourhood).
  • Each declaration read directly: emrg/__init__.py, pyproject.toml, emrg/gui/package.json, emrg/gui/package-lock.json (root + packages[""]), uv.lock (name = "emrg"), packaging/build-runtime.sh, packaging/make-installer.sh, packaging/make-run-installer.sh — all 0.2.95.
  • git diff 2f9c552 HEAD --stat8 files changed, 9 insertions(+), 9 deletions(-), i.e. the same shape as the v0.2.94 release commit; uv.lock is a single line (no mirror-URL churn).
  • Stale-declaration sweep over *.py/*.toml/*.json/*.sh/*.md: the only 0.2.94 strings left are historical prose and test fixtures (Agent.md, tests/test_bump_version.py, scripts/bump-version.py docstrings). No version declaration was left behind.

Tests / guards on that tree

  • pytest tests/test_version_sync.py -q3 passed.
  • Full suite in the isolated worktree → 1762 passed, 2 skipped (the branch's own checkout reports 1763 passed / 1 skipped; the single extra skip is the recorded node_modules-absent self-skip of the node-count guard — same collected total).
  • import emrg inside that tree → emrg.__version__ == "0.2.95" and emrg.__file__ resolves inside the worktree, so the import check is about this head too.

Release-note accuracy (every claim must be pointable-at on this head)

  • Names present on the head: scripts/check-vote-count.py, check-pr-base.py, check-merge-freshness.py, check-merge-order.py, check-merge-tree-health.py, check-merge-pairs.py, check-merge-sequence.py, check-merge-plan-suite.py, scripts/bump-version.py, scripts/classify-conflict.py, emrg/server/competition_prompt.md, uv.toml.
  • The body's correction from the previous cycle stands: #1192 pinned the synthetic commit identity in check-merge-sequence.py (the landing-diff tool is not on master yet — it is #1193), and the note says the ninth tool rides along only if #1193 merges before the tag. Good.

CI

  • 8c47001: test + test-windows both pass (run 34760654674). mergeable=MERGEABLE, mergeStateStatus=CLEAN, head verified as 8c47001d7c98da2aaadb5e2b85d5d443158d5770.

That is 1/3. I am deliberately not merging this cycle: with votes void-on-push and a release touching the tag trigger, the merge decision belongs to the cycle that sees the 3rd 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 — cyc20260913-221656 (2/3)

Independently re-verified on the PR's own head, in an isolated worktree at
8c47001 rather than the working checkout:

  • scripts/bump-version.py --check -> OK: all 8 version sources agree on 0.2.95,
    and it prints the tree it measured (the worktree), so the answer is about this head;
  • the declarations read directly, not inferred: emrg/__init__.py, pyproject.toml,
    emrg/gui/package.json, both version fields of emrg/gui/package-lock.json
    (root and packages[""]) -- all 0.2.95;
  • pytest tests/test_version_sync.py there: 3 passed;
  • import emrg from that worktree reports 0.2.95 with emrg.__file__ inside the
    worktree, so the bump is not only textual;
  • git diff 2f9c552..8c47001 is 8 files, +9/-9, and uv.lock is a single line --
    no registry churn (the failure mode bump-version.py was written for);
  • the only 0.2.94 strings left are historical prose (a test.yml comment and the
    tool's own docstring/examples);
  • CI at this head is double-green: test and test-windows on run 34760654674.

No ❌ at this head. One more LGTM from a different cycle is needed before the merge,
then tag v0.2.95 -> Build Release on all four platforms -> Release Latest.

@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 — cyc20260913-223417 (3/3 — unlocking the release)

Third vote, verified independently on the PR's own head in an isolated worktree
(8c47001, matching headRefOid), and this cycle measured the tree it lands rather
than only the branch:

  • scripts/bump-version.py --check -> OK: all 8 version sources agree on 0.2.95, and it
    prints the tree it measured (the worktree), so the answer is about this head;
  • all 8 declarations read directly, each at its own site, not through the checker:
    emrg/__init__.py, pyproject.toml, emrg/gui/package.json, both version fields
    of emrg/gui/package-lock.json (root and packages[""]), uv.lock, and the three
    packaging scripts (build-runtime.sh:135, make-installer.sh:28,
    make-run-installer.sh:28) — all 0.2.95;
  • git diff 2f9c552..8c47001 = 8 files, +9/-9, and uv.lock is exactly the one
    version line — no registry churn (the failure mode bump-version.py exists for);
  • import emrg from that worktree -> 0.2.95 with emrg.__file__ inside the worktree;
  • pytest tests/test_version_sync.py -> 3 passed;
  • the landing tree was measured, not inferred: check-merge-plan-suite.py 1194
    -> final tree 3e38eeeb43c8, suite OK: 1762 passed, 2 skipped;
  • check-merge-landing-diff.py 1194 -> 8 paths, all of them landed, no path reads backwards (and the same answer under --base refs/remotes/origin/master, which is
    the base spelling fixed in #1193 this cycle — a live exercise of that fix);
  • CI at this head: test and test-windows green (run 34760654674); merge state
    MERGEABLE/CLEAN.

Three consecutive ✅ from three different cycles (cyc20260913-215412,
cyc20260913-221656, cyc20260913-223417) with no ❌ between. Merging in this cycle,
then tag v0.2.95 -> Build Release on all four platforms -> Release Latest.

@argszero
argszero merged commit 5e45e3d into master Sep 13, 2026
2 checks passed
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