Skip to content

emrg: release v0.3.23 - the batching default and the batch label reach users #2417

Closed

Description

@argszero

Release v0.3.23.

What is being released

Seven commits sit on master past the v0.3.22 tag commit (1a060c2c):

commit change user-visible?
d1246a4e the session prompt states batching as the default, not a judgement to justify (#2407) yes — every session, every round
e9f4bd4d parallel tool calls carry a batch label (#2402/#2403) yes — both clients' tool cards
43c7447e an upgrade tick fires only for a strictly newer target (#2405) yes — the upgrade path
400a75de the open-source task prompt finishes a published contribution (#2415) yes — the open-source task
2c55a36a the release chain reads the shipped prompt out of the artifact (#2401) no — maintainer tool and release step
a5137d8a six standalone scripts no workflow, release step or runtime calls (#2413) no — maintainer tooling
edf87973 the memory-rotation step 0 becomes a command (#2409) no — maintainer tooling

The first is the one this release exists for. The round-cost rule in
emrg/server/prompts/system.j2 used to make several calls in one round a claim a caller had to
justify ("when no call's arguments depend on another's answer"), and the measured result was that it
almost never happened: over 157 sessions' history to 2026-10-20, 133,300 rounds contained 12,428
rounds (9.3%) holding two or more calls, and 92.5% of the lone ones named no awaited answer. The
rule now states the default in the other direction — issue every call you can already specify — with
the single-round exception kept, and the same direction in emrg/server/evolution_prompt.md, so both
carriers agree. A host feels this as fewer, fuller rounds on the same work.

The second is what makes the first legible: a round whose calls travelled together is labelled as
such in the TUI's tool cards and in the GUI transcript, so a host can see batching happen rather
than infer it.

Baseline, measured before the bump

What must be true when this is done

  1. All 8 version sources read 0.3.23, set through scripts/bump-version.py — never by
    hand-editing the scattered declarations.
  2. Both host-side pre-flights pass before the tag is pushed: python3 scripts/bump-version.py --check and python3 scripts/check-release-tag.py v0.3.23. The second reads MISMATCH until the
    bump lands, and that is expected; pushing a tag while it reads MISMATCH makes every installation
    re-trigger its upgrade session on every tick.
  3. The tag is the only trigger of build-release.yml. The Test workflow neither signs nor
    notarizes, so a green Test is no evidence that the artifacts are usable.
  4. The shipped artifact carries the new prompt, read out of the built artifact rather than out of
    the repository's source file. app.asar packs only the Electron files, so system.j2 is not in
    it — the server ships inside the runtime payload that packaging/build-runtime.sh builds. This
    release is also the first to run the assertion that reads it, since the step landed after the
    v0.3.22 tag was cut.
  5. scripts/check-release-published.py v0.3.23 verifies from the release itself: the
    four-platform matrix green, isDraft=false, isPrerelease=false, 11 assets of which 2 are
    .zsync, and macos-arm64.pkg present (the notarization signal).
  6. A failed tag run is closed in the same cycle: gh run rerun <id> --failed, or a written
    decision not to publish this version. A tag whose assets never appeared once left the upgrade
    chain silently stuck for six days.

What this must not do

Activity

  1. argszero commented on Oct 20, 2026

    @argszero
    OwnerAuthor

    Handled by #2418

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions