Safe shell становится hard constraint
7.01 не создаёт safe-zone geometry заново: он получает её из 7.00 и связывает с explicit protected content.
7.00 SAFE_ZONE_SHELL.
Explicit owner-qualified protected bindings.
SATISFIED / BREACHED / N_A / INVALID.
Как трактовать boundary
Hard policy говорит только о containment semantics уже выбранного protected content.
HardSafePolicy {
policyRef,
zoneRef,
boundaryRule:
ALLOW_TOUCH |
STRICT_INTERIOR,
geometryMode:
FULL_SUPPORT |
BOUNDING_BOX |
ANCHOR_SET |
CUSTOM_REGION,
missingGeometryPolicy:
N_A |
INVALID,
confidence,
provenance
}
ProtectedSemanticContentBinding
Binding связывает внешний semantic decision с конкретной geometry representation.
ProtectedSemanticContentBinding {
bindingRef,
contentRef,
semanticRoleRef?,
protectionSourceRef,
protectionMode:
FULL_SUPPORT |
BOUNDING_BOX |
ANCHOR_SET |
CUSTOM_REGION,
geometryRef?,
anchorRefs[]?,
customRegionRef?,
confidence,
provenance
}
Containment relation
Результат сначала описывает геометрическую связь, затем policy переводит её в hard constraint state.
| supportRelation | Meaning |
|---|---|
INSIDE | вся проверенная geometry строго внутри zone |
INSIDE_OR_TOUCHING | внутри, но есть boundary contact |
PARTIAL_OUTSIDE | часть geometry вышла за safe boundary |
FULLY_OUTSIDE | вся проверенная geometry снаружи |
N_A | geometry не разрешена/отсутствует |
Touch может быть допустим или запрещён
Boundary semantics нельзя заменять скрытым дополнительным margin.
ALLOW_TOUCH
Boundary contact допускается.
STRICT_INTERIOR
Любой touch даёт BREACHED.
Что именно защищаем
Разные modes дают разную силу утверждения и не должны маскироваться друг под друга.
FULL_SUPPORT
Проверяется реальная supplied support geometry.
BOUNDING_BOX
Консервативная approximation. Не равна exact shape containment.
ANCHOR_SET
Проверяются только объявленные protected anchors.
CUSTOM_REGION
Owner-qualified region adapter.
Rect safe zone + bbox
Для baseline implementation 7.01 умеет детерминированно проверять bounding boxes и point/anchor sets.
N/A != safe
Hard constraint нельзя автоматически считать выполненным, если protected geometry отсутствует.
Missing geometry
N_A или INVALID — согласно policy.
Empty safe region
Непустой protected content → BREACHED.
No protected bindings
Set может быть валидно пустым: просто нечего проверять. Это не score и не утверждение о качестве.
BREACHED ещё не Violation
7.01 отвечает только на вопрос «constraint выполнен?».
HardSafeConstraintResult {
constraintRef,
policyRef,
zoneRef,
contentRef,
protectionMode,
supportRelation,
containmentStatus:
SATISFIED |
BREACHED |
N_A |
INVALID,
boundaryContactStatus,
maxOutsideDistance,
confidence,
provenance
}
Outside distance — не edge clearance
Для debug можно посчитать, насколько geometry вышла за safe rect, но это не continuous object↔canvas edge metric 7.03.
HardSafeEvaluationSet
Набор результатов строится детерминированно и сохраняет явную связь binding↔zone↔policy.
HardSafeEvaluationSet {
evaluationSetRef,
canvasRef,
policyRef,
protectedContentSetRef,
results[],
status:
OK |
PARTIAL |
N_A |
INVALID,
confidence,
provenance
}
Не забираем 7.02–7.06
Hard-safe containment — только один слой Topic 7.
| Question | Owner |
|---|---|
| Где safe shell? | 7.00 |
| Должен ли explicit protected content быть внутри? | 7.01 |
| Можно ли intentional bleed/edge exit? | 7.02 |
| Каков continuous edge clearance/tension? | 7.03 |
| Какие роли требуют какой edge policy? | 7.04 |
| Какие UI overlays сейчас активны? | 7.05 |
| Какие violation/repair/score? | 7.06 |
Visual Lab
Одна и та же geometry даёт разный hard result только из-за explicit boundary policy.
Hard-safe regression
Проверяем boundary rules, missing geometry, bbox/anchors, empty safe zone, explicit bindings, deterministic sets и ownership barriers.
DATA FOR LAYOUT ENGINE
Machine-readable 7.01 contract.
{
"module": "Compo 7.01",
"name": "hard_safe_zones_and_protected_semantic_content",
"version": "1.1-final",
"canonical_main_title": "Hard safe zones и protected semantic content",
"topic": "07_ПОЛЯ_SAFE_ZONES_И_BLEED",
"scope": "HARD_SAFE_CONSTRAINT_BINDING_PROTECTED_CONTENT_REFERENCES_AND_CONTAINMENT_EVALUATION",
"consumes": [
"Compo7.00.SafeZoneShell / EdgeZoneGeometryResult with zoneKind=SAFE_ZONE_SHELL",
"owner-qualified ProtectedSemanticContentSet",
"content geometry/support adapters from owning modules",
"optional Compo6.03 CanvasNormalizationContext when protected geometry uses compatible normalized representation",
"optional role/platform policies only as explicit upstream binding sources"
],
"provides": [
"HardSafePolicy",
"ProtectedSemanticContentBinding",
"ProtectedSemanticContentSet",
"SafeContainmentEvidence",
"HardSafeConstraintResult",
"HardSafeEvaluationSet",
"HardSafeCorrectionRequest[]",
"hardSafePolicyRef for SafeZoneShell",
"protectedContentSetRef for downstream 7.06"
],
"owns_metrics": [],
"descriptors_only": [
"edge.safe.policyRef",
"edge.safe.protectedContentSetRef",
"edge.safe.constraintRef",
"edge.safe.zoneRef",
"edge.safe.contentRef",
"edge.safe.protectionMode",
"edge.safe.supportRelation",
"edge.safe.containmentStatus",
"edge.safe.boundaryContactStatus",
"edge.safe.maxOutsideDistance",
"edge.safe.status",
"edge.safe.confidence"
],
"hard_safe_policy_schema": {
"policyRef": "string",
"zoneRef": "must point to 7.00 SAFE_ZONE_SHELL",
"boundaryRule": "ALLOW_TOUCH|STRICT_INTERIOR",
"geometryMode": "FULL_SUPPORT|BOUNDING_BOX|ANCHOR_SET|CUSTOM_REGION",
"missingGeometryPolicy": "N_A|INVALID",
"confidence": "0..1",
"provenance": "STYLE_PRESET|STANDARD|EMPIRICAL|INITIAL_HEURISTIC|IMPLEMENTATION_HEURISTIC",
"important": "policy does not infer semantic importance; it only states how already-bound protected content must relate to the safe zone",
"sourceRef": "optional explicit source ref for custom/external policies; provenance class remains canonical"
},
"protected_content_binding_schema": {
"bindingRef": "stable ref",
"contentRef": "owner-qualified object/text/image/logo/etc ref",
"semanticRoleRef": "optional external role ref; 7.01 does not interpret role hierarchy",
"protectionSourceRef": "explicit upstream policy/owner ref explaining why this content is protected",
"protectionMode": "FULL_SUPPORT|BOUNDING_BOX|ANCHOR_SET|CUSTOM_REGION",
"geometryRef": "owner geometry/support ref appropriate to protectionMode",
"anchorRefs": "required for ANCHOR_SET",
"customRegionRef": "required for CUSTOM_REGION",
"confidence": "0..1",
"provenance": "object",
"no_implicit_semantics": "absence of explicit binding means not evaluated as protected by 7.01; it is not auto-classified from text/logo/title names",
"fullSupportRuntimeContract": "FULL_SUPPORT requires owner-supplied actual support extrema/adapter evidence; a generic bbox is not silently accepted as exact support"
},
"protected_content_set_schema": {
"setRef": "stable versioned ref",
"canvasRef": "same canvas as safe zone",
"bindings": "ProtectedSemanticContentBinding[]",
"status": "OK|PARTIAL|N_A|INVALID",
"duplicateContentBindingPolicy": "same contentRef may appear more than once only if protectionMode/geometry target differs explicitly; duplicate bindingRef is INVALID",
"confidence": "0..1",
"provenance": "object"
},
"containment_semantics": {
"ALLOW_TOUCH": "protected geometry may lie on safe-zone boundary; outside support is BREACHED",
"STRICT_INTERIOR": "protected geometry must be strictly inside safe-zone boundary; any boundary touch is BREACHED",
"FULL_SUPPORT": "all supplied actual-support extrema/geometry must satisfy policy; for a rectangular safe region exact owner-supplied extrema are sufficient for exact containment",
"BOUNDING_BOX": "owner-supplied bbox must satisfy policy; this is an explicit approximation and may be more conservative than actual shape support",
"ANCHOR_SET": "all declared protected anchors must satisfy policy",
"CUSTOM_REGION": "owner-qualified geometry adapter supplies region relation",
"empty_protected_geometry": "N_A/INVALID according missingGeometryPolicy; never treated as automatically safe",
"empty_safe_zone": "hard constraint cannot be satisfied by nonempty protected geometry; status BREACHED, but violation object creation remains 7.06"
},
"support_relation_schema": {
"INSIDE": "all tested geometry strictly inside zone boundary",
"INSIDE_OR_TOUCHING": "all tested geometry inside or on boundary, at least one boundary contact",
"PARTIAL_OUTSIDE": "some tested geometry outside",
"FULLY_OUTSIDE": "tested geometry entirely outside",
"N_A": "missing/unresolved geometry"
},
"rect_safe_evaluation": {
"zone": "7.00 INSET_KEEP_IN_REGION rectangular safe shell",
"point_allow_touch": "x>=x0 && x<=x1 && y>=y0 && y<=y1",
"point_strict": "x>x0 && x<x1 && y>y0 && y<y1",
"bbox_allow_touch": "bbox.x0>=zone.x0 && bbox.y0>=zone.y0 && bbox.x1<=zone.x1 && bbox.y1<=zone.y1",
"bbox_strict": "all bbox edges strictly inside zone edges",
"outside_distance": "max axis-aligned amount beyond safe rect; descriptor only, not 7.03 edge-clearance metric"
},
"ownership_map": {
"7.00": "safe-zone shell geometry",
"7.01": "hard safe constraint policy, explicit protected-content bindings and containment status",
"7.02": "bleed / intentional edge exit / crop permission",
"7.03": "continuous object-to-edge clearance and edge-tension metrics",
"7.04": "role-dependent generation/selection of protection bindings and edge policy",
"7.05": "platform overlay/dynamic safe-zone source geometry",
"7.06": "Violation objects, repair requests, target-aware scoring and consolidated Topic7 regression"
},
"semantic_firewalls": {
"protected_binding_vs_role_policy": "7.01 may carry semanticRoleRef but does not infer protection from role; 7.04 may author role-dependent bindings",
"breached_vs_violation": "BREACHED is constraint-state evidence; canonical Violation object belongs to 7.06",
"outside_distance_vs_edge_clearance": "outside-distance is only containment diagnostic relative to safe-zone boundary; continuous edge-clearance/tension remains 7.03",
"safe_zone_vs_platform_overlay": "7.05 may produce dynamic safe-zone geometry, but 7.01 only evaluates the resolved zone presented to it",
"hard_safe_vs_bleed": "protected content hard-safe containment does not grant or deny bleed permission for decorative/background elements"
},
"metric_policy": {
"constraint_status": "hard constraint state, not design-quality score",
"outside_distance": "diagnostic only",
"direct_scoring": "FORBIDDEN in 7.01",
"more_inside_is_better": "FORBIDDEN as universal score",
"more_margin_is_better": "FORBIDDEN",
"boundary_touch_is_bad": "only when explicit STRICT_INTERIOR policy says so"
},
"hard_constraints": [
"one metric = one owner",
"7.01 owns no design-quality MetricResult; it owns hard-safe applicability and containment state only",
"only a 7.00 SAFE_ZONE_SHELL may be bound as HardSafePolicy.zoneRef",
"protected semantic content must be explicit through owner-qualified bindings; 7.01 must not infer importance from content names, text roles or visual appearance",
"protectionMode must match supplied geometry representation",
"ALLOW_TOUCH and STRICT_INTERIOR boundary semantics must be explicit; no hidden epsilon margin may change policy meaning",
"missing protected geometry is N_A or INVALID according explicit policy; never automatically SATISFIED",
"empty safe-zone geometry cannot satisfy a nonempty protected geometry",
"BOUNDING_BOX mode must identify itself as approximation evidence and may not be silently treated as exact support containment",
"ANCHOR_SET checks only declared protected anchors and must not claim full-shape containment",
"BREACHED is not a canonical Violation object; 7.06 owns violation construction/aggregation",
"7.01 does not generate role-dependent protection rules; 7.04 owns role policy",
"7.01 does not own platform overlay geometry lifecycle; 7.05 owns dynamic platform sources",
"7.01 does not own continuous edge clearance/tension metrics; 7.03 owns them",
"7.01 does not grant bleed/edge-exit permission; 7.02 owns it",
"7.01 does not mutate content geometry to repair a breach",
"safe containment is not Topic5 free-space geometry",
"safe containment is not Topic8 grid occupancy",
"global balance/hierarchy/eye-flow remain future owners",
"N/A != 0",
"no beautyScore"
],
"initial_heuristics": {
"numeric_epsilon": {
"value": 1e-12,
"provenance": "IMPLEMENTATION_HEURISTIC",
"note": "used only for numerical comparisons in runtime reference implementation; policy boundary semantics remain explicit"
}
},
"correction_policy": {
"foreign_content_mutation": "FORBIDDEN",
"missing_safe_zone": "route to Compo7.00 / zone source owner",
"missing_protected_binding": "request upstream semantic/role owner; do not infer",
"role_based_protection_question": "route to Compo7.04",
"dynamic_platform_safe_geometry": "route to Compo7.05",
"bleed_permission_question": "route to Compo7.02",
"continuous_edge_clearance_question": "route to Compo7.03",
"breach_violation_or_repair": "route to Compo7.06"
},
"deferred_inputs": [
"Compo7.02 bleed/edge-exit permission",
"Compo7.03 edge clearance/tension metrics",
"Compo7.04 role-dependent binding generation",
"Compo7.05 dynamic platform safe zones",
"Compo7.06 violations/repair/scoring/tests",
"future semantic-role owners supplying ProtectedSemanticContentSet"
],
"recompute_when": [
"7.00 safe-zone geometry changes",
"HardSafePolicy changes",
"ProtectedSemanticContentSet membership/version changes",
"protected geometry/support/bbox/anchors change",
"upstream role/platform policy changes the explicit binding set",
"coordinate-space adapter changes"
],
"finality": "HARD_SAFE_CONSTRAINT_BINDING_AND_CONTAINMENT_ONLY",
"hard_rules": [
"one metric = one owner",
"7.01 owns no design-quality MetricResult; it owns hard-safe applicability and containment state only",
"only a 7.00 SAFE_ZONE_SHELL may be bound as HardSafePolicy.zoneRef",
"protected semantic content must be explicit through owner-qualified bindings; 7.01 must not infer importance from content names, text roles or visual appearance",
"protectionMode must match supplied geometry representation",
"ALLOW_TOUCH and STRICT_INTERIOR boundary semantics must be explicit; no hidden epsilon margin may change policy meaning",
"missing protected geometry is N_A or INVALID according explicit policy; never automatically SATISFIED",
"empty safe-zone geometry cannot satisfy a nonempty protected geometry",
"BOUNDING_BOX mode must identify itself as approximation evidence and may not be silently treated as exact support containment",
"ANCHOR_SET checks only declared protected anchors and must not claim full-shape containment",
"BREACHED is not a canonical Violation object; 7.06 owns violation construction/aggregation",
"7.01 does not generate role-dependent protection rules; 7.04 owns role policy",
"7.01 does not own platform overlay geometry lifecycle; 7.05 owns dynamic platform sources",
"7.01 does not own continuous edge clearance/tension metrics; 7.03 owns them",
"7.01 does not grant bleed/edge-exit permission; 7.02 owns it",
"7.01 does not mutate content geometry to repair a breach",
"safe containment is not Topic5 free-space geometry",
"safe containment is not Topic8 grid occupancy",
"global balance/hierarchy/eye-flow remain future owners",
"N/A != 0",
"no beautyScore"
],
"soft_constraints": [],
"preferences": [],
"overrides_allowed_by": [],
"style_preset_values": [],
"candidate_generation": {
"layout_candidates": "NONE",
"repair_candidates": "NONE",
"reason": "hard-safe evaluator only; repairs belong to 7.06"
}
}