Constraint after graph, before violation
Channel constraints only
18.02
Signal-binding contract, explicit relation-scoped constraints, exact evidence resolution, directed comparison math and BELOW/WITHIN/ABOVE descriptors.
Foreign + downstream
Raw size/contrast/isolation measurement, Topic16 scale ratios, dominance, multi-signal hierarchy aggregation, competition/inversion and all scoring.
Three named channels, zero implicit semantics
| Kind | 18.02 receives | 18.02 does not infer |
|---|---|---|
| SIZE | owner-qualified scalar signal | width/area/visual mass/Topic16 ratio |
| CONTRAST | owner-qualified scalar signal | WCAG ratio, tone difference, attention score |
| ISOLATION | owner-qualified scalar signal | whitespace quality, focality, semantic importance |
HierarchyConstraintSignalBinding {
signalKind,
signalChannelRef,
signalSourceOwnerRef,
unitRef,
measurementContextRef,
strengthDirection:
HIGHER_IS_STRONGER | LOWER_IS_STRONGER,
...
}
Every constraint is explicit
HierarchyConstraintDefinition {
hierarchyRelationRef,
hierarchyConstraintSignalBindingRef,
signalKind,
comparisonMode:
DIRECTED_DELTA | DIRECTED_RATIO,
minInclusive,
maxInclusive,
...
}No default “primary must be 2× bigger”, no universal contrast margin, no universal isolation threshold and no automatic role-pair preset. A constraint exists only when explicitly declared.
Exact lineage or N_A
Exact match
Same subject + exact binding + kind + channel + unit + measurement context. Equal valid values resolve to OK.
N_A
No exact evidence means N_A. 18.02 does not search another channel, owner, unit or context.
N_A
Conflicting exact values remain conflict. No mean, median, “highest confidence” or latest-record winner.
Position is not a verdict
| Position | Meaning | Not equal to |
|---|---|---|
| BELOW | comparisonValue < minInclusive | bad / competition / inversion |
| WITHIN | minInclusive ≤ value ≤ maxInclusive | good / compliant layout / score 1 |
| ABOVE | comparisonValue > maxInclusive | bad / over-dominance / penalty |
HierarchyConstraintDescriptor {
hierarchyRelationRef,
superiorSubjectRef,
subordinateSubjectRef,
signalKind,
comparisonMode,
comparisonValue,
position,
distanceToNearestBoundary,
competitionVerdict: null,
inversionVerdict: null,
metricResultRef: null,
score: null,
mutationAllowed: false
}Explicit constraints only
Zero, N_A and INVALID stay different
Valid numeric zero
A directed delta of 0 can be a perfectly valid observation. It is not N_A and does not itself mean hierarchy failure.
Not available
Missing/conflicting exact evidence, unavailable ratio domain or overflow. Never coerced to zero.
Malformed contract
Invalid binding, malformed constraint, broken relation lineage or invalid canonical evidence.
Judgement is downstream
| 18.00 | Hierarchy roles, directed relations and SubordinationGraph identity. |
| 18.01 | Role-level scalar weight envelopes and descriptive envelope positions. |
| 18.02 | Per-relation SIZE / CONTRAST / ISOLATION constraint descriptors. |
| 18.03 | Competition, inversion and subordination-violation detection/aggregation. |
| 18.04 | MetricResult, scoring, correction requests and bounded generator. |
| Topic19 | Correlation-aware multi-signal visual hierarchy. |
No hidden hierarchy score
CANON → LAB → DATA → IDEAS
18.02 regression suite
Tests cover binding identity, exact owner/unit/context lineage, explicit constraints, delta/ratio math, strength-direction orientation, boundary classification, conflict/missing semantics, ratio-domain N_A, no channel aggregation, immutable attachments, zero metrics and 18.03–18.04 ownership boundaries.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 18.02",
"name": "contrast_size_isolation_constraints",
"version": "1.0-canonical",
"canonical_main_title": "Contrast/size/isolation constraints",
"topic": "18_СУБОРДИНАЦИЯ_И_ПОДЧИНЕНИЕ_ЭЛЕМЕНТОВ",
"scope": "EXPLICIT_RELATION_SCOPED_OWNER_QUALIFIED_SIZE_CONTRAST_ISOLATION_SIGNAL_CONSTRAINTS_AND_NONSCORING_POSITION_DESCRIPTORS_ONLY",
"main_topic_contract": {
"topic_title": "Субординация и подчинение элементов",
"topic_goal": "Строит subordination graph для primary/secondary/tertiary/decorative roles и отслеживает случаи, когда нижний уровень начинает визуально спорить с верхним.",
"expected_output": "HierarchyRelation graph, subordination violations, correction requests",
"planned_files": [
"18.00 Subordination graph",
"18.01 Weight envelopes by hierarchy level",
"18.02 Contrast/size/isolation constraints",
"18.03 Competition and inversion detection",
"18.04 Correction, scoring and tests"
]
},
"ownership": {
"owner": "Compo18.02",
"owns": [
"HierarchyConstraintSignalKind taxonomy",
"HierarchyConstraintStrengthDirection taxonomy",
"HierarchyConstraintComparisonMode taxonomy",
"HierarchyConstraintSignalBinding",
"HierarchyConstraintDefinition",
"HierarchyConstraintProfile",
"HierarchyConstraintSignalEvidence adapter",
"HierarchyConstraintSignalResolution",
"HierarchyConstraintPosition taxonomy",
"HierarchyConstraintDescriptor",
"HierarchyConstraintObservationPolicy",
"HierarchyConstraintObservationSet",
"HierarchyConstraintAttachment",
"explicit relation-scoped size/contrast/isolation constraint declarations",
"exact owner-qualified signal lineage and comparison context validation",
"directed comparison value and BELOW/WITHIN/ABOVE position descriptors",
"identity/status/provenance rules for Topic18 channel-constraint layer",
"non-mutating correction request for constraint / binding / signal-evidence lineage"
],
"does_not_own": [
"HierarchyRole / HierarchySubject / HierarchyRelation / SubordinationGraph identity — Compo18.00",
"hierarchy-level weight envelopes — Compo18.01",
"raw visual mass measurement — Compo4",
"dominance / focal ranking — Compo13",
"attention factors — Compo13.01",
"microdetail role envelopes — Topic15",
"object-to-object scale differentiation and pairwise size ratios — Topic16",
"aspect ratio / part-to-whole proportional systems — Topic17",
"competition / inversion / subordination violation detection — Compo18.03",
"MetricResult ownership / scoring / bounded repair generation — Compo18.04",
"multi-signal observed visual hierarchy and correlation-aware aggregation — Topic19",
"raw size / contrast / isolation measurement semantics",
"semantic importance inference",
"global balance",
"final-layout ranking",
"foreign geometry/style/semantic mutation"
]
},
"consumes": [
"valid Compo18.00 HierarchyRelation / SubordinationGraph lineage",
"valid Compo18.01 weight-envelope attachment only as optional upstream context; not required for constraint computation",
"explicit owner-qualified SIZE / CONTRAST / ISOLATION signal bindings",
"explicit relation-scoped constraint definitions",
"owner-qualified scalar signal evidence for exact superior/subordinate subjects",
"explicit HierarchyConstraintObservationPolicy"
],
"provides": [
"HierarchyConstraintProfile",
"HierarchyConstraintSignalResolution[]",
"HierarchyConstraintDescriptor[]",
"HierarchyConstraintObservationSet",
"HierarchyConstraintAttachment",
"Topic18.02 channel-constraint record"
],
"owns_metrics": [],
"metric_ownership_note": "18.02 computes descriptive directed comparison values and BELOW/WITHIN/ABOVE positions against explicit local constraints. These are not MetricResults, competition verdicts, inversion verdicts, quality scores or independent numeric votes.",
"hierarchy_constraint_signal_kind_taxonomy": {
"SIZE": "Owner-qualified scalar signal whose source semantics describe a size-related visual-strength channel. 18.02 does not define or measure size.",
"CONTRAST": "Owner-qualified scalar signal whose source semantics describe a contrast-related visual-strength channel. 18.02 does not define or measure contrast.",
"ISOLATION": "Owner-qualified scalar signal whose source semantics describe an isolation-related visual-strength channel. 18.02 does not define or measure isolation."
},
"strength_direction_taxonomy": {
"HIGHER_IS_STRONGER": "Larger source value means stronger visual-strength signal under the exact binding semantics.",
"LOWER_IS_STRONGER": "Smaller source value means stronger visual-strength signal; 18.02 reverses orientation only for local comparison math, without mutating source evidence."
},
"comparison_mode_taxonomy": {
"DIRECTED_DELTA": "oriented(superior) - oriented(subordinate)",
"DIRECTED_RATIO": "oriented(superior) / oriented(subordinate); available only when both oriented values are strictly positive"
},
"constraint_position_taxonomy": {
"BELOW": "Comparison value is strictly below explicit minInclusive.",
"WITHIN": "Comparison value is within inclusive [minInclusive,maxInclusive].",
"ABOVE": "Comparison value is strictly above explicit maxInclusive."
},
"signal_binding_schema": {
"hierarchyConstraintSignalBindingRef": "stable identity",
"scopeRef": "Topic18 local scope",
"signalKind": "SIZE|CONTRAST|ISOLATION",
"signalChannelRef": "opaque channel identity owned outside 18.02",
"signalSourceOwnerRef": "canonical owner of source signal semantics",
"unitRef": "exact unit/domain identity",
"measurementContextRef": "exact frame/context identity",
"strengthDirection": "HIGHER_IS_STRONGER|LOWER_IS_STRONGER",
"bindingSourceRef": "explicit binding declaration source",
"bindingSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "Binding is an adapter contract only. It does not transfer raw measurement ownership to 18.02."
},
"constraint_definition_schema": {
"hierarchyConstraintDefinitionRef": "stable identity",
"scopeRef": "scope",
"hierarchyRelationRef": "exact Compo18.00 directed superior→subordinate relation",
"hierarchyConstraintSignalBindingRef": "exact signal binding",
"signalKind": "must equal binding signalKind",
"comparisonMode": "DIRECTED_DELTA|DIRECTED_RATIO",
"minInclusive": "finite explicit lower bound",
"maxInclusive": "finite explicit upper bound >= minInclusive",
"constraintSourceRef": "explicit source",
"constraintSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"rules": [
"no implicit constraint exists for any role pair or channel",
"no universal size/contrast/isolation margin exists",
"no implicit equal-channel weighting",
"constraint definition is local to exact relation + binding + mode",
"constraint position is descriptive; competition/inversion semantics are deferred to 18.03"
]
},
"constraint_profile_schema": {
"hierarchyConstraintProfileRef": "stable identity",
"scopeRef": "scope",
"subordinationGraphRef": "exact Compo18.00 graph",
"selectionMode": "EXPLICIT_ONLY",
"constraintDefinitionRefs[]": "explicit unique refs only",
"aggregationMode": "NONE",
"profileSourceRef": "explicit source",
"profileSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false
},
"signal_evidence_schema": {
"hierarchyConstraintSignalEvidenceRef": "stable identity",
"scopeRef": "scope",
"hierarchySubjectRef": "exact superior or subordinate subject",
"hierarchyConstraintSignalBindingRef": "exact binding",
"signalKind": "exact kind",
"signalChannelRef": "exact channel",
"unitRef": "exact unit",
"measurementContextRef": "exact context",
"value": "finite scalar from source owner",
"evidenceSourceRef": "source evidence",
"evidenceSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false
},
"signal_resolution_schema": {
"hierarchyConstraintSignalResolutionRef": "stable identity",
"hierarchySubjectRef": "exact subject",
"hierarchyConstraintSignalBindingRef": "exact binding",
"evidenceRefs[]": "actual exact-lineage refs",
"value": "finite scalar or null",
"orientedStrength": "finite scalar or null",
"status": "OK|N_A|INVALID",
"reasonCode": "CONSENSUS|MISSING_EVIDENCE|CONFLICT|INVALID_EVIDENCE",
"mutationAllowed": false,
"firewall": "Conflict is preserved; no averaging, median, confidence winner, unit conversion or context fallback."
},
"constraint_descriptor_schema": {
"hierarchyConstraintDescriptorRef": "stable identity",
"hierarchyConstraintDefinitionRef": "exact definition",
"hierarchyRelationRef": "exact directed relation",
"superiorSubjectRef": "from relation",
"subordinateSubjectRef": "from relation",
"signalKind": "SIZE|CONTRAST|ISOLATION",
"comparisonMode": "DIRECTED_DELTA|DIRECTED_RATIO",
"superiorResolutionRef": "exact resolution",
"subordinateResolutionRef": "exact resolution",
"comparisonValue": "finite or null",
"position": "BELOW|WITHIN|ABOVE|null",
"distanceToNearestBoundary": "non-negative finite or null",
"status": "OK|N_A|INVALID",
"reasonCode": "OBSERVED|MISSING_OR_CONFLICTING_SIGNAL|RATIO_DOMAIN_UNAVAILABLE|LINEAGE_MISMATCH|INVALID_INPUT",
"metricResultRef": null,
"competitionVerdict": null,
"inversionVerdict": null,
"score": null,
"mutationAllowed": false
},
"observation_policy_schema": {
"hierarchyConstraintObservationPolicyRef": "stable identity",
"selectionMode": "EXPLICIT_CONSTRAINTS_ONLY",
"maxConstraints": "integer 1..64",
"overflowPolicy": "N_A_NO_TRUNCATION",
"deduplication": "IDENTITY_ONLY",
"allowImplicitChannels": false,
"allowCrossBindingFallback": false,
"allowSilentUnitConversion": false,
"allowSilentContextConversion": false,
"allowChannelAggregation": false,
"policySourceRef": "source",
"policySourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false
},
"status_semantics": {
"OK": "Exact relation, binding and signal lineage are valid; descriptor is descriptive only.",
"N_A": "Required exact evidence is missing/conflicting, ratio domain unavailable, or explicit policy overflow occurs. N_A is not numeric zero.",
"INVALID": "Malformed canonical input or invalid lineage contract.",
"zero": "A valid numeric comparison value may equal 0; zero is not N_A and does not itself imply competition or inversion."
},
"critical_firewalls": [
"declared hierarchy role != observed visual strength",
"signal value != visual mass unless source owner explicitly says so",
"signal value != dominance score",
"size signal != Topic16 ScaleRatioDescriptor",
"constraint descriptor != competition verdict",
"constraint descriptor != inversion verdict",
"BELOW != automatically bad",
"WITHIN != automatically good",
"ABOVE != automatically bad",
"comparisonValue != quality score",
"distanceToNearestBoundary != penalty",
"no cross-channel aggregation in 18.02",
"no implicit equal weighting of SIZE/CONTRAST/ISOLATION",
"no universal hierarchy margin",
"no universal contrast ratio",
"no universal size ratio",
"no universal isolation target",
"raw measurement ownership remains foreign",
"Topic19 remains owner of correlation-aware multi-signal hierarchy",
"18.03 remains owner of competition/inversion/violation judgement",
"18.04 remains owner of MetricResult/scoring/correction generator",
"one metric = one owner",
"N_A != 0",
"local != global",
"geometry != interpretation",
"descriptor != score",
"heuristic != law",
"correction request != foreign mutation",
"module execution order != rule priority",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"correction_request_schema": {
"hierarchyConstraintCorrectionRequestRef": "stable identity",
"targetOwnerRef": "constraint/binding/signal-evidence owner",
"reasonCode": "BINDING_WRONG|CONSTRAINT_WRONG|RELATION_LINK_WRONG|SIGNAL_EVIDENCE_MISSING|SIGNAL_EVIDENCE_CONFLICT|SIGNAL_VALUE_WRONG|UNIT_WRONG|CONTEXT_WRONG|STRENGTH_DIRECTION_WRONG|COMPARISON_MODE_WRONG",
"hierarchyConstraintDefinitionRef": "exact definition or null",
"hierarchyRelationRef": "exact relation or null",
"hierarchySubjectRefs[]": "affected exact subjects",
"evidenceRefs[]": "actual lineage refs",
"suggestedAction": "non-mutating review request",
"status": "OPEN|INVALID",
"mutationAllowed": false
},
"deferred_downstream": {
"18.03": [
"competition detection",
"inversion detection",
"subordination violation aggregation",
"multi-channel violation logic"
],
"18.04": [
"target desirability",
"MetricResult scoring",
"independent vote budget",
"bounded deterministic correction/repair generation",
"final Topic18 regression tests"
],
"19.xx": [
"multi-signal visual hierarchy contribution model",
"correlation-aware hierarchy aggregation"
]
},
"IDEAS_REFS": [
"IDEA-01 full human test after all 72 topics; compare perceived subordination failures with explicit channel-constraint descriptors",
"IDEA-02 study which source-owned size/contrast/isolation signals are robust across design styles",
"IDEA-03 study whether relation-specific constraints outperform role-pair generic constraints",
"IDEA-04 collect structured channel-constraint observations for future composition model",
"IDEA-05 preserve reasons for human correction of signal binding and constraint ranges",
"IDEA-06 structured machine-readable constraint layer for website/workbench",
"IDEA-07 graphics-for-post-text research remains downstream/separate"
],
"DATA_CAPTURE": [
"sceneRef",
"scopeRef",
"snapshotRef",
"subordinationGraphRef",
"hierarchyConstraintProfileRef",
"constraintDefinitionRefs[]",
"signalBindingRefs[]",
"hierarchyRelationRefByConstraint",
"superiorSubjectRefByConstraint",
"subordinateSubjectRefByConstraint",
"signalKindByConstraint",
"comparisonModeByConstraint",
"superiorResolutionRefByConstraint",
"subordinateResolutionRefByConstraint",
"comparisonValueByConstraint",
"positionByConstraint",
"distanceToNearestBoundaryByConstraint",
"hierarchyConstraintObservationSetRef",
"hierarchyConstraintAttachmentRef",
"status",
"reasonCode"
],
"DEFERRED_SEMANTIC_INPUTS": [
"18.03 competition/inversion judgement",
"18.03 violation aggregation",
"18.04 scoring/correction",
"Topic19 correlation-aware multi-signal hierarchy",
"final-layout ranking"
],
"HUMAN_FEEDBACK_HOOKS": [
"correct signal binding",
"correct signal source owner",
"correct strength direction",
"correct constraint range",
"correct comparison mode",
"correct relation link",
"correct signal evidence/value/context"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"conflicting exact signal evidence remains N_A; confidence does not choose a winner",
"constraint declaration order has no semantic priority",
"channel serialization order has no priority",
"SIZE/CONTRAST/ISOLATION are not implicitly weighted",
"module execution order does not imply hierarchy priority"
],
"LAB_HOOKS": [
"per-channel constraint perception study",
"delta-vs-ratio comparison study",
"style-specific constraint range study",
"cross-context robustness study",
"declared-vs-perceived subordination study",
"human correction reason taxonomy"
],
"next_module": "Compo 18.03 — Competition and inversion detection",
"hard_stop": "Do not implement 18.03 or 18.04 in this file."
}