COMPO · 34.01 · TYPE SCALE / HIERARCHY RATIOS

Measure scale relations.
Do not assign hierarchy rank yet.

34.01 связывает explicit type-size evidence с semantic roles из 34.00 и выводит directed pairwise scale ratios. Ratio, inverse ratio, larger/smaller direction и log2 scale step — структурные дескрипторы. Они не назначают hierarchy rank, visual importance или readability.

Module34.01
Progress2/7 local
Evidenceexplicit size
Relationpairwise ratio
Metricsnone
Next34.02 only

34.01 owns scale evidence binding and pairwise ratio derivation

34.00 tells us what the text subject semantically is. 34.01 adds explicit size evidence and compares subjects without ranking them.

00 / scale layer
immutable 34.00 TextRoleDescriptor[] + explicit owner-qualified size evidence + explicit directed pair requests → TypeScaleSubjectDescriptor[] → TypeScaleRatioDescriptor[] ratio = numeratorSize / denominatorSize inverseRatio = denominatorSize / numeratorSize log2ScaleStep = log2(ratio) NO automatic unit conversion NO Cartesian pair generation NO hierarchy rank NO hierarchy level NO scoring

Type size arrives as external evidence

34.01 preserves the measurement owner and unit. For headline subjects, this can be linked to 33.01 externally without re-owning headline font size.

01 / evidence lineage

Measurement owner → 34.01 evidence binding

MEASUREMENT OWNERmeasurementRefvalue + explicit unit 34.01 BINDINGpreserves owner lineagedoes not re-own measurement

Ratio describes a relation, not a hierarchy verdict

For example, 48/16 = 3 says only that one explicit type-size value is three times another in the same unit.

02 / pairwise scale

Explicit directed comparison

TITLE48 CSS_PX BODY16 CSS_PX 48 / 16 = 3ratio = 3 · inverse = 0.333… · log2 step ≈ 1.585

Pair orientation remains explicit

A→B and B→A are distinct directed ratio descriptors with inverse numeric values. Neither direction is a winner.

03 / direction
A / B

ratio = 3

A is structurally larger in this explicit comparison.

B / A

ratio = 0.333…

Inverse descriptor, same evidence pair.

Equal scale is a valid structural result

Two CAPTION or META subjects may have identical size. That does not create N_A, INVALID or a hierarchy failure.

04 / equality

Equal-size pair

CAPTION A12 PX META B12 PX ratio = 1equalScale=true · largerSubjectRef=null

Ratios require compatible units

34.01 refuses to compare PX against PT or REM against EM unless another owner has already normalized them into one explicit unit.

05 / unit firewall
SAME UNIT

Ratio allowed

PX/PX, PT/PT, REM/REM, etc.

CROSS UNIT

N_A

No silent conversion.

OWNER_DEFINED

Name must match

Same enum alone is insufficient.

Semantic role and numeric size stay independent

34.01 does not encode the assumption that TITLE must always be larger than BODY.

06 / role-scale firewall
TITLE larger than BODY = possible descriptor TITLE equal to BODY = possible descriptor TITLE smaller than BODY = possible descriptor none of these is automatically: INVALID hierarchy truth visual-importance score readability score

Scale is only one hierarchy channel

Weight/style/case, color/contrast, readability/accessibility and ordering remain separate evidence families.

07 / staged ownership
34.00

semantic roles

→
34.01

scale ratios

→
34.02

weight / style / case

→
34.03

color / contrast

→
34.04

readability / accessibility

→
34.05

multi-block ordering

→
34.06

scoring / tests

Scale ratio ≠ hierarchy rank. Rank must emerge later from explicit multi-channel hierarchy logic.

34.01 regression suite

Tests cover explicit size units, owner-defined units, measurement lineage, pair orientation, inverse ratios, equality, log2 scale steps, same-role comparisons, cross-unit N_A, zero-pair validity, bounded execution, 34.00 immutability and strict absence of ranking, normalization, graph construction and scoring.

08 / runtime
Tests not run yet.

DATA FOR LAYOUT ENGINE

Canonical machine contract for explicit type-scale evidence and pairwise hierarchy-ratio descriptors.

09 / machine
{
  "module": "Compo 34.01",
  "name": "type_scale_and_hierarchy_ratios",
  "version": "1.0-canonical",
  "canonical_main_title": "Type scale и hierarchy ratios",
  "topic": "34_ТИПОГРАФИЧЕСКАЯ_ИЕРАРХИЯ",
  "scope": "EXPLICIT_OWNER_QUALIFIED_TYPE_SIZE_EVIDENCE_AND_PAIRWISE_SCALE_RATIO_DESCRIPTORS_OVER_IMMUTABLE_34_00_TEXT_ROLE_SUBJECTS_WITHOUT_AUTOMATIC_HIERARCHY_RANK_WEIGHT_STYLE_CASE_COLOR_CONTRAST_READABILITY_ORDERING_OR_SCORING",
  "main_topic_contract": {
    "topic_title": "Типографическая иерархия",
    "topic_goal": "Строит типографическую иерархию title/subtitle/body/caption/meta по scale, weight, case, color и порядку; отдельно фиксирует минимальную читаемость и accessibility constraints.",
    "expected_output": "TextHierarchyGraph, type levels, hierarchy violations",
    "planned_files": [
      "34.00 Text role taxonomy",
      "34.01 Type scale и hierarchy ratios",
      "34.02 Weight / style / case hierarchy",
      "34.03 Color / contrast hierarchy",
      "34.04 Минимальная читаемость, size floors и accessibility constraints",
      "34.05 Multi-block ordering",
      "34.06 Scoring и tests"
    ]
  },
  "ownership": {
    "owner": "Compo34.01",
    "owns": [
      "TypeScaleValueEvidenceBinding",
      "TypeScalePairRequest",
      "TypeScaleHierarchyPolicy",
      "TypeScaleSubjectDescriptor",
      "TypeScaleRatioDescriptor",
      "TypeScaleDescriptorSet",
      "TypeScaleAttachment",
      "exact size-unit preservation",
      "owner-qualified size-evidence lineage",
      "pairwise numerator/denominator subject orientation",
      "pairwise scale-ratio derivation",
      "inverse-ratio derivation",
      "equal-scale structural flag",
      "larger/smaller structural direction",
      "log2 scale-step descriptor",
      "same-role cross-subject ratio semantics",
      "same-subject pair rejection",
      "bounded deterministic pair resolution",
      "non-mutating correction request"
    ],
    "does_not_own": [
      "34.00 semantic text role",
      "raw text content",
      "text rendering",
      "universal font-size measurement",
      "33.01 headline font-size ownership",
      "automatic font-size extraction",
      "automatic unit conversion",
      "automatic scale normalization across units",
      "automatic hierarchy rank",
      "automatic hierarchy level assignment",
      "34.02 weight hierarchy",
      "34.02 style hierarchy",
      "34.02 case hierarchy",
      "34.03 color hierarchy",
      "34.03 contrast hierarchy",
      "34.04 readability constraints",
      "34.04 accessibility constraints",
      "34.05 multi-block ordering",
      "34.05 hierarchy graph construction",
      "34.06 hierarchy scoring",
      "34.06 hierarchy violation scoring",
      "35 TextBlock geometry",
      "36 typography spacing",
      "37 text-image relation",
      "automatic winner selection",
      "foreign text-role mutation",
      "foreign size-evidence mutation",
      "universal beautyScore"
    ]
  },
  "size_units": [
    "PX",
    "CSS_PX",
    "PT",
    "REM",
    "EM",
    "OWNER_DEFINED"
  ],
  "size_evidence_semantics": {
    "meaning": "explicit positive type-size scalar supplied by an external measurement/style owner; 34.01 preserves evidence lineage and does not claim universal measurement ownership",
    "subject_binding": "must reference one immutable 34.00 TextRoleDescriptor",
    "value": "positive finite scalar",
    "unit": "explicit and preserved",
    "owner_defined_unit": "required only for OWNER_DEFINED",
    "upstream_measurement_ref": "required owner-qualified source reference",
    "headline_bridge": "a HEADLINE_REFERENCE subject may point to 33.00/33.01 lineage externally, but 34.01 does not re-own 33.01 font size"
  },
  "ratio_semantics": {
    "request_orientation": "numeratorTextSubjectRef / denominatorTextSubjectRef",
    "same_unit_required": true,
    "ratio": "numerator size / denominator size",
    "inverse_ratio": "denominator size / numerator size",
    "equal_scale": "true only when numeric values are exactly equal within the same explicit unit",
    "larger_subject_ref": "numerator if ratio>1; denominator if ratio<1; null if equal",
    "smaller_subject_ref": "opposite of larger; null if equal",
    "log2_scale_step": "log2(ratio)",
    "ratio_is_hierarchy_rank": false,
    "ratio_is_importance_score": false,
    "ratio_is_readability_score": false,
    "ratio_is_independent_vote": false
  },
  "compatibility_semantics": {
    "34_00_subject": "must be immutable DECLARED_TYPOGRAPHIC_ROLE",
    "scope_snapshot": "size evidence and pair requests must resolve under exact 34.00 scope/snapshot",
    "units": "pairwise ratio requires exact same unit and same ownerDefinedUnit when OWNER_DEFINED",
    "cross_unit_ratio": "N_A; no automatic conversion",
    "same_role_pairs": "allowed",
    "different_role_pairs": "allowed",
    "same_subject_pair": "INVALID",
    "role_labels": "preserved as descriptors only; ratio does not imply a canonical role order"
  },
  "policy": {
    "request_mode": "EXPLICIT_TYPE_SCALE_PAIR_REQUESTS_ONLY",
    "max_size_evidence": [
      1,
      131072
    ],
    "max_pair_requests": [
      0,
      262144
    ],
    "max_subjects": [
      1,
      131072
    ],
    "overflow": "N_A_NO_TRUNCATION",
    "duplicate_size_evidence_ref": "INVALID",
    "duplicate_pair_request_ref": "INVALID",
    "duplicate_subject_size_binding": "INVALID",
    "duplicate_directed_pair_identity": "INVALID",
    "auto_size_extraction": false,
    "auto_unit_conversion": false,
    "auto_scale_normalization": false,
    "auto_pair_cartesian": false,
    "auto_hierarchy_rank": false,
    "auto_hierarchy_level": false,
    "auto_role_ordering": false,
    "auto_weight_style_case_hierarchy": false,
    "auto_color_contrast_hierarchy": false,
    "auto_readability_evaluation": false,
    "auto_accessibility_evaluation": false,
    "auto_multi_block_ordering": false,
    "auto_hierarchy_graph": false,
    "auto_scoring": false
  },
  "status_semantics": {
    "OK": "explicit size evidence resolves for immutable 34.00 subjects; requested same-unit pair ratios are derived deterministically",
    "N_A": "subject/evidence lineage is missing, scope/snapshot mismatches, requested pair uses incompatible units, or bounds overflow",
    "INVALID": "malformed evidence/request/policy, unsupported unit, nonpositive size, duplicate identity, owner-defined unit missing, or same-subject pair",
    "zero": "log2 scale step may legitimately be zero when sizes are equal; zero is never a sentinel for N_A"
  },
  "firewalls": [
    "type size != hierarchy rank",
    "scale ratio != hierarchy rank",
    "scale ratio != semantic role order",
    "scale ratio != visual importance score",
    "scale ratio != readability score",
    "scale ratio != independent vote",
    "equal scale != hierarchy failure",
    "larger type != automatically higher semantic role",
    "TITLE larger than BODY != universal law",
    "BODY larger than TITLE != automatically INVALID",
    "same-role scale ratio != duplicate error",
    "different-role scale ratio != hierarchy truth",
    "log2 scale step != musical/modular scale law",
    "34.01 preserves units; it does not normalize PX/PT/REM/EM",
    "34.01 size evidence binding does not re-own 33.01 headline font size",
    "34.01 does not mutate 34.00 semantic roles",
    "34.01 does not assign 34.00 hierarchyRank",
    "34.01 scale != 34.02 weight/style/case hierarchy",
    "34.01 scale != 34.03 color/contrast hierarchy",
    "34.01 scale != 34.04 readability/accessibility",
    "34.01 ratio graph != 34.05 multi-block ordering",
    "34.01 ratio descriptor != 34.06 score",
    "34.01 does not own Topic35 TextBlock geometry",
    "34.01 does not own Topic36 typography spacing",
    "34.01 does not own Topic37 text-image relation",
    "N_A != 0",
    "INVALID != 0",
    "descriptor != score",
    "local != global",
    "geometry != interpretation",
    "heuristic != law",
    "no universal type-scale ratio threshold",
    "no universal beautyScore"
  ],
  "owns_metrics": [],
  "independent_numeric_votes": 0,
  "topic34ProgressAfterThisModule": "2/7 local",
  "next_module": "Compo 34.02 — Weight / style / case hierarchy",
  "topic35_started": false,
  "publication": "NOT_VERIFIED"
}
VISITS / ...