Template registration, not route judgment
Root contract deliberately stops before path realization and fit.
Visual atlas of declared route families
The pictures explain vocabulary. They are not hidden geometric defaults.
Curved family
25.00 knows only the declared kind/family. Exact curve geometry belongs to 25.01.
Angular / linear family
L/Z/vertical/diagonal labels are schema identities here. Their path realization belongs to 25.02.
One owner per layer
25.00 owns the schema and exact lineage; downstream modules own realization, projection and scoring.
Root schema
FlowTemplate identity, kind/family, traversal, path binding, set policy, seed.
Path geometry
S/C/serpentine and L/Z/vertical/diagonal realization stays downstream.
Fit & score
Projection, coverage, gaps, ordered objects, selection and scoring are not produced here.
Canonical records
All foreign refs remain explicit and owner-qualified.
FlowCoordinateFrameBinding {
scopeRef, snapshotRef,
coordinateFrameRef,
coordinateFrameOwnerRef, unitRef,
status, provenance, mutationAllowed:false
}
FlowTemplateDeclaration {
templateRef, templateKind, templateFamily,
traversalMode, pathRef, pathOwnerRef,
coordinateFrameRef, sourceRef, sourceOwnerRef,
status, provenance, mutationAllowed:false
}FlowTemplate {
scopeRef, snapshotRef, templateRef,
templateKind, templateFamily, traversalMode,
pathRef, pathOwnerRef, coordinateFrameRef,
geometryAttachmentRef:null,
projectionAttachmentRef:null,
routeFitDescriptorRef:null,
orderedObjectRefs:[],
scoreRef:null,
status, mutationAllowed:false
}Traversal is explicit semantics
No observed eye movement is inferred from template direction.
DIRECTED traversal
Direction belongs to template semantics. It does not prove observed eye movement or reading order.
UNDIRECTED traversal
No intrinsic start/end is asserted. This still does not mean two-way attention.
Canonical t=0 → t=1
Allows downstream parameterized ordering, but does not itself order scene objects.
No intrinsic direction
Still not a claim about two-way reading, attention or motion.
Kind, identity and binding stay separate
This prevents hidden merging and accidental double counting.
Template identity ≠ kind
Two S_CURVE declarations remain two templates when their templateRef/path binding differs.
Exact path binding is owner-qualified
pathRef alone is insufficient. Owner and coordinate frame remain part of lineage.
Bounded explicit-only set
No Cartesian generation and no implicit route discovery.
| Rule | Canonical behavior |
|---|---|
| selectionMode | EXPLICIT_TEMPLATES_ONLY |
| maxTemplates | 1..256 |
| overflow | N_A_WITHOUT_TRUNCATION |
| duplicate templateRef | INVALID |
| duplicate exact path binding | N_A_NO_WINNER |
| auto discovery / geometry / ordering / selection / scoring | false |
Immutable root seed
Downstream attachments begin null and cannot mutate 25.00 records.
FlowSystemSeed {
templateSetRef,
curvedPathAttachmentRef: null,
angularPathAttachmentRef: null,
projectionCoverageAttachmentRef: null,
selectionScoringAttachmentRef: null,
metricResultRefs: [],
status,
mutationAllowed: false
}Route descriptor ≠ quality
Topic 25 starts as topology/lineage, not aesthetic preference.
S ≠ better
S/C/L/Z names are identifiers, not universal compositional laws.
Diagonal path ≠ diagonal composition
A DIAGONAL_PATH template does not own main/counter diagonal scene structure.
Route ≠ rhythm
Path topology does not create interval/repetition semantics.
Route ≠ eye-flow graph
Declared traversal is not observed attention sequence.
What 25.00 actually does
A compact visual pipeline from declaration to immutable seed.
templateRef + kind/family + traversal + pathRef/pathOwnerRef + coordinateFrameRef.
Identity, owner-qualified path binding, duplicate detection, maxTemplates bound.
FlowTemplateSet + immutable FlowSystemSeed. No geometry fit, no ordered objects, no score.
CANON → LAB → DATA → IDEAS
Empirical questions stay outside the canonical schema until evidence exists.
25.00 regression suite
Tests cover exact lineage, explicit-only selection, duplicate handling, traversal semantics, immutable seed, zero metrics and strict Topic24/26/27 + 25.01–25.04 boundaries.
DATA FOR LAYOUT ENGINE
Machine-readable contract for integration and cross-module audit.
{
"module": "Compo 25.00",
"name": "flow_template_schema",
"version": "1.0-canonical",
"canonical_main_title": "Flow-template schema",
"topic": "25_S_CURVE_L_STRUCTURE_AND_OTHER_ROUTES",
"scope": "EXPLICIT_OWNER_QUALIFIED_FLOW_TEMPLATE_IDENTITY_PATH_BINDING_TRAVERSAL_SEMANTICS_BOUNDED_TEMPLATE_SET_AND_IMMUTABLE_ROOT_SEED_ONLY_WITHOUT_PATH_GEOMETRY_RESOLUTION_OBJECT_PROJECTION_COVERAGE_GAPS_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.00",
"owns": [
"FlowTemplateKind taxonomy",
"FlowTraversalMode taxonomy",
"FlowCoordinateFrameBinding",
"FlowTemplateDeclaration",
"FlowTemplate",
"FlowTemplateSetPolicy",
"FlowTemplateSet",
"FlowSystemSeed root identity",
"explicit template identity and exact path-owner/frame lineage",
"explicit traversal direction semantics without object-order inference",
"bounded explicit-only template registration",
"identity/status/provenance rules for Topic25 root schema",
"non-mutating correction request for template/path/frame declarations"
],
"does_not_own": [
"raw path geometry or curve fitting — upstream/path owners",
"S/C/serpentine geometry realization — Compo25.01",
"L/Z/vertical/diagonal geometry realization — Compo25.02",
"object projection onto route — Compo25.03",
"coverage, gaps or ordered-object derivation — Compo25.03",
"template selection, target profile, MetricResult or scoring — Compo25.04",
"diagonal-composition axis scoring — Topic24",
"rhythm interval sequence semantics — Topic26",
"eye-flow/attention graph semantics — Topic27",
"dominance / hierarchy / beautyScore / final-layout ranking",
"foreign geometry/style/semantic mutation"
]
},
"taxonomies": {
"FlowTemplateKind": [
"S_CURVE",
"C_CURVE",
"SERPENTINE",
"L_PATH",
"Z_PATH",
"VERTICAL_PATH",
"DIAGONAL_PATH",
"OWNER_DEFINED"
],
"FlowTraversalMode": [
"DIRECTED",
"UNDIRECTED"
],
"FlowTemplateFamily": [
"CURVED",
"ANGULAR",
"LINEAR",
"OWNER_DEFINED"
]
},
"identity": {
"template_identity": "scopeRef + snapshotRef + templateRef",
"path_binding": "pathRef + pathOwnerRef + coordinateFrameRef",
"same_kind_not_same_template": true,
"same_path_ref_different_owner_not_same_binding": true,
"directed_reverse_is_not_silently_equivalent": true
},
"policy": {
"selectionMode": "EXPLICIT_TEMPLATES_ONLY",
"maxTemplates": [
1,
256
],
"overflow": "N_A_WITHOUT_TRUNCATION",
"duplicateTemplateRef": "INVALID",
"duplicateExactPathBinding": "N_A_NO_WINNER",
"autoTemplateDiscovery": false,
"autoPathGeometryInference": false,
"autoObjectOrdering": false,
"autoTemplateSelection": false,
"autoScoring": false
},
"root_seed_contract": {
"templateSetRef": "exact",
"curvedPathAttachmentRef": null,
"angularPathAttachmentRef": null,
"projectionCoverageAttachmentRef": null,
"selectionScoringAttachmentRef": null,
"metricResultRefs": [],
"mutationAllowed": false
},
"status_semantics": {
"OK": "valid explicit identity and path/frame lineage",
"N_A": "missing/conflicting/duplicate-equivalent/overflow evidence; never numeric zero",
"INVALID": "malformed or impossible record; never numeric zero"
},
"firewalls": [
"template kind != geometry realization",
"template declaration != route fit",
"DIRECTED traversal != observed reading order",
"UNDIRECTED != bidirectional attention claim",
"same kind != same template",
"same pathRef with different owner != same binding",
"template count != route strength",
"S/C/L/Z labels != automatic scene preference",
"diagonal path template != Topic24 diagonal composition axis",
"route template != rhythm sequence",
"route template != eye-flow graph",
"N_A != 0",
"INVALID != 0",
"descriptor != score",
"local != global"
],
"visual_explanation": {
"diagrams": [
"template family atlas: S/C/L/Z/vertical/diagonal",
"directed vs undirected traversal",
"template identity vs path binding",
"explicit-only bounded registration pipeline"
]
},
"ideas_data_hooks": {
"IDEAS_REFS": [
"perceived route preference by content type",
"S vs C route discrimination",
"directionality and reading culture",
"route density vs perceived flow",
"multi-route competition",
"object skipping tolerance",
"route-fit robustness under scale"
],
"DATA_CAPTURE": [
"template identity",
"kind/family",
"path owner/frame binding",
"traversal mode",
"declaration conflicts",
"duplicate path-binding collisions",
"set status"
],
"DEFERRED_SEMANTIC_INPUTS": [
"route desirability",
"main template selection",
"object order",
"coverage target",
"gap tolerance"
],
"HUMAN_FEEDBACK_HOOKS": [
"correct template kind",
"correct path owner/frame",
"withdraw duplicate template",
"correct traversal semantics"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"confidence does not break contradictory identity",
"request order is not template priority",
"kind name is not score"
],
"LAB_HOOKS": [
"template recognition studies",
"projection tolerance experiments",
"reading-direction interactions",
"route competition experiments"
]
},
"topic25ProgressAfterThisModule": "1/5 local",
"next_module": "Compo 25.01 — S/C/serpentine paths",
"hard_stop": "No 25.01–25.04 implementation in this file",
"owns_metrics": [],
"independent_numeric_votes": 0
}