COMPO · 20.02 · MARGINAL CONTRIBUTION / ABLATION

Remove in the model.
Measure what changes.

20.02 проводит только controlled single-subject ablation: сравнивает owner-qualified outcome до и после гипотетического удаления одного exact subject, сохраняя semantic/decorative verdict из 20.01 отдельной осью. Результат — локальные marginal descriptors и ObjectContributionDescriptor. Это ещё не разрешение на удаление и не redundancy score.

ModuleCompo 20.02
Ablationsingle subject
Outcomeowner-qualified
Deltasource units
Metricsnone
Next20.03

Measure the counterfactual locally

00 / contract
exact 20.00 subject + exact 20.01 semantic/decorative descriptor
+ explicit single-subject ablation experiment
+ owner-qualified outcome bindings
+ baseline / SUBJECT_ABLATED evidence
→ per-binding marginal deltas
→ ObjectContributionDescriptor

NO removal candidate
NO redundancy score
NO MetricResult

Ablation describes effect, not permission

01 / ownership
OWNS

20.02

Single-subject experiment identity, exact owner-qualified outcome evidence, baseline-versus-ablated deltas, effect classes and ObjectContributionDescriptor lineage.

DOES NOT OWN

20.03–20.04 + foreign

Removal permission, clutter proposal, redundancy score, MetricResult, raw outcome semantics, causal universality, hierarchy, dominance, visual mass or final ranking.

One subject, one controlled hypothetical removal

02 / experiment
ObjectAblationExperimentSpec {
  objectContributionSubjectRef,
  baselineScenarioRef,
  ablatedScenarioRef,
  selectedOutcomeBindingRefs[],
  ablationMode: REMOVE_EXACT_SUBJECT_ONLY,
  otherChangesPolicy: NO_OTHER_DECLARED_CHANGES,
  mutationAllowed: false
}
20.02 does not delete the source object.
It compares two explicitly declared evaluation states.

No multi-object combinatorial ablation in canon v1.

Outcome direction belongs to the binding

03 / bindings
DirectionMeaning
HIGHER_IS_BETTERbaseline − ablated > 0 means positive local marginal contribution.
LOWER_IS_BETTERDirection is reversed before interpretation; lower baseline can be beneficial.
CHANGE_ONLYOnly change/no-change is described. Better/worse semantics are intentionally absent.
Owner boundary: the outcome channel, unit, method and meaning remain foreign-owned. 20.02 performs no hidden normalization and no unit conversion.

Raw delta stays in source units

04 / marginal math
rawDelta = baselineValue − ablatedValue

HIGHER_IS_BETTER:
orientedDelta = rawDelta

LOWER_IS_BETTER:
orientedDelta = −rawDelta

CHANGE_ONLY:
orientedDelta = null
+

Positive

Ablation worsened a directed outcome in this exact context.

0

No change

Exact equality is a valid observed zero.

−

Negative

Ablation improved a directed outcome locally.

Δ

Change only

A change occurred without value judgement.

ObjectContributionDescriptor keeps axes separate

05 / expected output
ObjectContributionDescriptor {
  objectContributionSubjectRef,
  objectNecessityDecorationDescriptorRef,
  objectAblationExperimentSpecRef,
  marginalContributionDescriptorRefs[],

  semanticNecessityVerdict,      // copied from 20.01
  decorativeContributionState,   // copied from 20.01

  positiveContributionRefs[],
  noObservedChangeRefs[],
  negativeContributionRefs[],
  changeObservedRefs[],
  unresolvedMarginalRefs[],

  redundancyHypothesisRefs[],     // lineage only
  removalCandidateRef: null,
  redundancyScore: null,
  metricResultRefs: [],
  removalSafety: null,

  mutationAllowed: false
}

Zero, N_A and INVALID remain distinct

06 / status
Exact baseline = ablatedOK + NO_OBSERVED_CHANGE + numeric 0
Missing baseline or ablated evidenceN_A
Conflicting exact-lineage evidenceN_A
Wrong experiment/binding/unit/method/contextINVALID or lineage N_A; no conversion
Experiment/binding overflowN_A; no truncation

Removal still belongs downstream

07 / owners
20.00Root objects, requirements, coverage and redundancy hypotheses.
20.01Semantic necessity vs decorative contribution.
20.02Single-subject ablation, marginal effect descriptors and ObjectContributionDescriptor.
20.03Removal candidates and clutter reduction.
20.04Redundancy score, MetricResult scoring and final Topic20 tests.

Observed effect is not a deletion verdict

08 / firewalls
positive marginal contribution != universal necessity
negative marginal contribution != safe removal
zero observed change != redundancy proof
decorative contribution != marginal contribution
redundancy hypothesis != redundancy score
ablation experiment != physical mutation

N_A != 0
descriptor != score
local != global
correction request != foreign mutation

CANON → LAB → DATA → IDEAS

09 / mandatory hooks
IDEAS_REFS[]Ablation vs redundancy studies.
DATA_CAPTURE[]Experiment, binding, before/after and delta lineage.
DEFERRED_SEMANTIC_INPUTS[]Removal candidates and scoring stay downstream.
HUMAN_FEEDBACK_HOOKS[]Outcome and co-change corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]Confidence and serialization never pick winners.
LAB_HOOKS[]Reproducibility and interaction-effect studies.

20.02 regression suite

10 / deterministic tests

Tests cover exact experiment identity, owner-qualified outcome lineage, higher/lower/change-only direction semantics, exact zero, conflicts, missing evidence, bounded explicit selection, immutable descriptors and 20.03–20.04 ownership firewalls.

Tests not run yet.

DATA FOR LAYOUT ENGINE

11 / machine contract
{
  "module": "Compo 20.02",
  "name": "marginal_contribution_ablation",
  "version": "1.0-canonical",
  "canonical_main_title": "Marginal contribution / ablation",
  "topic": "20_ЭКОНОМИЯ_И_УДАЛЕНИЕ_ЛИШНЕГО",
  "scope": "EXPLICIT_SINGLE_SUBJECT_CONTROLLED_ABLATION_OVER_OWNER_QUALIFIED_OUTCOME_BINDINGS_AND_OBJECT_CONTRIBUTION_DESCRIPTORS_ONLY_WITHOUT_REMOVAL_CANDIDATES_REDUNDANCY_SCORING_OR_METRICRESULT",
  "main_topic_contract": {
    "topic_title": "Экономия и удаление лишнего",
    "topic_goal": "Проверяет необходимость каждого элемента через semantic necessity и marginal contribution. Позволяет предлагать удаление лишнего без разрушения обязательного content.",
    "expected_output": "ObjectContributionDescriptor, redundancy score, removal candidates",
    "planned_files": [
      "20.00 Necessity/redundancy model",
      "20.01 Semantic necessity vs decorative contribution",
      "20.02 Marginal contribution / ablation",
      "20.03 Removal candidates and clutter reduction",
      "20.04 Scoring and tests"
    ]
  },
  "ownership": {
    "owner": "Compo20.02",
    "owns": [
      "ObjectAblationOutcomeDirection taxonomy",
      "ObjectAblationCondition taxonomy",
      "ObjectMarginalEffectClass taxonomy",
      "ObjectAblationOutcomeBinding",
      "ObjectAblationExperimentSpec",
      "ObjectAblationOutcomeEvidence adapter",
      "ObjectAblationOutcomeResolution",
      "ObjectMarginalContributionDescriptor",
      "ObjectAblationSelectionPolicy",
      "ObjectAblationSet",
      "ObjectContributionDescriptor",
      "ObjectAblationAttachment",
      "explicit single-subject hypothetical ablation contract",
      "exact baseline-vs-ablated owner-qualified outcome comparison",
      "per-binding raw and direction-oriented marginal delta",
      "identity/status/provenance rules for Topic20 ablation layer",
      "non-mutating correction request for experiment/binding/evidence lineage"
    ],
    "does_not_own": [
      "20.00 subjects, requirements, coverage claims, redundancy hypotheses or root identity",
      "20.01 semantic necessity / decorative contribution judgement",
      "foreign outcome measurement semantics",
      "causal inference beyond the exact declared ablation experiment",
      "multi-subject combinatorial ablation",
      "removal candidate generation / clutter reduction — Compo20.03",
      "redundancy score / MetricResult scoring — Compo20.04",
      "Topic19 hierarchy",
      "Topic18 subordination",
      "Compo13 dominance",
      "Compo4 visual mass",
      "global beautyScore",
      "final-layout ranking",
      "foreign geometry/content/style mutation"
    ]
  },
  "consumes": [
    "valid Compo20.00 ObjectContributionSystemSeed lineage",
    "exact Compo20.00 ObjectContributionSubject identity",
    "valid Compo20.01 ObjectNecessityDecorationDescriptor for the same subject",
    "explicit ObjectAblationOutcomeBinding[]",
    "explicit ObjectAblationExperimentSpec",
    "owner-qualified baseline and SUBJECT_ABLATED outcome evidence",
    "explicit ObjectAblationSelectionPolicy"
  ],
  "provides": [
    "ObjectAblationOutcomeResolution[]",
    "ObjectMarginalContributionDescriptor[]",
    "ObjectAblationSet",
    "ObjectContributionDescriptor",
    "ObjectAblationAttachment"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "20.02 produces descriptive per-binding marginal deltas and ObjectContributionDescriptor lineage only. It owns no redundancy score, no MetricResult and no independent numeric vote.",
  "outcome_direction_taxonomy": {
    "HIGHER_IS_BETTER": "Positive marginal effect when baseline outcome exceeds ablated outcome.",
    "LOWER_IS_BETTER": "Positive marginal effect when baseline outcome is lower than ablated outcome.",
    "CHANGE_ONLY": "Direction is intentionally unspecified; only change/no-change is described."
  },
  "ablation_condition_taxonomy": {
    "BASELINE": "Original declared evaluation state.",
    "SUBJECT_ABLATED": "Hypothetical evaluation state with exactly one selected subject removed/disabled and no other declared change."
  },
  "marginal_effect_class_taxonomy": {
    "POSITIVE_CONTRIBUTION": "Removing the subject worsened an explicitly directed outcome in this exact context.",
    "NO_OBSERVED_CHANGE": "Exact baseline and ablated values are equal.",
    "NEGATIVE_CONTRIBUTION": "Removing the subject improved an explicitly directed outcome in this exact context.",
    "CHANGE_OBSERVED": "A CHANGE_ONLY binding changed, without better/worse semantics."
  },
  "ablation_outcome_binding_schema": {
    "objectAblationOutcomeBindingRef": "stable identity",
    "scopeRef": "Topic20 scope",
    "outcomeChannelRef": "opaque foreign-owned outcome channel",
    "outcomeSourceOwnerRef": "measurement owner",
    "unitRef": "exact unit",
    "measurementMethodRef": "exact method",
    "measurementContextRef": "exact context",
    "outcomeDirection": "HIGHER_IS_BETTER|LOWER_IS_BETTER|CHANGE_ONLY",
    "bindingSourceRef": "explicit source",
    "bindingSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false
  },
  "ablation_experiment_spec_schema": {
    "objectAblationExperimentSpecRef": "stable identity",
    "scopeRef": "scope",
    "objectContributionSystemSeedRef": "exact 20.00 seed",
    "objectContributionSubjectRef": "exact selected subject",
    "baselineScenarioRef": "explicit baseline scenario",
    "ablatedScenarioRef": "explicit subject-ablated scenario",
    "evaluationContextRef": "exact experiment context",
    "selectedOutcomeBindingRefs[]": "explicit only",
    "ablationMode": "REMOVE_EXACT_SUBJECT_ONLY",
    "otherChangesPolicy": "NO_OTHER_DECLARED_CHANGES",
    "experimentSourceRef": "explicit source",
    "experimentSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false
  },
  "ablation_outcome_evidence_schema": {
    "objectAblationOutcomeEvidenceRef": "stable identity",
    "scopeRef": "scope",
    "objectAblationExperimentSpecRef": "exact experiment",
    "objectContributionSubjectRef": "exact ablated subject",
    "objectAblationOutcomeBindingRef": "exact binding",
    "condition": "BASELINE|SUBJECT_ABLATED",
    "scenarioRef": "must match experiment condition scenario",
    "value": "finite scalar",
    "unitRef": "exact binding unit",
    "measurementMethodRef": "exact binding method",
    "measurementContextRef": "exact binding context",
    "evidenceSourceRef": "explicit source",
    "evidenceSourceOwnerRef": "must match binding outcomeSourceOwnerRef",
    "confidence": "finite [0,1] or null; diagnostic only",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false
  },
  "resolution_policy": {
    "mode": "EXACT_SINGLE_VALUE_OR_CONSENSUS_EQUAL_ONLY",
    "missing": "N_A",
    "conflict": "N_A",
    "invalid": "INVALID",
    "confidenceWinner": false,
    "averaging": false,
    "latestWinner": false,
    "zeroIsValid": true
  },
  "marginal_math": {
    "rawDelta": "baselineValue - ablatedValue",
    "HIGHER_IS_BETTER": "orientedDelta = rawDelta",
    "LOWER_IS_BETTER": "orientedDelta = -rawDelta",
    "CHANGE_ONLY": "orientedDelta = null",
    "classification": "positive/zero/negative only when directed; CHANGE_ONLY uses CHANGE_OBSERVED or NO_OBSERVED_CHANGE",
    "epsilon": "none; equality is exact in 20.02"
  },
  "object_contribution_descriptor_schema": {
    "objectContributionDescriptorRef": "stable identity",
    "scopeRef": "scope",
    "objectContributionSubjectRef": "exact subject",
    "objectContributionSystemSeedRef": "exact 20.00 seed",
    "objectNecessityDecorationDescriptorRef": "exact 20.01 descriptor",
    "objectAblationExperimentSpecRef": "exact experiment",
    "marginalContributionDescriptorRefs[]": "explicit per-binding results",
    "positiveContributionRefs[]": "descriptive lineage",
    "noObservedChangeRefs[]": "descriptive lineage",
    "negativeContributionRefs[]": "descriptive lineage",
    "changeObservedRefs[]": "descriptive lineage",
    "unresolvedMarginalRefs[]": "N_A lineage",
    "semanticNecessityVerdict": "copied from 20.01; not recomputed",
    "decorativeContributionState": "copied from 20.01; not recomputed",
    "redundancyHypothesisRefs[]": "optional 20.00 lineage only; not evaluated",
    "removalCandidateRef": null,
    "redundancyScore": null,
    "metricResultRefs": [],
    "removalSafety": null,
    "status": "OK|N_A|INVALID",
    "provenance": "DERIVED",
    "mutationAllowed": false
  },
  "selection_policy": {
    "selectionMode": "EXPLICIT_EXPERIMENTS_AND_BINDINGS_ONLY",
    "maxExperiments": 128,
    "maxBindingsPerExperiment": 64,
    "overflowPolicy": "N_A_NO_TRUNCATION",
    "duplicatePolicy": "DEDUP_EXACT_IDENTITY",
    "allowMultiSubjectAblation": false,
    "allowImplicitOutcomeBindings": false,
    "allowSilentUnitConversion": false,
    "allowSilentMethodConversion": false,
    "allowSilentContextConversion": false,
    "allowCrossExperimentEvidenceFallback": false,
    "allowAggregateMarginalScore": false
  },
  "status_policy": {
    "validExactPair": "OK",
    "exactZeroDelta": "OK",
    "missingBaselineOrAblated": "N_A",
    "conflictingEvidence": "N_A",
    "lineageMismatch": "N_A",
    "unknownSubject": "N_A",
    "invalidEvidence": "INVALID",
    "invalidBinding": "INVALID",
    "invalidExperiment": "INVALID",
    "selectionOverflow": "N_A; no truncation",
    "N_A_not_zero": true
  },
  "critical_firewalls": [
    "20.02 owns no MetricResult and no independent numeric vote",
    "ablation != physical deletion",
    "ablation experiment != removal candidate",
    "positive marginal contribution != global necessity",
    "negative marginal contribution != safe removal",
    "zero observed change != redundancy proof",
    "CHANGE_ONLY change != benefit or harm",
    "20.01 LOCALLY_REQUIRED remains semantic evidence and is not overwritten by ablation",
    "decorative contribution remains independent from marginal contribution",
    "redundancy hypothesis != redundancy score",
    "single-subject experiment != causal law",
    "no multi-object combinatorial ablation",
    "no full subject×binding Cartesian product",
    "no silent unit/method/context conversion",
    "missing evidence != zero contribution",
    "N_A != 0",
    "INVALID != 0",
    "local != global",
    "descriptor != score",
    "heuristic != law",
    "correction request != foreign mutation",
    "module execution order != rule priority",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "IDEAS_REFS": [
    "IDEA-01 compare declared redundancy hypotheses with observed ablation effects",
    "IDEA-02 study false-safe-removal cases where one measured outcome stays unchanged but mandatory content breaks",
    "IDEA-03 compare single-object and future interaction-aware ablations without canonizing combinatorial search",
    "IDEA-04 collect context-sensitive marginal effects across media and tasks",
    "IDEA-05 study outcome binding coverage needed before downstream redundancy scoring"
  ],
  "DATA_CAPTURE": [
    "scopeRef",
    "snapshotRef",
    "objectContributionSystemSeedRef",
    "objectContributionSubjectRef",
    "objectNecessityDecorationDescriptorRef",
    "objectAblationExperimentSpecRef",
    "selectedOutcomeBindingRefs[]",
    "baselineEvidenceRefs[]",
    "ablatedEvidenceRefs[]",
    "baselineValueByBinding",
    "ablatedValueByBinding",
    "rawDeltaByBinding",
    "orientedDeltaByBinding",
    "marginalEffectClassByBinding",
    "objectContributionDescriptorRef",
    "status",
    "reasonCode"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "20.03 removal candidate generation",
    "20.03 clutter-reduction proposal logic",
    "20.04 redundancy score",
    "20.04 MetricResult scoring",
    "multi-subject interaction ablation",
    "global quality and final-layout ranking"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "correct outcome binding",
    "correct outcome direction",
    "correct experiment scenario pairing",
    "correct baseline evidence",
    "correct ablated evidence",
    "mark evidence conflict real",
    "mark untracked co-change in ablation",
    "correct semantic/decorative lineage",
    "mark marginal effect context-specific"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "confidence does not choose evidence winner",
    "evidence serialization order has no priority",
    "binding order has no outcome priority",
    "positive/negative effect classes have no global quality priority",
    "module execution order does not imply rule priority"
  ],
  "LAB_HOOKS": [
    "single-object ablation reproducibility study",
    "outcome-channel sensitivity study",
    "semantic-breakage despite zero measured delta study",
    "negative marginal effect interpretation study",
    "interaction-effect study for future non-canonical multi-object experiments",
    "human removal-safety review study"
  ],
  "topic20ProgressAfterThisModule": "3/5 local",
  "next_module": "Compo 20.03 — Removal candidates and clutter reduction",
  "hard_stop": "Do not implement 20.03 or 20.04 in this file."
}
VISITS / ...