Evaluation after detection
Evaluation owner, not hierarchy-truth owner
Local target fit
Explicit target/evaluation profiles and Topic18 MetricResults.
Correction requests
Bounded deterministic owner-routed requests under KEEP.
Upstream truth
Graph, envelopes, constraints, competition and inversion remain immutable upstream evidence.
Four explicit target components
| Component | Observed source | Typical explicit state |
|---|---|---|
| weightEnvelope | 18.01 | WITHIN |
| channelConstraints | 18.02 | WITHIN / ABOVE |
| competition | 18.03 | CLEAR |
| inversion | 18.03 | NOT_INVERTED |
Composite-first scoring
4 component MetricResults subordination.target.componentFit.weightEnvelope subordination.target.componentFit.channelConstraints subordination.target.componentFit.competition subordination.target.componentFit.inversion all: owner = Compo18.04 composite = false componentOf = subordination.system.localTargetProfileFit scoringGroup = subordination-local independentVoteAllowed = false 1 composite MetricResult key = subordination.system.localTargetProfileFit owner = Compo18.04 composite = true componentOf = null scoringGroup = subordination-local independentVoteAllowed = true
Topic18 independent numeric vote count = 1. Ни один upstream descriptor и ни один component metric не голосует отдельно.
0, N_A and INVALID stay different
Target mismatch
fit = 0, status OK, evaluationOutcome = KEEP.
Missing / lineage
N_A. Нет догадок и нет generator guessing.
Invalid upstream
INVALID. Не превращается в числовой ноль.
Compare only like with like
Bounded correction generation
KEEP + failed component
Explicit route, explicit seed, maxCandidates 1..64, hard filter, deduplication, diversity pruning.
N_A / INVALID / mutation
No guessed repair, no Cartesian product, no direct geometry/style/semantic mutation.
Local hierarchy fit is not global quality
Topic boundary remains clean
| 18.00 | Hierarchy roles, relations and graph identity. |
| 18.01 | Role-level weight envelopes and observed positions. |
| 18.02 | SIZE / CONTRAST / ISOLATION constraints and directed descriptors. |
| 18.03 | Competition, inversion and SubordinationViolation records. |
| 18.04 | Local target scoring and owner-routed correction requests. |
| Topic19 | Correlation-aware multi-signal observed visual hierarchy. |
CANON → LAB → DATA → IDEAS
18.04 regression suite
Tests cover explicit targets, four dependent metrics, exact one-vote rule, mismatch/N_A/INVALID separation, comparability, bounded owner-routed correction generation, upstream immutability and Topic19/global-quality firewalls.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 18.04",
"name": "correction_scoring_and_tests",
"version": "1.0-canonical",
"canonical_main_title": "Correction, scoring and tests",
"topic": "18_СУБОРДИНАЦИЯ_И_ПОДЧИНЕНИЕ_ЭЛЕМЕНТОВ",
"scope": "EXPLICIT_LOCAL_SUBORDINATION_TARGET_EVALUATION_ONE_COMPOSITE_METRICRESULT_AND_BOUNDED_OWNER_ROUTED_NONMUTATING_CORRECTION_REQUESTS_ONLY",
"main_topic_contract": {
"topic_title": "Субординация и подчинение элементов",
"topic_goal": "Строит subordination graph для primary/secondary/tertiary/decorative roles и отслеживает случаи, когда нижний уровень начинает визуально спорить с верхним.",
"expected_output": "HierarchyRelation graph, subordination violations, correction requests",
"planned_files": [
"18.00 Subordination graph",
"18.01 Weight envelopes by hierarchy level",
"18.02 Contrast/size/isolation constraints",
"18.03 Competition and inversion detection",
"18.04 Correction, scoring and tests"
]
},
"ownership": {
"owner": "Compo18.04",
"owns": [
"SubordinationTargetProfile",
"SubordinationEvaluationProfile",
"Topic18 component MetricResults",
"Topic18 composite MetricResult subordination.system.localTargetProfileFit",
"SubordinationRepairRoute",
"SubordinationRepairCandidateSetPolicy",
"SubordinationCorrectionRequest",
"SubordinationRepairCandidateSet",
"explicit local target evaluation over 18.01/18.02/18.03 descriptors",
"Topic18 independent numeric vote budget",
"bounded deterministic owner-routed correction generation",
"final Topic18 regression tests"
],
"does_not_own": [
"HierarchyRole / HierarchySubject / HierarchyRelation / SubordinationGraph identity — Compo18.00",
"weight channels / hierarchy-level envelopes / envelope descriptors — Compo18.01",
"size/contrast/isolation bindings / constraints / comparison values — Compo18.02",
"competition/inversion verdicts and SubordinationViolation identity — Compo18.03",
"raw visual mass measurement — Compo4",
"dominance / focal ranking — Compo13",
"attention factors — Compo13.01",
"microdetail semantics — Topic15",
"object-to-object scale relations — Topic16",
"aspect ratio / part-to-whole proportions — Topic17",
"multi-signal observed visual hierarchy / correlation-aware aggregation — Topic19",
"semantic importance",
"global balance",
"final-layout ranking",
"universal beautyScore",
"foreign geometry/style/semantic mutation"
]
},
"consumes": [
"valid Compo18.00 hierarchy graph lineage",
"valid Compo18.01 HierarchyWeightEnvelopeDescriptor observations",
"valid Compo18.02 HierarchyConstraintDescriptor observations",
"valid Compo18.03 HierarchyRelationCompetitionDescriptor and SubordinationViolation observations",
"explicit SubordinationTargetProfile",
"explicit SubordinationEvaluationProfile",
"explicit owner-qualified repair routes"
],
"provides": [
"four dependent Topic18 component MetricResults",
"one composite MetricResult subordination.system.localTargetProfileFit",
"same-target/same-profile local comparison",
"bounded SubordinationCorrectionRequest[]",
"SubordinationRepairCandidateSet",
"Topic18 completion contract"
],
"metric_contract": {
"component_keys": [
"subordination.target.componentFit.weightEnvelope",
"subordination.target.componentFit.channelConstraints",
"subordination.target.componentFit.competition",
"subordination.target.componentFit.inversion"
],
"composite_key": "subordination.system.localTargetProfileFit",
"scoringGroup": "subordination-local",
"component_independentVoteAllowed": false,
"composite_independentVoteAllowed": true,
"independent_numeric_vote_count": 1,
"constitution": [
"one metric = one owner",
"composite-first scoring",
"N_A != 0",
"INVALID != 0",
"local != global",
"descriptor != score"
]
},
"target_profile_contract": {
"selectionMode": "EXPLICIT_ONLY",
"components": [
"weightEnvelope",
"channelConstraints",
"competition",
"inversion"
],
"target_declared_na_allowed": true,
"no_implicit_equal_weights": true,
"no_universal_hierarchy_target": true
},
"evaluation_semantics": {
"TARGET_MATCH": "fit in [0,1]",
"TARGET_MISMATCH": "fit 0 + status OK + evaluationOutcome KEEP",
"TARGET_DECLARED_NA": "component N_A and excluded from denominator",
"MISSING_OBSERVED": "composite N_A",
"LINEAGE_MISMATCH": "composite N_A",
"UPSTREAM_INVALID": "composite INVALID",
"zero_is_valid_numeric_mismatch": true
},
"generator_contract": {
"generationMode": "FAILED_APPLICABLE_COMPONENTS_ONLY",
"evaluationOutcomeRequired": "KEEP",
"seed": "EXPLICIT",
"maxCandidates": "1..64",
"fullCartesianProductAllowed": false,
"generationOnNA": false,
"generationOnInvalid": false,
"hardFilterInvalidRoutes": true,
"deduplication": "IDENTITY_EQUIVALENT_CORRECTION_REQUEST",
"diversityPruning": "MAX_ONE_PER_COMPONENT_REPAIR_KIND_IN_V1",
"candidate_is_repaired_layout": false,
"mutationAllowed": false
},
"firewalls": [
"18.04 target profile does not redefine 18.00 graph",
"18.04 target profile does not redefine 18.01 envelopes",
"18.04 target profile does not redefine 18.02 constraints",
"18.04 target profile does not redefine 18.03 categorical verdicts",
"higher local fit != final-layout winner",
"competition != automatic reject",
"inversion != automatic reject",
"correction request != foreign mutation",
"generator ordinal != score",
"cross-target comparison forbidden",
"cross-evaluation-profile comparison forbidden",
"Topic19 remains owner of correlation-aware multi-signal visual hierarchy"
],
"IDEAS_REFS": [
"IDEA-01 compare declared hierarchy target fit with later human judgement after all topics",
"IDEA-02 study style-specific acceptable competition without universal hierarchy law",
"IDEA-03 preserve categorical upstream evidence separately from numeric target fit",
"IDEA-04 collect correction reasons for future supervised hierarchy model",
"IDEA-05 compare local Topic18 fit with Topic19 observed multi-signal hierarchy without ownership merge",
"IDEA-06 structured machine-readable correction layer for website/workbench",
"IDEA-07 final-layout ranking remains downstream/separate"
],
"DATA_CAPTURE": [
"sceneRef",
"scopeRef",
"snapshotRef",
"subordinationGraphRef",
"subordinationTargetProfileRef",
"subordinationEvaluationProfileRef",
"weightEnvelopeObservationRefs[]",
"constraintObservationRefs[]",
"competitionDescriptorRefs[]",
"subordinationViolationRefs[]",
"componentMetricResultRefs[]",
"compositeMetricResultRef",
"failedApplicableComponentKeys[]",
"correctionRequestRefs[]",
"repairCandidateSetRef",
"evaluationOutcome",
"status",
"reasonCode"
],
"DEFERRED_SEMANTIC_INPUTS": [
"Topic19 correlation-aware observed visual hierarchy",
"global semantic importance",
"global balance",
"final-layout ranking",
"human aesthetic judgement"
],
"HUMAN_FEEDBACK_HOOKS": [
"correct target profile",
"correct component weight",
"mark target component N_A",
"correct repair route owner",
"explain acceptable competition",
"explain acceptable inversion",
"reject suggested correction",
"record preferred correction"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"evaluation weights are local aggregation weights, not global rule priority",
"component order has no semantic priority",
"competition and inversion categories remain upstream evidence",
"no component receives an independent vote",
"module execution order does not imply final-layout priority"
],
"LAB_HOOKS": [
"human hierarchy-vs-local-fit calibration",
"competition acceptability study",
"inversion acceptability study",
"repair effectiveness study",
"cross-style target-profile study",
"Topic18-vs-Topic19 disagreement study",
"human correction reason taxonomy"
],
"topic18_local_completion": "18.00–18.04 implemented; closing audit remains a separate audit artifact, not a sixth canonical submodule.",
"next_step": "COMPO_TOPIC_18_CLOSING_AUDIT_FINAL.html",
"hard_stop": "Do not implement Topic19 in this file."
}