COMPO · 18.00 · SUBORDINATION GRAPH

Declare levels.
Build the graph.

18.00 задаёт root-модель субординации: какие элементы входят в локальную иерархию, какой уровень PRIMARY / SECONDARY / TERTIARY / DECORATIVE им явно назначен и какие направленные superior→subordinate связи существуют. Визуальный вес, конкуренция, нарушения и scoring здесь ещё не вычисляются.

ModuleCompo 18.00
TopicSubordination
Rolesexplicit only
Graphdirected DAG
Metricsnone
NextSTOP

Hierarchy identity before visual judgement

00 / contract
explicit subject eligibility + explicit hierarchy role evidence → HierarchySubjectSet explicit superior → subordinate requests + strict role direction → SubordinationGraph 18.00 stops here. NO weight envelopes NO size/contrast/isolation constraints NO competition / inversion judgement NO score

Root graph only

01 / ownership
OWNS

18.00

Role taxonomy, explicit role resolution, subject set, directed relation identity, graph policy, DAG integrity and immutable HierarchySystemSeed.

DOES NOT OWN

Downstream

18.01 weight envelopes; 18.02 channel constraints; 18.03 competition/inversion and violations; 18.04 metrics, correction scoring and generator.

Boundary: declared hierarchy is a semantic/local graph contract. It does not mean the current visual rendering actually respects that hierarchy.

Four declared hierarchy roles

02 / roles
RoleRankMeaning in 18.00Not equal to
PRIMARY0Highest declared level in the local graph.largest object; focal winner; semantic importance score
SECONDARY1Declared support level.MEDIUM scale class
TERTIARY2Declared lower support/detail level.microdetail
DECORATIVE3Declared decorative level.removable, useless or visually weak
No visual inference: size, contrast, tone, color, isolation, position, z-index and layer order cannot assign a role in 18.00.

Subjects are explicit

03 / subject set
HierarchySubject {
  hierarchySubjectRef,
  scopeRef,
  subjectRef,
  eligibilityResolutionRef,
  roleResolutionRef,
  role,
  rank,

  weightEnvelopeRef: null,
  constraintAttachmentRef: null,
  competitionAttachmentRef: null,
  score: null,

  status,
  mutationAllowed: false
}
Conflict preservation.

If explicit role evidence disagrees for the same subject, 18.00 returns N_A / CONFLICT. It does not pick the “stronger-looking” role and does not use confidence as a hidden tie-breaker.

Relations are directed

04 / superior → subordinate
HierarchyRelation(A → B) is valid only when: A and B are explicit OK HierarchySubjects A != B rank(A) < rank(B) request direction = superior → subordinate PRIMARY → SECONDARY valid PRIMARY → TERTIARY valid (skipped level allowed) SECONDARY → DECORATIVE valid SECONDARY → SECONDARY invalid TERTIARY → PRIMARY invalid role inversion
Directed identity: A→B and B→A are different requests. Lexical order never chooses direction.

Explicit graph, no all-pairs explosion

05 / graph policy
EXPLICIT

Edges

Only explicit relation requests become canonical graph edges.

NO IMPLICIT

Transitivity

A→B and B→C may imply reachability, but 18.00 does not materialize an extra canonical A→C edge.

NO CARTESIAN

Pairing

Subjects are never expanded into every possible pair.

SubordinationGraph {
  hierarchySubjectSetRef,
  hierarchyRelationRefs[],
  rootSubjectRefs[],
  leafSubjectRefs[],
  topologicalSubjectRefs[],
  isAcyclic: true,

  weightEnvelopeAttachmentRef: null,
  constraintAttachmentRef: null,
  competitionAttachmentRef: null,
  metricResultRefs: [],

  status,
  reasonCode,
  mutationAllowed: false
}

Graph integrity is structural

06 / DAG contract
Self edge

INVALID

Same-role edge

INVALID

Role inversion

INVALID

Cycle

INVALID

multiple roots → allowed skipped role levels → allowed isolated explicit subject → allowed single explicit subject graph → allowed graph depth ≠ quality graph acyclicity ≠ quality

N_A never becomes zero

07 / status
CaseStatusMeaning
Role evidence conflictN_ACannot resolve the declared role without guessing.
Relation references unknown subjectN_ARequired graph lineage is missing.
Self / same-role / inverted edgeINVALIDExplicit request violates root graph contract.
CycleINVALIDDirected subordination graph is inconsistent.
Single subject, no edgesOKValid explicit graph with no subordination edge.

Topic boundaries stay separate

08 / owners
18.01Weight envelopes by hierarchy level.
18.02Contrast / size / isolation constraints.
18.03Competition, inversion and violation detection.
18.04Correction, scoring, MetricResult and bounded generator.
Compo13Dominance / focal ranking remains separate.
Topic16Scale relations remain separate.
Topic17Aspect / part-to-whole proportions remain separate.
Topic19Correlation-aware observed visual hierarchy remains separate.

No hidden hierarchy through appearance

09 / firewalls
PRIMARY != largest PRIMARY != Compo13 dominant winner SECONDARY != MEDIUM scale class TERTIARY != microdetail DECORATIVE != removable DOM parent != superior z-index != hierarchy rank layer order != hierarchy rank reading order != hierarchy rank HierarchyRelation != score SubordinationGraph != quality score 18.00 owns_metrics = [] 18.00 independent numeric votes = 0

CANON → LAB → DATA → IDEAS

10 / mandatory hooks
IDEAS_REFS[]Human-perceived hierarchy studies remain research.
DATA_CAPTURE[]Subjects, roles, directed edges, roots/leaves and graph status.
DEFERRED_SEMANTIC_INPUTS[]Weight, constraints, competition and scoring remain downstream.
HUMAN_FEEDBACK_HOOKS[]Role and relation corrections are preserved.
CONFLICT_PRIORITY_ASSUMPTIONS[]No confidence winner for role conflicts.
LAB_HOOKS[]Declared vs perceived hierarchy research hooks.

18.00 regression suite

11 / deterministic tests

Tests cover explicit role resolution, conflict preservation, directed relation identity, strict role direction, no self/same-role/inverted edges, deduplication, DAG integrity, multi-root/single-subject validity, immutable root seed, zero metrics and ownership firewalls.

Tests not run yet.

DATA FOR LAYOUT ENGINE

12 / machine contract
{
  "module": "Compo 18.00",
  "name": "subordination_graph",
  "version": "1.0-canonical",
  "canonical_main_title": "Subordination graph",
  "topic": "18_СУБОРДИНАЦИЯ_И_ПОДЧИНЕНИЕ_ЭЛЕМЕНТОВ",
  "scope": "EXPLICIT_HIERARCHY_SUBJECT_ROLE_DECLARATIONS_AND_DIRECTED_SUBORDINATION_GRAPH_ROOT_MODEL_ONLY",
  "main_topic_contract": {
    "topic_title": "Субординация и подчинение элементов",
    "topic_goal": "Строит subordination graph для primary/secondary/tertiary/decorative roles и отслеживает случаи, когда нижний уровень начинает визуально спорить с верхним.",
    "expected_output": "HierarchyRelation graph, subordination violations, correction requests",
    "planned_files": [
      "18.00 Subordination graph",
      "18.01 Weight envelopes by hierarchy level",
      "18.02 Contrast/size/isolation constraints",
      "18.03 Competition and inversion detection",
      "18.04 Correction, scoring and tests"
    ]
  },
  "ownership": {
    "owner": "Compo18.00",
    "owns": [
      "HierarchyRole taxonomy",
      "HierarchySubjectEligibilityEvidence",
      "HierarchySubjectEligibilityResolution",
      "HierarchyRoleEvidence",
      "HierarchyRoleResolution",
      "HierarchySubject",
      "HierarchySubjectSetPolicy",
      "HierarchySubjectSet",
      "HierarchyRelationRequest",
      "HierarchyRelation",
      "SubordinationGraphPolicy",
      "SubordinationGraph",
      "HierarchySystemSeed root identity",
      "directed superior-to-subordinate relation identity",
      "acyclic graph integrity and explicit role-direction validation",
      "identity/status/provenance rules for Topic18 root graph layer",
      "non-mutating correction request for subject/role/relation/graph declarations"
    ],
    "does_not_own": [
      "hierarchy-level weight envelopes — Compo18.01",
      "contrast/size/isolation constraints — Compo18.02",
      "competition/inversion detection — Compo18.03",
      "subordination violation aggregation — Compo18.03",
      "MetricResult ownership / scoring / repair generation — Compo18.04",
      "dominance / focal ranking — Compo13",
      "object-to-object scale differentiation — Topic16",
      "aspect ratio / part-to-whole proportional systems — Topic17",
      "multi-signal visual hierarchy contributions and correlation-aware hierarchy — Topic19",
      "raw size/tone/color/isolation measurement",
      "semantic importance inference",
      "global balance",
      "final-layout ranking",
      "foreign geometry/style/semantic mutation"
    ]
  },
  "consumes": [
    "explicit scope/snapshot identity",
    "explicit hierarchy-subject eligibility evidence",
    "explicit owner-qualified hierarchy-role evidence",
    "explicit directed subordination relation requests",
    "explicit SubordinationGraphPolicy"
  ],
  "provides": [
    "HierarchySubject[]",
    "HierarchySubjectSet",
    "HierarchyRelation[]",
    "SubordinationGraph",
    "HierarchySystemSeed",
    "Topic18.00 graph record"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "18.00 owns declared hierarchy roles and directed graph identity only. It owns no weight fit, channel constraint score, competition score, violation score, correction score or independent numeric vote.",
  "hierarchy_role_taxonomy": {
    "PRIMARY": {
      "rank": 0,
      "meaning": "Top declared hierarchy level within the explicit local Topic18 scope."
    },
    "SECONDARY": {
      "rank": 1,
      "meaning": "Declared support level subordinate to PRIMARY when an explicit relation exists."
    },
    "TERTIARY": {
      "rank": 2,
      "meaning": "Declared lower support/detail level."
    },
    "DECORATIVE": {
      "rank": 3,
      "meaning": "Declared decorative level; decorative does not mean expendable or visually invisible."
    }
  },
  "subject_eligibility_evidence_schema": {
    "hierarchySubjectEligibilityEvidenceRef": "stable identity",
    "scopeRef": "Topic18 scope",
    "subjectRef": "foreign-owned element identity",
    "eligible": "boolean",
    "eligibilitySourceRef": "explicit source",
    "eligibilitySourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "DOM membership, z-index, layer order, size, contrast or semantic importance do not automatically make an element a Topic18 hierarchy subject."
  },
  "subject_eligibility_resolution_schema": {
    "hierarchySubjectEligibilityResolutionRef": "stable identity",
    "scopeRef": "scope",
    "subjectRef": "subject",
    "evidenceRefs": "unique evidence refs",
    "eligible": "true|false|null",
    "status": "OK|N_A|INVALID",
    "reasonCode": "CONSENSUS|CONFLICT|NO_VALID_EVIDENCE|INVALID_EVIDENCE",
    "mutationAllowed": false,
    "firewall": "Conflicting explicit eligibility evidence remains N_A; confidence or serialization order cannot silently choose a winner."
  },
  "role_evidence_schema": {
    "hierarchyRoleEvidenceRef": "stable identity",
    "scopeRef": "scope",
    "subjectRef": "exact eligible subject",
    "role": "PRIMARY|SECONDARY|TERTIARY|DECORATIVE",
    "roleSourceRef": "explicit source",
    "roleSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "Role is an explicit local declaration. It is not inferred from size, tone, color, position, isolation, DOM order or focal dominance."
  },
  "role_resolution_schema": {
    "hierarchyRoleResolutionRef": "stable identity",
    "scopeRef": "scope",
    "subjectRef": "subject",
    "evidenceRefs": "unique role evidence refs",
    "role": "one role or null",
    "rank": "0..3 or null",
    "status": "OK|N_A|INVALID",
    "reasonCode": "CONSENSUS|CONFLICT|NO_VALID_EVIDENCE|INVALID_EVIDENCE",
    "mutationAllowed": false,
    "firewall": "Conflicting role declarations remain N_A; PRIMARY is not inferred from dominance and DECORATIVE is not inferred from small size."
  },
  "hierarchy_subject_schema": {
    "hierarchySubjectRef": "stable identity",
    "scopeRef": "scope",
    "subjectRef": "foreign-owned element",
    "eligibilityResolutionRef": "exact resolution",
    "roleResolutionRef": "exact role resolution",
    "role": "resolved role",
    "rank": "resolved rank",
    "weightEnvelopeRef": null,
    "constraintAttachmentRef": null,
    "competitionAttachmentRef": null,
    "score": null,
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "18.00 records declared level identity only. Visual weight, constraints, competition and scoring are downstream."
  },
  "subject_set_policy_schema": {
    "hierarchySubjectSetPolicyRef": "stable identity",
    "selectionMode": "EXPLICIT_ELIGIBILITY_AND_ROLE_ONLY",
    "duplicatePolicy": "DEDUP_EXACT_SUBJECT_IDENTITY",
    "eligibilityConflictPolicy": "N_A_NO_GUESS",
    "roleConflictPolicy": "N_A_NO_GUESS",
    "maxSubjects": "integer 1..4096",
    "overflowPolicy": "N_A_NO_TRUNCATION",
    "policySourceRef": "explicit source",
    "policySourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false
  },
  "relation_request_schema": {
    "hierarchyRelationRequestRef": "stable identity",
    "scopeRef": "scope",
    "superiorHierarchySubjectRef": "explicit superior subject",
    "subordinateHierarchySubjectRef": "explicit subordinate subject",
    "relationSourceRef": "explicit source",
    "relationSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "No automatic all-pairs graph, no edge from DOM parenthood, no edge from visual size or z-order."
  },
  "hierarchy_relation_schema": {
    "hierarchyRelationRef": "stable directed identity",
    "scopeRef": "scope",
    "superiorHierarchySubjectRef": "exact subject",
    "subordinateHierarchySubjectRef": "exact subject",
    "superiorRole": "resolved role",
    "subordinateRole": "resolved role",
    "superiorRank": "0..2",
    "subordinateRank": "1..3",
    "roleRankDelta": "subordinateRank-superiorRank; positive integer",
    "weightEnvelopeEvaluationRef": null,
    "constraintEvaluationRef": null,
    "competitionEvaluationRef": null,
    "violationRef": null,
    "score": null,
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "Direction is semantic: superior→subordinate. Reversing endpoints creates a different request and is invalid when role order is inverted."
  },
  "subordination_graph_policy_schema": {
    "subordinationGraphPolicyRef": "stable identity",
    "subjectSelectionMode": "EXPLICIT_SUBJECT_SET_ONLY",
    "relationSelectionMode": "EXPLICIT_RELATION_REQUESTS_ONLY",
    "edgeDirection": "SUPERIOR_TO_SUBORDINATE",
    "roleDirectionPolicy": "STRICTLY_HIGHER_ROLE_TO_LOWER_ROLE",
    "selfRelationPolicy": "INVALID",
    "sameRoleRelationPolicy": "INVALID",
    "cyclePolicy": "INVALID",
    "duplicatePolicy": "DEDUP_EXACT_DIRECTED_IDENTITY",
    "transitiveClosurePolicy": "DO_NOT_MATERIALIZE_IMPLICIT_EDGES",
    "maxRelations": "integer 0..16384",
    "overflowPolicy": "N_A_NO_TRUNCATION",
    "policySourceRef": "explicit source",
    "policySourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "A→B and B→C do not create an implicit A→C canonical edge. Reachability may be derived as a graph query but is not a relation declaration."
  },
  "subordination_graph_schema": {
    "subordinationGraphRef": "stable identity",
    "scopeRef": "scope",
    "snapshotRef": "snapshot",
    "hierarchySubjectSetRef": "exact subject set",
    "subordinationGraphPolicyRef": "exact policy",
    "hierarchyRelationRefs": "canonical unique explicit directed relations",
    "rootSubjectRefs": "subjects with no explicit incoming edge",
    "leafSubjectRefs": "subjects with no explicit outgoing edge",
    "topologicalSubjectRefs": "deterministic role-rank then identity order consistent with edges",
    "isAcyclic": true,
    "weightEnvelopeAttachmentRef": null,
    "constraintAttachmentRef": null,
    "competitionAttachmentRef": null,
    "metricResultRefs": [],
    "status": "OK|N_A|INVALID",
    "reasonCode": "OK|NO_SUBJECTS|SUBJECT_CONFLICT|ROLE_CONFLICT|INVALID_RELATION|ROLE_DIRECTION_INVALID|CYCLE|OVERFLOW",
    "mutationAllowed": false,
    "firewall": "Graph identity describes declared subordination only. It does not prove that current visual appearance obeys the hierarchy."
  },
  "hierarchy_system_seed_schema": {
    "hierarchySystemSeedRef": "stable identity",
    "scopeRef": "scope",
    "snapshotRef": "snapshot",
    "subordinationGraphRef": "exact graph",
    "weightEnvelopeAttachmentRef": null,
    "constraintAttachmentRef": null,
    "competitionAttachmentRef": null,
    "correctionAttachmentRef": null,
    "metricResultRefs": [],
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "Root seed remains immutable. 18.01–18.04 attach derived records instead of mutating 18.00 root identity."
  },
  "graph_integrity_contract": {
    "directed": true,
    "edgeOrientation": "superior→subordinate",
    "selfEdgesAllowed": false,
    "sameRoleEdgesAllowed": false,
    "roleInversionAllowed": false,
    "cyclesAllowed": false,
    "implicitTransitiveEdgesMaterialized": false,
    "multipleRootsAllowed": true,
    "skippedLevelsAllowed": true,
    "isolatedExplicitSubjectsAllowed": true,
    "firewall": "Graph integrity is structural. It is not a quality score and does not infer visual hierarchy compliance."
  },
  "identity_policy": {
    "subjectIdentity": "scopeRef + foreign subjectRef",
    "relationIdentity": "scopeRef + superiorHierarchySubjectRef + subordinateHierarchySubjectRef",
    "directedIdentity": true,
    "reversalSameIdentity": false,
    "serialization": "lexical serialization is allowed only after semantic direction is fixed",
    "firewall": "Lexical order never chooses superior/subordinate semantics."
  },
  "status_policy": {
    "invalidEligibilityEvidence": "INVALID",
    "eligibilityConflict": "N_A",
    "roleConflict": "N_A",
    "missingRole": "N_A",
    "relationUnknownSubject": "N_A",
    "selfRelation": "INVALID",
    "sameRoleRelation": "INVALID",
    "roleDirectionInversion": "INVALID",
    "cycle": "INVALID",
    "overflow": "N_A; no truncation",
    "validSingleSubjectGraph": "OK",
    "validMultiRootGraph": "OK",
    "N_A_not_zero": true,
    "INVALID_not_zero": true
  },
  "downstream_ownership": {
    "18.01": [
      "hierarchy-level weight envelopes",
      "weight envelope attachments",
      "non-scoring weight descriptors"
    ],
    "18.02": [
      "contrast constraints",
      "size constraints",
      "isolation constraints",
      "channel constraint attachments"
    ],
    "18.03": [
      "competition detection",
      "hierarchy inversion detection",
      "subordination violation records"
    ],
    "18.04": [
      "target/evaluation profiles",
      "MetricResult ownership",
      "one Topic18 independent numeric vote budget",
      "bounded deterministic correction candidates",
      "final Topic18 regression tests"
    ]
  },
  "foreign_ownership": {
    "Compo13": "dominance / focal ranking",
    "Topic16": "object-to-object scale differentiation",
    "Topic17": "aspect ratio / part-to-whole proportional systems",
    "Topic19": "multi-signal visual hierarchy contributions and correlation-aware hierarchy",
    "foreign": "raw visual measurements, semantic importance inference, global balance, final-layout ranking"
  },
  "firewalls": [
    "declared hierarchy role != focal dominance",
    "declared hierarchy role != object size class",
    "declared hierarchy role != proportion class",
    "PRIMARY != largest object",
    "PRIMARY != automatically dominant by Compo13",
    "SECONDARY != medium-size class",
    "TERTIARY != microdetail",
    "DECORATIVE != removable",
    "DECORATIVE != visually weak by definition",
    "DOM parent != hierarchy superior",
    "DOM child != hierarchy subordinate",
    "z-index order != hierarchy order",
    "layer order != hierarchy order",
    "reading order != hierarchy order",
    "semantic importance != inferred here",
    "explicit role evidence required",
    "explicit relation request required",
    "no all-pairs relation generation",
    "no implicit transitive canonical edges",
    "role rank != visual weight score",
    "graph depth != quality",
    "more hierarchy levels != better",
    "fewer hierarchy levels != better",
    "multiple roots != automatically invalid",
    "isolated explicit subject != automatically invalid",
    "skipped role level != automatically invalid",
    "graph acyclicity != visual quality",
    "relation descriptor != score",
    "18.00 owns_metrics = []",
    "18.00 independent numeric votes = 0",
    "correction request != foreign mutation",
    "N_A != 0",
    "INVALID != 0",
    "local != global",
    "geometry != interpretation",
    "descriptor != score",
    "heuristic != law",
    "one metric = one owner",
    "module execution order != rule priority",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "correction_request_schema": {
    "hierarchyGraphCorrectionRequestRef": "stable identity",
    "targetOwnerRef": "subject eligibility / role / relation / graph declaration owner",
    "reasonCode": "ELIGIBILITY_MISSING|ELIGIBILITY_CONFLICT|ROLE_MISSING|ROLE_CONFLICT|RELATION_SUBJECT_MISSING|SELF_RELATION|SAME_ROLE_RELATION|ROLE_DIRECTION_WRONG|CYCLE|GRAPH_POLICY_WRONG",
    "hierarchySubjectRef": "exact subject or null",
    "hierarchyRelationRef": "exact relation or null",
    "evidenceRefs": "actual lineage refs",
    "suggestedAction": "non-mutating review request",
    "status": "OPEN|INVALID",
    "mutationAllowed": false
  },
  "IDEAS_REFS": [
    "IDEA-01 after all 72 topics compare declared subordination graph with human-perceived hierarchy",
    "IDEA-02 preserve semantic role declarations separately from observed visual signals",
    "IDEA-03 study when valid multi-root hierarchies are preferable to a single-root hierarchy",
    "IDEA-04 collect structured hierarchy graph data for future composition model",
    "IDEA-05 preserve reasons for human correction of role and relation declarations",
    "IDEA-06 structured machine-readable graph layer for website/workbench",
    "IDEA-07 graphics-for-post-text research remains downstream/separate"
  ],
  "DATA_CAPTURE": [
    "sceneRef",
    "scopeRef",
    "snapshotRef",
    "hierarchySubjectRefs[]",
    "subjectRefByHierarchySubject",
    "eligibilityEvidenceRefsBySubject",
    "eligibilityResolutionRefBySubject",
    "roleEvidenceRefsBySubject",
    "roleResolutionRefBySubject",
    "roleBySubject",
    "rankBySubject",
    "hierarchyRelationRequestRefs[]",
    "hierarchyRelationRefs[]",
    "superiorRefByRelation",
    "subordinateRefByRelation",
    "roleRankDeltaByRelation",
    "rootSubjectRefs[]",
    "leafSubjectRefs[]",
    "topologicalSubjectRefs[]",
    "subordinationGraphRef",
    "hierarchySystemSeedRef",
    "status",
    "reasonCode"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "18.01 visual-weight envelopes by hierarchy level",
    "18.02 size/contrast/isolation constraint values",
    "18.03 competition and inversion judgement",
    "18.04 target desirability/scoring/correction generation",
    "Topic19 multi-signal observed visual hierarchy"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "correct subject eligibility",
    "correct declared role",
    "correct superior/subordinate direction",
    "mark relation missing",
    "mark relation extraneous",
    "explain multi-root intent",
    "explain isolated-subject intent"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "role evidence conflicts are preserved, not confidence-resolved",
    "source serialization order has no semantic priority",
    "PRIMARY role does not override foreign semantic truth",
    "relation direction comes from explicit declaration plus role order, not lexical order",
    "module execution order does not imply hierarchy priority"
  ],
  "LAB_HOOKS": [
    "graph depth perception study",
    "multi-root vs single-root hierarchy study",
    "role-skip tolerance study",
    "declared-vs-observed hierarchy disagreement study",
    "human correction reason taxonomy"
  ],
  "next_module": "Compo 18.01 — Weight envelopes by hierarchy level",
  "hard_stop": "Do not implement 18.01 in this file."
}
VISITS / ...