Readonlycodec: FieldCodec<S[K]>Readonlykind: "stored"This instance's travel, when it is a property of the DEVICE rather than of the codec — a head amp's gain range, a fader's dB span under the taper it was given. Wins over FieldCodec.limit; absent means the codec's answer stands.
Refuse THIS VALUE, given what the row currently holds — the third kind of "no", and the only one that can see both.
The codec refuses by TRAVEL, which is a property of the field and cannot know the state.
writable refuses by INSTANCE, which is a property of the desk and cannot know the
value. Neither can express a bound that MOVES with the state: a console allocation may
grow and may not shrink, a roster may be reordered and not resized. The alternative was
clamp, and a clamp is silent — the operator asks for eight and gets twelve with no
refusal anywhere, which is the shape finiteNumber was caught in (a doc claiming it
refused while it quietly clamped).
Runs after the codec and before the clamp, so a value that is off the travel is refused as such rather than argued about. Absent ⇒ any decoded value is acceptable.
This instance's enum membership, when it is narrower than FieldCodec.values —
an appliance that offers lcr on one bus and not another, the same per-instance
cardinality limit carries for a number. Wins over the codec's own values;
absent means the codec's full vocabulary stands. NEVER widens: a value this returns
that FieldCodec.values does not already list is a codec that cannot decode what
OPTIONS just offered, which is the over-declaration the whole travel system exists to
refuse — narrow the codec too if a new member is genuinely needed.
Readonlycodec: FieldCodec<S[K]>Readonlykind: "virtual"DERIVED on read, WRITABLE on write — a field that is another unit of a stored one.
A fader's dB is the worked case. The VALUE is the dB; the position is its realisation
through the channel's taper, so dB is what an operator means and what a client should
send. But dB cannot be STORED beside the position: two stores for one fact drift, and a
stored dB that disagrees with its position is a lie a reader cannot detect. So the read
always re-derives, and the write is folded back into the stored half by the row's
couple — which is why declaring one without a couple is a row that accepts a value
and silently discards it.
Readonlyof: keyof S & stringThe STORED field this one re-expresses — db is position through the taper.
Per-instance travel — a fader's dB span is its taper's, so it is not the codec's.
One cell of a field table. The
kinddiscriminant makes a field that is both stored and derived a compile error; the mapped FieldSpecs makes a state field without a spec a compile error.