COMPO · 25.03 · OBJECT PROJECTION / COVERAGE / GAPS

Project first.
Judge later.

25.03 связывает explicit objects с exact realized flow path, хранит normalized path position и projected footprint interval, строит геометрический path-coordinate order, объединяет покрытые интервалы и вычисляет gaps. Ни coverage, ни gap size, ни distance здесь не становятся quality score.

ModuleCompo 25.03
Input25.00 + 25.01/25.02
Projectionexplicit evidence
Coverageinterval union
Metricsnone
NextSTOP

Projection + interval algebra, no preference

25.03 starts only after a valid 25.00 template and an exact realized path descriptor from 25.01 or 25.02 exist.

00 / contract
25.00 FlowTemplate + FlowSystemSeed + exact 25.01 CurvedFlowPathDescriptor OR 25.02 AngularLinearPathDescriptor + explicit object refs + owner-qualified projection evidence → ObjectFlowProjectionDescriptor[] → FlowPathCoordinateOrderDescriptor → FlowCoverageDescriptor → FlowGapDescriptor[] → FlowProjectionCoverageAttachment NO template selection NO target profile NO route-fit quality NO MetricResult NO attention-order inference

What “projection” means here

The visual explains the data contract. 25.03 resolves supplied projection evidence; it does not secretly re-extract pixels or invent a nearest point from foreign geometry.

01 / visual explainer

Object → exact path coordinate

Each object carries a normalized path position t ∈ [0,1], a perpendicular distance, and a projected footprint interval.

OBJ At = 0.58⊥ distancecoverage [0.51, 0.66]

Evidence, not hidden geometry

The module can accept exact projection evidence from an owner-qualified geometry adapter. Missing or conflicting evidence becomes N_A.

geometry ownerprojection evidenceCompo25.03resolve exact lineageNo pixel extraction · no auto-nearest-point fallback

One owner for projection/coverage descriptors

Projection geometry and coverage algebra live here; template desirability remains downstream.

02 / ownership
Own

Projection descriptors

Exact object/path lineage, normalized path position, projected distance and footprint interval.

Own

Coverage + gaps

Interval union, overlap excess, complement gaps, edge/interior gap classification.

Defer

Fit / score

No preference for full coverage, short distance, small gaps, specific route family or visual style.

Projection evidence is exact and owner-qualified

Object, template, realized path descriptor and coordinate frame must all match. Confidence is diagnostic only.

03 / evidence
FlowObjectProjectionEvidence {
  scopeRef, snapshotRef,
  templateRef,
  pathDescriptorRef,
  pathOwnerRef,
  coordinateFrameRef,

  objectRef, objectOwnerRef,
  projectionMode: ANCHOR_AND_INTERVAL,
  pathPositionNormalized,      // 0..1
  perpendicularDistance,      // >= 0
  distanceUnitRef,
  coverageStartNormalized,    // 0..1
  coverageEndNormalized,      // 0..1

  sourceRef, sourceOwnerRef,
  confidence, provenance,
  status,
  mutationAllowed: false
}
Strict interval invariantcoverageStartNormalized ≤ pathPositionNormalized ≤ coverageEndNormalized. A degenerate interval such as [0.42, 0.42] is valid and contributes exactly zero path coverage. That zero is not N_A.

Conflicts stay visible

Same exact object+path lineage with incompatible projection values produces N_A. Confidence never elects a winner.

04 / resolution

Consensus → OK

Repeated evidence with identical projected values can resolve to one immutable descriptor.

OBJsame t / intervalSTATUS = OK

Conflict → N_A

Two incompatible positions for the same exact evidence identity are preserved as unresolved.

OBJSTATUS = N_A

Path-coordinate order keeps ties

Sorting by normalized path position is geometry bookkeeping. Exact ties become groups; they are never broken by object name, confidence, size or hierarchy.

05 / order

Strict coordinate sequence

Distinct t values can form an exact geometric sequence. DIRECTED traversal may expose this as traversal-coordinate order only.

A · .18B · .52C · .86A → B → C = path coordinates, not eye movement

Exact tie remains a group

Two objects at the same normalized coordinate do not receive a fabricated strict order.

A{B,C} · .55group preserved · strict order unavailable
pathCoordinateGroups = [[A], [B,C], [D]] strictObjectOrderRefs = [] // tie exists directionalTraversalOrderRefs = [] // no fabricated winner This is not a failure of geometry. It is an exact tie.

Coverage is interval union

Each projected object contributes a closed normalized interval. The route coverage descriptor uses set union, so overlap is not counted twice.

06 / coverage

Union removes double counting

Raw interval lengths may overlap. unionCoverageFraction measures covered path extent once.

ABunion [0.08, 0.76] · overlap counted once

Full, partial, zero are descriptors

Coverage classes describe geometry only. FULL is not automatically good; ZERO can be valid for point-like projections.

FULLPARTIALZEROdescriptor ≠ preference

Gaps are the complement of coverage

Gaps are computed inside [0,1] after interval union. Edge gaps and interior gaps have distinct geometric labels, without quality semantics.

Start / interior / end gaps

START_EDGEINTERIOREND_EDGEgap length is descriptive until 25.04 target profile exists

N_A is not an empty route

Missing projection evidence prevents coverage computation. It must not collapse to uncoveredFraction = 1 or coverage = 0.

MISSING EVIDENCEN_Acoverage = nullgaps = []N_A ≠ 0 · N_A ≠ 100% uncovered

Bounded explicit-only projection set

No Cartesian product over every scene object × every flow template. The caller supplies exact object refs for one exact realized path.

08 / policy
Policy fieldCanonical behavior
selectionModeEXPLICIT_OBJECT_REFS_ONLY
maxObjects1..4096; overflow → N_A, no truncation
maxEvidencePerObject1..64; overflow → N_A, no sampling
conflictsN_A, no confidence winner and no averaging
autoObjectDiscoveryfalse
autoNearestPointComputationfalse
autoTemplateSelectionfalse
autoAttentionOrderingfalse
autoScoringfalse

Immutable downstream attachment

25.03 attaches its own set to the 25.00 seed by reference. The seed itself remains unchanged.

09 / attachment
FlowProjectionCoverageAttachment {
  flowSystemSeedRef,
  projectionCoverageSetRef,
  pathDescriptorRef,
  status,
  mutationAllowed: false
}
Non-mutation ruleFlowSystemSeed.projectionCoverageAttachmentRef stays null in the original 25.00 object. The attachment is a new immutable record. A correction request is also a request, never an edit of foreign geometry.

Geometry does not become aesthetic law

These firewalls are critical because coverage and gaps look score-like. In 25.03 they are only observed descriptors.

10 / firewalls
Coverage ≠ quality

1.0 coverage is not universally better than 0.7.

Distance ≠ penalty

Perpendicular distance is evidence, not a negative vote.

Gap ≠ defect

Large negative space along a route may be intentional.

Order ≠ attention

Geometric coordinate order is not eye tracking or reading order.

Overlap ≠ redundancy

Coverage overlap does not prove semantic duplication.

Directed ≠ observed

Template traversal direction remains declared semantics.

N_A ≠ zero

Missing/conflicting evidence does not become empty coverage.

Local ≠ global

Everything is bound to one scope/snapshot/path lineage.

25.03 data pipeline

The pipeline deliberately stops before selection and scoring.

11 / pipeline
1 · Exact path

Valid descriptor from 25.01 or 25.02, bound to one 25.00 template.

2 · Object refs

Explicit, unique, bounded selected objects. No scene-wide discovery.

3 · Projection

Resolve owner-qualified t, distance and projected footprint interval.

4 · Coverage

Union intervals, preserve overlaps as diagnostics, compute complement gaps.

5 · STOP

Attach descriptors. 25.04 owns target fit, selection, MetricResult and candidates.

CANON → LAB → DATA → IDEAS

Canonical descriptors stay separate from experiments about perceived flow continuity.

12 / hooks
IDEAS_REFS[]Projection/coverage visualization, route-density diagnostics, tie-group UI.
DATA_CAPTURE[]t positions, perpendicular distances, intervals, unions, gaps, overlap excess.
DEFERRED_SEMANTIC_INPUTS[]Desired coverage, tolerated gaps, distance preference and route fit remain 25.04.
HUMAN_FEEDBACK_HOOKS[]Projection point, footprint interval and selected-object corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]Confidence, lexical order and hierarchy do not break projection ties/conflicts.
LAB_HOOKS[]Perceived route continuity versus geometric coverage/gap patterns.

25.03 regression suite

Tests cover exact lineage, value domains, zero semantics, conflicts, tie groups, interval union, overlaps, edge/interior gaps, attachment immutability and strict 25.04/Topic26/27 firewalls.

13 / deterministic tests
Tests not run yet.

DATA FOR LAYOUT ENGINE

Machine-readable contract. No hidden score fields.

14 / machine contract
{
  "module": "Compo 25.03",
  "name": "object_projection_coverage_and_gaps",
  "version": "1.0-canonical",
  "canonical_main_title": "Object projection, coverage and gaps",
  "topic": "25_S_КРИВАЯ_L_СТРУКТУРА_И_ДРУГИЕ_МАРШРУТЫ",
  "scope": "EXPLICIT_OWNER_QUALIFIED_OBJECT_TO_FLOW_PATH_PROJECTION_EVIDENCE_NORMALIZED_PATH_COORDINATES_COVERAGE_INTERVAL_UNION_GAP_DESCRIPTORS_AND_GEOMETRIC_PATH_COORDINATE_ORDER_ONLY_WITHOUT_TEMPLATE_SELECTION_TARGET_FIT_SCORING_METRICRESULT_OR_ATTENTION_INFERENCE",
  "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.03",
    "owns": [
      "FlowProjectionMode taxonomy",
      "FlowGapKind taxonomy",
      "FlowObjectProjectionEvidence",
      "FlowObjectProjectionResolution",
      "ObjectFlowProjectionDescriptor",
      "FlowPathCoordinateOrderDescriptor",
      "FlowCoverageIntervalDescriptor",
      "FlowGapDescriptor",
      "FlowCoverageDescriptor",
      "FlowProjectionCoveragePolicy",
      "FlowProjectionCoverageSet",
      "FlowProjectionCoverageAttachment",
      "exact owner-qualified object-to-path projection evidence resolution",
      "normalized path-coordinate ordering with exact-tie groups",
      "coverage interval union and complement gap computation",
      "identity/status/provenance rules for Topic25 projection/coverage layer",
      "non-mutating correction request for projection/coverage evidence"
    ],
    "does_not_own": [
      "FlowTemplate identity/path binding/traversal declaration — Compo25.00",
      "S/C/serpentine geometry realization — Compo25.01",
      "L/Z/vertical/diagonal geometry realization — Compo25.02",
      "raw image-to-object detection or raw path extraction — upstream owners",
      "automatic nearest-point computation from foreign geometry not supplied as evidence",
      "template selection / target profile / route-fit quality — Compo25.04",
      "MetricResult / independent numeric vote — Compo25.04",
      "attention order / eye tracking / reading order — Topic27 or semantic owner",
      "rhythm interval semantics — Topic26",
      "beauty / final-layout quality"
    ]
  },
  "semantics": {
    "normalized_path_position": "0..1 coordinate on the exact realized path representation; it is geometry lineage, not quality.",
    "coverage_interval": "closed normalized interval [start,end] contributed by one projected object footprint; degenerate zero-length interval is valid.",
    "coverage_union": "set union of valid object coverage intervals; overlaps are not double-counted.",
    "gap": "complement of the coverage union inside [0,1]; exact zero gap is valid and distinct from N_A.",
    "path_coordinate_order": "geometric ordering by normalized path position; ties remain groups and are not silently broken.",
    "directed_traversal": "may expose traversal-coordinate order, but still does not prove observed attention order.",
    "undirected_traversal": "path-coordinate order is representation-relative and never promoted to directional attention order."
  },
  "status_semantics": {
    "OK": "required exact lineage is present and internally consistent",
    "N_A": "projection evidence is missing/conflicting or root lineage does not bind; no zero substitution",
    "INVALID": "malformed evidence/policy/value/domain violation",
    "zero": "a valid numeric observation, including zero perpendicular distance, zero interval length, zero uncovered fraction or zero gap length"
  },
  "policy": {
    "selectionMode": "EXPLICIT_OBJECT_REFS_ONLY",
    "projectionEvidenceMode": "EXACT_OBJECT_TEMPLATE_PATH_DESCRIPTOR_FRAME_LINEAGE_ONLY",
    "conflictMode": "N_A_NO_WINNER",
    "maxObjects": "1..4096",
    "maxEvidencePerObject": "1..64",
    "overflow": "N_A_NO_TRUNCATION",
    "autoObjectDiscovery": false,
    "autoPathInference": false,
    "autoNearestPointComputation": false,
    "autoTemplateSelection": false,
    "autoAttentionOrdering": false,
    "autoScoring": false
  },
  "firewalls": [
    "projection distance != penalty",
    "coverage fraction != quality score",
    "full coverage != automatically better",
    "large gap != automatically bad",
    "geometric path-coordinate order != attention order",
    "DIRECTED traversal != observed eye movement",
    "UNDIRECTED path != bidirectional attention",
    "overlap != redundancy",
    "zero gap != N_A",
    "N_A != 0",
    "descriptor != score",
    "local != global",
    "geometry != interpretation"
  ],
  "outputs": [
    "ObjectFlowProjectionDescriptor[]",
    "FlowPathCoordinateOrderDescriptor",
    "FlowCoverageDescriptor",
    "FlowGapDescriptor[]",
    "FlowProjectionCoverageAttachment"
  ],
  "metric_discipline": {
    "owns_metrics": [],
    "independent_numeric_votes": 0,
    "MetricResult": "FORBIDDEN_IN_25.03",
    "scoringGroup": null,
    "beautyScore": false
  },
  "topic25ProgressAfterThisModule": "4/5 local",
  "next_module": "Compo 25.04 — Template selection, scoring and tests",
  "hard_stop": "NO_25.04_IMPLEMENTATION_IN_THIS_FILE",
  "publication": "NOT_VERIFIED"
}
VISITS / ...