COMPO · 14.00 · SECONDARY ROLE SYSTEM

Support is a role.
Not a leftover.

14.00 создаёт корневую модель вторичных масс относительно уже измеренной доминанты Topic13. Вторичный элемент появляется только из explicit role evidence и support intent. Любой «не главный» объект не становится автоматически secondary, а co-dominant scene не сводится насильно к одному лидеру.

ModuleCompo 14.00
Roleexplicit
Dominanceconsume only
Relationsseed only
Metricsnone
NextSTOP

Secondary is explicit, relational and local

00 / contract

Topic14 begins only after Topic13 has supplied an observed leader set. 14.00 does not compute the dominant again; it binds to those leaders and asks which other subjects are explicitly allowed to participate as support.

Topic13 observed leaders + explicit secondary-role evidence + explicit support intent + explicit candidate-set policy → SecondaryCandidateSet → SecondaryMassRelationSeed[] → SecondarySupportSystemSeed NOT YET: weight ratios → 14.01 spatial/semantic support → 14.02 competition/subordination→ 14.03 support scoring → 14.04

Root model only

01 / ownership
OWNS

Role system

Role evidence, role resolution, support intent and secondary candidate set.

OWNS

Relation identity

Immutable relation seeds between one secondary candidate and an observed dominant anchor set.

DEFERS

14.01–14.04

Ratios, spatial/semantic measurement, competition and scoring stay downstream.

No MetricResult.

owns_metrics=[]. 14.00 creates descriptors and relation roots only.

SecondaryRoleKind

02 / eligibility role
RoleMeaning
SECONDARY_CANDIDATEExplicit source allows subject into the secondary-support pool.
NON_SECONDARYExplicit source excludes subject from that pool.
UNSPECIFIEDExplicit source makes no commitment. This is not missing evidence.
SecondaryRoleEvidence {
  secondaryRoleEvidenceRef,

  dominanceScopeRef,
  subjectRef,

  roleKind,

  evidenceSourceRef,
  evidenceSourceOwnerRef,

  confidence,
  provenance,
  status,
  mutationAllowed: false
}

SecondaryRoleResolution {
  secondaryRoleResolutionRef,

  dominanceScopeRef,
  subjectRef,

  evidenceRefs[],
  resolvedRoleKind,

  confidence,
  status,
  reasonCode,
  mutationAllowed: false
}
no evidence → N_A all usable evidence agrees → OK + exact role usable evidence disagrees → OK + CONFLICT confidence cannot break conflict

Support function must be declared

03 / intent taxonomy
Function14.00 meaning
COUNTERWEIGHTIntent only. Weight ratio is deferred.
SPATIAL_SUPPORTIntent only. Spatial measurement is deferred.
ECHO_REPETITIONIntent to echo/repeat; quality is not measured here.
SEMANTIC_SUPPORTIntent only; semantic support evaluation is deferred.
GENERAL_SUPPORTExplicit generic support without claiming a specialized mechanism.
SecondarySupportIntent {
  secondarySupportIntentRef,

  dominanceScopeRef,
  subjectRef,

  functionKinds[],

  intentSourceRef,
  intentSourceOwnerRef,

  semanticIntentRefs[],

  provenance,
  status,
  mutationAllowed: false
}
No inference from appearance.

Large, isolated, repeated or nearby objects do not acquire support intent automatically.

DominanceAnchorBinding

04 / consume Topic13

The anchor can contain one or several observed leaders. Co-dominance is preserved rather than collapsed to a forced single leader.

DominanceAnchorBinding {
  dominanceAnchorBindingRef,

  dominanceScopeRef,

  focalRankingRef,
  competitionDescriptorRef,

  leaderCandidateRefs[],
  leaderSubjectRefs[],
  leaderCount,

  observedClassification,

  status,
  reasonCode,
  mutationAllowed: false
}
competition.leaderCandidateRefs must resolve through exact focalRanking.rankEntries multiple leaders: VALID leader missing from ranking: INVALID empty leader set: N_A 14.00: does not re-rank does not select a preferred leader does not change observed classification

SecondaryCandidateSetPolicy

05 / explicit inclusion
SecondaryCandidateSetPolicy {
  secondaryCandidateSetPolicyRef,

  policySourceRef,
  policySourceOwnerRef,

  includedRoleKinds[],
  requireSupportIntent,

  maxCandidates,

  provenance,
  status,
  mutationAllowed: false
}
includedRoleKinds: non-empty subset of SECONDARY_CANDIDATE UNSPECIFIED NON_SECONDARY: never allowed CONFLICT: never allowed maxCandidates: 1..4096 implementation safety bound not a composition recommendation No default: "all non-dominants are secondary"

SecondaryCandidateSet

06 / bounded explicit pool
SecondaryCandidate {
  secondaryCandidateRef,

  dominanceScopeRef,
  dominanceAnchorBindingRef,

  subjectRef,

  secondaryRoleResolutionRef,
  resolvedRoleKind,

  secondarySupportIntentRef?,
  functionKinds[],

  status,
  mutationAllowed: false
}

SecondaryCandidateSet {
  secondaryCandidateSetRef,

  dominanceScopeRef,
  dominanceAnchorBindingRef,
  secondaryCandidateSetPolicyRef,

  candidateRefs[],
  subjectRefs[],
  candidates[],

  excludedDominantSubjectRefs[],

  status,
  reasonCode,
  mutationAllowed: false
}
candidate subject: in scope AND not in leaderSubjectRefs AND role explicitly allowed AND not NON_SECONDARY AND not CONFLICT AND support intent exists when policy requires it empty eligible set: N_A != support score 0 overflow: N_A no truncation

SecondaryMassRelationSeed

07 / one secondary ↔ one anchor set

To avoid a false Cartesian model, one relation seed points from one secondary candidate to the full observed dominant anchor set.

SecondaryMassRelationSeed {
  secondaryMassRelationSeedRef,

  dominanceScopeRef,
  dominanceAnchorBindingRef,
  secondaryCandidateSetRef,

  secondaryCandidateRef,
  secondarySubjectRef,

  dominantSubjectRefs[],
  functionKinds[],

  weightRatioDescriptorRef: null,
  spatialSemanticSupportRef: null,
  competitionSubordinationRef: null,
  secondaryEvaluationRef: null,

  status,
  mutationAllowed: false
}
No pair explosion.

A co-dominant anchor of A+B with secondary C produces one relation seed C→{A,B}, not arbitrary C→A and C→B votes.

SecondarySupportSystemSeed

08 / immutable root envelope
SecondarySupportSystemSeed {
  secondarySupportSystemSeedRef,

  dominanceScopeRef,
  dominanceAnchorBindingRef,
  secondaryCandidateSetRef,

  secondaryMassRelationSeedRefs[],

  dominantSubjectRefs[],
  secondarySubjectRefs[],

  weightRatioSetRef: null,
  spatialSemanticSupportSetRef: null,
  competitionSubordinationSetRef: null,
  secondaryEvaluationSetRef: null,

  status,
  mutationAllowed: false
}

Downstream modules attach derived artifacts. They never rewrite the root seed in place.

Role, intent and anchor are identity-bearing

09 / deterministic lineage
roleEvidenceRef = hash( scope + subject + role + source + owner + provenance ) supportIntentRef = hash( scope + subject + canonical function set + source + owner + canonical semantic refs + provenance ) dominanceAnchorBindingRef = hash( scope + Topic13 ranking + Topic13 competition descriptor + canonical leader candidate/subject refs + observed classification ) secondaryCandidateSetRef = hash( scope + anchor + policy + canonical candidate refs ) relationSeedRef = hash( scope + anchor + candidate set + secondary candidate + full dominant subject set + canonical function set )

N_A is absence of applicability/evidence, not zero support

10 / status semantics
CaseResult
No role evidenceN_A
Explicit UNSPECIFIEDOK + UNSPECIFIED
Conflicting role evidenceOK + CONFLICT
No observed dominant leadersN_A
Leader cannot map through rankingINVALID
No eligible secondary candidatesN_A
Candidate overflowN_A, no truncation

A secondary role is not a hierarchy score

11 / firewalls
Forbidden shortcuts

all non-leaders = secondary; rank 2 = secondary; co-dominance → choose one leader; intent → measured support; relation seed → score; confidence → support strength.

Preserved invariants

explicit evidence; explicit intent; multi-leader anchors; bounded candidate set; no Cartesian expansion; N_A != 0; local != global; no foreign mutation.

Topic14 ownership frontier

12 / integration
OwnerCanonical role
Topic13Observed dominance / leader set. 14.00 consumes, never re-owns.
14.00Secondary role evidence, support intent, candidate set and relation root model.
14.01Secondary-to-dominant weight ratios.
14.02Spatial counterweight and semantic support.
14.03Competition detection / subordination.
14.04Scoring, candidates and final Topic14 tests.
Compo18Generic hierarchy/subordination graph remains separate.

Wrong role/intent → owner-qualified request

13 / correction
SecondaryRoleCorrectionRequest {
  requestRef,

  targetOwnerRef,
  reasonCode,
  subjectRef,

  evidenceRefs[],
  suggestedAction,

  status,
  mutationAllowed: false
}

CANON → LAB → DATA → IDEAS

14 / mandatory hooks
IDEAS_REFS[]7 current R&D directions retained.
DATA_CAPTURE[]leaders, roles, intents, candidates and relation seeds.
DEFERRED_SEMANTIC_INPUTS[]meaning and global hierarchy stay explicit/deferred.
HUMAN_FEEDBACK_HOOKS[]support-vs-competition judgments.
CONFLICT_PRIORITY_ASSUMPTIONS[]confidence/order are not priority.
LAB_HOOKS[]secondary-role perception studies.

Visual laboratory hook

15 / anchor + support candidates
OBSERVED DOMINANCE ANCHOR + EXPLICIT SECONDARY ROLE LEADER A SECONDARY B OTHER C explicit support intent B is secondary because evidence + policy say so — not because it is smaller or rank 2. No support score yet · ratios → 14.01 · spatial/semantic → 14.02 · competition → 14.03

14.00 regression suite

16 / deterministic tests

Tests cover role evidence/resolution, explicit UNSPECIFIED vs missing evidence, support-intent validation, multi-leader dominance anchors, candidate policies, dominant-subject exclusion, no truncation, relation seeds, no Cartesian expansion, immutable system seed and Topic13/14.01–14.04 ownership boundaries.

Tests not run yet.

DATA FOR LAYOUT ENGINE

17 / machine contract
{
  "module": "Compo 14.00",
  "name": "secondary_role_system",
  "version": "1.0-canonical",
  "canonical_main_title": "Secondary role system",
  "topic": "14_ВТОРИЧНЫЕ_МАССЫ_И_ПОДДЕРЖКА",
  "scope": "SECONDARY_ROLE_EVIDENCE_RESOLUTION_DOMINANCE_ANCHOR_BINDING_SUPPORT_INTENT_AND_RELATION_ROOT_MODEL_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.00",
    "owns": [
      "SecondaryRoleKind taxonomy",
      "SecondarySupportFunctionKind taxonomy",
      "SecondaryRoleEvidence",
      "SecondaryRoleResolution",
      "SecondarySupportIntent",
      "DominanceAnchorBinding adapter",
      "SecondaryCandidateSetPolicy",
      "SecondaryCandidate",
      "SecondaryCandidateSet",
      "SecondaryMassRelationSeed",
      "SecondarySupportSystemSeed",
      "identity/status/provenance rules for Topic14 root model",
      "non-mutating correction request for secondary-role/support-intent evidence"
    ],
    "does_not_own": [
      "visual mass calculation — Compo4",
      "focal candidate eligibility and dominance measurement — Compo13",
      "attention factors / focal ranking / dominance margin — Compo13",
      "secondary-to-dominant weight ratios — Compo14.01",
      "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",
      "global semantic priority",
      "foreign geometry or layout mutation"
    ]
  },
  "consumes": [
    "explicit Topic13 DominanceScope or equivalent scope identity",
    "valid Compo13.02 FocalRanking",
    "valid Compo13.02 DominanceCompetitionDescriptor",
    "subject mapping carried by ranking entries",
    "explicit SecondaryRoleEvidence[]",
    "explicit SecondarySupportIntent[]"
  ],
  "provides": [
    "SecondaryRoleKind",
    "SecondarySupportFunctionKind",
    "SecondaryRoleEvidence",
    "SecondaryRoleResolution",
    "SecondarySupportIntent",
    "DominanceAnchorBinding",
    "SecondaryCandidateSetPolicy",
    "SecondaryCandidate",
    "SecondaryCandidateSet",
    "SecondaryMassRelationSeed[]",
    "SecondarySupportSystemSeed",
    "Topic14.00 observation record"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "14.00 is descriptor/root-model only. It owns no MetricResult score, no support score, no ratio score, no competition score and no independent numeric vote.",
  "secondary_role_kind_taxonomy": {
    "SECONDARY_CANDIDATE": "explicit source allows subject into the secondary-support candidate pool",
    "NON_SECONDARY": "explicit source excludes subject from the secondary-support pool",
    "UNSPECIFIED": "explicit source makes no secondary-role commitment; distinct from missing role evidence"
  },
  "secondary_support_function_kind_taxonomy": {
    "COUNTERWEIGHT": "explicit intent to support a dominant set through counterbalancing function; actual weight ratio deferred to 14.01 and spatial behavior to 14.02",
    "SPATIAL_SUPPORT": "explicit intent for spatial support; geometry/measurement deferred to 14.02",
    "ECHO_REPETITION": "explicit intent to echo/repeat dominant or composition features; detailed evaluation deferred",
    "SEMANTIC_SUPPORT": "explicit intent to support dominant meaning/content; semantic evaluation deferred to 14.02",
    "GENERAL_SUPPORT": "explicit generic support intent without claiming one of the specialized mechanisms"
  },
  "secondary_role_evidence_schema": {
    "secondaryRoleEvidenceRef": "stable identity",
    "dominanceScopeRef": "scope identity",
    "subjectRef": "subject",
    "roleKind": "SECONDARY_CANDIDATE|NON_SECONDARY|UNSPECIFIED",
    "evidenceSourceRef": "explicit source",
    "evidenceSourceOwnerRef": "owner",
    "confidence": "finite 0..1; evidence confidence only",
    "provenance": "canonical provenance class",
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "confidence does not resolve disagreement and does not mean support strength"
  },
  "secondary_role_resolution_schema": {
    "secondaryRoleResolutionRef": "stable identity",
    "dominanceScopeRef": "scope",
    "subjectRef": "subject",
    "evidenceRefs": "canonical set",
    "resolvedRoleKind": "SECONDARY_CANDIDATE|NON_SECONDARY|UNSPECIFIED|CONFLICT|null",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "confidence": "minimum usable evidence confidence when non-conflicting; null on conflict/N_A",
    "mutationAllowed": false,
    "rules": [
      "no usable evidence => N_A",
      "all usable evidence agrees => OK + that exact role",
      "usable evidence disagrees => OK + CONFLICT",
      "confidence/source order/module order cannot break a role conflict"
    ]
  },
  "secondary_support_intent_schema": {
    "secondarySupportIntentRef": "stable identity",
    "dominanceScopeRef": "scope",
    "subjectRef": "subject",
    "functionKinds": "explicit non-empty canonical set from support-function taxonomy",
    "intentSourceRef": "explicit source",
    "intentSourceOwnerRef": "owner",
    "semanticIntentRefs": "optional opaque refs",
    "provenance": "canonical provenance class",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "support function intent is declared, not inferred from size, position, repetition, semantics, role confidence or dominance state"
  },
  "dominance_anchor_binding_schema": {
    "dominanceAnchorBindingRef": "stable identity",
    "dominanceScopeRef": "scope",
    "focalRankingRef": "Compo13.02 ranking",
    "competitionDescriptorRef": "Compo13.02 observed competition descriptor",
    "leaderCandidateRefs": "exact observed leader refs from competition descriptor",
    "leaderSubjectRefs": "subjects resolved through the exact ranking entries",
    "leaderCount": ">=1",
    "observedClassification": "CO_DOMINANT|COMPETING_DOMINANTS|SINGLE_DOMINANT",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "firewall": "14.00 adapts Topic13 observed leaders but does not re-rank, select, score or reinterpret dominance"
  },
  "secondary_candidate_set_policy_schema": {
    "secondaryCandidateSetPolicyRef": "stable identity",
    "policySourceRef": "explicit source",
    "policySourceOwnerRef": "owner",
    "includedRoleKinds": "explicit non-empty subset of SECONDARY_CANDIDATE|UNSPECIFIED",
    "requireSupportIntent": "boolean",
    "maxCandidates": "integer 1..4096 implementation safety bound",
    "provenance": "canonical provenance class",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "default": "NONE — no implicit rule that every non-dominant subject is secondary"
  },
  "secondary_candidate_schema": {
    "secondaryCandidateRef": "stable identity",
    "dominanceScopeRef": "scope",
    "dominanceAnchorBindingRef": "anchor binding",
    "subjectRef": "candidate subject",
    "secondaryRoleResolutionRef": "role resolution",
    "resolvedRoleKind": "SECONDARY_CANDIDATE|UNSPECIFIED",
    "secondarySupportIntentRef": "explicit support intent ref or null only when policy allows it",
    "functionKinds": "copied canonical intent set or empty when explicitly allowed",
    "status": "OK",
    "mutationAllowed": false,
    "firewall": "secondary candidate != proven supporter; candidate inclusion is not support strength, score or hierarchy rank"
  },
  "secondary_candidate_set_schema": {
    "secondaryCandidateSetRef": "stable identity",
    "dominanceScopeRef": "scope",
    "dominanceAnchorBindingRef": "anchor binding",
    "secondaryCandidateSetPolicyRef": "policy",
    "candidateRefs": "canonical set",
    "subjectRefs": "canonical set",
    "candidates": "one per included subject",
    "excludedDominantSubjectRefs": "exact leader subjects excluded from same-context secondary set",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "firewall": "dominant subjects are not silently reused as secondary subjects within the same dominance-anchor binding"
  },
  "secondary_mass_relation_seed_schema": {
    "secondaryMassRelationSeedRef": "stable identity",
    "dominanceScopeRef": "scope",
    "dominanceAnchorBindingRef": "one observed dominant anchor set, possibly multi-leader",
    "secondaryCandidateSetRef": "candidate set",
    "secondaryCandidateRef": "one secondary candidate",
    "secondarySubjectRef": "subject",
    "dominantSubjectRefs": "entire anchor subject set; no Cartesian pair expansion",
    "functionKinds": "explicit intent set copied from candidate",
    "weightRatioDescriptorRef": null,
    "spatialSemanticSupportRef": null,
    "competitionSubordinationRef": null,
    "secondaryEvaluationRef": null,
    "status": "OK",
    "mutationAllowed": false,
    "firewall": "relation seed declares relation identity and intended support functions only; all quantitative/competitive interpretation stays downstream"
  },
  "secondary_support_system_seed_schema": {
    "secondarySupportSystemSeedRef": "stable identity",
    "dominanceScopeRef": "scope",
    "dominanceAnchorBindingRef": "anchor binding",
    "secondaryCandidateSetRef": "candidate set",
    "secondaryMassRelationSeedRefs": "one relation seed per secondary candidate",
    "dominantSubjectRefs": "anchor set",
    "secondarySubjectRefs": "candidate set",
    "weightRatioSetRef": null,
    "spatialSemanticSupportSetRef": null,
    "competitionSubordinationSetRef": null,
    "secondaryEvaluationSetRef": null,
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "immutable root envelope; downstream modules derive attachments rather than mutate the seed"
  },
  "identity_policy": {
    "secondaryRoleEvidenceRef": "hash(scope, subject, exact role, source, owner, provenance)",
    "secondaryRoleResolutionRef": "hash(scope, subject, canonical evidence refs, resolved role, status)",
    "secondarySupportIntentRef": "hash(scope, subject, canonical function set, source, owner, canonical semantic refs, provenance)",
    "dominanceAnchorBindingRef": "hash(scope, focal ranking, competition descriptor, canonical leader candidate/subject refs, observed classification)",
    "secondaryCandidateSetPolicyRef": "hash(source/owner, included roles, requireSupportIntent, maxCandidates, provenance)",
    "secondaryCandidateRef": "hash(scope, anchor binding, subject, role resolution, support intent?, canonical function set)",
    "secondaryCandidateSetRef": "hash(scope, anchor binding, policy, canonical candidate refs/subject refs)",
    "secondaryMassRelationSeedRef": "hash(scope, anchor binding, candidate set, secondary candidate, dominant subject set, support function set)",
    "secondarySupportSystemSeedRef": "hash(scope, anchor binding, candidate set, canonical relation refs)",
    "excluded_from_identity": [
      "display label",
      "display color",
      "free-form comment"
    ]
  },
  "status_policy": {
    "missingRoleEvidence": "N_A, not UNSPECIFIED and not NON_SECONDARY",
    "explicitUnspecified": "OK + UNSPECIFIED; distinct from missing evidence",
    "roleConflict": "OK + CONFLICT; unresolved without explicit upstream correction",
    "missingRequiredSupportIntent": "N_A when candidate policy requires support intent",
    "noDominanceLeaders": "N_A, not empty proof of support",
    "leaderMappingMismatch": "INVALID",
    "noEligibleSecondaryCandidates": "N_A, not zero support",
    "candidateOverflow": "N_A, no silent truncation",
    "N_A_not_zero": true
  },
  "candidate_build_rules": [
    "candidate subject must belong to dominance scope",
    "candidate subject must not be one of the exact dominant leader subjects in the same anchor binding",
    "resolved role must be explicitly included by the candidate-set policy",
    "NON_SECONDARY is never eligible",
    "CONFLICT is never eligible without upstream correction",
    "if requireSupportIntent=true, valid explicit support intent is required",
    "candidate ordering is canonical serialization only, not hierarchy",
    "overflow returns N_A; no truncation",
    "empty eligible pool returns N_A; it does not mean support score 0"
  ],
  "critical_firewalls": [
    "secondary candidate != proven supporter",
    "secondary candidate != secondary mass score",
    "secondary role evidence != support strength",
    "SECONDARY_CANDIDATE != hierarchy rank 2",
    "SECONDARY_CANDIDATE != second-highest focal rank",
    "NON_SECONDARY != support score 0",
    "UNSPECIFIED != missing evidence",
    "missing role evidence != UNSPECIFIED",
    "role confidence != support strength",
    "role confidence cannot resolve role conflict",
    "non-dominant subject != automatic secondary candidate",
    "every non-leader subject is not automatically secondary",
    "dominant subject is excluded from same-context secondary candidate set",
    "multiple Topic13 leaders are allowed",
    "co-dominant anchor set does not require choosing one primary leader",
    "DominanceAnchorBinding does not re-rank Topic13",
    "DominanceAnchorBinding does not change observed classification",
    "support function intent must be explicit",
    "COUNTERWEIGHT intent != measured weight ratio",
    "SPATIAL_SUPPORT intent != measured spatial support",
    "ECHO_REPETITION intent != measured repetition quality",
    "SEMANTIC_SUPPORT intent != semantic support score",
    "GENERAL_SUPPORT intent != positive support proof",
    "function intent is not inferred from geometry",
    "function intent is not inferred from attentionIndex",
    "function intent is not inferred from dominance margin",
    "function intent is not inferred from semanticIntentRefs",
    "no Cartesian expansion across dominant and secondary subjects",
    "relation seed != support score",
    "relation seed != competition flag",
    "candidate count != support strength",
    "candidate count != numeric vote",
    "14.00 owns no MetricResult",
    "14.00 owns no independent numeric vote",
    "secondary-to-dominant weight ratios are deferred to 14.01",
    "spatial counterweight and semantic support are deferred to 14.02",
    "competition detection / subordination is deferred to 14.03",
    "support scoring / candidate generation / final tests are deferred to 14.04",
    "generic hierarchy/subordination graph remains Compo18 territory",
    "visual mass ownership remains Compo4",
    "dominance ownership remains Compo13",
    "global balance is not owned by 14.00",
    "local != global",
    "descriptor != score",
    "N_A != 0",
    "module execution order != rule priority",
    "correction request != foreign mutation",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "correction_request_schema": {
    "requestRef": "stable identity",
    "targetOwnerRef": "owner whose secondary-role/support-intent evidence should be reviewed",
    "reasonCode": "explicit",
    "subjectRef": "subject",
    "evidenceRefs": "canonical set",
    "suggestedAction": "non-mutating review request",
    "status": "OPEN|INVALID",
    "mutationAllowed": false
  },
  "deferred_downstream": {
    "14.01": [
      "secondary-to-dominant visual-mass / weight ratios",
      "ratio normalization and ratio target profiles",
      "ratio descriptors and ratio fit"
    ],
    "14.02": [
      "spatial counterweight measurement",
      "spatial support geometry",
      "semantic support evaluation",
      "echo/repetition support measurement if geometry/content evidence is required"
    ],
    "14.03": [
      "competition detection",
      "subordination violations",
      "secondary-over-dominant inversion flags",
      "competition/subordination correction requests"
    ],
    "14.04": [
      "secondary support score",
      "secondary candidate generation/variation",
      "composite scoring",
      "final Topic14 correction synthesis",
      "consolidated Topic14 tests"
    ]
  },
  "IDEAS_REFS": [
    "IDEA-01 full human test after all 72 topics; collect whether humans read selected subjects as support rather than competing focus",
    "IDEA-02 semantics needed before placement; semantic support remains explicit/opaque until its canonical owner resolves meaning",
    "IDEA-03 explicit rule priorities; secondary-role evidence and support intent never become 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",
    "focalRankingRef",
    "competitionDescriptorRef",
    "dominanceAnchorBindingRef",
    "leaderCandidateRefs[]",
    "leaderSubjectRefs[]",
    "observedClassification",
    "secondaryRoleEvidenceRefs[]",
    "secondaryRoleResolutionRefs[]",
    "secondarySupportIntentRefs[]",
    "secondaryCandidateSetPolicyRef",
    "secondaryCandidateSetRef",
    "secondaryCandidateRefs[]",
    "secondarySubjectRefs[]",
    "secondaryMassRelationSeedRefs[]",
    "functionKindsBySecondarySubject",
    "humanReasonCodes[]",
    "future weightRatioSetRef",
    "future spatialSemanticSupportSetRef",
    "future competitionSubordinationSetRef",
    "future secondaryEvaluationSetRef"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "meaning/content relationship between dominant and secondary subjects",
    "brand/editorial importance of secondary support",
    "semantic echo versus merely visual repetition",
    "desired amount of counterweight",
    "future global hierarchy priority refs"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "SECONDARY_ROLE_WRONG",
    "SECONDARY_SHOULD_BE_INCLUDED",
    "SECONDARY_SHOULD_BE_EXCLUDED",
    "SECONDARY_ROLE_CONFLICT_WRONG",
    "SUPPORT_FUNCTION_WRONG",
    "COUNTERWEIGHT_INTENT_WRONG",
    "SPATIAL_SUPPORT_INTENT_WRONG",
    "ECHO_REPETITION_INTENT_WRONG",
    "SEMANTIC_SUPPORT_INTENT_WRONG",
    "GENERAL_SUPPORT_TOO_VAGUE",
    "DOMINANCE_ANCHOR_SET_WRONG",
    "CO_DOMINANT_ANCHOR_SHOULD_REMAIN_MULTI_LEADER",
    "SECONDARY_CANDIDATE_SET_WRONG",
    "DOMINANT_SUBJECT_WRONGLY_INCLUDED_AS_SECONDARY"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "module execution order is not priority",
    "role evidence confidence is not conflict priority",
    "secondary candidate serialization order is not hierarchy rank",
    "support function list order is non-semantic",
    "Topic13 leader set is consumed as observed evidence, not rewritten",
    "future reviewed global conflict-priority owner remains authoritative"
  ],
  "LAB_HOOKS": [
    "human classification: support vs competitor vs unrelated subject",
    "human study: one dominant versus co-dominant anchor sets with the same secondary subject",
    "counterweight-intent study without ratio scoring",
    "echo/repetition intent study before downstream quantitative evaluation",
    "semantic-support intent study with opaque semantic refs",
    "candidate-policy sensitivity: explicit SECONDARY_CANDIDATE versus allowed UNSPECIFIED"
  ],
  "observation_record": {
    "moduleRef": "Compo14.00",
    "metricResults": [],
    "weightRatioRefs": [],
    "spatialSemanticSupportRefs": [],
    "competitionSubordinationRefs": [],
    "secondaryEvaluationRefs": []
  },
  "stop_condition": "STOP after 14.00. Do not create 14.01 in this module."
}
VISITS / ...