You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TASKS.md
+58-3Lines changed: 58 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,6 @@ This file tracks the active forward-looking queue for `CodecMapper`.
4
4
5
5
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).
6
6
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
-
10
7
-[ ]**Task 18: Add code generation modes for codecs**
11
8
- Support generating codec/schema code from message-contract definitions.
12
9
- Support generating codec/schema code from JSON examples or schema-like JSON inputs where the mapping is deterministic enough.
- 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.
40
37
- Keep the profiling entry points deterministic and parameterized so later optimization work can compare the same workload before and after changes.
41
38
- Document how to rerun the profiling workflow and where generated artifacts land so it becomes part of normal performance work, not tribal knowledge.
- 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.
- 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