COMPO · 20.00 · NECESSITY / REDUNDANCY MODEL

Register obligations.
Remove nothing yet.

20.00 создаёт root-модель для проверки лишнего: какие объекты участвуют, какие owner-qualified requirements должны быть представлены, какие объекты явно заявлены как их providers и где существует только гипотеза о возможном функциональном перекрытии. Semantic necessity, ablation, redundancy score и removal candidates здесь ещё не вычисляются.

ModuleCompo 20.00
Inputexplicit objects
Requirementsowner-qualified
Redundancyhypotheses only
Metricsnone
Next20.01

Model first, judgement later

00 / contract
explicit object eligibility + explicit owner-qualified requirements + explicit object → requirement coverage claims + explicit overlap / substitute hypotheses → ObjectContributionModel → ObjectContributionSystemSeed 20.00 stops here. NO semantic necessity verdict NO decorative-contribution verdict NO ablation NO redundancy score NO removal candidate NO MetricResult

Root declarations only

01 / ownership
OWNS

20.00

Subject eligibility, explicit requirement registry, explicit coverage claims, redundancy hypotheses, bounded model policy and immutable root seed.

DOES NOT OWN

Downstream + foreign

Semantic necessity, decorative value, marginal contribution, ablation, removal candidates, redundancy score, Topic19 hierarchy, dominance, visual mass or final-layout ranking.

Critical distinction: registering a requirement and its provider is evidence structure. It is not yet a decision that a particular object must stay, and an overlap hypothesis is not evidence that an object can be deleted.

Eligibility is explicit

02 / subjects
INCLUDE

Explicit evidence

An object enters Topic20 only after owner-qualified eligibility resolves true.

N_A

Conflict

Conflicting eligibility evidence remains N_A. Confidence and source order do not choose a winner.

NO INFERENCE

Appearance

Small, decorative-looking, low-rank or low-mass objects are not automatically redundancy subjects or removable objects.

ObjectContributionSubject {
  objectRef: foreign identity,
  eligibilityResolutionRef: explicit,

  semanticNecessityRef: null,
  marginalContributionRef: null,
  removalCandidateRef: null,
  redundancyScore: null,

  mutationAllowed: false
}

Requirements keep their owners

03 / obligations
KindMeaning20.00 does not infer
MANDATORY_CONTENTExplicit content that must remain represented.Which single object is indispensable.
TASK_FUNCTIONExplicit task/function requirement.Its semantic importance from appearance.
LEGAL_OR_STANDARDExplicit compliance requirement.Alternative compliant representations.
BRAND_OR_STYLEExplicit project/brand/style requirement.Universal aesthetic necessity.
ACCESSIBILITYExplicit accessibility requirement.Automatic removal safety.
OWNER_DEFINEDOpaque requirement with foreign semantics.Meaning beyond declared lineage.
removalProtectionMode: REQUIRED_PRESENCE | REVIEW_REQUIRED | NO_DECLARED_PROTECTION NO_DECLARED_PROTECTION != safe to remove REQUIRED_PRESENCE != one specific subject is universally irreplaceable

Coverage claim is evidence, not verdict

04 / coverage
ObjectContributionCoverageClaim {
  objectContributionSubjectRef,
  objectContributionRequirementRef,
  coverageRole:
    SOLE_DECLARED_PROVIDER |
    CO_PROVIDER |
    SUPPORTING |
    UNSPECIFIED,
  claimSourceRef,
  claimSourceOwnerRef,
  provenance,
  mutationAllowed: false
}
SOLE DECLARED

Snapshot fact

Only one provider is currently declared in this model. Downstream may discover a valid substitute.

CO-PROVIDER

Multiple providers

Multiple objects covering one requirement does not prove redundancy. They may be jointly necessary or context-dependent.

Redundancy begins as a hypothesis

05 / overlap
Hypothesis kindAllowed meaningForbidden shortcut
SHARED_REQUIREMENTSubjects are declared to serve the same requirement.One is removable.
SHARED_FUNCTIONSubjects may overlap functionally.Function is fully duplicated.
POTENTIAL_SUBSTITUTESubjects should be tested as substitutes.Substitution is already safe.
AUTHOR_DECLARED_OVERLAPProject declares possible overlap.Redundancy score exists.
ObjectRedundancyHypothesis.redundancyScore = null hypothesis → 20.01 semantic check → 20.02 ablation evidence → 20.03 removal candidate logic → 20.04 scoring NO shortcut.

Explicit bounded model

06 / policy
EXPLICIT

Selection

Subjects, requirements, claims and hypotheses are all explicitly selected.

BOUNDED

No truncation

Overflow is N_A. The model never silently drops obligations or subjects.

NO ALL-PAIRS

Redundancy graph

No O(n²) automatic pair generation and no inferred substitutes.

ObjectContributionSystemSeed {
  objectContributionModelRef,
  semanticNecessityAttachmentRef: null,
  ablationAttachmentRef: null,
  removalCandidateAttachmentRef: null,
  scoringAttachmentRef: null,
  metricResultRefs: [],
  mutationAllowed: false
}

N_A never becomes zero

07 / status
CaseStatus
No eligibility evidenceN_A
Eligibility conflictN_A
Malformed evidence / requirement / roleINVALID
Coverage references unknown subject/requirementN_A
Hypothesis with fewer than two unique subjectsINVALID
Hypothesis references unknown subject/requirementN_A
Valid model with zero hypothesesOK
Future valid redundancy score 0Numeric zero, not N_A; owned downstream

Downstream ownership is fixed

08 / owners
20.00Root subjects, requirements, coverage claims, redundancy hypotheses and immutable system seed.
20.01Semantic necessity vs decorative contribution.
20.02Marginal contribution / ablation and ObjectContributionDescriptor.
20.03Removal candidates and clutter reduction.
20.04Redundancy score, MetricResult scoring and final Topic20 tests.
Topic19Observed multi-signal visual hierarchy.
Topic18Declared hierarchy/subordination.
Compo13 / Compo4Dominance / visual mass.

No deletion from appearance alone

09 / firewalls
decorative-looking != redundant small != redundant low hierarchy rank != redundant low visual mass != redundant shared requirement != safe removal SOLE_DECLARED_PROVIDER != universal irreplaceability coverage claim != necessity verdict redundancy hypothesis != redundancy score 20.00 owns_metrics = [] 20.00 independent numeric votes = 0 20.00 removal candidates = none 20.00 redundancy score = null N_A != 0 local != global correction request != foreign mutation

CANON → LAB → DATA → IDEAS

10 / mandatory hooks
IDEAS_REFS[]Redundancy-vs-decoration studies.
DATA_CAPTURE[]Subjects, requirements, claims and hypotheses.
DEFERRED_SEMANTIC_INPUTS[]Necessity, ablation, removal and scoring.
HUMAN_FEEDBACK_HOOKS[]Requirement/coverage corrections.
CONFLICT_PRIORITY_ASSUMPTIONS[]No confidence or serialization winner.
LAB_HOOKS[]Ablation and false-removal studies.

20.00 regression suite

11 / deterministic tests

Tests cover explicit eligibility, requirement/protection taxonomies, exact coverage lineage, unordered redundancy-hypothesis membership, bounded policies, N_A/INVALID preservation, immutable seed, zero metrics and all 20.01–20.04 / Topic18–19 ownership firewalls.

Tests not run yet.

DATA FOR LAYOUT ENGINE

12 / machine contract
{
  "module": "Compo 20.00",
  "name": "necessity_redundancy_model",
  "version": "1.0-canonical",
  "canonical_main_title": "Necessity/redundancy model",
  "topic": "20_ЭКОНОМИЯ_И_УДАЛЕНИЕ_ЛИШНЕГО",
  "scope": "EXPLICIT_OBJECT_CONTRIBUTION_SUBJECTS_OWNER_QUALIFIED_REQUIREMENTS_COVERAGE_CLAIMS_AND_REDUNDANCY_HYPOTHESES_ROOT_MODEL_ONLY_WITHOUT_NECESSITY_JUDGEMENT_ABLATION_REMOVAL_OR_SCORING",
  "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.00",
    "owns": [
      "ObjectContributionSubjectEligibilityEvidence",
      "ObjectContributionSubjectEligibilityResolution",
      "ObjectContributionSubject",
      "ObjectContributionSubjectSetPolicy",
      "ObjectContributionSubjectSet",
      "ObjectContributionRequirementKind taxonomy",
      "ObjectContributionRemovalProtectionMode taxonomy",
      "ObjectContributionRequirement",
      "ObjectContributionCoverageRole taxonomy",
      "ObjectContributionCoverageClaim",
      "ObjectRedundancyHypothesisKind taxonomy",
      "ObjectRedundancyHypothesis",
      "ObjectContributionModelPolicy",
      "ObjectContributionModel",
      "ObjectContributionSystemSeed root identity",
      "identity/status/provenance rules for Topic20 root contribution model",
      "non-mutating correction request for root declaration/lineage errors"
    ],
    "does_not_own": [
      "semantic necessity / decorative contribution judgement — Compo20.01",
      "marginal contribution / ablation experiment and ObjectContributionDescriptor — Compo20.02",
      "removal candidate generation / clutter reduction — Compo20.03",
      "redundancy score / MetricResult scoring / final Topic20 tests — Compo20.04",
      "semantic meaning or task importance inference — foreign semantic owner",
      "raw visual hierarchy — Topic19",
      "generic subordination — Topic18",
      "dominance / focal ranking — Compo13",
      "visual mass — Compo4",
      "global beautyScore",
      "final-layout ranking",
      "foreign geometry/content/style mutation"
    ]
  },
  "consumes": [
    "explicit foreign object identities",
    "explicit contribution-subject eligibility evidence",
    "explicit owner-qualified content/task/legal/brand/accessibility/owner-defined requirement declarations",
    "explicit subject-to-requirement coverage claims",
    "explicit potential-overlap/redundancy hypotheses",
    "optional upstream Topic18/19 refs as foreign context only"
  ],
  "provides": [
    "ObjectContributionSubjectSet",
    "ObjectContributionRequirement[]",
    "ObjectContributionCoverageClaim[]",
    "ObjectRedundancyHypothesis[]",
    "ObjectContributionModel",
    "ObjectContributionSystemSeed"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "20.00 owns no redundancy score, no necessity score, no marginal-contribution score, no MetricResult and no independent numeric vote. It registers root evidence and hypotheses only.",
  "requirement_kind_taxonomy": {
    "MANDATORY_CONTENT": "Explicit content that an owner declares must remain represented in the composition.",
    "TASK_FUNCTION": "Explicit functional/task requirement supplied by a task owner.",
    "LEGAL_OR_STANDARD": "Explicit legal, compliance or standards requirement.",
    "BRAND_OR_STYLE": "Explicit brand/style requirement. Presence may be required by the declaring owner but is not a universal law.",
    "ACCESSIBILITY": "Explicit accessibility requirement supplied by its owner.",
    "OWNER_DEFINED": "Opaque explicit requirement whose semantics remain with the declaring owner."
  },
  "removal_protection_mode_taxonomy": {
    "REQUIRED_PRESENCE": "The requirement itself must remain represented. This does not prove that any one particular subject is the only valid provider.",
    "REVIEW_REQUIRED": "Removal affecting this requirement must be owner-reviewed downstream.",
    "NO_DECLARED_PROTECTION": "No root protection declaration. This does not mean safe to remove."
  },
  "coverage_role_taxonomy": {
    "SOLE_DECLARED_PROVIDER": "Explicit claim that this subject is the only currently declared provider for the requirement in this snapshot.",
    "CO_PROVIDER": "Explicit claim that the subject is one of multiple declared providers.",
    "SUPPORTING": "Explicit claim that the subject supports but does not independently satisfy the requirement.",
    "UNSPECIFIED": "A coverage relation exists but its role is not further declared."
  },
  "redundancy_hypothesis_kind_taxonomy": {
    "SHARED_REQUIREMENT": "Subjects are explicitly hypothesized to overlap because they serve the same requirement.",
    "SHARED_FUNCTION": "Subjects are explicitly hypothesized to overlap in function.",
    "POTENTIAL_SUBSTITUTE": "Subjects are explicitly declared as potential substitutes for downstream testing.",
    "AUTHOR_DECLARED_OVERLAP": "Project/author declares a possible overlap with no automatic semantic conclusion."
  },
  "subject_schema": {
    "objectContributionSubjectRef": "stable identity",
    "scopeRef": "Topic20 scope",
    "objectRef": "foreign-owned object identity",
    "eligibilityResolutionRef": "exact resolved eligibility",
    "semanticNecessityRef": null,
    "marginalContributionRef": null,
    "removalCandidateRef": null,
    "redundancyScore": null,
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "Visual smallness, decoration, low contrast, low hierarchy rank or low visual mass do not automatically make an object redundant."
  },
  "requirement_schema": {
    "objectContributionRequirementRef": "stable identity",
    "scopeRef": "scope",
    "requirementKind": "one explicit taxonomy value",
    "requirementRef": "foreign requirement identity",
    "requirementOwnerRef": "semantic/task/legal/brand/accessibility owner",
    "removalProtectionMode": "REQUIRED_PRESENCE|REVIEW_REQUIRED|NO_DECLARED_PROTECTION",
    "requirementContextRef": "explicit context/snapshot",
    "sourceRef": "explicit evidence source",
    "sourceOwnerRef": "source owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "20.00 records the requirement but does not infer semantic necessity of a subject from the requirement alone."
  },
  "coverage_claim_schema": {
    "objectContributionCoverageClaimRef": "stable identity",
    "scopeRef": "scope",
    "objectContributionSubjectRef": "exact root subject",
    "objectContributionRequirementRef": "exact root requirement",
    "coverageRole": "SOLE_DECLARED_PROVIDER|CO_PROVIDER|SUPPORTING|UNSPECIFIED",
    "claimSourceRef": "explicit source",
    "claimSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "A coverage claim is evidence lineage, not a necessity verdict and not a removal decision."
  },
  "redundancy_hypothesis_schema": {
    "objectRedundancyHypothesisRef": "stable identity",
    "scopeRef": "scope",
    "hypothesisKind": "SHARED_REQUIREMENT|SHARED_FUNCTION|POTENTIAL_SUBSTITUTE|AUTHOR_DECLARED_OVERLAP",
    "subjectRefs": "canonical unique set of 2..64 exact root subjects",
    "requirementRef": "optional exact root requirement ref or null",
    "hypothesisSourceRef": "explicit source",
    "hypothesisSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "redundancyScore": null,
    "status": "OK|N_A|INVALID",
    "mutationAllowed": false,
    "firewall": "Hypothesis != redundancy finding. No pair/group is removable until downstream semantic and ablation evidence exists."
  },
  "model_policy_schema": {
    "subjectSelectionMode": "EXPLICIT_ELIGIBILITY_ONLY",
    "requirementSelectionMode": "EXPLICIT_REQUIREMENTS_ONLY",
    "coverageSelectionMode": "EXPLICIT_CLAIMS_ONLY",
    "hypothesisSelectionMode": "EXPLICIT_HYPOTHESES_ONLY",
    "duplicatePolicy": "DEDUP_EXACT_IDENTITY",
    "missingReferencePolicy": "N_A_NO_GUESS",
    "maxSubjects": "1..4096",
    "maxRequirements": "0..4096",
    "maxCoverageClaims": "0..16384",
    "maxRedundancyHypotheses": "0..4096",
    "overflowPolicy": "N_A_NO_TRUNCATION",
    "autoAllPairsRedundancy": false,
    "autoCoverageInference": false,
    "autoRemovalCandidateGeneration": false
  },
  "system_seed_schema": {
    "objectContributionSystemSeedRef": "stable identity",
    "objectContributionModelRef": "exact root model",
    "semanticNecessityAttachmentRef": null,
    "ablationAttachmentRef": null,
    "removalCandidateAttachmentRef": null,
    "scoringAttachmentRef": null,
    "metricResultRefs": [],
    "mutationAllowed": false,
    "firewall": "20.01–20.04 attach derived records. They do not rewrite the root model or foreign objects."
  },
  "status_policy": {
    "missingEligibilityEvidence": "N_A",
    "eligibilityConflict": "N_A; no confidence winner",
    "invalidEligibilityEvidence": "INVALID",
    "subjectOverflow": "N_A; no truncation",
    "invalidRequirement": "INVALID",
    "coverageUnknownSubjectOrRequirement": "N_A",
    "coverageMalformedRole": "INVALID",
    "hypothesisFewerThanTwoSubjects": "INVALID",
    "hypothesisUnknownSubjectOrRequirement": "N_A",
    "hypothesisDuplicateSubjects": "deduplicated before min-count validation",
    "modelOverflow": "N_A; no truncation",
    "validEmptyRequirementsOrHypotheses": "OK when subject set is valid",
    "N_A_not_zero": true
  },
  "identity_policy": {
    "eligibilityEvidenceRef": "hash(scope, object, eligible, source/owner, confidence, provenance, snapshot, status)",
    "eligibilityResolutionRef": "hash(scope, object, canonical evidence refs, resolved eligible/null, status, reason)",
    "objectContributionSubjectRef": "hash(scope, object, eligibility resolution, status)",
    "subjectSetPolicyRef": "hash(selection/dedup/conflict/max/overflow/source/owner/provenance/status)",
    "subjectSetRef": "hash(scope, snapshot, policy, canonical subject refs, status, reason)",
    "requirementRef": "hash(scope, kind, foreign requirement, owner, protection mode, context, source/owner, provenance, status)",
    "coverageClaimRef": "hash(scope, subject, requirement, coverage role, source/owner, provenance, status)",
    "redundancyHypothesisRef": "hash(scope, kind, canonical unordered subject set, optional requirement, source/owner, provenance, status)",
    "modelPolicyRef": "hash(explicit selection/bounds/no-guess/no-auto-pairs/source/owner/provenance/status)",
    "modelRef": "hash(scope, snapshot, subject set, policy, canonical requirements/claims/hypotheses, status, reason)",
    "systemSeedRef": "hash(root model, null downstream attachments, status)"
  },
  "critical_firewalls": [
    "20.00 owns no MetricResult and no independent numeric vote",
    "object eligibility != semantic necessity",
    "requirement declaration != object necessity verdict",
    "coverage claim != semantic necessity verdict",
    "SOLE_DECLARED_PROVIDER != universally irreplaceable",
    "redundancy hypothesis != redundancy score",
    "shared function != safe removal",
    "decorative appearance != redundant",
    "small object != redundant",
    "low hierarchy rank != redundant",
    "low visual mass != redundant",
    "N_A != 0",
    "missing evidence != zero contribution",
    "no automatic all-pairs redundancy graph",
    "no automatic semantic coverage inference",
    "no ablation in 20.00",
    "no removal candidates in 20.00",
    "no clutter score in 20.00",
    "no final-layout ranking",
    "root seed remains immutable",
    "correction request != foreign mutation"
  ],
  "IDEAS_REFS": [
    "IDEA-01 study how human reviewers distinguish redundant from merely decorative elements",
    "IDEA-02 collect requirement-coverage graphs before defining semantic necessity rules",
    "IDEA-03 compare explicit redundancy hypotheses with ablation outcomes",
    "IDEA-04 study multi-provider requirements and substitute sets",
    "IDEA-05 collect false-positive removal proposals that break mandatory content"
  ],
  "DATA_CAPTURE": [
    "scopeRef",
    "snapshotRef",
    "objectContributionSubjectRefs[]",
    "objectContributionRequirementRefs[]",
    "objectContributionCoverageClaimRefs[]",
    "objectRedundancyHypothesisRefs[]",
    "requirementKindByRef",
    "removalProtectionModeByRequirement",
    "coverageRoleByClaim",
    "hypothesisKindByRef",
    "objectContributionModelRef",
    "objectContributionSystemSeedRef",
    "status",
    "reasonCode"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "20.01 semantic necessity judgement",
    "20.01 decorative contribution judgement",
    "20.02 marginal contribution / ablation",
    "20.02 ObjectContributionDescriptor",
    "20.03 removal candidates and clutter reduction",
    "20.04 redundancy score and MetricResult scoring",
    "global quality and final-layout ranking"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "correct object eligibility",
    "correct requirement declaration",
    "correct requirement owner",
    "correct removal protection mode",
    "correct coverage claim",
    "correct coverage role",
    "mark redundancy hypothesis missing",
    "mark redundancy hypothesis extraneous",
    "correct hypothesis membership"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "eligibility confidence does not choose a winner",
    "requirement serialization order has no priority",
    "coverage claim order has no priority",
    "hypothesis order has no priority",
    "module execution order does not imply semantic priority"
  ],
  "LAB_HOOKS": [
    "requirement coverage study",
    "semantic necessity study",
    "redundancy-hypothesis precision study",
    "ablation validation study",
    "protected-content false-removal study",
    "human correction reason taxonomy"
  ],
  "topic20ProgressAfterThisModule": "1/5 local",
  "next_module": "Compo 20.01 — Semantic necessity vs decorative contribution",
  "hard_stop": "Do not implement 20.01, 20.02, 20.03 or 20.04 in this file."
}
VISITS / ...