Exact radial descriptors first, preference only by declaration
+ 23.02 radius groups
+ 23.03 angular gaps / sector occupancy
+ explicit local target profile
→ item observations / target-band fits
→ four non-independent component MetricResults
→ one composite radial.system.localTargetProfileFit
→ failed-item-only owner-routed review candidates
NO default canvas center
NO default equal angular spacing
NO default ring count / density
NO beautyScore
NO direct layout mutation
One final Topic23 scoring owner
Compo23.04
Explicit target profiles, item evaluation, four component MetricResults, one composite vote, explicit repair routes, bounded review candidates and final Topic23 tests.
23.00–23.03 identities
Root schema, hub resolution, radius groups, angular gaps, sectors and occupancy remain immutable foreign inputs.
Four source families, no universal radial ideal
| Source | Observed value | Hidden preference? |
|---|---|---|
| HUB_TARGET_DISTANCE_NORMALIZED | distance to explicit target point / explicit normalizationDistance | No |
| RADIUS_GROUP_SUBJECT_FRACTION | group subject count / valid radius-observation count | No |
| ANGULAR_GAP_FRACTION | exact gapFractionOfCircle from 23.03 | No |
| SECTOR_OCCUPANCY_FRACTION | exact occupancyFraction from 23.03 | No |
Centered hubs, equal spacing, ring density and sector occupancy stay descriptors. Whether they fit the intended composition is decided only by the explicit local profile.
Local target profile
Bands are inclusive.
Weights are explicit.
APPLY family requires at least one explicit item.
IGNORE family weight = 0.
No hidden epsilon. No implicit “equal spacing is best”.
Composite-first scoring
| Metric key | Composite | Independent vote |
|---|---|---|
| radial.target.componentFit.hub | false | false |
| radial.target.componentFit.radialGrouping | false | false |
| radial.target.componentFit.angularSpacing | false | false |
| radial.target.componentFit.sectorOccupancy | false | false |
| radial.system.localTargetProfileFit | true | true |
composite = explicit APPLY-family-weighted mean
Exactly one independent numeric vote.
scoringGroup = radial-balance-local
Bounded generator emits requests, not edits
Failed applicable only
Passing, ignored, N_A and INVALID items never become candidates.
Explicit route only
Every failed item must resolve to exactly one valid owner-qualified route.
No truncation
Route or candidate overflow returns N_A; the generator does not silently trim.
Review request
A candidate contains no direct move/resize/delete operation and no promised improvement.
selectionMode = FAILED_APPLICABLE_TARGET_ITEMS_ONLY routeMode = EXPLICIT_ROUTE_RECORDS_ONLY maxRoutes = 1..512 maxCandidates = 1..128 fullCartesian = false autoRouteInference = false autoGeometryMutation = false candidate.score = null
N_A and INVALID keep their meaning
| OK | Exact compatible lineage, explicit target and valid bounded route set. |
| N_A | Missing source, ignored family, upstream N_A, missing/ambiguous route, or bounded overflow. No coercion to zero. |
| INVALID | Malformed target, incompatible lineage/unit, invalid upstream descriptor or malformed route/policy. |
| 0 | A valid numeric observation or fit value. Zero remains distinct from N_A and INVALID. |
Topic23 closes here
| 23.00 | Root radial identity and coordinate-frame lineage. |
| 23.01 | Hub/center resolution. |
| 23.02 | Radius observations, bands, rings and orbital groups. |
| 23.03 | Angles, gaps, sectors and occupancy. |
| 23.04 | Explicit local target fit, one composite vote, bounded review generator and tests. |
| Topic24 | Not started in this file. |
Local fit ≠ universal quality
off-center hub != automatically bad
equal angular spacing != automatically good
unequal angular spacing != automatically bad
empty sector != defect
dense sector != defect
exact-radius ring != preferred ring
component metric != independent vote
candidate ordinal != score
candidate != mutation
local target fit != beautyScore
N_A != 0
INVALID != 0
CANON → LAB → DATA → IDEAS
23.04 regression suite
Tests cover exact Topic23 lineage, explicit source adapters, local target-band semantics, one-vote scoring, zero/N_A/INVALID separation, bounded deterministic route generation, no physical mutation, immutable attachments and Topic24 firewall.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 23.04",
"name": "scoring_generator_and_tests",
"version": "1.0-canonical",
"canonical_main_title": "Scoring, generator and tests",
"topic": "23_РАДИАЛЬНЫЙ_БАЛАНС_И_ЦЕНТРАЛЬНЫЕ_СИСТЕМЫ",
"scope": "EXPLICIT_LOCAL_RADIAL_TARGET_PROFILE_SCORING_ONE_COMPOSITE_METRICRESULT_AND_BOUNDED_OWNER_ROUTED_NONMUTATING_GENERATOR_OVER_VALID_23_00_TO_23_03_LINEAGE_ONLY",
"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.04",
"owns": [
"RadialTargetSourceKind taxonomy",
"RadialTargetFamily taxonomy",
"RadialLocalTargetItem",
"RadialLocalTargetProfile",
"RadialTargetItemEvaluation",
"four Topic23 component MetricResults",
"one composite MetricResult radial.system.localTargetProfileFit",
"RadialLocalEvaluationSet",
"RadialScoringAttachment",
"RadialRepairActionKind taxonomy",
"RadialRepairRoute",
"RadialGeneratorPolicy",
"RadialLayoutReviewCandidate",
"RadialLayoutReviewCandidateSet",
"explicit local target evaluation over exact 23.01/23.02/23.03 descriptors",
"Topic23 independent numeric vote budget",
"bounded deterministic failed-item-only owner-routed candidate generation",
"final Topic23 regression tests"
],
"does_not_own": [
"RadialSystemSchema / subjects / coordinate frame / position bindings — Compo23.00",
"RadialHubDescriptor / hub evidence resolution — Compo23.01",
"radius observations / bands / rings / orbital groups — Compo23.02",
"polar angles / angular gaps / sectors / occupancy — Compo23.03",
"symmetric balance — Topic21",
"asymmetric mass balance / centroid / torque — Topic22",
"visual mass extraction",
"dominance / hierarchy / focal ranking",
"global beautyScore",
"final-layout ranking",
"automatic physical layout mutation",
"foreign geometry/style/semantic mutation"
]
},
"source_kinds": [
"HUB_TARGET_DISTANCE_NORMALIZED",
"RADIUS_GROUP_SUBJECT_FRACTION",
"ANGULAR_GAP_FRACTION",
"SECTOR_OCCUPANCY_FRACTION"
],
"families": [
"HUB",
"RADIAL_GROUPING",
"ANGULAR_SPACING",
"SECTOR_OCCUPANCY"
],
"source_to_family": {
"HUB_TARGET_DISTANCE_NORMALIZED": "HUB",
"RADIUS_GROUP_SUBJECT_FRACTION": "RADIAL_GROUPING",
"ANGULAR_GAP_FRACTION": "ANGULAR_SPACING",
"SECTOR_OCCUPANCY_FRACTION": "SECTOR_OCCUPANCY"
},
"target_semantics": {
"HUB_TARGET_DISTANCE_NORMALIZED": "distance from exact Compo23.01 hub to an explicitly declared target point divided by explicit positive normalizationDistance; no default canvas center",
"RADIUS_GROUP_SUBJECT_FRACTION": "exact group subject count divided by count of valid radius observations in the same 23.02 set",
"ANGULAR_GAP_FRACTION": "exact Compo23.03 gapFractionOfCircle; equal spacing is never inferred as an ideal",
"SECTOR_OCCUPANCY_FRACTION": "exact Compo23.03 occupancyFraction for an explicitly referenced sector",
"fit": "inclusive membership in an explicit targetBand; the band is local tolerance, not a universal radial law"
},
"metric_contract": {
"component_keys": [
"radial.target.componentFit.hub",
"radial.target.componentFit.radialGrouping",
"radial.target.componentFit.angularSpacing",
"radial.target.componentFit.sectorOccupancy"
],
"composite_key": "radial.system.localTargetProfileFit",
"owner": "Compo23.04",
"scoringGroup": "radial-balance-local",
"component_metrics": {
"composite": false,
"independentVoteAllowed": false,
"componentOf": "radial.system.localTargetProfileFit"
},
"composite_metric": {
"composite": true,
"independentVoteAllowed": true,
"componentOf": null
},
"component_value": "explicit item-weighted mean of binary inclusive target-band fits for one APPLY family",
"composite_value": "explicit family-weighted mean of applicable component MetricResults",
"cross_profile_comparison": "forbidden unless a foreign comparison owner explicitly defines it"
},
"owns_metrics": [
"radial.target.componentFit.hub",
"radial.target.componentFit.radialGrouping",
"radial.target.componentFit.angularSpacing",
"radial.target.componentFit.sectorOccupancy",
"radial.system.localTargetProfileFit"
],
"independent_numeric_votes": {
"count": 1,
"key": "radial.system.localTargetProfileFit",
"owner": "Compo23.04",
"scoringGroup": "radial-balance-local",
"component_metrics_independentVoteAllowed": false,
"composite_independentVoteAllowed": true
},
"candidate_generation": {
"selection": "FAILED_APPLICABLE_TARGET_ITEMS_ONLY",
"routes": "EXPLICIT_ROUTE_RECORDS_ONLY",
"seed": "required explicit deterministic seed",
"bounds": {
"maxRoutes": "1..512",
"maxCandidates": "1..128"
},
"overflow": "N_A_NO_TRUNCATION",
"dedupe": "exact canonical route identity",
"ordering": "stable seed hash + canonical tie break",
"fullCartesian": false,
"autoRouteInference": false,
"autoGeometryMutation": false,
"candidateScore": null,
"candidateMutationAllowed": false,
"candidateMeaning": "owner-routed review request, not a physical edit and not a promise of improvement"
},
"repair_action_kinds": [
"REVIEW_HUB_DECLARATION",
"REVIEW_RADIAL_GROUPING",
"REVIEW_ANGULAR_DISTRIBUTION",
"REVIEW_SECTOR_CONFIGURATION",
"REVIEW_POSITION",
"REVIEW_TARGET_PROFILE"
],
"status_semantics": {
"OK": "valid exact Topic23 lineage plus explicit compatible target profile; candidate set OK only when every failed applicable item has one explicit valid route and bounds hold",
"N_A": "missing source, upstream N_A, target family IGNORE, missing explicit route, or bounded overflow; no guessing/truncation/coercion",
"INVALID": "malformed profile/route/policy, source lineage mismatch, invalid upstream descriptor, unit mismatch, duplicate conflicting declarations, or impossible numeric invariant",
"zero_note": "hub distance 0, group fraction 0, angular gap 0, sector occupancy 0 and metric fit 0 are valid numbers; N_A != 0"
},
"firewalls": [
"hub at a target point is not automatically good",
"off-target hub is not automatically bad",
"equal angular spacing is not automatically good",
"unequal angular spacing is not automatically bad",
"empty sector is not automatically a defect",
"dense sector is not automatically a defect",
"exact-radius ring is not automatically preferable",
"local target profile is explicit and style/task scoped",
"component MetricResults are not independent votes",
"exactly one Topic23 independent numeric vote",
"candidate ordinal is not score",
"candidate != mutation",
"candidate != guaranteed improvement",
"no Topic21 mirror requirement",
"no Topic22 centroid/torque semantics",
"no global beautyScore",
"no final-layout rank"
],
"metric_result_fields": [
"key",
"owner",
"value",
"applicability",
"confidence",
"status",
"provenance",
"composite",
"componentOf",
"dependsOn[]",
"derivedFrom[]",
"scoringGroup",
"independentVoteAllowed",
"evidence",
"repairHints[]"
],
"hooks": {
"IDEAS_REFS[]": [
"radial target presets by composition class",
"learned target bands after LAB validation",
"radial route libraries",
"human-reviewed radial systems",
"local radial explainability"
],
"DATA_CAPTURE[]": [
"target item observations",
"family fits",
"composite local target fit",
"failed-item lineage",
"repair route selections",
"candidate outcomes after external application"
],
"DEFERRED_SEMANTIC_INPUTS[]": [
"whether a radial target is desirable",
"whether candidate application improves task outcome",
"cross-profile preference",
"final layout selection"
],
"HUMAN_FEEDBACK_HOOKS[]": [
"target band correction",
"family weight correction",
"repair route approval",
"candidate rejection reason"
],
"CONFLICT_PRIORITY_ASSUMPTIONS[]": [
"explicit profile declarations outrank implementation heuristics; conflicting exact declarations yield N_A rather than averaging"
],
"LAB_HOOKS[]": [
"perceived radial center tolerance",
"ring density perception",
"angular rhythm perception",
"sector occupancy perception"
]
},
"topic23ProgressAfterThisModule": "5/5 local",
"next_step": "TOPIC23_CLOSING_AUDIT_SEPARATE_STEP",
"topic24_started": false,
"publication": "NOT_VERIFIED"
}