HRF QA Gate — Demo Pages

A guided tour of what the gate catches, what it produces, and how the regenerate loop closes the gap. Three sections below: passing pages, before/after on real submissions, and the gate's failure-detection examples.

1. Pages that PASS the gate

These three pages pass all ten checks and are ready to paste into Elementor on hrf.org.

Freedom Tech Programs — canonical example

The minimal "what good output looks like" sample. Shipped with the project as a reference.

PASS · 0 issues

AI for Individual Rights — RFP (regenerated)

Clean version of Alex Gladstein's RFP page after running the original through the gate. All 24 issues from the original (see Section 2) are gone.

PASS · 0 issues

Bitcoin Development Fund (regenerated)

Clean version of R2's BDF page after running the original through the gate. All 20 issues from the original (see Section 2) are gone.

PASS · 0 issues

2. Before / after — Tony's two real submissions

These are the exact pages Tony forwarded the week of May 5. Compare the original AI output (FAIL) to the regenerated version (linked above in Section 1).

AI for Individual Rights — RFP (original)

Alex Gladstein's vibe-coded version. Borrows HRF's logo from a third-party server, embeds custom fonts and colors, hosted off hrf.org, missing all social-preview info. Gate caught 24 issues.

FAIL · 24 issues

Bitcoin Development Fund (original)

R2's vibe-coded version. Pulls D3.js from an external CDN, custom dark-mode styles, doesn't work in Safari, slow on mobile, hosted on GitHub Pages. Gate caught 20 issues.

FAIL · 20 issues

3. Canonical failure examples — what the gate catches

Four small test pages, each engineered to fail a specific rule. Ship with the project so the gate's self-test always demonstrates its catches.

Theme inheritance violation

Custom @font-face, redefined heading sizes, inline color styles. Fights HRF's WordPress theme.

FAIL · theme

Dead buttons

A <button> with no handler and two anchors with href="#". Look like buttons, do nothing.

FAIL · buttons

Safari incompatibility

Unprefixed backdrop-filter and mask-image. Works in Chrome, breaks in Safari.

FAIL · Safari

Insecure backend

An Airtable Personal Access Token baked directly into client-side JavaScript. Anyone viewing source can read it.

FAIL · security