- Fix code examples hardcoding little-endian: read_string, write_string, read_string_indirect now take endian parameter and use match on Endian. - Fix TUnion dispatch examples: remove undefined functions (read_u8, read_field, read_struct, read_f32_raw), remove Value returns (contradicts 'no intermediate Value tree'), add endian-aware discriminator reading for Uint8/Uint16/Uint32. - Fix read_f32 example: inline the endian-aware conversion instead of calling undefined read_f32_raw; document it as aligned-mode only. - Fix architecture README: 16→17 kinds in schema-layer and validation descriptions. - Fix ADR-095: clarify validation operates on Value instances, not raw byte buffers directly. Fix 'defense in depth' paragraph. - Fix ADR-097: add §3a defining TRecord 'values' property shape. - Fix ADR-098: TTimestamp format ISO 8601→RFC 3339. - Tighten OQ-071 impacts field: state what IS blocked, not just what isn't.
27 lines
1.5 KiB
Markdown
27 lines
1.5 KiB
Markdown
# OQ-071: Builder API for schema construction
|
|
|
|
- **Origin**: [crates/typedef/schema-layer.md](crates/typedef/schema-layer.md),
|
|
[crates/typedef/overview.md](crates/typedef/overview.md);
|
|
`docs/research/alknet-typedef/findings.md` (the builder API was noted
|
|
as the one detail not covered by the POCs)
|
|
- **Status**: deferred(scope)
|
|
- **Door type**: Two-way (additive — a builder API can be added without
|
|
changing the existing JSON-consumption path)
|
|
- **Priority**: medium
|
|
- **Impacts**: Blocks programmatic schema construction in Rust without a
|
|
JS toolchain. Any consumer that wants to build typedef schemas at
|
|
runtime from Rust code (rather than loading pre-authored JSON) must
|
|
construct the JSON manually or depend on TypeBox. Does NOT block any
|
|
current consumer — all v1 consumers (SFTP, metatensor, binary call
|
|
frames, TTY negotiation) use pre-authored schemas.
|
|
- **Blocked on**: A concrete need for programmatic schema construction
|
|
in Rust. The current consumers (SFTP, metatensor, binary call frames,
|
|
TTY negotiation) all have schemas that can be hand-written or generated
|
|
from TypeBox.
|
|
- **Resolution**: Not yet decidable. The builder API is important but
|
|
not needed for the initial consumers. The engine's JSON-consumption
|
|
path is the primary interface for v1. A builder API would be a fluent
|
|
Rust API that produces the same JSON Schema structure — it would sit
|
|
on top of the engine, not inside it.
|
|
- **Cross-references**: ADR-095, [schema-layer.md](crates/typedef/schema-layer.md)
|