The travels CORE declares, per fact and per field — what a coreLimits pointer resolves
through. Each entry POINTS at the module that owns the fact; no number is spelled here, so the
table cannot become a second declaration of a travel it merely indexes.
A field absent from a fact's entry resolves to absent, not to a guess: delay's feedback,
mix and tone are normalized 0..1 and belong to the normalized vocabulary rather than here,
and reverb's size/damping/width/mix are the same. Filling those is a later pass —
the ledger shows what is missing rather than hiding it.
EXPORTED so harness/contract-limits-gen.mjs can resolve the pan/delay/reverb/drive
facts the same way boundsOf does (R-056 §F7) — the generator reads this map rather than
re-declaring which facts are coreLimits-sourced, which would be a second list of the same
fact that could drift from CHANNEL_CONTRACT's own range.kind.
The travels CORE declares, per fact and per field — what a
coreLimitspointer resolves through. Each entry POINTS at the module that owns the fact; no number is spelled here, so the table cannot become a second declaration of a travel it merely indexes.A field absent from a fact's entry resolves to
absent, not to a guess:delay'sfeedback,mixandtoneare normalized 0..1 and belong to the normalized vocabulary rather than here, andreverb'ssize/damping/width/mixare the same. Filling those is a later pass — the ledger shows what is missing rather than hiding it.EXPORTED so
harness/contract-limits-gen.mjscan resolve thepan/delay/reverb/drivefacts the same wayboundsOfdoes (R-056 §F7) — the generator reads this map rather than re-declaring which facts arecoreLimits-sourced, which would be a second list of the same fact that could drift fromCHANNEL_CONTRACT's ownrange.kind.