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
The launch review only pressure-tested TS+Python; auditing the other three ports
found the same class of defects (Java worst — a fabricated runtime example like
Python's). All fixes verified against generator/CLI/render source.
Java (docs/ports/java.md): Configure block cited a nonexistent JavaPojoGenerator
→ the real Spring* generators; the OMDB "Use" example was fabricated end-to-end
(ObjectManagerDb/.builder()/persist/getObjectsBy + a never-generated Author POJO)
→ real connection-first ObjectManagerDB API; FR-004 Renderer.render is an instance
method + RenderRequest is a record (no builder); Verify.verify/Renderer.verify
don't exist → Verify.check; mvn goal prose meta:gen → metaobjects:generate; added
the ${metaobjects.version}=7.11.3 note.
C# (docs/ports/csharp.md): `dotnet meta --help` is broken → `dotnet meta`; removed
the fictional ForgeTypesProvider + fixed CoreTypes.CoreTypesProvider/namespace;
"record per entity" → class; RenderRequest object-initializer; real .g.cs filenames;
/api/author → /api/authors; added the EF Core + Npgsql consumer-dep note.
Kotlin (docs/ports/kotlin.md): generator count 7/9 (contradictory) → the real 14
(added the 5 missing rows); entity generator also emits object.projection; the Use
example aligned to real emitted shape (nullable auto-PK, jakarta validation attrs,
no @serializable on entities); stale "122 tests" softened.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XeGSV3StPCcJGZNNJ4ZfAb
`Verify.verify(loader, provider, options)` drift-checks every `template.*` node
205
-
against its `@payloadRef`. Wire it into a Maven test (e.g. a JUnit assertion in
206
-
the `test` phase).
248
+
`Verify.check(templateText, fields, options)` returns a `List<VerifyError>` (empty
249
+
= no drift) — it cross-checks a template's variables against its declared payload
250
+
field tree (`List<PayloadField>`), flagging any variable absent from the payload
251
+
(`ERR_VAR_NOT_ON_PAYLOAD`), unresolved partials, and unused required slots. Wire it
252
+
into a Maven test (e.g. a JUnit assertion in the `test` phase).
207
253
208
254
## Generators
209
255
@@ -248,7 +294,7 @@ configuration model that has not yet been specced.
248
294
| Payload-VO codegen | Yes — `SpringPayloadGenerator` (in `metaobjects-codegen-spring`) emits a Java 21 `record` per template, mirrors the Kotlin shape |
249
295
| Output parser codegen (FR-006) | Yes — `SpringOutputParserGenerator` (in `metaobjects-codegen-spring`) — see usage below |
250
296
| Migrations | TS-only (`@metaobjectsdev/cli migrate`) — the Java migration engine and the OMDB runtime auto-create path were both removed (ADR-0015); apply the TS-produced DDL to the database |
251
-
| Drift verify |`Renderer.verify` / `Verify.verify` (prompts). Live-DB schema-drift verification is part of the TS migration toolchain |
297
+
| Drift verify |`Verify.check` / `Verify.checkOutputPrompt` (prompts). Live-DB schema-drift verification is part of the TS migration toolchain |
252
298
| Runtime metadata | Full — OMDB ObjectManager |
253
299
| REST controller codegen | Spring Web MVC — `metaobjects-codegen-spring` (FR-008 §2.1) |
254
300
@@ -287,9 +333,10 @@ try {
287
333
}
288
334
```
289
335
290
-
`Verify.verify(loader, provider, options)` walks `template.output` nodes the
291
-
same way it walks `template.prompt`, catching payload-VO ↔ parser drift at
292
-
build time. Cross-port design is at
336
+
The same `Verify` API guards the output side: `Verify.checkOutputPrompt(fragment,
337
+
requiredFieldNames)` checks the output-format prompt fragment names every required
338
+
field, and `Verify.check(...)` (with output-tag slots supplied via its
339
+
`VerifyOptions`) catches payload-VO ↔ parser drift at build time. Cross-port design is at
-**`metaobjects-metadata-ktx`** — thin Kotlin facade over the Java loader + render
14
14
engine for idiomatic Kotlin runtime use.
15
15
@@ -69,15 +69,20 @@ Two modules:
69
69
70
70
## Configure
71
71
72
-
The 9 generators in `codegen-kotlin`:
72
+
The 14 generators registered in `codegen-kotlin` (`GeneratorRegistry.kt`):
73
73
74
74
| Generator | Output | Per |
75
75
|---|---|---|
76
-
|`KotlinEntityGenerator`|`<Entity>.kt` — Kotlin `data class` (Jackson-compatible; no `@Serializable`) | every `object.entity` + `object.value`|
76
+
|`KotlinEntityGenerator`|`<Entity>.kt` — Kotlin `data class` (Jackson-compatible; no `@Serializable`) | every `object.entity`, `object.value`, and `object.projection`|
77
77
|`KotlinExposedTableGenerator`|`<Entity>Table.kt` — Exposed `Table` object with PK + FK + `@storage` columns | entities with `source.rdb`|
78
78
|`KotlinRelationsGenerator`|`<Entity>Relations.kt` — extension fns for `cardinality=many` query helpers | entities with to-many relationships |
0 commit comments