8.04 оценивает explicit variants
Variant — immutable bundle refs на уже рассчитанные Topic8 outputs. Никакой новой geometry или hidden candidate generation здесь нет.
Immutable lineage bundle.
Filter, never numeric penalty.
Explicit target-fit composite only.
Evidence bundle, не копия child payloads
GRID_ONLY используется для оценки самой сетки. GRID_WITH_PLACEMENT_CANDIDATE добавляет один explicit candidate из 8.03.
ColumnGridVariant {
variantRef,
variantKind:
GRID_ONLY |
GRID_WITH_PLACEMENT_CANDIDATE,
gridRef,
columnGeometryRef,
topologyRef,
occupancyRegistryRef?,
candidateSetRef?,
placementCandidateRef?,
sourceVariantPolicyRef?,
confidence,
provenance,
mutationAllowed: false
}
Target всегда explicit
8.04 не знает «правильного» количества колонок, gutter или anchor node без внешнего target.
GridTargetSpec {
targetRef,
subjectKind,
observedSelector,
columnIndex?,
gutterIndex?,
spanRef?,
nodeRef?,
valueSpace?:
RAW |
SHORT_N,
unit?,
minValue?,
maxValue?,
allowedValues[]?,
constraintKind:
HARD |
SOFT,
softTolerance?,
mismatchFit?,
missingEvidencePolicy:
N_A |
INVALID,
confidence,
provenance
}
Baseline target families
Все selectors читают уже существующие descriptors; ни один не создаёт новую geometry.
| Selector | Evidence owner |
|---|---|
| GRID_COLUMN_COUNT_SET | 8.01 |
| GRID_COLUMN_WIDTH_INTERVAL | 8.01 |
| GRID_GUTTER_WIDTH_INTERVAL | 8.01 |
| GRID_SPAN_WIDTH_INTERVAL | 8.01 |
| NODE_OCCUPANCY_STATE_SET | 8.02 |
| PLACEMENT_MODE_SET | 8.03 |
| PLACEMENT_SPAN_COLUMN_COUNT_SET | 8.03 |
| PLACEMENT_SPAN_REF_SET | 8.03 |
| PLACEMENT_ANCHOR_NODE_SET | 8.03 |
Interval distance
Для RAW value target unit должен точно совпадать. SHORT_N не восстанавливается из raw без нормализованного evidence.
Allowed set + explicit mismatchFit
Для soft categorical mismatch нет скрытого штрафа.
INVALID > REJECT > N_A > KEEP
Hard-filter полностью независим от numeric fit.
REJECT
Хотя бы один валидный HARD target доказанно breached.
N_A
Hard evidence не разрешён, но breach/config invalidity ещё не доказаны.
Required / optional SOFT targets
Профиль определяет только explicit aggregation.
GridScoringProfile {
profileRef,
requiredTargetRefs[],
optionalTargetRefs[],
weights: {
targetRef: positiveWeight
},
aggregate:
WEIGHTED_MEAN,
missingRequiredPolicy:
N_A |
INVALID,
confidence,
provenance
}
Один independent Topic8 vote
Component fits диагностические внутри composite.
COMPONENT
key: grid.target.componentFit.<targetRef> componentOf: grid.system.localGridFit scoringGroup: grid-system-local independentVoteAllowed: false
COMPOSITE
key: grid.system.localGridFit composite: true scoringGroup: grid-system-local independentVoteAllowed: true
Weighted mean applicable only
Optional N/A target может выпасть из denominator только потому, что profile заранее объявил его optional.
Hard и soft deviations остаются evidence
Soft deviation может породить advisory repair, но hard-filter реагирует только на HARD.
GridViolation {
violationRef,
owner: "Compo8.04",
family,
constraintKind,
variantRef,
targetRef?,
sourceModule,
sourceRef,
status,
observed,
expected,
confidence,
derivedFrom[],
provenance: DERIVED
}
Никаких foreign mutations
Repair говорит владельцу, что следует пересмотреть, но не меняет grid/registry/candidate.
| Target family | Repair request |
|---|---|
| Column count | REQUEST_COLUMN_STRUCTURE_ADAPTATION |
| Column width | REQUEST_GRID_WIDTH_ADAPTATION |
| Gutter width | REQUEST_GUTTER_ADAPTATION |
| Span width | REQUEST_SPAN_ADAPTATION |
| Node occupancy | REQUEST_NODE_OCCUPANCY_ADAPTATION |
| Placement target | REQUEST_PLACEMENT_ADAPTATION |
| Missing evidence | REQUEST_EVIDENCE_RESOLUTION |
| Invalid target/profile | REQUEST_TARGET_CONFIG_CORRECTION |
Rank = target fit, не beauty
Сравниваются только KEEP variants с применимым score под одним profile/target set.
Topic 8 закрывается локально
8.04 собирает только Topic8-local evidence.
| Question | Owner |
|---|---|
| Grid geometry? | 8.01 |
| Lines/nodes/current node occupancy? | 8.02 |
| X candidate generation? | 8.03 |
| Explicit Topic8 target fit? | 8.04 |
| 2D rows/cells? | Topic 9 |
| Alignment/proximity? | Topic 10 |
| Balance/hierarchy/eye flow? | future global owners |
Visual Lab
Один и тот же variant может пройти hard filter и иметь разный soft fit только при разных explicit profiles.
Topic 8 closing regression inside 8.04
Проверяем variant lineage, targets, hard/soft semantics, scoring metadata, comparison и ownership границы 8.00–8.04.
DATA FOR LAYOUT ENGINE
Machine-readable final module contract Topic 8.
{
"module": "Compo 8.04",
"name": "variants_scoring_and_tests",
"version": "1.1-corrective",
"canonical_main_title": "Variants, scoring и tests",
"topic": "08_КОЛОННАЯ_СЕТКА",
"scope": "EXPLICIT_COLUMNGRID_VARIANTS_TARGET_INTERPRETATION_HARD_FILTER_LOCAL_COMPOSITE_SCORING_REPAIR_COMPARISON_AND_TOPIC8_REGRESSION",
"consumes": [
"Compo8.00.ColumnGrid",
"Compo8.01.ResolvedColumnGeometry",
"Compo8.01.ResolvedColumnSpan[]",
"Compo8.02.ColumnGridTopology",
"optional Compo8.02.ColumnGridNodeOccupancyRegistry",
"optional Compo8.03.ColumnPlacementCandidateSet",
"optional Compo8.03.ColumnPlacementCandidate",
"explicit ColumnGridVariant[]",
"explicit GridTargetSpec[]",
"optional explicit GridScoringProfile"
],
"provides": [
"ColumnGridVariant",
"ColumnGridVariantSet",
"GridTargetSpec",
"GridTargetEvaluation",
"GridViolation",
"GridRepairRequest",
"MetricResult grid.target.componentFit.<targetRef>",
"MetricResult grid.system.localGridFit",
"Topic8HardFilterDecision",
"ColumnGridVariantEvaluation",
"GridVariantComparisonResult",
"consolidated Topic8 regression"
],
"owns_metrics": [
"grid.system.localGridFit"
],
"component_metrics": [
"grid.target.componentFit.<targetRef>"
],
"column_grid_variant_schema": {
"variantRef": "stable explicit ref",
"variantKind": "GRID_ONLY|GRID_WITH_PLACEMENT_CANDIDATE",
"gridRef": "Compo8.00 grid identity",
"columnGeometryRef": "Compo8.01 geometry ref",
"topologyRef": "Compo8.02 topology ref",
"occupancyRegistryRef": "optional Compo8.02 registry ref",
"candidateSetRef": "required with placement candidate",
"placementCandidateRef": "required only for GRID_WITH_PLACEMENT_CANDIDATE",
"sourceVariantPolicyRef": "optional explicit upstream variant source ref",
"confidence": "0..1",
"provenance": "STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET|DERIVED",
"mutationAllowed": false,
"important": "variant references evidence; it does not clone or own child payloads"
},
"variant_set_schema": {
"variantSetRef": "stable explicit ref",
"comparisonScopeRef": "explicit scope identity",
"variantRefs": "unique explicit refs",
"profileRef": "optional scoring profile ref",
"targetSetRef": "optional explicit target-set identity",
"generation": "NONE",
"cross_product": "FORBIDDEN"
},
"grid_target_spec_schema": {
"targetRef": "stable unique ref",
"subjectKind": "GRID_VARIANT|GRID_WITH_PLACEMENT_CANDIDATE",
"observedSelector": "GRID_COLUMN_COUNT_SET|GRID_COLUMN_WIDTH_INTERVAL|GRID_GUTTER_WIDTH_INTERVAL|GRID_SPAN_WIDTH_INTERVAL|NODE_OCCUPANCY_STATE_SET|PLACEMENT_MODE_SET|PLACEMENT_SPAN_COLUMN_COUNT_SET|PLACEMENT_SPAN_REF_SET|PLACEMENT_ANCHOR_NODE_SET",
"columnIndex": "required for GRID_COLUMN_WIDTH_INTERVAL",
"gutterIndex": "required for GRID_GUTTER_WIDTH_INTERVAL",
"spanRef": "required for GRID_SPAN_WIDTH_INTERVAL",
"nodeRef": "required for NODE_OCCUPANCY_STATE_SET",
"valueSpace": "RAW|SHORT_N for numeric interval selectors",
"unit": "required for RAW numeric interval targets and must match observed source unit",
"minValue": "optional finite numeric lower bound for interval target",
"maxValue": "optional finite numeric upper bound; at least one bound required",
"allowedValues": "required non-empty explicit set for categorical/discrete selectors",
"constraintKind": "HARD|SOFT",
"softTolerance": "required finite >0 for SOFT numeric interval target",
"mismatchFit": "required 0..1 for SOFT categorical/discrete target",
"missingEvidencePolicy": "N_A|INVALID",
"confidence": "0..1",
"provenance": "STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET",
"no_hidden_target": "8.04 never invents target values"
},
"numeric_interval_fit": {
"inside_interval": "distance=0",
"below_min": "distance=minValue-observed",
"above_max": "distance=observed-maxValue",
"HARD": "SATISFIED if distance=0 else BREACHED; no numeric component",
"SOFT": "fit=1-clamp(distance/softTolerance,0,1)",
"missing": "N_A or INVALID according target policy"
},
"categorical_fit": {
"HARD": "SATISFIED if observed in allowedValues else BREACHED",
"SOFT_allowed": "fit=1",
"SOFT_disallowed": "fit=explicit mismatchFit",
"important": "no hidden default mismatch penalty"
},
"grid_scoring_profile_schema": {
"profileRef": "stable explicit ref",
"requiredTargetRefs": "unique SOFT target refs",
"optionalTargetRefs": "unique SOFT target refs disjoint from required",
"weights": "map targetRef -> finite positive weight; exact declared-key coverage",
"aggregate": "WEIGHTED_MEAN",
"missingRequiredPolicy": "N_A|INVALID",
"confidence": "0..1",
"provenance": "STYLE_PRESET|EMPIRICAL|STANDARD|INITIAL_HEURISTIC",
"no_profile": "grid.system.localGridFit=N_A by applicability"
},
"metric_result_policy": {
"component": {
"key": "grid.target.componentFit.<targetRef>",
"owner": "Compo8.04",
"value": "0..1",
"componentOf": "grid.system.localGridFit",
"scoringGroup": "grid-system-local",
"independentVoteAllowed": false,
"composite": false
},
"composite": {
"key": "grid.system.localGridFit",
"owner": "Compo8.04",
"value": "0..1 or N_A",
"composite": true,
"componentOf": null,
"scoringGroup": "grid-system-local",
"independentVoteAllowed": true
},
"hard_constraints": "never encoded as numeric components",
"raw_topic8_descriptors": "never cast independent votes",
"no_profile": "composite is N_A without making hard filter itself invalid"
},
"violation_schema": {
"violationRef": "stable ref derived from variant+target",
"owner": "Compo8.04",
"family": "GRID_GEOMETRY_TARGET|NODE_OCCUPANCY_TARGET|PLACEMENT_TARGET|CONFIG|DATA_QUALITY",
"constraintKind": "HARD|SOFT|CONFIG|DATA",
"variantRef": "source variant",
"targetRef": "optional target",
"sourceModule": "Compo8.01|Compo8.02|Compo8.03|Compo8.04",
"sourceRef": "owner-qualified observed evidence ref",
"status": "OPEN|RESOLVED_BY_EVIDENCE|N_A|INVALID",
"observed": "structured evidence",
"expected": "explicit target/policy evidence",
"confidence": "0..1",
"derivedFrom": "owner-qualified evidence refs",
"provenance": "DERIVED"
},
"repair_request_schema": {
"repairRef": "stable ref",
"sourceViolationRef": "GridViolation ref",
"requestKind": "REQUEST_COLUMN_STRUCTURE_ADAPTATION|REQUEST_GRID_WIDTH_ADAPTATION|REQUEST_GUTTER_ADAPTATION|REQUEST_SPAN_ADAPTATION|REQUEST_NODE_OCCUPANCY_ADAPTATION|REQUEST_PLACEMENT_ADAPTATION|REQUEST_EVIDENCE_RESOLUTION|REQUEST_TARGET_CONFIG_CORRECTION",
"targetOwner": "layout_spec_owner|Compo8.01_input_owner|layout_owner|integration_owner|Compo8.03_request_owner|policy_owner",
"variantRef": "source variant",
"targetRef": "optional",
"contentRef": "optional from placement candidate",
"observed": "optional descriptor",
"expected": "optional explicit target",
"mutationAllowed": false,
"provenance": "DERIVED"
},
"hard_filter_semantics": {
"INVALID": "invalid target/profile/variant configuration or internally invalid referenced lineage",
"REJECT": "at least one valid HARD GridTargetSpec is BREACHED",
"N_A": "one or more supplied HARD targets are unresolved and no INVALID/proven REJECT determines decision",
"KEEP": "no HARD breach, no blocking invalidity and all supplied HARD targets resolved/satisfied",
"precedence": "INVALID > REJECT > N_A > KEEP",
"separate_from_score": "never threshold grid.system.localGridFit to derive hard filter"
},
"scoring_semantics": {
"explicit_profile_required": true,
"only_soft_targets": true,
"required_missing": "N_A|INVALID according profile",
"optional_missing": "drop denominator only when explicitly optional",
"aggregate": "weighted mean of applicable component fits",
"score_domain": "0..1",
"meaning": "closeness to explicit Topic8 target profile only",
"not_global_quality": true
},
"variant_comparison": {
"eligible": "hardFilter=KEEP and localGridFit applicable under same profile/target set",
"order": "localGridFit descending",
"ties": "same rank/equal fit; variantRef used only deterministic serialization",
"reject_na_invalid": "not assigned numeric zero and not mixed into score ranking",
"commit": "comparison does not accept/mutate a layout",
"profile_guard": "all compared evaluations must carry the same profileRef",
"target_set_guard": "all compared evaluations must carry the same deterministic targetSetFingerprint"
},
"repair_policy": {
"GRID_COLUMN_COUNT_SET": "REQUEST_COLUMN_STRUCTURE_ADAPTATION",
"GRID_COLUMN_WIDTH_INTERVAL": "REQUEST_GRID_WIDTH_ADAPTATION",
"GRID_GUTTER_WIDTH_INTERVAL": "REQUEST_GUTTER_ADAPTATION",
"GRID_SPAN_WIDTH_INTERVAL": "REQUEST_SPAN_ADAPTATION",
"NODE_OCCUPANCY_STATE_SET": "REQUEST_NODE_OCCUPANCY_ADAPTATION",
"PLACEMENT_MODE_SET": "REQUEST_PLACEMENT_ADAPTATION",
"PLACEMENT_SPAN_COLUMN_COUNT_SET": "REQUEST_PLACEMENT_ADAPTATION",
"PLACEMENT_SPAN_REF_SET": "REQUEST_PLACEMENT_ADAPTATION",
"PLACEMENT_ANCHOR_NODE_SET": "REQUEST_PLACEMENT_ADAPTATION",
"missing evidence": "REQUEST_EVIDENCE_RESOLUTION",
"invalid target/profile": "REQUEST_TARGET_CONFIG_CORRECTION",
"foreign_mutation": "FORBIDDEN"
},
"ownership_map": {
"8.00": "ColumnGrid root/domain/coordinate ownership",
"8.01": "column/gutter/span geometry",
"8.02": "canonical line/node topology and node occupancy registry",
"8.03": "bounded deterministic X-placement candidate generation",
"8.04": "variant bundle, target interpretation, hard filter, local scoring, repair, comparison, regression",
"9.x": "2D modular rows/cells/regions and cell/region occupancy",
"10.x": "alignment/proximity relations",
"future_global": "balance/hierarchy/negative space/eye flow/typography/image crop/global composition score"
},
"semantic_firewalls": {
"variant_vs_generation": "variant references existing evidence; no hidden combinatorial generation",
"hard_filter_vs_score": "hard target breach rejects; never becomes numeric penalty",
"descriptor_vs_score": "only explicit target fit can score",
"component_vs_vote": "components are contained in localGridFit and do not vote independently",
"seed_priority_vs_score": "8.03 seedPriority is never a scoring input",
"occupancy_vs_alignment": "8.02 node state may be target evidence; proximity remains Topic10",
"variant_rank_vs_beauty": "rank is explicit target fit only"
},
"metric_policy": {
"primary_numeric_vote": "grid.system.localGridFit only",
"direct_global_score": "FORBIDDEN",
"column_count_without_target": "DESCRIPTOR_ONLY",
"width_without_target": "DESCRIPTOR_ONLY",
"gutter_without_target": "DESCRIPTOR_ONLY",
"occupancy_without_target": "DESCRIPTOR_ONLY",
"candidate_without_target": "DESCRIPTOR_ONLY",
"seedPriority_score": "FORBIDDEN",
"beautyScore": "FORBIDDEN"
},
"hard_constraints": [
"8.04 owns immutable ColumnGridVariant bundles, explicit GridTargetSpec interpretation, Topic8 hard-filter decisions, local target-fit scoring, mutation-free repair requests, variant comparison and consolidated Topic8 regression.",
"8.04 does not generate column geometry, topology, occupancy bindings or placement candidates; it only references outputs owned by 8.01, 8.02 and 8.03.",
"A ColumnGridVariant is an immutable evidence bundle, not an accepted layout mutation.",
"Variant sets are explicit lists. 8.04 must not generate Cartesian products of geometry variants, occupancy snapshots or placement candidate sets.",
"Each variant must preserve gridRef, columnGeometryRef, topologyRef and optional occupancyRegistryRef/candidateSetRef/placementCandidateRef lineage.",
"GRID_ONLY variants may omit placementCandidateRef. GRID_WITH_PLACEMENT_CANDIDATE variants require a candidate that belongs to the declared candidate set and same grid/geometry/topology lineage.",
"Scoring requires explicit GridTargetSpec and explicit GridScoringProfile. Without an applicable scoring profile, grid.system.localGridFit is N_A.",
"No target may be inferred from common design practice, role name, equal-column geometry, centered placement, free-node count or any aesthetic convention.",
"Baseline target selectors are GRID_COLUMN_COUNT_SET, GRID_COLUMN_WIDTH_INTERVAL, GRID_GUTTER_WIDTH_INTERVAL, GRID_SPAN_WIDTH_INTERVAL, NODE_OCCUPANCY_STATE_SET, PLACEMENT_MODE_SET, PLACEMENT_SPAN_COLUMN_COUNT_SET, PLACEMENT_SPAN_REF_SET and PLACEMENT_ANCHOR_NODE_SET.",
"Numeric interval targets must declare valueSpace RAW or SHORT_N. RAW targets require an explicit unit matching the observed source unit; no implicit unit conversion occurs.",
"SHORT_N numeric targets require available ShortN evidence; missing normalized evidence is N_A or INVALID according to the target missingEvidencePolicy.",
"Categorical/discrete target sets must be explicit non-empty allowedValues.",
"HARD targets produce SATISFIED/BREACHED/N_A/INVALID evidence only and never numeric component scores.",
"SOFT numeric interval fit is 1 - clamp(distance/softTolerance,0,1).",
"SOFT categorical/discrete target fit is 1 when observed is allowed; otherwise explicit mismatchFit is used. mismatchFit must be declared by the target and is not hidden.",
"Hard-filter decision is separate from grid.system.localGridFit and uses precedence INVALID > REJECT > N_A > KEEP.",
"A proven HARD breach yields REJECT even if soft localGridFit is high.",
"Missing or invalid configuration evidence must not be converted into a numeric zero.",
"Only SOFT target components may contribute to grid.system.localGridFit.",
"All component MetricResults belong to scoringGroup grid-system-local, componentOf grid.system.localGridFit and independentVoteAllowed=false.",
"grid.system.localGridFit is the only independent numeric Topic8 vote produced by 8.04.",
"Raw column count, widths, gutters, span widths, node states, candidate counts and seedPriority never vote independently.",
"Required and optional scoring targets are explicit. Missing optional targets may drop from the denominator only when declared optional.",
"Missing required soft target evidence follows GridScoringProfile.missingRequiredPolicy N_A or INVALID.",
"Weights must be finite positive values and keys must exactly cover all declared requiredTargetRefs and optionalTargetRefs.",
"Variant ranking is allowed only among KEEP variants with applicable localGridFit under the same profile/target set.",
"REJECT, N_A and INVALID variants are not silently ranked below valid variants as if they had numeric score zero.",
"Ranking means closeness to the explicit Topic8 target profile only; it is not universal design quality.",
"Ties preserve equality and use variantRef only for deterministic serialization, not as a visual preference.",
"Repair requests are advisory and mutationAllowed=false.",
"A geometry repair request routes to the 8.01/layout-spec owner; 8.04 does not rewrite geometry.",
"An occupancy repair request routes to the layout/integration owner; 8.04 does not rewrite the 8.02 registry.",
"A placement repair request routes to the 8.03 request/layout owner; 8.04 does not accept or move content.",
"Topic9 retains ownership of 2D modular cells/regions and their occupancy.",
"Topic10 retains ownership of alignment/proximity measurement.",
"Variant comparison must reject mixed profileRef or mixed targetSetFingerprint inputs instead of ranking incomparable evaluations.",
"A target with subjectKind GRID_WITH_PLACEMENT_CANDIDATE is not applicable to GRID_ONLY and must resolve by its explicit missingEvidencePolicy.",
"Global balance, hierarchy, negative space, eye flow, typography and image crop remain outside Topic8 scoring.",
"N/A != 0.",
"No beautyScore."
],
"hard_rules": [
"8.04 owns immutable ColumnGridVariant bundles, explicit GridTargetSpec interpretation, Topic8 hard-filter decisions, local target-fit scoring, mutation-free repair requests, variant comparison and consolidated Topic8 regression.",
"8.04 does not generate column geometry, topology, occupancy bindings or placement candidates; it only references outputs owned by 8.01, 8.02 and 8.03.",
"A ColumnGridVariant is an immutable evidence bundle, not an accepted layout mutation.",
"Variant sets are explicit lists. 8.04 must not generate Cartesian products of geometry variants, occupancy snapshots or placement candidate sets.",
"Each variant must preserve gridRef, columnGeometryRef, topologyRef and optional occupancyRegistryRef/candidateSetRef/placementCandidateRef lineage.",
"GRID_ONLY variants may omit placementCandidateRef. GRID_WITH_PLACEMENT_CANDIDATE variants require a candidate that belongs to the declared candidate set and same grid/geometry/topology lineage.",
"Scoring requires explicit GridTargetSpec and explicit GridScoringProfile. Without an applicable scoring profile, grid.system.localGridFit is N_A.",
"No target may be inferred from common design practice, role name, equal-column geometry, centered placement, free-node count or any aesthetic convention.",
"Baseline target selectors are GRID_COLUMN_COUNT_SET, GRID_COLUMN_WIDTH_INTERVAL, GRID_GUTTER_WIDTH_INTERVAL, GRID_SPAN_WIDTH_INTERVAL, NODE_OCCUPANCY_STATE_SET, PLACEMENT_MODE_SET, PLACEMENT_SPAN_COLUMN_COUNT_SET, PLACEMENT_SPAN_REF_SET and PLACEMENT_ANCHOR_NODE_SET.",
"Numeric interval targets must declare valueSpace RAW or SHORT_N. RAW targets require an explicit unit matching the observed source unit; no implicit unit conversion occurs.",
"SHORT_N numeric targets require available ShortN evidence; missing normalized evidence is N_A or INVALID according to the target missingEvidencePolicy.",
"Categorical/discrete target sets must be explicit non-empty allowedValues.",
"HARD targets produce SATISFIED/BREACHED/N_A/INVALID evidence only and never numeric component scores.",
"SOFT numeric interval fit is 1 - clamp(distance/softTolerance,0,1).",
"SOFT categorical/discrete target fit is 1 when observed is allowed; otherwise explicit mismatchFit is used. mismatchFit must be declared by the target and is not hidden.",
"Hard-filter decision is separate from grid.system.localGridFit and uses precedence INVALID > REJECT > N_A > KEEP.",
"A proven HARD breach yields REJECT even if soft localGridFit is high.",
"Missing or invalid configuration evidence must not be converted into a numeric zero.",
"Only SOFT target components may contribute to grid.system.localGridFit.",
"All component MetricResults belong to scoringGroup grid-system-local, componentOf grid.system.localGridFit and independentVoteAllowed=false.",
"grid.system.localGridFit is the only independent numeric Topic8 vote produced by 8.04.",
"Raw column count, widths, gutters, span widths, node states, candidate counts and seedPriority never vote independently.",
"Required and optional scoring targets are explicit. Missing optional targets may drop from the denominator only when declared optional.",
"Missing required soft target evidence follows GridScoringProfile.missingRequiredPolicy N_A or INVALID.",
"Weights must be finite positive values and keys must exactly cover all declared requiredTargetRefs and optionalTargetRefs.",
"Variant ranking is allowed only among KEEP variants with applicable localGridFit under the same profile/target set.",
"REJECT, N_A and INVALID variants are not silently ranked below valid variants as if they had numeric score zero.",
"Ranking means closeness to the explicit Topic8 target profile only; it is not universal design quality.",
"Ties preserve equality and use variantRef only for deterministic serialization, not as a visual preference.",
"Repair requests are advisory and mutationAllowed=false.",
"A geometry repair request routes to the 8.01/layout-spec owner; 8.04 does not rewrite geometry.",
"An occupancy repair request routes to the layout/integration owner; 8.04 does not rewrite the 8.02 registry.",
"A placement repair request routes to the 8.03 request/layout owner; 8.04 does not accept or move content.",
"Topic9 retains ownership of 2D modular cells/regions and their occupancy.",
"Topic10 retains ownership of alignment/proximity measurement.",
"Variant comparison must reject mixed profileRef or mixed targetSetFingerprint inputs instead of ranking incomparable evaluations.",
"A target with subjectKind GRID_WITH_PLACEMENT_CANDIDATE is not applicable to GRID_ONLY and must resolve by its explicit missingEvidencePolicy.",
"Global balance, hierarchy, negative space, eye flow, typography and image crop remain outside Topic8 scoring.",
"N/A != 0.",
"No beautyScore."
],
"soft_constraints": [],
"preferences": [],
"overrides_allowed_by": [
"a newer explicit target/profile may evaluate historical immutable variants without mutating them",
"a newer geometry/topology/registry/candidate snapshot creates a new variant lineage rather than rewriting an old variant"
],
"initial_heuristics": {},
"style_preset_values": [],
"candidate_generation": {
"geometry_candidates": "NONE",
"placement_candidates": "NONE",
"variant_cross_product": "FORBIDDEN",
"reason": "8.04 evaluates explicit variants; generation remains 8.03/upstream"
},
"correction_policy": {
"all_repairs": "mutationAllowed=false",
"geometry": "route request to layoutSpec/8.01 input owner",
"occupancy": "route request to layout/integration owner",
"placement": "route request to 8.03 request/layout owner",
"target_config": "route request to policy owner",
"evidence": "route request to source/integration owner"
},
"deferred_inputs": [
"Topic9 2D modular-grid rows/cells/regions",
"Topic10 alignment scoring",
"future global composition aggregation",
"future multi-object layout orchestrator",
"future empirical calibration of target profiles"
],
"recompute_when": [
"variant lineage ref changes",
"target set changes",
"scoring profile changes",
"8.01 geometry changes",
"8.02 topology/registry changes",
"8.03 candidate set/candidate changes"
],
"tests": [
"variant lineage validation",
"grid-only vs placement variant",
"numeric raw target",
"numeric ShortN target",
"categorical target",
"hard breach/keep/N_A/invalid precedence",
"soft fit interval",
"soft categorical mismatchFit",
"required/optional scoring profile",
"weight coverage",
"MetricResult metadata",
"no double counting",
"repair routing",
"variant ranking",
"tie semantics",
"no zero-fill",
"no seedPriority scoring",
"no mutation",
"cross-module Topic8 ownership regression"
],
"finality": "TOPIC8_VARIANT_TARGET_HARDFILTER_LOCAL_SCORING_REPAIR_COMPARISON_AND_REGRESSION_OWNER",
"target_applicability": {
"GRID_VARIANT": "applicable to GRID_ONLY and GRID_WITH_PLACEMENT_CANDIDATE for non-placement selectors",
"GRID_WITH_PLACEMENT_CANDIDATE": "requires variantKind=GRID_WITH_PLACEMENT_CANDIDATE",
"mismatch": "N_A or INVALID according target missingEvidencePolicy"
}
}