— builder drives the loop; the referee adjudicates fidelity in a separate fresh session
INTAKE
EXTRACT
ASSEMBLE
QA_LOOP
STAGING
AUDIT
LIVE
REFINE
Build & audit spec
Paste images or drop files anywhere ↑ — added as references your local agent resolves.
Design flats — siteupdates.com
No siteupdates.com project matched this build (tried the build id, repo, display name and year-stripped variants).
Client axis: the 4 things a client judges on
❌ design: Matches the approved design on every contracted route (referee-adjudicated, staging) no contracted routes (spec.pages): nothing has been matched to the approved design
❌ forms: Every form is real, routes to a real inbox, and was proven on staging no fresh slipway form scan: run Verify on the build page
❌ content: Zero placeholder copy, em-dashes or dead CTAs on any published route no fresh slipway content scan: run Verify on the build page
❌ signoff: Finish sign-off recorded by the owner (client-axis review done) owner finish sign-off not recorded
, you reviewed staging the way the client will: design incl. photography, forms, every word, finished feel
Evidence comes from the referee (design), dimension 19 + slipway's form scan (forms), slipway's content scan (content): run Verify to refresh scans: and the owner (sign-off). An essential is never deferred.
Green dimensions are collapsed; anything incomplete is expanded. Launch-ready = all 30 dimensions green, verified on staging (local-only greens don't count), 0 open P0, AND the four client-axis essentials (design match · working forms · real content · owner sign-off): a query, not a call.
system tier · 15/26 green
standards
○2. Theme infrastructure(10/13)buildout-verify
○ Nav menus assigned + populated in wp-admin @staging— nav-menu assignment check needs container wp-cli; not reachable from this session
○ Pretty CPT taxonomy permalinks @staging— CPT taxonomy permalink check needs container wp-cli; not reachable from this session
– House stack conformance: the stack the web team finishes + maintains in — opt in via spec.stack_profile (e.g. d3-house-2026)
✓ CPT body editor support ('editor' in supports) @staging— every CPT includes 'editor' in supports
✓ Image artifact pre-flight scan (asset-validate.py) @staging— Referee vision check of both flagged regions, cropped at full res from home and home-submenu flats (identical in both). (1) bottom_text_strip y5393-5402: it is the text row of the cyan 'View FAQ' CTA button centered below the FAQ accordion; legitimate design content, not chrome. (2) brand_cyan_badge 160x64 at x10.8-18.0% y34.3-35.0%: it is the cyan 'Contact Us' CTA button in the dark WHAT WE DO section over the warehouse photo; legitimate design content. Both flags are heuristic false positives (thin text strip and solid brand-cyan rectangle misread). No selection chrome, crop marks, or stray junk in either region. Builder note, not a gate fail: the home flat carries two deliberate interaction-state annotations that the scanner did NOT flag, a hand cursor inside the open FAQ item 02 card (approx x1457 y5157) and a hand cursor at the Contractor Assistance tile beside its 'Learn More' hover overlay (approx x986 y2686); both co-occur with rendered hover/open states so they read as designer hover callouts. Do not slice assets from those two regions.
↪ /buildout Phase 5 + _tools/asset-validate.py
✓5. Schema / structured data(1/1)schema-validate
✓ JSON-LD complete + valid on every route @staging— JSON-LD complete + valid on every staging route (fetched live with d3:d3)
✓30. UX states + microinteractions(0/7)audit · P2 1 P3 5
○ Focus states
○ Hover states
○ Loading states
○ Empty states
○ Error states
○ Success states
○ prefers-reduced-motion
↪ /audit Phase 26 — UX states
infra
✗11. Security headers(0/6)audit · P1 1 P2 2 P3 1
○ HSTS
○ Content-Security-Policy
○ X-Frame-Options
○ X-Content-Type-Options
○ Referrer-Policy
○ Permissions-Policy
↪ /audit Phase 11 — ingress security headers (set at Traefik/ingress, not theme)
✓20. Media / CDN(0/6)audit · P2 1
○ S3 offload (AS3CF)
○ CloudFront serving
○ WebP / AVIF
○ Lazy-load
○ Aspect ratios
○ No artifacts
↪ /audit Phase 17 — media pipeline
✓21. Email deliverability(0/4)audit · P3 3
○ SPF
○ DKIM
○ DMARC
○ From-address consistency
↪ /audit Phase 18 — email DNS
✓24. Infrastructure(0/7)audit
○ EKS pod healthy
○ EFS mounts
○ DNS at NLB (public + private zones)
○ SSL not expiring <30d
○ CloudFront
○ WAF
○ Backups configured
↪ /audit Phase 21 — EKS platform
✗25. Analytics(0/5)audit · P1 1
○ GA4 installed
○ Search Console verified
○ Tag Manager
○ Conversions tracked
○ Heatmap (if used)
↪ /audit Phase 22 — analytics
○26. Monitoring(0/4)audit
○ StatusCake uptime
○ Grafana dashboards
○ Slack alerts
○ Uptime SLA
↪ /audit Phase 22 — monitoring
✗29. Build / Deploy(0/4)audit · P1 1 P2 1
○ GitLab CI green
○ Branch strategy (stable/main)
○ Env separation
○ Rollback path
↪ /audit Phase 25 — CI / CD
project tier · 1/4 green
spec
○1. Editorial workflow(2/3)buildout-verify
○ Editorial smoke test — wp-admin edit renders on front-end @staging— editorial smoke needs wp-cli exec in the conch container; not reachable from this session — run pod/CI side (same class as coastal gates 1/10)
✓ ACF schema parity — every layout has a module template @staging— buildout-verify: all 8 ACF layouts have matching template files (repo stable@591d605 == origin/stable, the staging auto-deploy branch)
✓ No hardcoded page-*.php with literal copy @staging— no hardcoded page-*.php variants
✗ No silent visual regression (screenshot diff 375/768/1440) @staging— Vision adjudication per route vs locked flats at 1440 (design left / live right, section by section). ROUTE / vs home flat: FAIL. Hero headline roughly 2x design scale across 3 lines and repositioned higher; CTA changed from small outlined 'Learn More' to large filled cyan pill 'LEARN MORE'; hero photo crop/zoom visibly different. Nav item set changed: 'Personnel' added, 'About Us' shortened to 'About' (no flat shows Personnel in nav). WHO WE ARE drops the 'Our Mission' and 'Our Values' subsections (live has one paragraph plus button). WHAT WE DO 2x3 tile grid lost all six captions (Structural Engineering, Remediation & Repair, Parking & Functional Design, Contractor Assistance, Shop Drawing Preparation, Forensic Experts absent on live) and gained a carousel progress indicator. FAQ accordion drops the 01-04 item numbering. Contact form fully restyled: single-column boxed default-GF fields Name/Email/Phone/Project Type/Address/Message with blue 'Submit' vs design two-column underline fields First/Last Name, Company (optional), Project Type select, Email, Phone, Message with cyan 'Send Message'. Footer swaps the mc logo mark for plain text and moves Contact/Accessibility/Site Map plus copyright to a separate bottom bar; ~1300px of empty dark space above the footer (live 6198px vs design-equivalent 4910px). Section ORDER matches (hero, who-we-are, what-we-do, featured projects, blog, FAQ, contact, footer). Ignored as noise: cookie banner mid-page, sticky nav captured mid-scroll, carousel slide state (National Aquarium vs Johns Hopkins), blog card rotation. ROUTE /personnel/ vs personnel flat: FAIL, closest of the three. Faithful: hero image and title, section order and grouping (All/Leadership/Principals/Associates/Engineers/Administrative), every name and title matches, grid column counts match, and the flat's gray photo placeholders render as branded watermark placeholders (acceptable). Named misses: Engineers grid reordered alphabetically (design leads with Kenneth Bauer PE Senior Project Manager, live leads with Alexis Elias; all 12 present); people tiles boxed into white bordered cards with left-aligned name/title vs plain photos with centered captions; filter bar restyled to a centered pale-blue band with underlined active state vs left-aligned pipe-separated links on white; breadcrumb 'Home / Personnel' added over hero; same contact-form restyle and footer changes as home. ROUTE /projects/ vs projects flat: FAIL. All 17 category tiles present with matching images. Named misses: tile order deviates from the flat (live is strict alphabetical; the flat orders Entertainment before Educational, Hospitality before Historic Renovations, Retail before Residential); an extra '1 2 3 Next' pagination row under the grid that the design does not have, while all 17 tiles already render on the page; tiles boxed in white cards with left-aligned labels vs plain image with centered label below; search restyled to a full-width pale-blue band with rounded input and 'SEARCH ->' button vs inline gray rectangular input with flat cyan SEARCH on white; breadcrumb added; same contact-form restyle and footer changes as home. Overall: 0 of 3 routes faithful, gate 17 FAIL.