Skip to content

Lower structural lists into editable native groups - #895

Merged
chubes4 merged 4 commits into
trunkfrom
fix/894-list-item-grammar
Aug 18, 2026
Merged

Lower structural lists into editable native groups#895
chubes4 merged 4 commits into
trunkfrom
fix/894-list-item-grammar

Conversation

@chubes4

@chubes4 chubes4 commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • keep block-level list-item subtrees out of core/list-item RichText attributes
  • lower structural ul/ol collections and their li items into semantic core/group blocks with editable native children
  • retain representable text, inline formatting, links, and direct nested lists as native core/list blocks
  • preserve author selector behavior through generic source-tag and semantic carrier projection
  • measure structural HTML stored in known RichText attributes by count and bytes

Architecture

The decision uses DOM element categories and WordPress block grammar only. It has no source-format, fixture-path, generated-node, or authored-class branching.

A structural list keeps its source ul or ol wrapper through core/group.tagName; each structural item keeps li through the same native Group contract. Item descendants recursively use existing heading, paragraph, image, list, control, and layout conversions. CSS-addressed inline leaves receive independent native carriers where RichText normalization would alter layout.

Evidence

  • composer test passes
  • 278 PHP transformer parity fixtures pass
  • package-install proof passes
  • WordPress site-plan integration passes
  • generic Chromium visual parity passes
  • real-design fixture compilation records zero structural RichText violations and zero structural RichText bytes across every generated page
  • worktree is clean at 3a908512

The solved-site promotion gate is still pending before fixture execution because its pinned WP Codebox installation is stalled. Responsive layout, forms, and unrelated HTML-bearing constructs remain separate work.

Closes #894.

AI assistance

OpenAI GPT-5.6 Sol through OpenCode audited the generated artifact, traced the generic lowering and selector-projection paths, implemented the repair and tests, and ran the deterministic and real-fixture verification. Chris Huber reviewed the evidence and remains responsible for every line.

@chubes4 chubes4 changed the title Preserve structural lists outside RichText Lower structural lists into editable native groups Aug 18, 2026
@chubes4
chubes4 merged commit 21b4479 into trunk Aug 18, 2026
4 checks passed
@chubes4
chubes4 deleted the fix/894-list-item-grammar branch August 18, 2026 18:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keep structural list subtrees out of RichText attributes

1 participant