Relative visual mass only
Compo4 measures mass. 14.01 only relates it.
Visual mass
Explicit owner-qualified mass descriptors from Compo4.
Ratio layer
Anchor aggregation policy, anchor mass descriptor, secondary-to-dominant ratios and attachments.
Descriptor only
owns_metrics=[]. Ratio is not a vote.
SecondaryWeightMassEvidence
SecondaryWeightMassEvidence {
secondaryWeightMassEvidenceRef,
dominanceScopeRef,
subjectRef,
visualMassDescriptorRef,
visualMassOwnerRef,
visualMassMethodRef,
visualMassContextRef,
snapshotRef,
value,
unit,
confidence,
provenance,
status,
mutationAllowed: false
}
14.01 не пересчитывает occupancy, density, contrast, isolation, overlap или position factors. Он принимает owner-qualified mass evidence.
DominantAnchorMassAggregationPolicy
| Method | Meaning |
|---|---|
| SUM | Сумма visual mass всех observed leaders. |
| MEAN | Средняя visual mass leader set. |
| MAX | Максимальная mass внутри leader set, без объявления semantic primary leader. |
| EXPLICIT_REFERENCE_LEADER | Масса одного явно указанного leader subject. |
DominantAnchorMassAggregationPolicy {
dominantAnchorMassAggregationPolicyRef,
policySourceRef,
policySourceOwnerRef,
method,
explicitReferenceLeaderSubjectRef?,
requiredVisualMassMethodRef,
requiredVisualMassContextRef,
requiredUnit,
provenance,
status,
mutationAllowed: false
}
DominantAnchorMassDescriptor
DominantAnchorMassDescriptor {
dominantAnchorMassDescriptorRef,
dominanceScopeRef,
dominanceAnchorBindingRef,
aggregationPolicyRef,
leaderSubjectRefs[],
leaderMassEvidenceRefs[],
aggregationMethod,
referenceLeaderSubjectRef?,
anchorMass,
unit,
visualMassMethodRef,
visualMassContextRef,
snapshotRef,
confidence,
status,
reasonCode,
mutationAllowed: false
}
SecondaryToDominantWeightRatioDescriptor
SecondaryToDominantWeightRatioDescriptor {
secondaryToDominantWeightRatioDescriptorRef,
dominanceScopeRef,
dominanceAnchorBindingRef,
secondaryCandidateSetRef,
secondaryMassRelationSeedRef,
secondaryCandidateRef,
secondarySubjectRef,
dominantSubjectRefs[],
secondaryMassEvidenceRef,
dominantAnchorMassDescriptorRef,
secondaryMass,
anchorMass,
ratio,
unit: "dimensionless",
confidence,
status,
reasonCode,
mutationAllowed: false
}
SecondaryWeightRatioSet
SecondaryWeightRatioSet {
secondaryWeightRatioSetRef,
dominanceScopeRef,
dominanceAnchorBindingRef,
secondaryCandidateSetRef,
aggregationPolicyRef,
dominantAnchorMassDescriptorRef,
ratioDescriptorRefs[],
secondarySubjectRefs[],
visualMassMethodRef,
visualMassContextRef,
snapshotRef,
status,
reasonCode,
mutationAllowed: false
}
Set считается canonical-comparable только когда все ratio descriptors используют один anchor, одну policy, один mass method/context/unit и один snapshot.
Derived attachments, not mutation
SecondaryMassRelationWeightAttachment {
secondaryMassRelationWeightAttachmentRef,
secondaryMassRelationSeedRef,
secondaryToDominantWeightRatioDescriptorRef,
status,
mutationAllowed: false
}
SecondarySupportSystemWeightAttachment {
secondarySupportSystemWeightAttachmentRef,
secondarySupportSystemSeedRef,
secondaryWeightRatioSetRef,
relationWeightAttachmentRefs[],
status,
mutationAllowed: false
}
Ratios compare only inside the same denominator contract
Undefined ratio is N_A, not zero
| Case | Result |
|---|---|
| Missing leader mass | N_A |
| Missing secondary mass | N_A |
| Method/context/unit/snapshot mismatch | INVALID |
| Reference leader not in anchor | INVALID |
| anchorMass = 0 | N_A |
| secondaryMass = 0, anchorMass > 0 | OK + ratio 0 |
| Incomplete ratio set | N_A; no partial silent set |
Mass method, context and policy are identity-bearing
Ratio is not interpretation
ratio≈1 → competing; ratio>1 → inversion; higher ratio → better support; MAX → semantic primary; anchorMass=0 → infinity; implicit SUM.
Compo4 owns mass; 14.00 owns role relation; explicit denominator policy; ratio 0 != N_A; no score; no foreign mutation.
Topic14 chain
| Owner | Role |
|---|---|
| Compo4 | Visual mass descriptors and source calculations. |
| 14.00 | Secondary role/support intent/candidates/relation seeds. |
| 14.01 | Anchor mass aggregation and secondary-to-dominant mass ratios. |
| 14.02 | Spatial counterweight and semantic support. |
| 14.03 | Competition detection / subordination. |
| 14.04 | Scoring, candidates and final tests. |
| Compo18 | Generic hierarchy/subordination graph remains separate. |
Bad denominator evidence → owner-qualified request
SecondaryWeightCorrectionRequest {
requestRef,
targetOwnerRef,
reasonCode,
subjectRef?,
evidenceRefs[],
suggestedAction,
status,
mutationAllowed: false
}
Request may target a Compo4 mass-evidence owner or the explicit anchor-policy owner. 14.01 never edits those artifacts directly.
CANON → LAB → DATA → IDEAS
Visual laboratory hook
14.01 regression suite
Tests cover foreign mass evidence, exact context/method/unit/snapshot compatibility, SUM/MEAN/MAX/explicit-reference aggregation, multi-leader anchors, zero denominator, zero secondary mass, ratio set completeness, no score, no competition inference and immutable attachments.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 14.01",
"name": "secondary_to_dominant_weight_ratios",
"version": "1.0-canonical",
"canonical_main_title": "Secondary-to-dominant weight ratios",
"topic": "14_ВТОРИЧНЫЕ_МАССЫ_И_ПОДДЕРЖКА",
"scope": "EXPLICIT_VISUAL_MASS_EVIDENCE_ADAPTER_DOMINANT_ANCHOR_AGGREGATION_AND_SECONDARY_TO_DOMINANT_RATIO_DESCRIPTORS_ONLY",
"main_topic_contract": {
"topic_title": "Вторичные массы и поддержка",
"topic_goal": "Описывает вторичные массы как поддержку доминанты: counterweight, spatial support, echo/repetition и контроль конкуренции с главным элементом.",
"expected_output": "SecondaryMassRelation[], support score, competition flags",
"planned_files": [
"14.00 Secondary role system",
"14.01 Secondary-to-dominant weight ratios",
"14.02 Spatial counterweight and semantic support",
"14.03 Competition detection / subordination",
"14.04 Scoring, candidates and tests"
]
},
"ownership": {
"owner": "Compo14.01",
"owns": [
"SecondaryWeightMassEvidence adapter",
"DominantAnchorMassAggregationMethod taxonomy",
"DominantAnchorMassAggregationPolicy",
"DominantAnchorMassDescriptor",
"SecondaryToDominantWeightRatioDescriptor",
"SecondaryWeightRatioSet",
"SecondaryMassRelationWeightAttachment",
"SecondarySupportSystemWeightAttachment",
"same-context ratio comparability contract",
"identity/status/provenance rules for Topic14 weight-ratio layer",
"non-mutating correction request for mass-source / aggregation-policy evidence"
],
"does_not_own": [
"visual mass calculation — Compo4",
"silhouette occupancy / density / contextual visual-mass factors — Compo4",
"secondary role evidence / support intent / candidate set / relation seed — Compo14.00",
"observed dominance / focal ranking / leader-set identity — Compo13",
"spatial counterweight measurement — Compo14.02",
"semantic support evaluation — Compo14.02",
"competition detection / subordination — Compo14.03",
"support scoring / candidate generation / final tests — Compo14.04",
"generic hierarchy/subordination graph — Compo18",
"global balance ownership",
"foreign visual-mass mutation",
"foreign geometry or layout mutation"
]
},
"consumes": [
"valid Compo14.00 DominanceAnchorBinding",
"valid Compo14.00 SecondaryCandidateSet",
"valid Compo14.00 SecondaryMassRelationSeed[]",
"explicit owner-qualified visual-mass evidence for dominant and secondary subjects",
"explicit DominantAnchorMassAggregationPolicy"
],
"provides": [
"SecondaryWeightMassEvidence",
"DominantAnchorMassAggregationMethod",
"DominantAnchorMassAggregationPolicy",
"DominantAnchorMassDescriptor",
"SecondaryToDominantWeightRatioDescriptor",
"SecondaryWeightRatioSet",
"SecondaryMassRelationWeightAttachment",
"SecondarySupportSystemWeightAttachment",
"Topic14.01 observation record"
],
"owns_metrics": [],
"metric_ownership_note": "14.01 owns numeric ratio descriptors, but no MetricResult score, no support score, no competition score and no independent numeric vote.",
"mass_evidence_schema": {
"secondaryWeightMassEvidenceRef": "stable identity",
"dominanceScopeRef": "scope",
"subjectRef": "dominant or secondary subject",
"visualMassDescriptorRef": "foreign Compo4-owned descriptor reference",
"visualMassOwnerRef": "must identify the foreign visual-mass owner",
"visualMassMethodRef": "explicit mass method/model identity",
"visualMassContextRef": "explicit comparison context",
"snapshotRef": "exact scene snapshot lineage",
"value": "finite scalar >=0 when status OK",
"unit": "explicit unit or normalized mass unit",
"confidence": "finite 0..1; evidence confidence only",
"provenance": "canonical provenance class",
"status": "OK|N_A|INVALID",
"mutationAllowed": false,
"firewall": "14.01 reads foreign visual-mass evidence and never recalculates or mutates Compo4 state"
},
"anchor_aggregation_method_taxonomy": {
"SUM": "sum masses of all observed leader subjects in the anchor set",
"MEAN": "arithmetic mean of all observed leader masses",
"MAX": "maximum leader mass without selecting a semantic primary leader",
"EXPLICIT_REFERENCE_LEADER": "use one explicitly named leader subject from the observed anchor set; allowed only when policy declares it"
},
"anchor_aggregation_policy_schema": {
"dominantAnchorMassAggregationPolicyRef": "stable identity",
"policySourceRef": "explicit source",
"policySourceOwnerRef": "owner",
"method": "SUM|MEAN|MAX|EXPLICIT_REFERENCE_LEADER",
"explicitReferenceLeaderSubjectRef": "required only for EXPLICIT_REFERENCE_LEADER; otherwise null",
"requiredVisualMassMethodRef": "exact mass method/model identity",
"requiredVisualMassContextRef": "exact comparison context",
"requiredUnit": "exact unit",
"provenance": "canonical provenance class",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no universal SUM/MEAN/MAX/reference-leader rule"
},
"dominant_anchor_mass_descriptor_schema": {
"dominantAnchorMassDescriptorRef": "stable identity",
"dominanceScopeRef": "scope",
"dominanceAnchorBindingRef": "14.00 anchor",
"aggregationPolicyRef": "explicit policy",
"leaderSubjectRefs": "exact leader subject set",
"leaderMassEvidenceRefs": "one usable evidence ref per leader",
"aggregationMethod": "copied policy method",
"referenceLeaderSubjectRef": "only for explicit-reference method",
"anchorMass": "finite >=0 when OK",
"unit": "exact common unit",
"visualMassMethodRef": "exact common method",
"visualMassContextRef": "exact common context",
"snapshotRef": "exact common snapshot",
"confidence": "minimum leader mass-evidence confidence",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "anchor aggregation is a local ratio denominator contract, not a redefinition of dominance or visual mass"
},
"weight_ratio_descriptor_schema": {
"secondaryToDominantWeightRatioDescriptorRef": "stable identity",
"dominanceScopeRef": "scope",
"dominanceAnchorBindingRef": "anchor",
"secondaryCandidateSetRef": "candidate set",
"secondaryMassRelationSeedRef": "14.00 relation seed",
"secondaryCandidateRef": "candidate",
"secondarySubjectRef": "subject",
"dominantSubjectRefs": "full anchor subject set",
"secondaryMassEvidenceRef": "usable mass evidence",
"dominantAnchorMassDescriptorRef": "denominator descriptor",
"secondaryMass": "finite >=0",
"anchorMass": "finite >0 for ratio applicability",
"ratio": "secondaryMass / anchorMass; finite >=0 when OK",
"unit": "dimensionless",
"confidence": "minimum of secondary evidence and anchor descriptor confidence",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "ratio is a descriptor of relative visual mass only; it is not support quality, hierarchy rank, competition flag or score"
},
"weight_ratio_set_schema": {
"secondaryWeightRatioSetRef": "stable identity",
"dominanceScopeRef": "scope",
"dominanceAnchorBindingRef": "anchor",
"secondaryCandidateSetRef": "candidate set",
"aggregationPolicyRef": "policy",
"dominantAnchorMassDescriptorRef": "shared anchor denominator",
"ratioDescriptorRefs": "one ratio descriptor per secondary relation seed",
"secondarySubjectRefs": "candidate subjects",
"visualMassMethodRef": "shared exact method",
"visualMassContextRef": "shared exact context",
"snapshotRef": "shared snapshot",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "ratio set is comparable only inside the exact same anchor/policy/mass context/snapshot; cross-context ratios are not silently compared"
},
"relation_weight_attachment_schema": {
"secondaryMassRelationWeightAttachmentRef": "stable identity",
"secondaryMassRelationSeedRef": "exact 14.00 relation seed",
"secondaryToDominantWeightRatioDescriptorRef": "exact ratio descriptor",
"status": "OK",
"mutationAllowed": false,
"firewall": "attachment derives from relation seed; it never mutates weightRatioDescriptorRef on the 14.00 seed"
},
"system_weight_attachment_schema": {
"secondarySupportSystemWeightAttachmentRef": "stable identity",
"secondarySupportSystemSeedRef": "exact 14.00 system seed",
"secondaryWeightRatioSetRef": "exact ratio set",
"relationWeightAttachmentRefs": "canonical set",
"status": "OK",
"mutationAllowed": false,
"firewall": "attachment derives from the 14.00 system seed; it never mutates weightRatioSetRef in place"
},
"ratio_formula": {
"formula": "ratio = secondaryMass / anchorMass",
"domain": "[0,+∞) when anchorMass > 0",
"zero": "ratio 0 is a valid OK descriptor when secondaryMass=0 and anchorMass>0; ratio 0 != N_A",
"denominatorZero": "anchorMass=0 => N_A because the ratio is undefined; do not substitute 0, infinity or 1",
"negativeMass": "INVALID upstream evidence",
"firewall": "ratio is not clamped to 0..1 and no universal preferred ratio is introduced"
},
"comparability_contract": {
"requires": [
"same dominanceScopeRef",
"same dominanceAnchorBindingRef",
"same aggregationPolicyRef",
"same visualMassMethodRef",
"same visualMassContextRef",
"same unit",
"same snapshotRef"
],
"allows": "within-set ratio ordering/comparison only",
"forbids": [
"cross-anchor ratio comparison",
"cross-policy ratio comparison",
"cross-mass-method ratio comparison",
"cross-context ratio comparison",
"cross-snapshot ratio comparison",
"automatic support-quality ordering from ratio alone"
]
},
"status_policy": {
"missingLeaderMassEvidence": "N_A",
"missingSecondaryMassEvidence": "N_A",
"leaderMassContextMismatch": "INVALID",
"secondaryMassContextMismatch": "INVALID",
"visualMassMethodMismatch": "INVALID",
"unitMismatch": "INVALID",
"snapshotMismatch": "INVALID",
"explicitReferenceLeaderMissingFromAnchor": "INVALID",
"anchorMassZero": "N_A",
"secondaryMassZero": "valid OK ratio 0 when anchorMass>0",
"ratioSetIncomplete": "N_A; no silent partial set",
"N_A_not_zero": true
},
"critical_firewalls": [
"visual mass ownership remains Compo4",
"14.01 does not recalculate visual mass",
"secondary role ownership remains Compo14.00",
"dominance ownership remains Compo13",
"weight ratio != support score",
"weight ratio != competition flag",
"weight ratio != hierarchy rank",
"weight ratio != subordination result",
"weight ratio != independent numeric vote",
"ratio 0 != N_A",
"anchorMass 0 => N_A, not infinity",
"ratio is not clamped to 0..1",
"no universal preferred weight ratio",
"no universal secondary-mass threshold",
"no implicit SUM anchor aggregation",
"no implicit MEAN anchor aggregation",
"no implicit MAX anchor aggregation",
"co-dominant anchor set does not require choosing one primary leader",
"EXPLICIT_REFERENCE_LEADER requires explicit policy",
"MAX aggregation != semantic primary leader selection",
"SUM aggregation != global balance",
"anchor aggregation method != global rule priority",
"mass evidence confidence != visual mass",
"mass evidence confidence != support strength",
"candidate count != anchor mass",
"candidate count != support strength",
"cross-context ratios are incomparable",
"cross-policy ratios are incomparable",
"cross-anchor ratios are incomparable",
"cross-snapshot ratios are incomparable",
"higher ratio != better support",
"lower ratio != better support",
"ratio near 1 != automatically competing",
"ratio above 1 != automatically inversion",
"competition detection / subordination is deferred to 14.03",
"ratio target scoring is deferred to 14.04",
"spatial counterweight and semantic support are deferred to 14.02",
"14.01 owns no MetricResult",
"14.01 owns no independent numeric vote",
"relation attachment != relation-seed mutation",
"system attachment != system-seed mutation",
"generic hierarchy/subordination graph remains Compo18 territory",
"global balance is not owned by 14.01",
"local != global",
"descriptor != score",
"N_A != 0",
"module execution order != rule priority",
"correction request != foreign mutation",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"identity_policy": {
"secondaryWeightMassEvidenceRef": "hash(scope, subject, visualMassDescriptorRef, owner, method, context, snapshot, value, unit, provenance)",
"dominantAnchorMassAggregationPolicyRef": "hash(source/owner, method, explicit reference leader?, required mass method/context/unit, provenance)",
"dominantAnchorMassDescriptorRef": "hash(scope, anchor, policy, canonical leader evidence refs, aggregation method, resulting anchor mass, method/context/unit/snapshot)",
"secondaryToDominantWeightRatioDescriptorRef": "hash(scope, anchor, candidate set, relation seed, secondary subject, secondary evidence, anchor descriptor, ratio)",
"secondaryWeightRatioSetRef": "hash(scope, anchor, candidate set, policy, anchor descriptor, canonical ratio refs, method/context/unit/snapshot)",
"secondaryMassRelationWeightAttachmentRef": "hash(relation seed, ratio descriptor)",
"secondarySupportSystemWeightAttachmentRef": "hash(system seed, ratio set, canonical relation attachments)",
"excluded_from_identity": [
"display label",
"display color",
"free-form comment"
]
},
"correction_request_schema": {
"requestRef": "stable identity",
"targetOwnerRef": "visual-mass source owner or aggregation-policy owner",
"reasonCode": "MASS_EVIDENCE_WRONG|MASS_METHOD_WRONG|MASS_CONTEXT_WRONG|MASS_UNIT_WRONG|MASS_SNAPSHOT_WRONG|ANCHOR_AGGREGATION_POLICY_WRONG|REFERENCE_LEADER_WRONG",
"subjectRef": "subject or null for anchor-policy issue",
"evidenceRefs": "canonical refs",
"suggestedAction": "non-mutating review request",
"status": "OPEN|INVALID",
"mutationAllowed": false
},
"deferred_downstream": {
"14.02": [
"spatial counterweight geometry",
"spatial support measurement",
"semantic support evaluation",
"echo/repetition support measurement where geometry/content evidence is required"
],
"14.03": [
"competition detection",
"subordination violations",
"secondary-over-dominant inversion flags",
"interpretation of ratios as competitive/noncompetitive only under explicit policy"
],
"14.04": [
"target ratio profiles / ratio fit",
"secondary support composite score",
"candidate generation/variation",
"final correction synthesis",
"consolidated Topic14 tests"
]
},
"IDEAS_REFS": [
"IDEA-01 full human test after all 72 topics; collect perceived secondary/dominant weight relationships",
"IDEA-02 semantics needed before placement; mass ratio remains geometric/visual and does not infer semantic importance",
"IDEA-03 explicit rule priorities; anchor aggregation policy never becomes hidden global priority",
"IDEA-04 collect structured data for future composition model",
"IDEA-05 preserve reasons for human corrections",
"IDEA-06 structured machine-readable layer for website",
"IDEA-07 graphics-for-post-text research remains downstream/separate"
],
"DATA_CAPTURE": [
"sceneRef",
"dominanceScopeRef",
"dominanceAnchorBindingRef",
"secondaryCandidateSetRef",
"secondarySupportSystemSeedRef",
"secondaryMassRelationSeedRefs[]",
"dominantAnchorMassAggregationPolicyRef",
"aggregationMethod",
"referenceLeaderSubjectRef",
"leaderMassEvidenceRefs[]",
"secondaryMassEvidenceRefs[]",
"dominantAnchorMassDescriptorRef",
"anchorMass",
"secondaryToDominantWeightRatioDescriptorRefs[]",
"ratiosBySecondarySubject",
"visualMassMethodRef",
"visualMassContextRef",
"unit",
"snapshotRef",
"humanReasonCodes[]"
],
"DEFERRED_SEMANTIC_INPUTS": [
"semantic importance of dominant versus secondary subjects",
"desired support strength",
"desired secondary-to-dominant ratio bands",
"whether larger/smaller ratio is desirable in a specific style",
"future global hierarchy priority refs"
],
"HUMAN_FEEDBACK_HOOKS": [
"VISUAL_MASS_EVIDENCE_WRONG",
"SECONDARY_MASS_TOO_HIGH",
"SECONDARY_MASS_TOO_LOW",
"DOMINANT_ANCHOR_MASS_TOO_HIGH",
"DOMINANT_ANCHOR_MASS_TOO_LOW",
"ANCHOR_AGGREGATION_METHOD_WRONG",
"REFERENCE_LEADER_WRONG",
"WEIGHT_RATIO_TOO_HIGH",
"WEIGHT_RATIO_TOO_LOW",
"WEIGHT_RATIO_SHOULD_NOT_IMPLY_SUPPORT_QUALITY",
"CO_DOMINANT_ANCHOR_AGGREGATION_WRONG",
"MASS_CONTEXT_MISMATCH",
"MASS_METHOD_MISMATCH",
"MASS_UNIT_MISMATCH",
"MASS_SNAPSHOT_MISMATCH"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"module execution order is not priority",
"mass evidence confidence is not factor weight or conflict priority",
"aggregation method is local denominator policy, not global hierarchy priority",
"MAX does not identify a semantic primary leader",
"ratio ordering does not become support-quality ordering",
"future reviewed global conflict-priority owner remains authoritative"
],
"LAB_HOOKS": [
"human study: perceived secondary weight versus measured ratio",
"compare SUM/MEAN/MAX anchor aggregation for multi-leader scenes without declaring a universal winner",
"test whether ratio near 1 is actually perceived as competition",
"test ratio sensitivity across visual-mass methods/contexts",
"collect cases where higher ratio improves support and cases where it harms support",
"validate explicit-reference-leader policy only in scenes where users intentionally name one reference leader"
],
"observation_record": {
"moduleRef": "Compo14.01",
"metricResults": [],
"ratioDescriptorRefs": [],
"spatialSemanticSupportRefs": [],
"competitionSubordinationRefs": [],
"secondaryEvaluationRefs": []
},
"stop_condition": "STOP after 14.01. Do not create 14.02 in this module."
}