THE per-kind feature matrix — the default feature rows as a pure function of
CHANNEL_CONTRACT, never a hand-kept table. buildTopology consumes it as the default
matrix, so every desk that passes no deviation advertises exactly what the contract declares.
Only facts with a ChannelFeature word (see FACT_FEATURES) contribute — a
PerKindFeatureMatrix is typed over the 15-word ChannelFeature vocabulary, so a fact with no
feature word (trim, chain, rta, ...) has nothing to project into it. That asymmetry IS
the finding the design spec names: the contract serves ~30 facts through 15 feature words.
THE per-kind feature matrix — the default feature rows as a pure function of CHANNEL_CONTRACT, never a hand-kept table.
buildTopologyconsumes it as the default matrix, so every desk that passes no deviation advertises exactly what the contract declares.Only facts with a
ChannelFeatureword (see FACT_FEATURES) contribute — aPerKindFeatureMatrixis typed over the 15-wordChannelFeaturevocabulary, so a fact with no feature word (trim,chain,rta, ...) has nothing to project into it. That asymmetry IS the finding the design spec names: the contract serves ~30 facts through 15 feature words.