Summary
Follow-up to #1424 / #1458. After sharing strict client/server thin-accessor wiring, three deepenings remain outside that PR’s honesty-transport contract.
Part of #1105. Precursor: #1424.
Problem
- Legacy schema parsing is duplicated between schema capture (boot gate / build-time validate) and the thin accessor. Nested vs flat / public-key decisions can drift.
boot-gate mixes two jobs — Jiti/alias schema load via capture, and applying coerced values into live runtimeConfig / boot-gate result state — which makes each harder to reason about and test alone.
- Flat
arkenv() entries (ArkType + Standard) still duplicate thin runtime wiring that the strict dispatcher already owns for client/server.
Desired behavior
- One shared, cycle-safe helper decides legacy nested vs flat shape and declared/public keys for both capture and thin accessors.
- Schema load via capture is separable from “run/ensure boot gate” (flatten, core coerce, write
runtimeConfig, set boot-gate result).
- Flat package entries become type shells over the same thin-dispatch locality as strict client/server (no behavior change).
Acceptance criteria
Out of scope
Summary
Follow-up to #1424 / #1458. After sharing strict client/server thin-accessor wiring, three deepenings remain outside that PR’s honesty-transport contract.
Part of #1105. Precursor: #1424.
Problem
boot-gatemixes two jobs — Jiti/alias schema load via capture, and applying coerced values into liveruntimeConfig/ boot-gate result state — which makes each harder to reason about and test alone.arkenv()entries (ArkType + Standard) still duplicate thin runtime wiring that the strict dispatcher already owns for client/server.Desired behavior
runtimeConfig, set boot-gate result).Acceptance criteria
arkenv()runtimes share dispatch locality with strict entries; public behavior unchanged@arkenv/core/ ArkType /@arkenv/standardstay out of the client graph)@arkenv/nuxttypecheck + vitest suite stays greenOut of scope