Description of the task
Evaluate whether a schema-driven codegen pipeline — for example an internal FlatBuffers schema compiled with flatc — could replace the hand-rolled conformance oracles that keep the JSON schema, the generated Rust wire model, and the generated TypeScript wire types in agreement.
Today these artifacts are kept in sync by bespoke generators (mxc_schema_gen, wxc_common::ts_emit) plus hand-written conformance helpers and tests (sdk/tests/unit/conformance-helpers.ts, wire-conformance*.test.ts). @bbonaby raised in review of #580 that a single FlatBuffer schema could instead drive flatc-generated JSON schema, Rust types, and TypeScript types, with the FlatBuffer SDK verifying JSON — potentially reducing the amount of bespoke code we author and maintain.
The current no-third-party-generator approach is deliberate. The outcome of this task is a recommendation weighing that trade-off (maintenance cost and comprehensibility of the hand-rolled oracles vs. adopting an external generator/toolchain), not a commitment to switch.
Additional context
Description of the task
Evaluate whether a schema-driven codegen pipeline — for example an internal FlatBuffers schema compiled with
flatc— could replace the hand-rolled conformance oracles that keep the JSON schema, the generated Rust wire model, and the generated TypeScript wire types in agreement.Today these artifacts are kept in sync by bespoke generators (
mxc_schema_gen,wxc_common::ts_emit) plus hand-written conformance helpers and tests (sdk/tests/unit/conformance-helpers.ts,wire-conformance*.test.ts). @bbonaby raised in review of #580 that a single FlatBuffer schema could instead driveflatc-generated JSON schema, Rust types, and TypeScript types, with the FlatBuffer SDK verifying JSON — potentially reducing the amount of bespoke code we author and maintain.The current no-third-party-generator approach is deliberate. The outcome of this task is a recommendation weighing that trade-off (maintenance cost and comprehensibility of the hand-rolled oracles vs. adopting an external generator/toolchain), not a commitment to switch.
Additional context