Skip to content

Commit 7615d2c

Browse files
dmealingclaude
andcommitted
docs(roadmap): FR-011 recover hardening shipped (all 5 ports)
Move FR-011 from Planned to Shipped; recover-conformance corpus 10 -> 20 cases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 7660c98 commit 7615d2c

1 file changed

Lines changed: 2 additions & 9 deletions

File tree

spec/roadmap.md

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ _Last refreshed 2026-05-30._
2929
- **Render conformance**`fixtures/render-conformance/`. TS / C# / Java / Kotlin / Python byte-identical.
3030
- **Persistence conformance**`fixtures/persistence-conformance/`. TS / C# / Kotlin / Python all 12/12 against Testcontainers Postgres / Derby (per port). Java runs the **query** scenarios only (it no longer owns schema migrations); its runtime auto-create path bootstraps the schema, and the aggregate-projection view scenario is deferred (the view-body builder was part of the removed migration engine).
3131
- **API-contract conformance**`fixtures/api-contract-conformance/`. TS / C# / Java / Kotlin / Python all 20/20.
32-
- **Recover conformance**`fixtures/recover-conformance/` (10 dirty-input cases). TS / C# / Java / Python all 10/10; Kotlin reuses the shared JVM engine.
32+
- **Recover conformance**`fixtures/recover-conformance/` (20 dirty-input cases). TS / C# / Java / Python all 20/20; Kotlin reuses the shared JVM engine.
3333
- **YAML / verify** corpora — green across the ports that ship those layers.
3434

3535
### Key cross-language features
@@ -45,6 +45,7 @@ _Last refreshed 2026-05-30._
4545
- WARN envelope-shape assertion finalized across all 4 ports.
4646
- **FR-006 — `template.output` parser-on-receipt codegen.** ADR-0010. Shipped in all 5 ports (TS / C# / Java / Python / Kotlin); `meta verify` extended to cover output drift.
4747
- **FR-010 — output-format prompt fragment + tolerant `recover` parser.** Shipped in all 5 ports. One `template.output` drives three artifacts: a comment-free output-format prompt fragment (3 styles × json/xml via `@promptStyle`), a tolerant `recover()` (8-stage, never-throws, returns an all-nullable mirror of the payload) that complements FR-006's strict parser, and the `@example`/`@instruction`/`@enumAlias`/`@enumDoc` field-teaching attrs. Pinned by the shared `fixtures/recover-conformance/` corpus; tolerance is at classification + canonical value (not byte-identity). Designed in `docs/superpowers/specs/2026-05-29-fr-010-output-format-prompt-and-tolerant-parsing-design.md`.
48+
- **FR-011 — recover hardening (enum coercion + nested-object recovery).** Shipped in all 5 ports (TS pilot → C# / Java / Kotlin / Python). Hardens FR-010's `recover()` in place: an enum coercion pipeline (exact → `@normalize` `none|collapse|strip``@enumAlias``@coerceDefault` → MALFORMED), `@default` fills an absent enum (emitting the now-live `DEFAULTED` state, which satisfies `@required`), and uniform nested/embedded-object recovery via dotted child paths (`meta.score`, `items[i].label`) across JSON + XML. Normalization is ASCII-only (manual case-fold, byte-identical cross-port); `@normalize`/`@coerceDefault`/`@default` are member-validated on `field.enum` at load time, with an object-level `@normalize` default. Fuzzy matching deferred (reserved pipeline slot). Corpus expanded 10 → 20 cases. Designed in `docs/superpowers/specs/2026-05-30-fr-011-recover-hardening-design.md`.
4849
- **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).
4950
- **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`.
5051
- **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).
@@ -58,14 +59,6 @@ _Last refreshed 2026-05-30._
5859

5960
## Planned
6061

61-
- **FR-011 — recover hardening (enum coercion + nested-object recovery)** — improve FR-010's `recover()`
62-
for LLM output in place (no decouple): an enum coercion pipeline (exact → `@normalize` `none|collapse|strip`
63-
`@enumAlias``@coerceDefault` → MALFORMED; `@default` fills absent; emit the reserved `DEFAULTED`
64-
state), uniform nested/embedded-object recovery, and conformance-corpus expansion. ASCII-only normalization
65-
(byte-identical cross-port); fuzzy matching deferred (reserved slot). TS pilot, then port against the shared
66-
corpus. Designed in `docs/superpowers/specs/2026-05-30-fr-011-recover-hardening-design.md`. *(A broader
67-
"general tolerant-ingestion engine + declarative payload mapping" framing was considered and deliberately
68-
cut — unjustified by current demand; any general inbound-mapping need is consumer-custom, not OSS core.)*
6962
- **MCP exposure of declared prompts/tools** — the remaining library-side piece of the prompt-construction pillar. Surface a `template.output` / tool declaration over the Model Context Protocol (model-agnostic) so an LLM host can discover + register it, built on the shipped render / payload / verify / FR-006 / FR-010 primitives. Designed in `docs/superpowers/specs/2026-05-22-fr-004-cross-language-prompt-construction-design.md`.
7063

7164
### Tracked outside this library repo (not roadmap work here)

0 commit comments

Comments
 (0)