COMPO · 10.00 · ALIGNMENT TAXONOMY

Alignment
taxonomy.

Root alignment language for objects, text and grid evidence. 10.00 owns relation taxonomy, subject/anchor reference contracts, symmetric relation identity and Topic10 ownership boundaries — not concrete offsets, text-baseline extraction, shared-axis aggregation, tolerance, optical correction or scoring. This is the first module built under the expanded IDEAS/LAB/DATA instruction: semantic refs remain opaque, module order is not rule priority, and relation observations are explicitly serializable.

ModuleCompo 10.00
Scopetaxonomy / refs / identity
Metricsnone
Ideascross-cutting active
Priorityno hidden order
Next10.01

Alignment starts with references, not preferences

00 / taxonomy

10.00 defines the common relation language used by 10.01–10.04. It does not yet decide whether an alignment is good.

SUBJECT

Upstream identity only.

ANCHOR

Owner-qualified evidence.

RELATION

Descriptor, not score.

AlignmentSubjectRef

01 / subject

Subject identity remains owned upstream; alignment only references it.

AlignmentSubjectRef {
  subjectRef,
  subjectOwner,
  subjectKind,

  geometryEvidenceRef?,

  canvasRef,
  coordinateFrame,
  sourceUnit
}

Anchor families

02 / anchor evidence

Anchor evidence is explicit and owner-qualified. A baseline is not guessed from a bounding-box bottom.

GEOMETRIC_EDGE

left/right/top/bottom style anchors — measured later in 10.01.

GEOMETRIC_CENTER

centerX/centerY anchors — measured later in 10.01.

TEXT_BASELINE

baseline evidence — owned by 10.02 / text owner integration.

GRID_REFERENCE

explicit Topic8/9 guide/grid evidence by reference only.

Subject + anchor

03 / participant

Participant is the atomic relation endpoint.

AlignmentParticipant {
  participantRef,
  subjectRef,
  anchorRef,

  semanticRoleRef?,
  semanticConstraintRefs[]?
}
SEMANTIC HOOK ONLY. 10.00 stores opaque semantic refs but does not interpret face/object-part/sensitive-zone meaning.

Pairwise and shared-axis

04 / relation families

10.00 reserves family ownership without implementing child measurements.

FamilyArityOwner
PAIRWISE_ANCHOR_ALIGNMENTexactly 210.01 / 10.02
MULTI_SUBJECT_SHARED_AXIS2+10.03

Axes are not interchangeable

05 / axis families

X, Y and text baseline remain distinct coordinate families.

INLINE_X accepts X anchors BLOCK_Y accepts Y anchors TEXT_BASELINE accepts BASELINE anchors REFERENCE_AXIS accepts owner-qualified X / Y / BASELINE reference mixed incompatible axes → INVALID

Symmetric relations are order-invariant

06 / relation identity

The same participant pair must not create two relation identities merely because input order changed.

input: [A.left, B.left] input reversed: [B.left, A.left] canonical participants: sort(participantRef) relationRef: same
NO DIRECTION BY ACCIDENT. A directional relation would need its own explicit subtype.

Topic 10 boundaries

07 / ownership

Taxonomy is separated from measurement, baseline logic, shared axes and scoring.

ModuleOwnership
10.00taxonomy, root relation schema, participant/anchor contracts, identity
10.01left/right/center/top/bottom pairwise offsets
10.02baseline and text alignment
10.03multi-object shared axes
10.04tolerance, optical hooks, local score, corrections/tests

Module order != rule priority

08 / conflict policy

A geometrically exact alignment can later conflict with semantic or intentional constraints. 10.00 records the channels; it does not invent the winner.

geometric relation may be exact semanticConstraintRef may later forbid it intentRef may later request misalignment 10.00 action: preserve evidence diagnose/defer conflict NOT: earlier module wins

Cross-cutting hooks active

09 / IDEAS + DATA

This is the first canonical module built under project instruction v2.0.

Layer10.00 action
IDEA-02 semantic objectsopaque semantic refs only
IDEA-03 prioritiesno hidden precedence
IDEA-04 model dataserialize relation observations
IDEA-05 human reasonsreason-code hooks
IDEA-06 data inframachine JSON complete
IDEA-07 text-to-graphicLAB hook only
DATA_CAPTURE: subject / anchor lineage relation family / axis family participants N_A / INVALID reason future offset / tolerance evidence repair refs human reason codes

Explainable corrections

10 / human feedback

Human correction data is not a canon mutation, but the schema is reserved now.

reason codes: ALIGNMENT_RELATION_WRONG WRONG_ANCHOR_SELECTED OPTICAL_OFFSET_NEEDED SEMANTIC_CONFLICT INTENTIONAL_MISALIGNMENT OTHER

Alignment is not automatically good

11 / descriptor != score

10.00 owns no numeric metric.

FORBIDDEN. `more alignment = better`, `zero offset = always better`, `grid alignment = always correct`. Tolerance/optical/target semantics belong to 10.04 and context owners.

Taxonomy counterexamples

12 / Visual Lab

The visual lab separates relation existence, semantics and preference.

A · EDGE RELATION same X anchor · descriptor only B · BASELINE != BOTTOM Ag baseline evidence is distinct C · SEMANTIC DEFERRED geometry may align semantic constraint may object 10.00 stores refs, not meaning pairwise alignment is symmetric → input order must not change relation identity X anchors cannot be silently compared to Y anchors TEXT_BASELINE is not a generic bottom edge grid reference is consumed by ref · Topic8/9 topology/occupancy ownership stays upstream semanticConstraintRefs are opaque deferred evidence · IDEA != CANON relation existence != quality · module order != priority

10.00 taxonomy regression

13 / deterministic tests

Tests cover order-invariant identity, axis compatibility, opaque semantic hooks, new cross-cutting data fields and ownership barriers.

Tests not run yet.

DATA FOR LAYOUT ENGINE

14 / machine contract

Machine-readable 10.00 contract including IDEAS/LAB/DATA fields.

{
  "module": "Compo 10.00",
  "name": "alignment_taxonomy",
  "version": "1.0-canonical",
  "canonical_main_title": "Alignment taxonomy",
  "topic": "10_БАЗОВЫЕ_ЛИНИИ_И_ВЫРАВНИВАНИЕ",
  "scope": "ALIGNMENT_RELATION_ROOT_TAXONOMY_PARTICIPANT_ANCHOR_CONTRACTS_AND_OWNERSHIP",
  "review_basis": {
    "public_MAIN": "Topic10 canonical title/output and 10.00–10.04 plan verified",
    "public_Core_0.00": "not relied upon when unavailable; no Core contents invented",
    "previous_module": "Compo9.04 v1.1 explicit variant/scoring closing layer",
    "related_owners_reviewed": [
      "Compo8.02 GridLine/GridNode topology ownership",
      "Compo9.00 ModularGrid root/row geometry",
      "Compo9.01 atomic Cell geometry/addressing",
      "Compo9.04 local ModularGrid scoring boundary"
    ],
    "cross_cutting_instruction": "COMPO project instruction v2.0",
    "ideas_register": "COMPO_IDEAS entries 01–07 reviewed"
  },
  "consumes": [
    "owner-qualified subject identity refs",
    "owner-qualified anchor evidence refs",
    "coordinate frame / source unit / canvas lineage",
    "optional grid geometry refs from Topic8/9 by reference only",
    "optional opaque semanticConstraintRefs[] as DEFERRED evidence"
  ],
  "provides": [
    "AlignmentSubjectRef",
    "AlignmentAnchorEvidence",
    "AlignmentParticipant",
    "AlignmentRelation",
    "AlignmentRelationFamily",
    "AlignmentAxisFamily",
    "AlignmentRelationOwnershipMap",
    "alignment relation identity helpers for 10.01–10.04"
  ],
  "owns_metrics": [],
  "descriptors_only": [
    "alignment.relation.family",
    "alignment.relation.axisFamily",
    "alignment.relation.participantCount",
    "alignment.anchor.family",
    "alignment.anchor.coordinateAxis",
    "alignment.relation.status"
  ],
  "alignment_subject_ref_schema": {
    "subjectRef": "canonical upstream object/text/grid/content identity",
    "subjectOwner": "canonical owner module/service",
    "subjectKind": "OBJECT|TEXT|GRID|CELL|REGION|GUIDE|OTHER",
    "geometryEvidenceRef": "optional exact geometry evidence ref",
    "canvasRef": "required when relation is geometric",
    "coordinateFrame": "required when relation is geometric",
    "sourceUnit": "required when relation is geometric"
  },
  "anchor_evidence_schema": {
    "anchorRef": "stable evidence ref",
    "subjectRef": "subject identity",
    "anchorFamily": "GEOMETRIC_EDGE|GEOMETRIC_CENTER|TEXT_BASELINE|GRID_REFERENCE",
    "anchorKind": "owner-qualified enum/code",
    "coordinateAxis": "X|Y|BASELINE",
    "coordinateRaw": "optional numeric coordinate; may remain N_A at taxonomy stage",
    "geometryEvidenceRef": "exact upstream evidence",
    "sourceOwnerRef": "canonical evidence owner",
    "canvasRef": "same geometric canvas lineage",
    "coordinateFrame": "same coordinate frame",
    "sourceUnit": "same exact raw unit",
    "confidence": "0..1",
    "provenance": "DERIVED|STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET"
  },
  "participant_schema": {
    "participantRef": "derived stable ref from subjectRef+anchorRef",
    "subjectRef": "exact subject",
    "anchorRef": "exact anchor evidence",
    "semanticRoleRef": "optional opaque external role ref",
    "semanticConstraintRefs": "optional opaque refs; no interpretation in 10.00"
  },
  "relation_families": {
    "PAIRWISE_ANCHOR_ALIGNMENT": {
      "owner": "Compo10.01 / Compo10.02 depending anchor family",
      "arity": "exactly 2 distinct participants",
      "symmetry": "SYMMETRIC",
      "examples": "edge/center/baseline pairwise relation"
    },
    "MULTI_SUBJECT_SHARED_AXIS": {
      "owner": "Compo10.03",
      "arity": "2+ distinct participants",
      "symmetry": "SET_LIKE",
      "examples": "common left edge / common center / common baseline axis"
    }
  },
  "axis_families": {
    "INLINE_X": "geometric X-coordinate alignment family",
    "BLOCK_Y": "geometric Y-coordinate alignment family",
    "TEXT_BASELINE": "text baseline relation family",
    "REFERENCE_AXIS": "explicit owner-provided guide/grid/reference axis"
  },
  "alignment_relation_schema": {
    "relationRef": "stable relation identity",
    "relationFamily": "PAIRWISE_ANCHOR_ALIGNMENT|MULTI_SUBJECT_SHARED_AXIS",
    "axisFamily": "INLINE_X|BLOCK_Y|TEXT_BASELINE|REFERENCE_AXIS",
    "participants": "canonicalized participant refs",
    "sourceEvidenceRefs": "exact anchor evidence refs",
    "offsetRaw": "N_A in 10.00 root; owned by child measuring module",
    "toleranceRef": "deferred to 10.04",
    "semanticConstraintRefs": "opaque optional refs",
    "status": "SCHEMA_READY|N_A|INVALID",
    "confidence": "0..1",
    "provenance": "DERIVED",
    "mutationAllowed": false
  },
  "identity_policy": {
    "PAIRWISE_ANCHOR_ALIGNMENT": "participant pair sorted by canonical participantRef because relation is symmetric",
    "MULTI_SUBJECT_SHARED_AXIS": "set-like participant refs sorted and unique",
    "order_invariance": "input order must not change identity for current symmetric/set-like alignment families",
    "directional_future": "would require an explicit new relation subtype; never inferred"
  },
  "axis_compatibility": {
    "INLINE_X": [
      "X"
    ],
    "BLOCK_Y": [
      "Y"
    ],
    "TEXT_BASELINE": [
      "BASELINE"
    ],
    "REFERENCE_AXIS": [
      "X",
      "Y",
      "BASELINE"
    ],
    "mixed_axis_without_adapter": "INVALID"
  },
  "topic10_ownership_map": {
    "10.00": "root taxonomy + participant/anchor contracts + identity/ownership",
    "10.01": "left/right/center/top/bottom pairwise geometric relations and offsets",
    "10.02": "text baseline evidence and baseline alignment relations",
    "10.03": "multi-object shared axes",
    "10.04": "tolerance, optical hooks, local alignment score, corrections/tests"
  },
  "metric_policy": {
    "direct_scoring": "FORBIDDEN in 10.00",
    "more_alignment_is_better": "FORBIDDEN",
    "zero_offset_is_always_better": "FORBIDDEN",
    "beautyScore": "FORBIDDEN"
  },
  "hard_constraints": [
    "10.00 owns AlignmentRelation root schema, alignment taxonomy, participant/anchor reference contracts, relation-family ownership map and canonical symmetric identity rules.",
    "10.00 does not own concrete left/right/center/top/bottom offset measurement; Compo10.01 owns those pairwise geometric relations.",
    "10.00 does not own text baseline extraction or baseline relation measurement; Compo10.02 owns them.",
    "10.00 does not own multi-object shared-axis construction; Compo10.03 owns it.",
    "10.00 does not own tolerance, optical corrections, local alignment score or final alignment acceptance; Compo10.04 owns them.",
    "Alignment consumes geometry/reference anchors from their canonical owners and never re-owns source geometry.",
    "AlignmentSubjectRef identifies the subject only; it does not copy or reinterpret the subject's geometry.",
    "AlignmentAnchorEvidence must be owner-qualified and evidence-qualified.",
    "Baseline anchor evidence is accepted only when supplied by the canonical text/baseline owner; 10.00 does not synthesize baselines from bounding boxes.",
    "Grid anchor evidence may reference Topic8/9 geometry but must not re-own grid topology or occupancy.",
    "Alignment relation semantics are relational and symmetric unless a later relation subtype explicitly declares directional semantics.",
    "For symmetric pairwise alignment, participant input order must not change relation identity.",
    "Duplicate participants in one pairwise relation are INVALID.",
    "A pairwise alignment relation requires exactly two distinct participants.",
    "A shared-axis relation family is reserved for 10.03 and requires at least two distinct participants there; 10.00 defines taxonomy only.",
    "Anchor axis compatibility is explicit: X-coordinate anchors cannot be silently compared to Y-coordinate anchors.",
    "TEXT_BASELINE is a distinct baseline axis family and must not be silently converted to a generic bottom edge.",
    "Alignment taxonomy distinguishes GEOMETRIC_EDGE, GEOMETRIC_CENTER, TEXT_BASELINE and GRID_REFERENCE anchor families.",
    "Baseline relation semantics are not inferred from typographic visual bounds.",
    "AlignmentRelation is a descriptor/evidence container; existence of an alignment relation is not a quality score.",
    "More alignment is not universally better.",
    "Perfect zero offset is not universally better without an explicit target/tolerance profile.",
    "Intentional misalignment/grid-break remains a valid future/contextual condition and is not automatically an error.",
    "10.00 has no numeric metric owner.",
    "10.00 does not create placement candidates.",
    "10.00 does not mutate object positions, grid geometry, text geometry or content.",
    "Correction/repair recommendations are owner-qualified requests and mutationAllowed=false.",
    "Semantic constraints are deferred opaque inputs; 10.00 must not infer face/object-part semantics.",
    "A semantic hard constraint may later invalidate an otherwise geometric alignment, but 10.00 does not invent that priority today.",
    "Module execution order is not rule priority.",
    "Alignment evidence and semantic evidence remain separate channels until a canonical context/priority owner combines them.",
    "IDEA references are R&D links, not provenance classes and not owners.",
    "LAB results do not mutate this canonical taxonomy automatically.",
    "All significant alignment observations and relation decisions must be serializable for future DATA/human calibration.",
    "N/A != 0.",
    "No beautyScore."
  ],
  "hard_rules": [
    "10.00 owns AlignmentRelation root schema, alignment taxonomy, participant/anchor reference contracts, relation-family ownership map and canonical symmetric identity rules.",
    "10.00 does not own concrete left/right/center/top/bottom offset measurement; Compo10.01 owns those pairwise geometric relations.",
    "10.00 does not own text baseline extraction or baseline relation measurement; Compo10.02 owns them.",
    "10.00 does not own multi-object shared-axis construction; Compo10.03 owns it.",
    "10.00 does not own tolerance, optical corrections, local alignment score or final alignment acceptance; Compo10.04 owns them.",
    "Alignment consumes geometry/reference anchors from their canonical owners and never re-owns source geometry.",
    "AlignmentSubjectRef identifies the subject only; it does not copy or reinterpret the subject's geometry.",
    "AlignmentAnchorEvidence must be owner-qualified and evidence-qualified.",
    "Baseline anchor evidence is accepted only when supplied by the canonical text/baseline owner; 10.00 does not synthesize baselines from bounding boxes.",
    "Grid anchor evidence may reference Topic8/9 geometry but must not re-own grid topology or occupancy.",
    "Alignment relation semantics are relational and symmetric unless a later relation subtype explicitly declares directional semantics.",
    "For symmetric pairwise alignment, participant input order must not change relation identity.",
    "Duplicate participants in one pairwise relation are INVALID.",
    "A pairwise alignment relation requires exactly two distinct participants.",
    "A shared-axis relation family is reserved for 10.03 and requires at least two distinct participants there; 10.00 defines taxonomy only.",
    "Anchor axis compatibility is explicit: X-coordinate anchors cannot be silently compared to Y-coordinate anchors.",
    "TEXT_BASELINE is a distinct baseline axis family and must not be silently converted to a generic bottom edge.",
    "Alignment taxonomy distinguishes GEOMETRIC_EDGE, GEOMETRIC_CENTER, TEXT_BASELINE and GRID_REFERENCE anchor families.",
    "Baseline relation semantics are not inferred from typographic visual bounds.",
    "AlignmentRelation is a descriptor/evidence container; existence of an alignment relation is not a quality score.",
    "More alignment is not universally better.",
    "Perfect zero offset is not universally better without an explicit target/tolerance profile.",
    "Intentional misalignment/grid-break remains a valid future/contextual condition and is not automatically an error.",
    "10.00 has no numeric metric owner.",
    "10.00 does not create placement candidates.",
    "10.00 does not mutate object positions, grid geometry, text geometry or content.",
    "Correction/repair recommendations are owner-qualified requests and mutationAllowed=false.",
    "Semantic constraints are deferred opaque inputs; 10.00 must not infer face/object-part semantics.",
    "A semantic hard constraint may later invalidate an otherwise geometric alignment, but 10.00 does not invent that priority today.",
    "Module execution order is not rule priority.",
    "Alignment evidence and semantic evidence remain separate channels until a canonical context/priority owner combines them.",
    "IDEA references are R&D links, not provenance classes and not owners.",
    "LAB results do not mutate this canonical taxonomy automatically.",
    "All significant alignment observations and relation decisions must be serializable for future DATA/human calibration.",
    "N/A != 0.",
    "No beautyScore."
  ],
  "soft_constraints": [],
  "preferences": [],
  "overrides_allowed_by": [
    "new explicit upstream anchor evidence creates new relation lineage",
    "10.04 may interpret measured alignment relative to explicit tolerance/optical profiles",
    "future semantic/context owner may combine opaque semantic constraints without changing 10.00 ownership"
  ],
  "initial_heuristics": {},
  "style_preset_values": [],
  "candidate_generation": {
    "alignment_candidates": "NONE in 10.00",
    "reason": "taxonomy/schema module only; measurement/candidates are deferred to child modules"
  },
  "correction_policy": {
    "foreign_mutation": "FORBIDDEN",
    "invalid_anchor_evidence": "route to sourceOwnerRef",
    "axis_mismatch": "return INVALID; no silent projection",
    "missing_anchor_coordinate": "return N_A where relation measurement requires it",
    "semantic_conflict": "defer/report through semanticConstraintRefs; do not invent priority",
    "optical_adjustment": "route to Compo10.04",
    "intentional_grid_break": "do not auto-correct; future/context owner decides"
  },
  "deferred_inputs": [
    "Compo10.01 concrete geometric relation offsets",
    "Compo10.02 baseline extraction/relation contracts",
    "Compo10.03 shared-axis aggregation",
    "Compo10.04 tolerance/optical/scoring",
    "future semantic content/part/sensitive-zone evidence",
    "future canonical priority/relaxation policy"
  ],
  "ideas_refs": [
    "IDEA-01",
    "IDEA-02",
    "IDEA-03",
    "IDEA-04",
    "IDEA-05",
    "IDEA-06",
    "IDEA-07"
  ],
  "data_capture": [
    "subjectRef and anchorRef lineage",
    "relationFamily and axisFamily",
    "participant set and canonical relationRef",
    "sourceEvidenceRefs",
    "N_A/INVALID reasons",
    "future measured offset/tolerance refs when child modules provide them",
    "semanticConstraintRefs presence without interpretation",
    "repair/correction request refs",
    "human feedback reason codes when available"
  ],
  "deferred_semantic_inputs": [
    "semanticObjectRef?",
    "semanticPartRef?",
    "semanticSensitiveZoneRef?",
    "semanticConstraintRefs[]",
    "intentRef?"
  ],
  "human_feedback_hooks": [
    "ALIGNMENT_RELATION_WRONG",
    "WRONG_ANCHOR_SELECTED",
    "OPTICAL_OFFSET_NEEDED",
    "SEMANTIC_CONFLICT",
    "INTENTIONAL_MISALIGNMENT",
    "OTHER"
  ],
  "conflict_priority_assumptions": [
    "module execution order is not priority",
    "10.00 never overrides semantic hard constraints",
    "10.00 never overrides intentional grid-break intent",
    "geometry evidence and semantic evidence remain separate channels",
    "unresolved conflict is diagnosed/deferred rather than silently relaxed"
  ],
  "lab_hooks": [
    "LAB: compare human judgments for edge-vs-center anchor taxonomy",
    "LAB: semantic-sensitive alignment counterexamples without changing CANON",
    "LAB: intentional misalignment examples to verify descriptor != score",
    "LAB: collect human reason codes for wrong-anchor vs optical-offset corrections",
    "LAB: use alignment relations in text-to-graphic prototype as EXPERIMENT only"
  ],
  "recompute_when": [
    "subject identity/geometry evidence changes",
    "anchor evidence ref or coordinate lineage changes",
    "canvas/unit/frame changes",
    "semanticConstraintRefs version changes only if downstream context evaluation consumes them"
  ],
  "tests": [
    "taxonomy enum validation",
    "owner-qualified subject/anchor refs",
    "pairwise symmetric identity order invariance",
    "duplicate participant rejection",
    "axis compatibility",
    "baseline distinct from bottom edge",
    "grid reference does not re-own grid topology",
    "semantic refs remain opaque",
    "module order not priority",
    "data/human/LAB hooks serializable",
    "no score/global leakage/foreign mutation"
  ],
  "finality": "ALIGNMENT_ROOT_TAXONOMY_AND_REFERENCE_CONTRACTS_ONLY"
}
ARCHITECTURE CHECKPOINT · 10.00 OWNS ALIGNMENT RELATION ROOT TAXONOMY, PARTICIPANT/ANCHOR REFERENCE CONTRACTS, SYMMETRIC IDENTITY AND TOPIC10 OWNERSHIP MAP. 10.01 OWNS LEFT/RIGHT/CENTER/TOP/BOTTOM OFFSETS. 10.02 OWNS TEXT BASELINE EXTRACTION/RELATIONS. 10.03 OWNS MULTI-OBJECT SHARED AXES. 10.04 OWNS TOLERANCE, OPTICAL HOOKS AND LOCAL ALIGNMENT SCORE. ALIGNMENT CONSUMES UPSTREAM GEOMETRY BY REF AND NEVER RE-OWNS GRID TOPOLOGY/OCCUPANCY. TEXT_BASELINE != BOTTOM EDGE. X != Y. PAIRWISE SYMMETRIC INPUT ORDER MUST NOT CHANGE RELATION IDENTITY. RELATION EXISTENCE != QUALITY. MORE ALIGNMENT != BETTER. SEMANTIC CONSTRAINTS ARE OPAQUE DEFERRED INPUTS. MODULE ORDER != RULE PRIORITY. IDEA != CANON. EXPERIMENT != CANON. DATA/HUMAN/LAB HOOKS ARE SERIALIZABLE. NO FOREIGN MUTATION. N/A != 0. NO BEAUTYSCORE.
VISITS / ...