Immutable cached parameter mapping¶
NativeParameterCache<N>::new(schema, roles) prepares immutable native metadata,
static schema/ranges and a sorted ID/index lookup on control. At most 1024
descriptors are supported; metadata retains native 255/63-byte UTF-8 limits and
declared order. All u32 IDs are preserved. Cached info, normalize and
denormalize use existing Foundation finite clamp/log/discrete/ties-up semantics,
without consumer provider calls, heap actions, locks, I/O or DSP access. Role
declarations do not suppress values implicitly. Cache creation/drop may allocate/
deallocate; shared readers must stop before retirement, and schema references/
library must remain alive. The safe Rust constructor does not catch provider panic.
NativeCachedParameters<P, S, N>::entry() supplies a separate paired companion,
keeping previous native table layouts stable. Entry acquisition and cache factory
run on control, containing provider failures; invalid metadata/provider panic
returns None/null without poisoning existing caches or DSP. Cached callbacks can
run concurrently on any owner and do not reacquire provider metadata. Gain exposes
ravet_native_cached_parameters_v1 for both precisions; layouts and foreign
obligations are in include/RavetCachedParameters.h. Exact table/cache/precision/
library pairing, live aligned disjoint ranges and stopped destruction remain
caller obligations. Callback codes are 0 success and 1 rejection, preserving
failed output fields.
NativeNormalizedParameterEventV1 stores offset/ID and f64 normalized intent.
Complete conversion validates known IDs, finite 0..1 values, ordered offsets and
destination capacity before mutation. Intent explicitly narrows to the global
normalized f32 contract; physical f32 widens exactly into tagged parameter-value
records. Equal-offset input order and destination tails survive. Conversion uses
two bounded passes and cached binary lookup, with <=1024 input/output capacity,
<=65536 frames and offset zero on zero-frame calls. Unknown IDs reject atomically;
format consumers explicitly filter/route unsupported IDs after host validation.
No scoped modulation, host queues/notifications/scheduling, arbitrary consumer
callback or deadline guarantee follows. See
decision0151.