{"description":"Executable QA contract for this website reference repo.","commands":[{"command":"npm run qa:routes","checks":["Core HTML routes return 200","Machine endpoints return 200","Internal links return 200","Sitemap URLs resolve"]},{"command":"npm run qa:seo","checks":["Unique titles","Valid descriptions","Canonical URLs","One H1","Open Graph parity","Favicon","JSON-LD"]},{"command":"npm run qa:aeo","checks":["llms.txt","llms-full.txt","schemamap.xml","Schema endpoint JSON","Contract registry","Site studies","SEO/AEO evaluation","Source traceability","Organization/WebSite facts","FAQ/LocalBusiness where expected"]},{"command":"npm run qa:browser","checks":["Desktop screenshots","Mobile screenshots","Visible H1","Horizontal overflow","Viewport overflow","Potential text clipping report","Landmark/name/alt/duplicate-id/focus heuristics","Screenshot baseline visual diff with mutation control","Keyboard focus navigation per desktop route","axe-core WCAG 2.2 AA accessibility scan (2.0/2.1/2.2 tag set)"]},{"command":"npm run qa:crawl","checks":["Required crawl inventory exports","Screaming Frog issue export summary","Critical response-code findings","Crawl evidence report under reports/crawl/"]},{"command":"npm run qa:agent","checks":["Main URL orientation simulation","SEO/AEO walkthrough selection","Crawl/browser readiness simulation","Handoff continuation simulation"]},{"command":"npm run qa:contracts","checks":["Live contract registry endpoints","Schema/source existence","Missing endpoint fixture","Missing schema fixture","Missing source fixture","Missing evidence fixture","Execution-track document statuses match /agent-tasks.json","Execution-track drift fixtures fail as expected"]},{"command":"npm run qa:copy","checks":["Weak copy fixtures fail control checks","Improved copy includes required conversion signals","Required principles map to the copy contract","Forbidden phrases do not survive transformation","Report saved under reports/copy-stress/"]},{"command":"npm run qa:crawl-stress","checks":["Static export re-crawled from homepage, sitemap, and manifest seeds","Broken internal links fail with referrers","Redirect chains beyond budget fail","Documented response-time and response-size budgets enforced","Sitemap URLs unreachable from the homepage fail","Synthetic negative controls fail as expected"]},{"command":"npm run qa:playbooks","checks":["Every site-type playbook has a simulated build fixture","Required inputs are provided or explicitly waived","Planned pages map to known page patterns and required schema","Published claims carry simulated source IDs and blocked claims carry reasons","Playbook QA gates and stress tests are covered","Unresolved risks are declared","Negative controls fail in expected ways"]},{"command":"npm run qa:perf","checks":["Local LCP/CLS measured per route against budgets","HTML/CSS/JS/image/font asset budgets enforced","Images require dimensions; head scripts may not block; stylesheet count capped","Zero-JS default with explicit exception list","Synthetic budget-violation controls fail as expected"]},{"command":"npm run qa:demo","checks":["Demo source chain files exist","Demo pages implement the full playbook page model","Required schema types render in JSON-LD","Visible claims carry allowed ledger claim IDs","Blocked phrases stay off pages, schema, and LLM surfaces","Fictional boundary stays visible","Negative controls fail as expected"]},{"command":"npm run qa:domain","checks":["Local static route readiness","Machine route readiness","Required security headers configured in public/_headers","Optional QA_PRODUCTION_URL apex/www/http/https/TLS variant evidence","Optional QA_PRODUCTION_URL live security-header verification"]},{"command":"npm run qa:nectiv","checks":["LLM surfaces for AI/AEO claims","Indexable H1/description/canonical guardrails","Sitemap/core-route parity","Crawler-visible critical URL findings","Production-domain evidence warning"]},{"command":"npm run qa:handoff","checks":["Generated handoff report","QA evidence summaries","Residual risks","Next actions from /agent-tasks.json"]},{"command":"npm run qa:all","checks":["Spec audit","Astro check","Build","Route QA","SEO QA","Browser visual QA","Performance budget QA","Crawl evidence QA","Crawl stress QA","AEO QA","Agent simulation QA","Contract drift QA","Copy stress QA","Page-pattern fixture QA","Playbook simulation QA","Demo build QA","Domain/static QA","Generated handoff QA"]}],"required_before_ready":"npm run qa:all","future_testing_backlog":[{"id":"address-second-cold-audit-findings","status":"next","priority":"high","title":"Act on the second zero-context audit of the live site","rationale":"After the quality campaign (performance budgets, WCAG 2.2 contract, real tokens, two branded demos, published evidence, intent/measurement/i18n layers), the system needs fresh zero-context audit agents to re-grade every category against the live deployment. Any category still below B+ becomes the next improvement round; a clean audit closes the campaign loop.","files":["reports/","src/data/agent-reference.ts"],"completionCriteria":["Two independent zero-context audits of the live site recorded","Every audited category at B+ or higher, or findings converted to tasks","Audit-driven fixes verified by qa:all"]},{"id":"run-live-aeo-geo-visibility-scan","status":"later","priority":"medium","title":"Run a guarded live answer-engine visibility scan","rationale":"AEO/GEO fixtures prove evidence shape, not live model behavior. A checkpointed prompt scan through approved accounts with cost guardrails would turn answer-engine positioning from theory into recorded citations and gaps.","files":["data/derived/aeo-geo-context/","reports/"],"completionCriteria":["Scan runs within approved cost/error guardrails","Prompt fixtures map to recorded live answers","Citation gaps become tasks","No unsupported visibility claims are added to public surfaces"]}]}