Skip to content

Commit a828c29

Browse files
dmealingclaude
andcommitted
docs(roadmap): cross-port <Name>Extractor codegen shipped (TS/Python/C#/Kotlin parity)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 50cd07a commit a828c29

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

spec/roadmap.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ _Last refreshed 2026-05-30._
5353
- **Metadata-driven recover (Phase B).** Runtime `recover(MetaObject, text) → RecoveryResult<Object>` assembles a typed object graph (nested objects + arrays-of-objects) via the Phase A model — never-throws, opt-in `orThrow()`, cycle/depth guard. Adds **array-of-enum** per-element coercion and generalizes **`@default`** to all field types (engine fill → DEFAULTED + per-type load validation in all 4 loader ports; Java legacy `setDefaultValues`/`getDefaultValue` unified). Each port's **codegen `recover()` delegates** to the runtime (codegen-wrapping-runtime), closing the nested-object/array codegen gap ("Plan 2.1") while keeping a self-contained scalar/enum baked `recover()` for back-compat. All 5 ports; recover-conformance byte-green. (A cross-port `recover``extract` rename is queued pre-GA — `extract` is the industry-standard term and avoids colliding with the retry-loop sense of "recovery".) Designed in `docs/superpowers/specs/2026-05-30-recover-codegen-nested-design.md`.
5454
- **Prompt-construction pillar — per-port building blocks complete.** Render (Mustache) + payload-VO codegen + `verify` (FR-004), the output parser (FR-006), and the output-format prompt + recover (FR-010) all ship in all 5 ports. The library-side primitives of the fourth pillar are delivered; what remains is MCP exposure (see Planned).
5555
- **Java flavored object + extractor codegen** (shipped 2026-05-31, **Java only**). Direct (code-as-code, no templates) generation of objects that carry their `MetaObject` and recover a typed graph (nested + arrays-of-objects), in two selectable flavors via a `flavor` generator option: `pojoAware` (`extends PojoObject`) and `valueObject` (`extends ValueObject`, perf-tuned cached per-field value-holder accessors), plus a self-registering `ObjectClassBindingProvider` and a `<Name>Extractor` wrapping the Phase-B runtime recover. Reuses the legacy direct object-codegen framework byte-unchanged (extends via hooks; downstream-extensible `protected` seams + `createWriter` factory). Compile-and-run gated per flavor + Extractor + a downstream-customization proof. Other ports frozen until Java is correct; designed in `docs/superpowers/specs/2026-05-31-java-flavored-object-codegen-design.md`.
56+
- **Cross-port `<Name>Extractor` codegen** (shipped 2026-05-31, TS / Python / C# / Kotlin — capability parity with Java). A generated `<Name>Extractor` per `template.output` adds an **`extract` tier** over the existing recover: `extract` returns the port's **idiomatic strict typed payload** (TS inferred type, Python Pydantic model, C# `record`, Kotlin `data class`) and throws on lost-required; `recover` (never-throws, all-nullable mirror) is re-exposed. It reuses each port's existing nested-capable runtime-delegating recover and a generated recursive mirror→strict mapper (nested objects + arrays-of-objects, one-shot construct), with **no registry / binding / factory** (codegen knows the type graph statically) and **no new flavored object-class generation** (constructs each port's existing idiomatic types). Compile-and-run gated per port (incl. non-string scalar arrays). Surfaced + fixed a latent cross-port scalar-array recover bug (JVM `DataConverter` array conversions were dead/throwing; `MetaObjectRecover`/C# recover emitted scalar arrays as non-arrays). **Idiom divergence (intentional):** TS/Python honor `@required` optionality in the strict payload; C#/Kotlin payloads are all-`required` (no optional-absent modeling) — extract works into each port's existing payload shape. The cross-port `recover → extract` rename (#87) now sweeps all 5 ports together next. Designed in `docs/superpowers/specs/2026-05-31-cross-port-extractor-codegen-design.md`.
5657
- **Cross-port `templateGenerator()`** (shipped 2026-05-28). TS reference + Python / C# / Java factories; 3/3 conformance fixtures byte-equivalent. Java ships lightweight types under `com.metaobjects.render.templategen` (its legacy `Generator` interface was incompatible). Maven-plugin integration for the Java factory is a follow-up. See `design-docs/2026-05-28-cross-port-template-generator.md`.
5758
- **OMDB Spring Boot 3 starter** (shipped 2026-05-30). Autoconfiguration wires a `DataSource``ObjectManagerDB` with Spring-tx; closes the OMDB-modernization open question (jOOQ migration ruled out as a non-goal).
5859
- **FR-008/FR-009 — Cross-port REST API contract + 10 filter operators.** Shipped in all 5 ports.

0 commit comments

Comments
 (0)