Relation identity before ratio
Root model only
Participation
Explicit scale-subject eligibility and immutable subject set.
Comparison contract
Exact measure channel/method/context binding and explicit unordered relation identity.
Downstream later
owns_metrics=[]. Ratio starts only in 16.01.
Scale subject eligibility is explicit
| Kind | Meaning |
|---|---|
| SCALE_SUBJECT | May participate in object-to-object scale relations. |
| NON_SCALE_SUBJECT | Explicitly excluded. |
| UNSPECIFIED | Explicit no-commitment value; not missing evidence. |
Large, small, dominant, visually heavy or semantically important objects are not automatically scale subjects.
Scale measurement binding
| Channel | Dimension |
|---|---|
| VISIBLE_AREA | AREA |
| BBOX_AREA_PROXY | AREA |
| WIDTH | LINEAR |
| HEIGHT | LINEAR |
| MAX_EXTENT | LINEAR |
| MIN_EXTENT | LINEAR |
| TEXT_EM_HEIGHT | LINEAR |
| STROKE_WIDTH | LINEAR |
| EXPLICIT_SCALAR | EXPLICIT_SCALAR |
No channel substitution
VISIBLE_AREA→BBOX_AREA_PROXY fallback; WIDTH→MAX_EXTENT fallback; area ratio→linear ratio; TEXT_EM_HEIGHT→generic height.
Exact channel + exact method + exact reference context. Different bindings remain different relations.
Explicit unordered pair request
ScaleRelationRequest {
scaleRelationRequestRef,
scopeRef,
subjectRefA,
subjectRefB,
canonicalSubjectLowRef,
canonicalSubjectHighRef,
scaleMeasurementBindingRef,
comparisonSemantics:
PEER_OBJECT_SCALE,
source / owner / provenance,
status,
mutationAllowed: false
}
No automatic all-pairs explosion
ScaleRelationSetPolicy {
selectionMode:
EXPLICIT_PAIR_BINDINGS_ONLY,
duplicatePolicy:
DEDUP_EXACT_IDENTITY,
missingSubjectPolicy:
N_A_NO_GUESS,
conflictedSubjectPolicy:
N_A_NO_GUESS,
maxRelations:
1..8192,
overflowPolicy:
N_A_NO_TRUNCATION,
fullCartesianProductAllowed:
false
}
ScaleRelation has no ratio yet
ScaleRelation {
scaleRelationRef,
scopeRef,
scaleSubjectSetRef,
subjectRefA,
subjectRefB,
scaleMeasurementBindingRef,
scaleRelationRequestRef,
comparisonSemantics:
PEER_OBJECT_SCALE,
numericRatio: null,
sizeClass: null,
scaleStep: null,
score: null,
status: OK,
mutationAllowed: false
}
ScaleRelation[] is canonical relation identity. Numeric size-ratio descriptors begin in 16.01.
Scale ≠ proportion ≠ hierarchy
| Concept | Owner |
|---|---|
| Object-to-object scale relation identity | 16.00 |
| Pairwise numeric size ratio | 16.01 |
| Large/Medium/Small classes | 16.02 |
| Scale ladders/distributions | 16.03 |
| Target scoring / repair candidates | 16.04 |
| Aspect ratio / part-to-whole proportions | Topic17 |
| Generic hierarchy/subordination | Compo18 |
| Visual mass | Compo4 |
| Dominance | Compo13 |
N_A never becomes zero
| No eligibility evidence | N_A |
| Eligibility conflict | OK + CONFLICT; excluded |
| UNSPECIFIED | Resolved explicit value; excluded by v1 policy |
| Subject-set overflow | N_A; no truncation |
| Same-subject relation request | INVALID |
| Requested subject missing/conflicted | N_A; no guess |
| Relation-set overflow | N_A; no truncation |
| Exact duplicate request | Deduplicated by identity |
Downstream ownership is explicit
Ratios
Positive magnitude evidence, larger/smaller/equal resolution, numeric ratio, near-equal descriptive band.
Classes
Explicit Large/Medium/Small class profile and assignments.
Ladders
Scale steps, occupied levels and distribution descriptors.
Scoring
Explicit target profile, MetricResult ownership and bounded repair candidates.
No hidden hierarchy through size
CANON → LAB → DATA → IDEAS
16.00 regression suite
Tests cover eligibility conflict preservation, subject-set policy, exact channel/dimension binding, unordered relation identity, explicit-pair-only selection, duplicate deduplication, overflow N_A, immutable root records and ownership firewalls.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 16.00",
"name": "scale_relation_model",
"version": "1.0-canonical",
"canonical_main_title": "Scale relation model",
"topic": "16_МАСШТАБ_И_ОТНОШЕНИЕ_РАЗМЕРОВ",
"scope": "EXPLICIT_SCALE_SUBJECT_ELIGIBILITY_SIZE_MEASURE_BINDING_AND_UNORDERED_OBJECT_TO_OBJECT_SCALE_RELATION_ROOT_MODEL_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.00",
"owns": [
"ScaleSubjectEligibilityKind taxonomy",
"ScaleSubjectEligibilityEvidence",
"ScaleSubjectEligibilityResolution",
"ScaleSubjectSetPolicy",
"ScaleSubject",
"ScaleSubjectSet",
"ScaleMeasureDimension taxonomy",
"ScaleMeasureChannel taxonomy",
"ScaleMeasurementBinding",
"ScaleRelationRequest",
"ScaleRelationSetPolicy",
"ScaleRelation",
"ScaleRelationSet",
"ScaleSystemSeed",
"identity/status/provenance rules for Topic16 root relation layer",
"non-mutating correction request for scale-subject eligibility / measurement binding / relation request"
],
"does_not_own": [
"raw geometry measurement — upstream geometry/measurement owners",
"visible area computation — upstream geometry/visibility owner",
"bounding-box computation — upstream geometry owner",
"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",
"pairwise numeric size ratios — Compo16.01",
"near-equal ratio interpretation — Compo16.01/16.04 according to explicit target policy",
"large/medium/small class assignment — Compo16.02",
"scale ladders / scale distributions — Compo16.03",
"scale target scoring / repair candidates — Compo16.04",
"aspect ratios inside one subject — Topic17",
"part-to-whole proportional relations — Topic17",
"generic hierarchy/subordination — Compo18",
"global balance",
"semantic importance",
"foreign geometry/style/semantic mutation"
]
},
"consumes": [
"explicit scene/scope identity",
"owner-qualified ScaleSubjectEligibilityEvidence",
"explicit ScaleSubjectSetPolicy",
"explicit ScaleMeasurementBinding records",
"explicit ScaleRelationRequest records",
"explicit ScaleRelationSetPolicy"
],
"provides": [
"ScaleSubjectEligibilityResolution[]",
"ScaleSubjectSet",
"ScaleMeasurementBinding[]",
"ScaleRelation[]",
"ScaleRelationSet",
"ScaleSystemSeed",
"Topic16.00 observation record"
],
"owns_metrics": [],
"metric_ownership_note": "16.00 owns relation identity/model only. It computes no numeric pairwise ratio, no size class, no ladder score and no independent numeric vote.",
"scale_subject_eligibility_kind_taxonomy": {
"SCALE_SUBJECT": "Explicitly eligible as an object-level scale-comparison subject.",
"NON_SCALE_SUBJECT": "Explicitly excluded from Topic16 object-level scale comparison.",
"UNSPECIFIED": "Explicit source makes no eligibility commitment; distinct from missing evidence."
},
"scale_subject_eligibility_evidence_schema": {
"scaleSubjectEligibilityEvidenceRef": "stable identity",
"scopeRef": "Topic16 scope",
"subjectRef": "exact subject identity",
"eligibilityKind": "SCALE_SUBJECT|NON_SCALE_SUBJECT|UNSPECIFIED",
"evidenceSourceRef": "explicit evidence source",
"evidenceSourceOwnerRef": "canonical owner of subject eligibility semantics",
"confidence": "finite [0,1] source confidence only",
"provenance": "canonical provenance",
"snapshotRef": "exact snapshot",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "Object size, bounding-box area, visual mass, dominance, semantic role or transform scale do not establish Topic16 eligibility automatically."
},
"scale_subject_eligibility_resolution_schema": {
"scaleSubjectEligibilityResolutionRef": "stable identity",
"scopeRef": "scope",
"subjectRef": "subject",
"evidenceRefs": "canonical evidence refs",
"resolvedEligibilityKind": "taxonomy value or CONFLICT",
"resolutionState": "RESOLVED|CONFLICT",
"confidence": "null in v1; confidence cannot break conflict",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"rules": {
"noEvidence": "N_A",
"exactAgreement": "OK + RESOLVED",
"disagreement": "OK + CONFLICT"
},
"firewall": "No evidence => N_A, not UNSPECIFIED. Confidence and source order never pick a winner."
},
"scale_subject_set_policy_schema": {
"scaleSubjectSetPolicyRef": "stable identity",
"conflictPolicy": "EXCLUDE",
"unspecifiedEligibilityPolicy": "EXCLUDE",
"maxSubjects": "integer 1..4096",
"overflowPolicy": "N_A_NO_TRUNCATION",
"ordering": "LEXICAL_SERIALIZATION_ONLY",
"policySourceRef": "explicit source",
"policySourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "Lexical order is serialization only, not scale rank, visual rank, hierarchy rank or importance. Overflow never silently truncates."
},
"scale_subject_schema": {
"scaleSubjectRef": "stable identity",
"scopeRef": "scope",
"subjectRef": "exact subject",
"eligibilityResolutionRef": "resolved SCALE_SUBJECT evidence",
"status": "OK",
"mutationAllowed": false,
"firewall": "ScaleSubject is participation identity only. It contains no measured size and no class."
},
"scale_subject_set_schema": {
"scaleSubjectSetRef": "stable identity",
"scopeRef": "scope",
"scaleSubjectSetPolicyRef": "explicit policy",
"scaleSubjectRefs": "canonical refs",
"subjectRefs": "canonical subject refs",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Subject count is not density, size rank, hierarchy, score or scale ladder."
},
"scale_measure_dimension_taxonomy": {
"LINEAR": "One-dimensional extent. Ratios compare like-for-like linear magnitudes only.",
"AREA": "Two-dimensional area magnitude. Ratios compare like-for-like areas only.",
"EXPLICIT_SCALAR": "Owner-defined positive scalar semantics; requires explicit scalarSemanticsRef."
},
"scale_measure_channel_taxonomy": {
"VISIBLE_AREA": {
"dimension": "AREA"
},
"BBOX_AREA_PROXY": {
"dimension": "AREA"
},
"WIDTH": {
"dimension": "LINEAR"
},
"HEIGHT": {
"dimension": "LINEAR"
},
"MAX_EXTENT": {
"dimension": "LINEAR"
},
"MIN_EXTENT": {
"dimension": "LINEAR"
},
"TEXT_EM_HEIGHT": {
"dimension": "LINEAR"
},
"STROKE_WIDTH": {
"dimension": "LINEAR"
},
"EXPLICIT_SCALAR": {
"dimension": "EXPLICIT_SCALAR"
}
},
"scale_measurement_binding_schema": {
"scaleMeasurementBindingRef": "stable identity",
"scopeRef": "scope",
"measureChannel": "one ScaleMeasureChannel",
"measureDimension": "must exactly match channel dimension",
"measurementMethodRef": "exact upstream measurement method",
"referenceContextRef": "exact comparison/reference context",
"scalarSemanticsRef": "required only for EXPLICIT_SCALAR; null otherwise",
"bindingSourceRef": "explicit source",
"bindingSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"comparability": [
"same measureChannel",
"same measureDimension",
"same measurementMethodRef",
"same referenceContextRef",
"same scalarSemanticsRef when EXPLICIT_SCALAR"
],
"firewall": "Binding defines how later magnitudes may be compared. It contains no magnitude, no ratio and no desirability. WIDTH, AREA, TEXT_EM_HEIGHT and STROKE_WIDTH are never interchangeable."
},
"scale_relation_request_schema": {
"scaleRelationRequestRef": "stable identity",
"scopeRef": "scope",
"subjectRefA": "first explicit subject ref",
"subjectRefB": "second explicit subject ref; must differ",
"canonicalSubjectLowRef": "lexically smaller subject ref",
"canonicalSubjectHighRef": "lexically larger subject ref",
"scaleMeasurementBindingRef": "exact binding",
"comparisonSemantics": "PEER_OBJECT_SCALE",
"requestSourceRef": "explicit source",
"requestSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "Pair identity is unordered. Lexical low/high is identity canonicalization only and never means smaller/larger observed size, numerator/denominator, hierarchy or visual priority."
},
"scale_relation_set_policy_schema": {
"scaleRelationSetPolicyRef": "stable identity",
"selectionMode": "EXPLICIT_PAIR_BINDINGS_ONLY",
"duplicatePolicy": "DEDUP_EXACT_IDENTITY",
"missingSubjectPolicy": "N_A_NO_GUESS",
"conflictedSubjectPolicy": "N_A_NO_GUESS",
"maxRelations": "integer 1..8192",
"overflowPolicy": "N_A_NO_TRUNCATION",
"ordering": "LEXICAL_IDENTITY_SERIALIZATION_ONLY",
"policySourceRef": "explicit source",
"policySourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"fullCartesianProductAllowed": false,
"firewall": "16.00 does not auto-generate every subject×subject×channel combination. Every v1 relation is explicitly requested and bounded."
},
"scale_relation_schema": {
"scaleRelationRef": "stable identity",
"scopeRef": "scope",
"scaleSubjectSetRef": "exact subject set",
"subjectRefA": "canonical lexical low ref",
"subjectRefB": "canonical lexical high ref",
"scaleMeasurementBindingRef": "exact binding",
"scaleRelationRequestRef": "exact request",
"comparisonSemantics": "PEER_OBJECT_SCALE",
"status": "OK",
"mutationAllowed": false,
"numericRatio": null,
"sizeClass": null,
"scaleStep": null,
"score": null,
"firewall": "ScaleRelation is an immutable relation identity, not a measured ratio. Numeric ratio belongs to 16.01; class to 16.02; ladder/distribution to 16.03; scoring/generation to 16.04."
},
"scale_relation_set_schema": {
"scaleRelationSetRef": "stable identity",
"scopeRef": "scope",
"scaleSubjectSetRef": "exact set",
"scaleRelationSetPolicyRef": "explicit policy",
"scaleMeasurementBindingRefs": "bindings actually referenced",
"scaleRelationRefs": "canonical relations",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Relation count is not a score, scale diversity, hierarchy, ladder quality or differentiation quality."
},
"scale_system_seed_schema": {
"scaleSystemSeedRef": "stable identity",
"scopeRef": "scope",
"scaleSubjectSetRef": "subject set",
"scaleRelationSetRef": "relation set",
"pairwiseRatioAttachmentRef": null,
"scaleClassAttachmentRef": null,
"scaleLadderAttachmentRef": null,
"evaluationAttachmentRef": null,
"status": "OK|N_A|INVALID",
"mutationAllowed": false,
"firewall": "Downstream modules attach derived records; 16.00 root identities are not mutated in place."
},
"identity_policy": {
"scaleSubjectEligibilityEvidenceRef": "hash(scope, subject, eligibility, source/owner, confidence, provenance, snapshot, status)",
"scaleSubjectEligibilityResolutionRef": "hash(scope, subject, canonical evidence refs, resolved kind/state/status)",
"scaleSubjectSetPolicyRef": "hash(conflict/unspecified/overflow/ordering policy, maxSubjects, source/owner, provenance, status)",
"scaleSubjectRef": "hash(scope, subject, eligibility resolution)",
"scaleSubjectSetRef": "hash(scope, subject-set policy, canonical scale-subject refs, status)",
"scaleMeasurementBindingRef": "hash(scope, channel/dimension, method, reference context, scalar semantics, source/owner, provenance, status)",
"scaleRelationRequestRef": "hash(scope, canonical unordered pair, measurement binding, comparison semantics, source/owner, provenance, status)",
"scaleRelationSetPolicyRef": "hash(selection/duplicate/missing/conflict/max/overflow/ordering policy, source/owner, provenance, status)",
"scaleRelationRef": "hash(scope, subject set, canonical unordered pair, measurement binding, relation request, comparison semantics)",
"scaleRelationSetRef": "hash(scope, subject set, relation-set policy, canonical relation refs, status)",
"scaleSystemSeedRef": "hash(scope, subject set, relation set, status)",
"excluded_from_identity": [
"display label",
"display color",
"UI ordering beyond canonical lexical serialization",
"free-form comment"
]
},
"status_policy": {
"noEligibilityEvidence": "N_A",
"eligibilityAgreement": "OK + RESOLVED",
"eligibilityConflict": "OK + CONFLICT",
"unspecifiedEligibility": "resolved UNSPECIFIED then excluded by v1 subject-set policy",
"subjectSetOverflow": "N_A; no truncation",
"relationRequestSameSubject": "INVALID",
"relationRequestMissingSubject": "N_A",
"relationRequestConflictedSubject": "N_A",
"relationSetOverflow": "N_A; no truncation",
"duplicateExactRelationRequest": "deduplicated by identity",
"validRequestedRelation": "OK",
"N_A_not_zero": true
},
"relation_build_rules": [
"Resolve eligibility before building ScaleSubjectSet.",
"Include only RESOLVED SCALE_SUBJECT under v1 policy.",
"Exclude NON_SCALE_SUBJECT.",
"Exclude UNSPECIFIED.",
"Exclude CONFLICT.",
"Do not use confidence to choose among conflicting eligibility evidence.",
"Require explicit valid ScaleMeasurementBinding.",
"Require explicit valid ScaleRelationRequest.",
"Canonicalize pair identity lexically only.",
"Require subjectRefA != subjectRefB.",
"Require both subjects to exist in the exact ScaleSubjectSet.",
"Deduplicate exact relation identities only.",
"Do not merge different measurement bindings.",
"Do not fallback WIDTH→MAX_EXTENT or VISIBLE_AREA→BBOX_AREA_PROXY.",
"Do not create a full Cartesian product.",
"Do not truncate on maxRelations overflow.",
"Build relation identities without numeric size values."
],
"critical_firewalls": [
"16.00 owns relation identity/model only",
"16.00 computes no pairwise numeric ratio",
"16.00 computes no scale class",
"16.00 computes no scale ladder",
"16.00 computes no scale score",
"16.00 owns no MetricResult",
"16.00 owns no independent numeric vote",
"scale-subject eligibility must be explicit",
"object existence != scale-subject eligibility",
"large object != scale-subject eligibility",
"small object != scale-subject eligibility",
"bounding-box size != scale-subject eligibility",
"visual mass != scale-subject eligibility",
"dominance != scale-subject eligibility",
"semantic importance != scale-subject eligibility",
"transform scale parameter != scale-subject eligibility",
"UNSPECIFIED != missing evidence",
"missing evidence => N_A, not UNSPECIFIED",
"confidence cannot break eligibility conflict",
"confidence != size rank",
"confidence != hierarchy rank",
"ScaleSubject != measured size",
"ScaleSubject != size class",
"subject count != scale diversity",
"subject count != hierarchy",
"subject count != score",
"measurement binding != measurement value",
"measurement binding != ratio",
"measurement binding != desirability",
"measure channel must match measure dimension",
"VISIBLE_AREA != BBOX_AREA_PROXY",
"WIDTH != HEIGHT",
"WIDTH != MAX_EXTENT",
"HEIGHT != MAX_EXTENT",
"MAX_EXTENT != MIN_EXTENT",
"TEXT_EM_HEIGHT != generic object height",
"STROKE_WIDTH != object size",
"LINEAR != AREA",
"AREA ratio != linear scale ratio",
"EXPLICIT_SCALAR requires explicit scalar semantics",
"different measurement methods are not silently comparable",
"different reference contexts are not silently comparable",
"different scalar semantics are not silently comparable",
"no fallback between size channels",
"no universal preferred size channel",
"ScaleRelation pair identity is unordered",
"lexical pair order != observed size order",
"lexical pair order != numerator/denominator",
"lexical pair order != hierarchy order",
"lexical pair order != visual priority",
"subjectRefA != subjectRefB",
"relation request must be explicit",
"relation selection mode = EXPLICIT_PAIR_BINDINGS_ONLY",
"no implicit all-pairs relation generation",
"full Cartesian product forbidden",
"relation count != scale diversity",
"relation count != hierarchy quality",
"relation count != expressive differentiation",
"ScaleRelation != size-ratio descriptor",
"ScaleRelation.numericRatio remains null in 16.00",
"ScaleRelation.sizeClass remains null in 16.00",
"ScaleRelation.scaleStep remains null in 16.00",
"ScaleRelation.score remains null in 16.00",
"ratio 1 meaning is deferred to 16.01 evidence",
"near-equal ratio != automatically bad",
"equal observed size != hierarchy violation",
"large size != semantic importance",
"small size != decorative role",
"size ratio != visual mass ratio",
"size ratio != dominance ratio",
"size ratio != contrast ratio",
"size ratio != spacing ratio",
"size ratio != aspect ratio",
"object-to-object scale relation != part-to-whole proportion",
"object-to-object scale relation != single-object aspect ratio",
"Topic16 != Topic17 proportional-system owner",
"Topic16 != Compo18 hierarchy owner",
"Topic16 != Compo4 visual-mass owner",
"Topic16 != Compo13 dominance owner",
"Topic16 != Topic15 microdetail size-envelope owner",
"transform scale factor ownership remains Compo3.05",
"format normalization / global scale invariance ownership remains Compo6.03",
"raw geometry measurement remains foreign-owned",
"relation identity does not mutate geometry",
"relation identity does not mutate semantics",
"relation identity does not mutate measurement method",
"root ScaleRelation records are immutable",
"ScaleSystemSeed is immutable",
"downstream attachment != root 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",
"no universal ideal size ratio",
"no implicit golden ratio",
"no implicit 1.618 target",
"no implicit large/medium/small thresholds",
"no implicit scale-ladder step",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"correction_request_schema": {
"scaleRelationModelCorrectionRequestRef": "stable identity",
"targetOwnerRef": "eligibility / binding / relation-request owner",
"reasonCode": "ELIGIBILITY_WRONG|ELIGIBILITY_CONFLICT_WRONG|MEASURE_CHANNEL_WRONG|MEASUREMENT_METHOD_WRONG|REFERENCE_CONTEXT_WRONG|SCALAR_SEMANTICS_WRONG|RELATION_PAIR_WRONG|RELATION_BINDING_WRONG|SUBJECT_MISSING",
"subjectRefs": "canonical refs[]",
"evidenceRefs": "canonical refs[]",
"suggestedAction": "non-mutating review request",
"status": "OPEN|INVALID",
"mutationAllowed": false
},
"deferred_downstream": {
"16.01": [
"owner-qualified positive scalar size magnitude evidence",
"exact same-binding comparability enforcement",
"pairwise larger/smaller/equal resolution",
"pairwise numeric size ratio",
"ratio distance from equality descriptor",
"near-equal descriptive band under explicit policy",
"ScaleRatioDescriptor",
"ScaleRelationRatioAttachment"
],
"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",
"step descriptors",
"distribution descriptors",
"repeated scale-level families",
"ladder gaps / occupied levels",
"ScaleLadderAttachment"
],
"16.04": [
"explicit target scale-relation profile",
"near-equal target semantics",
"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; prepare hooks for perceived scale differentiation",
"IDEA-02 semantics before placement; scale-subject eligibility and comparison intent stay explicit",
"IDEA-03 explicit priorities; module order and lexical pair order never become conflict priority",
"IDEA-04 collect structured scale-relation data for future composition model",
"IDEA-05 preserve reasons for human corrections to scale comparisons",
"IDEA-06 structured machine-readable data layer for website",
"IDEA-07 graphics-for-post-text research remains downstream/separate"
],
"DATA_CAPTURE": [
"sceneRef",
"scopeRef",
"snapshotRef",
"eligibilityEvidenceRefs[]",
"eligibilityResolutionRefs[]",
"resolvedEligibilityBySubject",
"eligibilityConflictBySubject",
"scaleSubjectSetPolicyRef",
"scaleSubjectRefs[]",
"scaleSubjectSetRef",
"scaleMeasurementBindingRefs[]",
"measureChannelByBinding",
"measureDimensionByBinding",
"measurementMethodByBinding",
"referenceContextByBinding",
"scalarSemanticsByBinding",
"scaleRelationRequestRefs[]",
"requestedPairByRef",
"measurementBindingByRequest",
"scaleRelationSetPolicyRef",
"scaleRelationRefs[]",
"relationPairByRef",
"relationBindingByRef",
"scaleRelationSetRef",
"scaleSystemSeedRef",
"relationSetStatus",
"humanReasonCodes[]",
"futureRatioDescriptorRefs[]",
"futureScaleClassRefs[]",
"futureScaleLadderRefs[]",
"futureMetricResultRefs[]"
],
"DEFERRED_SEMANTIC_INPUTS": [
"whether near-equal size is desirable or undesirable in a target style",
"which ratio bands count as expressive differentiation",
"desired number of scale classes",
"desired scale-ladder spacing",
"semantic importance of size differences",
"global hierarchy consequences of size differences",
"final Topic16 target profile"
],
"HUMAN_FEEDBACK_HOOKS": [
"SCALE_SUBJECT_SHOULD_BE_INCLUDED",
"SCALE_SUBJECT_SHOULD_BE_EXCLUDED",
"ELIGIBILITY_CONFLICT_REAL",
"ELIGIBILITY_CONFLICT_SHOULD_RESOLVE",
"MEASURE_CHANNEL_WRONG",
"VISIBLE_AREA_PREFERRED",
"BBOX_AREA_PROXY_PREFERRED",
"WIDTH_PREFERRED",
"HEIGHT_PREFERRED",
"MAX_EXTENT_PREFERRED",
"MIN_EXTENT_PREFERRED",
"TEXT_EM_HEIGHT_PREFERRED",
"STROKE_WIDTH_PREFERRED",
"EXPLICIT_SCALAR_SEMANTICS_WRONG",
"MEASUREMENT_METHOD_WRONG",
"REFERENCE_CONTEXT_WRONG",
"PAIR_SHOULD_EXIST",
"PAIR_SHOULD_NOT_EXIST",
"PAIR_BINDING_WRONG",
"RELATION_SET_TOO_LARGE",
"RELATION_SET_TOO_SMALL",
"NEAR_EQUAL_FEELS_TOO_CLOSE",
"NEAR_EQUAL_FEELS_DISTINCT_ENOUGH",
"SIZE_DIFFERENCE_FEELS_TOO_STRONG",
"SIZE_DIFFERENCE_FEELS_TOO_WEAK"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"module execution order is not priority",
"eligibility evidence order is not priority",
"confidence is not conflict priority",
"lexical subject order is not scale rank",
"relation serialization order is not visual priority",
"measurement-binding list order is not preferred-channel priority",
"future reviewed global conflict-priority owner remains authoritative"
],
"LAB_HOOKS": [
"human study: perceived difference versus geometric linear ratio",
"human study: perceived difference versus area ratio",
"compare visible-area and bbox-area proxy judgments",
"study when equal/near-equal sizes feel intentional versus accidental",
"study text-em-height versus generic object-size comparability",
"collect cases where visual mass and geometric size diverge",
"collect cases where semantic importance and geometric size diverge",
"study explicit scale-ladder preferences by style",
"measure agreement on large/medium/small class boundaries"
],
"observation_record": {
"moduleRef": "Compo16.00",
"metricResults": [],
"futurePairwiseRatioRefs": [],
"futureScaleClassRefs": [],
"futureScaleLadderRefs": []
},
"stop_condition": "STOP after 16.00. Do not create 16.01 in this module."
}