Skip to content

Commit 0c6d362

Browse files
authored
chore(release): prepare 1.1.0 (npm/PyPI/NuGet 1.1.0, Maven 8.1.0) (#417)
* chore(release): prepare 1.1.0 (npm/PyPI/NuGet 1.1.0, Maven 8.1.0) Bump every publish-candidate package, pom, pyproject and Directory.Build.props; regenerate bun.lock, uv.lock and the site payload; move CHANGELOG [Unreleased] into a dated 1.1.0 section; refresh the llms mirrors; correct stale status prose in AGENTS.md (list-hook sentence, pending 1.1.0). * no-mistakes(document): Updated AGENTS.md version statements for 1.1.0 release.
1 parent e500f2c commit 0c6d362

42 files changed

Lines changed: 147 additions & 127 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎AGENTS.md‎

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,14 @@ because a conformance corpus gates the ports against each other and never agains
3939
in ADR-0035 **Amendment 3**. Do not reintroduce a waiting gate in any form.
4040

4141

42-
**Where the versions are.** `latest` is **`1.0.13`** on npm, **`8.0.13`** on Maven Central,
43-
**`1.0.13`** on PyPI and **`1.0.13`** on NuGet (the Maven major is always **npm major + 7**, so
44-
1.0.13 is 8.0.13). All four moved at 1.0.13, 1.0.12, 1.0.11, 1.0.10 and 1.0.9 (Maven skipped 8.0.8); Maven sat out 1.0.8 (no JVM
45-
product change), and earlier Maven alone took 1.0.6 (8.0.6) while the other three skipped that
46-
number. Both are the convergent-publishing rule working as intended. **1.0 is CUT**: the `1.0.0-rc.5` through `rc.8` candidates, 1.0.4's `rc.1`,
47-
1.0.5's `rc.1` through `rc.11`, 1.0.7's and 1.0.8's `rc.1`, and 1.0.9's `rc.1` through `rc.6` are
48-
superseded, and npm's `next` tag is REPOINTED onto each release — not deleted, because
42+
**Where the versions are.** `latest` is **`1.1.0`** on npm, **`8.1.0`** on Maven Central,
43+
**`1.1.0`** on PyPI and **`1.1.0`** on NuGet (the Maven major is always **npm major + 7**, so
44+
1.1.0 is 8.1.0). 1.0.13 was the last 1.0.x release; the four registries moved together on 1.0.13, 1.0.12, 1.0.11, 1.0.10 and 1.0.9 (Maven skipped 8.0.8), and earlier Maven alone took 1.0.6 (8.0.6) while the other three skipped that
45+
number. Both patterns are the convergent-publishing rule working as intended. **1.0 is CUT** and **1.1 is shipped**: the 1.0.0-rc candidates through 1.0.13 are superseded, and npm's `next` tag is REPOINTED onto each release — not deleted, because
4946
`dist-tag rm` 403s for every token we hold (`docs/RELEASING.md` §4).
5047
`metamodelVersion` read **`1.0`** through 1.0.13 — C4 landed and G4 shipped it, and no 1.0.x patch
5148
moved it (1.0.4 relaxed `@sourceRefField` onto `@cardinality: one` with a prose-only
52-
manifest footprint, and was ruled a hold). `main` now carries **`1.1`** for the FR-044 reporting
53-
vocabulary, so 1.0.x PATCH releases are held from `main` until 1.1 ships. Per-release detail lives in **`CHANGELOG.md`** — it is the log, and this file does
49+
manifest footprint, and was ruled a hold). **`metamodelVersion` now reads `1.1`** for the FR-044 reporting vocabulary and the requirements slice 1 (the first slice of two, covering existence gates and per-entity coverage). Per-release detail lives in **`CHANGELOG.md`** — it is the log, and this file does
5450
not duplicate it.
5551

5652
The npm surface is **14 `@metaobjectsdev/*` packages in full lockstep**; the two `angular`
@@ -82,9 +78,9 @@ PyPI has had no product change since `0.25.0` — nothing is broken.
8278
- YAML / verify corpora green across the ports that ship those layers.
8379
- **Codegen-compile gate** (all five ports; a GATE, not a corpus — it has no fixtures of its own and no row in the matrix). Every corpus above gates BEHAVIOUR; none asks whether the emitted code BUILDS, which is how four "generated code does not compile" defects shipped in 1.0.4 with the whole matrix green — `gen` exits 0 in all four cases and the adopter's build is the first thing that disagrees. Each port generates from `fixtures/persistence-conformance/canonical/meta.fitness.json` (reused deliberately: a second kitchen sink would drift from the one the other corpora already maintain) and compiles the emitted tree with its real compiler — `ts.createProgram` / Roslyn / `javac` / `KotlinCompilation` / (Python, having no static compiler) importing the generated package plus `ruff` F821. **Every port excludes its framework-bound route tier** (TS `routesFile`, C# `RoutesGenerator`, Java `SpringControllerGenerator`, Kotlin `KotlinSpringControllerGenerator`): those imports are not on an in-memory compile's classpath and stubbing them drowns the signal, so that tier is proven by the api-contract integration lane instead. One cross-port rule, not four local concessions. Found 5 further real defects on first run. Boundary detail: `docs/CONFORMANCE.md` → "Split coverage".
8480

85-
**Key cross-language features shipped:** FR5 family (a/b/c/d/e + WARN envelope-shape — actionable loader errors per ADR-0009); FR-003 (Java RDB runtime persistence + projections; schema migrations are TS-only — the Java migration engine was removed); FR-006 (template.output parser-on-receipt codegen per ADR-0010 in all 5 ports); FR-008 + FR-009 (cross-port REST API contract + the nine filter operators); FR-018 (M:N relationship codegen in all 5 ports — entity navigation + idiomatic ORM wiring [Drizzle m2m / EF Core `UsingEntity` / Spring repo+JPA / Exposed / Pydantic+route as the SQLAlchemy-secondary equivalent] + REST traversal `GET /<source-plural>/{id}/<relation>` + Tier-2 docs, gated by the shared api-contract m2m corpus in both lanes + persistence-conformance; the TanStack M:N client hook is a deferred client-ergonomics follow-up); SP-H (field-subtype end-to-end hardening: every concrete `field.*` subtype write+read round-trips cross-port via the persistence `op: roundtrip` gate; cut `field.byte`/`field.short`/`field.class` non-functional stubs; cross-port filter-op reconciliation for uuid/currency); source v2 paradigm (ADR-0007); metadata-ktx Kotlin facade; per-target output directories (TS codegen); FR-044 (the reporting vocabulary — `dimension.attribute`/`dimension.time`, `measure.aggregate`/`measure.ratio`, `segment.filter`, `object.report`, `@spine` on a report to take rows from a to-one dimension entity, `@default` on a measure for empty aggregates, plus the relative-date filter value — registered and loader-validated in all five ports; a report that declares a read-only `source.rdb @kind: view` is lowered to a SQL view by `meta migrate` and read by every port, and served by a generated read-only list route in every port, gated by the api-contract `report/` sub-corpus; the TypeScript `cube-model` reference generator writes the vocabulary as Cube data-model files, gated by the `fixtures/cube-model/` corpus and a `cube` lane that loads the output into a real Cube; no grid or form is generated for a report yet, see [docs/features/reporting.md](docs/features/reporting.md) and [docs/features/cube-export.md](docs/features/cube-export.md)).
81+
**Key cross-language features shipped:** FR5 family (a/b/c/d/e + WARN envelope-shape — actionable loader errors per ADR-0009); FR-003 (Java RDB runtime persistence + projections; schema migrations are TS-only — the Java migration engine was removed); FR-006 (template.output parser-on-receipt codegen per ADR-0010 in all 5 ports); FR-008 + FR-009 (cross-port REST API contract + the nine filter operators); FR-018 (M:N relationship codegen in all 5 ports — entity navigation + idiomatic ORM wiring [Drizzle m2m / EF Core `UsingEntity` / Spring repo+JPA / Exposed / Pydantic+route as the SQLAlchemy-secondary equivalent] + REST traversal `GET /<source-plural>/{id}/<relation>` + Tier-2 docs, gated by the shared api-contract m2m corpus in both lanes + persistence-conformance; the TanStack M:N client hook is a deferred client-ergonomics follow-up); SP-H (field-subtype end-to-end hardening: every concrete `field.*` subtype write+read round-trips cross-port via the persistence `op: roundtrip` gate; cut `field.byte`/`field.short`/`field.class` non-functional stubs; cross-port filter-op reconciliation for uuid/currency); source v2 paradigm (ADR-0007); metadata-ktx Kotlin facade; per-target output directories (TS codegen); FR-044 (the reporting vocabulary — `dimension.attribute`/`dimension.time`, `measure.aggregate`/`measure.ratio`, `segment.filter`, `object.report`, `@spine` on a report to take rows from a to-one dimension entity, `@default` on a measure for empty aggregates, plus the relative-date filter value — registered and loader-validated in all five ports; a report that declares a read-only `source.rdb @kind: view` is lowered to a SQL view by `meta migrate` and read by every port, and served by a generated read-only list route in every port, gated by the api-contract `report/` sub-corpus; the TypeScript `cube-model` reference generator writes the vocabulary as Cube data-model files, gated by the `fixtures/cube-model/` corpus and a `cube` lane that loads the output into a real Cube; a served report gets the generated TanStack list hook (`use<R>List`) but no grid or form, see [docs/features/reporting.md](docs/features/reporting.md) and [docs/features/cube-export.md](docs/features/cube-export.md)).
8682

87-
**Latest release: 1.0.13** (2026-10-03) — npm `1.0.13`, PyPI `1.0.13`, NuGet `1.0.13`, Maven Central `8.0.13`. A PATCH: an already-plural entity name (`Stats`, `Settings`) no longer doubles in API-surface names (REST paths, hooks, finders, DbSets) in any port, while default physical table names stay frozen on the old rule; two entities that would share one API name are now a generation error; two Kotlin controller compile fixes (`field.inet` filter ops, `@dbColumnType: uuid` on a string field). Gated by a private `1.0.13-rc.1` build on the adopter estate (`rc-gate.sh` 7/7) and a full `--strict-toolchains` local CI run. The previous release, 1.0.12 (2026-10-02), added `fmt` in every CLI, a deprecated-reference `verify` advisory, the `onLocate` extract hook, and an Exposed 1.x Kotlin output mode.
83+
**Latest release: 1.1.0** (2026-10-10) — npm `1.1.0`, PyPI `1.1.0`, NuGet `1.1.0` and Maven Central `8.1.0`. The reporting release (FR-044): declare dimensions, measures, segments and an `object.report`, and get a SQL view, a served read-only list route in every port, a generated TanStack list hook, and a Cube data model, with `@spine` for rows that have no facts and `@default` for an empty measure. Also carries the first slice of requirements (the gate in every port's `verify`), the derived-key parity fix across the ports, and the list-hook and nested-average fixes found by the first adopter. See the `CHANGELOG.md` 1.1.0 section for the full scope, pre-release RC history, and the diffs to expect when you upgrade (ejected generators and keyless projections). The previous release, 1.0.13 (2026-10-03), was a PATCH on 1.0.x.
8884

8985
Active and planned work lives in GitHub: issues labelled `FR`, milestones for releases, and the MetaObjects Roadmap project board. `spec/roadmap.md` keeps the release direction and the FR → issue → spec index. Process: `docs/ROADMAP-PROCESS.md`.
9086

‎CHANGELOG.md‎

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,41 @@ here.**
1010

1111
## [Unreleased]
1212

13-
_**`metamodelVersion` moves `1.0` to `1.1`.** The vocabulary is additive: a model that uses none
14-
of the new names generates byte-for-byte what it did under 1.0. What loads changes only where the
15-
Java and Python parser fixes under **Fixed** bring those ports into line with TypeScript, and each
16-
entry says which models that affects. `main` carries 1.1 from here, so no 1.0.x PATCH is cut from
17-
it until 1.1 ships._
13+
## [1.1.0] — 2026-10-10
14+
15+
_npm `1.1.0` (all 14 `@metaobjectsdev/*` packages in lockstep), PyPI `1.1.0`, NuGet `1.1.0` and
16+
Maven Central `8.1.0`. **`metamodelVersion` moves `1.0` to `1.1`.** The vocabulary is additive: a
17+
model that uses none of the new names generates byte-for-byte what it did under 1.0. What loads
18+
changes only where the Java and Python parser fixes under **Fixed** bring those ports into line
19+
with TypeScript, and each entry says which models that affects. This is a MINOR because the
20+
metamodel moved and reporting is a new feature, not because the package surface broke._
21+
22+
**What 1.1.0 is.** The reporting release (FR-044): declare dimensions, measures, segments and an
23+
`object.report`, and get a SQL view, a served read-only list route in every port, a generated
24+
TanStack list hook, and a Cube data model, with `@spine` for rows that have no facts and
25+
`@default` for an empty measure. It also carries the first slice of requirements (the gate in
26+
every port's `verify`), the derived-key parity fix across the ports, and the list-hook and
27+
nested-average fixes found by the first adopter to map real report pages onto the feature.
28+
29+
**How much smaller the code gets.** The size reduction comes in two steps, and each is its own
30+
number. The first landed on 1.0.x: 439 lines of handler code retired. The second is reporting:
31+
with it, the same pages come to about 60 lines of SQL and about 180 lines of metadata.
32+
33+
**Two diffs to expect when you upgrade.**
34+
35+
- **An ejected generator needs a resync (G11).** An owned copy keeps the gate and the options it
36+
was copied with, so it does not receive the new report behaviour until you resync it. The
37+
entries under **Added** and **Fixed** name the command for each affected generator (`meta eject
38+
hooks --force`, `meta eject routes --force`, `meta eject routes-hono --force`). A generator you
39+
never ejected needs nothing.
40+
- **A keyless projection regenerates differently (G12).** `meta gen` rewrites the read-only
41+
surface of a keyless projection (no `/:id` route, no by-id function, and no write verbs in the
42+
API docs), and `meta verify --docs` reports the affected pages as stale until they are
43+
regenerated. Run `meta gen` and review the diff; three-way merge preserves hand edits.
44+
45+
**Not in 1.1.0.** Derived measures, the preview `reporting` library, the dbt exporter, the second
46+
requirements slice and the advisory lint port, the JSON Schema and OpenAPI generators, the
47+
generator catalog and the Atlas evaluation are 1.2 work.
1848

1949
### Added
2050

0 commit comments

Comments
 (0)