Skip to content

Commit 1f70d8f

Browse files
committed
Refresh roadmap tasks
1 parent 6866979 commit 1f70d8f

1 file changed

Lines changed: 58 additions & 3 deletions

File tree

TASKS.md

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ This file tracks the active forward-looking queue for `CodecMapper`.
44

55
Completed rename, parser, bridge, compatibility, JSON Schema, docs, and projection work now lives in [notes/AGENT_NOTES.md](notes/AGENT_NOTES.md) and [AGENTS.md](AGENTS.md).
66

7-
- **Completed archive**
8-
- [x] Tasks `15`, `16`, `17`, `19`, `19a`, `20`, `20a`, `20b`, `20c`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, and `28` are complete and documented in code, tests, and docs.
9-
107
- [ ] **Task 18: Add code generation modes for codecs**
118
- Support generating codec/schema code from message-contract definitions.
129
- Support generating codec/schema code from JSON examples or schema-like JSON inputs where the mapping is deterministic enough.
@@ -39,3 +36,61 @@ Completed rename, parser, bridge, compatibility, JSON Schema, docs, and projecti
3936
- Capture at least one checked-in workflow for JSON serialize and deserialize hot paths, with outputs that can be inspected as call stacks or folded into flamegraphs.
4037
- Keep the profiling entry points deterministic and parameterized so later optimization work can compare the same workload before and after changes.
4138
- Document how to rerun the profiling workflow and where generated artifacts land so it becomes part of normal performance work, not tribal knowledge.
39+
40+
- [ ] **Task 37: Add structured decode error outputs for app boundaries**
41+
- Provide a structured error model that callers can use for REST responses, startup config failures, and message rejection logs instead of relying only on formatted exception text.
42+
- Preserve the existing path-aware detail across JSON, XML, YAML, and KeyValue.
43+
- Keep the fast path cheap when callers still want exception-based decode failures.
44+
- Document how to map the structured errors into common HTTP and configuration-reporting workflows.
45+
46+
- [ ] **Task 38: Publish end-to-end REST and config integration guides**
47+
- Add one JSON-first HTTP guide that shows request decode, response encode, and decode-failure handling in a realistic endpoint flow.
48+
- Add one configuration-loading guide that shows layered environment/file input, explicit defaults, startup validation, and friendly failure reporting.
49+
- Keep the examples grounded in the existing stable DSL rather than introducing framework-specific schema systems.
50+
51+
- [ ] **Task 39: Improve union and enum authoring ergonomics for app contracts**
52+
- Add higher-level helpers for common string-enum, message-envelope, and public API union shapes so users do not have to hand-write projector/injector code for the most common cases.
53+
- Keep the explicit authored contract visible rather than hiding it behind reflection or attributes.
54+
- Cover JSON, XML, YAML, KeyValue, and JSON Schema export behavior for any new helpers.
55+
56+
- [ ] **Task 40: Add explicit unknown-field policy controls**
57+
- Support contract-level decisions for rejecting, allowing, or collecting unknown fields during decode.
58+
- Keep the default behavior conservative and symmetric with the library's explicit-contract goals.
59+
- Document how those policies apply differently for config-style inputs versus message/API boundaries.
60+
61+
- [ ] **Task 41: Add migration guidance from `System.Text.Json` and `Newtonsoft.Json`**
62+
- Show how to move one config type, one message contract, and one API DTO over incrementally without rewriting an entire system.
63+
- Explain where `CodecMapper` is a good fit and where the convention-based serializers still remain simpler.
64+
- Keep the guide focused on practical migration steps rather than abstract comparisons.
65+
66+
- [ ] **Task 42: Evaluate a non-erased typed codec path for hot-path performance**
67+
- Prototype a compile/runtime path that keeps more concrete type information instead of routing through erased `obj`-based schema nodes in the hottest encode/decode paths.
68+
- Measure whether that materially improves the current string-heavy and numeric-heavy benchmark weak spots without breaking AOT or Fable support.
69+
- Treat this as a benchmark-driven architecture decision, not an automatic rewrite.
70+
71+
- [ ] **Task 43: Improve the C# schema authoring DSL and add opt-in source generation**
72+
- Expand the C# schema authoring surface so common record/class/message contracts are less verbose to write by hand.
73+
- Add C# source-generation support in a separate opt-in project so generated contracts do not add reflection or Roslyn dependencies to the core runtime assembly.
74+
- Add F# source-generation or scaffolding support in a separate opt-in project for teams that want checked-in authored schema code from existing models or examples.
75+
- Keep both generators layered on top of the stable runtime DSL instead of creating a second runtime schema system.
76+
- Prefer readable generated output and reviewable partial adoption over opaque build-only magic.
77+
78+
- [ ] **Task 44: Add OpenAPI and schema-ecosystem guidance for REST users**
79+
- Document how exported JSON Schema can feed external API-description or validation toolchains without conflating `CodecMapper` with a full OpenAPI framework.
80+
- Evaluate whether a narrow OpenAPI bridge is worth adding as an opt-in package rather than bloating the core library.
81+
- Keep the primary authored contract in `Schema<'T>` even when downstream tooling wants OpenAPI-shaped output.
82+
83+
- [ ] **Task 45: Strengthen the external-schema import and lowering story**
84+
- Improve guidance and, where practical, implementation support for external contracts that start from JSON Schema rather than authored `Schema<'T>`.
85+
- Focus especially on the gap between authored recursive/discriminated contracts and imported schema-owned contracts.
86+
- Keep the raw-JSON fallback boundary explicit instead of pretending every external schema can lower into a typed authored contract.
87+
88+
- [ ] **Task 46: Publish a JSON-first onboarding path**
89+
- Add a short path for developers who only care about JSON at first and would otherwise bounce off the multi-format surface.
90+
- Keep the existing cross-format story intact, but lead with the smallest path to value for message and REST use cases.
91+
- Link that path from the README and docs landing pages.
92+
93+
- [ ] **Task 47: Expand contract-pattern coverage for common app shapes**
94+
- Add polished copy-paste patterns for string enums, message envelopes, PATCH/update DTOs, event payloads, and layered config sections with defaults.
95+
- Keep these patterns aligned with the stable DSL and existing docs structure rather than scattering them across ad hoc examples.
96+
- Cross-link the patterns with the error-handling and migration guides once those land.

0 commit comments

Comments
 (0)