Score 1.00 across 10 requirements. Zero critical NOT MET, zero major NOT MET.
Verified by Queen against the DEPLOYED URL in a Steel cloud browser at mobile 390, with every flow driven, not just screenshotted. Second check by Dan, independent re-verification of all four critical requirements: he byte-diffed the deployed /_js/nvsp-launch.js against local source (identical, so the live file is not stale), re-fetched all 8 pages, re-ran the execution suite at 11 of 11, and confirmed window.fbq is never even created while the pixel ID is empty. Deterministic gate powd-gate.js: PASS, score 1.000.
Verification level: FULL. Every requirement below is graded MET or NOT MET against a named piece of real evidence.
Conversion tracking for all 8 landing pages, wired through ONE shared file rather than 8 copies of a snippet. HubSpot Forms API v3 submission, CallRail DNI, and Meta Pixel with exactly one deduplicated Lead per conversion. Three fake success handlers and one inert onsubmit="return false;" were removed: those pages were showing visitors a "Thanks" while transmitting nothing, or reloading and losing the lead entirely.
Five empty CONFIG values at the top of the shared file are the entire launch switch. While they are empty every page runs in preview mode on purpose: forms validate and confirm so Kurt can walk the flow, nothing is transmitted, and no conversion is ever counted.
| # | Requirement | Status | Evidence observed |
|---|---|---|---|
| 1 | Critical. All 8 deployed pages load the shared launch script, and the file itself serves as real JavaScript | MET | Driven in Steel: launchScript: true on all 8. curl of all 8 page URLs plus /_js/nvsp-launch.js returned 200, and the served JS body contains the real fireLead and HUBSPOT_FORM_GUID source |
| 2 | Critical. A filled submit on every form page is intercepted: no navigation, and the visitor sees a confirmation | MET | All 6 form pages driven live: navigated: false, URL unchanged, confirmation text "Thanks. We are checking availability in your area." Screenshots below show the filled fields and the confirmation on the real page |
| 3 | Critical. TCPA consent is required, and submit is blocked without it | MET | Driven live on all 6 form pages: unchecking consent gives blockedWithoutConsent: true. No page carries novalidate, enforced by the static gate |
| 4 | Critical. No Lead event can be counted while the pixel is unconfigured | MET | pixelLoaded: false on all 8 live pages, so fbq does not exist and fireLead returns early. Confirmed again by the "preview mode never counts a Lead" test, which stubs a configured pixel and asserts zero Lead events |
| 5 | Major. Every phone number carries the CallRail DNI swap class | MET | Live: 04-callfirst 3 of 3 tel links swap-classed, 13-solatec 4 of 4. Test every tel: link carries the CallRail swap class asserts it across all 8 pages |
| 6 | Major. The dead and fake submit paths are gone | MET | 05-calculator (was onsubmit="return false;", completely inert) and 11-solarex (had no handler, reloaded the page) both now confirm on submit, driven live. Test asserts no page carries a fake status-writing handler |
| 7 | Major. Compliance gate still passes on all 8 pages | MET | node .planning/gate.mjs: 8 pages, 0 failures. Bans checked: em dash, install claim, third-party trademark, savings promise, approval verdict, novalidate, gradient text, fat radius |
| 8 | Major. Everything blocked on a person is written up as a concrete ask | MET | KURT-SIGNOFF.md: 8 figure questions traced to the 43 TODO tokens, 4 asset items, the 5 tracking values with owners, and a per-page approval table |
| 9 | Minor. The 4-step quiz still completes to the capture form on the live page | MET | Driven live: quizWalked: true, then the capture form filled and submitted successfully. Screenshot below |
| 10 | Minor. Pre-launch placeholders still render literally, which is correct and deliberate | MET | tokenStillVisible: true on all 6 form pages. A half-wired page must look unfinished rather than quietly ship a dead phone number into paid traffic |
Steel cloud browser, mobile 390 wide at 2x, against https://nvsp-picks.vercel.app. Each form shot is the state AFTER a real filled submit, scrolled to the confirmation.








$ node .planning/gate.mjs ok 01-split-form/index.html 22KB, 5 Kurt TODOs ok 04-callfirst/index.html 12KB, 1 Kurt TODOs ok 05-calculator/index.html 22KB, 6 Kurt TODOs ok 11-solarex/index.html 38KB, 9 Kurt TODOs ok 12-solargen/index.html 29KB, 5 Kurt TODOs ok 13-solatec/index.html 28KB, 7 Kurt TODOs ok 14-quiz/index.html 24KB, 4 Kurt TODOs ok 15-advertorial/index.html 23KB, 6 Kurt TODOs 8 pages, 0 failures $ node --test .planning/walk-wiring.mjs ok every page loads the shared launch script and owns no competing handler ok 01-split-form: submit is intercepted and answered, not navigated ok 05-calculator: submit is intercepted and answered, not navigated ok 11-solarex: submit is intercepted and answered, not navigated ok 12-solargen: submit is intercepted and answered, not navigated ok 14-quiz: submit is intercepted and answered, not navigated ok 15-advertorial: submit is intercepted and answered, not navigated ok preview mode never counts a Lead, because no lead exists yet ok 04-callfirst: the call tap is the conversion and fires one Lead ok 13-solatec: the call tap is the conversion and fires one Lead ok every tel: link carries the CallRail swap class tests 11, pass 11, fail 0 $ node --test .planning/walk-14-quiz.mjs tests 4, pass 4, fail 0
The wiring test was itself mutation-tested: a launch script tag was deleted from 15-advertorial, two tests failed, the page was restored. The test only evaluates the launch script when the page actually links it, so a missing tag cannot pass silently the way the dead quiz once did.
These pages cannot take ad spend yet, and nothing on this page claims otherwise.
Kurt: every figure. Ownership year, Travis Credit Union terms, the PG&E rate we are cleared to cite, ongoing-cost wording, pricing claim, years in business, which offices may be named, final disclaimer, privacy and terms URLs, and approved testimonials. All 43 placeholder tokens on the live pages trace back to those questions.
Gino or Freddy: the 5 tracking values, and the server-side CAPI job must reuse the meta_event_id the page submits, or Meta counts every lead twice.
The full written ask is KURT-SIGNOFF.md in the project folder.