COMPO · 4.02 · CONTEXTUAL VISUAL MASS

Контекстный
вес.

Cross-object contextualization visual mass через owner-qualified contrast, isolation, position и overlap evidence. 4.02 не измеряет эти явления заново: он переводит их signed effects в bounded multiplicative mass modifiers и защищает pipeline от повторного применения уже использованного upstream context.

ModuleCompo 4.02
Scopecontextual mass
Ownscross-object context modifiers
Raw contextexternal owners
Topic4 · MASS
Next4.03

Контекст меняет массу, не качество

00 / module api

4.02 получает base/intrinsic mass и owner-qualified contextual evidence, после чего выдаёт один cross-object contextual mass magnitude.

SCOPE

Contextualization через contrast / isolation / position / overlap.

INPUT

Mass magnitude + evidence stage + owner-qualified signed context effects.

FINALITY

CROSS-OBJECT CONTEXTUAL MASS ONLY.

MASS ≠ SCORE. Большая contextual mass означает более сильный визуальный вклад в текущем context, а не «лучше» или «правильнее».

ContextEvidenceRef

01 / input evidence

4.02 не вычисляет raw contrast или расстояния. Он требует уже нормализованный signed effect от authoritative owner/adapter.

ContextEvidenceRef

{
  evidenceRef,
  owner,
  channel:
    "CONTRAST" |
    "ISOLATION" |
    "POSITION" |
    "OVERLAP",

  effect: [-1,1],
  confidence: [0,1],
  derivedFrom[],
  status,
  provenance
}

Meaning of effect

-1  strong mass suppression
 0  neutral
+1  strong mass reinforcement

effect is NOT:
  beauty
  quality
  preference
  hierarchy rank
OWNER QUALIFIED. Например, luminance contrast может быть вычислен color/render owner, proximity — spacing owner. 4.02 отвечает только за перевод уже интерпретированного context evidence в mass modifier.

Какой mass приходит на вход

02 / base mass contract

Point/line могут приходить через adapters 4.00; shape — через 4.01. Для честного cross-object comparison нужна calibration-domain metadata.

ContextMassInput {
  baseMassValue,
  baseMassRef,
  inputStage:
    "INTRINSIC" |
    "LOCAL_CONTEXTUALIZED",

  alreadyAppliedContextRefs[],
  alreadyAppliedChannels?,

  confidence,
  calibrationDomainRef,
  provenance
}
SHAPE: 4.01 intrinsicCoverageMassShortN2 → INTRINSIC POINT: Point.visualWeightBase → INTRINSIC OR Point.visualWeightContextual → LOCAL_CONTEXTUALIZED LINE: Line.baseWeight → INTRINSIC OR Line.contextualWeight → LOCAL_CONTEXTUALIZED

Четыре context channels

03 / four channels

Channel names описывают тип salience evidence, но не навязывают универсальный знак.

ChannelЧто приходитЧто 4.02 НЕ делает
CONTRASTsigned visibility/salience effectне считает luminance/ΔE/foreground-background contrast
ISOLATIONsigned effect от spacing/crowding contextне измеряет nearest-neighbor distances
POSITIONsigned effect от location/context modelне объявляет center/edge «хорошими» или «плохими»
OVERLAPsigned visibility/occlusion effectне вычисляет intersection geometry
NO UNIVERSAL SIGN. Высокий contrast часто усиливает salience, но калибровка знака/силы должна приходить из explicit context adapter/profile. Isolation и overlap особенно не имеют универсального monotonic rule.

Почему log-space

04 / log-space model

Масса должна оставаться неотрицательной. Log-space даёт симметричную нейтральную точку и ограничивает экстремальные modifiers.

For channel c: e_c ∈ [-1,1] strength_c > 0 ℓ_c = clamp( strength_c × e_c, -logCap_c, +logCap_c ) multiplier_c = exp(ℓ_c) Total: L = clamp( Σ ℓ_c, -totalLogCap, +totalLogCap ) contextMultiplier = exp(L) contextualMass = baseMass × contextMultiplier

e = 0

multiplier = 1 · neutral.

e > 0

mass reinforcement.

e < 0

mass suppression, но multiplier остаётся positive.

Несколько evidence одного channel

05 / same-channel evidence

Сначала дедупликация, затем confidence-weighted effect. Никакого суммирования одинакового contrast evidence трижды.

For channel c: unique evidence → suppress exact evidenceRef duplicates → suppress direct same-lineage duplicates → exclude N/A effect_c = Σ(effect_i × confidence_i) / Σ(confidence_i) channelConfidence_c = mean or calibrated aggregate of accepted evidence confidence if no accepted evidence: channel = MISSING / N_A according policy
DEPENDENCY ≠ DUPLICATE. Общий geometry dependency не означает double counting. Suppression требует совпадающий evidenceRef или доказанную общую contextual lineage.

Главная защита 4.02

06 / anti-double-context

Если upstream уже применил контекст, 4.02 использует lineage, а не угадывает.

INTRINSIC

Можно contextualize

inputStage=INTRINSIC
alreadyApplied=[]
  ↓
enabled evidence
  CONTRAST
  ISOLATION
  POSITION
  OVERLAP
  ↓
apply once
LOCAL_CONTEXTUALIZED

Нужно suppress

upstream contextual metric
derivedFrom=[
  contrast:x,
  isolation:y
]

4.02 receives same refs
  → SUPPRESS

new overlap:z
  → APPLY
UNKNOWN LINEAGE. Если contextualWeight существует, но upstream не сообщает использованные context refs/channels, 4.02 не делает вид, что база intrinsic. Результат становится PARTIAL/DIAGNOSTIC по policy.

Policy и calibration

07 / MassContextPolicy

Strength/caps — параметры модели, не законы композиции. Они обязаны иметь provenance.

MassContextPolicy {
  enabledChannels[],

  channelStrength: {
    CONTRAST,
    ISOLATION,
    POSITION,
    OVERLAP
  },

  channelLogCaps{},
  totalLogCap,

  missingEvidencePolicy:
    "ALLOW_PARTIAL" |
    "REQUIRE_ENABLED" |
    "DIAGNOSTIC_ONLY_IF_MISSING",

  calibrationProfileRef?,
  provenance
}
INITIAL HEURISTICS. Значения 0.35/0.25/0.15/0.35 в reference implementation — стартовые, а не нормативы визуального восприятия. 4.04 позже владеет calibration profiles.

N/A и partial

08 / missing evidence

Отсутствие contrast evidence не равно отрицательному contrast.

PolicyMissing enabled channel
ALLOW_PARTIALприменить доступные channels; confidence/coverage снизить
REQUIRE_ENABLEDcontextual mass = N/A до появления всех enabled channels
DIAGNOSTIC_ONLY_IF_MISSINGвернуть channel diagnostics, но не публиковать canonical contextualMass
missing evidence ≠ effect 0 ≠ multiplier 1 Neutral multiplier=1 is valid only when: explicit evidence effect=0 or explicit policy says missing channel is disabled.

Confidence

09 / coverage + confidence

Мagnitude и evidence quality разделены.

enabledChannels = N coveredChannels = channels with accepted evidence channelCoverage = covered / enabled contextEvidenceConfidence = weighted mean accepted channel confidence baseConfidence = input base-mass confidence contextConfidence = baseConfidence × contextEvidenceConfidence × channelCoverage contextualMass itself is NOT multiplied by confidence. Confidence travels beside value.
НЕ ЗАНИЖАЕМ MASS ИЗ-ЗА НЕУВЕРЕННОСТИ. Confidence — качество evidence, не физический modifier массы.

CrossObjectContextMassResult

10 / output

После 4.02 descriptor получает stage `CROSS_OBJECT_CONTEXTUALIZED`.

CrossObjectContextMassResult {
  objectRef,
  baseMassRef,
  baseMassValue,

  inputStage,
  outputStage:
    "CROSS_OBJECT_CONTEXTUALIZED",

  channelResults[],
  contextMultiplier,
  contextualMass,

  appliedEvidenceRefs[],
  suppressedEvidenceRefs[],
  missingChannels[],

  channelCoverage,
  confidence,
  status,
  calibrationDomainRef,
  provenance
}
DOWNSTREAM CONTRACT. 4.03 сравнивает уже contextualized masses. Он не запускает contrast/isolation modifiers повторно.

Correction routing

11 / corrections

4.02 не двигает объекты и не меняет цвет.

Contrast

→ color/render owner.

Isolation

→ spacing/proximity owner.

Position

→ layout/canvas owner.

Overlap

→ occlusion/visibility owner.

CORRECTION REQUEST != FOREIGN MUTATION. `contextualMass too low for target` само по себе не разрешает 4.02 увеличить contrast или передвинуть shape.

Visual Lab

12 / visual lab

Одинаковая intrinsic mass может получить разную contextual mass, но это не ranking качества.

A · SAME BASE MASS high contrast context low contrast context crowding / isolation evidence overlap / occlusion evidence B · LOG-SPACE MODIFIERS BASE MASS = M stage=INTRINSIC Σ log multipliers contrast · isolation position · overlap M × exp(totalLog) CROSS_OBJECT_CONTEXTUALIZED same evidenceRef already in upstream lineage → suppress, not apply twice higher contextual mass ≠ higher aesthetic quality 4.03 compares masses · 4.04 evaluates target-aware mass relations

Reference contextual-mass tests

13 / deterministic tests

Проверяем log model, dedupe, anti-double-context, missing policy, confidence и no-global leakage.

Tests not run yet.

DATA FOR LAYOUT ENGINE

14 / machine contract

Machine-readable contract 4.02.

{
  "module": "Compo 4.02",
  "name": "contextual_weight_contrast_isolation_position_overlap",
  "version": "1.0-canonical",
  "scope": "CROSS_OBJECT_CONTEXTUAL_VISUAL_MASS_FROM_OWNER_QUALIFIED_CONTEXT_EVIDENCE",
  "consumes": [
    "Compo4.00.VisualMassDescriptor / MassEvidenceStage / anti-double-context policy",
    "Compo4.01.visualMass.geometry.intrinsicCoverageMassShortN2? as intrinsic shape base evidence",
    "Compo1.01.Point.visualWeightBase or Point.visualWeightContextual? via Compo4.00 adapter",
    "Compo2.06.Line.baseWeight or Line.contextualWeight? via Compo4.00 adapter",
    "ContextEvidenceRef[CONTRAST] from authoritative color/render owner",
    "ContextEvidenceRef[ISOLATION] from authoritative spacing/proximity owner",
    "ContextEvidenceRef[POSITION] from authoritative canvas/layout owner",
    "ContextEvidenceRef[OVERLAP] from authoritative occlusion/visibility owner",
    "MassContextPolicy",
    "StylePreset.massContextCalibration?"
  ],
  "provides": [
    "ContextEvidenceRef",
    "MassContextPolicy",
    "ContextChannelResult[]",
    "CrossObjectContextMassResult",
    "MassEvidenceRef[visualMass.context.contextualMass]",
    "visualMass.context.contextMultiplier",
    "visualMass.context.contextualMass",
    "visualMass.context.confidence",
    "visualMass.context.appliedEvidenceRefs[]",
    "visualMass.context.suppressedEvidenceRefs[]",
    "ContextMassCorrectionRequest[]"
  ],
  "owns_metrics": [
    "visualMass.context.contrastMultiplier",
    "visualMass.context.isolationMultiplier",
    "visualMass.context.positionMultiplier",
    "visualMass.context.overlapMultiplier",
    "visualMass.context.contextMultiplier",
    "visualMass.context.contextualMass",
    "visualMass.context.confidence"
  ],
  "descriptors_only": [
    "visualMass.context.appliedEvidenceRefs[]",
    "visualMass.context.suppressedEvidenceRefs[]",
    "visualMass.context.missingChannels[]",
    "visualMass.context.activeChannels[]",
    "visualMass.context.channelConfidence[]",
    "visualMass.context.status",
    "visualMass.context.inputStage",
    "visualMass.context.outputStage"
  ],
  "context_channels": [
    "CONTRAST",
    "ISOLATION",
    "POSITION",
    "OVERLAP"
  ],
  "context_evidence_schema": {
    "evidenceRef": "string",
    "owner": "module id / authoritative adapter",
    "channel": "CONTRAST|ISOLATION|POSITION|OVERLAP",
    "effect": "normalized signed contextual salience effect in [-1,1]",
    "confidence": "0..1",
    "derivedFrom": "refs[] including raw source evidence",
    "status": "OK|N_A|PARTIAL|INVALID",
    "provenance": "DERIVED|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET|DEFERRED"
  },
  "context_policy_schema": {
    "enabledChannels": "subset of CONTRAST|ISOLATION|POSITION|OVERLAP",
    "channelStrength": {
      "CONTRAST": "positive finite",
      "ISOLATION": "positive finite",
      "POSITION": "positive finite",
      "OVERLAP": "positive finite"
    },
    "channelLogCaps": "map channel->positive finite cap on |log multiplier|",
    "totalLogCap": "positive finite cap on |Σ log multipliers|",
    "missingEvidencePolicy": "ALLOW_PARTIAL|REQUIRE_ENABLED|DIAGNOSTIC_ONLY_IF_MISSING",
    "calibrationProfileRef": "optional",
    "provenance": "STYLE_PRESET|EMPIRICAL|INITIAL_HEURISTIC"
  },
  "mass_input_contract": {
    "baseMassValue": "positive or zero finite intrinsic/base mass on an explicitly declared calibration domain",
    "baseMassRef": "owner-qualified metric ref",
    "inputStage": "INTRINSIC|LOCAL_CONTEXTUALIZED",
    "alreadyAppliedContextRefs": "refs[]",
    "alreadyAppliedChannels": "optional channel labels when lineage is known",
    "confidence": "0..1",
    "calibrationDomainRef": "required for cross-object comparability",
    "provenance": "object"
  },
  "context_math": {
    "per_channel": "logMultiplier_c = clamp(strength_c * effect_c, -logCap_c, +logCap_c)",
    "channelMultiplier": "exp(logMultiplier_c)",
    "combine": "totalLog = clamp(sum(logMultiplier_c), -totalLogCap, +totalLogCap)",
    "contextMultiplier": "exp(totalLog)",
    "contextualMass": "baseMassValue * contextMultiplier",
    "neutral_effect": "effect=0 => multiplier=1",
    "reason_for_log_space": "positive multiplicative mass, symmetric reinforcement/suppression around neutral in log domain"
  },
  "evidence_aggregation": {
    "same_channel_multiple_refs": "confidence-weighted mean signed effect after exact evidenceRef dedupe",
    "N_A": "excluded, never zero-filled",
    "invalid_effect_or_confidence": "diagnostic/suppressed",
    "already_applied_upstream": "suppressed before channel aggregation",
    "shared_derivedFrom_same_channel": "deduplicate when direct lineage overlap proves same underlying context signal",
    "cross_channel_shared_lineage": "diagnostic flag; do not suppress automatically unless adapter declares channels non-independent"
  },
  "anti_double_context_policy": {
    "input_INTRINSIC": "all new enabled context evidence may be considered once",
    "input_LOCAL_CONTEXTUALIZED": "suppress evidenceRef or declared underlying refs already present in upstream lineage",
    "unknown_upstream_context_lineage": "status=PARTIAL_OR_DIAGNOSTIC according policy; do not blindly reapply same named channels",
    "output_stage": "CROSS_OBJECT_CONTEXTUALIZED",
    "downstream_rule": "4.03 consumes contextualMass as final Topic4 context magnitude and must not contextualize it again"
  },
  "channel_semantics": {
    "CONTRAST": "signed salience effect supplied by contrast/color/render owner; 4.02 does not compute luminance contrast",
    "ISOLATION": "signed salience effect supplied by spacing/proximity owner; isolated may increase salience, crowding may decrease or redistribute it depending calibration",
    "POSITION": "signed salience effect supplied by canvas/layout context owner; center/edge/corner are not universal quality rules",
    "OVERLAP": "signed visibility/salience effect supplied by occlusion owner; occlusion can reduce visible mass, deliberate overlap can have other calibrated effects"
  },
  "hard_constraints": [
    "raw contrast/luminance is not measured or owned here",
    "raw spacing/isolation geometry is not measured or owned here",
    "raw position/canvas relation is not measured or owned here",
    "raw overlap/occlusion geometry is not measured or owned here",
    "context evidence must be owner-qualified and carry provenance/confidence",
    "already-applied upstream context evidence must not be applied twice",
    "missing upstream context lineage must not be guessed",
    "effect is signed salience influence, not aesthetic quality",
    "contextMultiplier must remain positive finite",
    "baseMassValue is never clamped to [0,1]",
    "contextualMass is a mass magnitude descriptor, not a score",
    "higher contextualMass is not universally better",
    "negative space remains Topic5",
    "mass relations remain Compo4.03",
    "target-aware mass fit/scoring remains Compo4.04",
    "global balance/hierarchy/eye-flow remain future global owners",
    "N/A != 0",
    "no beautyScore"
  ],
  "initial_heuristics": {
    "default_channel_strength": {
      "value": {
        "CONTRAST": 0.35,
        "ISOLATION": 0.25,
        "POSITION": 0.15,
        "OVERLAP": 0.35
      },
      "provenance": "INITIAL_HEURISTIC"
    },
    "default_channel_log_cap": {
      "value": 0.35,
      "provenance": "INITIAL_HEURISTIC"
    },
    "default_total_log_cap": {
      "value": 0.7,
      "provenance": "INITIAL_HEURISTIC"
    }
  },
  "correction_policy": {
    "foreign_context_geometry_mutation": "FORBIDDEN",
    "contrast_issue": "request authoritative contrast/color owner evidence or correction",
    "isolation_issue": "request spacing/proximity owner correction",
    "position_issue": "request layout/canvas owner correction",
    "overlap_issue": "request occlusion/visibility owner correction",
    "base_mass_issue": "route to Compo4.01 or source local-weight owner",
    "relation_issue": "route to Compo4.03",
    "target_preference_issue": "route to Compo4.04"
  },
  "deferred_inputs": [
    "Compo4.03 mass relations",
    "Compo4.04 calibration/target scoring/regression",
    "Topic5 positive/negative space",
    "future hierarchy/balance/global eye-flow",
    "future canonical contrast/isolation/position/overlap owners where not yet available"
  ],
  "recompute_when": [
    "base mass evidence changes",
    "input evidence stage or upstream applied-context lineage changes",
    "any enabled context evidence changes",
    "context policy/calibration profile changes",
    "channel confidence/provenance changes",
    "enabled channel set changes"
  ],
  "finality": "CROSS_OBJECT_CONTEXTUAL_MASS_ONLY"
}
ARCHITECTURE CHECKPOINT · 4.02 OWNS CROSS-OBJECT CONTEXTUAL MASS AND CHANNEL MULTIPLIERS ONLY. RAW CONTRAST / ISOLATION / POSITION / OVERLAP MEASUREMENTS REMAIN WITH THEIR AUTHORITATIVE OWNERS. 4.00 STAGE/ANTI-DOUBLE-CONTEXT CONTRACT IS ENFORCED. 4.01 BASE GEOMETRIC MASS IS CONSUMED, NOT RECOMPUTED. 4.03 OWNS MASS RELATIONS; 4.04 CALIBRATION / TARGET SCORING. TOPIC5 OWNS FREE SPACE; GLOBAL BALANCE/HIERARCHY REMAIN DEFERRED. HIGHER MASS ≠ BETTER. NO BEAUTYSCORE.
VISITS / ...