COMPO · 7.06 · VIOLATIONS / REPAIR / SCORING / TESTS

Violations,
repair,
scoring & tests.

Closing functional layer Topic 7: owner-qualified violations from 7.01–7.05 evidence, hard-filter KEEP/REJECT separate from numeric quality, mutation-free repair requests, explicit SHORT_N clearance targets and one composite edge.system.localEdgeFit vote. Missing evidence stays N/A; hard breaches never masquerade as weighted aesthetic penalties.

ModuleCompo 7.06
Scopeviolations / repair / scoring
Hardfilter ≠ score
Scoringexplicit soft targets
Topic7 · EDGE ZONES
Nextclosing audit

Topic 7 сводится без universal score

00 / module api

7.06 превращает уже вычисленные evidence 7.01–7.05 в violations, repair requests, hard-filter state и — только при explicit soft targets — локальный composite score.

HARD

Reject / keep, не numeric penalty.

SOFT

Only explicit clearance target can score.

REPAIR

Request only; mutation=false.

HARD FILTER ≠ SCORE. Candidate с hard-safe breach не получает «0.2 красоты» — он получает `REJECT`. Числовой score отвечает на другой вопрос.

Violation — owner-qualified constraint evidence

01 / EdgeViolation

Violation сохраняет исходный policy/result ref и не пытается переписать источник.

EdgeViolation {
  violationRef,
  owner: "Compo7.06",

  family:
    HARD_SAFE |
    BLEED_INTENT |
    EDGE_CLEARANCE_TARGET |
    POLICY_CONFIG |
    DATA_QUALITY,

  constraintKind:
    HARD |
    SOFT |
    CONFIG |
    DATA,

  sourceModule,
  sourceRef,
  contentRef?,
  edge?,
  targetRef?,

  observed,
  expected,
  confidence,
  derivedFrom[],
  provenance: DERIVED
}

7.01 / 7.02 / HARD target

02 / hard filter

Hard constraint evidence влияет на admissibility, а не на weighted mean.

if any valid HARD violation: hardFilterDecision = REJECT else if blocking config invalid: hardFilterDecision = INVALID else if hard evidence unresolved: hardFilterDecision = N_A else: hardFilterDecision = KEEP
NO THRESHOLD ON SCORE. `edge.system.localEdgeFit < 0.5` никогда автоматически не означает REJECT.

Target только explicit

03 / EdgeClearanceTargetSpec

7.03 измеряет clearance; 7.06 интерпретирует его лишь при наличии target.

EdgeClearanceTargetSpec {
  targetRef,
  queryRef,

  observedSelector:
    MINIMUM_SIGNED_SHORT_N |
    EDGE_SIGNED_SHORT_N,

  edge?,

  constraintKind:
    HARD |
    SOFT,

  minShortN?,
  maxShortN?,

  softToleranceShortN?,

  missingEvidencePolicy:
    N_A |
    INVALID,

  confidence,
  provenance
}
NO TARGET FROM TENSION CLASS. `TIGHT` не превращается автоматически в min/max clearance. И наоборот.

Interval, а не «чем больше — тем лучше»

04 / target fit

Один target задаёт допустимый диапазон и — для soft — explicit tolerance за его пределами.

distance(x, [min,max]) = 0, if x inside bounds min - x, if x < min x - max, if x > max HARD: distance = 0 → SATISFIED distance > 0 → BREACHED SOFT: fit = 1 - clamp( distance / tolerance, 0, 1 )

Required и optional target refs

05 / EdgeScoringProfile

Scoring profile обязан явно перечислить, какие soft targets формируют composite.

EdgeScoringProfile {
  profileRef,

  requiredTargetRefs[],
  optionalTargetRefs[],

  weights: {
    targetRef: positiveNumber
  },

  aggregate:
    WEIGHTED_MEAN,

  missingRequiredPolicy:
    N_A |
    INVALID,

  confidence,
  provenance
}
NO SILENT WEIGHTS. Weight для undeclared target, HARD target или пропущенного duplicate target делает profile `INVALID`.

Один numeric vote Topic 7

06 / composite-first scoring

Soft target components существуют только как части одного composite.

localEdgeFit = sum( weight_i * componentFit_i ) / sum( weight_i ) where: i = applicable declared SOFT targets only Required target missing: N_A | INVALID Optional target missing: excluded from denominator
ONE VOTE. Только `edge.system.localEdgeFit` имеет `independentVoteAllowed:true`. Component fits, raw clearance, normalized clearance, absolute distance и tension class отдельно не голосуют.

Shared geometry ≠ duplicate score

07 / double-count firewall

Topic7 сознательно использует одну и ту же geometry lineage для разных hard/soft вопросов, но не голосует ею несколько раз.

7.01 + 7.03

Safe containment может быть hard filter, а clearance — soft target. Hard result не является numeric vote.

7.02 + 7.03

Trim crossing и signed clearance могут иметь общие extrema. Bleed breach не входит в weighted score.

7.03 variants

Raw / ShortN / absolute / tension — одна evidence family. Один target выбирает одну observed value.

Repair — это запрос, не изменение

08 / EdgeRepairRequest

7.06 может сказать, что нужно исправить, но не имеет права выполнить чужую мутацию.

EdgeRepairRequest {
  repairRef,
  sourceViolationRef,

  requestKind:
    REQUEST_KEEP_INSIDE_SAFE |
    REQUEST_EDGE_EXIT_ADAPTATION |
    REQUEST_CLEARANCE_ADAPTATION |
    REQUEST_POLICY_CORRECTION |
    REQUEST_EVIDENCE_RESOLUTION,

  targetOwner,
  contentRef?,
  edge?,
  targetRef?,
  requiredDeltaShortN?,
  alternatives?,

  mutationAllowed: false,
  provenance: DERIVED
}

Что именно можно запросить

09 / repair mapping

Запрос сохраняет semantic family и не подменяет собой layout algorithm.

Violation familyRepair requestExecutor
HARD_SAFEkeep content inside safe referencelayout owner
BLEED_INTENTadapt edge exit / depth / prohibitionlayout/export owner
EDGE_CLEARANCE_TARGETincrease/decrease clearance by required deltalayout owner
POLICY_CONFIGcorrect ambiguous/unsatisfiable policypolicy owner
DATA_QUALITYresolve missing state/geometrygeometry/integration owner

Missing evidence не становится нулём

10 / partial & N/A

Topic7 должен уметь оставаться неполным, не выдавая выдуманную уверенность.

7.05 PARTIAL

Data-quality diagnostic. Не design violation сам по себе.

Required target missing

`localEdgeFit = N_A` или evaluation `INVALID` согласно profile.

Optional target missing

Явно исключается из denominator. Вес не перераспределяется скрыто — denominator просто состоит из applicable declared optional/required targets.

Финальный локальный contract

11 / Topic7Evaluation

Один объект хранит hard state, soft score, violations и repair requests раздельно.

Topic7Evaluation {
  evaluationRef,

  status:
    OK |
    PARTIAL |
    N_A |
    INVALID,

  hardFilterDecision:
    KEEP |
    REJECT |
    N_A |
    INVALID,

  violations[],
  repairRequests[],
  targetEvaluations[],
  metricResults[],

  localEdgeFit:
    MetricResult,

  diagnostics[],
  confidence,
  provenance
}

7.06 закрывает Topic 7, но не глобальную композицию

12 / ownership checkpoint

После этого edge subsystem готов отдавать hard/local evidence в общий engine.

TOPIC 7 LOCAL PIPELINE 7.00 zone geometry ↓ 7.01 hard safe 7.02 bleed intent 7.03 clearance 7.04 role routing 7.05 dynamic platform safe ↓ 7.06 violations hard-filter decision repair requests explicit-target localEdgeFit ↓ GLOBAL / LAYOUT OWNERS LATER

Visual Lab

13 / visual lab

Hard failure и soft score показаны как разные каналы решения.

A · HARD SAFE BREACH hardFilter = REJECT NOT "score -= penalty" B · SOFT CLEARANCE TARGET explicit interval + tolerance component fit → localEdgeFit C · MISSING PLATFORM STATE DATA_QUALITY / PARTIAL never silently zero-filled hard filter and local score are separate outputs raw / ShortN / absolute / tension do not cast separate votes repair requests preserve lineage and mutationAllowed=false no target profile → localEdgeFit = N/A 7.06 closes local edge subsystem only — not global balance/hierarchy/eye-flow

Topic 7 consolidated regression

14 / deterministic tests

Проверяем hard-filter, target evaluation, weighted composite, required/optional N/A, configuration diagnostics, repairs, de-duplication, lineage и отсутствие double counting.

Tests not run yet.

DATA FOR LAYOUT ENGINE

15 / machine contract

Machine-readable 7.06 contract.

{
  "module": "Compo 7.06",
  "name": "violations_repair_scoring_and_tests",
  "version": "1.1-final",
  "canonical_main_title": "Violations, repair, scoring и tests",
  "topic": "07_ПОЛЯ_SAFE_ZONES_И_BLEED",
  "scope": "TOPIC7_VIOLATION_AGGREGATION_HARD_FILTER_MUTATION_FREE_REPAIR_EXPLICIT_TARGET_SCORING_AND_REGRESSION",
  "consumes": [
    "Compo7.01.HardSafeConstraintResult[]",
    "Compo7.02.BleedIntentResult[]",
    "Compo7.03.EdgeClearanceDescriptor[]",
    "Compo7.04.RolePolicyResolutionSet? / diagnostics",
    "Compo7.05.DynamicSafeZoneSnapshot? / change diagnostics",
    "explicit EdgeClearanceTargetSpec[]",
    "explicit EdgeScoringProfile?"
  ],
  "provides": [
    "EdgeViolation",
    "EdgeViolationSet",
    "EdgeRepairRequest",
    "EdgeRepairRequestSet",
    "EdgeClearanceTargetSpec",
    "EdgeTargetEvaluation",
    "MetricResult[edge.target.componentFit.*]",
    "MetricResult[edge.system.localEdgeFit]",
    "Topic7HardFilterDecision",
    "Topic7Evaluation",
    "Topic7RegressionManifest"
  ],
  "owns_metrics": [
    "edge.system.localEdgeFit"
  ],
  "component_metrics": [
    "edge.target.componentFit.<targetRef>"
  ],
  "violation_schema": {
    "violationRef": "stable identity derived from family + source/constraint/target identity",
    "owner": "Compo7.06",
    "family": "HARD_SAFE|BLEED_INTENT|EDGE_CLEARANCE_TARGET|POLICY_CONFIG|DATA_QUALITY",
    "constraintKind": "HARD|SOFT|CONFIG|DATA",
    "sourceModule": "Compo7.01|Compo7.02|Compo7.03|Compo7.04|Compo7.05",
    "sourceRef": "owner-qualified evidence/result ref",
    "contentRef": "optional",
    "edge": "optional TOP|RIGHT|BOTTOM|LEFT|MINIMUM",
    "targetRef": "optional",
    "status": "OPEN|RESOLVED_BY_EVIDENCE|N_A|INVALID",
    "observed": "structured evidence",
    "expected": "explicit policy/target evidence",
    "confidence": "0..1",
    "derivedFrom": "owner-qualified evidence refs",
    "provenance": "DERIVED",
    "important": "severity is not guessed from aesthetics; hard/config/data/soft kind comes from explicit source semantics"
  },
  "repair_request_schema": {
    "repairRef": "stable ref",
    "sourceViolationRef": "EdgeViolation ref",
    "requestKind": "REQUEST_KEEP_INSIDE_SAFE|REQUEST_EDGE_EXIT_ADAPTATION|REQUEST_CLEARANCE_ADAPTATION|REQUEST_POLICY_CORRECTION|REQUEST_EVIDENCE_RESOLUTION",
    "targetOwner": "layout_owner|policy_owner|geometry_owner|integration_owner",
    "contentRef": "optional",
    "edge": "optional",
    "requiredDeltaShortN": "optional signed/absolute requested delta for clearance target",
    "targetRef": "optional",
    "alternatives": "optional explicit alternative action families",
    "mutationAllowed": false,
    "provenance": "DERIVED",
    "important": "request is advisory/routable; 7.06 does not execute mutation"
  },
  "edge_clearance_target_schema": {
    "targetRef": "stable unique ref",
    "queryRef": "must identify a 7.03 clearance result",
    "observedSelector": "MINIMUM_SIGNED_SHORT_N|EDGE_SIGNED_SHORT_N",
    "edge": "required for EDGE_SIGNED_SHORT_N",
    "constraintKind": "HARD|SOFT",
    "minShortN": "finite or null",
    "maxShortN": "finite or null; at least one bound required; max>=min when both exist",
    "softToleranceShortN": "required finite >0 only for SOFT",
    "missingEvidencePolicy": "N_A|INVALID",
    "confidence": "0..1",
    "provenance": "STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET",
    "no_hidden_target": "7.06 does not infer a preferred clearance from tension class or role name"
  },
  "target_fit_semantics": {
    "inside_interval": "distance=0",
    "below_min": "distance=minShortN-observed",
    "above_max": "distance=observed-maxShortN",
    "HARD": "SATISFIED if distance=0 else BREACHED; no numeric vote",
    "SOFT": "componentFit = 1 - clamp(distance/softToleranceShortN,0,1)",
    "SOFT_inside_interval": "componentFit=1",
    "important": "larger clearance is not inherently better; the interval defines the explicit target"
  },
  "edge_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; keys must exactly cover declared required+optional target refs",
    "aggregate": "WEIGHTED_MEAN",
    "missingRequiredPolicy": "N_A|INVALID",
    "confidence": "0..1",
    "provenance": "STYLE_PRESET|EMPIRICAL|STANDARD|INITIAL_HEURISTIC",
    "no_profile": "edge.system.localEdgeFit = N_A"
  },
  "metric_result_policy": {
    "component": {
      "key": "edge.target.componentFit.<targetRef>",
      "owner": "Compo7.06",
      "value": "0..1",
      "componentOf": "edge.system.localEdgeFit",
      "scoringGroup": "edge-system-local",
      "independentVoteAllowed": false
    },
    "composite": {
      "key": "edge.system.localEdgeFit",
      "owner": "Compo7.06",
      "value": "0..1 or N_A",
      "composite": true,
      "componentOf": null,
      "scoringGroup": "edge-system-local",
      "independentVoteAllowed": true
    },
    "hard_constraints": "never encoded as component score",
    "raw_7_03_metrics": "do not cast independent votes in 7.06",
    "tension_class": "descriptor only",
    "no_scoring_profile": "localEdgeFit is N_A by applicability, but this alone does not make Topic7Evaluation PARTIAL"
  },
  "hard_filter_semantics": {
    "REJECT": "at least one valid HARD violation from 7.01/7.02/HARD clearance target",
    "KEEP": "no hard violation and no blocking invalid configuration",
    "N_A": "one or more supplied hard constraints/targets are unresolved (N_A/PARTIAL) and no already-proven hard breach/config invalidity determines the decision",
    "INVALID": "policy/configuration inputs are internally invalid or ambiguous",
    "separate_from_score": "KEEP/REJECT is not derived by thresholding edge.system.localEdgeFit",
    "precedence": "INVALID configuration > proven REJECT > unresolved hard evidence N_A > KEEP"
  },
  "source_mapping": {
    "7.01_BREACHED": "HARD_SAFE / HARD violation",
    "7.02_BREACHED": "BLEED_INTENT / HARD violation",
    "7.02_POLICY_ZONE_UNSATISFIABLE": "POLICY_CONFIG / CONFIG violation",
    "7.04_INVALID_AMBIGUOUS": "POLICY_CONFIG / CONFIG violation",
    "7.05_PARTIAL": "DATA_QUALITY diagnostic unless downstream explicit target requires resolved geometry",
    "7.05_INVALID": "POLICY_CONFIG or DATA_QUALITY invalid input depending source error",
    "7.03_HARD_TARGET_BREACH": "EDGE_CLEARANCE_TARGET / HARD violation",
    "7.03_SOFT_TARGET_DEVIATION": "EDGE_CLEARANCE_TARGET / SOFT violation plus one component fit"
  },
  "double_count_policy": {
    "7.01_vs_7.03": "safe containment hard-filter evidence and a separate soft clearance target may coexist; the hard result is not a numeric vote, so it cannot numerically double-count the clearance score",
    "7.02_vs_7.03": "bleed compliance may share trim extrema with signed clearance; bleed hard result does not enter numeric soft score",
    "raw_vs_normalized_vs_absolute": "never separate component votes",
    "tension_vs_clearance": "tension class never votes separately",
    "same_target_duplicate": "INVALID profile/input",
    "exact_duplicate_violation": "de-duplicate by violationRef while preserving derivedFrom lineage"
  },
  "repair_policy": {
    "HARD_SAFE": "REQUEST_KEEP_INSIDE_SAFE; alternatives may include translate/resize/reflow but owning layout system decides",
    "BLEED_INTENT": "REQUEST_EDGE_EXIT_ADAPTATION for require/prohibit/depth mismatch; exact operation remains layout/export owner",
    "EDGE_CLEARANCE_TARGET": "REQUEST_CLEARANCE_ADAPTATION with direction hint INCREASE|DECREASE and minimum delta ShortN",
    "POLICY_CONFIG": "REQUEST_POLICY_CORRECTION",
    "DATA_QUALITY": "REQUEST_EVIDENCE_RESOLUTION",
    "foreign_mutation": "FORBIDDEN"
  },
  "topic7_evaluation_schema": {
    "evaluationRef": "stable ref",
    "status": "OK|PARTIAL|N_A|INVALID",
    "hardFilterDecision": "KEEP|REJECT|N_A|INVALID",
    "violations": "EdgeViolation[]",
    "repairRequests": "EdgeRepairRequest[]",
    "targetEvaluations": "EdgeTargetEvaluation[]",
    "metricResults": "component MetricResults + localEdgeFit",
    "localEdgeFit": "MetricResult",
    "diagnostics": "non-scoring config/data diagnostics",
    "confidence": "aggregate evidence confidence",
    "provenance": "DERIVED",
    "status_semantics": {
      "OK": "all supplied requested evidence is resolved enough for its declared purpose; localEdgeFit may still be N_A when no scoring profile was requested",
      "PARTIAL": "supplied requested evidence is unresolved (e.g. hard evidence N_A, required target evidence N_A, or dynamic platform snapshot PARTIAL)",
      "N_A": "reserved for evaluation-level non-applicability when integration owner explicitly declares Topic7 not applicable",
      "INVALID": "configuration/schema ambiguity or invalid required evidence"
    }
  },
  "ownership_map": {
    "7.00": "neutral edge-zone geometry",
    "7.01": "hard safe containment evidence",
    "7.02": "bleed/edge-exit compliance evidence",
    "7.03": "continuous clearance/tension evidence",
    "7.04": "role-policy resolution/routing",
    "7.05": "platform overlay lifecycle/dynamic safe geometry",
    "7.06": "violations, repair requests, hard-filter decision, explicit-target local scoring and Topic7 regression"
  },
  "metric_policy": {
    "hard_filter": "not a score",
    "local_edge_fit": "one explicit-target composite score only",
    "direct_global_score": "FORBIDDEN",
    "more_clearance_is_better": "FORBIDDEN",
    "more_safe_area_is_better": "FORBIDDEN",
    "fewer_violations_is_beautiful": "FORBIDDEN as universal aesthetic metric",
    "beautyScore": "FORBIDDEN"
  },
  "hard_constraints": [
    "7.06 owns Topic7 violation objects, mutation-free repair requests, hard-filter decision, explicit-target local scoring and consolidated Topic7 regression only.",
    "Hard-safe BREACHED evidence from 7.01 and hard bleed BREACHED evidence from 7.02 produce hard violations and candidate rejection; they do not become numeric aesthetic penalties.",
    "7.04 policy-resolution INVALID/AMBIGUOUS states are configuration errors, not design-quality scores.",
    "7.05 PARTIAL/INVALID dynamic safe geometry is data/configuration state; it is not silently converted into a content violation or zero score.",
    "A 7.03 clearance value contributes to scoring only through an explicit EdgeClearanceTargetSpec.",
    "No explicit clearance target means no clearance score.",
    "Only SHORT_N target scoring is canonical in 7.06 baseline so cross-format comparisons remain scale-normalized through Compo6.03.",
    "A HARD clearance target is evaluated as a hard constraint and does not also contribute a numeric soft vote.",
    "A SOFT clearance target may produce one component fit score in [0,1] using its explicit tolerance; the observed raw/normalized/absolute metrics do not vote independently.",
    "Tension class is descriptive evidence and never an independent scoring component beside the clearance value from which it was derived.",
    "Required scoring-target evidence missing => localEdgeFit N_A or INVALID according explicit scoring profile; missing evidence is never zero-filled.",
    "Optional scoring-target evidence may be excluded from the weighted denominator only when it is explicitly declared optional.",
    "Weights for undeclared or HARD targets are INVALID.",
    "Every soft target may appear at most once in the scoring profile; duplicate target refs are INVALID.",
    "The local composite uses one scoringGroup: edge-system-local, and only edge.system.localEdgeFit may cast the independent Topic7 numeric vote.",
    "Hard-filter state and numeric soft score are separate outputs and must not be merged into one universal quality number.",
    "Violation de-duplication may collapse exact duplicate evidence for the same constraint identity, but different explicit constraints sharing geometry lineage remain separately traceable.",
    "Repair output is always a request with mutationAllowed=false; 7.06 never moves/resizes/crops content itself.",
    "Repair requests preserve source violation/evidence/target lineage and route to the owning layout/policy/geometry integration layer.",
    "No repair is generated for N_A evidence unless the request is to resolve missing data/configuration.",
    "No global balance/hierarchy/eye-flow/beauty scoring is owned here.",
    "N/A != 0.",
    "No beautyScore."
  ],
  "hard_rules": [
    "7.06 owns Topic7 violation objects, mutation-free repair requests, hard-filter decision, explicit-target local scoring and consolidated Topic7 regression only.",
    "Hard-safe BREACHED evidence from 7.01 and hard bleed BREACHED evidence from 7.02 produce hard violations and candidate rejection; they do not become numeric aesthetic penalties.",
    "7.04 policy-resolution INVALID/AMBIGUOUS states are configuration errors, not design-quality scores.",
    "7.05 PARTIAL/INVALID dynamic safe geometry is data/configuration state; it is not silently converted into a content violation or zero score.",
    "A 7.03 clearance value contributes to scoring only through an explicit EdgeClearanceTargetSpec.",
    "No explicit clearance target means no clearance score.",
    "Only SHORT_N target scoring is canonical in 7.06 baseline so cross-format comparisons remain scale-normalized through Compo6.03.",
    "A HARD clearance target is evaluated as a hard constraint and does not also contribute a numeric soft vote.",
    "A SOFT clearance target may produce one component fit score in [0,1] using its explicit tolerance; the observed raw/normalized/absolute metrics do not vote independently.",
    "Tension class is descriptive evidence and never an independent scoring component beside the clearance value from which it was derived.",
    "Required scoring-target evidence missing => localEdgeFit N_A or INVALID according explicit scoring profile; missing evidence is never zero-filled.",
    "Optional scoring-target evidence may be excluded from the weighted denominator only when it is explicitly declared optional.",
    "Weights for undeclared or HARD targets are INVALID.",
    "Every soft target may appear at most once in the scoring profile; duplicate target refs are INVALID.",
    "The local composite uses one scoringGroup: edge-system-local, and only edge.system.localEdgeFit may cast the independent Topic7 numeric vote.",
    "Hard-filter state and numeric soft score are separate outputs and must not be merged into one universal quality number.",
    "Violation de-duplication may collapse exact duplicate evidence for the same constraint identity, but different explicit constraints sharing geometry lineage remain separately traceable.",
    "Repair output is always a request with mutationAllowed=false; 7.06 never moves/resizes/crops content itself.",
    "Repair requests preserve source violation/evidence/target lineage and route to the owning layout/policy/geometry integration layer.",
    "No repair is generated for N_A evidence unless the request is to resolve missing data/configuration.",
    "No global balance/hierarchy/eye-flow/beauty scoring is owned here.",
    "N/A != 0.",
    "No beautyScore."
  ],
  "soft_constraints": [],
  "preferences": [],
  "overrides_allowed_by": [
    "a newer explicit EdgeClearanceTargetSpec/EdgeScoringProfile may supersede older future evaluations",
    "hard violation evidence remains tied to its original source policy/result ref and is not retroactively reinterpreted"
  ],
  "initial_heuristics": {
    "numeric_epsilon": {
      "value": 1e-12,
      "provenance": "IMPLEMENTATION_HEURISTIC"
    }
  },
  "style_preset_values": [],
  "candidate_generation": {
    "layout_candidates": "NONE",
    "repair_requests": "YES, mutation-free requests only",
    "reason": "candidate geometry is generated by downstream layout owners, not 7.06"
  },
  "correction_policy": {
    "foreign_content_mutation": "FORBIDDEN",
    "hard_safe_breach": "route mutation-free repair request to layout owner",
    "bleed_breach": "route mutation-free edge-exit adaptation request",
    "clearance_target_deviation": "route mutation-free clearance adaptation request",
    "policy_ambiguity": "route to policy owner",
    "missing_geometry/state": "route to geometry/integration owner",
    "global_composition_issue": "defer to future global owners"
  },
  "deferred_inputs": [
    "future global composition scoring owners",
    "future layout solver/candidate generator executing repair requests",
    "future semantic conflict resolver beyond Topic7 local policy"
  ],
  "recompute_when": [
    "any consumed 7.01–7.05 result/version changes",
    "target specs change",
    "scoring profile changes",
    "hard-filter source policy changes",
    "repair-source evidence changes"
  ],
  "tests": [
    "7.01 hard violation",
    "7.02 hard violation",
    "7.04 config ambiguity",
    "7.05 partial diagnostic",
    "hard clearance target",
    "soft interval fit",
    "no target N_A",
    "required/optional missing target behavior",
    "weights validation",
    "composite-only numeric vote",
    "hard filter separate from score",
    "exact violation dedupe",
    "repair request mutation=false",
    "shared-lineage no double counting",
    "deterministic integration"
  ],
  "finality": "TOPIC7_LOCAL_VIOLATION_REPAIR_HARD_FILTER_AND_EXPLICIT_TARGET_SCORING_OWNER",
  "descriptors_only": [
    "edge.violation.family",
    "edge.violation.constraintKind",
    "edge.violation.status",
    "edge.repair.requestKind",
    "edge.repair.targetOwner",
    "edge.repair.mutationAllowed",
    "edge.target.status",
    "edge.target.distanceShortN",
    "edge.hardFilterDecision",
    "edge.topic7.status",
    "edge.topic7.diagnostic"
  ]
}
ARCHITECTURE CHECKPOINT · 7.06 OWNS TOPIC7 VIOLATIONS, MUTATION-FREE REPAIR REQUESTS, HARD-FILTER DECISION, EXPLICIT-TARGET LOCAL SCORING AND CONSOLIDATED REGRESSION. 7.01/7.02 HARD BREACHES REJECT CANDIDATES BUT DO NOT CAST NUMERIC PENALTIES. ONLY EXPLICIT SOFT SHORT_N CLEARANCE TARGETS FORM COMPONENT FITS; RAW/NORMALIZED/ABSOLUTE CLEARANCE AND TENSION DO NOT VOTE SEPARATELY. ONLY edge.system.localEdgeFit MAY CAST THE INDEPENDENT TOPIC7 NUMERIC VOTE. REQUIRED MISSING EVIDENCE IS N_A/INVALID, NEVER ZERO. REPAIR REQUESTS HAVE mutationAllowed=false. GLOBAL BALANCE/HIERARCHY/EYE-FLOW REMAIN OUTSIDE TOPIC7. NO BEAUTYSCORE.
VISITS / ...