COMPO · 13.00 · DOMINANT ROLE / FOCAL CANDIDATE MODEL

Candidate first.
Dominant later.

13.00 создаёт корневую модель Topic 13: явный dominance scope, owner-qualified role evidence, разрешение противоречивых role claims и focal candidate set. На этом шаге ещё нет attention factors, focal rank, dominance margin, competing/co-dominant verdicts, target profiles или dominance score.

ModuleCompo 13.00
Roleexplicit evidence
Candidatenot dominant
Rankdeferred
Scorenone
NextSTOP

Dominance is measured later

00 / contract

13.00 does not declare a visual winner. It only defines who is in the measurement domain and why. A subject may be an explicit focal candidate and still lose later when attention factors, rank and dominance margin are evaluated.

SCOPE

Which subjects are being compared?

ROLE

What explicit source says about focal eligibility.

CANDIDATE

Eligible for later measurement, not yet dominant.

NO SCORE

No attention or dominance vote here.

13.00: scope → role evidence → role resolution → focal candidate set → descriptor seed NOT YET: size / contrast / isolation / position focal rank dominance margin competing dominants co-dominants target profile dominance score

Root model only

01 / ownership

13.00 owns the stable envelope and evidence contracts. Every downstream measurement remains with its planned owner.

OWNS

Domain

DominanceScope, role evidence/resolution, candidate policy and focal candidate set.

OWNS

Seed

Immutable descriptor seed that downstream modules derive from without mutating 13.00 state.

DEFERS

13.01–13.04

Attention factors, rank, margin, co-dominance, target profiles and scoring.

Metric ownership.

owns_metrics=[]. Role confidence, candidate count and lexical order are descriptors only.

DominanceScope

02 / explicit comparison domain

“Main focus” is meaningless without a comparison domain. Scope is explicit and snapshot-bound.

DominanceScope {
  dominanceScopeRef,

  scopeSourceRef,
  scopeSourceOwnerRef,

  scopeMode:
    CANVAS
    REGION
    EXPLICIT_SUBJECT_SET,

  canvasRef,
  snapshotRef,
  regionRef?,

  subjectRefs[],
  coordinateFrame,

  status,
  provenance,
  mutationAllowed: false
}
Explicit set

EXPLICIT_SUBJECT_SET requires a non-empty distinct subject list.

No hidden importance.

Membership in a scope does not mean focal importance. Scope only says “these subjects are in the comparison domain”.

Role taxonomy is not dominance ranking

03 / closed taxonomy
RoleMeaningNot equivalent to
FOCAL_CANDIDATEExplicit source allows subject into focal measurement pool.rank 1 / dominant / score 1
NON_FOCALExplicit source excludes subject from candidate pool in this scope.attention score 0
UNSPECIFIEDExplicit source makes no focal-role commitment.missing role evidence
UNSPECIFIED = explicit role state MISSING EVIDENCE = N_A These are different canonical states.

DominanceRoleEvidence

04 / owner-qualified evidence

Role claims require an explicit source and owner. Confidence reports evidence quality only.

DominanceRoleEvidence {
  roleEvidenceRef,

  dominanceScopeRef,
  subjectRef,

  roleKind:
    FOCAL_CANDIDATE
    NON_FOCAL
    UNSPECIFIED,

  roleSourceRef,
  roleSourceOwnerRef,

  semanticIntentRefs[],
  evidenceRefs[],

  confidence,
  provenance,
  status,

  mutationAllowed: false
}
Confidence is not visual strength.

confidence=.99 means the role evidence is reliable. It does not mean the subject is visually dominant.

Conflicting roles stay conflicting

05 / resolution

13.00 refuses hidden precedence. If two valid sources disagree about the same subject in the same scope, confidence or list order cannot choose a winner.

DominanceRoleResolution {
  roleResolutionRef,

  dominanceScopeRef,
  subjectRef,

  roleEvidenceRefs[],

  status:
    OK
    N_A
    INVALID,

  decision:
    FOCAL_CANDIDATE
    NON_FOCAL
    UNSPECIFIED
    CONFLICT,

  confidence,

  reasonCode,
  mutationAllowed: false
}
no evidence → N_A all usable claims agree → OK + agreed role usable claims disagree → OK + CONFLICT CONFLICT is NOT resolved by: confidence source order lexical order module order

Candidate-set inclusion is explicit policy

06 / no hidden default

A project may include only explicit focal candidates, or may intentionally include explicit UNSPECIFIED roles for later measurement. That choice is policy, not a universal law.

FocalCandidateSetPolicy {
  candidateSetPolicyRef,

  policySourceRef,
  policySourceOwnerRef,

  includedRoleKinds[],

  maxCandidates,
  overflowPolicy: "N_A",

  requireResolutionForEveryScopedSubject: true,

  provenance,
  status,
  mutationAllowed: false
}
includedRoleKinds: allowed: FOCAL_CANDIDATE UNSPECIFIED forbidden: NON_FOCAL maxCandidates: 1..4096 4096: implementation safety bound != recommended number of focal objects != composition law

FocalCandidate

07 / measurement eligibility

A candidate is an immutable descriptor that binds one subject to one scope, one policy and one resolved role.

FocalCandidate {
  focalCandidateRef,

  dominanceScopeRef,
  candidateSetPolicyRef,

  subjectRef,
  roleResolutionRef,
  resolvedRoleKind,

  confidence,
  status: "OK",
  provenance: "DERIVED",

  derivedFrom[],
  mutationAllowed: false
}
focal candidate != dominant focal candidate != focal rank 1 focal candidate != main focus focal candidate != attention score It means only: this subject is eligible for downstream dominance measurement.

FocalCandidateSet

08 / canonical set

Candidate order is canonicalized for deterministic identity only. It is never a ranking.

FocalCandidateSet {
  focalCandidateSetRef,

  dominanceScopeRef,
  candidateSetPolicyRef,

  candidateRefs[],
  subjectRefs[],

  status,
  reasonCode,
  mutationAllowed: false
}
Empty set

N_A. It is not “dominance = 0”.

One candidate

Valid candidate set. Later 13.02 may still return N_A for a margin requiring at least two comparable candidates.

DominanceDescriptorSeed

09 / immutable root envelope

13.00 exports a seed with downstream slots intentionally empty. Later modules create derived artifacts rather than mutating this object.

DominanceDescriptorSeed {
  descriptorSeedRef,

  dominanceScopeRef,
  focalCandidateSetRef,
  candidateRefs[],

  attentionFactorSetRef: null,
  focalRankingRef: null,
  dominanceMarginRef: null,
  dominanceProfileRef: null,
  dominanceEvaluationRef: null,

  status,
  mutationAllowed: false
}

Identity is scope + evidence + policy

10 / deterministic lineage

Confidence and presentation labels do not alter identity. Set-like refs are canonicalized.

dominanceScopeRef = hash( source / owner, mode, canvas, snapshot, region?, canonical subjects, frame, provenance ) roleEvidenceRef = hash( scope, subject, role kind, source / owner, canonical semantic refs, canonical evidence refs, provenance ) roleResolutionRef = hash( scope, subject, canonical usable role evidence refs, decision ) focalCandidateRef = hash( scope, policy, subject, roleResolutionRef, resolvedRoleKind )

Do not smuggle 13.01 into 13.00

11 / firewalls

Size, contrast, isolation and position are deliberately absent from candidate eligibility unless an external role source explicitly makes a role claim.

Forbidden shortcuts

largest → focal; highest contrast → focal; isolated → focal; centered → focal; first candidate → dominant; high confidence → stronger attention.

Preserved invariants

candidate != dominant; descriptor != score; local != global; N_A != 0; module order != priority; no beautyScore.

Topic13 chain stays separated

12 / integration
ModuleCanonical role
13.00scope, role evidence/resolution, focal candidate model
13.01attention factors: size, contrast, isolation, position
13.02focal rank, dominance margin, competing/co-dominant cases
13.03target dominance profiles
13.04scoring, correction and final Topic13 tests

Wrong evidence → correction request

13 / non-mutating repair

13.00 never edits foreign scope, subject or role sources.

DominanceCandidateCorrectionRequest {
  requestRef,
  targetOwnerRef,

  reasonCode,
  evidenceRefs[],
  suggestedAction,

  status,
  mutationAllowed: false
}

CANON → LAB → DATA → IDEAS

14 / mandatory hooks

Role/candidate eligibility is captured as evidence now so later human studies can compare intended focal roles with measured visual dominance.

IDEAS_REFS[]7 project-level R&D refs retained.
DATA_CAPTURE[]scope, role claims, conflicts and candidate pool.
DEFERRED_SEMANTIC_INPUTS[]semantic focal meaning remains external.
HUMAN_FEEDBACK_HOOKS[]candidate-set recall and role corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]confidence/order never becomes hidden priority.
LAB_HOOKS[]intended-vs-measured focal studies.

Preserve why the candidate pool was wrong

15 / human feedback
ReasonMeaning
SUBJECT_SHOULD_BE_FOCAL_CANDIDATEImportant subject was excluded from later measurement.
SUBJECT_SHOULD_NOT_BE_FOCAL_CANDIDATESubject should not enter focal competition.
ROLE_EVIDENCE_WRONGSource/claim itself is wrong.
ROLE_CONFLICT_SHOULD_BE_RESOLVED_EXTERNALLYConflict needs explicit owner decision.
SCOPE_TOO_BROADComparison domain contains unrelated subjects.
SCOPE_TOO_NARROWComparison domain misses relevant subjects.
CANDIDATE_SET_TOO_BROADToo many subjects enter later attention analysis.
CANDIDATE_SET_TOO_NARROWPotential focal competitors are missing.
UNSPECIFIED_ROLE_HANDLED_WRONGExplicit UNSPECIFIED role policy is inappropriate.
MAIN_FOCUS_MISSING_FROM_CANDIDATE_SETLater human main focus was never eligible.
NON_FOCAL_INCLUDED_AS_CANDIDATEExplicit exclusion firewall was violated.

Visual laboratory hook

16 / eligibility before attention

The illustration shows candidate eligibility without implying any rank or winner.

DOMINANCE SCOPE FOCAL_CANDIDATE UNSPECIFIED NON_FOCAL NO RANK YET size · contrast · isolation · position → 13.01 focal rank · dominance margin · competing/co-dominant → 13.02

13.00 regression suite

17 / deterministic tests

Tests cover scope identity, explicit UNSPECIFIED vs missing evidence, role conflict preservation, candidate policy, non-focal exclusion, bounded set assembly, deterministic identity, descriptor seed immutability and all Topic13.00 firewalls.

Tests not run yet.

DATA FOR LAYOUT ENGINE

18 / machine contract

Machine-readable 13.00 canonical contract.

{
  "module": "Compo 13.00",
  "name": "dominant_role_focal_candidate_model",
  "version": "1.0-canonical",
  "canonical_main_title": "Dominant role / focal candidate model",
  "topic": "13_ДОМИНАНТА_И_ГЛАВНЫЙ_ФОКУС",
  "scope": "DOMINANCE_SCOPE_ROLE_EVIDENCE_ROLE_RESOLUTION_AND_FOCAL_CANDIDATE_ROOT_MODEL_ONLY",
  "main_topic_contract": {
    "topic_title": "Доминанта и главный фокус",
    "topic_goal": "Define dominance as a measurable leader of attention through focal candidates, dominance margin and competing/co-dominant cases without assuming a universal mandatory single focal center.",
    "expected_output": "DominanceDescriptor, focal rank, dominance margin, target profiles",
    "planned_files": [
      "13.00 Dominant role / focal candidate model",
      "13.01 Attention factors: size, contrast, isolation, position",
      "13.02 Dominance margin и competing dominants",
      "13.03 Target dominance profiles",
      "13.04 Scoring, correction и tests"
    ]
  },
  "ownership": {
    "owner": "Compo13.00",
    "owns": [
      "DominanceScope",
      "DominanceRoleEvidence",
      "DominanceRoleResolution",
      "FocalCandidateSetPolicy",
      "FocalCandidate",
      "FocalCandidateSet",
      "DominanceDescriptorSeed",
      "identity/status/provenance rules for the Topic13 root model",
      "non-mutating correction request for role/candidate-source evidence"
    ],
    "does_not_own": [
      "attention factors size/contrast/isolation/position — Compo13.01",
      "attention-factor normalization or weighting — Compo13.01 or later explicit owner",
      "focal ranking and dominance margin — Compo13.02",
      "competing/co-dominant classification — Compo13.02",
      "target dominance profiles — Compo13.03",
      "dominance scoring/correction synthesis — Compo13.04",
      "global hierarchy semantics",
      "semantic interpretation of opaque semantic refs",
      "foreign geometry or layout mutation"
    ]
  },
  "consumes": [
    "explicit canvas/snapshot/domain identity",
    "explicit subject refs in one dominance scope",
    "owner-qualified DominanceRoleEvidence[]",
    "explicit FocalCandidateSetPolicy",
    "optional opaque semanticIntentRefs[]",
    "optional human feedback reason codes"
  ],
  "provides": [
    "DominanceScope",
    "DominanceRoleEvidence",
    "DominanceRoleResolution",
    "FocalCandidateSetPolicy",
    "FocalCandidate[]",
    "FocalCandidateSet",
    "DominanceDescriptorSeed",
    "Topic13.00 observation record"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "13.00 owns no attention score, focal rank, dominance margin, target profile score or independent numeric vote.",
  "dominance_scope_schema": {
    "dominanceScopeRef": "stable identity",
    "scopeSourceRef": "explicit source of scope declaration",
    "scopeSourceOwnerRef": "owner of scope declaration",
    "scopeMode": "CANVAS|REGION|EXPLICIT_SUBJECT_SET",
    "canvasRef": "required",
    "snapshotRef": "required immutable scene/layout snapshot identity",
    "regionRef": "required iff REGION, null otherwise",
    "subjectRefs": "explicit distinct subject set; required non-empty for EXPLICIT_SUBJECT_SET; optional explicit set for CANVAS/REGION",
    "coordinateFrame": "required",
    "status": "OK|INVALID",
    "provenance": "canonical provenance class",
    "mutationAllowed": false,
    "firewall": "scope identity does not imply focal importance"
  },
  "role_taxonomy": {
    "FOCAL_CANDIDATE": "explicit source says subject may participate in dominance measurement",
    "NON_FOCAL": "explicit source excludes subject from the focal-candidate pool in this scope",
    "UNSPECIFIED": "explicit source makes no focal-role commitment; this is not the same as missing evidence"
  },
  "dominance_role_evidence_schema": {
    "roleEvidenceRef": "stable identity",
    "dominanceScopeRef": "exact scope ref",
    "subjectRef": "exact canonical subject",
    "roleKind": "FOCAL_CANDIDATE|NON_FOCAL|UNSPECIFIED",
    "roleSourceRef": "explicit source",
    "roleSourceOwnerRef": "source owner",
    "semanticIntentRefs": "optional opaque refs; 13.00 does not interpret semantics",
    "evidenceRefs": "one or more owner-qualified refs",
    "confidence": "0..1 evidence quality only",
    "provenance": "canonical provenance class",
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false
  },
  "role_resolution": {
    "same_subject_scope_only": true,
    "decision": "FOCAL_CANDIDATE|NON_FOCAL|UNSPECIFIED|CONFLICT",
    "missingEvidence": "N_A",
    "allUsableEvidenceSameRole": "OK + that role",
    "disagreement": "OK + CONFLICT; confidence/order cannot break the tie",
    "confidencePolicy": "minimum evidence confidence for audit only; never role strength",
    "firewall": "CONFLICT is not resolved by confidence, source order, module order or lexical order"
  },
  "candidate_set_policy_schema": {
    "candidateSetPolicyRef": "stable identity",
    "policySourceRef": "explicit policy source",
    "policySourceOwnerRef": "owner",
    "includedRoleKinds": "explicit non-empty subset of FOCAL_CANDIDATE|UNSPECIFIED; NON_FOCAL forbidden",
    "maxCandidates": "integer 1..4096 implementation safety bound; not a composition recommendation",
    "overflowPolicy": "N_A",
    "requireResolutionForEveryScopedSubject": true,
    "provenance": "canonical provenance class",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "default": "NONE — no implicit assumption that every visible subject is focal"
  },
  "focal_candidate_schema": {
    "focalCandidateRef": "stable identity",
    "dominanceScopeRef": "exact scope ref",
    "candidateSetPolicyRef": "exact policy ref",
    "subjectRef": "canonical subject",
    "roleResolutionRef": "exact role resolution",
    "resolvedRoleKind": "FOCAL_CANDIDATE|UNSPECIFIED",
    "confidence": "resolution evidence quality only",
    "status": "OK",
    "provenance": "DERIVED",
    "derivedFrom": "explicit refs",
    "mutationAllowed": false,
    "forbiddenInterpretations": [
      "candidate is dominant",
      "candidate has attention rank",
      "candidate has attention score",
      "candidate is preferred",
      "candidate is final focal point"
    ]
  },
  "focal_candidate_set_schema": {
    "focalCandidateSetRef": "stable identity",
    "dominanceScopeRef": "exact scope",
    "candidateSetPolicyRef": "exact policy",
    "candidateRefs": "canonical distinct set",
    "subjectRefs": "canonical candidate subject set",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "emptySet": "N_A, not a valid zero-dominance claim",
    "singleCandidate": "valid candidate set; 13.02 may later return N_A for dominance margin",
    "ordering": "lexical canonicalization for identity only; not focal rank"
  },
  "dominance_descriptor_seed_schema": {
    "descriptorSeedRef": "stable identity",
    "dominanceScopeRef": "scope",
    "focalCandidateSetRef": "candidate set",
    "candidateRefs": "canonical refs",
    "attentionFactorSetRef": null,
    "focalRankingRef": null,
    "dominanceMarginRef": null,
    "dominanceProfileRef": null,
    "dominanceEvaluationRef": null,
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "seed is a root envelope only; downstream modules create derived artifacts instead of mutating it"
  },
  "identity_policy": {
    "dominanceScopeRef": "hash(scope source/owner, mode, canvas, snapshot, region?, canonical subject refs, frame, provenance)",
    "roleEvidenceRef": "hash(scope, subject, role kind, source/owner, canonical semantic/evidence refs, provenance)",
    "roleResolutionRef": "hash(scope, subject, canonical usable role evidence refs, decision)",
    "candidateSetPolicyRef": "hash(policy source/owner, canonical included role kinds, maxCandidates, overflow policy, resolution requirement, provenance)",
    "focalCandidateRef": "hash(scope, policy, subject, roleResolutionRef, resolvedRoleKind)",
    "focalCandidateSetRef": "hash(scope, policy, canonical candidate refs)",
    "descriptorSeedRef": "hash(scope, candidate set, canonical candidate refs)",
    "set_semantics": "all set-like arrays canonicalized lexically",
    "excluded_from_identity": [
      "display label",
      "display color",
      "free-form comment",
      "confidence"
    ]
  },
  "status_policy": {
    "roleEvidence": "OK|N_A|INVALID",
    "roleResolution": "OK with role/CONFLICT | N_A | INVALID",
    "candidateSet": "OK | N_A | INVALID",
    "missingRoleEvidence": "N_A, not UNSPECIFIED",
    "explicitUnspecified": "valid explicit role state, distinct from missing evidence",
    "emptyCandidateSet": "N_A, not score 0",
    "candidateOverflow": "N_A under canonical overflowPolicy=N_A",
    "N_A_not_zero": true
  },
  "critical_firewalls": [
    "focal candidate != dominant",
    "dominance role evidence != measured dominance",
    "explicit FOCAL_CANDIDATE role != focal rank 1",
    "NON_FOCAL != attention score 0",
    "UNSPECIFIED != missing evidence",
    "missing role evidence != UNSPECIFIED",
    "candidate set lexical order != focal rank",
    "candidate set size != dominance strength",
    "single candidate != proven dominant",
    "empty candidate set != zero dominance",
    "role confidence != attention strength",
    "role confidence != conflict priority",
    "role evidence order != priority",
    "module execution order != rule priority",
    "scope membership != focal importance",
    "canvas center != automatic focal candidate",
    "large object != automatic focal candidate in 13.00",
    "high contrast != automatic focal candidate in 13.00",
    "isolation != automatic focal candidate in 13.00",
    "position != automatic focal candidate in 13.00",
    "attention factors are deferred to 13.01",
    "focal rank and dominance margin are deferred to 13.02",
    "target dominance profiles are deferred to 13.03",
    "dominance scoring is deferred to 13.04",
    "candidate != final focal point",
    "descriptor seed != final DominanceDescriptor",
    "local != global",
    "descriptor != score",
    "correction request != foreign mutation",
    "N_A != 0",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "correction_request_schema": {
    "requestRef": "stable identity",
    "targetOwnerRef": "owner whose scope/role/policy evidence should be reviewed",
    "reasonCode": "explicit",
    "evidenceRefs": "canonicalized refs",
    "suggestedAction": "non-mutating suggestion",
    "status": "OPEN|INVALID",
    "mutationAllowed": false
  },
  "deferred_downstream": {
    "13.01": [
      "attention factor descriptors for size",
      "attention factor descriptors for contrast",
      "attention factor descriptors for isolation",
      "attention factor descriptors for position",
      "factor evidence normalization/context"
    ],
    "13.02": [
      "focal rank",
      "dominance margin",
      "competing dominants",
      "co-dominant classification"
    ],
    "13.03": [
      "target dominance profiles",
      "desired dominance structures",
      "profile applicability"
    ],
    "13.04": [
      "dominance scoring",
      "correction synthesis",
      "final Topic13 tests",
      "independent Topic13 vote if canonically justified"
    ]
  },
  "IDEAS_REFS": [
    "IDEA-01 full human test after all 72 topics; collect where humans disagree on the main focal leader",
    "IDEA-02 semantics required before placement; semanticIntentRefs remain opaque/deferred here",
    "IDEA-03 explicit rule priorities; candidate order and confidence must not become hidden 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",
    "scopeMode",
    "scopedSubjectRefs[]",
    "roleEvidenceRefs[]",
    "roleResolutionRefs[]",
    "roleDecisions[]",
    "candidateSetPolicyRef",
    "focalCandidateRefs[]",
    "focalCandidateSubjectRefs[]",
    "candidateSetStatus",
    "candidateSetReasonCode",
    "humanReasonCodes[]",
    "future attentionFactorSetRef",
    "future focalRankingRef",
    "future dominanceMarginRef",
    "future dominanceProfileRef",
    "future dominanceEvaluationRef"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "semanticIntentRefs[]",
    "semantic meaning of focal importance",
    "content hierarchy meaning",
    "editorial/brand focal rationale",
    "future global conflict-priority policy refs"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "SUBJECT_SHOULD_BE_FOCAL_CANDIDATE",
    "SUBJECT_SHOULD_NOT_BE_FOCAL_CANDIDATE",
    "ROLE_EVIDENCE_WRONG",
    "ROLE_CONFLICT_SHOULD_BE_RESOLVED_EXTERNALLY",
    "SCOPE_TOO_BROAD",
    "SCOPE_TOO_NARROW",
    "CANDIDATE_SET_TOO_BROAD",
    "CANDIDATE_SET_TOO_NARROW",
    "UNSPECIFIED_ROLE_HANDLED_WRONG",
    "MAIN_FOCUS_MISSING_FROM_CANDIDATE_SET",
    "NON_FOCAL_INCLUDED_AS_CANDIDATE"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "module execution order is not priority",
    "role evidence list order is non-semantic",
    "confidence cannot resolve conflicting role claims",
    "lexical candidate order is identity-only and not focal rank",
    "13.00 does not own global hierarchy priority",
    "future reviewed global conflict-priority owner remains authoritative"
  ],
  "LAB_HOOKS": [
    "human labeling: which subjects should enter the focal-candidate pool",
    "compare explicit candidate-set policies with/without UNSPECIFIED roles",
    "collect disagreement reasons for focal eligibility",
    "measure candidate-pool recall before attention scoring",
    "test single-focus vs multi-focus scenes without writing a universal one-focus law",
    "collect cases where intended focal role and measured visual dominance later diverge"
  ],
  "observation_record": {
    "moduleRef": "Compo13.00",
    "metricResults": [],
    "attentionFactorRefs": [],
    "focalRankRefs": [],
    "dominanceMarginRefs": [],
    "dominanceProfileRefs": [],
    "dominanceEvaluationRefs": []
  },
  "stop_condition": "STOP after 13.00. Do not create 13.01 in this module."
}
VISITS / ...