Skip to content

docs(changelog): the next cut is 0.24.0, and it absorbs the unreleased 0.23.3 - #320

Merged
dmealing merged 1 commit into
mainfrom
chore/changelog-0.24.0
Aug 20, 2026
Merged

docs(changelog): the next cut is 0.24.0, and it absorbs the unreleased 0.23.3#320
dmealing merged 1 commit into
mainfrom
chore/changelog-0.24.0

Conversation

@dmealing

Copy link
Copy Markdown
Member

Documentation only. Reconciles the changelog so it declares one next version instead of two, and corrects three entries against what actually shipped.

The changelog declared two unreleased versions at once

## [Unreleased] held the cross-port sources work; a ## [0.23.3] PATCH entry sat below it holding the meta gen hand-edit fix. No registry ever carried 0.23.3 — npm, PyPI and Maven Central are all still on 0.23.2 / 7.23.2 (checked, not assumed). Both bodies of work ship together, and a release cannot be two versions at once.

It is 0.24.0, not 0.23.3, because two changes in the sources work are default flips rather than corrections: the Java mojo now fails a build that a silently-empty model used to let pass, and Java and Python now follow symlinked directories. Pre-1.0, ^0.23.x resolves <0.24.0, so a MINOR is adopted deliberately while a PATCH is taken automatically on a routine update — the same call, for the same reason, as 0.21.0. The 0.23.3 body is demoted to a section that says where it came from, so the number does not read as skipped.

This also matters mechanically. scripts/prerelease.mjs derives an RC's base from the topmost ## [x.y.z] header. Before this it would have produced 0.23.3-rc.N, and every invocation would have needed --base to be talked out of it — which docs/features/prerelease.md calls out as exactly how a version number gets burned. Verified after the fix:

released: 0.23.2   base: 0.24.0 (from CHANGELOG.md)   iteration: 2
npm 0.24.0-rc.2 · pypi 0.24.0rc2 · nuget 0.24.0-rc.2 · maven 7.24.0-rc.2

Three entries corrected against what shipped in #319

  • The symlink bullet claimed a guarantee that was not true and was gated by nothing. "A symlink cycle is a loud error rather than a hang" was written before it was true, and it understated the C# failure: the enumeration swallowed the kernel's ELOOP and returned ~40 phantom copies of one file while reporting success. The entry now describes what actually happened and notes the claim is carried by a corpus case (a-symlink-cycle-is-an-error) rather than by prose. Two symlinks cases became three.
  • The unknown-key bullet said .metaobjects/config.json rejects unknown keys, full stop. That is the Node CLI only — the other three ports read the neutral subset and ignore them. Now stated as the intended asymmetry it was ruled to be, including the consequence an adopter must plan for: a config written by a newer meta hard-fails an older one.
  • meta init --print-only writing the files it previewed was undocumented entirely. Added, including that the dry run used to report in the past tense.

Not in this PR

No product code. The 0.24.0 header does not cut anything — the version bump, tag and publish remain a separate deliberate step, and the breaking batch (ADR-0052 + ADR-0053 + FR-037 R1/R2 + FR-038) is still not on main.

🤖 Generated with Claude Code

…d 0.23.3

The changelog declared two unreleased versions at once: `[Unreleased]` holding the
cross-port `sources` work, and a `[0.23.3]` PATCH entry below it holding the
`meta gen` hand-edit fix. No registry ever carried `0.23.3` — npm, PyPI and Maven
Central are all still on `0.23.2`/`7.23.2` — so both bodies of work ship together,
and a release cannot be two versions at once.

It is `0.24.0`, not `0.23.3`, because two changes in the `sources` work are DEFAULT
FLIPS rather than corrections: the Java mojo now fails a build a silently-empty model
used to pass, and Java and Python now follow symlinked directories. Pre-1.0,
`^0.23.x` resolves `<0.24.0`, so a MINOR is adopted deliberately while a PATCH is
taken automatically on a routine update. The `0.23.3` body is demoted to a section
that says where it came from, so the number does not read as skipped.

This also matters mechanically: `scripts/prerelease.mjs` derives an RC's base version
from the topmost `## [x.y.z]` header, so before this the tool would have produced
`0.23.3-rc.N` and every invocation would have needed `--base` to be talked out of it —
which the pre-release doc calls out as the way a version number gets burned.

Three entries reconciled against what actually shipped in #319:

- The symlink bullet claimed "a symlink cycle is a loud error rather than a hang".
  That was written before it was true and understated the failure: C#'s enumeration
  SWALLOWED the kernel's ELOOP and returned ~40 phantom copies of one file, reporting
  success. Now describes what happened, and says the claim is carried by a corpus case
  rather than by prose. Two `symlinks` cases became three.
- The unknown-key bullet said `.metaobjects/config.json` rejects unknown keys full
  stop. It is the Node CLI only — the other three read the neutral subset and ignore
  them. That asymmetry is now ruled intended, so the entry states it, and states the
  consequence an adopter has to plan for: a config written by a newer `meta`
  hard-fails an older one.
- `meta init --print-only` writing the files it was previewing was undocumented
  entirely. Added, including that the dry run used to report in the PAST tense.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dmealing
dmealing merged commit 3427d38 into main Aug 20, 2026
1 check passed
@dmealing
dmealing deleted the chore/changelog-0.24.0 branch August 20, 2026 22:53
dmealing added a commit that referenced this pull request Aug 20, 2026
Only CHANGELOG.md conflicted: main's #320 cut everything under `[Unreleased]` into a
`[0.24.0]` section while this branch added its ADR-0052 entry there.

Resolved by keeping BOTH, with the ADR-0052 section left under `[Unreleased]`. It is a
BREAKING metamodel-vocabulary change and its release slot is still an open human call
(before GA or after) — folding it into a cut someone else defined would answer that
question silently.

Also removes a stray `||||||| constructed merge base` marker that main has been carrying
mid-CHANGELOG since an earlier merge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhpswkF1NvwxhFWMmdAT15
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