COMPO · 16.04 · CANDIDATES / SCORING / TESTS

One local vote.
Repairs stay requests.

16.04 оценивает explicit scale target profile поверх наблюдений 16.01–16.03. Пять component MetricResults не голосуют независимо; единственный Topic16 vote — scale.system.localTargetProfileFit. Repair generator создаёт только bounded owner-routed requests.

ModuleCompo 16.04
Components5
Independent votes1
Scoring groupscale-local
Generatorbounded / seeded
NextSTOP

Observed state first. Target fit second.

00 / contract
16.01 ratio observations + 16.02 class assignments + 16.03 ladder/distributions + explicit ScaleTargetProfile + explicit ScaleEvaluationProfile → 5 component fits → 1 composite local vote ONLY under KEEP + failed applicable components → bounded owner-routed repair requests

Exactly one independent Topic16 vote

01 / scoring ownership
5 COMPONENTS

Non-independent

Every component belongs to scale-local and feeds one composite.

1 COMPOSITE

Local target fit

scale.system.localTargetProfileFit is the only independent numeric vote in Topic16.

NO GLOBAL CLAIM

Local only

Higher local fit does not automatically win the final layout.

ScaleTargetProfile is explicit

02 / desired state
ScaleTargetProfile {
  pairwiseRatioTarget,
  classAssignmentTarget,
  classDistributionTarget,
  ladderStructureTarget,
  levelOccupancyTarget,

  selectionMode:
    EXPLICIT_ONLY,

  source / owner / provenance,

  status,
  mutationAllowed: false
}
NO implicit: ideal ratio 1.618 near-equal penalty L/M/S preference uniform distribution ladder span step progression occupancy evenness

Five component families

03 / component-first
ComponentObserved ownerTarget question
pairwiseRatio16.01Do explicit relation ratios / bands satisfy declared ranges?
classAssignment16.02Do explicit subjects fall into allowed target classes?
classDistribution16.03Do declared class proportions fall inside explicit ranges?
ladderStructure16.03Do level count, span and adjacent steps satisfy explicit target ranges?
levelOccupancy16.03Does exact-level occupancy satisfy explicit target constraints?

Mismatch is zero, missing is N_A

04 / state semantics
StateMetric semantics
MATCHOK, value=1
PARTIALOK, 0<value<1
MISMATCHOK, value=0, KEEP
TARGET_DECLARED_NAN_A, may leave denominator
MISSING_OBSERVEDN_A, composite N_A
LINEAGE_MISMATCHN_A, composite N_A
INVALIDINVALID, composite INVALID
0 != N_A != INVALID target mismatch != hard reject

MetricResult ownership

05 / vote budget
5 component MetricResults {
  owner: Compo16.04,
  composite: false,
  componentOf:
    scale.system.localTargetProfileFit,
  scoringGroup:
    scale-local,
  independentVoteAllowed:
    false
}

1 composite MetricResult {
  key:
    scale.system.localTargetProfileFit,
  owner:
    Compo16.04,
  composite:
    true,
  componentOf:
    null,
  scoringGroup:
    scale-local,
  independentVoteAllowed:
    true
}

No implicit equal weights

06 / evaluation profile
composite = Σ(weight_i × fit_i) ────────────────── Σ(weight_i) over included components only zero weight → excluded TARGET_DECLARED_NA → may be excluded MISSING_OBSERVED → composite N_A LINEAGE_MISMATCH → composite N_A

Local comparisons need the same target

07 / comparability
Comparable only when: same ScaleTargetProfileRef same ScaleEvaluationProfileRef compatible upstream lineage Forbidden: cross-target ranking cross-profile ranking local-fit → final-layout winner

Repair generator starts only after valid KEEP

08 / bounded generation
KEEP
+ failed applicable component
+ explicit repair route
+ explicit seed
+ maxCandidates 1..64

→ ScaleRepairRequest
→ ScaleRepairCandidate

NO generation under:
N_A
INVALID

NO full Cartesian product

Candidate ≠ repaired layout

09 / owner routing
repair candidate contains: failed component repair kind target owner evidence lineage reason suggested owner-facing action seed ordinal It contains NO: mutated geometry mutated ratio mutated class mutated ladder mutated semantics final-layout rank

Five repair kinds

10 / bounded diversity
ADJUST_PAIRWISE_SCALEFailed pairwise ratio / near-equal target.
ADJUST_CLASS_ASSIGNMENTFailed explicit subject-class target.
ADJUST_CLASS_DISTRIBUTIONFailed class-frequency target.
ADJUST_LADDER_STRUCTUREFailed level count / span / step target.
ADJUST_LEVEL_OCCUPANCYFailed exact-level occupancy target.
v1 diversity pruning: max one candidate per component + repair kind

Scoring does not steal upstream ownership

11 / critical firewalls
Observed ≠ desired

Targets never rewrite ratio observations, class boundaries, assignments, ladder levels or distributions.

One local vote

Components cannot vote independently; the composite remains local Topic16 target fit.

LARGE != dominant SMALL != microdetail ladder level != hierarchy level scale ratio != visual mass ratio repair request != foreign mutation module order != rule priority

CANON → LAB → DATA → IDEAS

12 / mandatory hooks
IDEAS_REFS[]7 project directions preserved.
DATA_CAPTURE[]Target fit, component metrics, repair outcomes.
DEFERRED_SEMANTIC_INPUTS[]Global weighting and final-layout policy remain downstream.
HUMAN_FEEDBACK_HOOKS[]Target and repair acceptance/rejection reasons.
CONFLICT_PRIORITY_ASSUMPTIONS[]Weights and ordinals are not global priority.
LAB_HOOKS[]Target-fit and repair usefulness studies.

16.04 regression suite

13 / deterministic tests

Tests cover explicit target validation, all five component fits, soft-zero mismatch, N_A propagation, exact one-vote ownership, same-target comparison, seeded bounded repair generation, dedup/diversity pruning and non-mutation.

Tests not run yet.

DATA FOR LAYOUT ENGINE

14 / machine contract
{
  "module": "Compo 16.04",
  "name": "candidates_scoring_and_tests",
  "version": "1.0-canonical",
  "canonical_main_title": "Candidates, scoring and tests",
  "topic": "16_МАСШТАБ_И_ОТНОШЕНИЕ_РАЗМЕРОВ",
  "scope": "EXPLICIT_SCALE_TARGET_PROFILE_COMPONENT_FIRST_LOCAL_FIT_SCORING_ONE_TOPIC16_COMPOSITE_VOTE_AND_BOUNDED_NONMUTATING_REPAIR_CANDIDATES_ONLY",
  "main_topic_contract": {
    "topic_title": "Масштаб и отношение размеров",
    "topic_goal": "Считает отношения размеров между объектами и масштабные ступени. Нужна для выразительной дифференциации, scale ladders и контроля почти-равных размеров.",
    "expected_output": "ScaleRelation[], size-ratio descriptors, scale classes",
    "planned_files": [
      "16.00 Scale relation model",
      "16.01 Pairwise size ratios",
      "16.02 Large/medium/small classes",
      "16.03 Scale ladders and distributions",
      "16.04 Candidates, scoring and tests"
    ]
  },
  "ownership": {
    "owner": "Compo16.04",
    "owns": [
      "ScaleTargetApplicability taxonomy",
      "ScaleTargetProfile",
      "ScaleEvaluationProfile",
      "ScaleComponentTargetResult",
      "ScalePairwiseRatioTarget",
      "ScaleClassAssignmentTarget",
      "ScaleClassDistributionTarget",
      "ScaleLadderStructureTarget",
      "ScaleLevelOccupancyTarget",
      "five non-independent component MetricResult contracts",
      "one Topic16 composite MetricResult: scale.system.localTargetProfileFit",
      "ScaleEvaluationResult",
      "ScaleRepairKind taxonomy",
      "ScaleRepairRoute",
      "ScaleRepairRequest",
      "ScaleRepairCandidate",
      "ScaleRepairCandidateSetPolicy",
      "ScaleRepairCandidateSet",
      "same-target/same-evaluation-profile comparability",
      "component-first weighted composite calculation",
      "identity/status/provenance rules for Topic16 evaluation/generation layer",
      "final Topic16 module-level regression contract"
    ],
    "does_not_own": [
      "ScaleSubject eligibility / ScaleRelation identity — Compo16.00",
      "measurement binding — Compo16.00",
      "raw magnitude evidence / magnitude resolution — Compo16.01",
      "pairwise numeric ratio / near-equal observation — Compo16.01",
      "ScaleClassProfile / class assignment — Compo16.02",
      "ScaleLadderDescriptor / distributions — Compo16.03",
      "raw geometry measurement — upstream geometry/measurement owners",
      "transform scale parameter — Compo3.05",
      "format normalization / global scale invariance — Compo6.03",
      "visual mass — Compo4",
      "dominance / focal ranking — Compo13",
      "microdetail size/contrast role-envelope semantics — Topic15",
      "aspect ratio / part-to-whole proportions — Topic17",
      "generic hierarchy/subordination — Compo18",
      "semantic importance",
      "global balance",
      "final-layout ranking",
      "foreign geometry/style/semantic mutation"
    ]
  },
  "consumes": [
    "valid Compo16.01 ScaleRelationRatioSet",
    "valid Compo16.02 ScaleClassAssignmentSet",
    "valid Compo16.03 ScaleLadderDistributionSet",
    "explicit ScaleTargetProfile",
    "explicit ScaleEvaluationProfile",
    "owner-qualified repair routing"
  ],
  "provides": [
    "five component MetricResult records",
    "one composite MetricResult: scale.system.localTargetProfileFit",
    "ScaleEvaluationResult",
    "ScaleRepairRequest[]",
    "ScaleRepairCandidate[]",
    "ScaleRepairCandidateSet",
    "Topic16.04 observation record",
    "Topic16 local completion marker 5/5"
  ],
  "metric_ownership": {
    "component_metric_keys": [
      "scale.target.componentFit.pairwiseRatio",
      "scale.target.componentFit.classAssignment",
      "scale.target.componentFit.classDistribution",
      "scale.target.componentFit.ladderStructure",
      "scale.target.componentFit.levelOccupancy"
    ],
    "component_owner": "Compo16.04",
    "component_composite": false,
    "componentOf": "scale.system.localTargetProfileFit",
    "component_scoringGroup": "scale-local",
    "component_independentVoteAllowed": false,
    "composite_metric_key": "scale.system.localTargetProfileFit",
    "composite_owner": "Compo16.04",
    "composite": true,
    "composite_componentOf": null,
    "scoringGroup": "scale-local",
    "composite_independentVoteAllowed": true,
    "independent_vote_count_in_topic16": 1,
    "firewall": "Exactly one independent numeric vote exists in Topic16. All five component MetricResults are composite components only."
  },
  "canonical_metric_result_minimum": [
    "key",
    "owner",
    "value",
    "applicability",
    "confidence",
    "status",
    "provenance",
    "composite",
    "componentOf",
    "dependsOn",
    "derivedFrom",
    "scoringGroup",
    "independentVoteAllowed",
    "evidence",
    "repairHints"
  ],
  "scale_target_applicability_taxonomy": {
    "APPLY": "This target component must be evaluated.",
    "IGNORE": "Target profile explicitly excludes this component from fit.",
    "REQUIRE_OBSERVED": "Equivalent to APPLY plus hard requirement that exact observed lineage exists."
  },
  "target_component_result_state_taxonomy": {
    "MATCH": "Applicable target completely satisfied; fit 1.",
    "PARTIAL": "Applicable numeric/coverage target partially satisfied; fit strictly between 0 and 1.",
    "MISMATCH": "Applicable target validly evaluated but not satisfied; fit 0.",
    "TARGET_DECLARED_NA": "Target explicitly IGNORE; component N_A and may leave denominator.",
    "MISSING_OBSERVED": "Required upstream evidence missing; component N_A and composite N_A.",
    "LINEAGE_MISMATCH": "Observed input exists but profile/lineage does not match target; component N_A and composite N_A.",
    "INVALID": "Invalid target/profile/evidence contract; composite INVALID."
  },
  "scale_target_profile_schema": {
    "scaleTargetProfileRef": "stable identity",
    "scopeRef": "Topic16 scope",
    "selectionMode": "EXPLICIT_ONLY",
    "pairwiseRatioTarget": "ScalePairwiseRatioTarget or IGNORE",
    "classAssignmentTarget": "ScaleClassAssignmentTarget or IGNORE",
    "classDistributionTarget": "ScaleClassDistributionTarget or IGNORE",
    "ladderStructureTarget": "ScaleLadderStructureTarget or IGNORE",
    "levelOccupancyTarget": "ScaleLevelOccupancyTarget or IGNORE",
    "targetSourceRef": "explicit source",
    "targetSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "default": "NONE — no implicit scale target profile",
    "firewall": "Target profile declares desired state only. It does not rewrite observed ratios, class profiles, class assignments, ladder levels or distributions."
  },
  "scale_pairwise_ratio_target_schema": {
    "applicability": "APPLY|IGNORE|REQUIRE_OBSERVED",
    "scaleRelationRatioSetRef": "exact expected 16.01 set",
    "relationTargets": [
      {
        "scaleRelationRef": "exact relation",
        "minLargerToSmallerRatioInclusive": "nullable finite >=1",
        "maxLargerToSmallerRatioInclusive": "nullable finite >= min",
        "allowedNearEqualBandStates": "optional subset EXACT_EQUAL|NEAR_EQUAL|DISTINCT",
        "required": "boolean"
      }
    ],
    "relationAggregation": "MEAN_OF_REQUIRED_TARGET_FITS",
    "missingRequiredRelation": "MISSING_OBSERVED",
    "firewall": "Target thresholds are explicit style/brief constraints. No universal ideal ratio, no implicit 1.618 and no implicit near-equal penalty."
  },
  "scale_class_assignment_target_schema": {
    "applicability": "APPLY|IGNORE|REQUIRE_OBSERVED",
    "scaleClassAssignmentSetRef": "exact expected 16.02 set",
    "subjectTargets": [
      {
        "subjectRef": "exact subject",
        "allowedClassKinds": "non-empty subset SMALL|MEDIUM|LARGE",
        "required": "boolean"
      }
    ],
    "subjectAggregation": "MEAN_OF_REQUIRED_TARGET_FITS",
    "missingRequiredSubject": "MISSING_OBSERVED",
    "firewall": "Allowed class is target semantics only. It does not redefine class boundaries or imply dominance/importance."
  },
  "scale_class_distribution_target_schema": {
    "applicability": "APPLY|IGNORE|REQUIRE_OBSERVED",
    "scaleClassDistributionDescriptorRef": "exact expected 16.03 descriptor",
    "classRanges": {
      "SMALL": "optional [minInclusive,maxInclusive] within [0,1]",
      "MEDIUM": "optional [minInclusive,maxInclusive] within [0,1]",
      "LARGE": "optional [minInclusive,maxInclusive] within [0,1]"
    },
    "rangeFitMode": "MEAN_OF_DECLARED_CLASS_RANGE_FITS",
    "firewall": "Target class proportions are explicit. Uniformity, skew and any class majority have no default desirability."
  },
  "scale_ladder_structure_target_schema": {
    "applicability": "APPLY|IGNORE|REQUIRE_OBSERVED",
    "scaleLadderDescriptorRef": "exact expected 16.03 ladder",
    "occupiedLevelCountRange": "optional integer [min,max]",
    "overallSpanRatioRange": "optional finite [min>=1,max>=min]",
    "adjacentStepRatioRange": "optional finite [min>1,max>=min] applied to every observed adjacent step",
    "singleLevelAllowed": "boolean",
    "structureAggregation": "MEAN_OF_DECLARED_STRUCTURE_FITS",
    "firewall": "Ladder constraints are target-relative only. More levels, larger span and regular/equal steps have no universal preference."
  },
  "scale_level_occupancy_target_schema": {
    "applicability": "APPLY|IGNORE|REQUIRE_OBSERVED",
    "scaleLevelDistributionDescriptorRef": "exact expected 16.03 level distribution",
    "occupancyMode": "PER_LEVEL_RANGES|MAX_SINGLE_LEVEL_PROPORTION|IGNORE",
    "perLevelRanges": "optional exact levelRef -> [minInclusive,maxInclusive]",
    "maxSingleLevelProportion": "optional finite [0,1]",
    "occupancyAggregation": "MEAN_OF_DECLARED_OCCUPANCY_FITS",
    "firewall": "Occupancy targets are explicit brief/style constraints. Evenness is not an implicit goal and concentration is not an implicit defect."
  },
  "scale_evaluation_profile_schema": {
    "scaleEvaluationProfileRef": "stable identity",
    "componentWeights": {
      "pairwiseRatio": "explicit finite >=0",
      "classAssignment": "explicit finite >=0",
      "classDistribution": "explicit finite >=0",
      "ladderStructure": "explicit finite >=0",
      "levelOccupancy": "explicit finite >=0"
    },
    "zeroWeightPolicy": "EXCLUDE_FROM_DENOMINATOR",
    "targetDeclaredNAPolicy": "EXCLUDE_FROM_DENOMINATOR",
    "missingObservedPolicy": "COMPOSITE_N_A",
    "lineageMismatchPolicy": "COMPOSITE_N_A",
    "invalidPolicy": "COMPOSITE_INVALID",
    "mismatchPolicy": "SOFT_ZERO_KEEP",
    "normalization": "WEIGHTED_MEAN_OVER_INCLUDED_COMPONENTS",
    "evaluationSourceRef": "explicit source",
    "evaluationSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "default": "NONE — no implicit equal component weights",
    "firewall": "Evaluation weights are vote-family weights inside Topic16 only. They are not global rule priority and do not change module execution order."
  },
  "component_metric_contract": {
    "owner": "Compo16.04",
    "valueDomain": "[0,1] when status OK; null when N_A/INVALID",
    "applicability": "APPLICABLE|N_A",
    "status": "OK|N_A|INVALID",
    "provenance": "DERIVED",
    "composite": false,
    "componentOf": "scale.system.localTargetProfileFit",
    "scoringGroup": "scale-local",
    "independentVoteAllowed": false,
    "mismatchSemantics": "valid mismatch => value 0, status OK, evaluationOutcome KEEP",
    "partialSemantics": "valid partial match => 0<value<1, status OK",
    "matchSemantics": "full match => value 1, status OK",
    "firewall": "Component MetricResult values never independently vote."
  },
  "composite_metric_contract": {
    "key": "scale.system.localTargetProfileFit",
    "owner": "Compo16.04",
    "valueDomain": "[0,1] when status OK; null when N_A/INVALID",
    "applicability": "APPLICABLE|N_A",
    "status": "OK|N_A|INVALID",
    "provenance": "DERIVED",
    "composite": true,
    "componentOf": null,
    "scoringGroup": "scale-local",
    "independentVoteAllowed": true,
    "normalization": "sum(weight_i*fit_i)/sum(weight_i) over included component metrics",
    "mismatchPolicy": "SOFT_ZERO_UNDER_KEEP",
    "outcomePrecedence": "INVALID > N_A > KEEP",
    "firewall": "scale.system.localTargetProfileFit is local Topic16 target fit only. It is not beautyScore, global layout quality, generic hierarchy score or final-layout rank."
  },
  "scale_evaluation_result_schema": {
    "scaleEvaluationResultRef": "stable identity",
    "scaleTargetProfileRef": "exact target",
    "scaleEvaluationProfileRef": "exact evaluation profile",
    "observedRefs": "exact upstream 16.01–16.03 refs",
    "componentMetricResultRefs": "five exact component metrics",
    "compositeMetricResultRef": "exact composite",
    "evaluationOutcome": "KEEP|N_A|INVALID",
    "failedApplicableComponentKeys": "component keys with valid fit <1 under KEEP",
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "KEEP does not mean globally acceptable. It means local Topic16 evaluation is complete enough to retain and optionally propose repairs."
  },
  "comparability_contract": {
    "local_evaluation_comparison_requires": [
      "same exact ScaleTargetProfileRef",
      "same exact ScaleEvaluationProfileRef",
      "compatible upstream snapshot lineage"
    ],
    "forbids": [
      "cross-target ranking",
      "cross-evaluation-profile ranking",
      "cross-scale-class-profile ranking without explicit target normalization",
      "cross-ladder-policy ranking without exact target lineage",
      "using localTargetProfileFit as global layout winner"
    ],
    "firewall": "Higher localTargetProfileFit may rank only evaluations under the same target/evaluation profile and compatible lineage. It cannot automatically rank final layouts."
  },
  "scale_repair_kind_taxonomy": {
    "ADJUST_PAIRWISE_SCALE": "Repair request for failed pairwise-ratio / near-equal target.",
    "ADJUST_CLASS_ASSIGNMENT": "Repair request for failed subject class target.",
    "ADJUST_CLASS_DISTRIBUTION": "Repair request for failed class-frequency target.",
    "ADJUST_LADDER_STRUCTURE": "Repair request for failed occupied-level/span/step target.",
    "ADJUST_LEVEL_OCCUPANCY": "Repair request for failed exact-level occupancy target."
  },
  "repair_route_schema": {
    "scaleRepairRouteRef": "stable identity",
    "repairKind": "one ScaleRepairKind",
    "targetOwnerRef": "explicit foreign owner capable of reviewing proposed change",
    "targetFieldFamily": "explicit owner-facing field family",
    "routeSourceRef": "explicit route source",
    "routeSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "Route declares ownership destination only. Compo16.04 never acquires mutation authority over geometry, semantics, class profile or upstream measurements."
  },
  "repair_request_schema": {
    "scaleRepairRequestRef": "stable identity",
    "scaleEvaluationResultRef": "exact local evaluation",
    "failedComponentKey": "one failed applicable component key",
    "repairKind": "one repair kind",
    "scaleRepairRouteRef": "exact valid route",
    "targetOwnerRef": "copied exact route owner",
    "subjectRefs": "canonical refs[]",
    "relationRefs": "canonical refs[]",
    "evidenceRefs": "actual failed evidence lineage",
    "reasonCode": "explicit",
    "suggestedAction": "owner-facing request text/enum",
    "ordinal": "deterministic candidate ordering only",
    "status": "OPEN|INVALID",
    "mutationAllowed": false,
    "firewall": "Repair request is a request, not a changed layout. Ordinal is serialization/tie-break information only, not score or global priority."
  },
  "repair_candidate_schema": {
    "scaleRepairCandidateRef": "stable identity",
    "scaleEvaluationResultRef": "exact evaluation",
    "scaleRepairRequestRef": "exact repair request",
    "repairKind": "one kind",
    "failedComponentKey": "one component",
    "targetOwnerRef": "exact route owner",
    "seed": "explicit inherited generator seed",
    "ordinal": "deterministic integer",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "Candidate contains an owner-routed repair request only. It contains no mutated geometry, class assignment, ratio, ladder or final layout."
  },
  "generator_policy_schema": {
    "scaleRepairCandidateSetPolicyRef": "stable identity",
    "generationMode": "FAILED_APPLICABLE_COMPONENTS_ONLY",
    "evaluationOutcomeRequired": "KEEP",
    "componentSelectionOrder": "EXPLICIT_LIST",
    "selectedComponentKeys": "explicit unique subset of five component metric keys",
    "repairRoutes": "explicit valid route per selected repair kind",
    "seed": "explicit non-empty string",
    "maxCandidates": "integer 1..64",
    "hardFilterInvalidRoutes": true,
    "deduplication": "IDENTITY_EQUIVALENT_REPAIR_REQUEST",
    "diversityPruning": "MAX_ONE_PER_COMPONENT_REPAIR_KIND_IN_V1",
    "fullCartesianProductAllowed": false,
    "generationOnNA": false,
    "generationOnInvalid": false,
    "policySourceRef": "explicit source",
    "policySourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "Generation is bounded, seeded, deterministic and non-mutating. It does not guess when evaluation is N_A/INVALID and never expands a Cartesian product of possible edits."
  },
  "repair_candidate_set_schema": {
    "scaleRepairCandidateSetRef": "stable identity",
    "scaleEvaluationResultRef": "exact evaluation",
    "scaleRepairCandidateSetPolicyRef": "exact policy",
    "seed": "exact seed",
    "candidateRefs": "canonical candidate refs",
    "requestRefs": "canonical request refs",
    "status": "OK|N_A|INVALID",
    "reasonCode": "explicit",
    "mutationAllowed": false,
    "firewall": "Candidate-set size is not a quality score. No candidate is automatically preferred as a final layout."
  },
  "status_policy": {
    "invalidTargetProfile": "INVALID",
    "invalidEvaluationProfile": "INVALID",
    "targetDeclaredIgnore": "component N_A / TARGET_DECLARED_NA / may leave denominator",
    "missingObserved": "component N_A / MISSING_OBSERVED / composite N_A",
    "lineageMismatch": "component N_A / LINEAGE_MISMATCH / composite N_A",
    "validTargetMismatch": "component OK value 0 / KEEP",
    "validPartialMatch": "component OK value strictly between 0 and 1 / KEEP",
    "validFullMatch": "component OK value 1 / KEEP",
    "allIncludedComponentsZeroWeightOrIgnored": "composite N_A",
    "invalidComponent": "composite INVALID",
    "generatorOnKeepWithFailures": "OK candidates possible",
    "generatorOnPerfectKeep": "OK empty candidate set",
    "generatorOnNA": "N_A / no generation",
    "generatorOnInvalid": "INVALID / no generation",
    "N_A_not_zero": true
  },
  "identity_policy": {
    "scaleTargetProfileRef": "hash(scope, all five explicit component targets, source/owner, provenance, status)",
    "scaleEvaluationProfileRef": "hash(component weights, denominator/NA/invalid/mismatch policy, source/owner, provenance, status)",
    "componentMetricResultRef": "hash(metric key, target/evaluation profile, exact evidence lineage, value/applicability/status)",
    "compositeMetricResultRef": "hash(composite key, target/evaluation profile, component metric refs, weights, value/status)",
    "scaleEvaluationResultRef": "hash(target/evaluation profile, upstream observed refs, component/composite refs, outcome, failed keys, status)",
    "scaleRepairRouteRef": "hash(repair kind, target owner, field family, route source/owner, provenance, status)",
    "scaleRepairRequestRef": "hash(evaluation, failed component, repair kind/route/owner, subject/relation/evidence refs, reason/action, ordinal, status)",
    "scaleRepairCandidateRef": "hash(evaluation, request, repair kind, failed component, owner, seed, ordinal, status)",
    "scaleRepairCandidateSetPolicyRef": "hash(generation mode/outcome/order/selected keys/routes/seed/max/filter/dedup/diversity/cartesian/NA/invalid policies, source/owner, provenance, status)",
    "scaleRepairCandidateSetRef": "hash(evaluation, policy, seed, canonical candidates/requests, status)",
    "excluded_from_identity": [
      "display label",
      "display color",
      "UI-only ordering outside explicit component selection order",
      "free-form comment"
    ]
  },
  "critical_firewalls": [
    "16.04 consumes observed 16.01–16.03 descriptors; it does not redefine their ownership",
    "observed pairwise ratio != desired pairwise ratio target",
    "observed near-equal state != desired near-equal target",
    "observed class assignment != desired class target",
    "observed class distribution != desired class distribution target",
    "observed ladder structure != desired ladder target",
    "observed level occupancy != desired occupancy target",
    "target profile selection is EXPLICIT_ONLY",
    "no implicit scale target profile",
    "no implicit equal evaluation weights",
    "evaluation weights != global rule priority",
    "target-declared IGNORE != missing observed evidence",
    "TARGET_DECLARED_NA may drop denominator",
    "MISSING_OBSERVED propagates N_A",
    "LINEAGE_MISMATCH propagates N_A",
    "target mismatch != N_A",
    "target mismatch != hard reject",
    "target mismatch => valid fit 0 under KEEP",
    "fit 0 != N_A",
    "fit 0 != INVALID",
    "partial fit != confidence",
    "component fit 1 != global quality",
    "component fit 0 != global failure",
    "pairwise-ratio component != independent vote",
    "class-assignment component != independent vote",
    "class-distribution component != independent vote",
    "ladder-structure component != independent vote",
    "level-occupancy component != independent vote",
    "all five components share scoringGroup scale-local",
    "exactly one Topic16 independent numeric vote",
    "only scale.system.localTargetProfileFit has independentVoteAllowed true",
    "scale.system.localTargetProfileFit != beautyScore",
    "scale.system.localTargetProfileFit != global layout quality",
    "scale.system.localTargetProfileFit != generic hierarchy score",
    "scale.system.localTargetProfileFit != final-layout rank",
    "higher localTargetProfileFit != automatic final-layout winner",
    "cross-target comparison forbidden",
    "cross-evaluation-profile comparison forbidden",
    "pairwise target does not redefine 16.01 ratios",
    "pairwise target does not redefine 16.01 near-equal policy",
    "class target does not redefine 16.02 class profile",
    "class-distribution target does not redefine 16.03 observed distribution",
    "ladder target does not redefine 16.03 ladder levels",
    "occupancy target does not redefine 16.03 level occupancy",
    "no universal ideal size ratio",
    "no implicit golden ratio",
    "no implicit 1.618 target",
    "no universal near-equal desirability",
    "no universal LARGE/MEDIUM/SMALL desirability",
    "no universal class distribution target",
    "no universal ladder span target",
    "no universal adjacent-step target",
    "no universal occupied-level target",
    "no universal occupancy-evenness target",
    "more levels != better unless explicit target says so",
    "fewer levels != worse unless explicit target says so",
    "uniform class distribution != good unless explicit target says so",
    "skewed class distribution != bad unless explicit target says so",
    "even level occupancy != good unless explicit target says so",
    "concentrated occupancy != bad unless explicit target says so",
    "LARGE != dominant",
    "SMALL != microdetail",
    "ladder level != hierarchy level",
    "scale ratio != visual mass ratio",
    "generator runs only from failed applicable components under KEEP",
    "generator does not guess under N_A",
    "generator does not guess under INVALID",
    "generator full Cartesian product forbidden",
    "generator maxCandidates explicit",
    "generator seed explicit",
    "generator component selection order explicit",
    "generator component selection order != global rule priority",
    "generator ordinal != score",
    "generator ordinal != final-layout rank",
    "repair candidate != repaired layout",
    "repair request != foreign mutation",
    "repair routing != mutation ownership",
    "generator cannot mutate geometry",
    "generator cannot mutate semantics",
    "generator cannot mutate 16.01 ratio observations",
    "generator cannot mutate 16.02 class assignments",
    "generator cannot mutate 16.03 ladder/distributions",
    "generator cannot mutate upstream policies",
    "generator hard-filters invalid owner routes",
    "generator deduplicates identity-equivalent requests",
    "generator diversity-prunes by component/repair kind",
    "component metric dependsOn != derivedFrom",
    "dependsOn = computational dependency",
    "derivedFrom = actual evidence lineage",
    "ScaleSubject/ScaleRelation ownership remains Compo16.00",
    "magnitude/ratio/near-equal ownership remains Compo16.01",
    "ScaleClassProfile/class assignment ownership remains Compo16.02",
    "ladder/distribution ownership remains Compo16.03",
    "visual mass ownership remains Compo4",
    "dominance ownership remains Compo13",
    "microdetail role-envelope ownership remains Topic15",
    "aspect ratio / part-to-whole ownership remains Topic17",
    "generic hierarchy/subordination remains Compo18 territory",
    "transform scale factor ownership remains Compo3.05",
    "format normalization / global scale invariance ownership remains Compo6.03",
    "raw geometry measurement remains foreign-owned",
    "correction request != foreign mutation",
    "N_A != 0",
    "INVALID != 0",
    "local != global",
    "geometry != interpretation",
    "descriptor != score",
    "heuristic != law",
    "one metric = one owner",
    "module execution order != rule priority",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "deferred_after_topic16": [
    "global integration may consume the single Topic16 composite vote subject to global scoring architecture",
    "Topic17 may consume owner-qualified size/proportion evidence without reusing Topic16 class semantics implicitly",
    "Compo18 remains the owner of generic hierarchy/subordination",
    "human/LAB calibration may propose reviewed changes but EXPERIMENT != CANON"
  ],
  "IDEAS_REFS": [
    "IDEA-01 full human test after all 72 topics; validate scale-target fit and repair usefulness later",
    "IDEA-02 semantics before placement; target profile and repair intent stay explicit",
    "IDEA-03 explicit priorities; evaluation weights and generator order are not global rule priority",
    "IDEA-04 collect structured target-fit and repair outcome data for future composition model",
    "IDEA-05 preserve reasons for human acceptance/rejection of scale repair requests",
    "IDEA-06 structured machine-readable data layer for website",
    "IDEA-07 graphics-for-post-text research remains downstream/separate"
  ],
  "DATA_CAPTURE": [
    "sceneRef",
    "scopeRef",
    "snapshotRef",
    "scaleRelationRatioSetRef",
    "scaleClassAssignmentSetRef",
    "scaleLadderDistributionSetRef",
    "scaleTargetProfileRef",
    "scaleEvaluationProfileRef",
    "componentMetricResultRefs[]",
    "pairwiseRatioComponentValue",
    "classAssignmentComponentValue",
    "classDistributionComponentValue",
    "ladderStructureComponentValue",
    "levelOccupancyComponentValue",
    "componentApplicabilityByKey",
    "componentStateByKey",
    "componentEvidenceRefsByKey",
    "componentWeights",
    "compositeMetricResultRef",
    "localTargetProfileFit",
    "evaluationOutcome",
    "failedApplicableComponentKeys[]",
    "scaleEvaluationResultRef",
    "scaleRepairCandidateSetPolicyRef",
    "scaleRepairRouteRefs[]",
    "scaleRepairRequestRefs[]",
    "repairKindByRequest",
    "failedComponentByRequest",
    "targetOwnerByRequest",
    "reasonCodeByRequest",
    "scaleRepairCandidateRefs[]",
    "candidateCount",
    "generatorSeed",
    "humanAcceptedCandidateRefs[]",
    "humanRejectedCandidateRefs[]",
    "humanReasonCodes[]",
    "futureGlobalIntegrationRef"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "global relative importance of Topic16 versus other Topics",
    "global final-layout winner policy",
    "generic hierarchy consequences of scale target mismatch",
    "style-specific learned target profile selection",
    "automatic owner-route policy learned from human feedback",
    "future global conflict resolution between scale and foreign modules"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "TARGET_PROFILE_WRONG",
    "EVALUATION_WEIGHTS_WRONG",
    "PAIRWISE_TARGET_TOO_STRICT",
    "PAIRWISE_TARGET_TOO_PERMISSIVE",
    "NEAR_EQUAL_TARGET_WRONG",
    "CLASS_TARGET_WRONG",
    "CLASS_DISTRIBUTION_TARGET_WRONG",
    "LADDER_LEVEL_COUNT_TARGET_WRONG",
    "LADDER_SPAN_TARGET_WRONG",
    "LADDER_STEP_TARGET_WRONG",
    "LEVEL_OCCUPANCY_TARGET_WRONG",
    "LOCAL_FIT_FEELS_TOO_HIGH",
    "LOCAL_FIT_FEELS_TOO_LOW",
    "REPAIR_ROUTE_WRONG",
    "REPAIR_REQUEST_USEFUL",
    "REPAIR_REQUEST_NOT_USEFUL",
    "REPAIR_REQUEST_ACCEPTED",
    "REPAIR_REQUEST_REJECTED",
    "REPAIR_CANDIDATE_DUPLICATE",
    "REPAIR_CANDIDATE_MISSING",
    "GENERATOR_TOO_MANY_CANDIDATES",
    "GENERATOR_TOO_FEW_CANDIDATES",
    "CROSS_TARGET_COMPARISON_SHOULD_NOT_HAPPEN"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "module execution order is not priority",
    "component list order is not global priority",
    "component weight is local vote weight only",
    "generator component selection order is not global priority",
    "repair candidate ordinal is not score",
    "repair route list order is not owner priority",
    "higher localTargetProfileFit is not final-layout priority",
    "future reviewed global conflict-priority owner remains authoritative"
  ],
  "LAB_HOOKS": [
    "human study: target-fit value versus perceived scale differentiation",
    "study repair acceptance for near-equal pairwise mismatches",
    "study class-distribution target usefulness by style",
    "study ladder-span and adjacent-step target usefulness",
    "study occupancy-target usefulness without assuming evenness",
    "compare human ranking under same versus different target profiles",
    "collect false positives where local scale fit is high but global layout is poor",
    "collect false negatives where local scale fit is low but global layout succeeds",
    "measure repair-route acceptance and human reason codes"
  ],
  "observation_record": {
    "moduleRef": "Compo16.04",
    "componentMetricKeys": [
      "scale.target.componentFit.pairwiseRatio",
      "scale.target.componentFit.classAssignment",
      "scale.target.componentFit.classDistribution",
      "scale.target.componentFit.ladderStructure",
      "scale.target.componentFit.levelOccupancy"
    ],
    "independentVoteCount": 1,
    "independentMetricKey": "scale.system.localTargetProfileFit",
    "scoringGroup": "scale-local",
    "futureGlobalIntegrationRef": null
  },
  "topic16_local_completion_rule": "16.04 completes the planned 5/5 Topic16 canonical module files locally. Closing audit is a separate next step.",
  "stop_condition": "STOP after 16.04. Do not perform Topic16 closing audit in this module."
}
VISITS / ...