COMPO · 18.01 · WEIGHT ENVELOPES BY HIERARCHY LEVEL

Bind a channel.
Declare the envelope.

18.01 задаёт явные weight envelopes для PRIMARY / SECONDARY / TERTIARY / DECORATIVE и сопоставляет с ними owner-qualified scalar weight observations. Модуль не измеряет visual mass сам, не выводит иерархию из размера и не решает, «хорошо» или «плохо» попадание в диапазон.

ModuleCompo 18.01
Input18.00 roles
Channelowner-qualified
Envelopeexplicit only
Metricsnone
NextSTOP

Envelope after role, before judgement

00 / contract
18.00 resolved hierarchy role + explicit owner-qualified scalar weight channel + explicit role envelope [min,max] + exact-lineage scalar observation → BELOW / WITHIN / ABOVE descriptor 18.01 stops here. NO raw visual-mass measurement NO implicit size/contrast/isolation synthesis NO competition / inversion judgement NO MetricResult NO score

Envelope semantics only

01 / ownership
OWNS

18.01

Role-scoped envelope declarations, explicit scalar-channel lineage, evidence resolution, BELOW/WITHIN/ABOVE descriptors and immutable downstream attachment.

DOES NOT OWN

Foreign + downstream

18.00 roles/graph; Compo4 visual mass; 18.02 channel constraints; 18.03 competition/inversion; 18.04 MetricResult/scoring/generator; Topic19 correlation-aware observed hierarchy.

Key boundary: 18.01 may consume a scalar called “weight” only through explicit owner-qualified lineage. It does not define what physical or perceptual phenomenon that scalar means.

The weight channel is opaque

02 / owner-qualified input
WeightChannelContract {
  weightChannelRef,
  weightSourceOwnerRef,
  unitRef,
  measurementContextRef
}

18.01 requires exact equality of all four.
No silent unit conversion.
No silent normalization.
No fallback from visualMass to size or contrast.
VALID

Same lineage

Same channel, unit and measurement context as the profile.

N_A

Different channel

Same numeric value under a different owner/channel is not comparable.

N_A

Different context

Same channel in a different frame/context cannot be silently reused.

Profiles are explicit and style-specific

03 / envelopes
RoleExample explicit envelopeUniversal?
PRIMARY[0.62, 0.90]No
SECONDARY[0.38, 0.68]No
TERTIARY[0.20, 0.48]No
DECORATIVE[0.08, 0.36]No
overlap between role envelopes → allowed non-monotonic role envelopes → allowed missing role envelope → allowed profile, N_A for that role min == max → valid exact envelope PRIMARY > SECONDARY numeric weight is NOT a universal law.

Observation evidence remains owner-qualified

04 / evidence
HierarchyWeightObservationEvidence {
  hierarchySubjectRef,
  weightChannelRef,
  unitRef,
  measurementContextRef,
  value,
  evidenceSourceRef,
  evidenceSourceOwnerRef,
  provenance,
  status,
  mutationAllowed: false
}
Important: the value may come from Compo4 or another explicit scalar owner. 18.01 only resolves and compares it to the selected envelope; it does not recompute the scalar.

Conflict is preserved

05 / resolution
One exact value

OK / CONSENSUS

Repeated same value

OK / deduped consensus

Different exact values

N_A / CONFLICT

Wrong lineage

N_A / LINEAGE_MISMATCH

NO averaging NO median NO confidence winner NO “latest evidence wins” NO lexical/source-order winner

Position is a descriptor, not a verdict

06 / observed relation
Observed valueEnvelope [0.40,0.70]Descriptor
0.30below minBELOW · belowBy=0.10
0.40exact minWITHIN
0.55insideWITHIN
0.70exact maxWITHIN
0.82above maxABOVE · aboveBy=0.12
BELOW != bad WITHIN != good ABOVE != bad belowBy / aboveBy / boundary distance != penalty != quality != hierarchy violation != score

Explicit subjects only

07 / selection
HierarchyWeightEnvelopeObservationPolicy {
  selectionMode: "EXPLICIT_SUBJECTS_ONLY",
  selectedHierarchySubjectRefs[],
  maxSubjects: 1..512,
  overflowPolicy: "N_A_NO_TRUNCATION",
  missingRoleEnvelopePolicy: "N_A",
  missingWeightEvidencePolicy: "N_A",
  conflictPolicy: "N_A_NO_GUESS",
  mutationAllowed: false
}
Forbidden: automatically evaluate every scene element, infer missing roles, invent missing envelopes, truncate overflow or fill missing weight with zero.

Zero, N_A and INVALID stay different

08 / status
CaseStatusMeaning
Valid weight = 0OKZero may be a real scalar if the foreign channel allows it.
No envelope for resolved roleN_AProfile does not declare the needed role envelope.
No exact-lineage observationN_AMissing evidence.
Conflicting exact-lineage observationsN_ACannot choose without guessing.
Malformed envelope min > maxINVALIDEnvelope contract itself is invalid.
Non-finite weight valueINVALIDEvidence is malformed.

Downstream remains separate

09 / owners
18.00Hierarchy roles, subjects, relations and SubordinationGraph.
18.01Explicit scalar weight envelopes and non-scoring position descriptors.
18.02Size / contrast / isolation constraints.
18.03Competition, inversion and subordination-violation detection.
18.04Correction, MetricResult, scoring and bounded generator.
Compo4Visual mass remains foreign-owned.
Compo13Dominance / focal ranking remains foreign-owned.
Topic19Multi-signal observed visual hierarchy remains foreign-owned.

No hidden visual hierarchy score

10 / firewalls
weight envelope != visual mass definition weight envelope != dominance target weight envelope != attention target weight envelope != size class weight envelope != aspect ratio WITHIN != hierarchy respected ABOVE subordinate != inversion by itself BELOW superior != violation by itself 18.01 owns_metrics = [] 18.01 independent numeric votes = 0 HierarchySystemSeed remains immutable attachment != root mutation

CANON → LAB → DATA → IDEAS

11 / mandatory hooks
IDEAS_REFS[]Perceived hierarchy and style-specific envelope studies.
DATA_CAPTURE[]Profile, channel lineage, observations and positions.
DEFERRED_SEMANTIC_INPUTS[]Constraints, competition and scoring stay downstream.
HUMAN_FEEDBACK_HOOKS[]Envelope/evidence corrections are preserved.
CONFLICT_PRIORITY_ASSUMPTIONS[]No confidence winner and no universal monotonic role order.
LAB_HOOKS[]Envelope overlap and declared-vs-perceived hierarchy studies.

18.01 regression suite

12 / deterministic tests

Tests cover explicit profile construction, role uniqueness, exact channel/unit/context lineage, inclusive boundaries, BELOW/WITHIN/ABOVE descriptors, evidence conflict preservation, partial role coverage, overflow N_A, immutable attachment, zero metrics and all key ownership firewalls.

Tests not run yet.

DATA FOR LAYOUT ENGINE

13 / machine contract
{
  "module": "Compo 18.01",
  "name": "weight_envelopes_by_hierarchy_level",
  "version": "1.0-canonical",
  "canonical_main_title": "Weight envelopes by hierarchy level",
  "topic": "18_СУБОРДИНАЦИЯ_И_ПОДЧИНЕНИЕ_ЭЛЕМЕНТОВ",
  "scope": "EXPLICIT_ROLE_SCOPED_WEIGHT_ENVELOPES_OVER_OWNER_QUALIFIED_SCALAR_WEIGHT_CHANNELS_WITH_NONSCORING_POSITION_DESCRIPTORS_ONLY",
  "main_topic_contract": {
    "topic_title": "Субординация и подчинение элементов",
    "topic_goal": "Строит subordination graph для primary/secondary/tertiary/decorative roles и отслеживает случаи, когда нижний уровень начинает визуально спорить с верхним.",
    "expected_output": "HierarchyRelation graph, subordination violations, correction requests",
    "planned_files": [
      "18.00 Subordination graph",
      "18.01 Weight envelopes by hierarchy level",
      "18.02 Contrast/size/isolation constraints",
      "18.03 Competition and inversion detection",
      "18.04 Correction, scoring and tests"
    ]
  },
  "ownership": {
    "owner": "Compo18.01",
    "owns": [
      "HierarchyWeightEnvelope",
      "HierarchyWeightEnvelopeProfile",
      "HierarchyWeightObservationEvidence adapter",
      "HierarchyWeightObservationResolution",
      "HierarchyWeightEnvelopePosition taxonomy",
      "HierarchyWeightEnvelopeDescriptor",
      "HierarchyWeightEnvelopeObservationPolicy",
      "HierarchyWeightEnvelopeObservationSet",
      "HierarchyWeightEnvelopeAttachment",
      "explicit role-to-envelope binding under an explicit owner-qualified scalar weight channel",
      "inclusive BELOW/WITHIN/ABOVE envelope-position descriptor",
      "identity/status/provenance rules for Topic18 hierarchy-weight-envelope layer",
      "non-mutating correction request for envelope / weight-evidence lineage"
    ],
    "does_not_own": [
      "HierarchyRole / HierarchySubject / HierarchyRelation / SubordinationGraph identity — Compo18.00",
      "raw visual mass measurement — Compo4",
      "dominance / focal ranking — Compo13",
      "attention factors — Compo13.01",
      "microdetail role envelopes — Topic15",
      "object-to-object scale differentiation — Topic16",
      "aspect ratio / part-to-whole proportional systems — Topic17",
      "size / contrast / isolation constraint semantics — Compo18.02",
      "competition / inversion / subordination violation detection — Compo18.03",
      "MetricResult ownership / scoring / bounded repair generation — Compo18.04",
      "multi-signal observed visual hierarchy and correlation handling — Topic19",
      "raw size/tone/color/isolation measurement",
      "semantic importance inference",
      "global balance",
      "final-layout ranking",
      "foreign geometry/style/semantic mutation"
    ]
  },
  "consumes": [
    "valid Compo18.00 HierarchySubject / role lineage",
    "valid Compo18.00 SubordinationGraph / HierarchySystemSeed lineage",
    "explicit owner-qualified scalar weight-channel identity",
    "explicit role-scoped weight envelope declarations",
    "owner-qualified scalar weight evidence",
    "explicit HierarchyWeightEnvelopeObservationPolicy"
  ],
  "provides": [
    "HierarchyWeightEnvelopeProfile",
    "HierarchyWeightObservationResolution[]",
    "HierarchyWeightEnvelopeDescriptor[]",
    "HierarchyWeightEnvelopeObservationSet",
    "HierarchyWeightEnvelopeAttachment",
    "Topic18.01 weight-envelope record"
  ],
  "owns_metrics": [],
  "metric_ownership_note": "18.01 classifies owner-qualified scalar weight observations relative to explicit role envelopes. BELOW/WITHIN/ABOVE and numeric boundary distances are descriptors, not MetricResults, quality scores or independent numeric votes.",
  "hierarchy_weight_envelope_position_taxonomy": {
    "BELOW": "Observed scalar weight is strictly below the explicit inclusive envelope minimum.",
    "WITHIN": "Observed scalar weight is inside the explicit inclusive envelope [min,max], including exact boundaries.",
    "ABOVE": "Observed scalar weight is strictly above the explicit inclusive envelope maximum."
  },
  "weight_channel_contract": {
    "weightChannelRef": "opaque scalar channel identity owned outside 18.01",
    "weightSourceOwnerRef": "canonical owner of the scalar observation semantics",
    "unitRef": "explicit unit/domain identity",
    "measurementContextRef": "explicit frame/context identity",
    "rules": [
      "18.01 does not define how scalar weight is measured",
      "18.01 does not normalize raw visual mass, size, contrast or isolation",
      "channel/unit/context equality is exact",
      "silent unit conversion is forbidden",
      "silent normalization is forbidden",
      "same numeric value under different channel/unit/context is not comparable"
    ]
  },
  "hierarchy_weight_envelope_schema": {
    "hierarchyWeightEnvelopeRef": "stable identity",
    "role": "PRIMARY|SECONDARY|TERTIARY|DECORATIVE",
    "minInclusive": "finite number",
    "maxInclusive": "finite number >= minInclusive",
    "weightChannelRef": "exact channel",
    "unitRef": "exact unit/domain",
    "measurementContextRef": "exact context",
    "envelopeSourceRef": "explicit source",
    "envelopeSourceOwnerRef": "source owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false
  },
  "hierarchy_weight_envelope_profile_schema": {
    "hierarchyWeightEnvelopeProfileRef": "stable identity",
    "scopeRef": "Topic18 scope",
    "subordinationGraphRef": "exact Compo18.00 graph",
    "selectionMode": "EXPLICIT_ONLY",
    "weightChannelRef": "single exact scalar channel for this profile",
    "unitRef": "single exact unit/domain",
    "measurementContextRef": "single exact context",
    "roleEnvelopes": "unique role envelopes[]; role coverage may be partial",
    "monotonicRoleOrderRequired": false,
    "profileSourceRef": "explicit source",
    "profileSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false,
    "firewall": "PRIMARY does not universally require a larger numeric weight than SECONDARY. Envelope ordering is style/profile specific and is never invented by 18.01."
  },
  "weight_observation_evidence_schema": {
    "hierarchyWeightObservationEvidenceRef": "stable identity",
    "scopeRef": "scope",
    "hierarchySubjectRef": "exact Compo18.00 subject",
    "weightChannelRef": "exact channel",
    "unitRef": "exact unit/domain",
    "measurementContextRef": "exact context",
    "value": "finite scalar",
    "evidenceSourceRef": "explicit source",
    "evidenceSourceOwnerRef": "owner",
    "provenance": "canonical provenance",
    "status": "OK|INVALID",
    "mutationAllowed": false
  },
  "weight_observation_resolution_schema": {
    "hierarchyWeightObservationResolutionRef": "stable identity",
    "hierarchySubjectRef": "subject",
    "evidenceRefs": "unique exact-lineage evidence refs",
    "value": "finite scalar or null",
    "status": "OK|N_A|INVALID",
    "reasonCode": "CONSENSUS|CONFLICT|MISSING_EVIDENCE|LINEAGE_MISMATCH|INVALID_EVIDENCE",
    "mutationAllowed": false,
    "firewall": "Conflicting exact-lineage values remain N_A. Confidence, serialization order, averaging or median cannot choose a winner."
  },
  "weight_envelope_descriptor_schema": {
    "hierarchyWeightEnvelopeDescriptorRef": "stable identity",
    "hierarchySubjectRef": "subject",
    "role": "resolved Compo18.00 role",
    "hierarchyWeightEnvelopeRef": "exact role envelope",
    "weightObservationResolutionRef": "exact resolution",
    "observedValue": "finite scalar or null",
    "position": "BELOW|WITHIN|ABOVE|null",
    "belowBy": "nonnegative descriptor or null",
    "aboveBy": "nonnegative descriptor or null",
    "distanceToNearestEnvelopeBoundary": "nonnegative descriptor or null",
    "status": "OK|N_A|INVALID",
    "reasonCode": "OBSERVED|ROLE_ENVELOPE_NOT_DECLARED|MISSING_EVIDENCE|LINEAGE_MISMATCH|CONFLICT|INVALID_EVIDENCE|INVALID_ENVELOPE",
    "score": null,
    "mutationAllowed": false
  },
  "observation_policy_schema": {
    "selectionMode": "EXPLICIT_SUBJECTS_ONLY",
    "selectedHierarchySubjectRefs": "explicit unique refs[]",
    "maxSubjects": "integer 1..512",
    "overflowPolicy": "N_A_NO_TRUNCATION",
    "missingRoleEnvelopePolicy": "N_A",
    "missingWeightEvidencePolicy": "N_A",
    "conflictPolicy": "N_A_NO_GUESS",
    "mutationAllowed": false
  },
  "critical_invariants": [
    "role comes only from Compo18.00",
    "weight channel semantics remain foreign-owned",
    "profile selection is explicit",
    "no universal default weight envelope",
    "no universal monotonic PRIMARY>SECONDARY>TERTIARY>DECORATIVE numeric ordering",
    "role envelopes may overlap",
    "role envelopes may be disjoint",
    "role coverage may be partial",
    "exact boundaries are WITHIN",
    "BELOW/WITHIN/ABOVE are descriptors, not scores",
    "belowBy/aboveBy/boundary distance are descriptors, not penalties",
    "farther outside != universally worse",
    "inside envelope != universally good",
    "outside envelope != hard reject",
    "same numeric weight on a different channel is not comparable",
    "silent unit/context conversion forbidden",
    "conflicting exact-lineage evidence => N_A",
    "N_A != 0",
    "INVALID != 0",
    "18.01 owns_metrics = []",
    "18.01 independent numeric votes = 0",
    "HierarchySystemSeed remains immutable",
    "attachment != root mutation",
    "descriptor != score",
    "local != global",
    "one metric = one owner",
    "module execution order != rule priority",
    "no universal beautyScore",
    "IDEA != CANON",
    "EXPERIMENT != CANON"
  ],
  "correction_request_schema": {
    "hierarchyWeightEnvelopeCorrectionRequestRef": "stable identity",
    "targetOwnerRef": "envelope declaration owner or scalar-weight evidence owner",
    "reasonCode": "ENVELOPE_MISSING|ENVELOPE_INVALID|CHANNEL_LINEAGE_WRONG|UNIT_LINEAGE_WRONG|CONTEXT_LINEAGE_WRONG|WEIGHT_EVIDENCE_MISSING|WEIGHT_EVIDENCE_CONFLICT|WEIGHT_EVIDENCE_INVALID|ROLE_LINEAGE_WRONG",
    "hierarchySubjectRef": "exact subject or null",
    "hierarchyWeightEnvelopeRef": "exact envelope or null",
    "evidenceRefs": "actual lineage refs",
    "suggestedAction": "non-mutating review request",
    "status": "OPEN|INVALID",
    "mutationAllowed": false
  },
  "deferred_downstream": {
    "18.02": [
      "size constraint profiles",
      "contrast constraint profiles",
      "isolation constraint profiles",
      "channel-specific constraint descriptors"
    ],
    "18.03": [
      "competition detection",
      "hierarchy inversion detection",
      "subordination violation descriptors",
      "cross-edge subordinate-vs-superior judgement"
    ],
    "18.04": [
      "MetricResult scoring",
      "local target composite",
      "correction scoring",
      "bounded deterministic repair candidates",
      "final Topic18 tests"
    ]
  },
  "foreign_ownership": {
    "Compo4": "visual mass measurement semantics",
    "Compo13": "dominance / focal ranking",
    "Compo13.01": "attention factors",
    "Topic15": "microdetail roles and microdetail role envelopes",
    "Topic16": "object-to-object scale differentiation",
    "Topic17": "aspect / part-to-whole proportions",
    "Compo18.00": "generic hierarchy role and graph identity",
    "Topic19": "multi-signal observed visual hierarchy / correlation handling",
    "foreign": "raw geometry, raw size/tone/color/isolation, semantic importance, global balance, final-layout ranking"
  },
  "IDEAS_REFS": [
    "IDEA-01 compare explicit role envelopes with human-perceived subordinate/support strength after Topic72",
    "IDEA-02 study style-specific non-monotonic hierarchy-weight envelopes",
    "IDEA-03 study overlap between adjacent role envelopes without assuming it is an error",
    "IDEA-04 collect owner-qualified scalar weight observations for future composition model",
    "IDEA-05 preserve reasons for human envelope/evidence corrections",
    "IDEA-06 expose machine-readable envelope lineage to website/workbench",
    "IDEA-07 keep graphics-for-post-text research separate"
  ],
  "DATA_CAPTURE": [
    "sceneRef",
    "scopeRef",
    "snapshotRef",
    "subordinationGraphRef",
    "hierarchySystemSeedRef",
    "hierarchyWeightEnvelopeProfileRef",
    "weightChannelRef",
    "weightSourceOwnerRef",
    "unitRef",
    "measurementContextRef",
    "roleEnvelopeRefs[]",
    "roleByEnvelope",
    "minInclusiveByEnvelope",
    "maxInclusiveByEnvelope",
    "selectedHierarchySubjectRefs[]",
    "weightEvidenceRefsBySubject",
    "weightResolutionRefBySubject",
    "observedWeightBySubject",
    "weightEnvelopeDescriptorRefBySubject",
    "positionBySubject",
    "belowBySubject",
    "aboveBySubject",
    "distanceToNearestEnvelopeBoundaryBySubject",
    "status",
    "reasonCode"
  ],
  "DEFERRED_SEMANTIC_INPUTS": [
    "18.02 size/contrast/isolation constraints",
    "18.03 competition/inversion/violation judgement",
    "18.04 desirability/scoring/correction generator",
    "Topic19 correlation-aware observed hierarchy",
    "global final-layout ranking"
  ],
  "HUMAN_FEEDBACK_HOOKS": [
    "correct role envelope bounds",
    "correct weight channel lineage",
    "correct unit/context lineage",
    "correct observed weight evidence",
    "mark expected overlap intentional",
    "mark missing role envelope intentional",
    "explain style-specific non-monotonic envelope ordering"
  ],
  "CONFLICT_PRIORITY_ASSUMPTIONS": [
    "evidence conflict is preserved, not confidence-resolved",
    "profile declaration order has no hierarchy priority",
    "role rank does not imply universal numeric weight ordering",
    "module execution order does not imply rule priority",
    "owner-qualified channel semantics outrank local naming guesses"
  ],
  "LAB_HOOKS": [
    "role-envelope overlap study",
    "declared-vs-perceived weight study",
    "style-specific envelope study",
    "cross-channel comparability study",
    "human correction reason taxonomy"
  ],
  "next_module": "Compo 18.02 — Contrast/size/isolation constraints",
  "hard_stop": "Do not implement 18.02 in this file."
}
VISITS / ...