Restore KDL-as-IR to AFI_ARCHITECTURE
Re-stating the architectural intent that got silently swapped to "JSON
schema" during the doc-restoration commit (6eca514). The original
AFI_ARCHITECTURE positioned KDL as the LLVM-IR-equivalent of the
system; I read the stale-package-name note at the bottom as
invalidating the whole architecture description and substituted
JSON-schema references thinking that was the more-current intent.
That conflated implementation drift (mizan-ast/mizan-schema package
names) with substrate intent (KDL is the IR). The packages had
drifted; the IR target had not. Restoring the section.
Frames KDL-as-IR explicitly as forward-direction. The current
OpenAPI/JSON-Schema codegen path is transitional — it's the layered
indirection where adapter divergence lives (AFI conformance suite
demonstrates this). Real KDL implementation lives in a forthcoming
mizan-schema package; today's path is sediment around the eventual
substrate.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,12 +38,34 @@ against the raw kernel — so a React developer gets `useEcho()` and
|
|||||||
`<MizanContext>`, a Vue developer gets `useEcho()` composables, a
|
`<MizanContext>`, a Vue developer gets `useEcho()` composables, a
|
||||||
Svelte developer gets readable stores. Same kernel underneath.
|
Svelte developer gets readable stores. Same kernel underneath.
|
||||||
|
|
||||||
## Schema is load-bearing
|
## KDL is the IR
|
||||||
|
|
||||||
The backend exports a JSON schema describing every `@client`-decorated
|
The Mizan IR is **KDL** — the LLVM-IR-equivalent of the system. Every
|
||||||
function and context (`x-mizan-functions`, `x-mizan-contexts`). The
|
backend adapter produces KDL describing its registered functions,
|
||||||
schema IS the contract: codegen reads it, the edge manifest derives
|
contexts, types, and invalidation graph. Every codegen target consumes
|
||||||
from it, MWT auth gates against it.
|
KDL. KDL is the contract; everything else (REST envelopes, OpenAPI
|
||||||
|
documents, framework idioms) is sediment around it.
|
||||||
|
|
||||||
|
The IR must be validated against multiple adapters before it is
|
||||||
|
considered stable. Single-adapter validation hides assumptions —
|
||||||
|
divergence between adapters is what the IR exists to prevent.
|
||||||
|
|
||||||
|
Forward-direction primitives:
|
||||||
|
|
||||||
|
- `cores/mizan-python` builds the IR from registered functions
|
||||||
|
(`build_ir()` walks `mizan_core.registry`, emits KDL)
|
||||||
|
- A `mizan-schema` package (forthcoming) holds the canonical KDL
|
||||||
|
grammar / type system definition that every adapter targets
|
||||||
|
- Codegen reads KDL directly — no OpenAPI envelope, no
|
||||||
|
`openapi-typescript`, no per-backend converter divergence
|
||||||
|
- Edge manifest, MWT claims, and other protocol artifacts all derive
|
||||||
|
from the same KDL
|
||||||
|
|
||||||
|
**Current implementation is transitional.** Today the codegen consumes
|
||||||
|
OpenAPI 3.0 (`x-mizan-functions` + `x-mizan-contexts` extensions over
|
||||||
|
Pydantic→JSON-Schema), produced via Django Ninja or FastAPI's native
|
||||||
|
generator. That layered indirection is what introduces adapter
|
||||||
|
divergence (see the AFI conformance suite). KDL-as-IR collapses it.
|
||||||
|
|
||||||
## Launch surface
|
## Launch surface
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user