Skip to content

Commit 1542a52

Browse files
committed
docs: apply remaining FR-006 doc-review polish
- Java capability row: split the long Output-parser cell into a short table entry + a paragraph below the table (Payload-VO row collapsed the same way — both gaps share the same Java-codegen-layer gate). - TS / C# / Python: add a "Consumer dependency" bolded callout to each port's FR-006 section, mirroring Kotlin's format. Kotlin had the only one before (the kotlinx-serialization-json gotcha); the other three also have an implicit dep (zod / BCL / pydantic) that's worth naming even when it's trivial. - Python: add a "Note on emitted output" callout explaining that ruff_format is applied to the file before write, so the literal layout may reflow whitespace vs the snippet — function signatures and class definitions are stable.
1 parent 19c1141 commit 1542a52

4 files changed

Lines changed: 28 additions & 2 deletions

File tree

docs/ports/csharp.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,10 @@ Cross-port design is at [ADR-0010](../../spec/decisions/ADR-0010-template-output
208208
the feature reference is at
209209
[`features/templates-and-payloads.md`](../features/templates-and-payloads.md#output-parsing-fr-006).
210210

211+
**Consumer dependency.** `System.Text.Json` ships in the .NET 8 BCL — no
212+
NuGet package to add. The generated parser uses the strict (case-sensitive)
213+
default options.
214+
211215
## Angular 18 frontend
212216

213217
C# 12 / .NET 8 backends pair cleanly with an Angular 18 client built from

docs/ports/java.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,23 @@ configuration model that has not yet been specced.
243243
| Source kinds (table / view / storedProc) | Yes |
244244
| `field.currency` / `field.enum` / `field.object` + `@storage` | Yes |
245245
| Templates + render (FR-004) | Yes (`metaobjects-render`) |
246-
| Payload-VO codegen | Not on Java itself — consumers use `Map<String,Object>` or hand-coded VOs. See [Kotlin port](kotlin.md) for `@Serializable` payload codegen. |
247-
| Output parser codegen (FR-006) | Not yet — gated on Java codegen layer (per the [FR-006 cross-port spec](../superpowers/specs/2026-05-25-fr6-template-output-parser-codegen.md)). Java consumers needing typed `template.output` parsing today should drive their codegen through the [Kotlin port](kotlin.md) (`KotlinOutputParserGenerator`) or hand-write a Jackson `readValue` call. |
246+
| Payload-VO codegen | Not on Java itself — see note below |
247+
| Output parser codegen (FR-006) | Not yet — gated on Java codegen layer; see note below |
248248
| Migrations | `mvn meta:migrate` / `mvn meta:migrate -Dflyway=true` |
249249
| Drift verify | `mvn meta:verify` (DB) + `Renderer.verify` (prompts) |
250250
| Runtime metadata | Full — OMDB ObjectManager |
251251
| REST controller codegen | Spring Web MVC — `metaobjects-codegen-spring` (FR-008 §2.1) |
252252

253+
**On payload-VO + output-parser codegen.** Java consumers today use
254+
`Map<String,Object>` or hand-coded VOs for template payloads, and hand-write
255+
a Jackson `readValue(text, MyClass.class)` call for `template.output` parsing.
256+
Both gaps are gated on the planned Java codegen layer (per the
257+
[FR-006 cross-port spec](../superpowers/specs/2026-05-25-fr6-template-output-parser-codegen.md)).
258+
JVM consumers needing typed payload + parser codegen today can drive
259+
through the [Kotlin port](kotlin.md) (`KotlinPayloadGenerator` +
260+
`KotlinOutputParserGenerator`) — kotlinx.serialization output is
261+
JVM-callable from Java consumers via the underlying bytecode.
262+
253263
## Conformance status (as of 2026-05-27)
254264

255265
| Corpus | Result |

docs/ports/python.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,14 @@ Cross-port design is at [ADR-0010](../../spec/decisions/ADR-0010-template-output
243243
the feature reference is at
244244
[`features/templates-and-payloads.md`](../features/templates-and-payloads.md#output-parsing-fr-006).
245245

246+
**Consumer dependency.** The emitted parser imports `pydantic` (v2). Add it via
247+
`pip install pydantic>=2` or `uv add pydantic` if you don't already have it.
248+
249+
**Note on emitted output.** The generator runs `ruff_format(content)` on the
250+
file before writing, so the literal emitted layout may reflow whitespace
251+
slightly vs the snippet above. Function signatures, class definitions, and
252+
import lines are stable.
253+
246254
## Capability snapshot
247255

248256
| Feature | Status |

docs/ports/typescript.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,10 @@ time. Cross-port design is at
204204
the feature reference is at
205205
[`features/templates-and-payloads.md`](../features/templates-and-payloads.md#output-parsing-fr-006).
206206

207+
**Consumer dependency.** The emitted parser imports `zod`. It's likely already in
208+
your `dependencies` (Drizzle / `@metaobjectsdev/runtime-ts` both lean on it);
209+
if not, `npm i zod`.
210+
207211
## Capability snapshot
208212

209213
| Feature | Status |

0 commit comments

Comments
 (0)