Root schema before polar geometry
One owner for radial identity
Identity + lineage
Subject eligibility, bounded subject set, coordinate-frame binding, per-subject position binding, explicit radial membership intent, root schema and immutable system seed.
Interpretation + scoring
Hub detection, polar coordinates, rings, radius bands, orbital groups, sectors, angular spacing, occupancy, symmetry, centroid/moments, scoring, MetricResult or candidate generation.
Subjects are explicit
Eligibility declaration
Evidence is bound to exact scope + snapshot + subject. Missing evidence → N_A. Contradictory eligible=true/false → N_A; confidence never selects a winner.
Bounded selection
EXPLICIT_SUBJECTS_ONLY, 1..4096. Overflow → N_A without truncation. No discovery from geometry, DOM order, hierarchy or visual mass.
Participation ≠ role
Inclusion in a radial system does not imply hub, ring, sector, focal, decorative, hierarchy or balance role.
Coordinate frame is only a frame
Positions stay foreign-owned
Exact position lineage
subjectRef + coordinateFrameRef + foreign positionRef + positionOwnerRef + optional context/provenance. No copied geometry is required.
No radius or angle yet
23.00 does not compute distance to a center, polar angle, side, ring, orbit, sector, spoke or angular neighbor.
Membership intent is declarative
Complete lineage or N_A
One position + one intent
Every included subject has exactly one valid position binding in the declared frame and exactly one membership intent for the same radialSystemRef.
Missing lineage
Missing position or membership intent does not become zero, center, empty ring or inferred membership.
Conflicting lineage
Duplicate exact subject assignments are unresolved. No confidence-based winner and no silent deduplication.
Malformed record
Invalid taxonomy, malformed refs or illegal policy bounds remain INVALID and never enter geometry.
Immutable downstream anchor
RadialSystemSeed {
radialSystemSchemaRef,
hubAttachmentRef: null,
radiusBandAttachmentRef: null,
sectorAttachmentRef: null,
scoringAttachmentRef: null,
metricResultRefs: [],
status,
mutationAllowed: false
}Downstream modules attach new records. They do not rewrite 23.00 root identity.
Downstream ownership stays explicit
| 23.01 | Hub/center detection and explicit hub descriptor attachment. |
| 23.02 | Polar radius derivation, radius bands, rings and orbital groups. |
| 23.03 | Polar angle, angular spacing, sector occupancy and related descriptors. |
| 23.04 | Target fit, scoring, bounded generator and final regression tests. |
Topic22 / Topic23 firewall
Schema is not interpretation
Explicit identities, owner-qualified frame and position refs, explicit membership intents, bounded root schema, immutable seed.
Canvas center as hub, automatic ring count, equal-angle target, equal-radius target, symmetry assumption, golden-angle target, radial beauty score.
CANON → LAB → DATA → IDEAS
23.00 regression suite
Tests cover eligibility conflict preservation, bounded explicit subject selection, exact 2D frame/position lineage, explicit radial membership, missing/duplicate/foreign binding semantics, immutable seed, zero metrics and strict 23.01–23.04 / Topic21–22 ownership firewalls.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 23.00",
"name": "radial_system_schema",
"version": "1.0-canonical",
"canonical_main_title": "Radial system schema",
"topic": "23_РАДИАЛЬНЫЙ_БАЛАНС_И_ЦЕНТРАЛЬНЫЕ_СИСТЕМЫ",
"scope": "EXPLICIT_RADIAL_SYSTEM_SUBJECTS_OWNER_QUALIFIED_2D_POSITION_BINDINGS_MEMBERSHIP_INTENTS_ROOT_SCHEMA_AND_IMMUTABLE_SEED_ONLY_WITHOUT_HUB_DETECTION_POLAR_COORDINATES_RADIUS_BANDS_OR_SECTOR_SCORING",
"main_topic_contract": {
"topic_title": "Радиальный баланс и центральные системы",
"topic_goal": "Формализует радиальные композиции: hub, rings, radius bands, angular sectors и распределение элементов вокруг центра.",
"expected_output": "RadialGroupDescriptor, hub, rings, sectors",
"planned_files": [
"23.00 Radial system schema",
"23.01 Hub/center detection",
"23.02 Radius bands and orbital groups",
"23.03 Angular spacing / sector occupancy",
"23.04 Scoring, generator and tests"
]
},
"ownership": {
"owner": "Compo23.00",
"owns": [
"RadialSubjectEligibilityEvidence",
"RadialSubjectEligibilityResolution",
"RadialSubject",
"RadialSubjectSetPolicy",
"RadialSubjectSet",
"RadialCoordinateFrameBinding",
"RadialPositionBinding",
"RadialMembershipIntent",
"RadialSystemPolicy",
"RadialSystemSchema",
"RadialSystemSeed root identity",
"explicit subject-to-system membership lineage",
"identity/status/provenance rules for Topic23 root schema",
"non-mutating correction request for eligibility/frame/position/membership/schema errors"
],
"does_not_own": [
"raw geometry or point measurement — upstream geometry owners",
"hub/center detection or hub descriptor — Compo23.01",
"polar radius/angle derivation — Compo23.02/23.03",
"radius bands, rings and orbital groups — Compo23.02",
"angular spacing and sector occupancy — Compo23.03",
"approximation/scoring/generator/MetricResult — Compo23.04",
"symmetric balance / mirror correspondence — Topic21",
"asymmetric centroid/moments/counterweights — Topic22",
"dominance / hierarchy / beautyScore / final-layout ranking",
"foreign geometry/style/semantic mutation"
]
},
"consumes": [
"explicit foreign object/element identities",
"explicit radial-system subject eligibility evidence",
"explicit owner-qualified 2D coordinate-frame binding",
"explicit owner-qualified subject position refs in that frame",
"explicit radial membership intents",
"optional source/provenance metadata"
],
"provides": [
"RadialSubjectSet",
"RadialCoordinateFrameBinding",
"RadialPositionBinding[]",
"RadialMembershipIntent[]",
"RadialSystemSchema",
"RadialSystemSeed"
],
"owns_metrics": [],
"independent_numeric_votes": 0,
"status_semantics": {
"OK": "valid explicit schema lineage",
"N_A": "missing/conflicting/not-applicable evidence; never numeric zero",
"INVALID": "malformed or impossible record; never numeric zero"
},
"policy": {
"selectionMode": "EXPLICIT_SUBJECTS_ONLY",
"membershipMode": "EXPLICIT_INTENTS_ONLY",
"maxSubjects": [
1,
4096
],
"maxMembershipIntents": [
1,
4096
],
"overflow": "N_A_WITHOUT_TRUNCATION",
"autoHubDetection": false,
"autoRingDiscovery": false,
"autoSectorDiscovery": false,
"autoScoring": false
},
"root_seed_contract": {
"radialSystemSchemaRef": "exact",
"hubAttachmentRef": null,
"radiusBandAttachmentRef": null,
"sectorAttachmentRef": null,
"scoringAttachmentRef": null,
"metricResultRefs": [],
"mutationAllowed": false
},
"firewalls": [
"radial membership != geometric ring membership",
"radial membership != semantic importance",
"coordinate-frame origin != hub",
"position binding != polar radius/angle",
"subject near frame center != hub",
"equal radius is not inferred in 23.00",
"angular sector is not inferred in 23.00",
"radial system != symmetric balance",
"radial system != asymmetric balance",
"N_A != 0",
"INVALID != 0",
"descriptor != score",
"local != global",
"geometry != interpretation"
],
"hooks": {
"IDEAS_REFS[]": [
"radial-layout synthesis",
"nested radial systems",
"hub ambiguity studies",
"ring perception",
"angular rhythm",
"intentional asymmetry around hubs",
"multi-center composition"
],
"DATA_CAPTURE[]": [
"eligibility",
"frame lineage",
"position-binding lineage",
"membership intents",
"root-schema identity"
],
"DEFERRED_SEMANTIC_INPUTS[]": [
"hub evidence",
"ring tolerance",
"sector tolerance",
"style intent",
"target fit"
],
"HUMAN_FEEDBACK_HOOKS[]": [
"subject inclusion correction",
"frame correction",
"position binding correction",
"membership correction"
],
"CONFLICT_PRIORITY_ASSUMPTIONS[]": [
"confidence does not choose winners",
"frame origin has no hub priority",
"membership order has no radial priority"
],
"LAB_HOOKS[]": [
"perceived center vs geometric center",
"ring grouping thresholds",
"sector occupancy perception"
]
},
"topic23ProgressAfterThisModule": "1/5 local",
"next_module": "Compo 23.01 — Hub/center detection",
"hard_stop": "No 23.01–23.04 implementation in this file"
}