Skip to content

Commit d75157c

Browse files
dmealingclaude
andcommitted
docs: 0.15.19 / 7.7.9 coordinated release — CHANGELOG + version markers
npm 0.15.19 · PyPI 0.15.11 · NuGet 0.15.9 · Maven 7.7.9. origin.aggregate @filter + projection/DB-view guidance + downstream metadata-decisions guide. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FaRaYFjvWVV8D6h33ejj1m
1 parent e650c51 commit d75157c

6 files changed

Lines changed: 30 additions & 17 deletions

File tree

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
77

88
## [Unreleased]
99

10+
## [0.15.19] — 2026-07-11
11+
12+
_Coordinated release: npm 0.15.19 · PyPI 0.15.11 · NuGet 0.15.9 · Maven 7.7.9. Additive, non-breaking._
13+
14+
### Added
15+
16+
- **`origin.aggregate @filter`** — a scoping filter (an `attr.filter` object) on an aggregate origin, restricting which related rows the aggregate spans; rendered as SQL `FILTER (WHERE …)` (Postgres) / `CASE WHEN` (SQLite). Registered across all five ports + registry-conformance, with a new `origin-aggregate-filtered` conformance fixture. Closes the "projections can't express my scoped aggregate" gap (the attribute was previously codegen-local and failed strict load under ADR-0023).
17+
- **Downstream metadata-decisions guide** (`docs/features/downstream-metadata-decisions.md`) — the judgment layer for extending the metamodel: exhaust existing vocab, converge-before-inventing (don't claim the chartered `api`/`operation`/`surface`/`binding` names), the ADR-0037 ordered test, and the design rules that make downstream vocabulary age well (protocol/address-free nodes, names-only fail-closed config, reference-typed payloads, the register→extend→promote lifecycle).
18+
19+
### Changed
20+
21+
- **Projection / DB-view guidance made explicit across the agent-context skills + docs.** A projection's `CREATE VIEW` DDL is generated from its `origin.*` children by the Node `meta migrate` — hand-writing a view for a shape origins can express is drift, and because an unmodeled DB view is *unmanaged* it is invisible to `meta verify --db`. Bounded the "custom SQL views" hand-write exception (codegen skill + `codegen-concepts.md`) to genuinely-irreducible views (recursive CTEs, window functions, set ops). The `metaobjects-audit` skill gains a **view-necessity** drift signature and a **VOCAB CANDIDATE** rule that flags where an app should register new vocabulary (a custom subtype/attr via a provider) instead of hand-coding a recurring pattern. Strengthened `metaobjects-authoring` with the extend-decision lifecycle.
22+
1023
## [0.15.18] — 2026-07-10
1124

1225
_npm-only patch (14-package lockstep). PyPI / NuGet / Maven unchanged — these are TS-only fixes. Non-breaking; advances the 1.0 quiet period._

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Equal weight — all four ship per-language today across the five ports (TS / C#
1919

2020
_Last refreshed 2026-07-04._
2121

22-
**TypeScript reference implementation** is **published to npm at `0.15.18`** (14 `@metaobjectsdev/*` publish candidates on the `latest` tag, full lockstep; the two `angular` packages are on their own `0.6.x` line). C# at `0.15.8` (NuGet); Python at `0.15.10` (PyPI — stays a patch ahead on the same line); Java / Kotlin at `7.7.8` (Maven Central). **npm `0.15.18` is an npm-only, non-breaking patch on top of the coordinated `0.15.17` line** (PyPI/NuGet/Maven unchanged — TS-only fixes; advances the 1.0 quiet period): the `codegen-ts` `promptRender` **FQN `@objectRef` fix** (a prompt payload value-object nesting an `@objectRef` to another value-object emitted invalid `pkg::Name` TypeScript — now package-stripped to the bare name, matching `entityFile`) plus a batch of **agent-context skills fixes** (four of six `metaobjects-*` skills had invalid YAML front-matter so they never intent-triggered; wrong C# reference flags; the reference-fragment install reverted from deploy-all to stack-scoped; deprecated `codegen-ts/generators` imports + singular tanstack paths; ADR-0040 `index.lookup` vocabulary; and a stale Kotlin fixture that had left `agent-context-conformance` red on `main`). A cross-port hunt confirmed the `promptRender` FQN leak was **TS-only** (Java/C#/Kotlin/Python payload codegen already strip); PR #190 added the missing Python + Kotlin regression tests. The `0.15.17` line is a coordinated release across all four registries: (1) **BREAKING — `origin.passthrough` is type-preserving** (a passthrough field must match its `@from` source's `field.<subType>` + array-ness or fail load with `ERR_PASSTHROUGH_TYPE_MISMATCH`; opt out with `@convert: true`; retires the narrow `ERR_PARAMETER_REF_PASSTHROUGH_TYPE_MISMATCH`) (#185/#186); (2) **typed value-object jsonb columns end-to-end all ports** — single + `@isArray` array-of-VO round-trip through every port's write/read codec; Kotlin codegen moved off kotlinx `@Serializable` to a generated per-package Jackson `MetaJsonbMapper` (no serialization compiler plugin), C#/Java/Python array-of-VO codecs fixed (#187); (3) **load-order-independent super-resolution** — a dotted `extends: Owner.member` to an inherited member now resolves regardless of file load order (was a Node-vs-Bun `readdir` build-portability bug) via on-demand memoized resolution (#188/#189). The `0.15.6` line is a coordinated cross-port loader-ordering fix (all four registries bumped together): an overlay-only file could be merged *before* the base file declaring the entity it re-opens, so an `object.projection` overlay re-open (and any overlay reaching a not-yet-loaded `extends`/`origin` target) failed super-resolution with spurious `ERR_INVALID_ORIGIN` / `ERR_UNRESOLVED_SUPER` / `ERR_MISSING_REQUIRED_ATTR` — surfacing as a TS-vs-Python divergence but latent in every port. Each loader now stable-partitions overlay-only sources/roots to merge last, deterministically, cross-port conformance-gated (`projection-overlay-abstract-identity`) (#160). The prior `0.15.5` / PyPI `0.15.6` line shipped two consumer-provider CLI fixes (offline `meta migrate` now threads `metaobjects.config.ts` providers #157; a Python `metaobjects … --provider module:symbol` hook #158). The `0.15.4` line fixes cross-package same-name root nodes being wrongly merged by the TS/C#/Python loaders (#155). 2500+ tests passing across the workspace. (The `0.15.1` / `7.7.1` line shipped the **`index.*` type + `identity.secondary` key-purity** [ADR-0040]: `identity.secondary` is now a *unique* alternate key with `@unique` **removed** — a legacy `@unique` fails load with `ERR_UNKNOWN_ATTR` — and a new **`index.lookup`** subtype carries *non-unique* retrieval [`@fields` required; `@using`/`@expr`/`@where`/`@orders` are RDB-physical escapes], cross-port conformance-gated; **breaking**, migration in `docs/features/migrations/identity-secondary-to-index-lookup.md`. This is on top of the `0.15.0` metamodel-1.0 vocabulary program + the ADR-0039 own-accessor fix.)
22+
**TypeScript reference implementation** is **published to npm at `0.15.19`** (14 `@metaobjectsdev/*` publish candidates on the `latest` tag, full lockstep; the two `angular` packages are on their own `0.6.x` line). C# at `0.15.9` (NuGet); Python at `0.15.11` (PyPI — stays a patch ahead on the same line); Java / Kotlin at `7.7.9` (Maven Central). **The `0.15.19` / `7.7.9` line is a coordinated release across all four registries** (additive, non-breaking): `origin.aggregate @filter` (a scoping filter — an `attr.filter` object — rendered as SQL `FILTER (WHERE …)` / SQLite `CASE WHEN`) is now registered in all five ports + registry-conformance (with an `origin-aggregate-filtered` fixture), closing the "projections can't express my scoped aggregate" gap; and the agent-context skills + docs make the projection/DB-view contract explicit — a projection's `CREATE VIEW` is generated from its `origin.*` children, so a hand-written view is drift (and, being unmanaged, invisible to `meta verify --db`), with the "custom SQL views" hand-write exception bounded to genuinely-irreducible views, a new audit view-necessity signature + a **VOCAB CANDIDATE** new-subtype-opportunity hunt, and a new `docs/features/downstream-metadata-decisions.md` adopter guide. **npm `0.15.18` was an npm-only, non-breaking patch on top of the coordinated `0.15.17` line** (PyPI/NuGet/Maven unchanged — TS-only fixes; advances the 1.0 quiet period): the `codegen-ts` `promptRender` **FQN `@objectRef` fix** (a prompt payload value-object nesting an `@objectRef` to another value-object emitted invalid `pkg::Name` TypeScript — now package-stripped to the bare name, matching `entityFile`) plus a batch of **agent-context skills fixes** (four of six `metaobjects-*` skills had invalid YAML front-matter so they never intent-triggered; wrong C# reference flags; the reference-fragment install reverted from deploy-all to stack-scoped; deprecated `codegen-ts/generators` imports + singular tanstack paths; ADR-0040 `index.lookup` vocabulary; and a stale Kotlin fixture that had left `agent-context-conformance` red on `main`). A cross-port hunt confirmed the `promptRender` FQN leak was **TS-only** (Java/C#/Kotlin/Python payload codegen already strip); PR #190 added the missing Python + Kotlin regression tests. The `0.15.17` line is a coordinated release across all four registries: (1) **BREAKING — `origin.passthrough` is type-preserving** (a passthrough field must match its `@from` source's `field.<subType>` + array-ness or fail load with `ERR_PASSTHROUGH_TYPE_MISMATCH`; opt out with `@convert: true`; retires the narrow `ERR_PARAMETER_REF_PASSTHROUGH_TYPE_MISMATCH`) (#185/#186); (2) **typed value-object jsonb columns end-to-end all ports** — single + `@isArray` array-of-VO round-trip through every port's write/read codec; Kotlin codegen moved off kotlinx `@Serializable` to a generated per-package Jackson `MetaJsonbMapper` (no serialization compiler plugin), C#/Java/Python array-of-VO codecs fixed (#187); (3) **load-order-independent super-resolution** — a dotted `extends: Owner.member` to an inherited member now resolves regardless of file load order (was a Node-vs-Bun `readdir` build-portability bug) via on-demand memoized resolution (#188/#189). The `0.15.6` line is a coordinated cross-port loader-ordering fix (all four registries bumped together): an overlay-only file could be merged *before* the base file declaring the entity it re-opens, so an `object.projection` overlay re-open (and any overlay reaching a not-yet-loaded `extends`/`origin` target) failed super-resolution with spurious `ERR_INVALID_ORIGIN` / `ERR_UNRESOLVED_SUPER` / `ERR_MISSING_REQUIRED_ATTR` — surfacing as a TS-vs-Python divergence but latent in every port. Each loader now stable-partitions overlay-only sources/roots to merge last, deterministically, cross-port conformance-gated (`projection-overlay-abstract-identity`) (#160). The prior `0.15.5` / PyPI `0.15.6` line shipped two consumer-provider CLI fixes (offline `meta migrate` now threads `metaobjects.config.ts` providers #157; a Python `metaobjects … --provider module:symbol` hook #158). The `0.15.4` line fixes cross-package same-name root nodes being wrongly merged by the TS/C#/Python loaders (#155). 2500+ tests passing across the workspace. (The `0.15.1` / `7.7.1` line shipped the **`index.*` type + `identity.secondary` key-purity** [ADR-0040]: `identity.secondary` is now a *unique* alternate key with `@unique` **removed** — a legacy `@unique` fails load with `ERR_UNKNOWN_ATTR` — and a new **`index.lookup`** subtype carries *non-unique* retrieval [`@fields` required; `@using`/`@expr`/`@where`/`@orders` are RDB-physical escapes], cross-port conformance-gated; **breaking**, migration in `docs/features/migrations/identity-secondary-to-index-lookup.md`. This is on top of the `0.15.0` metamodel-1.0 vocabulary program + the ADR-0039 own-accessor fix.)
2323

2424
**All five ports ship loader + canonical serializer + conformance + codegen + render + payload-VO + `verify`:**
2525

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ working code.
3737

3838
| Language | Status | Quickstart | Source |
3939
|---|---|---|---|
40-
| TypeScript | Published to npm at `0.15.18` (the `@metaobjectsdev/*` packages) | [`docs/ports/typescript.md`](docs/ports/typescript.md) | [`server/typescript/`](server/typescript/) · [`client/web/`](client/web/) |
40+
| TypeScript | Published to npm at `0.15.19` (the `@metaobjectsdev/*` packages) | [`docs/ports/typescript.md`](docs/ports/typescript.md) | [`server/typescript/`](server/typescript/) · [`client/web/`](client/web/) |
4141
| Java | Loader + OMDB + render + Maven plugin all shipped; full conformance green | [`docs/ports/java.md`](docs/ports/java.md) | [`server/java/`](server/java/) |
4242
| Kotlin | Codegen tier on top of Java — 7 generators (entity, Exposed table, relations, payload, validator, Spring config, storedProc); 12 / 12 persistence-conformance | [`docs/ports/kotlin.md`](docs/ports/kotlin.md) | [`server/java/codegen-kotlin/`](server/java/codegen-kotlin/) · [`server/java/metadata-ktx/`](server/java/metadata-ktx/) |
4343
| C# | Loader + conformance + EF Core codegen + render engine + `dotnet meta` CLI all shipped | [`docs/ports/csharp.md`](docs/ports/csharp.md) | [`server/csharp/`](server/csharp/) |

docs/llms/llms-full.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MetaObjects -- Full Reference Corpus
22

3-
> A cross-language metadata standard for declaring typed entity models that drive code generation, runtime metadata access, drift detection, and prompt construction across TypeScript, Java, Kotlin, C#, and Python. Apache 2.0. Shipping at `0.15.18` on npm and `7.7.8` on Maven Central.
3+
> A cross-language metadata standard for declaring typed entity models that drive code generation, runtime metadata access, drift detection, and prompt construction across TypeScript, Java, Kotlin, C#, and Python. Apache 2.0. Shipping at `0.15.19` on npm and `7.7.9` on Maven Central.
44

55
**Note for AI assistants:** This file is the concatenated reference material for MetaObjects, intended to be loaded as LLM context. For the short index, see [llms.txt](https://metaobjects.dev/llms.txt). For the canonical spec and source, see the [GitHub repo](https://github.com/metaobjectsdev/metaobjects). When this file is out of date relative to the GitHub source, the GitHub source wins.
66

@@ -27,7 +27,7 @@ If you are an AI assistant helping someone adopt MetaObjects, do this **first**
2727

2828
1. **Install the port's package:**
2929
- TypeScript / Node: `npm install -D @metaobjectsdev/cli @metaobjectsdev/codegen-ts`
30-
- Java / Kotlin: add `com.metaobjects:metaobjects-metadata`, `com.metaobjects:metaobjects-codegen-spring` (Java) or `com.metaobjects:metaobjects-codegen-kotlin` (Kotlin), and `com.metaobjects:metaobjects-maven-plugin`, all at `7.7.8`.
30+
- Java / Kotlin: add `com.metaobjects:metaobjects-metadata`, `com.metaobjects:metaobjects-codegen-spring` (Java) or `com.metaobjects:metaobjects-codegen-kotlin` (Kotlin), and `com.metaobjects:metaobjects-maven-plugin`, all at `7.7.9`.
3131
- Python: `pip install metaobjects`
3232
- C#: install the MetaObjects .NET tool (invoked as `dotnet meta`).
3333
2. **Run `meta init`** (the Node `meta` CLI). It works in any project that has Node — including a JVM or Python project with a TypeScript frontend. It scaffolds a slim always-on `.metaobjects/AGENTS.md` + `.metaobjects/CLAUDE.md` (auto-wired via an `@.metaobjects/AGENTS.md` import line into the project's root `CLAUDE.md`/`AGENTS.md`, so it loads automatically) plus five `metaobjects-*` Claude Code skills under `.claude/skills/`, carrying only the project's language reference fragments. Re-run `meta init --refresh-docs` to update the agent docs after a CLI upgrade. (The Node `meta` CLI is the single agent-context scaffolder for every backend, by design — ADR-0033; the JVM/Python/C# CLIs deliberately redirect to it. For a non-Node project, scaffold just the agent context with `npx meta agent-docs --server <lang>`.)
@@ -89,9 +89,9 @@ Because the render is conformance-gated, the determinism guarantee holds in ever
8989

9090
| Language | Status | Notes |
9191
|---|---|---|
92-
| TypeScript | Reference implementation, npm `0.15.18` | All four pillars. 2500+ tests passing. Owns the canonical schema-migration toolchain used by every port (ADR-0015). Bun-first dev. |
93-
| Java | Maven Central `7.7.8` | Spring REST + JPA codegen, OMDB runtime persistence (pure data-access) with Spring-tx. Fully green across all conformance corpora. |
94-
| Kotlin | Maven Central `7.7.8` | KotlinPoet codegen + Exposed runtime + `metadata-ktx` facade. Ships via the Java reactor. |
92+
| TypeScript | Reference implementation, npm `0.15.19` | All four pillars. 2500+ tests passing. Owns the canonical schema-migration toolchain used by every port (ADR-0015). Bun-first dev. |
93+
| Java | Maven Central `7.7.9` | Spring REST + JPA codegen, OMDB runtime persistence (pure data-access) with Spring-tx. Fully green across all conformance corpora. |
94+
| Kotlin | Maven Central `7.7.9` | KotlinPoet codegen + Exposed runtime + `metadata-ktx` facade. Ships via the Java reactor. |
9595
| C# | NuGet `0.15.8` (.NET tool) | Loader + canonical serializer + EF Core + ASP.NET codegen + render/verify. `dotnet meta` tool. |
9696
| Python | PyPI `0.15.10` | Loader + serializer + render + verify + codegen + `ObjectManager` runtime. Fully green across all corpora. |
9797

@@ -144,7 +144,7 @@ Universal web client (`client/web/packages/`): `@metaobjectsdev/runtime-web`, `@
144144

145145
## Java / Kotlin Maven coordinates
146146

147-
All published to Maven Central under `com.metaobjects:*` at `7.7.8`:
147+
All published to Maven Central under `com.metaobjects:*` at `7.7.9`:
148148

149149
- `metaobjects-metadata`, `metaobjects-metadata-ktx`
150150
- `metaobjects-codegen-base`, `metaobjects-codegen-mustache`, `metaobjects-codegen-spring`, `metaobjects-codegen-kotlin`, `metaobjects-codegen-plantuml`
@@ -181,7 +181,7 @@ Project marker directory: `.metaobjects/`.
181181

182182
## Quickstart (Java / Kotlin)
183183

184-
Add the Maven coordinates above at `7.7.8`. Run codegen with `mvn metaobjects:generate` and codegen-drift checks with `mvn metaobjects:verify`. Configure generators (including Kotlin generators, which run through the same goal) on the `metaobjects-maven-plugin`. See [`server/java/`](https://github.com/metaobjectsdev/metaobjects/tree/main/server/java) and [`server/java/codegen-kotlin/README.md`](https://github.com/metaobjectsdev/metaobjects/tree/main/server/java/codegen-kotlin).
184+
Add the Maven coordinates above at `7.7.9`. Run codegen with `mvn metaobjects:generate` and codegen-drift checks with `mvn metaobjects:verify`. Configure generators (including Kotlin generators, which run through the same goal) on the `metaobjects-maven-plugin`. See [`server/java/`](https://github.com/metaobjectsdev/metaobjects/tree/main/server/java) and [`server/java/codegen-kotlin/README.md`](https://github.com/metaobjectsdev/metaobjects/tree/main/server/java/codegen-kotlin).
185185

186186
---
187187

0 commit comments

Comments
 (0)