{"schemaVersion":"1.0","canonicalUrl":"https://kinskereyes.com/quality.json","site":"https://kinskereyes.com","generatedFrom":"Kinske portfolio QA scripts and typed content modules","lastUpdated":"2026-06-10","purpose":"Machine-readable quality, accessibility, SEO, PWA, and performance profile for the Kinske Reyes portfolio.","coverage":{"routes":[{"path":"/","url":"https://kinskereyes.com/"},{"path":"/work","url":"https://kinskereyes.com/work"},{"path":"/work/good-to-live-podcast","url":"https://kinskereyes.com/work/good-to-live-podcast"},{"path":"/work/x-griin-ai","url":"https://kinskereyes.com/work/x-griin-ai"},{"path":"/work/short-form-editing","url":"https://kinskereyes.com/work/short-form-editing"},{"path":"/capabilities","url":"https://kinskereyes.com/capabilities"},{"path":"/about","url":"https://kinskereyes.com/about"},{"path":"/resume","url":"https://kinskereyes.com/resume"},{"path":"/contact","url":"https://kinskereyes.com/contact"}],"viewports":[{"label":"mobile","width":390,"height":900},{"label":"tablet","width":768,"height":1000},{"label":"desktop","width":1440,"height":1100}],"endpointFamilies":["sitemap","robots","humans","llms","portfolio index","public resume JSON","contact vCard","security contact policy","Open Graph images","PWA manifest and service worker"]},"budgets":{"webVitals":{"cls":0.1,"fcpMs":1800,"inpMs":200,"lcpMs":2500,"loadDurationMs":6000},"network":{"fontTransferBytes":260000,"imageTransferBytes":2800000,"resourceCount":90,"scriptTransferBytes":900000,"styleTransferBytes":325000,"thirdPartyRequestCount":8,"totalTransferBytes":3500000}},"checks":{"localFullQaCommand":"npm run qa:full","commands":["npm run typecheck","npm run lint","npm run check:quality","npm run test:unit","npm run check:live-gtl","npm run build","npm run test:e2e","npm run qa:local","npm run qa:production","npm run audit:security"],"asserts":["metadata, canonical URLs, Open Graph, and Twitter images","JSON-LD for person, occupation, work, FAQ, contact, and breadcrumbs","WCAG AA text contrast sampling and visible focus states","desktop, tablet, mobile, landscape, and reduced-motion layout stability","PWA install files, service worker runtime, and offline fallback","route weight budgets for scripts, styles, fonts, images, and third-party requests","no private phone number or home address in public data surfaces"]},"discovery":{"humans":"https://kinskereyes.com/humans.txt","llms":"https://kinskereyes.com/llms.txt","llmsFull":"https://kinskereyes.com/llms-full.txt","portfolioIndex":"https://kinskereyes.com/portfolio-index.json","publicResume":"https://kinskereyes.com/resume.json","contactCard":"https://kinskereyes.com/kinske-reyes.vcf","securityContact":"https://kinskereyes.com/.well-known/security.txt","sitemap":"https://kinskereyes.com/sitemap.xml","robots":"https://kinskereyes.com/robots.txt"},"observability":{"vercelAnalytics":true,"vercelSpeedInsights":{"packageInstalled":true,"enabledEnv":"NEXT_PUBLIC_VERCEL_SPEED_INSIGHTS=true","dashboardSetup":"Enable Speed Insights in the Vercel project first; then set the env flag so the runtime script does not 404."},"plausibleOptionalEnv":"NEXT_PUBLIC_PLAUSIBLE_DOMAIN","webVitalsDebugEnv":"NEXT_PUBLIC_WEB_VITALS_DEBUG","webVitalsPlausibleEnv":"NEXT_PUBLIC_WEB_VITALS_TO_PLAUSIBLE"},"security":{"pageCsp":"Static App Router pages use Next's static-friendly CSP with self/default/object/frame protections and required Vercel observability hosts.","serviceWorkerCsp":"The /sw.js executable path uses default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'.","securityContact":"Public security contact policy is available at https://kinskereyes.com/.well-known/security.txt.","strictNonceTradeoff":"Strict nonce CSP is tracked as a separate hardening decision because Next.js nonce support forces dynamic rendering and removes static/CDN optimization for portfolio pages."},"privacy":{"privatePhoneIncluded":false,"privateAddressIncluded":false,"contactFormLogPolicy":"Structured logs avoid submitted email and message content."},"launchBoundary":{"contactEmailProvider":"Contact form uses direct-email handoff until production Resend credentials and recipient are configured.","liveFacts":"Good To Live episode, guest, and topic counts are rechecked with npm run check:live-gtl before publication."}}