COMPO · 16.01 · PAIRWISE SIZE RATIOS

Same binding.
Observed ratio.

16.01 добавляет owner-qualified положительные magnitude evidence и впервые вычисляет numeric size ratio для ScaleRelation. Ratio симметричен относительно исходного порядка пары; near-equal определяется только explicit policy и не является оценкой качества.

ModuleCompo 16.01
Magnitude> 0 only
Ratiosymmetric
Near equalexplicit policy
Metricsnone
NextSTOP

Same binding. Same unit. Positive magnitudes.

00 / contract
16.00 ScaleRelation + exact relation binding + positive magnitude A + positive magnitude B + exact shared unit → observed pairwise order → symmetric size ratio → ratio delta from equality optional explicit near-equal policy → EXACT_EQUAL | NEAR_EQUAL | DISTINCT NO classes NO ladders NO scoring

Numeric ratio is descriptive evidence

01 / ownership
OWNS

Magnitude resolution

Owner-qualified positive scalar evidence under exact 16.00 binding.

OWNS

Pairwise ratio

Observed larger/smaller/equal order and symmetric ratio descriptor.

NO SCORE

Descriptive only

owns_metrics=[]. Near-equal band is not desirability.

ScaleMagnitudeEvidence

02 / owner-qualified magnitude
ScaleMagnitudeEvidence {
  scaleMagnitudeEvidenceRef,

  scopeRef,
  subjectRef,
  scaleMeasurementBindingRef,

  value: finite > 0,
  measurementUnitRef,

  evidenceSourceRef,
  evidenceSourceOwnerRef,

  confidence,
  provenance,
  snapshotRef,

  status,
  mutationAllowed: false
}
value <= 0 → INVALID NO: unit inference unit conversion binding fallback method fallback confidence winner

Duplicate evidence is not averaged

03 / magnitude resolution
EvidenceResult
0 recordsN_A
1 valid recordOK + RESOLVED
2+ exact same value + unitOK + RESOLVED
2+ different value or unitN_A + CONFLICT
Any invalid recordINVALID
Confidence cannot choose a magnitude.

No averaging, median, source-order winner or automatic conversion is allowed.

Exact comparability

04 / no cross-binding ratio
Required: same exact ScaleRelation.scaleMeasurementBindingRef same exact measurementUnitRef both values finite and >0 exact subject membership compatible snapshot lineage Forbidden: WIDTH ↔ HEIGHT VISIBLE_AREA ↔ BBOX_AREA_PROXY LINEAR ↔ AREA automatic unit conversion method fallback reference-context fallback

Observed order is not lexical order

05 / pairwise order
StateMeaning
A_LARGERObserved magnitude A > B.
B_LARGERObserved magnitude B > A.
EQUALResolved magnitudes exactly equal.
lexical pair order != observed size order != numerator/denominator != hierarchy order request direction != ratio orientation

Symmetric ratio descriptor

06 / ratio math
largerToSmallerRatio
  = max(A,B) / min(A,B)
  domain [1,+∞)

smallerToLargerRatio
  = min(A,B) / max(A,B)
  domain (0,1]

ratioDeltaFromEquality
  = largerToSmallerRatio - 1
  domain [0,+∞)
Direction invariant.

Reversing A/B request direction does not change the ratio. Numerator is defined by observed magnitude only.

Exact equality ≠ near equality

07 / equality semantics
ratio = 1 ↔ exact resolved magnitude equality near-equal requires separate explicit policy near-equal does NOT mean exact equal

Near-equal policy is explicit

08 / policy-relative band
ScaleNearEqualPolicy {
  mode:
    DISABLED
    or
    RATIO_DELTA_MAX_INCLUSIVE,

  maxRatioDeltaInclusive:
    explicit finite >= 0,

  source / owner / provenance,

  status,
  mutationAllowed: false
}
BandMeaning
EXACT_EQUALdelta == 0 under enabled policy.
NEAR_EQUAL0 < delta ≤ explicit threshold.
DISTINCTdelta > explicit threshold.
N_APolicy disabled or ratio unavailable.

Near-equal is not a penalty

09 / interpretation firewall
NEAR_EQUAL != bad DISTINCT != good EXACT_EQUAL != hierarchy violation ratio magnitude != desirability ratioDeltaFromEquality != penalty band count != score NO hard reject from: EXACT_EQUAL NEAR_EQUAL DISTINCT

Derived attachment, immutable root

10 / lineage
ScaleRelationRatioAttachment {
  scaleRelationRef,

  scalePairwiseOrderResolutionRef,
  scaleRatioDescriptorRef,
  scaleNearEqualDescriptorRef?,

  status,
  mutationAllowed: false
}
16.00 ScaleRelation remains unchanged 16.00 ScaleSystemSeed.pairwiseRatioAttachmentRef remains null 16.01 creates: ScaleSystemRatioAttachment

Topic16 ownership remains layered

11 / downstream boundaries
16.00Scale subjects, measure binding and relation identity.
16.01Magnitude evidence, observed order and pairwise ratio descriptors.
16.02Large/Medium/Small classes.
16.03Scale ladders and distributions.
16.04Target scoring, MetricResult ownership and repair generator.
Topic17Aspect ratio and part-to-whole proportional systems.
Compo18Generic hierarchy/subordination.

No golden ratio hiding in the model

12 / firewalls
Forbidden shortcuts

1.618 target; universal near-equal threshold; ratio→quality; equality→hierarchy failure; area ratio→linear ratio.

Preserved

Exact binding, exact unit, positive values, conflict preservation, symmetric ratio, explicit near-equal policy, N_A != 0.

CANON → LAB → DATA → IDEAS

13 / mandatory hooks
IDEAS_REFS[]7 project directions preserved.
DATA_CAPTURE[]Magnitude, unit, ratio and near-equal lineage.
DEFERRED_SEMANTIC_INPUTS[]Desirability, classes and ladder targets stay downstream.
HUMAN_FEEDBACK_HOOKS[]Magnitude/unit/ratio corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]Confidence and lexical order are not priority.
LAB_HOOKS[]Perceived versus geometric ratio studies.

16.01 regression suite

14 / deterministic tests

Tests cover positive magnitude validation, duplicate conflict preservation, exact-unit comparability, observed order, symmetric ratio math, request reversal invariance, explicit near-equal policy, immutable attachments and no-score firewalls.

Tests not run yet.

DATA FOR LAYOUT ENGINE

15 / machine contract
{
  "module": "Compo 16.01",
  "name": "pairwise_size_ratios",
  "version": "1.0-canonical",
  "canonical_main_title": "Pairwise size ratios",
  "topic": "16_МАСШТАБ_И_ОТНОШЕНИЕ_РАЗМЕРОВ",
  "scope": "OWNER_QUALIFIED_POSITIVE_MAGNITUDE_EVIDENCE_EXACT_SAME_BINDING_PAIRWISE_ORDER_AND_SYMMETRIC_SIZE_RATIO_DESCRIPTORS_WITH_EXPLICIT_NEAR_EQUAL_POLICY_ONLY",
  "main_topic_contract": {
    "topic_title": "Масштаб и отношение размеров",
    "topic_goal": "Считает отношения размеров между объектами и масштабные ступени. Нужна для выразительной дифференциации, scale ladders и контроля почти-равных размеров.",
    "expected_output": "ScaleRelation[], size-ratio descriptors, scale classes",
    "planned_files": [
      "16.00 Scale relation model",
      "16.01 Pairwise size ratios",
      "16.02 Large/medium/small classes",
      "16.03 Scale ladders and distributions",
      "16.04 Candidates, scoring and tests"
    ]
  },
  "ownership": {
    "owner": "Compo16.01",
    "owns": [
      "ScaleMagnitudeEvidence",
      "ScaleMagnitudeResolution",
      "ScalePairwiseOrderState taxonomy",
      "ScalePairwiseOrderResolution",
      "ScaleRatioDescriptor",
      "ScaleNearEqualPolicy",
      "ScaleNearEqualBandState taxonomy",
      "ScaleNearEqualDescriptor",
      "ScaleRelationRatioAttachment",
      "ScaleRelationRatioSet",
      "ScaleSystemRatioAttachment",
      "same-binding / same-unit comparability enforcement",
      "symmetric larger-to-smaller pairwise ratio",
      "ratioDeltaFromEquality descriptor",
      "identity/status/provenance rules for pairwise size-ratio layer",
      "non-mutating correction request for magnitude evidence / unit / near-equal policy"
    ],
    "does_not_own": [
      "ScaleSubject eligibility / ScaleRelation identity — Compo16.00",
      "raw geometry measurement — upstream geometry/measurement owners",
      "measurement binding definition — Compo16.00",
      "transform scale parameter — Compo3.05",
      "format normalization / global scale invariance — Compo6.03",
      "visual mass — Compo4",
      "dominance / focal ranking — Compo13",
      "microdetail size/contrast role-envelope semantics — Topic15",
      "large/medium/small scale classes — Compo16.02",
      "scale ladders / scale distributions — Compo16.03",
      "target scoring / MetricResult / repair generation — Compo16.04",
      "aspect ratio / part-to-whole proportions — Topic17",
      "generic hierarchy/subordination — Compo18",
      "global balance",
      "semantic importance",
      "foreign geometry/style/semantic mutation"
    ]
  },
  "consumes": [
    "valid Compo16.00 ScaleSubjectSet",
    "valid Compo16.00 ScaleRelationSet",
    "exact Compo16.00 ScaleMeasurementBinding referenced by each relation",
    "owner-qualified ScaleMagnitudeEvidence",
    "optional explicit ScaleNearEqualPolicy"
  ],
  "provides": [
    "ScaleMagnitudeResolution[]",
    "ScalePairwiseOrderResolution[]",
    "ScaleRatioDescriptor[]",
    "ScaleNearEqualDescriptor[]",
    "ScaleRelationRatioAttachment[]",
    "ScaleRelationRatioSet",
    "ScaleSystemRatioAttachment",
    "Topic16.01 observation record"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "16.01 owns descriptive numeric ratio data only. ScaleRatioDescriptor is not a MetricResult, score, hierarchy vote or desirability judgment. No independent numeric vote.",
  "scale_magnitude_evidence_schema": {
    "scaleMagnitudeEvidenceRef": "stable identity",
    "scopeRef": "Topic16 scope",
    "subjectRef": "exact Compo16.00 ScaleSubject subjectRef",
    "scaleMeasurementBindingRef": "exact Compo16.00 binding ref",
    "value": "finite strictly positive scalar",
    "measurementUnitRef": "explicit exact unit identity",
    "evidenceSourceRef": "explicit source",
    "evidenceSourceOwnerRef": "actual magnitude owner",
    "confidence": "finite [0,1] source confidence only",
    "provenance": "canonical provenance",
    "snapshotRef": "exact snapshot",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "Magnitude evidence supplies a positive scalar under an existing 16.00 binding. It does not redefine channel, dimension, method, reference context, relation identity, class or score."
  },
  "scale_magnitude_resolution_schema": {
    "scaleMagnitudeResolutionRef": "stable identity",
    "scopeRef": "scope",
    "subjectRef": "subject",
    "scaleMeasurementBindingRef": "exact binding",
    "measurementUnitRef": "exact unit when resolved",
    "evidenceRefs": "canonical refs",
    "value": "finite >0 or null",
    "resolutionState": "RESOLVED|CONFLICT|null",
    "confidence": "null in v1; confidence cannot break duplicate conflicts",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "rules": {
      "noEvidence": "N_A",
      "oneEvidence": "OK + RESOLVED",
      "multipleExactAgreement": "OK + RESOLVED",
      "multipleValueOrUnitDisagreement": "N_A + CONFLICT"
    },
    "firewall": "No fallback, averaging, median, confidence winner or unit conversion is performed in 16.01. Conflicting magnitude evidence remains N_A."
  },
  "scale_pairwise_order_state_taxonomy": {
    "A_LARGER": "subjectRefA magnitude > subjectRefB magnitude",
    "B_LARGER": "subjectRefB magnitude > subjectRefA magnitude",
    "EQUAL": "magnitudes exactly equal under exact binding and unit"
  },
  "scale_pairwise_order_resolution_schema": {
    "scalePairwiseOrderResolutionRef": "stable identity",
    "scaleRelationRef": "exact 16.00 relation",
    "subjectRefA": "canonical relation subject A",
    "subjectRefB": "canonical relation subject B",
    "orderState": "A_LARGER|B_LARGER|EQUAL|null",
    "largerSubjectRef": "exact subject ref or null",
    "smallerSubjectRef": "exact subject ref or null",
    "equalSubjectRefs": "both refs only for EQUAL",
    "magnitudeResolutionRefs": "exact two refs",
    "measurementUnitRef": "shared exact unit",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "firewall": "Observed order is derived from resolved magnitudes, never lexical subject order. Exact equality is mathematical equality of the resolved positive scalars; near-equality is separate."
  },
  "scale_ratio_descriptor_schema": {
    "scaleRatioDescriptorRef": "stable identity",
    "scaleRelationRef": "exact relation",
    "scalePairwiseOrderResolutionRef": "exact order resolution",
    "largerToSmallerRatio": "finite >=1",
    "smallerToLargerRatio": "finite >0 and <=1",
    "ratioDeltaFromEquality": "largerToSmallerRatio - 1, finite >=0",
    "isExactEquality": "boolean",
    "measurementUnitRef": "shared unit identity",
    "status": "OK|N_A|INVALID",
    "provenance": "DERIVED",
    "mutationAllowed": false,
    "firewall": "Ratios are symmetric with respect to original request direction because numerator is defined by observed magnitude, not lexical pair order. Ratio is descriptive only."
  },
  "scale_near_equal_policy_schema": {
    "scaleNearEqualPolicyRef": "stable identity",
    "mode": "DISABLED|RATIO_DELTA_MAX_INCLUSIVE",
    "maxRatioDeltaInclusive": "finite >=0 when enabled; null when disabled",
    "policySourceRef": "explicit source",
    "policySourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "default": "NONE — no implicit near-equal threshold",
    "firewall": "The threshold describes a policy-relative near-equal band only. It is not an ideal ratio, quality threshold, hierarchy rule or hard reject."
  },
  "scale_near_equal_band_state_taxonomy": {
    "EXACT_EQUAL": "ratioDeltaFromEquality == 0 under an enabled policy",
    "NEAR_EQUAL": "0 < ratioDeltaFromEquality <= explicit threshold",
    "DISTINCT": "ratioDeltaFromEquality > explicit threshold",
    "N_A": "policy disabled or ratio unavailable"
  },
  "scale_near_equal_descriptor_schema": {
    "scaleNearEqualDescriptorRef": "stable identity",
    "scaleRatioDescriptorRef": "exact ratio descriptor",
    "scaleNearEqualPolicyRef": "exact explicit policy",
    "bandState": "EXACT_EQUAL|NEAR_EQUAL|DISTINCT|N_A",
    "thresholdUsed": "explicit numeric threshold or null",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "firewall": "EXACT_EQUAL / NEAR_EQUAL / DISTINCT are descriptive policy-relative bands only. NEAR_EQUAL != bad; DISTINCT != good; EXACT_EQUAL != hierarchy violation."
  },
  "scale_relation_ratio_attachment_schema": {
    "scaleRelationRatioAttachmentRef": "stable identity",
    "scaleRelationRef": "exact 16.00 relation",
    "scalePairwiseOrderResolutionRef": "exact order resolution",
    "scaleRatioDescriptorRef": "exact ratio descriptor",
    "scaleNearEqualDescriptorRef": "descriptor ref or null when policy absent/disabled",
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "Attachment is derived and immutable. It does not mutate the 16.00 ScaleRelation root record."
  },
  "scale_relation_ratio_set_schema": {
    "scaleRelationRatioSetRef": "stable identity",
    "scopeRef": "scope",
    "scaleRelationSetRef": "exact 16.00 relation set",
    "scaleNearEqualPolicyRef": "explicit policy ref or null",
    "magnitudeResolutionRefs": "canonical refs used",
    "pairwiseOrderResolutionRefs": "canonical refs",
    "scaleRatioDescriptorRefs": "canonical refs",
    "scaleNearEqualDescriptorRefs": "canonical refs",
    "scaleRelationRatioAttachmentRefs": "canonical refs",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "firewall": "Ratio set is a descriptive attachment layer. Relation count, ratio magnitude and near-equal count are not scores."
  },
  "scale_system_ratio_attachment_schema": {
    "scaleSystemRatioAttachmentRef": "stable identity",
    "scaleSystemSeedRef": "exact 16.00 seed",
    "scaleRelationRatioSetRef": "exact 16.01 ratio set",
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "16.00 pairwiseRatioAttachmentRef remains null in the immutable seed. This attachment links downstream data without mutating the seed."
  },
  "comparability_contract": {
    "requires": [
      "same exact ScaleRelation.scaleMeasurementBindingRef for both subjects",
      "same exact measurementUnitRef for both resolved magnitudes",
      "both magnitudes finite and >0",
      "compatible snapshot lineage",
      "exact relation subject membership"
    ],
    "forbids": [
      "WIDTH versus HEIGHT comparison",
      "VISIBLE_AREA versus BBOX_AREA_PROXY comparison",
      "LINEAR versus AREA comparison",
      "automatic unit conversion",
      "method fallback",
      "reference-context fallback",
      "cross-binding ratio calculation",
      "confidence-based evidence selection"
    ]
  },
  "ratio_math_contract": {
    "largerToSmallerRatio": "max(valueA,valueB) / min(valueA,valueB)",
    "smallerToLargerRatio": "min(valueA,valueB) / max(valueA,valueB)",
    "ratioDeltaFromEquality": "largerToSmallerRatio - 1",
    "domain": {
      "largerToSmallerRatio": "[1,+∞)",
      "smallerToLargerRatio": "(0,1]",
      "ratioDeltaFromEquality": "[0,+∞)"
    },
    "exactEquality": "valueA === valueB after valid magnitude resolution",
    "firewall": "No golden-ratio target, no logarithmic scale-step inference, no class boundary and no desirability transform."
  },
  "status_policy": {
    "noMagnitudeEvidence": "N_A",
    "invalidMagnitudeEvidence": "INVALID",
    "duplicateExactAgreement": "OK + RESOLVED",
    "duplicateMagnitudeConflict": "N_A + CONFLICT",
    "nonPositiveMagnitude": "INVALID",
    "unitMismatchAcrossPair": "N_A",
    "bindingMismatchAcrossPair": "N_A",
    "missingSubjectMagnitude": "N_A",
    "validPairRatio": "OK",
    "disabledNearEqualPolicy": "N_A band descriptor",
    "enabledNearEqualPolicy": "OK + EXACT_EQUAL|NEAR_EQUAL|DISTINCT",
    "N_A_not_zero": true
  },
  "identity_policy": {
    "scaleMagnitudeEvidenceRef": "hash(scope, subject, binding, value, unit, source/owner, confidence, provenance, snapshot, status)",
    "scaleMagnitudeResolutionRef": "hash(scope, subject, binding, unit/value, canonical evidence refs, resolution state/status)",
    "scalePairwiseOrderResolutionRef": "hash(relation, exact subject refs, magnitude-resolution refs, order state, larger/smaller/equal refs, shared unit, status)",
    "scaleRatioDescriptorRef": "hash(relation, order resolution, larger/smaller ratios, delta from equality, exact-equality flag, unit, status)",
    "scaleNearEqualPolicyRef": "hash(mode, threshold, source/owner, provenance, status)",
    "scaleNearEqualDescriptorRef": "hash(ratio descriptor, policy, band state, threshold, status)",
    "scaleRelationRatioAttachmentRef": "hash(relation, order/ratio/near-equal refs, status)",
    "scaleRelationRatioSetRef": "hash(scope, relation set, policy, canonical magnitude/order/ratio/near-equal/attachment refs, status)",
    "scaleSystemRatioAttachmentRef": "hash(system seed, ratio set, status)",
    "excluded_from_identity": [
      "display label",
      "display color",
      "UI ordering",
      "free-form comment"
    ]
  },
  "critical_firewalls": [
    "16.01 consumes Compo16.00 relation identity; it does not redefine relation identity",
    "16.01 consumes Compo16.00 measurement binding; it does not redefine binding semantics",
    "16.01 owns descriptive pairwise ratio only",
    "16.01 owns no MetricResult",
    "16.01 owns no independent numeric vote",
    "magnitude evidence must be owner-qualified",
    "magnitude value must be finite and strictly positive",
    "zero magnitude is INVALID",
    "negative magnitude is INVALID",
    "measurement unit must be explicit",
    "same binding does not waive unit equality",
    "different units are not silently converted",
    "different bindings are not silently comparable",
    "different methods are not silently comparable",
    "different reference contexts are not silently comparable",
    "confidence cannot resolve magnitude conflict",
    "confidence != size rank",
    "confidence != ratio quality",
    "duplicate conflicting magnitudes => N_A",
    "duplicate exact-agreement magnitudes may resolve",
    "no averaging conflicting magnitude evidence",
    "no median of conflicting magnitude evidence",
    "no confidence winner for conflicting magnitude evidence",
    "pairwise observed order comes from magnitude values",
    "lexical pair order != observed size order",
    "lexical pair order != numerator/denominator",
    "lexical pair order != hierarchy order",
    "request direction != ratio orientation",
    "largerToSmallerRatio is symmetric under request reversal",
    "ratio denominator is observed smaller positive magnitude",
    "largerToSmallerRatio >= 1",
    "smallerToLargerRatio > 0",
    "smallerToLargerRatio <= 1",
    "ratioDeltaFromEquality >= 0",
    "ratio 1 means exact equality only",
    "near-equal != exact equal",
    "near-equal policy must be explicit",
    "no implicit near-equal threshold",
    "no universal near-equal threshold",
    "NEAR_EQUAL != bad",
    "DISTINCT != good",
    "EXACT_EQUAL != hierarchy violation",
    "ratio magnitude != desirability",
    "ratioDeltaFromEquality != penalty",
    "ratio descriptor != score",
    "near-equal descriptor != score",
    "near-equal band count != score",
    "ratio set relation count != scale diversity score",
    "ratio set ratio spread != hierarchy quality",
    "no hard reject from near-equal state",
    "no hard reject from exact equality",
    "no golden-ratio default",
    "no implicit 1.618 target",
    "no universal ideal size ratio",
    "no logarithmic scale-step inference in 16.01",
    "no large/medium/small classes in 16.01",
    "no scale ladders in 16.01",
    "no scale distributions in 16.01",
    "no target scoring in 16.01",
    "no repair generator in 16.01",
    "ScaleRatioDescriptor != MetricResult",
    "ScaleNearEqualDescriptor != MetricResult",
    "large/medium/small ownership remains Compo16.02",
    "scale ladder/distribution ownership remains Compo16.03",
    "scoring/generator ownership remains Compo16.04",
    "ScaleSubject/ScaleRelation root ownership remains Compo16.00",
    "visual mass ownership remains Compo4",
    "dominance ownership remains Compo13",
    "microdetail role-envelope ownership remains Topic15",
    "aspect ratio / part-to-whole ownership remains Topic17",
    "generic hierarchy/subordination remains Compo18 territory",
    "transform scale factor ownership remains Compo3.05",
    "format normalization / global scale invariance ownership remains Compo6.03",
    "raw geometry measurement remains foreign-owned",
    "size ratio != visual mass ratio",
    "size ratio != dominance ratio",
    "size ratio != contrast ratio",
    "size ratio != spacing ratio",
    "size ratio != aspect ratio",
    "object-to-object size ratio != part-to-whole proportion",
    "ratio attachment != root relation mutation",
    "system ratio attachment != ScaleSystemSeed mutation",
    "correction request != foreign mutation",
    "N_A != 0",
    "INVALID != 0",
    "local != global",
    "geometry != interpretation",
    "descriptor != score",
    "heuristic != law",
    "one metric = one owner",
    "module execution order != rule priority",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "correction_request_schema": {
    "scalePairwiseRatioCorrectionRequestRef": "stable identity",
    "targetOwnerRef": "magnitude / unit / binding / near-equal-policy owner",
    "reasonCode": "MAGNITUDE_WRONG|MAGNITUDE_CONFLICT_WRONG|UNIT_WRONG|BINDING_WRONG|MISSING_MAGNITUDE|NEAR_EQUAL_POLICY_WRONG|NEAR_EQUAL_THRESHOLD_WRONG",
    "scaleRelationRef": "exact relation or null",
    "subjectRefs": "canonical refs[]",
    "evidenceRefs": "canonical refs[]",
    "suggestedAction": "non-mutating review request",
    "status": "OPEN|INVALID",
    "mutationAllowed": false
  },
  "deferred_downstream": {
    "16.02": [
      "explicit scale-class profile",
      "Large/Medium/Small class thresholds or clustering policy",
      "class assignment descriptors",
      "class ambiguity/conflict semantics",
      "ScaleClassAttachment"
    ],
    "16.03": [
      "scale ladder construction from ratio/class evidence",
      "scale-step descriptors",
      "scale distribution descriptors",
      "occupied level families",
      "ladder gaps and repeated scale levels",
      "ScaleLadderAttachment"
    ],
    "16.04": [
      "explicit target scale-relation profile",
      "target desirability of near-equal relations",
      "component/composite MetricResult ownership",
      "exact independent-vote budget for Topic16",
      "bounded deterministic repair candidates",
      "final Topic16 regression tests"
    ]
  },
  "IDEAS_REFS": [
    "IDEA-01 full human test after all 72 topics; compare perceived scale difference with ratio descriptors",
    "IDEA-02 semantics before placement; comparison intent and scale-subject eligibility remain explicit",
    "IDEA-03 explicit priorities; lexical pair order, evidence order and policy order never become conflict priority",
    "IDEA-04 collect structured ratio data for future composition model",
    "IDEA-05 preserve reasons for human corrections to magnitude and near-equal judgments",
    "IDEA-06 structured machine-readable data layer for website",
    "IDEA-07 graphics-for-post-text research remains downstream/separate"
  ],
  "DATA_CAPTURE": [
    "sceneRef",
    "scopeRef",
    "snapshotRef",
    "scaleSubjectSetRef",
    "scaleRelationSetRef",
    "scaleMeasurementBindingRefs[]",
    "scaleMagnitudeEvidenceRefs[]",
    "magnitudeValueByEvidence",
    "measurementUnitByEvidence",
    "magnitudeOwnerByEvidence",
    "magnitudeConfidenceByEvidence",
    "scaleMagnitudeResolutionRefs[]",
    "resolvedMagnitudeBySubjectBinding",
    "magnitudeConflictBySubjectBinding",
    "resolvedUnitBySubjectBinding",
    "scalePairwiseOrderResolutionRefs[]",
    "orderStateByRelation",
    "largerSubjectByRelation",
    "smallerSubjectByRelation",
    "equalSubjectsByRelation",
    "scaleRatioDescriptorRefs[]",
    "largerToSmallerRatioByRelation",
    "smallerToLargerRatioByRelation",
    "ratioDeltaFromEqualityByRelation",
    "exactEqualityByRelation",
    "scaleNearEqualPolicyRef",
    "nearEqualThreshold",
    "scaleNearEqualDescriptorRefs[]",
    "nearEqualBandByRelation",
    "scaleRelationRatioAttachmentRefs[]",
    "scaleRelationRatioSetRef",
    "scaleSystemRatioAttachmentRef",
    "humanReasonCodes[]",
    "futureScaleClassRefs[]",
    "futureScaleLadderRefs[]",
    "futureMetricResultRefs[]"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "whether exact equality is desired in a target style",
    "whether near-equal size is desirable or undesirable",
    "desired ratio bands for expressive differentiation",
    "desired number and semantics of scale classes",
    "desired ladder progression",
    "global hierarchy consequences of ratio patterns",
    "final Topic16 target profile"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "MAGNITUDE_WRONG",
    "MAGNITUDE_SOURCE_WRONG",
    "MAGNITUDE_CONFLICT_REAL",
    "MAGNITUDE_CONFLICT_SHOULD_RESOLVE",
    "UNIT_WRONG",
    "UNIT_CONVERSION_SHOULD_BE_EXPLICIT",
    "BINDING_WRONG",
    "PAIR_ORDER_WRONG",
    "EXACT_EQUAL_WRONG",
    "RATIO_WRONG",
    "RATIO_DELTA_WRONG",
    "NEAR_EQUAL_POLICY_TOO_STRICT",
    "NEAR_EQUAL_POLICY_TOO_PERMISSIVE",
    "NEAR_EQUAL_FEELS_EXACT",
    "NEAR_EQUAL_FEELS_DISTINCT",
    "DISTINCT_FEELS_NEAR_EQUAL",
    "EXACT_EQUAL_FEELS_INTENTIONAL",
    "EXACT_EQUAL_FEELS_ACCIDENTAL",
    "SIZE_DIFFERENCE_FEELS_TOO_STRONG",
    "SIZE_DIFFERENCE_FEELS_TOO_WEAK",
    "VISIBLE_AREA_RATIO_PREFERRED",
    "BBOX_AREA_RATIO_PREFERRED",
    "LINEAR_RATIO_PREFERRED",
    "TEXT_EM_HEIGHT_RATIO_PREFERRED",
    "STROKE_WIDTH_RATIO_PREFERRED"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "module execution order is not priority",
    "magnitude evidence order is not priority",
    "confidence is not conflict priority",
    "lexical pair order is not size priority",
    "ratio magnitude is not rule priority",
    "near-equal policy threshold is not global hierarchy priority",
    "future reviewed global conflict-priority owner remains authoritative"
  ],
  "LAB_HOOKS": [
    "human study: perceived difference versus larger-to-smaller linear ratio",
    "human study: perceived difference versus area ratio",
    "calibrate explicit near-equal thresholds by channel and style",
    "compare visible-area and bbox-area ratio judgments",
    "study exact equality as intentional versus accidental",
    "study size-ratio perception for text versus generic shapes",
    "collect cases where geometric ratio and visual mass ratio diverge",
    "collect cases where ratio and dominance diverge",
    "measure agreement on near-equal versus distinct judgments"
  ],
  "observation_record": {
    "moduleRef": "Compo16.01",
    "metricResults": [],
    "scaleRatioDescriptorRefs": [],
    "scaleNearEqualDescriptorRefs": [],
    "futureScaleClassRefs": [],
    "futureScaleLadderRefs": []
  },
  "stop_condition": "STOP after 16.01. Do not create 16.02 in this module."
}
VISITS / ...