You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: correct overstated and wrong claims found by a cross-port audit
Six adopter-facing inaccuracies, each verified against code before changing:
- "shipped as a standalone binary so non-TS adopters need no Node toolchain"
(cli.md, llms.txt) — no binary is published: releases carry ZERO assets, no CI
job builds one, and even a self-built executable needs the `pg` peer resolvable
for Postgres. A JVM/.NET/Python shop DOES need Node to create or evolve a
database; say so plainly instead of implying otherwise.
- "Spring REST + DTO + JPA repositories" (llms.txt, llms-full.txt, java README)
— nothing JPA is emitted. No JpaRepository extends, no jakarta/javax.persistence
import, and codegen-spring's pom has no spring-data-jpa dependency. The
generator emits a repository INTERFACE whose own javadoc says the consumer
implements it. Now described as what it is.
- `mvn meta:gen` / `mvn meta:verify` — wrong on BOTH counts. The plugin's
goalPrefix is `metaobjects` and there is no `gen` goal (the mojos are
generate/editor/verify/docs/agent-docs), so a Java adopter copying these gets
"No plugin found for prefix 'meta'". Corrected across the live docs; references
to the REMOVED `meta:migrate` mojo are left as the historical name.
- MIGRATION.md told 6.x→7.x upgraders that verify covers "database schema". The
verify mojo has zero database/JDBC handling and `mode=db` is rejected.
- csharp.md "The runtime has no MetaObjects dependency" — generated routes emit
`using MetaObjects.Codegen.Runtime;`. Narrowed to the case where it is true
(entities + DbContext) and stated the exception.
- python.md called filter operators "a known gap" — they ship: there is a
registered filter-allowlist generator and a runtime filter parser. This one
UNDERSOLD the port.
No product code changed. The sibling metaobjects.dev site carries mirrors of the
llms files and is updated in the same pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KTGT5ksntpcJDZVJ5VyXHS
| C# codegen |`dotnet meta`|`dotnet meta gen` / `verify --templates` / `verify --codegen`| a .NET tool (`ToolCommandName=dotnet-meta`); invoked `dotnet meta` so it never shadows the Node `meta`; ships the ADR-0021 D2 subverbs (`--db` rejected, exit 2; bare `verify` = `--templates`). `gen` also accepts `--template-spec <json>` (+ `--template-root <dir>`, default `templates`) — the declarative Mustache template-codegen surface (the cross-port JSON contract shared with Python); see [declarative template scopes](codegen-concepts.md#declarative-template-scopes)|
32
-
| Java/Kotlin codegen | Maven plugin |`mvn metaobjects:generate` (`meta:gen`) | Kotlin generators run through the same goal — see below. The `generate`/`verify`/`docs` goals are declared `threadSafe` and support parallel multi-module reactor builds (`mvn -T`) (#233) |
33
-
| Java/Kotlin verify | Maven plugin |`mvn metaobjects:verify -Dmeta.verify.mode=codegen\|templates` (`meta:verify`) | parameter-driven ADR-0021 D2 modes (one goal covers BOTH Java + Kotlin): `codegen` (default, back-compat — regen + fail on drift vs committed output, generator-neutral) / `templates` (`{{field}}`↔payload drift via the render `Verify` engine). `db` rejected ("schema verify is the migrate engine, ADR-0015") |
37
+
| Java/Kotlin codegen | Maven plugin |`mvn metaobjects:generate` (`metaobjects:generate`) | Kotlin generators run through the same goal — see below. The `generate`/`verify`/`docs` goals are declared `threadSafe` and support parallel multi-module reactor builds (`mvn -T`) (#233) |
38
+
| Java/Kotlin verify | Maven plugin |`mvn metaobjects:verify -Dmeta.verify.mode=codegen\|templates` (`metaobjects:verify`) | parameter-driven ADR-0021 D2 modes (one goal covers BOTH Java + Kotlin): `codegen` (default, back-compat — regen + fail on drift vs committed output, generator-neutral) / `templates` (`{{field}}`↔payload drift via the render `Verify` engine). `db` rejected ("schema verify is the migrate engine, ADR-0015") |
34
39
| Python codegen | console-script |`metaobjects gen` / `verify --codegen` / `verify --templates`|`[project.scripts] metaobjects` — **not**`meta` (that's the Node schema CLI); ships the ADR-0021 D2 subverbs (`--db` rejected, exit 2). `gen` also accepts `--template-spec <json>` (+ `--templates <dir>`, default `templates`) — the declarative Mustache template-codegen surface (the cross-port JSON contract shared with C#); see [declarative template scopes](codegen-concepts.md#declarative-template-scopes)|
35
40
36
41
## `verify` is one verb with explicit subverbs (ADR-0021 D2)
Copy file name to clipboardExpand all lines: docs/features/migrations-and-drift.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ There are **7 drift sources**, and the toolchain has a guard for each.
13
13
|---|---|---|
14
14
|**Code-vs-DB**| Codegen — the generated SQL DDL is emitted from the same metadata as the entity / table code. | Build time |
15
15
|**Code-vs-API-doc**| Cross-port codegen from the same metadata. | Build time |
16
-
| **DB-vs-metadata** | `meta verify --db` (TS CLI) — introspects the live DB and fails if it has drifted from metadata. Includes modeled projection **view bodies** (a changed `CREATE VIEW` is `replace-view` drift); a hand-authored *unmodeled* view is unmanaged and never flagged. A schema concern owned by the Node toolchain regardless of server language; on the JVM ports the runtime auto-create/validator path was removed (ADR-0015) and the `meta:verify` Maven goal is not available. Cloudflare D1 has no client wire protocol, so it can't go through `--db`'s Kysely-driver introspection — use `meta verify --dialect d1 [--d1 <binding>] [--remote]` instead (the same wrangler-shelled-out path `meta migrate --dialect d1` uses); `--remote` is required to check the *deployed* database, not the local `wrangler dev` shadow copy. Pointing `--db file:` at wrangler's local D1 state directory (`.wrangler/state/**/d1/**`) still runs, but only verifies that local copy — `verify` warns when it detects this. | CI on every PR |
16
+
| **DB-vs-metadata** | `meta verify --db` (TS CLI) — introspects the live DB and fails if it has drifted from metadata. Includes modeled projection **view bodies** (a changed `CREATE VIEW` is `replace-view` drift); a hand-authored *unmodeled* view is unmanaged and never flagged. A schema concern owned by the Node toolchain regardless of server language; on the JVM ports the runtime auto-create/validator path was removed (ADR-0015) and the `metaobjects:verify` Maven goal is not available. Cloudflare D1 has no client wire protocol, so it can't go through `--db`'s Kysely-driver introspection — use `meta verify --dialect d1 [--d1 <binding>] [--remote]` instead (the same wrangler-shelled-out path `meta migrate --dialect d1` uses); `--remote` is required to check the *deployed* database, not the local `wrangler dev` shadow copy. Pointing `--db file:` at wrangler's local D1 state directory (`.wrangler/state/**/d1/**`) still runs, but only verifies that local copy — `verify` warns when it detects this. | CI on every PR |
17
17
|**Migration-vs-metadata**| The Node `meta migrate` emits migrations FROM metadata diffs — they cannot drift from metadata by construction. Schema migrations for **every** port are owned by this Node toolchain (`@metaobjectsdev/cli migrate`, ADR-0015); the C# and Python migrate surfaces were removed. | Build time |
18
18
|**Generated-edited**|`@generated` headers in emitted code + three-way merge that preserves hand-edits inside non-generated regions. | Code review |
19
19
|**Prompt-vs-payload**| FR-004 `Renderer.verify` parses `{{...}}` references in templates and checks each one exists on the payload VO. | Build time + runtime |
| TypeScript |`meta verify --db`| Introspects the live DB; reports DB-vs-metadata drift. |
198
-
| Java |`mvn metaobjects:verify -Dmeta.verify.mode=codegen\|templates` (`meta:verify` Maven goal) + `Renderer.verify` (build-time) | The codegen/template-drift `meta:verify` Maven goal is alive and is how Java gates drift in CI (`codegen` mode regens + fails on drift vs committed output; `templates` mode drift-checks `{{...}}` references against the payload VO via `Renderer.verify`). Only the *live-DB-schema*`meta:verify` goal was removed — that's TS-owned now (`meta verify --db`) — along with the runtime auto-create validator (ADR-0015). |
199
-
| Kotlin |`mvn metaobjects:verify -Dmeta.verify.mode=codegen\|templates` (`meta:verify` Maven goal — same goal covers both Java + Kotlin) + `MetadataStartupValidator` (startup) | Same as Java — the `meta:verify` Maven goal remains, plus template-drift and startup validation. |
198
+
| Java |`mvn metaobjects:verify -Dmeta.verify.mode=codegen\|templates` (`metaobjects:verify` Maven goal) + `Renderer.verify` (build-time) | The codegen/template-drift `metaobjects:verify` Maven goal is alive and is how Java gates drift in CI (`codegen` mode regens + fails on drift vs committed output; `templates` mode drift-checks `{{...}}` references against the payload VO via `Renderer.verify`). Only the *live-DB-schema*`metaobjects:verify` goal was removed — that's TS-owned now (`meta verify --db`) — along with the runtime auto-create validator (ADR-0015). |
199
+
| Kotlin |`mvn metaobjects:verify -Dmeta.verify.mode=codegen\|templates` (`metaobjects:verify` Maven goal — same goal covers both Java + Kotlin) + `MetadataStartupValidator` (startup) | Same as Java — the `metaobjects:verify` Maven goal remains, plus template-drift and startup validation. |
200
200
| C# |`meta verify ./metadata --templates ./prompts`| Drift-checks templates against their payload VOs (FR-004 prompt-drift). |
201
201
| Python |`python -m metaobjects.render.verify`| Same as C# verify — template-vs-payload drift. |
Copy file name to clipboardExpand all lines: docs/llms/llms-full.txt
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -50,12 +50,12 @@ The pillars are views on the same metadata, not separate products. All four ship
50
50
Emit idiomatic per-language code from a single metadata model.
51
51
52
52
- TypeScript: Drizzle + Zod + Fastify integration (and React / TanStack on the client side)
53
-
- Java: Spring REST + DTO + JPA repositories via `codegen-spring`
53
+
- Java: Spring REST + DTO + repository interfaces (the persistence impl is consumer-supplied) via `codegen-spring`
54
54
- Kotlin: KotlinPoet + Exposed + Spring via `codegen-kotlin`
55
55
- C#: EF Core + ASP.NET
56
56
- Python: Pydantic + FastAPI
57
57
58
-
Hand-edit-preserving regeneration uses a three-way merge so engineers can extend generated entities without losing their work when metadata changes. M:N relationship codegen (FR-018) ships in all five ports: entity navigation, idiomatic ORM wiring (Drizzle m2m / EF Core `UsingEntity` / Spring repo+JPA / Exposed / Pydantic), and REST traversal (`GET /<source-plural>/{id}/<relation>`).
58
+
Hand-edit-preserving regeneration uses a three-way merge so engineers can extend generated entities without losing their work when metadata changes. M:N relationship codegen (FR-018) ships in all five ports: entity navigation, idiomatic ORM wiring (Drizzle m2m / EF Core `UsingEntity` / Spring repo interface / Exposed / Pydantic), and REST traversal (`GET /<source-plural>/{id}/<relation>`).
59
59
60
60
### Runtime metadata
61
61
@@ -94,7 +94,7 @@ Because the render is conformance-gated, the determinism guarantee holds in ever
94
94
| Language | Status | Notes |
95
95
|---|---|---|
96
96
| TypeScript | Reference implementation, npm `0.21.3` | All four pillars. 2500+ tests passing. Owns the canonical schema-migration toolchain used by every port (ADR-0015). Bun-first dev. |
97
-
| Java | Maven Central `7.21.3` | Spring REST + JPA codegen, OMDB runtime persistence (pure data-access) with Spring-tx. Fully green across all conformance corpora. |
97
+
| Java | Maven Central `7.21.3` | Spring REST + DTO + repository-interface codegen, OMDB runtime persistence (pure data-access) with Spring-tx. Fully green across all conformance corpora. |
98
98
| Kotlin | Maven Central `7.21.3` | KotlinPoet codegen + Exposed runtime + `metadata-ktx` facade. Ships via the Java reactor. |
0 commit comments