Hierarchy identity before visual judgement
Root graph only
18.00
Role taxonomy, explicit role resolution, subject set, directed relation identity, graph policy, DAG integrity and immutable HierarchySystemSeed.
Downstream
18.01 weight envelopes; 18.02 channel constraints; 18.03 competition/inversion and violations; 18.04 metrics, correction scoring and generator.
Four declared hierarchy roles
| Role | Rank | Meaning in 18.00 | Not equal to |
|---|---|---|---|
| PRIMARY | 0 | Highest declared level in the local graph. | largest object; focal winner; semantic importance score |
| SECONDARY | 1 | Declared support level. | MEDIUM scale class |
| TERTIARY | 2 | Declared lower support/detail level. | microdetail |
| DECORATIVE | 3 | Declared decorative level. | removable, useless or visually weak |
Subjects are explicit
HierarchySubject {
hierarchySubjectRef,
scopeRef,
subjectRef,
eligibilityResolutionRef,
roleResolutionRef,
role,
rank,
weightEnvelopeRef: null,
constraintAttachmentRef: null,
competitionAttachmentRef: null,
score: null,
status,
mutationAllowed: false
}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
Explicit graph, no all-pairs explosion
Edges
Only explicit relation requests become canonical graph edges.
Transitivity
A→B and B→C may imply reachability, but 18.00 does not materialize an extra canonical A→C edge.
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
INVALID
INVALID
INVALID
INVALID
N_A never becomes zero
| Case | Status | Meaning |
|---|---|---|
| Role evidence conflict | N_A | Cannot resolve the declared role without guessing. |
| Relation references unknown subject | N_A | Required graph lineage is missing. |
| Self / same-role / inverted edge | INVALID | Explicit request violates root graph contract. |
| Cycle | INVALID | Directed subordination graph is inconsistent. |
| Single subject, no edges | OK | Valid explicit graph with no subordination edge. |
Topic boundaries stay separate
| 18.01 | Weight envelopes by hierarchy level. |
| 18.02 | Contrast / size / isolation constraints. |
| 18.03 | Competition, inversion and violation detection. |
| 18.04 | Correction, scoring, MetricResult and bounded generator. |
| Compo13 | Dominance / focal ranking remains separate. |
| Topic16 | Scale relations remain separate. |
| Topic17 | Aspect / part-to-whole proportions remain separate. |
| Topic19 | Correlation-aware observed visual hierarchy remains separate. |
No hidden hierarchy through appearance
CANON → LAB → DATA → IDEAS
18.00 regression suite
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.
DATA FOR LAYOUT ENGINE
{
"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."
}