Observed scalar + explicit role envelope
Envelopes, not scores
Measurements
Numeric size/contrast evidence remains owner-qualified. 15.01 validates and binds, not re-measures.
Role envelopes
Explicit channel ranges and categorical fit states per declared role.
No scoring yet
owns_metrics=[]. Hierarchy damage and target scoring remain 15.04.
Measurement channels
| Family | Channel | Domain |
|---|---|---|
| SIZE | VISIBLE_AREA_RATIO | [0,+∞) |
| SIZE | BBOX_AREA_RATIO_PROXY | [0,+∞) |
| SIZE | MAX_EXTENT_RATIO | [0,+∞) |
| SIZE | MIN_EXTENT_RATIO | [0,+∞) |
| SIZE | TEXT_EM_HEIGHT_RATIO | [0,+∞) |
| SIZE | STROKE_WIDTH_RATIO | [0,+∞) |
| SIZE | EXPLICIT_SIZE_RESPONSE | [0,1] |
| CONTRAST | LOCAL_LUMINANCE_CONTRAST | [0,+∞) |
| CONTRAST | LOCAL_COLOR_DELTA | [0,+∞) |
| CONTRAST | LOCAL_EDGE_CONTRAST | [0,+∞) |
| CONTRAST | EXPLICIT_CONTRAST_RESPONSE | [0,1] |
BBOX_AREA_RATIO_PROXY != VISIBLE_AREA_RATIO. Luminance, color and edge contrast remain separate methods.
MicroDetailMeasurementEvidence
MicroDetailMeasurementEvidence {
microDetailMeasurementEvidenceRef,
scopeRef,
microDetailCandidateRef,
subjectRef,
family:
SIZE | CONTRAST,
channelKey,
value,
unit,
measurementMethodRef,
referenceContextRef,
responseContextRef?,
evidenceSourceRef,
evidenceSourceOwnerRef,
confidence,
provenance,
snapshotRef,
status,
mutationAllowed: false
}
One exact scalar per candidate/channel
MicroDetailMeasurementSet {
microDetailMeasurementSetRef,
scopeRef,
microDetailCandidateSetRef,
measurementEvidenceRefs[],
measurementIndex {},
status,
reasonCode,
mutationAllowed: false
}
Explicit inclusive bounds
MicroDetailEnvelopeRangeConstraint {
family,
channelKey,
minInclusive?,
maxInclusive?,
measurementMethodRef,
referenceContextRef,
responseContextRef?
}
MicroDetailRoleEnvelope
MicroDetailRoleEnvelope {
microDetailRoleEnvelopeRef,
roleKind,
formApplicabilityMode:
ALL_FORMS | EXPLICIT_FORMS,
applicableFormKinds[],
sizeConstraints[],
contrastConstraints[],
envelopeSourceRef,
envelopeSourceOwnerRef,
provenance,
status,
mutationAllowed: false
}
Envelope может отличаться для MICRO_ACCENT, TECHNICAL_MARK, DECORATIVE_MICROFORM и других ролей. Это явная profile data, а не закон композиции.
MicroDetailRoleEnvelopeProfile
MicroDetailRoleEnvelopeProfile {
microDetailRoleEnvelopeProfileRef,
profileSourceRef,
profileSourceOwnerRef,
envelopes[],
roleCoverageMode:
MATCH_DECLARED_ROLES_WITH_AVAILABLE_ENVELOPES,
multipleEnvelopePerRolePolicy:
FORBID,
unprofiledDeclaredRolePolicy:
NO_ENVELOPE_NOT_ERROR,
provenance,
status,
mutationAllowed: false
}
Если у multi-role candidate есть несколько профилированных ролей, применяются все соответствующие envelope contracts. Их порядок не создаёт приоритет и не превращается в веса.
Binding is applicability, not satisfaction
MicroDetailRoleEnvelopeBinding {
microDetailRoleEnvelopeBindingRef,
microDetailCandidateRef,
subjectRef,
roleKind,
microDetailRoleEnvelopeRef,
microDetailRoleEnvelopeProfileRef,
formKind,
status,
reasonCode,
mutationAllowed: false
}
Categorical channel fit
| State | Meaning |
|---|---|
| WITHIN | Value is inside inclusive explicit bounds. |
| BELOW | Value is below explicit min. |
| ABOVE | Value is above explicit max. |
| N_A | Exact measurement/method/reference context unavailable or ambiguous. |
| INVALID | Measurement or constraint contract invalid. |
Role envelope fit
MicroDetailRoleEnvelopeFitDescriptor {
microDetailRoleEnvelopeFitDescriptorRef,
microDetailRoleEnvelopeBindingRef,
channelFitRefs[],
fitState:
WITHIN_ALL
| OUTSIDE_ONE_OR_MORE
| N_A
| INVALID,
status,
reasonCode,
mutationAllowed: false
}
Multi-role candidates keep all applicable roles
MicroDetailCandidateEnvelopeFitDescriptor {
microDetailCandidateEnvelopeFitDescriptorRef,
microDetailCandidateRef,
microDetailRoleEnvelopeProfileRef,
roleEnvelopeFitRefs[],
declaredRoleKinds[],
profiledRoleKinds[],
fitState:
WITHIN_ALL_APPLICABLE
| OUTSIDE_ONE_OR_MORE
| NO_APPLICABLE_ENVELOPE
| N_A
| INVALID,
status,
reasonCode,
mutationAllowed: false
}
NO_APPLICABLE_ENVELOPE не означает ни успех, ни провал. Непрофилированная роль также не считается автоматически satisfied/failed.
MicroDetailSizeContrastSet
MicroDetailSizeContrastSet {
microDetailSizeContrastSetRef,
scopeRef,
microDetailCandidateSetRef,
microDetailMeasurementSetRef,
microDetailRoleEnvelopeProfileRef,
candidateFitRefs[],
status,
reasonCode,
mutationAllowed: false
}
Set не содержит density map, hierarchy score, ranking или independent vote.
Derived attachments, immutable 15.00 seeds
MicroDetailDescriptorSizeContrastAttachment {
microDetailDescriptorSizeContrastAttachmentRef,
microDetailDescriptorSeedRef,
microDetailCandidateEnvelopeFitDescriptorRef,
microDetailMeasurementEvidenceRefs[],
status,
mutationAllowed: false
}
MicroDetailSystemSizeContrastAttachment {
microDetailSystemSizeContrastAttachmentRef,
microDetailSystemSeedRef,
microDetailSizeContrastSetRef,
descriptorAttachmentRefs[],
status,
mutationAllowed: false
}
Missing exact evidence stays N_A
| Case | Result |
|---|---|
| Duplicate same candidate/channel evidence | N_A conflict; no confidence winner |
| Missing exact channel | N_A |
| Method mismatch | N_A |
| Reference-context mismatch | N_A |
| Response-context mismatch | N_A |
| Inside bounds | OK + WITHIN |
| Below min | OK + BELOW |
| Above max | OK + ABOVE |
| Candidate has no applicable role envelope | OK + NO_APPLICABLE_ENVELOPE |
Method and reference identity matter
Envelope violation is not a score
small→valid; large→invalid; high contrast→accent; WITHIN→1; BELOW/ABOVE→penalty; unprofiled role→pass; candidate fit→hierarchy-safe.
Explicit measurements, exact methods/references, explicit role envelopes, multi-role preservation, N_A semantics, no density/noise/scoring.
Topic15 ownership chain
| Owner | Canonical role |
|---|---|
| 15.00 | Microdetail eligibility, form/role taxonomy, candidates and root seeds. |
| 15.01 | Owner-qualified size/contrast observations, explicit role envelopes and categorical fit. |
| 15.02 | Distribution and local density. |
| 15.03 | Labels, legends and technical noise. |
| 15.04 | Generator, hierarchy-protection scoring and final tests. |
| Compo4 | Visual mass remains separate from size channels. |
| Compo13 / 13.01 | Dominance and attention interpretation remain separate. |
| Compo18 | Generic hierarchy graph remains separate. |
Correction routes back to source/profile owner
MicroDetailSizeContrastCorrectionRequest {
microDetailSizeContrastCorrectionRequestRef,
targetOwnerRef,
reasonCode,
subjectRef?,
roleKind?,
channelKey?,
evidenceRefs[],
suggestedAction,
status,
mutationAllowed: false
}
CANON → LAB → DATA → IDEAS
Visual laboratory hook
15.01 regression suite
Tests cover measurement domains, normalized response contexts, duplicate-channel conflicts, exact method/reference matching, role/form applicability, multi-role candidates, inclusive bounds, N_A propagation, immutable attachments and strict deferral of density/noise/scoring.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 15.01",
"name": "size_contrast_envelopes",
"version": "1.0-canonical",
"canonical_main_title": "Size/contrast envelopes",
"topic": "15_МАЛЫЕ_ФОРМЫ_АКЦЕНТЫ_И_МИКРОДЕТАЛИ",
"scope": "OWNER_QUALIFIED_SIZE_CONTRAST_MEASUREMENT_ADAPTERS_EXPLICIT_ROLE_ENVELOPES_BINDING_AND_NONSCORING_ENVELOPE_FIT_DESCRIPTORS_ONLY",
"main_topic_contract": {
"topic_title": "Малые формы, акценты и микродетали",
"topic_goal": "Управляет микродеталями, technical marks и мелкими акцентами: их плотностью, контрастом, размером и вкладом без разрушения основной иерархии.",
"expected_output": "MicroDetailDescriptor[], density maps, role envelopes",
"planned_files": [
"15.00 Microdetail taxonomy and roles",
"15.01 Size/contrast envelopes",
"15.02 Distribution and local density",
"15.03 Labels, legends, technical noise",
"15.04 Generator, scoring and tests"
]
},
"ownership": {
"owner": "Compo15.01",
"owns": [
"MicroDetailSizeChannel taxonomy",
"MicroDetailContrastChannel taxonomy",
"MicroDetailMeasurementEvidence adapter",
"MicroDetailMeasurementSet",
"MicroDetailEnvelopeRangeConstraint",
"MicroDetailRoleEnvelope",
"MicroDetailRoleEnvelopeProfile",
"MicroDetailRoleEnvelopeBinding",
"MicroDetailEnvelopeChannelFitState taxonomy",
"MicroDetailEnvelopeChannelFitDescriptor",
"MicroDetailRoleEnvelopeFitDescriptor",
"MicroDetailCandidateEnvelopeFitDescriptor",
"MicroDetailSizeContrastSet",
"MicroDetailDescriptorSizeContrastAttachment",
"MicroDetailSystemSizeContrastAttachment",
"same-method/reference/profile comparability contract",
"identity/status/provenance rules for Topic15 size/contrast layer",
"non-mutating correction request for size/contrast measurements or role-envelope policy"
],
"does_not_own": [
"microdetail eligibility / form / role taxonomy — Compo15.00",
"MicroDetailCandidateSet / descriptor seeds / system seed — Compo15.00",
"subject geometry / bounding boxes / positions — upstream geometry owners",
"visual mass calculation — Compo4",
"attention factor interpretation — Compo13.01",
"dominance / focal ranking — Compo13",
"secondary-mass support — Topic14",
"generic hierarchy/subordination graph — Compo18",
"distribution / local density / density maps — Compo15.02",
"labels / legends / technical-noise evaluation — Compo15.03",
"semantic interpretation of labels/legends — semantic owner / Compo15.03 adapter",
"hierarchy damage evaluation — Compo15.04",
"target scoring / MetricResult ownership — Compo15.04",
"generator / repair-candidate search — Compo15.04",
"global hierarchy priority",
"global balance ownership",
"foreign geometry/style mutation"
]
},
"consumes": [
"valid Compo15.00 MicroDetailCandidateSet",
"valid Compo15.00 MicroDetailDescriptorSeed[] / MicroDetailSystemSeed",
"owner-qualified size measurements from geometry/typography/feature owners",
"owner-qualified contrast measurements from appearance/feature owners",
"explicit MicroDetailRoleEnvelopeProfile"
],
"provides": [
"MicroDetailMeasurementSet",
"MicroDetailRoleEnvelopeProfile",
"MicroDetailRoleEnvelopeBinding[]",
"MicroDetailEnvelopeChannelFitDescriptor[]",
"MicroDetailRoleEnvelopeFitDescriptor[]",
"MicroDetailCandidateEnvelopeFitDescriptor[]",
"MicroDetailSizeContrastSet",
"descriptor/system size-contrast attachments",
"Topic15.01 observation record"
],
"owns_metrics": [],
"metric_ownership_note": "15.01 owns numeric observations and categorical envelope-fit descriptors, but no MetricResult, no support/hierarchy score, no target-fit score and no independent numeric vote.",
"size_channel_taxonomy": {
"VISIBLE_AREA_RATIO": "Owner-qualified visible-area ratio to an explicit reference area. No universal maximum.",
"BBOX_AREA_RATIO_PROXY": "Owner-qualified bbox-area proxy ratio to an explicit reference area. Proxy must not be treated as visible area.",
"MAX_EXTENT_RATIO": "Owner-qualified maximum subject extent relative to an explicit reference extent.",
"MIN_EXTENT_RATIO": "Owner-qualified minimum subject extent relative to an explicit reference extent.",
"TEXT_EM_HEIGHT_RATIO": "Owner-qualified text em-height relative to an explicit reference extent; typography owner remains authoritative.",
"STROKE_WIDTH_RATIO": "Owner-qualified stroke/line width relative to an explicit reference extent.",
"EXPLICIT_SIZE_RESPONSE": "Owner-defined normalized size response with explicit responseContextRef and domain [0,1]."
},
"contrast_channel_taxonomy": {
"LOCAL_LUMINANCE_CONTRAST": "Owner-qualified local luminance contrast against an explicit reference neighborhood.",
"LOCAL_COLOR_DELTA": "Owner-qualified local color-difference response against an explicit reference neighborhood.",
"LOCAL_EDGE_CONTRAST": "Owner-qualified local edge/structural contrast response against an explicit reference neighborhood.",
"EXPLICIT_CONTRAST_RESPONSE": "Owner-defined normalized contrast response with explicit responseContextRef and domain [0,1]."
},
"measurement_evidence_schema": {
"microDetailMeasurementEvidenceRef": "stable identity",
"scopeRef": "Topic15 scope",
"microDetailCandidateRef": "exact 15.00 candidate",
"subjectRef": "candidate subject",
"family": "SIZE|CONTRAST",
"channelKey": "one channel from the matching taxonomy",
"value": "finite numeric",
"unit": "RATIO|NORMALIZED_RESPONSE",
"measurementMethodRef": "explicit source method",
"referenceContextRef": "explicit geometric/local contrast/reference context",
"responseContextRef": "required for EXPLICIT_*_RESPONSE, otherwise null",
"evidenceSourceRef": "explicit measurement source",
"evidenceSourceOwnerRef": "canonical owner",
"confidence": "finite [0,1] source confidence only",
"provenance": "canonical provenance",
"snapshotRef": "exact observation snapshot",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "15.01 adapts the scalar; it does not recompute geometry, typography, appearance or attention."
},
"measurement_domain_contract": {
"SIZE_NONNEGATIVE_CHANNELS": [
"VISIBLE_AREA_RATIO",
"BBOX_AREA_RATIO_PROXY",
"MAX_EXTENT_RATIO",
"MIN_EXTENT_RATIO",
"TEXT_EM_HEIGHT_RATIO",
"STROKE_WIDTH_RATIO"
],
"SIZE_NORMALIZED_CHANNELS": [
"EXPLICIT_SIZE_RESPONSE"
],
"CONTRAST_NONNEGATIVE_CHANNELS": [
"LOCAL_LUMINANCE_CONTRAST",
"LOCAL_COLOR_DELTA",
"LOCAL_EDGE_CONTRAST"
],
"CONTRAST_NORMALIZED_CHANNELS": [
"EXPLICIT_CONTRAST_RESPONSE"
],
"nonnegative_domain": "[0,+∞)",
"normalized_domain": "[0,1]",
"firewall": "Numeric domains validate data shape only. They are not desirability thresholds."
},
"measurement_set_schema": {
"microDetailMeasurementSetRef": "stable identity",
"scopeRef": "scope",
"microDetailCandidateSetRef": "exact 15.00 set",
"measurementEvidenceRefs": "canonical unique refs",
"measurementIndex": "candidateRef -> family/channel -> exact evidence ref",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"duplicate_policy": "more than one evidence item for the same candidate+family+channel is CONFLICT/N_A in v1; confidence does not pick a winner",
"firewall": "Missing channel stays missing. No implicit fallback from bbox to visible area, size to mass, or one contrast method to another."
},
"envelope_range_constraint_schema": {
"channelKey": "exact size/contrast channel",
"family": "SIZE|CONTRAST",
"minInclusive": "finite or null",
"maxInclusive": "finite or null",
"measurementMethodRef": "required exact method identity",
"referenceContextRef": "required exact reference context",
"responseContextRef": "required exact response context for EXPLICIT_*_RESPONSE, otherwise null",
"atLeastOneBoundRequired": true,
"firewall": "Bounds are explicit profile data. No universal microdetail threshold exists."
},
"role_envelope_schema": {
"microDetailRoleEnvelopeRef": "stable identity",
"roleKind": "one explicit Compo15.00 role except UNSPECIFIED",
"formApplicabilityMode": "ALL_FORMS|EXPLICIT_FORMS",
"applicableFormKinds": "empty when ALL_FORMS; explicit non-empty unique set otherwise",
"sizeConstraints": "unique channel constraints",
"contrastConstraints": "unique channel constraints",
"atLeastOneConstraintRequired": true,
"envelopeSourceRef": "explicit source",
"envelopeSourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "A role envelope is an explicit admissible range contract, not a score, perceptual law or proof of hierarchy safety."
},
"role_envelope_profile_schema": {
"microDetailRoleEnvelopeProfileRef": "stable identity",
"profileSourceRef": "explicit source",
"profileSourceOwnerRef": "owner",
"envelopes": "non-empty canonical set",
"roleCoverageMode": "MATCH_DECLARED_ROLES_WITH_AVAILABLE_ENVELOPES",
"multipleEnvelopePerRolePolicy": "FORBID in v1",
"unprofiledDeclaredRolePolicy": "NO_ENVELOPE_NOT_ERROR",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no implicit role envelope profile",
"firewall": "Profile order is serialization only. Role order is not priority."
},
"role_envelope_binding_schema": {
"microDetailRoleEnvelopeBindingRef": "stable identity",
"microDetailCandidateRef": "candidate",
"subjectRef": "subject",
"roleKind": "declared candidate role",
"microDetailRoleEnvelopeRef": "exact envelope",
"microDetailRoleEnvelopeProfileRef": "profile",
"formKind": "candidate form",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Binding means profile applicability only. It does not mean the candidate is inside the envelope."
},
"channel_fit_state_taxonomy": {
"WITHIN": "Observed value is inside the explicit inclusive bounds.",
"BELOW": "Observed value is below explicit minInclusive.",
"ABOVE": "Observed value is above explicit maxInclusive.",
"N_A": "Required exact measurement/method/reference is unavailable or ambiguous.",
"INVALID": "Evidence/constraint contract is invalid."
},
"channel_fit_descriptor_schema": {
"microDetailEnvelopeChannelFitDescriptorRef": "stable identity",
"microDetailRoleEnvelopeBindingRef": "binding",
"microDetailMeasurementEvidenceRef": "exact measurement or null for N_A",
"family": "SIZE|CONTRAST",
"channelKey": "constraint channel",
"observedValue": "numeric or null",
"minInclusive": "copied bound",
"maxInclusive": "copied bound",
"fitState": "WITHIN|BELOW|ABOVE|N_A|INVALID",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"dependsOn": "exact candidate/envelope/measurement lineage",
"mutationAllowed": false,
"firewall": "Fit state is categorical descriptor only. BELOW/ABOVE are not penalties and WITHIN is not score 1."
},
"role_envelope_fit_schema": {
"microDetailRoleEnvelopeFitDescriptorRef": "stable identity",
"microDetailRoleEnvelopeBindingRef": "binding",
"channelFitRefs": "all size/contrast channel fits",
"fitState": "WITHIN_ALL|OUTSIDE_ONE_OR_MORE|N_A|INVALID",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Role fit aggregates categorical completeness only; it owns no numeric score and no cross-role priority."
},
"candidate_envelope_fit_schema": {
"microDetailCandidateEnvelopeFitDescriptorRef": "stable identity",
"microDetailCandidateRef": "candidate",
"microDetailRoleEnvelopeProfileRef": "profile",
"roleEnvelopeFitRefs": "one per applicable declared role envelope",
"declaredRoleKinds": "candidate roles",
"profiledRoleKinds": "roles that found applicable envelopes",
"fitState": "WITHIN_ALL_APPLICABLE|OUTSIDE_ONE_OR_MORE|NO_APPLICABLE_ENVELOPE|N_A|INVALID",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Candidate fit does not collapse unprofiled roles into success/failure and does not convert multiple roles into a weighted score."
},
"size_contrast_set_schema": {
"microDetailSizeContrastSetRef": "stable identity",
"scopeRef": "scope",
"microDetailCandidateSetRef": "15.00 candidate set",
"microDetailMeasurementSetRef": "measurement set",
"microDetailRoleEnvelopeProfileRef": "explicit profile",
"candidateFitRefs": "one per candidate",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Set owns no density, no hierarchy damage score, no candidate ranking and no independent vote."
},
"descriptor_attachment_schema": {
"microDetailDescriptorSizeContrastAttachmentRef": "stable identity",
"microDetailDescriptorSeedRef": "exact 15.00 seed",
"microDetailCandidateEnvelopeFitDescriptorRef": "15.01 descriptor",
"microDetailMeasurementEvidenceRefs": "used candidate measurements",
"status": "OK",
"mutationAllowed": false,
"firewall": "Derived attachment never mutates sizeContrastEnvelopeAttachmentRef on the 15.00 seed."
},
"system_attachment_schema": {
"microDetailSystemSizeContrastAttachmentRef": "stable identity",
"microDetailSystemSeedRef": "exact 15.00 system seed",
"microDetailSizeContrastSetRef": "15.01 set",
"descriptorAttachmentRefs": "canonical attachments",
"status": "OK",
"mutationAllowed": false,
"firewall": "Derived attachment never mutates sizeContrastEnvelopeSetAttachmentRef on the 15.00 system seed."
},
"status_policy": {
"invalidMeasurementEvidence": "INVALID",
"duplicateSameChannelEvidence": "N_A conflict; no confidence winner",
"missingExactMeasurementForConstraint": "N_A",
"methodMismatch": "N_A",
"referenceContextMismatch": "N_A",
"responseContextMismatch": "N_A",
"withinBounds": "OK + WITHIN",
"belowMin": "OK + BELOW",
"aboveMax": "OK + ABOVE",
"roleFitAnyInvalid": "INVALID",
"roleFitAnyNA": "N_A",
"roleFitAnyOutside": "OK + OUTSIDE_ONE_OR_MORE",
"roleFitAllWithin": "OK + WITHIN_ALL",
"candidateNoApplicableEnvelope": "OK + NO_APPLICABLE_ENVELOPE",
"candidateFitAnyInvalid": "INVALID",
"candidateFitAnyNA": "N_A",
"candidateFitAnyOutside": "OK + OUTSIDE_ONE_OR_MORE",
"candidateFitAllApplicableWithin": "OK + WITHIN_ALL_APPLICABLE",
"N_A_not_zero": true
},
"comparability_contract": {
"requires": [
"same channelKey",
"same measurementMethodRef",
"same referenceContextRef",
"same responseContextRef when applicable",
"same MicroDetailRoleEnvelopeProfileRef",
"compatible snapshot lineage"
],
"forbids": [
"comparing bbox proxy as visible-area truth",
"comparing different contrast methods as the same scalar",
"cross-profile envelope-fit ranking",
"using role order as priority",
"using confidence as fit severity",
"treating WITHIN as universal quality"
]
},
"critical_firewalls": [
"15.01 consumes explicit Compo15.00 candidates only",
"size measurement != microdetail eligibility",
"contrast measurement != microdetail eligibility",
"small observed size != automatically valid microdetail",
"large observed size != automatically invalid microdetail",
"high contrast != automatically micro accent",
"low contrast != automatically support detail",
"size channel != visual mass",
"BBOX_AREA_RATIO_PROXY != VISIBLE_AREA_RATIO",
"text em height != bbox extent",
"stroke width != element size",
"contrast channel methods are not interchangeable",
"LOCAL_LUMINANCE_CONTRAST != LOCAL_COLOR_DELTA",
"LOCAL_COLOR_DELTA != LOCAL_EDGE_CONTRAST",
"EXPLICIT_SIZE_RESPONSE requires explicit response context",
"EXPLICIT_CONTRAST_RESPONSE requires explicit response context",
"measurement confidence != desirability",
"measurement confidence != fit severity",
"measurement confidence cannot resolve duplicate channel conflict",
"role envelope must be explicit",
"no universal microdetail size threshold",
"no universal microdetail contrast threshold",
"no universal role envelope",
"no implicit equal envelope across roles",
"role envelope != score",
"role envelope != hierarchy-safety proof",
"role envelope order != role priority",
"multi-role candidate keeps all applicable envelopes",
"multi-role candidate fit is not weighted by role count",
"unprofiled declared role != satisfied role",
"unprofiled declared role != failed role",
"binding != satisfaction",
"WITHIN != score 1",
"BELOW != numeric penalty",
"ABOVE != numeric penalty",
"OUTSIDE_ONE_OR_MORE != hard reject",
"NO_APPLICABLE_ENVELOPE != score 0",
"N_A != BELOW",
"N_A != ABOVE",
"N_A != 0",
"INVALID != 0",
"missing measurement != zero",
"method mismatch => N_A, not zero",
"reference mismatch => N_A, not zero",
"response-context mismatch => N_A, not zero",
"candidate fit != MetricResult",
"candidate fit != hierarchy-damage score",
"candidate fit != global quality",
"candidate count != density",
"measurement count != density",
"no density map in 15.01",
"no local density score in 15.01",
"no label/legend/noise evaluation in 15.01",
"no microdetail target score in 15.01",
"no generator in 15.01",
"15.01 owns no MetricResult",
"15.01 owns no independent numeric vote",
"microdetail role ownership remains Compo15.00",
"visual mass ownership remains Compo4",
"attention factor interpretation remains Compo13.01",
"dominance ownership remains Compo13",
"secondary-mass support ownership remains Topic14",
"generic hierarchy/subordination graph remains Compo18 territory",
"hierarchy protection binding remains Compo15.00 adapter",
"descriptor attachment != seed mutation",
"system attachment != seed mutation",
"local != global",
"geometry != interpretation",
"descriptor != score",
"heuristic != law",
"one metric = one owner",
"module execution order != rule priority",
"correction request != foreign mutation",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"identity_policy": {
"microDetailMeasurementEvidenceRef": "hash(scope, candidate, subject, family/channel, value/unit, method/reference/response contexts, source/owner, confidence, provenance, snapshot, status)",
"microDetailMeasurementSetRef": "hash(scope, candidate set, canonical measurement refs/index, status)",
"microDetailRoleEnvelopeRef": "hash(role, form applicability, canonical constraints, source/owner, provenance, status)",
"microDetailRoleEnvelopeProfileRef": "hash(source/owner, canonical envelope refs, coverage policies, provenance, status)",
"microDetailRoleEnvelopeBindingRef": "hash(candidate, subject, role, envelope, profile, form, status)",
"microDetailEnvelopeChannelFitDescriptorRef": "hash(binding, measurement, family/channel, observed value, bounds, fit state, status, lineage)",
"microDetailRoleEnvelopeFitDescriptorRef": "hash(binding, canonical channel fits, fit state, status)",
"microDetailCandidateEnvelopeFitDescriptorRef": "hash(candidate, profile, role fits, declared/profiled roles, fit state, status)",
"microDetailSizeContrastSetRef": "hash(scope, candidate set, measurement set, profile, candidate fits, status)",
"microDetailDescriptorSizeContrastAttachmentRef": "hash(descriptor seed, candidate fit, used measurement refs)",
"microDetailSystemSizeContrastAttachmentRef": "hash(system seed, size-contrast set, descriptor attachments)",
"excluded_from_identity": [
"display label",
"display color",
"free-form comment",
"serialization order where canonical sets are defined"
]
},
"correction_request_schema": {
"microDetailSizeContrastCorrectionRequestRef": "stable identity",
"targetOwnerRef": "measurement owner or envelope-profile owner",
"reasonCode": "SIZE_MEASUREMENT_WRONG|CONTRAST_MEASUREMENT_WRONG|METHOD_REF_WRONG|REFERENCE_CONTEXT_WRONG|RESPONSE_CONTEXT_WRONG|ROLE_ENVELOPE_WRONG|SIZE_BOUND_WRONG|CONTRAST_BOUND_WRONG|FORM_APPLICABILITY_WRONG|DUPLICATE_MEASUREMENT_CONFLICT",
"subjectRef": "subject or null for profile issue",
"roleKind": "role or null",
"channelKey": "channel or null",
"evidenceRefs": "canonical refs",
"suggestedAction": "non-mutating review request",
"status": "OPEN|INVALID",
"mutationAllowed": false
},
"deferred_downstream": {
"15.02": [
"distribution descriptors",
"local density calculation",
"density maps",
"regional density envelopes",
"spacing/clustering descriptors"
],
"15.03": [
"labels and legends classification",
"technical-mark overload",
"technical noise descriptors",
"annotation readability/noise relations"
],
"15.04": [
"explicit hierarchy-protection target profile",
"component/composite scoring",
"MetricResult ownership",
"generator / bounded repair candidates",
"final Topic15 regression tests"
]
},
"IDEAS_REFS": [
"IDEA-01 full human test after all 72 topics; compare role-specific size/contrast envelope violations with human hierarchy judgments",
"IDEA-02 semantics needed before placement; role identity comes from 15.00 and label/legend meaning remains deferred to 15.03",
"IDEA-03 explicit rule priorities; envelope/role order never becomes hidden global priority",
"IDEA-04 collect structured data for future composition model",
"IDEA-05 preserve reasons for human corrections",
"IDEA-06 structured machine-readable layer for website",
"IDEA-07 graphics-for-post-text research remains downstream/separate"
],
"DATA_CAPTURE": [
"sceneRef",
"scopeRef",
"snapshotRef",
"microDetailCandidateSetRef",
"microDetailCandidateRefs[]",
"microDetailMeasurementEvidenceRefs[]",
"measurementFamilyByRef",
"measurementChannelByRef",
"measurementValueByRef",
"measurementMethodRefByEvidence",
"referenceContextRefByEvidence",
"responseContextRefByEvidence",
"measurementOwnerByEvidence",
"microDetailMeasurementSetRef",
"duplicateMeasurementConflicts[]",
"microDetailRoleEnvelopeProfileRef",
"microDetailRoleEnvelopeRefs[]",
"roleEnvelopeByRole",
"sizeConstraintsByRole",
"contrastConstraintsByRole",
"formApplicabilityByRole",
"microDetailRoleEnvelopeBindingRefs[]",
"microDetailEnvelopeChannelFitDescriptorRefs[]",
"channelFitStateByCandidateRoleChannel",
"microDetailRoleEnvelopeFitDescriptorRefs[]",
"roleFitStateByCandidateRole",
"microDetailCandidateEnvelopeFitDescriptorRefs[]",
"candidateFitStateBySubject",
"profiledRoleKindsBySubject",
"unprofiledRoleKindsBySubject",
"microDetailSizeContrastSetRef",
"descriptorAttachmentRefs[]",
"systemAttachmentRef",
"humanReasonCodes[]",
"futureDensityRefs[]",
"futureNoiseRefs[]",
"futureMetricResultRefs[]"
],
"DEFERRED_SEMANTIC_INPUTS": [
"whether an envelope violation should be penalized",
"whether a role envelope is appropriate for a specific style",
"hierarchy-damage tolerance",
"desired local density by region/role",
"whether technical marks are necessary or noisy",
"label/legend semantic importance",
"global hierarchy priority",
"final microdetail target profile"
],
"HUMAN_FEEDBACK_HOOKS": [
"SIZE_MEASUREMENT_WRONG",
"SIZE_METHOD_WRONG",
"SIZE_REFERENCE_WRONG",
"CONTRAST_MEASUREMENT_WRONG",
"CONTRAST_METHOD_WRONG",
"CONTRAST_REFERENCE_WRONG",
"NORMALIZED_RESPONSE_CONTEXT_WRONG",
"BBOX_PROXY_SHOULD_NOT_BE_USED",
"VISIBLE_AREA_MEASURE_NEEDED",
"ROLE_ENVELOPE_TOO_TIGHT",
"ROLE_ENVELOPE_TOO_LOOSE",
"SIZE_MIN_TOO_HIGH",
"SIZE_MAX_TOO_LOW",
"CONTRAST_MIN_TOO_HIGH",
"CONTRAST_MAX_TOO_LOW",
"FORM_APPLICABILITY_WRONG",
"ROLE_SHOULD_HAVE_NO_ENVELOPE",
"ROLE_NEEDS_ENVELOPE",
"MULTIROLE_ENVELOPES_CONFLICT_PERCEPTUALLY",
"WITHIN_ENVELOPE_STILL_HARMS_HIERARCHY",
"OUTSIDE_ENVELOPE_STILL_LOOKS_CORRECT",
"UNPROFILED_ROLE_SHOULD_BE_PROFILED",
"DUPLICATE_MEASUREMENT_IS_REAL_CONFLICT",
"DUPLICATE_MEASUREMENT_SHOULD_RESOLVE"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"module execution order is not priority",
"measurement confidence is not fit priority",
"role-envelope order is not role priority",
"candidate order is not visual priority",
"multiple declared roles remain co-applicable unless a later explicit target contract says otherwise",
"envelope violation direction is not severity ranking",
"future reviewed global conflict-priority owner remains authoritative"
],
"LAB_HOOKS": [
"human study: acceptable size envelopes by declared microdetail role",
"human study: acceptable contrast envelopes by declared microdetail role",
"compare visible-area and bbox-proxy judgments",
"compare luminance/color/edge contrast channels without treating them as interchangeable",
"collect multi-role candidates whose envelopes conflict perceptually",
"collect cases within envelope that still damage hierarchy",
"collect cases outside envelope that remain visually acceptable",
"measure whether envelope judgments shift by form kind",
"evaluate stability of normalized response contexts across scenes"
],
"observation_record": {
"moduleRef": "Compo15.01",
"metricResults": [],
"futureMicroDetailEvaluationRefs": []
},
"stop_condition": "STOP after 15.01. Do not create 15.02 in this module."
}