Optional ReadonlyclipboardOptional ReadonlycontrolWhat KIND of control carries this fact, in ProcessorParam's own words (number /
toggle / enum, plus text for a scribble string). Declared so that "has no declared
travel" can be told apart from "has no travel to declare": a mute is a toggle and will
never own a min/max, while a pan is a number that simply has not been pointed at its
declaration yet. Without this, boundsOf's ledger of unsourced facts can never reach
zero, and a ledger that cannot converge stops being read.
readout is a NUMBER NOBODY WRITES — a meter, an analyser bin. It has a display scale but
no allowed values, because there is no door to send one through (meter is
owner: { kind: 'none' }). Calling it number would demand a travel that guards nothing;
calling it toggle would be a lie about its shape. It is exempt from the provenance ledger
for the same reason a mute is: there is no operator input to bound.
ABSENT means unclassified, not "structured" — a fact whose value is a sub-object or a
collection is classified by its RANGE instead: how many sends, members or inserts may exist
is declared by the SESSION's allocation (range: { kind: 'allocation' }), which is a
provenance answer and not an exemption. A fact nobody has adjudicated yet also reads as
absent, and the two are separated by classifying, one fact at a time.
Optional ReadonlyintendedTHIS FACT'S STAGE ADDS HARMONIC CONTENT ON PURPOSE.
Declared by drive and by nothing else (2026-09-14-native-drive-stage.md §8). The console
also RUNS an analysis that hunts unusually strong harmonic components and drives EQ and
dynamics to tame them (HRP), and without this column the two would fight: HRP would chase
the colour the operator just dialled in, and the operator would hear their drive being
un-done by something they never armed.
It is a column and not a rule about lane ORDER because the strip's step list is REORDERABLE. The default order puts drive after the EQ and the dynamics, so HRP's insert point and its actuators both sit ahead of it — but an operator may legitimately move it, and a rule that lived only in the default order would silently stop being true. An analysis row excludes a fact declaring this BY CONSTRUCTION, whatever the order says.
Absent is the ordinary answer and means what it says: this fact's stage does not deliberately generate harmonics, so an analyser has nothing to exclude.
ReadonlykindsWhich kinds carry this fact. The ONE place kind appears.
Optional ReadonlylawsTHE MACHINE-READABLE LAWS THIS FACT'S NATIVE STAGE HOLDS — the closed operator-facing
vocabulary ContractLaw/LAW_KINDS declares (fact-declaration.ts, R-056), one declaration
feeding three consumers, operator ruling 2026-09-17: the generated
omx_contract_limits.h the C postconditions read (never a hardcoded literal the header
also declares), the manual's generated "what this stage guarantees" block, and the UI help
entry's rendered sentence (LAW_SENTENCE_KEY, i18n en/ca/es).
Declared only on the six native processing facts (eq, gate, dynamics, delay,
reverb, drive) and the two routing facts whose coefficient feeds a summing bus
(pan, toMain) — every other fact carries no C postcondition an operator needs a
sentence for and leaves the column absent, same "absent means not yet classified, not
refused" reading control already carries. sends rides toMain's linear-sum law by
the SAME routing-fact reasoning servedAs already applies (sends/toMain are one row
family), so it is not repeated on sends itself.
Optional ReadonlyneedsTHIS FACT'S MACHINE READS THE CHANNEL'S ANALYSER LANE — it cannot work without a spectrum of the channel it is armed on (demand gate, Amendment 2026-09-17, ruled item 2).
Declared HERE and nowhere else, because it is what the RTA arming vocabulary is DERIVED
from: RTA_ARMING_HOLDERS (rta-arming.ts) is selected + explicit + every fact
carrying this column + room, so a new detector fact joins the holder set by declaring
its column and by nothing else. A hand list beside the vocabulary is exactly the defect
this contract exists to delete, and it is the one the 2026-09-17 ruling names outright
("declared once, in core, never a hand list beside the vocabulary it names").
true or ABSENT, deliberately — a MARK, not a boolean: false would be a second way of
spelling the ordinary answer, and the literal type is also what lets
AnalyserChannelFact derive the union at compile time rather than restate it.
room is NOT here and cannot be: the room analysis is not a per-channel fact of the mic
it arms (it is the console's own measurement, pointed at a mic it does not own), so it
stays a server-side holder name — argued in the amendment, ruled item 2.
Optional ReadonlyonAbsence semantics on whole-state restore (FactAbsenceRule) — REQUIRED exactly on
persisted rows and forbidden on transients (a transient has no file to be absent
from); the pairing is ratcheted.
ReadonlyownerWho actuates a write. See OwnershipRule.
ReadonlypersistedRides ChannelSnapshotJson (or a sibling per-kind snapshot — DCA/muteGroup membership).
false for transients: solo, meter, rta's derived readouts, recall-safe (a live show
decision, never written into a session — channel-recall-safe.ts's own ruling).
Optional ReadonlypresentsWHERE THIS FACT IS PRESENTED TO AN OPERATOR — the help entries that teach it and the manual heading that documents it (FactSurface; spec revision 6, ruled 2026-09-17).
null is an ANSWER and the only permitted emptiness: nothing on any surface presents this
fact, adjudicated. An absent key is not — every row states the column, because a fact
nobody joined and a fact nobody could join are the silence servedAs was added to break,
one column over. presents-conformance.test.ts refuses a row that has not decided, checks
both declared halves against the surfaces themselves, and holds the reverse direction: a
help id belongs to at most one fact, and the ids no fact claims stand in its shrink-only
orphan ledger.
The two OWED columns — i18n and surface — are named in the spec and are not here.
Optional ReadonlyrangePresentation limits come from the capability, not a constant (#66). TODO for phase 3 except where the precedent already exists.
Optional ReadonlyservedThe path template that SERVES this fact, where it is not /channel/{kind}/{index}/{fact}.
Absent means the fact's own name IS its sub-path — the default this table's header claims,
true for 29 of the 37 facts. The eight that declare a value are served under another name,
and BEFORE this column that was indistinguishable from being served nowhere: sourceStereo
read as forgotten while its whole value round-trips through the width row, and a gate could
not tell the two apart (the 2026-09-01 audit's axis 1, issue #666).
The value is the MOLD, {kind} and all. Two facts may name the same one — sends and
toMain are both instances of the send row, separated by their destination, and parents
rides its sibling's members row — so a consumer asking what an ADDRESS may carry takes the
UNION of the facts that name it, never one fact's kinds alone.
It says WHERE, never HOW the row spells the value: the session's own spelling is SNAPSHOT_FIELDS_OF_FACT's concern, and one column answering both would be two questions with one answer.
The clipboard part this fact belongs to, if copyable (#57's allowlist). Absent means the allowlist deliberately excludes it — a physical/identity/transient fact, or a genuine gap.