COMPO · 25.02 · L / Z / VERTICAL / DIAGONAL

Explicit segments.
No guessed angles.

25.02 реализует angular/linear route geometry только из owner-qualified point, segment, junction и relation evidence. L и Z определяются topology + explicit PERPENDICULAR/PARALLEL declarations; vertical/diagonal требуют явного segment class. Никаких скрытых angle tolerances, object projection или score.

ModuleCompo 25.02
FamiliesL / Z / vertical / diagonal
Relationsexplicit only
Projectiondeferred 25.03
Metricsnone
NextSTOP

Angular/linear geometry realization only

25.00 supplies identity and path/frame lineage. 25.02 resolves explicit geometry for four declared kinds and stops before object-route analysis.

00 / contract
25.00 FlowTemplate (L_PATH | Z_PATH | VERTICAL_PATH | DIAGONAL_PATH) + explicit indexed points + explicit contiguous segments + explicit junctions where required + explicit PARALLEL / PERPENDICULAR relation evidence → AngularLinearPathDescriptor NO object projection NO coverage / gaps NO ordered objects NO template selection NO scoring

Visual anatomy of four path families

These diagrams explain the data contract. They do not create geometry evidence and are not universal composition rules.

01 / explainer

L = two segments + perpendicular relation

Rotation is allowed. Canonical identity comes from explicit topology, not screen-axis orientation.

L_PATH · 3 points · 2 segmentsPERPENDICULAR (explicit)
junction: CORNERrelation: PERPENDICULAR

Rotated L is still L

HORIZONTAL/VERTICAL labels are not required for L if topology and relation evidence are explicit.

ROTATED L · EXPLICIT ⟂ RELATION

Z = three segments + outer parallel relation

The middle connector can be diagonal while outer segments are explicitly declared parallel.

OUTER SEGMENTS: PARALLELZ_PATH · 4 points · 3 segments
2 × CORNERsegment 0 ∥ segment 2

Missing relation stays unresolved

A Z-looking polyline does not become Z merely because pixels appear parallel.

NO EXPLICIT PARALLEL RELATION → N_A

VERTICAL_PATH = one explicit vertical segment

Coordinates do not auto-classify the path. Segment class is owner-qualified evidence.

segmentClass = VERTICAL

Near-vertical is not silently accepted

If the owner has not declared VERTICAL, the module does not invent a tolerance.

COORDINATES ALONE ≠ VERTICAL EVIDENCE

DIAGONAL_PATH = one explicit diagonal segment

This is a route template realization, not a scene-wide diagonal-composition axis.

segmentClass = DIAGONAL

Firewall with Topic 24

25.02 route geometry remains local to one template/path binding.

ROUTEOBJECTSROUTE AXIS ≠ SCENE DIAGONAL SCORE
Canonical rule
Geometry classes and relations are explicit evidence. The diagrams are explanatory only; no angle, slope, visual similarity or “looks like Z” inference is canonical here.

One owner for angular/linear realization

25.02 owns only this realization layer. Upstream identity and downstream interpretation remain foreign.

02 / ownership
OWNS

Geometry evidence + topology descriptor

Indexed points, contiguous segments, junctions, explicit segment classes, explicit segment relations and immutable descriptors.

DOES NOT OWN

Projection, fit, selection, score

Object-route projection belongs to 25.03; template target/scoring/candidates belong to 25.04.

Evidence is exact and owner-qualified

Every geometry record carries exact scope/snapshot/template/path/pathOwner/frame lineage.

03 / evidence

Point

AngularLinearPointEvidence {
  pointIndex, x, y,
  exact lineage,
  source owner
}

Segment

AngularLinearSegmentEvidence {
  segmentIndex,
  fromPointIndex, toPointIndex,
  segmentClass
}

Junction

AngularLinearJunctionEvidence {
  junctionIndex,
  incomingSegmentIndex,
  outgoingSegmentIndex,
  junctionKind
}

Relation

AngularLinearSegmentRelationEvidence {
  relationIndex,
  segmentAIndex, segmentBIndex,
  relationKind
}

Topology contracts are explicit

Missing relation evidence is N_A. Malformed topology is INVALID. Neither becomes numeric zero.

04 / topology
KindPointsSegmentsJunctionsRequired relation/class
L_PATH32 contiguous1 CORNERsegment 0 ⟂ segment 1
Z_PATH43 contiguous2 CORNERsegment 0 ∥ segment 2
VERTICAL_PATH210segmentClass=VERTICAL
DIAGONAL_PATH210segmentClass=DIAGONAL

Traversal direction remains route semantics

Reversing a directed path swaps start/end representation. It still does not establish attention order or object order.

05 / traversal

DIRECTED

declared traversal A → B → C

Meaning: stored route traversal orientation only.

NOT IMPLIED

NO observed attention/object order

Deferred: projection/order is 25.03; attention semantics are Topic 27.

N_A and INVALID remain different

Unresolved evidence is not malformed evidence.

06 / status
OK

Complete exact evidence

All required indices, topology and relation/class declarations exist and agree.

N_A

Missing or conflicting

Example: Z has three segments but no explicit outer PARALLEL relation.

INVALID

Malformed topology

Example: L segment 1 does not begin at point 1 or segment indices are discontinuous.

Immutable downstream attachment

The 25.00 seed is referenced, never mutated.

07 / attachment
AngularLinearFlowPathAttachment {
  flowSystemSeedRef,
  angularLinearFlowPathSetRef,
  status,
  mutationAllowed: false
}

25.00 FlowSystemSeed.angularPathAttachmentRef remains null.

Angular/linear path pipeline

Visual summary of the module boundary.

08 / pipeline
1 · 25.00 template

Exact L/Z/VERTICAL/DIAGONAL template + path owner/frame binding.

→
2 · Explicit geometry

Points + segments + junctions + segment relations/classes. No guessed angles.

→
3 · 25.02 descriptor

Topology class and exact counts. No projection, ordered objects, fit or score.

Geometry ≠ interpretation

Critical boundaries prevent cross-topic and downstream leakage.

09 / firewalls
explicit VERTICAL class != inferred from slope explicit DIAGONAL class != Topic24 diagonal-composition axis PERPENDICULAR relation != aesthetic quality PARALLEL relation != balance score DIRECTED traversal != eye-flow observation path point order != object order geometry descriptor != route-fit descriptor route realization != template preference N_A != 0 INVALID != 0 local != global

CANON → LAB → DATA → IDEAS

Research hooks remain separate from canonical runtime semantics.

10 / hooks
IDEAS_REFS[]Rotated L/Z recognition, perspective ambiguity, route legibility.
DATA_CAPTURE[]Points, segments, junctions, explicit relations and conflicts.
DEFERRED_SEMANTIC_INPUTS[]Route desirability, projection fit, gap tolerance.
HUMAN_FEEDBACK_HOOKS[]Segment class, relation and frame correction.
CONFLICT_PRIORITY_ASSUMPTIONS[]Confidence/order never resolves contradictory geometry.
LAB_HOOKS[]Rotation, parallel/perpendicular perception studies.

25.02 regression suite

Tests cover exact lineage, bounded evidence, topology contracts, N_A/INVALID distinction, rotated-L semantics, Z outer-parallel declaration, vertical/diagonal explicit classes, immutable attachment and 25.03/25.04 firewalls.

11 / deterministic tests
Tests not run yet.

DATA FOR LAYOUT ENGINE

Machine-readable contract.

12 / machine contract
{
  "module": "Compo 25.02",
  "name": "l_z_vertical_diagonal_paths",
  "version": "1.0-canonical",
  "canonical_main_title": "L/Z/vertical/diagonal paths",
  "topic": "25_S_CURVE_L_STRUCTURE_AND_OTHER_ROUTES",
  "scope": "EXPLICIT_OWNER_QUALIFIED_POINT_SEGMENT_JUNCTION_AND_SEGMENT_RELATION_EVIDENCE_FOR_L_Z_VERTICAL_DIAGONAL_PATH_GEOMETRY_REALIZATION_AND_TOPOLOGY_DESCRIPTORS_ONLY_WITHOUT_OBJECT_PROJECTION_COVERAGE_GAPS_ORDERING_TEMPLATE_SELECTION_OR_SCORING",
  "main_topic_contract": {
    "topic_title": "S-кривая, L-структура и другие маршруты",
    "topic_goal": "Хранит типовые маршруты S/C/L/Z и другие flow templates, чтобы сравнивать arrangement объектов с конкретной траекторией, а не оценивать движение абстрактно.",
    "expected_output": "FlowTemplate, route-fit descriptors, ordered objects",
    "planned_files": [
      "25.00 Flow-template schema",
      "25.01 S/C/serpentine paths",
      "25.02 L/Z/vertical/diagonal paths",
      "25.03 Object projection, coverage and gaps",
      "25.04 Template selection, scoring and tests"
    ]
  },
  "ownership": {
    "owner": "Compo25.02",
    "owns": [
      "AngularLinearSegmentClass taxonomy",
      "AngularLinearSegmentRelationKind taxonomy",
      "AngularLinearPointEvidence",
      "AngularLinearSegmentEvidence",
      "AngularLinearJunctionEvidence",
      "AngularLinearSegmentRelationEvidence",
      "AngularLinearGeometryPolicy",
      "AngularLinearPathDescriptor",
      "AngularLinearPathSet",
      "AngularLinearPathAttachment",
      "exact owner-qualified point/segment realization for L_PATH / Z_PATH / VERTICAL_PATH / DIAGONAL_PATH",
      "explicit perpendicular/parallel relation validation without hidden angle tolerance",
      "identity/status/provenance rules for Topic25 angular/linear path layer",
      "non-mutating correction request for angular/linear path evidence"
    ],
    "does_not_own": [
      "FlowTemplate identity/path binding/traversal declaration — Compo25.00",
      "S/C/serpentine geometry realization — Compo25.01",
      "raw line/segment extraction from image — upstream/path owner",
      "implicit horizontal/vertical/diagonal classification from pixels",
      "implicit angle tolerance or near-parallel threshold",
      "object projection onto route — Compo25.03",
      "coverage, gaps or ordered-object derivation — Compo25.03",
      "template selection, target profile, MetricResult or scoring — Compo25.04",
      "Topic24 diagonal-composition axis semantics",
      "Topic26 rhythm semantics",
      "Topic27 eye-flow / attention semantics",
      "dominance / hierarchy / beautyScore / final-layout ranking",
      "foreign geometry/style/semantic mutation"
    ]
  },
  "taxonomies": {
    "supportedTemplateKinds": [
      "L_PATH",
      "Z_PATH",
      "VERTICAL_PATH",
      "DIAGONAL_PATH"
    ],
    "AngularLinearSegmentClass": [
      "HORIZONTAL",
      "VERTICAL",
      "DIAGONAL",
      "OWNER_DEFINED"
    ],
    "AngularLinearSegmentRelationKind": [
      "PARALLEL",
      "PERPENDICULAR",
      "OWNER_DEFINED"
    ],
    "AngularLinearJunctionKind": [
      "CORNER",
      "OWNER_DEFINED"
    ]
  },
  "topology_contract": {
    "L_PATH": "3 points, 2 contiguous segments, 1 CORNER junction, explicit PERPENDICULAR relation between segment 0 and 1",
    "Z_PATH": "4 points, 3 contiguous segments, 2 CORNER junctions, explicit PARALLEL relation between outer segments 0 and 2",
    "VERTICAL_PATH": "2 points, 1 segment explicitly classified VERTICAL, no junction",
    "DIAGONAL_PATH": "2 points, 1 segment explicitly classified DIAGONAL, no junction",
    "no_hidden_angle_tolerance": true,
    "no_coordinate_derived_segment_class": true
  },
  "geometry_policy": {
    "selectionMode": "EXPLICIT_ANGULAR_LINEAR_TEMPLATES_ONLY",
    "maxTemplates": [
      1,
      256
    ],
    "maxPointsPerPath": [
      2,
      2048
    ],
    "maxSegmentsPerPath": [
      1,
      2047
    ],
    "maxJunctionsPerPath": [
      0,
      2046
    ],
    "maxRelationsPerPath": [
      0,
      128
    ],
    "overflow": "N_A_WITHOUT_TRUNCATION",
    "missingEvidence": "N_A",
    "conflictingEvidence": "N_A_NO_WINNER",
    "malformedTopology": "INVALID",
    "autoPathExtraction": false,
    "autoSegmentClassification": false,
    "autoAngleInference": false,
    "autoObjectProjection": false,
    "autoObjectOrdering": false,
    "autoTemplateSelection": false,
    "autoScoring": false
  },
  "descriptor_contract": {
    "pointCount": "exact explicit count",
    "segmentCount": "exact explicit count",
    "junctionCount": "exact explicit count",
    "segmentClasses": "explicit evidence only",
    "topologyClass": "DECLARED_L_PATH | DECLARED_Z_PATH | DECLARED_VERTICAL_PATH | DECLARED_DIAGONAL_PATH",
    "routeFitDescriptorRef": null,
    "projectionAttachmentRef": null,
    "orderedObjectRefs": [],
    "scoreRef": null,
    "metricResultRefs": []
  },
  "status_semantics": {
    "OK": "exact 25.00 lineage + complete valid explicit geometry evidence + declared topology contract satisfied",
    "N_A": "missing/conflicting/overflow owner-qualified evidence; never numeric zero",
    "INVALID": "malformed records, broken index continuity, impossible declared topology; never numeric zero"
  },
  "firewalls": [
    "L/Z/vertical/diagonal geometry != route fit",
    "explicit VERTICAL class != coordinate-derived vertical inference",
    "explicit DIAGONAL class != Topic24 diagonal composition",
    "PERPENDICULAR relation != aesthetic preference",
    "PARALLEL relation != balance score",
    "DIRECTED traversal != observed attention order",
    "path point order != object order",
    "geometry realization != object projection",
    "missing relation != false relation",
    "N_A != 0",
    "INVALID != 0",
    "descriptor != score",
    "local != global"
  ],
  "root_attachment": {
    "flowSystemSeedRef": "exact 25.00 seed",
    "angularLinearFlowPathSetRef": "exact 25.02 set",
    "25_00_seed_angularPathAttachmentRef_remains": null,
    "mutationAllowed": false
  },
  "visual_explanation": {
    "diagrams": [
      "L path anatomy: two segments + explicit perpendicular relation",
      "Z path anatomy: three segments + explicit outer parallel relation",
      "vertical vs diagonal single-segment declarations",
      "directed traversal reversal without object-order inference",
      "missing relation vs malformed topology",
      "25.00 template -> explicit evidence -> 25.02 descriptor pipeline"
    ]
  },
  "ideas_data_hooks": {
    "IDEAS_REFS": [
      "L/Z route recognition under rotation",
      "explicit relation labeling reliability",
      "near-parallel perception vs exact declaration",
      "vertical/diagonal route ambiguity under perspective",
      "directed reversal and reading culture",
      "responsive transformation preserving topology",
      "angular route legibility vs segment count"
    ],
    "DATA_CAPTURE": [
      "template/path/frame lineage",
      "point and segment evidence",
      "junction evidence",
      "parallel/perpendicular relation evidence",
      "topology class/status",
      "conflict and overflow status"
    ],
    "DEFERRED_SEMANTIC_INPUTS": [
      "route desirability",
      "object-route fit",
      "coverage target",
      "gap tolerance",
      "main template selection"
    ],
    "HUMAN_FEEDBACK_HOOKS": [
      "point/segment correction",
      "segment-class correction",
      "junction correction",
      "relation correction",
      "path-owner/frame correction"
    ],
    "CONFLICT_PRIORITY_ASSUMPTIONS": [
      "confidence does not resolve conflicting geometry",
      "source order does not resolve relation conflicts",
      "visual closeness does not create PARALLEL/PERPENDICULAR declaration",
      "route kind label is not score"
    ],
    "LAB_HOOKS": [
      "rotated L/Z recognition study",
      "parallel/perpendicular perception study",
      "vertical/diagonal ambiguity study",
      "angular-route sparse sampling study"
    ]
  },
  "metrics": {
    "owns_metrics": [],
    "independent_numeric_votes": 0
  },
  "topic25ProgressAfterThisModule": "3/5 local",
  "next_module": "Compo 25.03 — Object projection, coverage and gaps",
  "hard_stop": "NO_25_03_25_04_IMPLEMENTATION_IN_THIS_FILE"
}
VISITS / ...