← Files Unbounce - Classic BuilderARCHIVED FILE
skills/mcp-modernize/rules/failure-catalog.md
5.04 KB · Oct 5, 2026 · 18:22 UTC
# Failure catalog — real rejected attempts
Every entry below happened in a real run and was rejected by the user. Read
them before writing HTML; each names the rule that now catches it.
1. **Invented sticky header.** A rounded logo box that was a row sibling in the
hero became `<header style="position:sticky">` with an invented "Home" nav
link. It was never a header. _(No additions; preserve sibling order.)_
2. **Swapped hero columns.** Source read [logo + photo | green card]; the
rewrite flipped them to match the familiar "headline-left, image-right"
pattern. The hints' left-to-right order is the truth. _(Preserve sibling
order.)_
3. **Aspect-ratio drift.** A 455×458 (near-square) photo container became
`aspect-ratio: 4/5` because "portrait felt right". 4/5 is 455×569 — a
category error, not a precision issue. _(Images: keep explicit dimensions.)_
4. **Button flipped from outline to solid.** Source: dark green, white border,
inverts on hover. Rewrite: solid light-green pill, no border, no inversion —
"felt more modern". A different control entirely. _(No creative changes;
interaction states.)_
5. **Element name surfaced as content.** An image element internally named
"Home" (the house photo) became a visible "Home" nav link. Builder-side
labels are never user-facing copy. _(Element names are not content.)_
6. **Absolute-positioning translation.** Source `top/left` values copied onto
new class names — pixel-faithful at desktop, collapsing everywhere else.
"I migrated the values without migrating the layout model." _(Use the hint
rows; hard stop on position:absolute count and zero flex/grid.)_
7. **Self-deceptive diff table.** The delivery said "pixel-faithful match — no
meaningful differences" while the output was absolute-positioned with wrong
fonts. Aggregate prose masked per-value drift; only counted, quoted evidence
is allowed. _(Verification: prohibited phrases; hard stops.)_
8. **Page-level max-width shrank the backgrounds.** One `.page-wrap
{ max-width: 1280px }` around everything constrained every section's
background with the content — heroes floating as "cards" in white space on
wide screens. Per-section outer/inner is the pattern. _(Layout: full-bleed
sections.)_
9. **Benefits hidden behind the form card** (column overlay missed). A hero
form card hanging 500px into the benefits section; benefits laid out at full
inner width sat behind it, invisible. The shared reserved-column grid is the
fix. _(Cross-section overlays.)_
10. **Teal band + giant white gap** (centered overlay double-counted). A video
hanging past its section got its section stretched to "contain" it AND the
next section padded to "make room" — the overlay's span counted twice.
Negative-margin overflow, no extra padding. _(Cross-section overlays.)_
11. **Invented body copy.** Asked for a headline A/B test, the rewrite came
back with 3 fabricated feature cards, a bio rewritten with invented stats,
a dropped pull-quote, and a hallucinated FAQ. Two enabling conditions:
delegation to a subagent that lacked the verbatim source, and fusing the
replication with the headline change in one pass. _(No subagent
delegation; two-pass authoring; text walk.)_
12. **Card count 5 → 6.** "The layout looks more balanced with 6." The sixth
card's copy was fabricated. Counts in source = counts in output, always.
_(Count walk; no additions.)_
13. **Wrong ruleset applied.** The general landing-page authoring rules ("no
nav, single goal, conversion best practices") were applied to a rewrite —
the source's nav was stripped and "modern treatments" added. Those rules
govern NEW pages; a rewrite replicates what exists. _(No additions;
replication trumps landing-page best practices.)_
14. **Values reconstructed when the source was hard to read.** Blocked from
reading the source cleanly, the agent binary-searched hex colors, eyeballed
fonts from a screenshot, and fabricated image URLs. When you cannot read
the source, STOP and report — declining is correct; inventing is not.
_(Source of truth: the imported copy's body, nothing else.)_
15. **Hero's white text promoted to the page default.** The dark hero band's
white text became the page-wide default color, so a light section's
un-styled paragraphs rendered white-on-white — invisible. The source's
actual default was black; no text diff can catch this class. Use
`page_defaults.color` as the base and override only the sections whose
extracted colors differ; the contrast table flags it deterministically.
_(color.md: page default; contrast arithmetic.)_
16. **Decorative accent ballooned to `cover`.** A small box image the source
positioned at natural size (no `background-size`) was rewritten as
`background-size: cover` — it swamped the section and sat behind the body
text. The extracted `background_image` carries the computed sizing model
and the natural-vs-rendered size; reproduce it verbatim. _(color.md:
background sizing model is content.)_
SHA-256: 6967491114f2b14d12e78b875d8b0ff655e1e9175d65d57d595e653e5da04330