Region поверх Cell, а не вместо Cell
9.02 группирует atomic CellRefs и добавляет constraint evidence. Atomic lattice 9.01 остаётся неизменной.
Complete rectangular block.
Explicit cell set + connectivity policy.
Constraint, not occupancy.
Membership всегда explicit
Region нельзя вывести из близости, цвета или одинакового контента.
RegionSpec {
regionSpecRef,
regionKind:
MERGED_CELL |
CELL_REGION,
cellSetRef,
memberCellRefs[],
connectivityPolicy,
footprintModel:
CELL_UNION |
SPAN_ENVELOPE,
semanticRoleRef?,
confidence,
provenance
}
Rectangular completeness
Merge — это полный rectangular index block без дыр и без лишних atomic cells.
Explicit topology policy
Generic region не обязан быть прямоугольным.
ORTHOGONALLY_CONNECTED
Один connected component по TOP/RIGHT/BOTTOM/LEFT.
ANY_EXPLICIT_SET
Разрешает disconnected membership без утверждения единого контура.
Union и envelope сохраняются раздельно
FootprintModel задаётся явно; membership от него не меняется.
CELL_UNION
Union atomic Cell rectangles. Internal gutters/row gaps исключены.
SPAN_ENVELOPE
Outer bounding rectangle. Может покрывать spacing bands между members.
Merge exclusivity локальна
Overlap semantics различаются по kind.
Constraint ≠ occupancy
Forbidden declaration говорит «сюда нельзя размещать», но ничего не говорит о текущей занятости.
ForbiddenDeclaration {
declarationRef,
declarationKind:
FORBID_CELL |
FORBID_REGION,
cellSetRef,
cellRef?,
regionSetRef?,
regionRef?,
sourceOwnerRef,
sourceEvidenceRef,
reasonCode?,
status:
ACTIVE |
INACTIVE,
confidence,
provenance
}
Три разных смысла
Отсутствие запрета не превращается в FREE.
Expand exact versioned membership
Region declaration запрещает только member CellRefs указанной Region version.
No hidden precedence
Baseline 9.02 объединяет только запреты.
Region ≠ occupancy ≠ scoring
9.02 заканчивается на topology/geometry/constraint evidence.
| Question | Owner |
|---|---|
| Atomic Cell identity/address? | 9.01 |
| Region/merge/forbidden? | 9.02 |
| Occupied/free/collision/reflow? | 9.03 |
| Placement candidates? | 9.03 |
| Variants/scoring? | 9.04 |
| ColumnGrid node occupancy? | 8.02 |
Membership changes propagate
Region/constraint updates invalidируют downstream evidence, но не мутируют content.
Topology не голосует
Rectangularity/connectivity/memberCount/forbiddenCount — descriptors.
Visual Lab
Показываем merge, generic region и forbidden constraint как разные слои.
9.02 region/forbidden regression
Проверяем merge rectangularity, generic connectivity, overlaps, footprints, forbidden expansion, N/A semantics и ownership barriers.
DATA FOR LAYOUT ENGINE
Machine-readable 9.02 contract.
{
"module": "Compo 9.02",
"name": "merged_cells_regions_forbidden_cells",
"version": "1.0-canonical",
"canonical_main_title": "Merged cells, regions, forbidden cells",
"topic": "09_МОДУЛЬНАЯ_СЕТКА_КОЛОНКИ_И_РЯДЫ",
"scope": "REGION_IDENTITY_MERGED_CELL_RECTANGULARITY_REGION_GEOMETRY_AND_FORBIDDEN_CONSTRAINT_REGISTRY",
"review_basis": {
"public_MAIN": "9.02 exact title confirmed",
"public_Core_0.00": "canonical public Core link could not be opened; no Core content invented",
"previous_module": "Compo9.01 atomic Cell[] + addressing",
"related_owners_reviewed": [
"Compo9.00 ModularGrid root/rows",
"Compo9.01 CellSet/CellRef/neighbor topology",
"Compo8.02 ColumnGrid node occupancy"
]
},
"consumes": [
"Compo9.00.ModularGrid",
"Compo9.01.CellSet",
"Compo9.01.Cell[] or lazy address resolver",
"explicit RegionSpec[]",
"optional explicit ForbiddenGridRegistrySpec"
],
"provides": [
"RegionSpec",
"Region",
"Region[]",
"RegionSet",
"RegionTopologyDescriptor",
"RegionGeometryDescriptor",
"ForbiddenDeclaration",
"ForbiddenGridRegistrySpec",
"ForbiddenCellState[]",
"ForbiddenGridRegistry",
"RegionInvalidationRequest"
],
"owns_metrics": [],
"descriptors_only": [
"grid.modular.region.memberCount",
"grid.modular.region.rowSpanCount",
"grid.modular.region.columnSpanCount",
"grid.modular.region.rectangularity",
"grid.modular.region.connectedComponentCount",
"grid.modular.region.outerEnvelope",
"grid.modular.region.footprintModel",
"grid.modular.forbidden.activeDeclarationCount",
"grid.modular.forbidden.forbiddenCellCount"
],
"region_spec_schema": {
"regionSpecRef": "stable explicit ref",
"regionKind": "MERGED_CELL|CELL_REGION",
"cellSetRef": "exact Compo9.01 CellSet lineage",
"memberCellRefs": "explicit unique non-empty CellRef[]",
"connectivityPolicy": "RECTANGULAR_BLOCK for MERGED_CELL; ORTHOGONALLY_CONNECTED|ANY_EXPLICIT_SET for CELL_REGION",
"footprintModel": "CELL_UNION|SPAN_ENVELOPE",
"semanticRoleRef": "optional external role ref; no role inference",
"confidence": "0..1",
"provenance": "STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET"
},
"region_schema": {
"regionRef": "region:<regionSetRef>:<regionSpecRef>",
"regionSetRef": "parent RegionSet",
"regionSpecRef": "source explicit spec",
"regionKind": "MERGED_CELL|CELL_REGION",
"cellSetRef": "same CellSet",
"memberCellRefs": "canonical row-major order",
"memberCount": "integer >=1; MERGED_CELL >=2",
"rowStart": "minimum member rowIndex",
"rowEndExclusive": "max rowIndex +1",
"columnStart": "minimum member columnIndex",
"columnEndExclusive": "max columnIndex +1",
"rowSpanCount": "rowEndExclusive-rowStart",
"columnSpanCount": "columnEndExclusive-columnStart",
"rectangularity": "RECTANGULAR_COMPLETE|NON_RECTANGULAR",
"connectedComponentCount": "orthogonal lattice components",
"connectivity": "CONNECTED|DISCONNECTED",
"memberCellUnion": "ordered list of atomic rectangles; gutters/gaps excluded",
"outerEnvelope": "min/max member bounds; may include internal gaps/gutters",
"footprintModel": "explicit CELL_UNION|SPAN_ENVELOPE",
"effectiveFootprint": "derived descriptor according to footprintModel",
"status": "OK",
"confidence": "0..1",
"provenance": "DERIVED",
"occupancy": "not owned",
"score": "not owned"
},
"merged_cell_semantics": {
"required_kind": "MERGED_CELL",
"member_count_min": 2,
"required_connectivity": "RECTANGULAR_BLOCK",
"expected_membership": "all CellRefs inside inclusive/exclusive row/column bounds",
"holes": "INVALID",
"extra_cells": "INVALID",
"same_region_set_overlap": "FORBIDDEN between MERGED_CELL regions",
"atomic_cell_identity": "preserved; merge creates Region identity rather than replacing member CellRefs"
},
"cell_region_semantics": {
"member_count_min": 1,
"ORTHOGONALLY_CONNECTED": "one component under TOP/RIGHT/BOTTOM/LEFT adjacency",
"ANY_EXPLICIT_SET": "one or more components accepted",
"overlap": "allowed between CELL_REGION regions",
"diagonal_only": "disconnected under orthogonal connectivity"
},
"region_geometry_semantics": {
"CELL_UNION": "effectiveFootprint is union/list of atomic member cell rectangles and excludes spacing bands",
"SPAN_ENVELOPE": "effectiveFootprint is outer bounding envelope and can include spacing bands between members",
"membership_vs_footprint": "footprint choice never changes memberCellRefs",
"no_default": "footprintModel must be explicit"
},
"region_set_schema": {
"regionSetRef": "region-set:<cellSetRef>:<explicit region set identity>",
"cellSetRef": "one exact CellSet",
"regions": "Region[] in regionSpecRef canonical order",
"mergedCellRegionRefs": "subset",
"cellRegionRefs": "subset",
"status": "OK|INVALID",
"confidence": "0..1",
"provenance": "DERIVED"
},
"forbidden_declaration_schema": {
"declarationRef": "stable unique ref",
"declarationKind": "FORBID_CELL|FORBID_REGION",
"cellSetRef": "same CellSet",
"cellRef": "required for FORBID_CELL",
"regionSetRef": "required for FORBID_REGION",
"regionRef": "required for FORBID_REGION",
"sourceOwnerRef": "required owner-qualified source",
"sourceEvidenceRef": "required evidence ref",
"reasonCode": "optional descriptive code",
"status": "ACTIVE|INACTIVE",
"confidence": "0..1",
"provenance": "STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET"
},
"forbidden_registry_spec_schema": {
"registryRef": "stable versioned ref",
"cellSetRef": "same CellSet",
"regionSetRef": "optional exact RegionSet lineage if region declarations exist",
"declarations": "ForbiddenDeclaration[]",
"confidence": "0..1",
"provenance": "STANDARD|EMPIRICAL|INITIAL_HEURISTIC|STYLE_PRESET",
"allow_overrides": "NONE in baseline"
},
"forbidden_cell_state_semantics": {
"missing_registry": "N_A",
"registry_present_no_active_declaration": "UNRESTRICTED_BY_THIS_REGISTRY",
"one_or_more_active_declarations": "FORBIDDEN",
"inactive_declarations": "preserved as provenance but do not forbid",
"meaning_warning": "UNRESTRICTED_BY_THIS_REGISTRY != FREE != globally ALLOWED"
},
"forbidden_registry_schema": {
"registryRef": "same source registry ref",
"cellSetRef": "same CellSet",
"regionSetRef": "optional lineage",
"cellStates": "one state per atomic Cell in row-major order",
"activeDeclarations": "canonical declarationRef order",
"inactiveDeclarations": "canonical declarationRef order",
"forbiddenCellRefs": "row-major unique CellRefs",
"status": "OK|N_A|INVALID",
"confidence": "minimum relevant evidence confidence",
"provenance": "DERIVED"
},
"ownership_map": {
"8.02": "ColumnGrid GridNode identity and node occupancy",
"9.01": "atomic Cell identity/address/geometry/neighbors",
"9.02": "Region identity/merge/topology/geometry and forbidden constraints",
"9.03": "2D cell/region occupancy, collision, reflow hooks, placement candidates",
"9.04": "variants, hard filter, local scoring, repairs/comparison/tests"
},
"semantic_firewalls": {
"merge_vs_cell_identity": "MERGED_CELL creates Region identity; member atomic CellRefs remain valid canonical identities",
"region_vs_occupancy": "Region membership is geometry/topology, not occupied/free state",
"forbidden_vs_occupancy": "FORBIDDEN is a placement constraint descriptor; OCCUPIED belongs to 9.03",
"unrestricted_vs_free": "UNRESTRICTED_BY_THIS_REGISTRY is not FREE",
"envelope_vs_membership": "SPAN_ENVELOPE may cover spacing bands but does not add those bands as member cells",
"connected_vs_rectangular": "orthogonal connectivity does not imply rectangular completeness",
"cell_region_overlap_vs_merge_overlap": "generic CELL_REGION overlap allowed; MERGED_CELL overlap invalid",
"region_vs_grid_node": "Region membership uses CellRefs only and does not alias GridNode refs"
},
"metric_policy": {
"direct_scoring": "FORBIDDEN in 9.02",
"region_size_score": "FORBIDDEN",
"rectangularity_score": "FORBIDDEN",
"connected_is_better": "FORBIDDEN",
"forbidden_count_score": "FORBIDDEN",
"beautyScore": "FORBIDDEN"
},
"hard_constraints": [
"9.02 owns Region[] identity, explicit atomic-cell membership, merged-cell rectangularity, region topology descriptors, region geometry views and forbidden-cell/forbidden-region constraint registry.",
"Atomic Cell identity and cell geometry remain owned by Compo9.01 and must never be rewritten by 9.02.",
"A Region is defined by explicit CellRef membership within one CellSet lineage.",
"Region membership must use canonical CellRefs from exactly one CellSet; cross-CellSet membership is INVALID.",
"Canonical member order is row-major by the member Cells' canonical ordinals.",
"Duplicate CellRefs inside one region are INVALID rather than silently de-duplicated.",
"Baseline Region kinds are MERGED_CELL and CELL_REGION.",
"MERGED_CELL must cover a complete rectangular index block [rowStart,rowEndExclusive) × [columnStart,columnEndExclusive) with no holes and no extra cells.",
"MERGED_CELL must contain at least two atomic cells; a one-cell merge is INVALID because the atomic Cell already owns that identity.",
"Two MERGED_CELL regions in the same RegionSet must not share an atomic Cell; overlapping merged-cell membership is INVALID.",
"CELL_REGION may overlap other CELL_REGION objects unless a future explicit exclusivity policy forbids it.",
"CELL_REGION connectivityPolicy must be ORTHOGONALLY_CONNECTED or ANY_EXPLICIT_SET.",
"ORTHOGONALLY_CONNECTED means every member cell belongs to one connected component using only 9.01 TOP/RIGHT/BOTTOM/LEFT lattice adjacency.",
"Diagonal-only contact does not satisfy ORTHOGONALLY_CONNECTED.",
"ANY_EXPLICIT_SET permits disconnected member sets but does not imply that disconnected pieces form one visual contour.",
"Region geometry must preserve both memberCellUnion and outerEnvelope descriptors.",
"memberCellUnion excludes column gutters and row gaps because its geometry is the union of atomic Cell rectangles.",
"outerEnvelope spans min/max member-cell bounds and may include internal gutters/row gaps.",
"RegionSpec must explicitly select footprintModel CELL_UNION or SPAN_ENVELOPE; 9.02 must not silently choose between them.",
"SPAN_ENVELOPE is allowed for MERGED_CELL and CELL_REGION but does not convert internal gutter/gap space into atomic Cell membership.",
"CELL_UNION is a possibly disconnected multi-rectangle footprint when the explicit member set is disconnected.",
"Region bounds/index extents are descriptors and do not imply merged semantics unless regionKind=MERGED_CELL.",
"Forbidden semantics are constraint evidence and are distinct from occupancy evidence.",
"9.02 owns ForbiddenGridRegistry and ForbiddenDeclaration[]; 9.03 owns ModularGrid cell/region occupancy.",
"A forbidden Cell or Region must never be encoded as OCCUPIED by 9.02.",
"An unlisted Cell in an existing forbidden registry resolves as UNRESTRICTED_BY_THIS_REGISTRY, not FREE and not globally ALLOWED.",
"If no forbidden registry is supplied, per-cell forbidden state is N_A, not UNRESTRICTED_BY_THIS_REGISTRY.",
"Baseline forbidden declarations are FORBID_CELL and FORBID_REGION.",
"FORBID_REGION expands to the explicit current member CellRefs of the referenced Region version.",
"Forbidden declarations must be owner-qualified and evidence-qualified and may be ACTIVE or INACTIVE.",
"Only ACTIVE forbidden declarations contribute to resolved forbidden state.",
"Duplicate declarationRef values are INVALID.",
"Unknown CellRef or RegionRef in a forbidden declaration is INVALID.",
"Multiple active declarations may forbid the same Cell; this is valid convergent evidence and must preserve all declaration refs.",
"There is no ALLOW override or priority mechanism in 9.02 baseline; contradictory permission policy is deferred rather than guessed.",
"Forbidden reasonCode is descriptive provenance and is not a scoring dimension.",
"Region area, member count, rectangularity, connectivity and forbidden counts are descriptors only.",
"9.02 does not own collision, reflow, placement candidates or acceptance of content; Compo9.03 owns those.",
"9.02 does not own variants or numeric scoring; Compo9.04 owns those.",
"ColumnGrid node occupancy remains owned by Compo8.02.",
"Region membership must not alias GridNode membership.",
"No foreign mutation: repairs or diagnostics may request corrected RegionSpec/ForbiddenGridRegistry but 9.02 never mutates CellSet, content or occupancy.",
"N/A != 0.",
"No beautyScore."
],
"hard_rules": [
"9.02 owns Region[] identity, explicit atomic-cell membership, merged-cell rectangularity, region topology descriptors, region geometry views and forbidden-cell/forbidden-region constraint registry.",
"Atomic Cell identity and cell geometry remain owned by Compo9.01 and must never be rewritten by 9.02.",
"A Region is defined by explicit CellRef membership within one CellSet lineage.",
"Region membership must use canonical CellRefs from exactly one CellSet; cross-CellSet membership is INVALID.",
"Canonical member order is row-major by the member Cells' canonical ordinals.",
"Duplicate CellRefs inside one region are INVALID rather than silently de-duplicated.",
"Baseline Region kinds are MERGED_CELL and CELL_REGION.",
"MERGED_CELL must cover a complete rectangular index block [rowStart,rowEndExclusive) × [columnStart,columnEndExclusive) with no holes and no extra cells.",
"MERGED_CELL must contain at least two atomic cells; a one-cell merge is INVALID because the atomic Cell already owns that identity.",
"Two MERGED_CELL regions in the same RegionSet must not share an atomic Cell; overlapping merged-cell membership is INVALID.",
"CELL_REGION may overlap other CELL_REGION objects unless a future explicit exclusivity policy forbids it.",
"CELL_REGION connectivityPolicy must be ORTHOGONALLY_CONNECTED or ANY_EXPLICIT_SET.",
"ORTHOGONALLY_CONNECTED means every member cell belongs to one connected component using only 9.01 TOP/RIGHT/BOTTOM/LEFT lattice adjacency.",
"Diagonal-only contact does not satisfy ORTHOGONALLY_CONNECTED.",
"ANY_EXPLICIT_SET permits disconnected member sets but does not imply that disconnected pieces form one visual contour.",
"Region geometry must preserve both memberCellUnion and outerEnvelope descriptors.",
"memberCellUnion excludes column gutters and row gaps because its geometry is the union of atomic Cell rectangles.",
"outerEnvelope spans min/max member-cell bounds and may include internal gutters/row gaps.",
"RegionSpec must explicitly select footprintModel CELL_UNION or SPAN_ENVELOPE; 9.02 must not silently choose between them.",
"SPAN_ENVELOPE is allowed for MERGED_CELL and CELL_REGION but does not convert internal gutter/gap space into atomic Cell membership.",
"CELL_UNION is a possibly disconnected multi-rectangle footprint when the explicit member set is disconnected.",
"Region bounds/index extents are descriptors and do not imply merged semantics unless regionKind=MERGED_CELL.",
"Forbidden semantics are constraint evidence and are distinct from occupancy evidence.",
"9.02 owns ForbiddenGridRegistry and ForbiddenDeclaration[]; 9.03 owns ModularGrid cell/region occupancy.",
"A forbidden Cell or Region must never be encoded as OCCUPIED by 9.02.",
"An unlisted Cell in an existing forbidden registry resolves as UNRESTRICTED_BY_THIS_REGISTRY, not FREE and not globally ALLOWED.",
"If no forbidden registry is supplied, per-cell forbidden state is N_A, not UNRESTRICTED_BY_THIS_REGISTRY.",
"Baseline forbidden declarations are FORBID_CELL and FORBID_REGION.",
"FORBID_REGION expands to the explicit current member CellRefs of the referenced Region version.",
"Forbidden declarations must be owner-qualified and evidence-qualified and may be ACTIVE or INACTIVE.",
"Only ACTIVE forbidden declarations contribute to resolved forbidden state.",
"Duplicate declarationRef values are INVALID.",
"Unknown CellRef or RegionRef in a forbidden declaration is INVALID.",
"Multiple active declarations may forbid the same Cell; this is valid convergent evidence and must preserve all declaration refs.",
"There is no ALLOW override or priority mechanism in 9.02 baseline; contradictory permission policy is deferred rather than guessed.",
"Forbidden reasonCode is descriptive provenance and is not a scoring dimension.",
"Region area, member count, rectangularity, connectivity and forbidden counts are descriptors only.",
"9.02 does not own collision, reflow, placement candidates or acceptance of content; Compo9.03 owns those.",
"9.02 does not own variants or numeric scoring; Compo9.04 owns those.",
"ColumnGrid node occupancy remains owned by Compo8.02.",
"Region membership must not alias GridNode membership.",
"No foreign mutation: repairs or diagnostics may request corrected RegionSpec/ForbiddenGridRegistry but 9.02 never mutates CellSet, content or occupancy.",
"N/A != 0.",
"No beautyScore."
],
"soft_constraints": [],
"preferences": [],
"overrides_allowed_by": [
"a newer explicit RegionSpec/RegionSet lineage creates new Region refs",
"a newer forbidden registry creates new constraint state without mutating historical registry",
"historical CellRefs remain immutable"
],
"initial_heuristics": {},
"style_preset_values": [],
"candidate_generation": {
"placement_candidates": "NONE",
"reason": "9.02 defines region and forbidden constraint evidence only"
},
"correction_policy": {
"foreign_content_mutation": "FORBIDDEN",
"invalid_cell_ref": "route to 9.01/integration owner",
"invalid_region_membership": "request RegionSpec correction",
"overlapping_merged_cells": "request RegionSet correction",
"invalid_forbidden_declaration": "request registry/source correction",
"occupancy_collision_reflow_question": "route to 9.03",
"variant_scoring_question": "route to 9.04"
},
"deferred_inputs": [
"Compo9.03 cell/region occupancy, collision, reflow and placement candidates",
"Compo9.04 variant/scoring contracts",
"future permission/allow-override policy if required"
],
"recompute_when": [
"cellSetRef changes",
"RegionSpec membership/kind/connectivity/footprint changes",
"RegionSet changes",
"ForbiddenGridRegistry declarations/status/refs change"
],
"tests": [
"RegionSpec validation",
"row-major membership",
"merged rectangular completeness",
"merge holes invalid",
"merge overlap invalid",
"generic connected/disconnected policy",
"geometry union vs envelope",
"forbidden cell declaration",
"forbidden region expansion",
"inactive declarations",
"duplicate/unknown declaration refs",
"unrestricted != free",
"missing registry N_A",
"no occupancy/scoring ownership",
"determinism/no mutation"
],
"finality": "REGION_MERGE_GEOMETRY_AND_FORBIDDEN_CONSTRAINT_OWNER_ONLY"
}