Envelope after role, before judgement
Envelope semantics only
18.01
Role-scoped envelope declarations, explicit scalar-channel lineage, evidence resolution, BELOW/WITHIN/ABOVE descriptors and immutable downstream attachment.
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.
The weight channel is opaque
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.
Same lineage
Same channel, unit and measurement context as the profile.
Different channel
Same numeric value under a different owner/channel is not comparable.
Different context
Same channel in a different frame/context cannot be silently reused.
Profiles are explicit and style-specific
| Role | Example explicit envelope | Universal? |
|---|---|---|
| PRIMARY | [0.62, 0.90] | No |
| SECONDARY | [0.38, 0.68] | No |
| TERTIARY | [0.20, 0.48] | No |
| DECORATIVE | [0.08, 0.36] | No |
Observation evidence remains owner-qualified
HierarchyWeightObservationEvidence {
hierarchySubjectRef,
weightChannelRef,
unitRef,
measurementContextRef,
value,
evidenceSourceRef,
evidenceSourceOwnerRef,
provenance,
status,
mutationAllowed: false
}
Conflict is preserved
OK / CONSENSUS
OK / deduped consensus
N_A / CONFLICT
N_A / LINEAGE_MISMATCH
Position is a descriptor, not a verdict
| Observed value | Envelope [0.40,0.70] | Descriptor |
|---|---|---|
| 0.30 | below min | BELOW · belowBy=0.10 |
| 0.40 | exact min | WITHIN |
| 0.55 | inside | WITHIN |
| 0.70 | exact max | WITHIN |
| 0.82 | above max | ABOVE · aboveBy=0.12 |
Explicit subjects only
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
}
Zero, N_A and INVALID stay different
| Case | Status | Meaning |
|---|---|---|
| Valid weight = 0 | OK | Zero may be a real scalar if the foreign channel allows it. |
| No envelope for resolved role | N_A | Profile does not declare the needed role envelope. |
| No exact-lineage observation | N_A | Missing evidence. |
| Conflicting exact-lineage observations | N_A | Cannot choose without guessing. |
| Malformed envelope min > max | INVALID | Envelope contract itself is invalid. |
| Non-finite weight value | INVALID | Evidence is malformed. |
Downstream remains separate
| 18.00 | Hierarchy roles, subjects, relations and SubordinationGraph. |
| 18.01 | Explicit scalar weight envelopes and non-scoring position descriptors. |
| 18.02 | Size / contrast / isolation constraints. |
| 18.03 | Competition, inversion and subordination-violation detection. |
| 18.04 | Correction, MetricResult, scoring and bounded generator. |
| Compo4 | Visual mass remains foreign-owned. |
| Compo13 | Dominance / focal ranking remains foreign-owned. |
| Topic19 | Multi-signal observed visual hierarchy remains foreign-owned. |
No hidden visual hierarchy score
CANON → LAB → DATA → IDEAS
18.01 regression suite
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.
DATA FOR LAYOUT ENGINE
{
"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."
}