COMPO · 4.01 · SILHOUETTE AREA / OCCUPANCY / DENSITY

Площадь,
occupancy и
density.

Intrinsic geometric mass evidence для resolved shape regions: площадь silhouette-support, object-internal convex-hull occupancy, alpha-based paint density и normalized alpha-area. Контекстный contrast/isolation/position/overlap намеренно не участвует — он принадлежит 4.02.

ModuleCompo 4.01
Scopeintrinsic geometry mass
Ownsarea / hull occupancy / alpha density
Contextdeferred 4.02
Topic4 · MASS
Next4.02

Area → occupancy → alpha coverage

00 / module api

4.01 впервые вводит числовую shape-mass evidence, но оставляет её intrinsic: никакого contrast, isolation, scene position или global balance.

SCOPE

Resolved silhouette-support area, convex-hull occupancy, intrinsic alpha density и alpha-weighted coverage mass.

CONSUMES

Resolved region topology 3.04, world geometry 3.05, canvas short side и intrinsic paint alpha.

FINALITY

INTRINSIC GEOMETRIC MASS EVIDENCE ONLY.

OCCUPANCY TERM IS SCOPED. В 4.01 canonical metric называется hullOccupancy. Это доля собственного convex hull, занятая silhouette-support. Это НЕ scene occupancy map темы 5 и НЕ grid occupancy темы 8.

Что именно измеряется

01 / resolved region

4.01 не решает fill-rule и hole identity заново. На вход приходит уже resolved paint-support region.

ResolvedCoverageRegionView

{
  regionRef,
  components: [{
    outerBoundaryRef,
    holeBoundaryRefs[]
  }],
  coverageUnionResolved: true,
  measurementDomain,
  exactness,
  confidence,
  provenance
}

Support semantics

support =
  union(
    enabled fill regions,
    derived outline bands,
    other intrinsic paint support
  )

holes removed by resolved topology

alpha is NOT applied yet
when computing geometric area.
NO NAIVE SUM. Если fill и outline пересекаются, fillArea + outlineArea двойно считает overlap. 4.01 требует resolved geometric union или возвращает unresolved.

Площадь silhouette-support

02 / silhouette area

Area — физический measure painted support до alpha weighting. Для polygonal resolved regions используется exact shoelace; curves могут дать exact integral или bounded fallback.

Simple polygon

A_signed = 1/2 Σᵢ ( xᵢ yᵢ₊₁ - xᵢ₊₁ yᵢ ) A = |A_signed|

Resolved component

A_component = |A_outer| - Σ |A_hole| A_silhouette = Σ A_component ONLY after union/topology is resolved.
silhouetteAreaShortN2 = silhouetteAreaPx2 / shortSidePx² Units: areaPx2 → px² areaShortN2 → normalized area / short-side² DO NOT CLAMP: full 16:9 canvas area / shortSide² ≈ 1.777...

Occupancy = заполненность собственного hull

03 / hull occupancy

Bounding box выбран не был: axis-aligned bbox меняет площадь при rotation. Convex hull даёт более устойчивый object-internal denominator.

Hull

H = convexHull( resolved silhouette support ) A_hull = area(H) hullOccupancy = A_silhouette / A_hull 0 ≤ occupancy ≤ 1 when valid.

Affine property

For invertible affine T: A(T(S)) = |det(T)| A(S) A(T(H)) = |det(T)| A(H) therefore: occupancy(T(S)) = occupancy(S)
ROTATION-SAFE. В отличие от axis-aligned bounding-box fill ratio, hullOccupancy не меняется только потому, что тот же объект повернули.

Density factor = intrinsic alpha coverage

04 / density factor

Density factor не измеряет темноту, контраст или важность. Это только средняя alpha contribution внутри geometric silhouette-support.

alphaAreaPx2 = ∫_silhouette α(p) dA paintDensityFactor = alphaAreaPx2 / silhouetteAreaPx2 if constant alpha α₀: densityFactor = α₀ if silhouetteArea = 0 or invalid: densityFactor = N/A if alpha evidence missing: densityFactor = N/A NOT 1.0
OPAQUE

α = 1

density = 1.

TRANSLUCENT

α = .4

density = .4.

TRANSPARENT

α = 0

valid density = 0, not N/A, if alpha is explicitly known.

Intrinsic coverage mass

05 / intrinsic evidence

4.01 не калибрует cross-object score. Он выдаёт raw normalized alpha-area evidence, которое 4.04 позже может привести к общей scale.

intrinsicCoverageMassShortN2 = alphaAreaPx2 / shortSidePx² equivalently: = silhouetteAreaShortN2 × paintDensityFactor IMPORTANT: DO NOT compute: area × occupancy × density because: occupancy already contains area (occupancy = area / hullArea) Multiplying all three would double-count silhouette area.
COMPOSITE-FIRST PRINCIPLE APPLIED TO GEOMETRY. `silhouetteArea`, `hullOccupancy` и `densityFactor` остаются interpretable descriptors. Canonical intrinsic mass evidence использует alpha-area напрямую; occupancy не добавляется второй раз как multiplier.

Что разрешено в density

06 / intrinsic paint only

Alpha относится к intrinsic paint. Контекстный contrast относится уже к 4.02.

Evidence4.01Owner
fill opacity / alphaYESintrinsic paint adapter
outline opacity / alphaYESintrinsic paint adapter
gradient alpha fieldYES, exact/fallback integrationpaint/render adapter
contrast against backgroundNO4.02 context
isolation / crowdingNO4.02 context
position / overlap salienceNO4.02 context
semantic importanceNOfuture semantic/hierarchy owner

Transform behavior

07 / invariance

Area и occupancy ведут себя по-разному — это нужно явно хранить, иначе rotation/scale начинают случайно менять mass semantics.

TransformAreaHull occupancyDensity
translationsamesamesame
rotationsamesamesame
reflectionsamesamesame
uniform scale s× s²samesame*
invertible affine T× |det T|samesame*
singularN/A / degenerateN/AN/A unless explicit rendered 2D support exists

* если intrinsic alpha field материально трансформируется вместе с объектом и rasterization effects не являются отдельным owner-input.

Full object vs visible clipped mass

08 / measurement domain

Объект может частично уходить за canvas/crop. 4.01 не владеет canvas/free-space, но умеет работать в явно заданном measurement domain.

OBJECT_FULL

Unclipped

Вся transformed support geometry.

VISIBLE_CLIPPED

Visible

Support ∩ supplied visibility/crop domain.

CUSTOM

Custom domain

Явно supplied region adapter.

COMPARE LIKE WITH LIKE. 4.03 не должен сравнивать OBJECT_FULL mass одного объекта с VISIBLE_CLIPPED mass другого без explicit normalization/intent.

Exact geometry и fallback

09 / exact and fallback

Mass evidence должна сообщать метод и confidence. Особенно это важно для curved paths, outline boolean-unions и gradient alpha.

ShapeGeometricMassResult {
  objectRef,
  measurementDomain,

  silhouetteAreaPx2,
  silhouetteAreaShortN2,
  convexHullAreaPx2,
  hullOccupancy,

  paintDensityFactor,
  alphaAreaPx2,
  alphaAreaShortN2,
  intrinsicCoverageMassShortN2,

  exactness:
    "EXACT|BOUNDED_APPROXIMATION",
  areaMethod,
  alphaMethod,
  approximationErrorBound?,
  confidence,
  status,
  provenance
}
confidence is evidence quality NOT mass magnitude NOT aesthetic confidence

Edge cases

10 / edge cases

Zero, N/A и invalid нельзя смешивать.

CaseResult
valid geometry, explicit alpha=0density=0; intrinsicCoverageMass=0 — valid zero
alpha missingdensity=N/A; intrinsic mass=N/A
silhouette area=0 because geometry degenerateN/A/INVALID, not valid zero mass
singular transformN/A unless renderer supplies explicit 2D painted support
hull area≈0hullOccupancy=N/A
fill/outline union unresolvedUNRESOLVED; do not sum overlapping areas
shortSidePx missing/≤0normalized area N/A
areaShortN2>1valid; do not clamp

Correction routing

11 / correction requests

4.01 измеряет. Исправления geometry/paint/transform делает owner.

Topology union

→ 3.04 / coverage adapter.

Transform

→ Core / 3.05.

Alpha evidence

→ intrinsic paint/style owner.

Contextual salience

→ 4.02.

GeometricMassCorrectionRequest {
  objectRef,
  targetOwner,
  requestedEffect,
  evidenceRefs[],
  reason,
  provenance
}

Visual Lab

12 / visual lab

Четыре объекта показывают различие area, hullOccupancy и density. Это descriptors, не ranking.

A · SOLID / OCCUPANCY 1 area = hull area · density = 1 B · CONCAVE / LOWER HULL OCCUPANCY same hull can contain less silhouette C · HOLE hole reduces area and hull occupancy D · SAME GEOMETRY / DIFFERENT ALPHA DENSITY density=1 → alpha area = geometric area density=.35 → alpha area=.35×area Canonical raw mass evidence: alphaAreaShortN2 NOT area × occupancy × density occupancy is a derived descriptor contrast comes later in 4.02

Reference mass tests

13 / deterministic tests

Проверяем area, holes, hull, affine invariance, alpha density, normalization и ownership boundaries.

Tests not run yet.

DATA FOR LAYOUT ENGINE

14 / machine contract

Machine-readable contract 4.01.

{
  "module": "Compo 4.01",
  "name": "silhouette_area_occupancy_and_density_factor",
  "version": "1.1-corrective",
  "scope": "INTRINSIC_GEOMETRIC_AND_ALPHA_COVERAGE_MASS_FOR_RESOLVED_SHAPE_REGIONS",
  "consumes": [
    "Compo4.00.VisualMassDescriptor / MassEvidenceRef staging contract",
    "Compo3.04 resolved fill/outline region topology or compatible ResolvedCoverageRegionView",
    "Compo3.05 transformed world geometry view",
    "CanvasNormalizationContext.shortSidePx",
    "IntrinsicPaintCoverageAdapter (alpha only; no contextual contrast)",
    "VisibilityDomainAdapter? for optional clipping/crop domain"
  ],
  "provides": [
    "ResolvedCoverageRegionView contract",
    "ShapeGeometricMassResult",
    "MassEvidenceRef[visualMass.geometry.intrinsicCoverageMassShortN2]",
    "visualMass.geometry.silhouetteAreaPx2",
    "visualMass.geometry.silhouetteAreaShortN2",
    "visualMass.geometry.convexHullAreaPx2",
    "visualMass.geometry.hullOccupancy",
    "visualMass.geometry.paintDensityFactor",
    "visualMass.geometry.alphaAreaPx2",
    "visualMass.geometry.alphaAreaShortN2",
    "visualMass.geometry.intrinsicCoverageMassShortN2",
    "GeometricMassCorrectionRequest[]",
    "MassCalibrationInputRef[shape.alphaAreaShortN2.raw]"
  ],
  "owns_metrics": [
    "visualMass.geometry.silhouetteAreaPx2",
    "visualMass.geometry.silhouetteAreaShortN2",
    "visualMass.geometry.convexHullAreaPx2",
    "visualMass.geometry.hullOccupancy",
    "visualMass.geometry.paintDensityFactor",
    "visualMass.geometry.alphaAreaPx2",
    "visualMass.geometry.alphaAreaShortN2",
    "visualMass.geometry.intrinsicCoverageMassShortN2",
    "visualMass.geometry.confidence"
  ],
  "descriptors_only": [
    "visualMass.geometry.measurementDomain",
    "visualMass.geometry.componentCount",
    "visualMass.geometry.holeCount",
    "visualMass.geometry.exactness",
    "visualMass.geometry.areaMethod",
    "visualMass.geometry.alphaMethod",
    "visualMass.geometry.approximationErrorBound",
    "visualMass.geometry.status"
  ],
  "resolved_region_contract": {
    "regionRef": "string",
    "components": [
      {
        "outerBoundaryRef": "resolved simple closed boundary",
        "holeBoundaryRefs": "resolved simple closed boundaries[]"
      }
    ],
    "coverageUnionResolved": "boolean; required true before summing multiple paint bands/components",
    "measurementDomain": "OBJECT_FULL|VISIBLE_CLIPPED|CUSTOM_DOMAIN",
    "exactness": "EXACT|BOUNDED_APPROXIMATION",
    "confidence": "0..1",
    "provenance": "object"
  },
  "measurement_semantics": {
    "silhouetteArea": "geometric measure of the resolved paint-support union before alpha weighting; fill + outline support, holes removed",
    "occupancy_canonical_name": "hullOccupancy",
    "hullOccupancy": "silhouetteArea / convexHullArea of the same resolved support; object-internal descriptor only",
    "paintDensityFactor": "alphaArea / silhouetteArea; intrinsic alpha coverage only, no contrast/luminance/context",
    "alphaArea": "integral of intrinsic alpha over silhouette support",
    "intrinsicCoverageMassShortN2": "alphaAreaPx2 / shortSidePx^2",
    "base_mass_role": "raw intrinsic mass evidence for later 4.04 calibration, not a beauty score",
    "sourceMassDomainRef": "shape.alphaAreaShortN2.raw",
    "sourceMassDomainNote": "raw source evidence for frozen 4.04 calibration; not automatically the canonical cross-object domain"
  },
  "normalization": {
    "shortSidePx": "must be supplied by CanvasNormalizationContext; 4.01 does not own canvas format",
    "areaShortN2": "areaPx2 / shortSidePx^2",
    "unit_note": "areaShortN2 is dimensionless relative to short-side squared but may exceed 1; never clamp"
  },
  "area_algorithms": {
    "polygon_simple": "absolute shoelace area",
    "resolved_component": "abs(outer area) - sum(abs(hole areas)) after 3.04 has resolved topology",
    "multiple_components": "sum only if coverageUnionResolved=true and components are non-overlapping in resolved union representation",
    "curves_exact": "use analytic area integration adapter when available",
    "curves_fallback": "bounded flattening with declared area error/confidence",
    "outline_overlap": "must be boolean-unioned upstream/adapter; naive fillArea+outlineArea is forbidden"
  },
  "convex_hull_policy": {
    "purpose": "denominator for object-internal occupancy only",
    "algorithm_polygonal": "deterministic monotonic-chain hull over support boundary samples/vertices",
    "curved_exact": "support-function/extrema adapter if available",
    "curved_fallback": "bounded contour approximation",
    "area_ratio_invariance": "for any invertible affine transform, silhouetteArea and hullArea scale by |det| so hullOccupancy is invariant"
  },
  "alpha_policy": {
    "allowed_intrinsic_inputs": [
      "constant fill alpha",
      "constant outline alpha",
      "resolved piecewise alpha regions",
      "analytic alpha coverage function",
      "deterministic bounded alpha sampler"
    ],
    "forbidden_context_inputs": [
      "contrast against background",
      "isolation",
      "scene position",
      "overlap salience",
      "semantic importance"
    ],
    "zero_alpha": "valid densityFactor=0 and intrinsicCoverageMass=0 when support geometry is valid",
    "missing_alpha": "N/A/partial evidence, never assume opaque unless explicit style/default contract says so"
  },
  "transform_invariance": {
    "translation": "silhouetteArea, hullArea, hullOccupancy, densityFactor preserved",
    "rotation": "silhouetteArea, hullArea, hullOccupancy, densityFactor preserved",
    "reflection": "silhouetteArea, hullArea, hullOccupancy, densityFactor preserved",
    "uniform_scale": "areas and intrinsicCoverageMass scale by s^2; hullOccupancy/densityFactor preserved",
    "general_invertible_affine": "areas scale by |det|; hullOccupancy preserved; alpha density preserved if paint alpha field transforms materially with the object",
    "singular_transform": "region area measurement is N/A/degenerate unless an explicit rendered-stroke coverage adapter supplies a valid 2D support"
  },
  "hard_constraints": [
    "resolved fill/hole/outline topology remains owned by Compo3.04",
    "world transform remains owned by Core/Compo3.05 adapter",
    "canvas short-side normalization context is consumed, not owned",
    "hullOccupancy is object-internal and must not be exposed as Topic5 scene occupancy or Topic8 grid occupancy",
    "scene occupied/free-space masks remain Topic5",
    "silhouetteArea and hullOccupancy are descriptors, not direct aesthetic scores",
    "paintDensityFactor uses alpha/paint coverage only; contrast/isolation/position/overlap are forbidden here and belong to Compo4.02",
    "do not multiply silhouetteArea by hullOccupancy again to create mass; occupancy is derived from the same area and would double count",
    "canonical intrinsic coverage mass is alphaAreaShortN2 = silhouetteAreaShortN2 * paintDensityFactor",
    "fill and outline overlapping support must be measured by geometric union; naive area addition is forbidden",
    "missing alpha evidence is N/A, not opacity=1",
    "singular transforms do not silently become zero mass",
    "areaShortN2 must not be clamped to [0,1]",
    "no target-aware quality score in 4.01",
    "no beautyScore",
    "zero-area resolved shape support is DEGENERATE/N_A, not automatically a valid zero mass",
    "hole area greater than outer area is INVALID and must not be silently clamped to zero",
    "intrinsicCoverageMassShortN2 must pass through the frozen 4.04 calibration profile before cross-object 4.02 comparison unless an explicit identity profile declares the same canonical domain"
  ],
  "initial_heuristics": {
    "area_epsilon_px2": {
      "value": 1e-08,
      "provenance": "IMPLEMENTATION_HEURISTIC"
    },
    "hull_collinearity_epsilon_px2": {
      "value": 1e-10,
      "provenance": "IMPLEMENTATION_HEURISTIC"
    },
    "curve_flatten_area_error_shortN2": {
      "value": 1e-06,
      "provenance": "INITIAL_HEURISTIC"
    },
    "alpha_sampling_max_samples": {
      "value": 4096,
      "provenance": "IMPLEMENTATION_HEURISTIC"
    },
    "alpha_sampling_target_abs_error": {
      "value": 0.005,
      "provenance": "IMPLEMENTATION_HEURISTIC"
    }
  },
  "correction_policy": {
    "foreign_topology_mutation": "FORBIDDEN",
    "unresolved_fill_outline_union": "request Compo3.04/coverage-adapter resolution",
    "missing_world_transform": "request Compo3.05/Core adapter",
    "missing_short_side": "request CanvasNormalizationContext owner",
    "missing_alpha": "request intrinsic paint/style owner evidence",
    "singular_transform": "request Core/Compo3.05 correction unless explicit rendered support adapter exists",
    "contextual_mass_issue": "route to Compo4.02",
    "relation_issue": "route to Compo4.03"
  },
  "deferred_inputs": [
    "Compo4.02 contextual weight",
    "Compo4.03 mass relations",
    "Compo4.04 calibration/target scoring/regression",
    "Topic5 occupied/free-space masks",
    "Topic8 grid occupancy",
    "global balance/hierarchy/eye-flow"
  ],
  "recompute_when": [
    "resolved support geometry changes",
    "fill/hole/outline topology changes",
    "ObjectTransform determinant/geometry changes",
    "intrinsic alpha/paint coverage changes",
    "measurement visibility domain changes",
    "shortSidePx normalization context changes",
    "area/alpha approximation policy changes"
  ],
  "finality": "INTRINSIC_GEOMETRIC_MASS_EVIDENCE_ONLY"
}
ARCHITECTURE CHECKPOINT · 4.01 OWNS RESOLVED SILHOUETTE-SUPPORT AREA, CONVEX-HULL OCCUPANCY, INTRINSIC ALPHA DENSITY AND ALPHA-AREA MASS EVIDENCE. 3.04 RETAINS FILL/HOLE/OUTLINE TOPOLOGY; 3.05/CORE RETAINS TRANSFORM; CANVAS NORMALIZATION IS CONSUMED. HULLOCCUPANCY IS OBJECT-INTERNAL AND IS NOT TOPIC5 SCENE OCCUPANCY OR TOPIC8 GRID OCCUPANCY. CONTRAST/ISOLATION/POSITION/OVERLAP → 4.02. RELATIONS → 4.03. CALIBRATION/SCORING → 4.04. NO BEAUTYSCORE.
VISITS / ...