@@ -59,12 +59,12 @@ as a standalone validator in CI.
5959- ** Built for agents and pipelines.** Feed it whatever your LLM, agent, or design tool emits; get back blocks the editor trusts.
6060- ** Media resolution.** Resolve images to real attachment ids via a map, WP-CLI, or the REST API.
6161- ** Styling fidelity, your call.** Keep off-theme styles or map them to your theme, up to a ceiling you set.
62- - ** Pluggable engines .** Deterministic rules out of the box; bring your own rules , or plug an LLM/agent engine into the same seam .
62+ - ** Extensible .** Built-in rules out of the box; add your own, or hand the hardest layouts to an LLM (experimental) .
6363
6464### Validate: prove it's editor-valid
6565
6666- ** Valid means what the editor means.** Every result runs through a gate wired to headless Gutenberg, not a converter's wishful thinking.
67- - ** Deterministic gate.** Reproducible: same markup, same verdict, no nondeterministic model in the loop . Safe to run on every request and in CI.
67+ - ** Reproducible gate.** Same markup, same verdict, every time . Safe to run on every request and in CI.
6868- ** Canonicalize.** Rewrite near-miss markup into the exact shape the editor expects.
6969- ** Never fails silently.** When something can't be expressed natively, it says so and points at the exact line.
7070
@@ -140,21 +140,17 @@ const converted = await convert(html, { resolver: 'noop' });
140140
141141## Conversion
142142
143- Conversion runs on a pluggable engine. v1 ships a deterministic rule engine: an ordered
144- walker that maps HTML straight to real block objects with ` createBlock() ` and serializes
145- them with ` serialize() ` , skipping the brittle WordPress paste pipeline entirely. Fast, free,
146- reproducible, and it already nails the composites the editor usually mangles:
143+ Point Block Runner at whatever your model or design tool generates, and it returns real,
144+ nested blocks ready for the editor. It covers the composites that usually break:
147145
148146- Cover sections with inline or CSS background images
149147- Columns and column-like rows
150148- Buttons and button groups
151149- Images, headings, paragraphs, and lists
152150- Generic groups, with a last-resort Custom HTML fallback that always warns
153151
154- The rules are a seam, not a ceiling. When a layout outgrows them, drop in your own rules, or
155- an LLM or agent engine, on the same interface (experimental). Deterministic rules for the
156- common case, a model for the long tail, one contract for both. Whichever engine emits a
157- block, every result is held to the same validity gate before it ships.
152+ Need more than the built-ins? Add your own rules, or hand the hardest layouts to an LLM
153+ (experimental). Every result is checked against the validity gate before it ships.
158154
159155## Media Resolution
160156
@@ -231,8 +227,7 @@ comes from a block plugin, or is dropped, and every drop or escalation is report
231227
232228A conversion benchmark lives under ` benchmarks/ ` : it measures how faithfully real generator
233229output (Impeccable, Codex, Claude, and more) converts to native blocks, across swappable
234- conversion engines (the deterministic rules; experimental LLM translators run via their CLIs,
235- no API key).
230+ converters (the built-in rules, plus experimental LLM translators run via their CLIs).
236231
237232``` sh
238233npm run bench # score the suite; write report/review.html + report/scoreboard.html
0 commit comments