COMPO · 14.01 · SECONDARY / DOMINANT WEIGHT RATIOS

Measure the ratio.
Do not judge it yet.

14.01 берёт visual-mass evidence у его настоящего owner — Compo4 — и строит отношение массы каждого secondary candidate к observed dominant-anchor set из 14.00. Способ агрегировать несколько лидеров всегда задаётся явно. Полученный ratio — descriptor, а не support score, competition flag или hierarchy rank.

ModuleCompo 14.01
Mass ownerCompo4
Anchorexplicit policy
Ratio0..∞
Metricsnone
NextSTOP

Relative visual mass only

00 / contract
Compo4 visual-mass evidence + 14.00 observed dominant anchor + explicit anchor aggregation policy + 14.00 secondary relation seeds → DominantAnchorMassDescriptor → SecondaryToDominantWeightRatioDescriptor[] → SecondaryWeightRatioSet NOT YET: spatial / semantic support → 14.02 competition/subordination → 14.03 ratio target fit / support score → 14.04

Compo4 measures mass. 14.01 only relates it.

01 / ownership
CONSUMES

Visual mass

Explicit owner-qualified mass descriptors from Compo4.

OWNS

Ratio layer

Anchor aggregation policy, anchor mass descriptor, secondary-to-dominant ratios and attachments.

NO SCORE

Descriptor only

owns_metrics=[]. Ratio is not a vote.

SecondaryWeightMassEvidence

02 / foreign-owned evidence adapter
SecondaryWeightMassEvidence {
  secondaryWeightMassEvidenceRef,

  dominanceScopeRef,
  subjectRef,

  visualMassDescriptorRef,
  visualMassOwnerRef,

  visualMassMethodRef,
  visualMassContextRef,
  snapshotRef,

  value,
  unit,

  confidence,
  provenance,
  status,

  mutationAllowed: false
}
No visual-mass recalculation.

14.01 не пересчитывает occupancy, density, contrast, isolation, overlap или position factors. Он принимает owner-qualified mass evidence.

DominantAnchorMassAggregationPolicy

03 / explicit denominator semantics
MethodMeaning
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
}
No default. SUM != universal law MEAN != universal law MAX != primary-leader selection EXPLICIT_REFERENCE_LEADER: requires exact subject from observed leader set

DominantAnchorMassDescriptor

04 / denominator artifact
DominantAnchorMassDescriptor {
  dominantAnchorMassDescriptorRef,

  dominanceScopeRef,
  dominanceAnchorBindingRef,

  aggregationPolicyRef,

  leaderSubjectRefs[],
  leaderMassEvidenceRefs[],

  aggregationMethod,
  referenceLeaderSubjectRef?,

  anchorMass,
  unit,

  visualMassMethodRef,
  visualMassContextRef,
  snapshotRef,

  confidence,
  status,
  reasonCode,

  mutationAllowed: false
}
SUM: anchorMass = Σ leaderMass MEAN: anchorMass = mean(leaderMass) MAX: anchorMass = max(leaderMass) EXPLICIT_REFERENCE_LEADER: anchorMass = mass(explicit leader) anchorMass = 0: ratio applicability = N_A never infinity

SecondaryToDominantWeightRatioDescriptor

05 / ratio descriptor
ratio = secondaryMass ───────────── anchorMass domain: [0, +∞) 0: valid when secondaryMass = 0 AND anchorMass > 0 anchorMass = 0: N_A No clamp to 0..1. No preferred ratio in 14.01.
SecondaryToDominantWeightRatioDescriptor {
  secondaryToDominantWeightRatioDescriptorRef,

  dominanceScopeRef,
  dominanceAnchorBindingRef,
  secondaryCandidateSetRef,

  secondaryMassRelationSeedRef,
  secondaryCandidateRef,
  secondarySubjectRef,

  dominantSubjectRefs[],

  secondaryMassEvidenceRef,
  dominantAnchorMassDescriptorRef,

  secondaryMass,
  anchorMass,
  ratio,

  unit: "dimensionless",

  confidence,
  status,
  reasonCode,

  mutationAllowed: false
}

SecondaryWeightRatioSet

06 / same-context matrix
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

07 / immutable chain
SecondaryMassRelationWeightAttachment {
  secondaryMassRelationWeightAttachmentRef,

  secondaryMassRelationSeedRef,
  secondaryToDominantWeightRatioDescriptorRef,

  status,
  mutationAllowed: false
}

SecondarySupportSystemWeightAttachment {
  secondarySupportSystemWeightAttachmentRef,

  secondarySupportSystemSeedRef,
  secondaryWeightRatioSetRef,
  relationWeightAttachmentRefs[],

  status,
  mutationAllowed: false
}

Ratios compare only inside the same denominator contract

08 / comparability
Comparable only when all match: dominanceScopeRef dominanceAnchorBindingRef aggregationPolicyRef visualMassMethodRef visualMassContextRef unit snapshotRef Forbidden: cross-anchor comparison cross-policy comparison cross-context comparison cross-snapshot comparison ratio → automatic support-quality ordering

Undefined ratio is N_A, not zero

09 / status semantics
CaseResult
Missing leader massN_A
Missing secondary massN_A
Method/context/unit/snapshot mismatchINVALID
Reference leader not in anchorINVALID
anchorMass = 0N_A
secondaryMass = 0, anchorMass > 0OK + ratio 0
Incomplete ratio setN_A; no partial silent set

Mass method, context and policy are identity-bearing

10 / deterministic lineage
massEvidenceRef = hash( scope + subject + foreign visualMassDescriptorRef / owner + method + context + snapshot + value + unit + provenance ) anchorPolicyRef = hash( source/owner + method + explicit reference leader? + required method/context/unit + provenance ) anchorMassDescriptorRef = hash( scope + anchor + policy + leader evidence refs + anchorMass + method/context/unit/snapshot ) ratioDescriptorRef = hash( scope + anchor + candidate set + relation seed + secondary evidence + anchor descriptor + ratio )

Ratio is not interpretation

11 / firewalls
Forbidden shortcuts

ratio≈1 → competing; ratio>1 → inversion; higher ratio → better support; MAX → semantic primary; anchorMass=0 → infinity; implicit SUM.

Preserved

Compo4 owns mass; 14.00 owns role relation; explicit denominator policy; ratio 0 != N_A; no score; no foreign mutation.

Topic14 chain

12 / integration
OwnerRole
Compo4Visual mass descriptors and source calculations.
14.00Secondary role/support intent/candidates/relation seeds.
14.01Anchor mass aggregation and secondary-to-dominant mass ratios.
14.02Spatial counterweight and semantic support.
14.03Competition detection / subordination.
14.04Scoring, candidates and final tests.
Compo18Generic hierarchy/subordination graph remains separate.

Bad denominator evidence → owner-qualified request

13 / correction
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

14 / mandatory hooks
IDEAS_REFS[]7 current R&D directions retained.
DATA_CAPTURE[]mass evidence, anchor policy, denominator and ratios.
DEFERRED_SEMANTIC_INPUTS[]desired ratio and support meaning remain downstream.
HUMAN_FEEDBACK_HOOKS[]mass/ratio/policy corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]aggregation method is not global priority.
LAB_HOOKS[]ratio perception studies.

Visual laboratory hook

15 / same mass evidence, different denominator policy
SECONDARY / DOMINANT WEIGHT RATIO LEADER A LEADER B SECONDARY C ratio denominator SUM / MEAN / MAX / EXPLICIT_REFERENCE_LEADER — policy must be explicit. Ratio itself does not say whether C supports, competes or inverts the hierarchy. competition interpretation → 14.03 · scoring → 14.04

14.01 regression suite

16 / deterministic tests

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.

Tests not run yet.

DATA FOR LAYOUT ENGINE

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