COMPO · 18.02 · CONTRAST / SIZE / ISOLATION CONSTRAINTS

Compare channels.
Do not judge yet.

18.02 связывает направленные superior→subordinate relations из 18.00 с явными локальными ограничениями по SIZE / CONTRAST / ISOLATION. Модуль принимает только owner-qualified scalar signals, вычисляет направленное comparison value и фиксирует BELOW / WITHIN / ABOVE относительно заданного диапазона. Competition, inversion, violation и scoring здесь ещё не появляются.

ModuleCompo 18.02
Channels3 explicit
Relationdirected
Aggregationnone
Metricsnone
Next18.03

Constraint after graph, before violation

00 / contract
18.00 directed HierarchyRelation + explicit owner-qualified signal binding + explicit local constraint definition + exact superior/subordinate signal evidence → HierarchyConstraintDescriptor 18.02 stops here. NO channel aggregation NO competition verdict NO inversion verdict NO violation score NO MetricResult

Channel constraints only

01 / ownership
OWNS

18.02

Signal-binding contract, explicit relation-scoped constraints, exact evidence resolution, directed comparison math and BELOW/WITHIN/ABOVE descriptors.

DOES NOT OWN

Foreign + downstream

Raw size/contrast/isolation measurement, Topic16 scale ratios, dominance, multi-signal hierarchy aggregation, competition/inversion and all scoring.

Adapter boundary: 18.02 may consume a scalar signal only through an explicit binding that names its owner, unit/context and strength direction. The binding does not transfer ownership.

Three named channels, zero implicit semantics

02 / signal bindings
Kind18.02 receives18.02 does not infer
SIZEowner-qualified scalar signalwidth/area/visual mass/Topic16 ratio
CONTRASTowner-qualified scalar signalWCAG ratio, tone difference, attention score
ISOLATIONowner-qualified scalar signalwhitespace quality, focality, semantic importance
HierarchyConstraintSignalBinding {
  signalKind,
  signalChannelRef,
  signalSourceOwnerRef,
  unitRef,
  measurementContextRef,
  strengthDirection:
    HIGHER_IS_STRONGER | LOWER_IS_STRONGER,
  ...
}
No hidden normalization: same numeric value under different channel / unit / context is not comparable. Silent conversion and silent normalization are forbidden.

Every constraint is explicit

03 / relation-scoped range
HierarchyConstraintDefinition {
  hierarchyRelationRef,
  hierarchyConstraintSignalBindingRef,
  signalKind,
  comparisonMode:
    DIRECTED_DELTA | DIRECTED_RATIO,
  minInclusive,
  maxInclusive,
  ...
}
Local target only.

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.

DIRECTED_DELTA = oriented(superior) − oriented(subordinate) DIRECTED_RATIO = oriented(superior) / oriented(subordinate) only when both oriented values > 0 constraint interval = [minInclusive, maxInclusive]

Exact lineage or N_A

04 / evidence resolution
CONSENSUS

Exact match

Same subject + exact binding + kind + channel + unit + measurement context. Equal valid values resolve to OK.

MISSING

N_A

No exact evidence means N_A. 18.02 does not search another channel, owner, unit or context.

CONFLICT

N_A

Conflicting exact values remain conflict. No mean, median, “highest confidence” or latest-record winner.

Strength orientation is local math. LOWER_IS_STRONGER may reverse the sign for comparison, but source evidence remains immutable and unchanged.

Position is not a verdict

05 / descriptor
PositionMeaningNot equal to
BELOWcomparisonValue < minInclusivebad / competition / inversion
WITHINminInclusive ≤ value ≤ maxInclusivegood / compliant layout / score 1
ABOVEcomparisonValue > maxInclusivebad / 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

06 / selection policy
selectionMode = EXPLICIT_CONSTRAINTS_ONLY maxConstraints = 1..64 overflow = N_A_NO_TRUNCATION identity deduplication only allowImplicitChannels = false allowCrossBindingFallback = false allowSilentUnitConversion = false allowSilentContextConversion = false allowChannelAggregation = false
No Cartesian expansion: graph relations × three channels are never automatically materialized. Only explicitly declared constraint definitions are observed.

Zero, N_A and INVALID stay different

07 / status
0

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.

N_A

Not available

Missing/conflicting exact evidence, unavailable ratio domain or overflow. Never coerced to zero.

INVALID

Malformed contract

Invalid binding, malformed constraint, broken relation lineage or invalid canonical evidence.

Judgement is downstream

08 / owners
18.00Hierarchy roles, directed relations and SubordinationGraph identity.
18.01Role-level scalar weight envelopes and descriptive envelope positions.
18.02Per-relation SIZE / CONTRAST / ISOLATION constraint descriptors.
18.03Competition, inversion and subordination-violation detection/aggregation.
18.04MetricResult, scoring, correction requests and bounded generator.
Topic19Correlation-aware multi-signal visual hierarchy.

No hidden hierarchy score

09 / firewalls
comparisonValue != quality score distanceToNearestBoundary != penalty BELOW / WITHIN / ABOVE != good / bad SIZE constraint != Topic16 ScaleRatioDescriptor CONTRAST constraint != dominance score ISOLATION constraint != focal ranking per-channel descriptors != multi-channel hierarchy score != competition verdict != inversion verdict != final-layout rank 18.02 owns_metrics = [] 18.02 independent numeric votes = 0

CANON → LAB → DATA → IDEAS

10 / mandatory hooks
IDEAS_REFS[]Per-channel hierarchy perception studies.
DATA_CAPTURE[]Bindings, relations, evidence, comparison values and positions.
DEFERRED_SEMANTIC_INPUTS[]Competition, inversion, scoring and Topic19 aggregation.
HUMAN_FEEDBACK_HOOKS[]Binding, range and evidence corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]No hidden channel priority or confidence winner.
LAB_HOOKS[]Delta-vs-ratio and style-range studies.

18.02 regression suite

11 / deterministic tests

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.

Tests not run yet.

DATA FOR LAYOUT ENGINE

12 / machine contract
{
  "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."
}
VISITS / ...