Problem
Fixture 37 now emits an editor-invalid core/column because class-owned max-width: var(--essay) is serialized onto the column wrapper in addition to its generated geometry carrier. Gutenberg core/column save output does not include that unsupported inline max-width, so validation fails.
Evidence
SSI eight-surface proof: Homeboy run 4610bb1b-6a98-40fb-b2b6-bed00bc1fba3.
Observed mismatch:
core/column
expected style: margin-top:0;...;padding-left:0
received style: margin-top:0;...;padding-left:0;max-width:var(--essay)
Source CSS:
.essay__body {
grid-column: 2;
max-width: var(--essay);
}
BlockFactory already excludes max-width from serialized styles for core/group, core/columns, core/list-item, core/paragraph, and core/separator, retaining it through generated geometry CSS. core/column is omitted from that policy even though it uses the same carrier path.
Acceptance criteria
- Class-owned max-width on a source element converted to
core/column is retained through generated geometry CSS, not unsupported serialized block style.
- The transformed wrapper remains visually equivalent.
- Gutenberg validation reports the fixture-37 column valid.
- Add focused canonical save-shape and geometry parity coverage.
- Existing PHP transformer contract and canonical suites pass.
Related
AI assistance
- Model: OpenAI GPT-5.6 Sol
- Tool: OpenCode and Homeboy
- Used for: ran the eight-surface SSI proof, isolated the exact save-shape mismatch, and traced the missing block-policy entry. Chris Huber owns review and decisions.
Problem
Fixture 37 now emits an editor-invalid
core/columnbecause class-ownedmax-width: var(--essay)is serialized onto the column wrapper in addition to its generated geometry carrier. Gutenbergcore/columnsave output does not include that unsupported inline max-width, so validation fails.Evidence
SSI eight-surface proof: Homeboy run
4610bb1b-6a98-40fb-b2b6-bed00bc1fba3.Observed mismatch:
Source CSS:
BlockFactoryalready excludesmax-widthfrom serialized styles forcore/group,core/columns,core/list-item,core/paragraph, andcore/separator, retaining it through generated geometry CSS.core/columnis omitted from that policy even though it uses the same carrier path.Acceptance criteria
core/columnis retained through generated geometry CSS, not unsupported serialized block style.Related
core/separator.AI assistance