Three channels, one explicit pair lineage
Comparison adapter, not channel owner
21.03
Channel binding identity, evidence resolution, explicit relation-channel requests, raw channel comparison descriptors, bounded set and immutable attachment.
Foreign + downstream
Shape extraction, color-space semantics, mirror geometry, visual mass, approximate tolerance, cross-channel error aggregation, target desirability, scoring or repair.
Binding declares comparable semantics
Prepared representation
Scalar, vector or category supplied by the rightful shape owner after any needed reflection normalization.
Prepared representation
Scalar, vector or category supplied with explicit color-space / method context. 21.03 chooses no color model.
Upstream residual
Only MIRROR_RESIDUAL_FROM_21_01. Point reflection is not recomputed here.
SymmetryChannelBinding {
channelKind: SHAPE | COLOR | POSITION,
representationKind: SCALAR | VECTOR | CATEGORY | UPSTREAM_POSITION_RESIDUAL,
comparisonMethod: ABSOLUTE_DIFFERENCE | L2_DISTANCE | EXACT_EQUALITY | MIRROR_RESIDUAL_FROM_21_01,
channelUnitRef,
comparisonContextRef,
channelSourceOwnerRef,
bindingSourceRef,
bindingSourceOwnerRef,
provenance,
mutationAllowed: false
}Exact evidence; conflict stays conflict
Raw comparison math only
| Representation | Method | Output | Interpretation deferred |
|---|---|---|---|
| SCALAR | ABSOLUTE_DIFFERENCE | |a − b| | unit-specific tolerance |
| VECTOR | L2_DISTANCE | √Σ(aᵢ−bᵢ)² | representation-specific tolerance |
| CATEGORY | EXACT_EQUALITY | exactMatch boolean | category desirability |
| POSITION | MIRROR_RESIDUAL_FROM_21_01 | relation.residualDistance | approximate positional symmetry |
No relation × channel Cartesian product
ChannelSymmetryRequest {
symmetryRelationRef,
symmetryChannelBindingRef,
requestSourceRef,
requestSourceOwnerRef,
provenance,
mutationAllowed: false
}
ChannelSymmetrySelectionPolicy {
selectionMode: EXPLICIT_RELATION_CHANNEL_REQUESTS_ONLY,
maxRequests: 1..16384,
overflowMode: N_A_NO_TRUNCATION,
autoPairGeneration: false,
autoChannelSynthesis: false,
fullCartesian: false
}One raw descriptor per explicit request
ChannelSymmetryDescriptor {
symmetryRelationRef,
symmetryAxisCandidateRef,
channelKind,
representationKind,
comparisonMethod,
symmetryChannelBindingRef,
evidenceResolutionRefs[],
comparisonValue, // numeric for scalar/vector/position, else null
exactMatch, // boolean for all OK descriptors
descriptorClass, // EXACT_MATCH | NONZERO_DIFFERENCE | CATEGORY_MATCH | CATEGORY_MISMATCH
approximateFit: null,
normalizedSymmetryError: null,
symmetryErrorRef: null,
metricResultRef: null,
score: null,
status,
reasonCode,
mutationAllowed: false
}Bounded set, immutable attachment
ChannelSymmetrySet
Preserves every explicit descriptor identity and separate SHAPE/COLOR/POSITION refs. No weighted mean, max, voting or normalization across channels.
ChannelSymmetryAttachment
References the 21.00 root seed and the 21.03 set. Upstream axis and relation records remain immutable.
N_A stays different from zero
| OK | Exact compatible lineage and evidence produce a raw comparison. |
| N_A | Missing/conflicting evidence, missing requested relation/binding, empty request set or bounded overflow. No imputation. |
| INVALID | Malformed adapter/policy/request or incompatible upstream lineage/method. |
| 0 | Valid exact numeric equality/residual. 0 ≠ N_A and 0 ≠ INVALID. |
21.04 owns approximation and scoring
| 21.00 | Axis candidates and root symmetry geometry. |
| 21.01 | Explicit mirror correspondence, reflection geometry and position residual. |
| 21.02 | Visual-mass adapters and mass-symmetry descriptors. |
| 21.03 | Raw SHAPE/COLOR/POSITION channel comparison descriptors. |
| 21.04 | Approximate tolerance, symmetry errors, target semantics, scoring/tests and any bounded corrections. |
Comparison does not imply desirability
CANON → LAB → DATA → IDEAS
21.03 regression suite
Tests cover channel/method compatibility, exact evidence lineage, scalar/vector/category math, direct reuse of 21.01 position residual, explicit relation-channel requests, bounded no-Cartesian selection, immutable attachment, zero metrics and the 21.04 ownership firewall.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 21.03",
"name": "channel_symmetry_shape_color_position",
"version": "1.0-canonical",
"canonical_main_title": "Channel symmetry: shape/color/position",
"topic": "21_СИММЕТРИЧНЫЙ_БАЛАНС",
"scope": "EXPLICIT_RELATION_SCOPED_OWNER_QUALIFIED_SHAPE_COLOR_AND_POSITION_CHANNEL_COMPARISON_DESCRIPTORS_ONLY_WITHOUT_RAW_CHANNEL_EXTRACTION_APPROXIMATE_TOLERANCE_SCORING_OR_FINAL_SYMMETRY_JUDGEMENT",
"main_topic_contract": {
"topic_title": "Симметричный баланс",
"topic_goal": "Измеряет осевую и зеркальную симметрию по позиции, форме, массе и цвету, включая approximate symmetry и намеренные нарушения.",
"expected_output": "SymmetryRelation[], axis candidates, symmetry errors",
"planned_files": [
"21.00 Symmetry axis model",
"21.01 Mirror correspondence",
"21.02 Mass symmetry",
"21.03 Channel symmetry: shape/color/position",
"21.04 Approximate symmetry, scoring/tests"
]
},
"ownership": {
"owner": "Compo21.03",
"owns": [
"SymmetryChannelKind taxonomy: SHAPE/COLOR/POSITION",
"SymmetryChannelRepresentationKind taxonomy",
"SymmetryChannelComparisonMethod taxonomy",
"SymmetryChannelBinding",
"SymmetryChannelEvidence",
"SymmetryChannelEvidenceResolution",
"ChannelSymmetryRequest",
"ChannelSymmetrySelectionPolicy",
"ChannelSymmetryDescriptor",
"ChannelSymmetrySet",
"ChannelSymmetryAttachment",
"owner-qualified scalar/vector/category comparison adapters for SHAPE and COLOR",
"POSITION descriptor adapter from exact Compo21.01 mirror residual geometry",
"exact-match versus nonzero-difference descriptive classes without tolerance",
"identity/status/provenance rules for Topic21 channel-symmetry layer",
"non-mutating correction request for channel binding/evidence/request lineage errors"
],
"does_not_own": [
"symmetry subject/frame/axis identity — Compo21.00",
"mirror pair identity/reflection geometry/residual — Compo21.01",
"visual mass semantics or mass symmetry — Compo4 / Compo21.02",
"raw shape extraction, shape embedding or reflection normalization — foreign shape owner",
"raw color extraction, color-space conversion or perceptual color distance semantics — foreign color owner",
"raw point/anchor geometry — Compo21.01 / geometry owner",
"approximate tolerance, normalized symmetry error, intentional-break semantics, MetricResult scoring or repair — Compo21.04",
"asymmetric balance — Topic22",
"radial/rotational balance — Topic23",
"global beautyScore or final-layout ranking",
"foreign geometry/style/color mutation"
]
},
"consumes": [
"valid Compo21.00 SymmetryAxisSystemSeed lineage",
"one exact Compo21.00 SymmetryAxisCandidate",
"valid Compo21.01 MirrorCorrespondenceSet and explicit SymmetryRelation records",
"owner-qualified SHAPE/COLOR mirror-comparable evidence when requested",
"explicit SymmetryChannelBinding and ChannelSymmetryRequest records",
"21.02 MassSymmetryAttachment may coexist as parallel Topic21 context but is not a computational dependency of 21.03"
],
"provides": [
"SymmetryChannelBinding[]",
"SymmetryChannelEvidenceResolution[]",
"ChannelSymmetryRequest[]",
"ChannelSymmetryDescriptor[]",
"ChannelSymmetrySet",
"ChannelSymmetryAttachment"
],
"owns_metrics": [],
"independent_numeric_votes": 0,
"channel_contract": {
"SHAPE": "owner-prepared mirror-comparable SCALAR, VECTOR or CATEGORY representation; 21.03 does not extract or normalize shape",
"COLOR": "owner-prepared mirror-comparable SCALAR, VECTOR or CATEGORY representation; 21.03 does not choose a color space or perceptual color metric",
"POSITION": "uses only Compo21.01 residualDistance through MIRROR_RESIDUAL_FROM_21_01; no duplicate point extraction",
"methods": {
"SCALAR": "ABSOLUTE_DIFFERENCE",
"VECTOR": "L2_DISTANCE",
"CATEGORY": "EXACT_EQUALITY",
"UPSTREAM_POSITION_RESIDUAL": "MIRROR_RESIDUAL_FROM_21_01"
},
"meaning": "comparisonValue/exactMatch are descriptive observations, not symmetry quality or error scores"
},
"status_semantics": {
"OK": "exact upstream lineage plus compatible explicit binding/evidence produce a raw channel comparison descriptor",
"N_A": "missing/conflicting exact SHAPE/COLOR evidence, missing requested relation/binding, empty request set or bounded overflow; no guess/average/truncation",
"INVALID": "malformed binding/evidence/request/policy, incompatible method/representation combination, invalid upstream relation or root/axis lineage mismatch",
"zero_note": "comparisonValue = 0 and POSITION residualDistance = 0 are valid exact observations and distinct from N_A"
},
"selection_policy": {
"mode": "EXPLICIT_RELATION_CHANNEL_REQUESTS_ONLY",
"maxRequests": "1..16384",
"overflow": "N_A_NO_TRUNCATION",
"dedup": "identity by exact relationRef + bindingRef + scope/snapshot",
"autoPairGeneration": false,
"autoChannelSynthesis": false,
"fullCartesian": false
},
"critical_firewalls": [
"channel difference != symmetry quality",
"channel difference != normalized symmetry error",
"exact channel match != automatically desirable",
"nonzero channel difference != automatically bad",
"SHAPE comparison != raw shape extraction",
"COLOR comparison != color-space ownership",
"POSITION comparison reuses 21.01 residual and does not recompute mirror correspondence",
"position residual != 21.04 approximate tolerance result",
"shape equality != mass symmetry",
"color equality != mass symmetry",
"mass symmetry != channel symmetry",
"21.02 execution order does not make mass an input to 21.03",
"category equality is descriptive and not a score",
"vector L2 distance is in owner-qualified representation space only",
"scalar absolute difference retains owner-qualified unit/context",
"no automatic normalization across SHAPE/COLOR/POSITION",
"no cross-channel averaging/summing/max in 21.03",
"no automatic subject×subject or relation×channel Cartesian expansion",
"no nearest-neighbour matching",
"no confidence winner for conflicting evidence",
"no averaging conflicting evidence",
"no approximate epsilon in 21.03",
"no symmetry error score in 21.03",
"no MetricResult in 21.03",
"zero comparison is valid and not N_A",
"N_A != 0",
"INVALID != 0",
"local != global",
"geometry != interpretation",
"descriptor != score",
"heuristic != law",
"correction request != foreign mutation",
"module execution order != rule priority",
"one metric = one owner",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"IDEAS_REFS": [
"IDEA-01 study mirror-comparable shape representations without canonizing one descriptor",
"IDEA-02 compare owner-qualified color representations and human color-symmetry judgements",
"IDEA-03 study position residual perception separately from geometric residual magnitude",
"IDEA-04 study cross-channel disagreement patterns before defining 21.04 aggregation",
"IDEA-05 collect intentional channel asymmetry examples for later target semantics"
],
"DATA_CAPTURE": [
"scopeRef",
"snapshotRef",
"symmetryAxisSystemSeedRef",
"symmetryAxisCandidateRef",
"mirrorCorrespondenceSetRef",
"channelBindingRefs[]",
"channelRequestRefs[]",
"symmetryRelationRefByDescriptor",
"channelKindByDescriptor",
"representationKindByDescriptor",
"comparisonMethodByDescriptor",
"evidenceResolutionRefs[]",
"comparisonValue",
"exactMatch",
"descriptorClass",
"status",
"reasonCode"
],
"DEFERRED_SEMANTIC_INPUTS": [
"21.04 approximate symmetry tolerance profiles",
"21.04 cross-channel normalization",
"21.04 symmetry error aggregation",
"21.04 intentional symmetry-breaking target semantics",
"21.04 MetricResult scoring and repair candidates",
"Topic22 asymmetric-balance interpretation",
"Topic23 radial/rotational balance"
],
"HUMAN_FEEDBACK_HOOKS": [
"correct channel kind",
"correct representation kind",
"correct comparison method",
"correct source owner/unit/context",
"correct SHAPE/COLOR evidence",
"mark evidence conflict real",
"correct explicit relation-channel request",
"mark request missing",
"mark request extraneous",
"correct POSITION relation residual lineage"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"evidence confidence does not choose a winner",
"evidence serialization order has no priority",
"request serialization order has no priority",
"channel kind order does not define weight",
"representation kind order does not define authority",
"module execution order does not imply channel priority"
],
"LAB_HOOKS": [
"shape mirror-comparability study",
"color symmetry representation study",
"position residual perception study",
"cross-channel disagreement study",
"intentional symmetry break study",
"human correction reason taxonomy"
],
"topic21ProgressAfterThisModule": "4/5 local",
"next_module": "Compo 21.04 — Approximate symmetry, scoring/tests",
"hard_stop": "Do not implement 21.04 in this file."
}