Skip to content

Commit 62ea5c0

Browse files
committed
no-mistakes(document): Doc pass for report export. Fixed stale corpus and generator counts. Export contract, ports, ADR-0031 Amendment 1, roadmap and changelog already match code at target. Edited four files: docs/CONFORMANCE.md, docs/features/api-contract.md, docs/ports/kotlin.md, README.md. No code or tests touched.
1 parent e7ace3f commit 62ea5c0

4 files changed

Lines changed: 10 additions & 10 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ first-week wedge plan — and `meta init` picks up from there.
148148
|---|---|---|---|
149149
| TypeScript | **npm `1.1.4`** — the `@metaobjectsdev/*` packages | [`docs/ports/typescript.md`](docs/ports/typescript.md) | [`server/typescript/`](server/typescript/) · [`client/web/`](client/web/) |
150150
| Java | **Maven Central `8.1.4`** (`com.metaobjects:*` — the JVM major is npm major + 7) — loader + OMDB + render + Maven plugin all shipped; full conformance green | [`docs/ports/java.md`](docs/ports/java.md) | [`server/java/`](server/java/) |
151-
| Kotlin | **Maven Central `8.1.4`** — codegen tier on top of Java: 16 generators (entity, Exposed table, names, relations, repository, output-parser, output-prompt, render-helper, extractor, filter-allowlist, validator, Spring config, storedProc, Spring controller, requirement-tests, api-docs); 24 / 24 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/) |
151+
| Kotlin | **Maven Central `8.1.4`** — codegen tier on top of Java: 17 generators (entity, Exposed table, names, relations, repository, output-parser, output-prompt, render-helper, extractor, filter-allowlist, validator, Spring config, storedProc, Spring controller, requirement-tests, api-docs, report-export); 24 / 24 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/) |
152152
| C# | **NuGet `1.1.4`** — loader + conformance + EF Core codegen + render engine + `dotnet meta` CLI all shipped | [`docs/ports/csharp.md`](docs/ports/csharp.md) | [`server/csharp/`](server/csharp/) |
153153
| Python | **PyPI `1.1.4`** — loader + conformance + render + entity-model codegen + ObjectManager runtime shipped; schema migrations are TS-owned (ADR-0015) | [`docs/ports/python.md`](docs/ports/python.md) | [`server/python/`](server/python/) |
154154

‎docs/CONFORMANCE.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ regenerate with `ls -d fixtures/<corpus>/*/ | wc -l` for directory-shaped corpor
3434
| [`fixtures/extract-conformance/`](../fixtures/extract-conformance/) | 48 | ✓ | ✓ | inherits the shared JVM engine | ✓ | ✓ |
3535
| [`fixtures/output-prompt-conformance/`](../fixtures/output-prompt-conformance/) | 17 | ✓ | ✓ | ✓ | ✓ | ✓ |
3636
| [`fixtures/persistence-conformance/`](../fixtures/persistence-conformance/) | 59 (53 query + 6 migration) | all 59; the 24 `report-*` and the `-15` decimal scenarios also on SQLite, MySQL and D1, `decimal-exact` also on MySQL (a scenario's `engines:` key is exact) | 53 query (migrations TS-only, ADR-0015); the `report-*` and `engines:` scenarios also on SQLite and MySQL | 53 query (via Exposed); the `report-*` and `engines:` scenarios also on SQLite and MySQL | 53 query; the `report-*` and `engines:` scenarios also on SQLite and MySQL | 53 query (pg8000); the `report-*` and `engines:` scenarios also on SQLite (`sqlite3`) and MySQL (PyMySQL) |
37-
| [`fixtures/api-contract-conformance/`](../fixtures/api-contract-conformance/) | 112 (31 core + 10 tph + 9 m2m + 4 jsonb + 2 write-through + 12 projection + 33 report + 11 decimal) | ✓ (Fastify reference + generated lane); `report/` and `decimal/` also on SQLite, MySQL and D1 | ✓ (embedded HTTP + JDBC); `report/` and `decimal/` generated controllers over OMDB on Postgres, SQLite and MySQL | ✓ (embedded HTTP + Exposed); `report/` and `decimal/` also on SQLite and MySQL | ✓ (Kestrel + Npgsql); `report/` and `decimal/` also on SQLite and MySQL | ✓ (FastAPI + pg8000); `report/` and `decimal/` also on SQLite and MySQL |
37+
| [`fixtures/api-contract-conformance/`](../fixtures/api-contract-conformance/) | 117 (31 core + 10 tph + 9 m2m + 5 jsonb + 2 write-through + 12 projection + 37 report + 11 decimal) | ✓ (Fastify reference + generated lane); `report/` and `decimal/` also on SQLite, MySQL and D1 | ✓ (embedded HTTP + JDBC); `report/` and `decimal/` generated controllers over OMDB on Postgres, SQLite and MySQL | ✓ (embedded HTTP + Exposed); `report/` and `decimal/` also on SQLite and MySQL | ✓ (Kestrel + Npgsql); `report/` and `decimal/` also on SQLite and MySQL | ✓ (FastAPI + pg8000); `report/` and `decimal/` also on SQLite and MySQL |
3838
| [`fixtures/decimal-wire/`](../fixtures/decimal-wire/) | 1 vector file (format, parse, filter operand, 15-digit read) | ✓ (`runtime-ts` and the generated helper) | ✓ (`CanonicalDecimal`) | ✓ (the generated wire file) | ✓ (`DecimalWire`) | ✓ (`decimal_wire`) |
3939
| [`fixtures/validation-conformance/`](../fixtures/validation-conformance/) | 42 cases | ✓ (generated Zod + run-time `runValidators`) | ✓ | ✓ | ✓ | ✓ (generated Pydantic + run-time `run_validators`) |
4040
| [`fixtures/registry-conformance/`](../fixtures/registry-conformance/) | 1 canonical manifest | ✓ (reference emitter) | ✓ | ✓ | ✓ | ✓ |
@@ -348,9 +348,9 @@ REAL, a MySQL `DECIMAL` keeps its scale, a MySQL `DATETIME` is the UTC wall cloc
348348
`report-relative-date` carries a per-engine seed (`seed-data-engine`). `op: relate` and the
349349
write ops stay Postgres-only. See [features/reporting.md](features/reporting.md#what-the-corpus-gates).
350350

351-
### `fixtures/api-contract-conformance/` (112)
351+
### `fixtures/api-contract-conformance/` (117)
352352

353-
All 106 scenarios → [features/api-contract.md](features/api-contract.md) (cross-port
353+
All 117 scenarios → [features/api-contract.md](features/api-contract.md) (cross-port
354354
REST API URL grammar + JSON wire format). Verifies every backend's emitted CRUD
355355
routes answer identically over HTTP — list / get / create / patch+put / delete,
356356
plus pagination (`limit`/`offset`), sort (`sort=field:dir`), the `withCount=1`
@@ -364,12 +364,12 @@ URL grammar `?filter[<field>][<op>]=<value>` (FR-009). On top of the 31 core
364364
scenarios the corpus carries seven sub-corpora — `tph/` (10, single-table
365365
inheritance; a subtype decimal filters and refuses extra digits), `m2m/` (9 — 3 plain, 5 gating TPH x M:N together, the combination
366366
each corpus alone could not reach, and 1 pinning the collection-URL spelling),
367-
`jsonb/` (4, typed value-object columns; numbers inside them: a double stays a JSON number, a decimal is the canonical string),
367+
`jsonb/` (5, typed value-object columns; numbers inside them: a double stays a JSON number, a decimal is the canonical string),
368368
`write-through/` (2, table-write + view-read entities), `projection/` (12, a
369369
read-only view answers reads and refuses writes with 405; a projection with no declared
370370
identity has no item route; a projection keyed on a field not named `id` is addressed by
371371
it, whether its identity names `@fields` or derives them; decimal and float fields filter), `decimal/` (11, ADR-0019 Amendment 1: a decimal, array element and undeclared-precision column included, is one
372-
canonical string, read exactly, filtered exactly and refused past its declared digits) and `report/` (33,
372+
canonical string, read exactly, filtered exactly and refused past its declared digits) and `report/` (37,
373373
FR-044: a view-backed `object.report` is listed, filtered, sorted and paged on
374374
its derived fields, answers `POST` with 405 and mounts no `/{id}`; a `@spine` report keeps
375375
a row with no facts, and a measure with `@default` filters and sorts as its default). All 5 ports — TS, Java,
@@ -555,7 +555,7 @@ files into a real Cube.
555555
## Orphaned fixtures (tested but not yet documented)
556556

557557
The fixtures in the nine corpora mapped above (metamodel 413 + yaml 16 + verify 37
558-
+ render 16 + persistence 59 + api-contract 112 + source-resolution 25 + scope 10 +
558+
+ render 16 + persistence 59 + api-contract 117 + source-resolution 25 + scope 10 +
559559
dependency 23) each map to a feature doc, and so do the two requirement corpora and the
560560
`cube-model` corpus, whose case lists live in their own READMEs. None are orphaned today. The remaining
561561
corpora in the totals table gate tooling contracts (registry manifests, provider

‎docs/features/api-contract.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ the empty rows, `isNull=true` matches nothing, and a sort on it orders the same
604604
engine.
605605

606606
Gated by [`fixtures/api-contract-conformance/report/`](../../fixtures/api-contract-conformance/report/)
607-
(30 scenarios), **generated lane only, on all five ports**, for the reason `projection/`
607+
(37 scenarios), **generated lane only, on all five ports**, for the reason `projection/`
608608
gives. The columns, their types and the per-port generated files are in
609609
[reporting.md](reporting.md#how-a-report-is-served).
610610

‎docs/ports/kotlin.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ your own `<groupId>`, `<artifactId>` and `<version>`:
121121

122122
## Configure
123123

124-
The 16 generators registered in `codegen-kotlin` (`GeneratorRegistry.kt`):
124+
The 17 generators registered in `codegen-kotlin` (`GeneratorRegistry.kt`):
125125

126126
| Generator | Output | Per |
127127
|---|---|---|
@@ -255,7 +255,7 @@ A requirement that becomes live adds a failing member (a red test, no compile br
255255

256256
### Declarative template-codegen (`TemplateScopeGenerator`)
257257

258-
The 16 generators above are a starting point, not the ceiling. When you need a shape
258+
The 17 generators above are a starting point, not the ceiling. When you need a shape
259259
none of them emits, Kotlin has **both** authoring paths — and which to reach for is a
260260
real decision (tradeoff table: [`codegen-concepts.md` §3](../features/codegen-concepts.md)).
261261

0 commit comments

Comments
 (0)