Explicit cohort + explicit space + explicit sampling policy
Spatial descriptors, not hierarchy judgments
Point evidence
15.02 consumes owner-qualified anchor points without moving subjects or redefining geometry.
Density maps
Explicit group/frame/grid/window policies produce numeric distribution descriptors.
No desirability
owns_metrics=[]. Dense/sparse desirability and hierarchy damage wait for 15.04.
MicroDetailSpatialPointEvidence
MicroDetailSpatialPointEvidence {
microDetailSpatialPointEvidenceRef,
scopeRef,
microDetailCandidateRef,
subjectRef,
pointMethodRef,
coordinateFrameRef,
x,
y,
evidenceSourceRef,
evidenceSourceOwnerRef,
confidence,
provenance,
snapshotRef,
status,
mutationAllowed: false
}
Distribution cohorts are explicit
| Mode | Meaning |
|---|---|
| ALL_CANDIDATES | One exact cohort containing the full 15.00 candidate set. |
| BY_ROLE | One cohort per explicitly selected role; multi-role candidates may belong to multiple cohorts. |
| BY_FORM | One cohort per explicitly selected form kind. |
| EXPLICIT_SUBJECT_SET | One explicitly declared subject cohort. |
Даже ALL_CANDIDATES должен быть выбран explicit policy. Group size и group order не являются score/priority.
MicroDetailDensityReferenceFrame
MicroDetailDensityReferenceFrame {
microDetailDensityReferenceFrameRef,
scopeRef,
coordinateFrameRef,
frameOwnerRef,
minX,
maxX,
minY,
maxY,
frameSourceRef,
provenance,
snapshotRef,
status,
mutationAllowed: false
}
Grid resolution is policy
MicroDetailGridDensityPolicy {
microDetailGridDensityPolicyRef,
columns: 1..256,
rows: 1..256,
valueMode:
COUNT_PER_FRAME_AREA,
outOfFramePolicy:
N_A,
boundaryAssignment:
HALF_OPEN_LAST_CELL_CLOSED,
policySourceRef,
policySourceOwnerRef,
provenance,
status,
mutationAllowed: false
}
Grid resolution — это analysis policy. Более мелкая сетка не означает более точную «истину композиции».
Grid cell density
MicroDetailGridCellDensityDescriptor {
microDetailGridCellDensityDescriptorRef,
groupRef,
frameRef,
gridPolicyRef,
rowIndex,
columnIndex,
cellBounds,
candidateRefs[],
candidateCount,
cellArea,
countPerFrameArea,
status,
reasonCode,
mutationAllowed: false
}
MicroDetailDensityMap
MicroDetailDensityMap {
microDetailDensityMapRef,
microDetailDistributionGroupRef,
microDetailDensityReferenceFrameRef,
microDetailGridDensityPolicyRef,
cellDescriptorRefs[],
candidateCount,
assignedCandidateCount,
status,
reasonCode,
mutationAllowed: false
}
Карта описывает spatial frequency конкретной группы под конкретной сеткой. Она не кодирует importance, hierarchy pressure или visual salience.
Local window is explicit
MicroDetailLocalWindowDensityPolicy {
microDetailLocalWindowDensityPolicyRef,
halfWidth,
halfHeight,
includeSelf,
edgePolicy:
CLIP_TO_FRAME,
valueMode:
COUNT_PER_EFFECTIVE_AREA,
policySourceRef,
policySourceOwnerRef,
provenance,
status,
mutationAllowed: false
}
MicroDetailLocalDensityDescriptor
MicroDetailLocalDensityDescriptor {
microDetailLocalDensityDescriptorRef,
microDetailCandidateRef,
microDetailDistributionGroupRef,
microDetailDensityReferenceFrameRef,
microDetailLocalWindowDensityPolicyRef,
windowBounds,
effectiveBounds,
neighborCandidateRefs[],
neighborCount,
effectiveArea,
countPerEffectiveArea,
status,
reasonCode,
mutationAllowed: false
}
Nearest neighbor is geometry only
MicroDetailNearestNeighborDescriptor {
microDetailNearestNeighborDescriptorRef,
microDetailCandidateRef,
microDetailDistributionGroupRef,
nearestCandidateRef,
nearestDistance,
distanceMethod:
EUCLIDEAN_POINT_DISTANCE,
coordinateFrameRef,
status,
reasonCode,
mutationAllowed: false
}
Для группы из одного кандидата nearest neighbor = N_A. Это не «бесконечная разреженность» и не score.
Group distribution descriptor
MicroDetailDistributionDescriptor {
microDetailDistributionDescriptorRef,
microDetailDistributionGroupRef,
microDetailDensityMapRef,
localDensityDescriptorRefs[],
nearestNeighborDescriptorRefs[],
candidateCount,
centroidX,
centroidY,
spreadX,
spreadY,
status,
reasonCode,
mutationAllowed: false
}
MicroDetailDistributionSet
MicroDetailDistributionSet {
microDetailDistributionSetRef,
scopeRef,
microDetailCandidateSetRef,
microDetailDistributionGroupPolicyRef,
microDetailDensityReferenceFrameRef,
microDetailGridDensityPolicyRef,
microDetailLocalWindowDensityPolicyRef,
distributionDescriptorRefs[],
status,
reasonCode,
mutationAllowed: false
}
Set не владеет density desirability, target score, hierarchy score или global balance.
Attach, do not mutate 15.00 seeds
MicroDetailDescriptorDistributionAttachment {
microDetailDescriptorDistributionAttachmentRef,
microDetailDescriptorSeedRef,
microDetailLocalDensityDescriptorRefs[],
microDetailNearestNeighborDescriptorRefs[],
microDetailDistributionDescriptorRefs[],
status,
mutationAllowed: false
}
MicroDetailSystemDistributionAttachment {
microDetailSystemDistributionAttachmentRef,
microDetailSystemSeedRef,
microDetailDistributionSetRef,
descriptorAttachmentRefs[],
status,
mutationAllowed: false
}
Zero density and N_A are different
| Case | Result |
|---|---|
| Duplicate point evidence for candidate | N_A conflict; confidence does not win |
| Missing required candidate point | N_A |
| Coordinate-frame mismatch | N_A |
| Snapshot mismatch | N_A |
| Point outside explicit frame | N_A |
| Explicit empty group | OK empty group |
| Empty grid cell | OK + density 0 |
| Local window has zero neighbors | OK + density 0 |
| Single-candidate nearest neighbor | N_A |
Density is policy-relative
Dense is not noisy by definition
density→noise; high density→bad; low density→good; centroid→balance; nearest distance→spacing score; role density→role importance.
Explicit groups, explicit frame, explicit policies, owner-qualified points, numeric zero distinct from N_A, no hidden weighting, no scoring.
Topic15 ownership chain
| Owner | Canonical responsibility |
|---|---|
| 15.00 | Microdetail eligibility, taxonomy, candidate set and root seeds. |
| 15.01 | Size/contrast measurements and explicit role envelopes. |
| 15.02 | Explicit spatial groups, density maps, local density and nearest-neighbor descriptors. |
| 15.03 | Labels, legends and technical noise. |
| 15.04 | Target scoring, hierarchy-protection evaluation, generator and final tests. |
| Compo4 | Visual mass remains separate. |
| Compo13 / 13.01 | Dominance/attention remain separate. |
| Compo18 | Generic hierarchy/subordination remains separate. |
Correction routes to geometry/frame/policy owner
MicroDetailDistributionCorrectionRequest {
microDetailDistributionCorrectionRequestRef,
targetOwnerRef,
reasonCode,
subjectRef?,
groupKey?,
evidenceRefs[],
suggestedAction,
status,
mutationAllowed: false
}
CANON → LAB → DATA → IDEAS
Visual laboratory hook
15.02 regression suite
Tests cover point lineage, duplicate conflicts, explicit grouping, multi-role membership, frame/grid validation, row-major cell assignment, zero-vs-N_A semantics, clipped local windows, nearest neighbor, empty groups, deterministic distribution sets and immutable attachments.
DATA FOR LAYOUT ENGINE
{
"module": "Compo 15.02",
"name": "distribution_and_local_density",
"version": "1.0-canonical",
"canonical_main_title": "Distribution and local density",
"topic": "15_МАЛЫЕ_ФОРМЫ_АКЦЕНТЫ_И_МИКРОДЕТАЛИ",
"scope": "OWNER_QUALIFIED_MICRODETAIL_POSITION_ADAPTER_EXPLICIT_DISTRIBUTION_GROUPS_GRID_DENSITY_MAPS_LOCAL_WINDOW_DENSITY_AND_NONSCORING_SPATIAL_DISTRIBUTION_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.02",
"owns": [
"MicroDetailSpatialPointEvidence adapter",
"MicroDetailDistributionGroupMode taxonomy",
"MicroDetailDistributionGroupPolicy",
"MicroDetailDistributionGroup",
"MicroDetailDensityReferenceFrame",
"MicroDetailGridDensityPolicy",
"MicroDetailGridCellDensityDescriptor",
"MicroDetailDensityMap",
"MicroDetailLocalWindowDensityPolicy",
"MicroDetailLocalDensityDescriptor",
"MicroDetailNearestNeighborDescriptor",
"MicroDetailDistributionDescriptor",
"MicroDetailDistributionSet",
"MicroDetailDescriptorDistributionAttachment",
"MicroDetailSystemDistributionAttachment",
"same-frame/same-group/same-policy comparability contract",
"identity/status/provenance rules for Topic15 distribution-density layer",
"non-mutating correction request for spatial evidence / grouping / density policy"
],
"does_not_own": [
"microdetail eligibility / form / role taxonomy — Compo15.00",
"MicroDetailCandidateSet / descriptor seeds / system seed — Compo15.00",
"size / contrast measurements and role envelopes — Compo15.01",
"subject geometry / layout positions — upstream geometry owners",
"visual mass calculation — Compo4",
"dominance / focal ranking — Compo13",
"attention-factor scoring — Compo13.01",
"secondary-mass support — Topic14",
"generic hierarchy/subordination graph — Compo18",
"labels / legends / technical-noise evaluation — Compo15.03",
"semantic interpretation of labels/legends — semantic owner / Compo15.03 adapter",
"density desirability / target scoring — Compo15.04",
"hierarchy-damage evaluation — Compo15.04",
"generator / repair-candidate search — Compo15.04",
"global balance ownership",
"global hierarchy priority",
"foreign geometry mutation"
]
},
"consumes": [
"valid Compo15.00 MicroDetailCandidateSet",
"valid Compo15.00 MicroDetailDescriptorSeed[] / MicroDetailSystemSeed",
"owner-qualified subject anchor/point evidence from geometry owners",
"explicit density reference frame",
"explicit distribution grouping policy",
"explicit grid-density policy",
"explicit local-window-density policy"
],
"provides": [
"MicroDetailDistributionGroup[]",
"MicroDetailDensityMap[]",
"MicroDetailGridCellDensityDescriptor[]",
"MicroDetailLocalDensityDescriptor[]",
"MicroDetailNearestNeighborDescriptor[]",
"MicroDetailDistributionDescriptor[]",
"MicroDetailDistributionSet",
"descriptor/system distribution attachments",
"Topic15.02 observation record"
],
"owns_metrics": [],
"metric_ownership_note": "15.02 owns numeric spatial/density descriptors but no MetricResult, no density-desirability score, no hierarchy-damage score and no independent numeric vote.",
"spatial_point_evidence_schema": {
"microDetailSpatialPointEvidenceRef": "stable identity",
"scopeRef": "Topic15 scope",
"microDetailCandidateRef": "exact 15.00 candidate",
"subjectRef": "candidate subject",
"pointMethodRef": "explicit method that supplies the anchor point",
"coordinateFrameRef": "exact upstream coordinate frame",
"x": "finite coordinate in source frame",
"y": "finite coordinate in source frame",
"evidenceSourceRef": "explicit source",
"evidenceSourceOwnerRef": "geometry/position owner",
"confidence": "finite [0,1] source confidence only",
"provenance": "canonical provenance",
"snapshotRef": "exact observation snapshot",
"status": "OK|INVALID",
"mutationAllowed": false,
"firewall": "15.02 adapts the point; it does not move the subject, choose a better anchor automatically, or infer hierarchy from coordinates."
},
"distribution_group_mode_taxonomy": {
"ALL_CANDIDATES": "One group containing all eligible candidates in the exact candidate set.",
"BY_ROLE": "One group per explicitly selected declared role.",
"BY_FORM": "One group per explicitly selected form kind.",
"EXPLICIT_SUBJECT_SET": "One explicitly named subject set."
},
"distribution_group_policy_schema": {
"microDetailDistributionGroupPolicyRef": "stable identity",
"mode": "ALL_CANDIDATES|BY_ROLE|BY_FORM|EXPLICIT_SUBJECT_SET",
"selectedRoleKinds": "required non-empty for BY_ROLE, otherwise empty",
"selectedFormKinds": "required non-empty for BY_FORM, otherwise empty",
"explicitSubjectRefs": "required non-empty for EXPLICIT_SUBJECT_SET, otherwise empty",
"includeCandidateInMultipleGroups": "true for BY_ROLE multi-role semantics; false otherwise",
"policySourceRef": "explicit source",
"policySourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no implicit grouping policy",
"firewall": "Grouping selects observation cohorts only. Group identity/order is not priority and group size is not a score."
},
"distribution_group_schema": {
"microDetailDistributionGroupRef": "stable identity",
"scopeRef": "scope",
"microDetailCandidateSetRef": "exact candidate set",
"microDetailDistributionGroupPolicyRef": "policy",
"groupKey": "ALL|ROLE:<role>|FORM:<form>|EXPLICIT",
"roleKind": "role or null",
"formKind": "form or null",
"subjectRefs": "canonical unique subject refs",
"candidateRefs": "canonical unique candidate refs",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "A group may be empty under an explicit filter. Empty group is not density zero until a frame/policy calculation is performed."
},
"density_reference_frame_schema": {
"microDetailDensityReferenceFrameRef": "stable identity",
"scopeRef": "scope",
"coordinateFrameRef": "must match spatial point evidence",
"frameOwnerRef": "owner of the frame definition",
"minX": "finite",
"maxX": "finite > minX",
"minY": "finite",
"maxY": "finite > minY",
"frameSourceRef": "explicit source",
"provenance": "canonical provenance",
"snapshotRef": "exact snapshot lineage",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no automatic canvas/viewport/content bounding frame",
"firewall": "Frame defines the density domain only. It is not a safe zone, hierarchy region or preferred composition area."
},
"grid_density_policy_schema": {
"microDetailGridDensityPolicyRef": "stable identity",
"columns": "integer 1..256",
"rows": "integer 1..256",
"valueMode": "COUNT_PER_FRAME_AREA",
"outOfFramePolicy": "N_A",
"boundaryAssignment": "HALF_OPEN_LAST_CELL_CLOSED",
"policySourceRef": "explicit source",
"policySourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no universal grid resolution",
"firewall": "Grid resolution is an analysis policy, not a composition law. Cell density values are descriptors, not penalties."
},
"grid_cell_density_descriptor_schema": {
"microDetailGridCellDensityDescriptorRef": "stable identity",
"microDetailDistributionGroupRef": "group",
"microDetailDensityReferenceFrameRef": "frame",
"microDetailGridDensityPolicyRef": "policy",
"rowIndex": "0-based",
"columnIndex": "0-based",
"cellBounds": "exact rectangular bounds",
"candidateRefs": "candidate refs assigned to the cell",
"candidateCount": "integer >=0",
"cellArea": "positive area in frame coordinate units",
"countPerFrameArea": "candidateCount / cellArea",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "countPerFrameArea is a local observation density. Zero is a valid empty-cell value and is distinct from N_A."
},
"density_map_schema": {
"microDetailDensityMapRef": "stable identity",
"microDetailDistributionGroupRef": "group",
"microDetailDensityReferenceFrameRef": "frame",
"microDetailGridDensityPolicyRef": "policy",
"cellDescriptorRefs": "rows*columns descriptors in canonical row-major serialization",
"candidateCount": "group candidate count",
"assignedCandidateCount": "must equal candidateCount for OK map",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Density map is a sampled descriptor of one explicit group/frame/policy. It is not a universal heatmap of visual importance."
},
"local_window_density_policy_schema": {
"microDetailLocalWindowDensityPolicyRef": "stable identity",
"halfWidth": "finite >0 in frame coordinate units",
"halfHeight": "finite >0 in frame coordinate units",
"includeSelf": "boolean explicit",
"edgePolicy": "CLIP_TO_FRAME",
"valueMode": "COUNT_PER_EFFECTIVE_AREA",
"policySourceRef": "explicit source",
"policySourceOwnerRef": "owner",
"provenance": "canonical provenance",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no universal neighborhood size",
"firewall": "Window size is an analysis policy, not a perceptual law or global density threshold."
},
"local_density_descriptor_schema": {
"microDetailLocalDensityDescriptorRef": "stable identity",
"microDetailCandidateRef": "candidate",
"microDetailDistributionGroupRef": "group",
"microDetailDensityReferenceFrameRef": "frame",
"microDetailLocalWindowDensityPolicyRef": "policy",
"windowBounds": "candidate-centered raw window",
"effectiveBounds": "window clipped to frame",
"neighborCandidateRefs": "refs counted under policy",
"neighborCount": "integer >=0",
"effectiveArea": "positive area",
"countPerEffectiveArea": "neighborCount / effectiveArea",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Local density is numeric descriptor only. High density is not automatically bad; low density is not automatically good."
},
"nearest_neighbor_descriptor_schema": {
"microDetailNearestNeighborDescriptorRef": "stable identity",
"microDetailCandidateRef": "candidate",
"microDetailDistributionGroupRef": "group",
"nearestCandidateRef": "nearest other candidate or null",
"nearestDistance": "finite >=0 or null",
"distanceMethod": "EUCLIDEAN_POINT_DISTANCE",
"coordinateFrameRef": "exact frame",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Nearest-neighbor distance is geometry descriptor only. It is not spacing quality, density score or hierarchy pressure."
},
"distribution_descriptor_schema": {
"microDetailDistributionDescriptorRef": "stable identity",
"microDetailDistributionGroupRef": "group",
"microDetailDensityMapRef": "map",
"localDensityDescriptorRefs": "one per group candidate",
"nearestNeighborDescriptorRefs": "one per group candidate",
"candidateCount": "group candidate count",
"centroidX": "mean x or null for empty group",
"centroidY": "mean y or null for empty group",
"spreadX": "population standard deviation x or null for empty group",
"spreadY": "population standard deviation y or null for empty group",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Centroid/spread/count/density are observations. They do not state whether the distribution is balanced, clustered appropriately or hierarchy-safe."
},
"distribution_set_schema": {
"microDetailDistributionSetRef": "stable identity",
"scopeRef": "scope",
"microDetailCandidateSetRef": "15.00 candidate set",
"microDetailDistributionGroupPolicyRef": "group policy",
"microDetailDensityReferenceFrameRef": "frame",
"microDetailGridDensityPolicyRef": "grid policy",
"microDetailLocalWindowDensityPolicyRef": "local window policy",
"distributionDescriptorRefs": "one per generated group",
"status": "OK|N_A|INVALID",
"reasonCode": "explicit",
"mutationAllowed": false,
"firewall": "Set owns no density desirability, no target score, no hierarchy score, no global balance judgment and no independent vote."
},
"descriptor_attachment_schema": {
"microDetailDescriptorDistributionAttachmentRef": "stable identity",
"microDetailDescriptorSeedRef": "exact 15.00 seed",
"microDetailLocalDensityDescriptorRefs": "all group-local density descriptors involving the candidate",
"microDetailNearestNeighborDescriptorRefs": "all group nearest-neighbor descriptors involving the candidate",
"microDetailDistributionDescriptorRefs": "groups containing the candidate",
"status": "OK",
"mutationAllowed": false,
"firewall": "Derived attachment never mutates distributionDensityAttachmentRef on the 15.00 descriptor seed."
},
"system_attachment_schema": {
"microDetailSystemDistributionAttachmentRef": "stable identity",
"microDetailSystemSeedRef": "exact 15.00 system seed",
"microDetailDistributionSetRef": "15.02 set",
"descriptorAttachmentRefs": "canonical attachments",
"status": "OK",
"mutationAllowed": false,
"firewall": "Derived attachment never mutates distributionDensitySetAttachmentRef on the 15.00 system seed."
},
"status_policy": {
"invalidSpatialEvidence": "INVALID",
"duplicatePointEvidenceForCandidate": "N_A conflict; confidence does not choose a winner",
"missingPointEvidenceForRequiredCandidate": "N_A",
"coordinateFrameMismatch": "N_A",
"snapshotMismatch": "N_A",
"pointOutsideFrame": "N_A",
"emptyExplicitGroup": "OK empty group",
"gridMapEmptyGroup": "OK map with all zero-valued cells",
"localDensityZeroNeighbors": "OK + numeric zero",
"nearestNeighborSingleCandidateGroup": "N_A",
"distributionEmptyGroup": "OK with null centroid/spread",
"N_A_not_zero": true
},
"comparability_contract": {
"requires": [
"same MicroDetailDistributionGroupPolicyRef",
"same groupKey semantics",
"same MicroDetailDensityReferenceFrameRef",
"same MicroDetailGridDensityPolicyRef for map values",
"same MicroDetailLocalWindowDensityPolicyRef for local-density values",
"same pointMethodRef",
"same coordinateFrameRef",
"compatible snapshot lineage"
],
"forbids": [
"comparing raw density values across different frame areas/policies as universal density",
"comparing local-window density across different window sizes as the same metric",
"treating role-group density as candidate priority",
"treating cell density as visual importance",
"treating nearest-neighbor distance as spacing quality",
"using group serialization order as rule priority"
]
},
"critical_firewalls": [
"15.02 consumes explicit Compo15.00 candidates only",
"15.02 does not redefine microdetail eligibility",
"position evidence != microdetail eligibility",
"position evidence != hierarchy rank",
"position evidence != focal rank",
"coordinate frame must be explicit",
"density reference frame must be explicit",
"no automatic canvas density frame",
"no automatic viewport density frame",
"no automatic content-bounds density frame",
"point method must be explicit",
"point method != preferred placement",
"density group policy must be explicit",
"no implicit ALL_CANDIDATES group",
"multi-role BY_ROLE candidate may belong to multiple groups",
"multi-group membership != duplicate candidate identity",
"group order != priority",
"group size != score",
"candidate count != density by itself",
"empty group != N_A",
"empty density cell = numeric 0, not N_A",
"zero local neighbors = numeric 0, not N_A",
"N_A != 0",
"INVALID != 0",
"grid resolution must be explicit",
"no universal density grid",
"no universal local-density window",
"no universal microdetail density threshold",
"grid cell density != density desirability",
"local density != density desirability",
"high local density != automatically bad",
"low local density != automatically good",
"high cell density != automatically noisy",
"low cell density != automatically sparse enough",
"nearest-neighbor distance != spacing quality",
"nearest-neighbor distance != hierarchy pressure",
"centroid != balance center",
"distribution centroid != optical center",
"spread != balance score",
"spread != hierarchy safety",
"density map != attention heatmap",
"density map != visual importance map",
"density map != hierarchy map",
"role density != role priority",
"technical-mark density != technical noise",
"annotation density != label clutter",
"decorative density != decoration quality",
"repeating-unit density != rhythm quality",
"density map does not use 15.01 size/contrast as implicit weights",
"no implicit visual-mass weighting",
"no implicit attention weighting",
"no implicit role weighting",
"no density desirability score in 15.02",
"no hierarchy-damage score in 15.02",
"no labels/legends/noise evaluation in 15.02",
"no target profile scoring in 15.02",
"no generator in 15.02",
"15.02 owns no MetricResult",
"15.02 owns no independent numeric vote",
"microdetail role ownership remains Compo15.00",
"size/contrast envelope ownership remains Compo15.01",
"visual mass ownership remains Compo4",
"dominance ownership remains Compo13",
"attention-factor ownership remains Compo13.01",
"secondary-mass support ownership remains Topic14",
"generic hierarchy/subordination graph remains Compo18 territory",
"descriptor attachment != seed mutation",
"system attachment != seed mutation",
"correction request != foreign mutation",
"local != global",
"geometry != interpretation",
"descriptor != score",
"heuristic != law",
"one metric = one owner",
"module execution order != rule priority",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"identity_policy": {
"microDetailSpatialPointEvidenceRef": "hash(scope, candidate, subject, point method, coordinate frame, x/y, source/owner, confidence, provenance, snapshot, status)",
"microDetailDistributionGroupPolicyRef": "hash(mode, selected roles/forms/subjects, multiple-group flag, source/owner, provenance, status)",
"microDetailDistributionGroupRef": "hash(scope, candidate set, policy, group key, role/form, canonical candidate/subject refs, status)",
"microDetailDensityReferenceFrameRef": "hash(scope, coordinate frame, owner, bounds, source, provenance, snapshot, status)",
"microDetailGridDensityPolicyRef": "hash(cols/rows, value mode, boundary/out-of-frame policies, source/owner, provenance, status)",
"microDetailGridCellDensityDescriptorRef": "hash(group, frame, grid policy, row/col, bounds, candidate refs/count, area, density, status)",
"microDetailDensityMapRef": "hash(group, frame, grid policy, row-major cell refs, candidate counts, status)",
"microDetailLocalWindowDensityPolicyRef": "hash(halfWidth/halfHeight, includeSelf, edge/value policies, source/owner, provenance, status)",
"microDetailLocalDensityDescriptorRef": "hash(candidate, group, frame, local policy, raw/effective bounds, neighbor refs/count, area, density, status)",
"microDetailNearestNeighborDescriptorRef": "hash(candidate, group, nearest candidate, distance, method, frame, status)",
"microDetailDistributionDescriptorRef": "hash(group, map, local refs, nearest refs, count, centroid/spread, status)",
"microDetailDistributionSetRef": "hash(scope, candidate set, group/frame/grid/local policies, distribution refs, status)",
"microDetailDescriptorDistributionAttachmentRef": "hash(descriptor seed, local/nearest/distribution refs)",
"microDetailSystemDistributionAttachmentRef": "hash(system seed, distribution set, descriptor attachments)",
"excluded_from_identity": [
"display color",
"heatmap color ramp",
"UI rendering interpolation",
"free-form comment"
]
},
"correction_request_schema": {
"microDetailDistributionCorrectionRequestRef": "stable identity",
"targetOwnerRef": "position owner / frame owner / grouping policy owner / density-policy owner",
"reasonCode": "POINT_WRONG|POINT_METHOD_WRONG|COORDINATE_FRAME_WRONG|DENSITY_FRAME_WRONG|GROUP_POLICY_WRONG|ROLE_GROUP_WRONG|FORM_GROUP_WRONG|EXPLICIT_SUBJECT_SET_WRONG|GRID_RESOLUTION_WRONG|LOCAL_WINDOW_WRONG|DUPLICATE_POINT_CONFLICT",
"subjectRef": "subject or null for policy/frame issue",
"groupKey": "group or null",
"evidenceRefs": "canonical refs",
"suggestedAction": "non-mutating review request",
"status": "OPEN|INVALID",
"mutationAllowed": false
},
"deferred_downstream": {
"15.03": [
"labels and legends classification",
"technical-mark overload / technical noise descriptors",
"annotation clutter/noise interpretation",
"semantic importance adapters for labels and legends"
],
"15.04": [
"explicit density desirability targets",
"hierarchy-protection target profile",
"component/composite MetricResult scoring",
"generator / bounded repair candidates",
"final Topic15 regression tests"
]
},
"IDEAS_REFS": [
"IDEA-01 full human test after all 72 topics; compare explicit density descriptors with human dense/sparse judgments without prelabeling desirability",
"IDEA-02 semantics needed before placement; label/legend/technical-noise interpretation remains deferred to 15.03",
"IDEA-03 explicit rule priorities; group/policy/module order never becomes hidden priority",
"IDEA-04 collect structured density-map/local-density 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[]",
"microDetailSpatialPointEvidenceRefs[]",
"pointMethodRefByCandidate",
"coordinateFrameRefByCandidate",
"pointXYByCandidate",
"pointOwnerByCandidate",
"duplicatePointConflicts[]",
"microDetailDistributionGroupPolicyRef",
"distributionGroupMode",
"selectedRoleKinds[]",
"selectedFormKinds[]",
"explicitSubjectRefs[]",
"microDetailDistributionGroupRefs[]",
"groupKeyByRef",
"candidateRefsByGroup",
"microDetailDensityReferenceFrameRef",
"densityFrameBounds",
"microDetailGridDensityPolicyRef",
"gridRows",
"gridColumns",
"microDetailGridCellDensityDescriptorRefs[]",
"cellCandidateCountByGroupCell",
"cellDensityByGroupCell",
"microDetailDensityMapRefs[]",
"microDetailLocalWindowDensityPolicyRef",
"localWindowHalfWidth",
"localWindowHalfHeight",
"localIncludeSelf",
"microDetailLocalDensityDescriptorRefs[]",
"localNeighborCountByCandidateGroup",
"localDensityByCandidateGroup",
"microDetailNearestNeighborDescriptorRefs[]",
"nearestDistanceByCandidateGroup",
"microDetailDistributionDescriptorRefs[]",
"centroidByGroup",
"spreadByGroup",
"microDetailDistributionSetRef",
"descriptorAttachmentRefs[]",
"systemAttachmentRef",
"humanReasonCodes[]",
"futureNoiseDescriptorRefs[]",
"futureMetricResultRefs[]"
],
"DEFERRED_SEMANTIC_INPUTS": [
"whether high or low density is desirable",
"whether a dense technical-mark region should count as noise",
"whether annotation clustering harms readability",
"whether decorative clustering supports or hurts style",
"whether repeating-unit density supports rhythm",
"desired regional density targets",
"hierarchy-damage tolerance",
"global hierarchy priority",
"final microdetail target profile"
],
"HUMAN_FEEDBACK_HOOKS": [
"POINT_WRONG",
"POINT_METHOD_WRONG",
"COORDINATE_FRAME_WRONG",
"DENSITY_FRAME_WRONG",
"FRAME_SHOULD_BE_LARGER",
"FRAME_SHOULD_BE_SMALLER",
"GROUP_POLICY_WRONG",
"ROLE_GROUP_MISSING",
"ROLE_GROUP_UNNECESSARY",
"FORM_GROUP_MISSING",
"EXPLICIT_SUBJECT_GROUP_WRONG",
"GRID_TOO_COARSE",
"GRID_TOO_FINE",
"LOCAL_WINDOW_TOO_SMALL",
"LOCAL_WINDOW_TOO_LARGE",
"INCLUDE_SELF_SHOULD_CHANGE",
"DENSITY_VALUE_LOOKS_WRONG",
"EDGE_CLIPPING_LOOKS_WRONG",
"NEAREST_NEIGHBOR_LOOKS_WRONG",
"DENSE_BUT_ACCEPTABLE",
"SPARSE_BUT_UNACCEPTABLE",
"DENSITY_MAP_NOT_IMPORTANCE",
"TECHNICAL_DENSITY_SHOULD_BE_NOISE_LATER",
"REPEATING_DENSITY_SHOULD_BE_RHYTHM_LATER",
"DUPLICATE_POINT_IS_REAL_CONFLICT",
"DUPLICATE_POINT_SHOULD_RESOLVE"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"module execution order is not priority",
"group serialization order is not role priority",
"grid-cell order is not visual priority",
"point confidence is not density priority",
"role membership count is not density weight",
"size/contrast evidence is not implicit density weight",
"high density and low density have no desirability ordering in 15.02",
"future reviewed global conflict-priority owner remains authoritative"
],
"LAB_HOOKS": [
"human study: dense/sparse perception under fixed explicit window policy",
"human study: sensitivity to grid resolution without presenting density as quality",
"compare local window density with nearest-neighbor distance",
"collect edge cases where clipping changes local density substantially",
"collect multi-role candidates included in multiple role groups",
"collect cases with dense technical marks that are still functionally acceptable",
"collect cases with sparse microdetails that still damage hierarchy",
"compare group-specific and all-candidate density maps",
"study stability across explicit coordinate/reference frames"
],
"observation_record": {
"moduleRef": "Compo15.02",
"metricResults": [],
"futureMicroDetailEvaluationRefs": []
},
"stop_condition": "STOP after 15.02. Do not create 15.03 in this module."
}