Add the alknet-typedef architecture specification — the binary struct engine that takes JSON Schema with TypeDef:* custom keywords and produces offset maps, read/write functions, and validation. Specs (docs/architecture/crates/typedef/): - overview.md: purpose, 'schema is the format' principle, consumers, scope - schema-layer.md: 17 TypeDef:* kinds, jsonschema integration, annotations - layout-engine.md: two layout modes, three variable-length strategies - data-access.md: read/write, TUnion dispatch, field paths, zero-copy - validation.md: custom keyword validators, TypedefError, TypedefEngine ADRs: - 095: Purpose, scope, and the jsonschema engine - 096: Two layout modes — packed sequential vs aligned static - 097: Schema annotations — endianness, alignment, encoding, TUnion - 098: Error handling and validation strategy OQs (deferred(scope)): - 069: Arrays of variable-length-element structs - 070: no_std + alloc support - 071: Builder API for schema construction Index updates: README doc table + ADR table, open-questions.md theme table + Deferred/Blocked section, overview.md crate graph. Grounded in the alknet-typedef POC (26 tests passing) and the call-channels-unification research. Reviewed by architecture-reviewer; all critical issues, warnings, and suggestions addressed.
25 lines
1.3 KiB
Markdown
25 lines
1.3 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**: No current consumer. Schemas are authored in TypeBox (JS)
|
|
or hand-written JSON for v1. A Rust builder API would enable
|
|
programmatic schema construction in Rust without depending on a JS
|
|
toolchain, but no current consumer needs this.
|
|
- **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)
|