34.00 owns semantic role declarations only
Text role is not computed from font size, weight or color. It is explicit input with provenance.
Canonical semantic roles
These labels describe editorial/semantic typographic function. They do not prescribe visual styling by themselves.
Primary title-like content
Not automatically the largest text.
Subtitle / deck
Not automatically hierarchy rank 2.
Running text
No size or weight implication.
Caption / annotation
No “smallest text” rule here.
Metadata
No low-importance claim.
External semantic role
Must carry an explicit role name.
Roles bind to owner-qualified text subjects
34.00 references content; it does not own raw text value or TextBlock geometry.
External text source → semantic role
Topic 33 headline intent and Topic 34 semantic role coexist
A headline object can be referenced by 34.00, but its Topic 33 `compositionRole` is not converted into a semantic text role.
Same object, different owned dimensions
One primary role per subject, many subjects per role
This keeps primary semantic classification deterministic while allowing several BODY, CAPTION or META subjects in the same scene.
BODY × many subjects
Same semantic role can repeat.
One subject × two primary roles
Secondary-role modeling requires another owner.
Same content × multiple subjects
Distinct owner-qualified objects may reuse content.
Hierarchy is intentionally staged
Each downstream module adds a different evidence channel rather than making 34.00 roles secretly encode style.
semantic role taxonomy
type scale / ratios
weight / style / case
color / contrast
readability / accessibility
multi-block ordering
scoring / tests
Semantic labels do not encode visual law
The most important firewall in 34.00 is that editorial role and measured visual hierarchy remain separate.
TITLE
≠ largest, boldest, brightest or first by geometry.
CAPTION / META
≠ automatically tiny, low-contrast or inaccessible.
ROLE
≠ rank, reading order, accessibility state or score.
Topic 34 starts with clean semantic identity
34.01 can now compare explicit type-scale evidence across declared roles without guessing which block is title, body or caption.
34.00 regression suite
Tests cover canonical role vocabulary, owner-defined roles, content/headline references, one-primary-role semantics, repeatable roles across subjects, exact scope/snapshot lineage, Topic 33 compatibility without role conflation, bounded explicit resolution, upstream immutability and strict absence of rank, scale, style, color, accessibility, ordering, hierarchy graph and scoring logic.
DATA FOR LAYOUT ENGINE
Canonical machine contract for Topic34 semantic text-role declarations.
{
"module": "Compo 34.00",
"name": "text_role_taxonomy",
"version": "1.0-canonical",
"canonical_main_title": "Text role taxonomy",
"topic": "34_ТИПОГРАФИЧЕСКАЯ_ИЕРАРХИЯ",
"scope": "EXPLICIT_OWNER_QUALIFIED_TEXT_SUBJECTS_AND_SEMANTIC_TYPOGRAPHIC_ROLE_BINDINGS_ONLY_WITHOUT_HIERARCHY_RANK_SCALE_WEIGHT_STYLE_CASE_COLOR_CONTRAST_READABILITY_ACCESSIBILITY_ORDERING_OR_SCORING",
"main_topic_contract": {
"topic_title": "Типографическая иерархия",
"topic_goal": "Строит типографическую иерархию title/subtitle/body/caption/meta по scale, weight, case, color и порядку; отдельно фиксирует минимальную читаемость и accessibility constraints.",
"expected_output": "TextHierarchyGraph, type levels, hierarchy violations",
"planned_files": [
"34.00 Text role taxonomy",
"34.01 Type scale и hierarchy ratios",
"34.02 Weight / style / case hierarchy",
"34.03 Color / contrast hierarchy",
"34.04 Минимальная читаемость, size floors и accessibility constraints",
"34.05 Multi-block ordering",
"34.06 Scoring и tests"
]
},
"ownership": {
"owner": "Compo34.00",
"owns": [
"TextRoleSubjectRepresentationKind taxonomy",
"TextRoleSubjectBinding",
"TypographicTextRole taxonomy",
"TextRoleBinding",
"TextRoleDeclarationRequest",
"TextRoleTaxonomyPolicy",
"TextRoleDescriptor",
"TextRoleDescriptorSet",
"TextRoleTaxonomyAttachment",
"owner-qualified text-subject identity",
"semantic typographic role identity",
"owner-defined role naming",
"role provenance binding",
"same-role multiple-subject semantics",
"33.00 headline-reference compatibility shell",
"bounded explicit role declaration resolution",
"duplicate subject/role identity validation",
"DECLARED_TYPOGRAPHIC_ROLE state",
"non-mutating correction request"
],
"does_not_own": [
"text content mutation",
"text extraction",
"text tokenization",
"automatic semantic role classification",
"automatic title detection",
"automatic subtitle detection",
"automatic body/caption/meta detection",
"33.00 headline compositional-intent role",
"34.01 type scale",
"34.01 hierarchy ratios",
"34.02 weight hierarchy",
"34.02 style hierarchy",
"34.02 case hierarchy",
"34.03 color hierarchy",
"34.03 contrast hierarchy",
"34.04 readability constraints",
"34.04 accessibility constraints",
"34.05 multi-block ordering",
"34.06 hierarchy scoring",
"34.06 hierarchy violations scoring",
"35.00 TextBlock geometry",
"36 typography spacing",
"37 text-image relation",
"automatic hierarchy graph inference",
"automatic hierarchy rank assignment",
"automatic winner selection",
"foreign text mutation",
"universal beautyScore"
]
},
"representation_kinds": [
"TEXT_CONTENT_REFERENCE",
"HEADLINE_REFERENCE",
"OWNER_DEFINED"
],
"text_roles": [
"TITLE",
"SUBTITLE",
"BODY",
"CAPTION",
"META",
"OWNER_DEFINED"
],
"role_semantics": {
"TITLE": "semantic typographic role declaration for primary title-like content; not a measured hierarchy rank",
"SUBTITLE": "semantic role declaration for subtitle/deck-like content; not a guaranteed second hierarchy level",
"BODY": "semantic role declaration for principal running text; no size/readability implication",
"CAPTION": "semantic role declaration for caption/annotation-like content; no proximity/image-relation implication",
"META": "semantic role declaration for metadata/supporting informational text; no small-size implication",
"OWNER_DEFINED": "explicit externally named semantic typographic role",
"role_is_semantic_declaration": true,
"role_is_hierarchy_rank": false,
"role_is_visual_importance_score": false,
"role_is_reading_order": false
},
"identity_semantics": {
"text_subject_identity": "textSubjectRef + textSubjectOwnerRef under exact scopeRef/snapshotRef",
"role_binding_identity": "textSubjectRef + typographicRole + ownerDefinedRoleName(if any)",
"one_primary_role_per_subject": "required in 34.00",
"same_role_multiple_subjects": "allowed",
"same_content_multiple_subjects": "allowed",
"same_subject_multiple_roles": "INVALID in 34.00; future secondary-role systems require a separate owner",
"HEADLINE_REFERENCE": "may point to a 33.00 headline object but does not reuse 33.00 compositional-intent role"
},
"descriptor_semantics": {
"state": "DECLARED_TYPOGRAPHIC_ROLE",
"semantic_role": "owned by 34.00",
"hierarchy_rank": "DEFERRED",
"type_scale": "DEFERRED_TO_34_01",
"hierarchy_ratios": "DEFERRED_TO_34_01",
"weight_style_case": "DEFERRED_TO_34_02",
"color_contrast": "DEFERRED_TO_34_03",
"readability_accessibility": "DEFERRED_TO_34_04",
"multi_block_order": "DEFERRED_TO_34_05",
"hierarchy_graph": "DEFERRED_TO_34_05_OR_34_06",
"violations": "DEFERRED_TO_34_06",
"score": "NONE"
},
"compatibility_semantics": {
"headline_reference": "optional structural reference to 33.00 HeadlineDescriptor; 34.00 role remains distinct from 33.00 compositionRole",
"text_block_geometry": "not required and not owned; Topic35 may later attach geometry",
"content_reference": "preserved from external owner; content text value is not copied into canonical 34.00 state",
"scope_snapshot": "all subject/role/request records must resolve under exact scope/snapshot"
},
"policy": {
"request_mode": "EXPLICIT_TEXT_ROLE_DECLARATIONS_ONLY",
"max_subject_bindings": [
1,
131072
],
"max_role_bindings": [
1,
131072
],
"max_role_requests": [
1,
131072
],
"overflow": "N_A_NO_TRUNCATION",
"duplicate_subject_binding_ref": "INVALID",
"duplicate_role_binding_ref": "INVALID",
"duplicate_request_ref": "INVALID",
"duplicate_text_subject_identity": "INVALID",
"multiple_primary_roles_per_subject": "INVALID",
"auto_text_extraction": false,
"auto_tokenization": false,
"auto_role_classification": false,
"auto_title_detection": false,
"auto_hierarchy_rank": false,
"auto_type_scale": false,
"auto_weight_style_case_hierarchy": false,
"auto_color_contrast_hierarchy": false,
"auto_readability_evaluation": false,
"auto_accessibility_evaluation": false,
"auto_multi_block_ordering": false,
"auto_hierarchy_graph": false,
"auto_scoring": false
},
"status_semantics": {
"OK": "one explicit owner-qualified text subject resolves to one explicit semantic typographic role under compatible scope/snapshot",
"N_A": "required subject/role/upstream headline lineage is missing or scope/snapshot mismatches, or bounds overflow",
"INVALID": "malformed binding/request/policy, unsupported taxonomy value, missing owner-defined name, duplicate identity, or multiple primary roles for one subject",
"zero": "34.00 owns no numeric hierarchy measure; zero in downstream typography must never stand for N_A"
},
"firewalls": [
"text role != hierarchy rank",
"TITLE != automatically largest text",
"SUBTITLE != automatically second-largest text",
"BODY != automatically normal font weight",
"CAPTION != automatically smallest text",
"META != automatically lowest visual importance",
"semantic role != reading order",
"semantic role != visual importance score",
"semantic role != accessibility status",
"text role taxonomy != type scale",
"text role taxonomy != hierarchy ratio",
"text role taxonomy != weight/style/case hierarchy",
"text role taxonomy != color/contrast hierarchy",
"text role taxonomy != readability evaluation",
"text role taxonomy != multi-block ordering",
"text role taxonomy != hierarchy graph",
"text role taxonomy != score",
"33.00 DOMINANT_CANDIDATE != 34.00 TITLE",
"33.00 headline compositionRole != 34.00 semantic typographic role",
"HEADLINE_REFERENCE does not mutate 33.00 headline state",
"34.00 does not own Topic35 TextBlock geometry",
"34.00 does not own Topic36 spacing",
"34.00 does not own Topic37 text-image relation",
"same role across multiple text subjects != duplicate error",
"same subject with multiple primary roles = INVALID in 34.00",
"role provenance != role truth probability",
"N_A != 0",
"INVALID != 0",
"descriptor != score",
"local != global",
"geometry != interpretation",
"heuristic != law",
"no universal semantic-role hierarchy weights",
"no universal beautyScore"
],
"owns_metrics": [],
"independent_numeric_votes": 0,
"topic34ProgressAfterThisModule": "1/7 local",
"next_module": "Compo 34.01 — Type scale и hierarchy ratios",
"topic35_started": false,
"publication": "NOT_VERIFIED"
}