Edge cases

Every caption below names a degenerate input. If the renderer handles it, you see the caption followed by graceful degradation — hidden element, clamped value, or fallback. If you see an empty tag, a broken layout, or a 500, that case failed.

Missing and empty pointers (D7)

1 — text pointing at a content key that does not exist → hidden:

2 — text pointing at a content value that is an empty string → hidden:

3 — heading bound to a missing fact → hidden:

4 — badge bound to a missing fact → hidden:

5 — image bound to a missing fact → omitted:

End of missing-pointer cases. Nothing should have rendered between any label and this line except the labels themselves.

Extreme content

This headline is deliberately much longer than any designer would ever approve because generated copy sometimes ignores the guardrails and the layout still has to hold together without overflowing or colliding

Unbroken token test: Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft must wrap instead of pushing the layout sideways.

Unicode: náïve café — 配管サービス — سباكة — 🚰🔧 emoji render, RTL fragments embed, nothing crashes.

4.9yes

Collection shapes

1 — repeater whose collection is entirely absent from the data scope → hidden:

2 — single-item collection in a 3-column repeater:

Lonely item

One item, three columns — grid should not stretch it full width.

3 — seven items in a 3-column repeater (uneven last row):

Item 1

of seven

Item 2

of seven

Item 3

of seven

Item 4

of seven

Item 5

of seven

Item 6

of seven

Item 7

of seven

Conversion references

1 — CTA group where every conversion id is unknown → hidden:

2 — CTA group mixing an unknown id with a valid one → renders only the valid CTA:

This section's background image URL 404s. The overlay still guarantees contrast and the section's color role shows through — D7 for images.

This tenant has no nav chrome at all — the site must render without it.