{"description":"Concrete route fixtures that turn reusable page-pattern contracts into inspectable pages with visible sections, metadata, schema, traceability, good/bad examples, agent instructions, QA gates, and completion criteria.","objective":"Give a future agent enough structure to start from the main URL and understand how to inspect, plan, build, validate, and improve a serious website without needing prior chat context.","pattern_count":6,"fixture_count":6,"fixtures":[{"id":"homepage-agent-entity-fixture","patternId":"homepage-entity-summary","route":"/fixtures/page-patterns/homepage-agent-entity/","title":"Homepage Agent Entity Fixture","scenario":"A public website homepage that must let an agent identify the entity, offer, audience, proof, next routes, and machine-readable discovery surfaces without prior chat context.","canonicalQuestion":"What is this site, who is it for, what proof exists, and where should the agent inspect next?","requiredVisibleSections":["Entity summary","Primary offer","Audience fit","Proof summary","Core route links","Machine discovery links","Source and claim notes"],"metadataChecks":["One H1 states the entity and purpose","Title and description identify the agent-facing reference","Canonical route matches fixture route","Open Graph metadata mirrors the page purpose"],"schemaChecks":["Organization and WebSite schema come from BaseLayout","WebPage schema names the fixture and pattern ID","Schema does not introduce claims missing from visible sections"],"traceabilityChecks":["Identity, proof, and next-step claims cite approved fixture evidence","Unsupported superiority language is listed as a blocked example"],"sourceEvidence":["src/data/agent-reference.ts: pagePatterns.homepage-entity-summary","src/data/agent-reference.ts: systemPurpose","/agent-manifest.json","/llms-full.txt"],"goodExample":"A homepage starts with an entity summary, links to agent-manifest, file-map, examples, QA contract, and states what claims are source-backed.","badExample":"A homepage uses a clever hero line, vague transformation promise, and no manifest or source route links.","agentInstructions":["Read the H1 and first section before judging visual design","Verify the linked machine endpoints exist","Compare homepage claims to manifest and LLM summaries","Run qa:fixtures after changing this pattern"],"qaGates":["npm run qa:fixtures","npm run qa:seo","npm run qa:aeo"],"completionCriteria":["Agent can explain entity and purpose from the fixture","Fixture links to machine discovery surfaces","Visible claims match schema and source notes"]},{"id":"service-offer-scope-fixture","patternId":"service-offer-page","route":"/fixtures/page-patterns/service-offer-scope/","title":"Service Offer Scope Fixture","scenario":"A service page where an agent must separate buyer pain, scope, inputs, deliverables, proof, objections, and next step before writing copy or schema.","canonicalQuestion":"What is included in the offer, what inputs are required, what proof supports it, and what is the next step?","requiredVisibleSections":["Problem","Offer scope","Inputs required","Process","Deliverables","Proof","Objections","Next step","Source and claim notes"],"metadataChecks":["One H1 identifies the specific service fixture","Title and description are service-specific","Canonical route is the fixture route"],"schemaChecks":["WebPage schema names service-offer-page as the pattern","Service schema requirements are visible as obligations","No pricing, guarantee, or credential claims appear without source notes"],"traceabilityChecks":["Scope, deliverables, proof, and next-step claims cite fixture evidence","Unsupported guarantees are called out as blocked"],"sourceEvidence":["src/data/agent-reference.ts: pagePatterns.service-offer-page","/source-traceability.json","/services/schema.json"],"goodExample":"The offer states the inputs required, the work sequence, deliverables, proof link, scope caveats, and a low-friction next step.","badExample":"The service page promises growth, lists capabilities, and asks for a call without defining outputs or evidence.","agentInstructions":["Map every offer claim to source evidence before polishing copy","Keep scope caveats near benefits","Link proof and contact routes","Run qa:fixtures after changing route structure"],"qaGates":["npm run qa:fixtures","npm run qa:seo","npm run qa:aeo"],"completionCriteria":["Inputs and deliverables are explicit","Proof and next step are visible","Schema obligations match visible facts"]},{"id":"proof-evidence-artifact-fixture","patternId":"proof-evidence-page","route":"/fixtures/page-patterns/proof-evidence-artifact/","title":"Proof Evidence Artifact Fixture","scenario":"A proof page where an agent must preserve permission, baseline, action, result, metric context, and caveats before using evidence in copy or schema.","canonicalQuestion":"What claim is being supported, what evidence proves it, and what limitations must stay attached?","requiredVisibleSections":["Supported claim","Evidence artifact","Permission note","Baseline","Work performed","Result","Limitations","Related offer link","Source and claim notes"],"metadataChecks":["One H1 identifies the proof fixture","Title avoids unsupported outcome hype","Description includes evidence context"],"schemaChecks":["WebPage schema names proof-evidence-page as the pattern","Review schema is treated as conditional, not automatic","Metrics require dates and context"],"traceabilityChecks":["Every result, testimonial, screenshot, logo, or metric has source and permission status","Private evidence cannot leak to LLM summaries"],"sourceEvidence":["src/data/agent-reference.ts: pagePatterns.proof-evidence-page","/source-traceability.json","/crawl-evidence.json"],"goodExample":"A proof item states the claim, evidence type, permission status, baseline, action, result, date range, caveat, and related service.","badExample":"A proof page shows anonymous wins, percentages without dates, and review schema for a quote that is not eligible.","agentInstructions":["Classify public, private, or sanitized proof before publishing","Keep metric caveats next to metrics","Do not place private proof in LLM endpoints","Run qa:fixtures after proof pattern changes"],"qaGates":["npm run qa:fixtures","npm run qa:crawl","npm run qa:aeo"],"completionCriteria":["Claim, evidence, permission, and caveat are visible","Schema eligibility is explicit","Private-proof boundaries are documented"]},{"id":"answer-ready-resource-fixture","patternId":"answer-ready-resource-page","route":"/fixtures/page-patterns/answer-ready-resource/","title":"Answer Ready Resource Fixture","scenario":"A resource page where an agent must answer the target question directly, then add definitions, nuance, decision criteria, caveats, and related entity links.","canonicalQuestion":"What is the direct answer, what entities matter, what caveats apply, and what should the reader inspect next?","requiredVisibleSections":["Direct answer","Definition","Detailed explanation","Decision criteria","Caveats","Related entity links","FAQ","Source and claim notes"],"metadataChecks":["One H1 matches the target question intent","Title and description answer without overclaiming","Canonical route is stable"],"schemaChecks":["WebPage schema names answer-ready-resource-page as the pattern","Article, FAQPage, DefinedTerm, and BreadcrumbList obligations map to visible sections","FAQ questions must be visible"],"traceabilityChecks":["Definitions and recommendations cite source or internal proof","Caveats remain attached to recommendations"],"sourceEvidence":["src/data/agent-reference.ts: pagePatterns.answer-ready-resource-page","/aeo-geo-context.json","/llms-full.txt"],"goodExample":"The page begins with the answer, defines terms, gives criteria, keeps caveats near recommendations, and links to related proof or services.","badExample":"The page opens with a long intro, hides the answer, recommends a tool without criteria, and marks invisible questions as FAQ schema.","agentInstructions":["Write the direct answer before expanding context","Link stable entity definitions","Keep caveats near recommendations","Run qa:fixtures after changing resource structure"],"qaGates":["npm run qa:fixtures","npm run qa:aeo"],"completionCriteria":["Question is answered directly","Entities and caveats are visible","Schema requirements match the visible FAQ and article sections"]},{"id":"contact-conversion-fixture","patternId":"contact-conversion-page","route":"/fixtures/page-patterns/contact-conversion/","title":"Contact Conversion Fixture","scenario":"A contact page where an agent must expose the next step, contact options, fit qualifier, expectations, service area, fallback path, and privacy note.","canonicalQuestion":"How should a qualified person contact the business, what should they provide, and what fallback exists?","requiredVisibleSections":["Contact options","Expected next step","Fit qualifier","Service area","Privacy expectation","Fallback path","Source and claim notes"],"metadataChecks":["One H1 identifies the contact fixture","Title and description describe the contact path","Contact facts are visible to crawlers"],"schemaChecks":["WebPage schema names contact-conversion-page as the pattern","ContactPage and Organization obligations are visible","Response-time claims require source-backed configuration"],"traceabilityChecks":["Email, phone, address, service area, response time, and availability claims require configured source facts","Form-only contact is blocked unless fallback is documented"],"sourceEvidence":["src/data/agent-reference.ts: pagePatterns.contact-conversion-page","/contact/schema.json","src/site.config.ts"],"goodExample":"The contact page states who should reach out, what to include, what happens next, the privacy expectation, and a fallback path.","badExample":"The contact page has only an embedded form, no fallback, no service-fit qualifier, and an unverified response-time promise.","agentInstructions":["Confirm contact facts come from config before publishing","Provide a crawler-visible fallback path","Keep privacy expectations close to the form path","Run qa:fixtures after changing contact pattern"],"qaGates":["npm run qa:fixtures","npm run qa:seo","npm run qa:aeo"],"completionCriteria":["Contact options and fallback are visible","Fit and expectations are clear","Contact claims trace to source configuration"]},{"id":"schema-backed-detail-fixture","patternId":"schema-backed-detail-page","route":"/fixtures/page-patterns/schema-backed-detail/","title":"Schema Backed Detail Fixture","scenario":"A schema-backed detail page where an agent must compare visible facts, schema type, entity IDs, breadcrumbs, source claims, and blocked private facts.","canonicalQuestion":"Which visible facts are safe to expose through schema, and which facts must be blocked or sourced first?","requiredVisibleSections":["Visible fact inventory","Schema type selection","Stable entity IDs","Relationship context","Source-backed claim references","Blocked schema examples","Source and claim notes"],"metadataChecks":["One H1 identifies the schema fixture","Title and description describe schema validation","Canonical route is stable"],"schemaChecks":["WebPage schema names schema-backed-detail-page as the pattern","Schema facts are visible or source-backed","Entity IDs stay stable across related endpoints"],"traceabilityChecks":["Every schema fact maps to visible content, site config, or source traceability","Private or blocked facts are excluded"],"sourceEvidence":["src/data/agent-reference.ts: pagePatterns.schema-backed-detail-page","/schemamap.xml","/schema.json","/source-traceability.json"],"goodExample":"The route lists visible facts, source IDs, schema type, entity ID, related schema endpoints, and blocked facts that must not appear in JSON-LD.","badExample":"The schema endpoint adds credentials, hidden FAQ answers, private service areas, or unstable entity IDs not visible on the page.","agentInstructions":["Inventory visible facts before editing JSON-LD","Check source traceability for every schema claim","Keep entity IDs stable","Run qa:fixtures after changing schema-backed patterns"],"qaGates":["npm run qa:fixtures","npm run qa:aeo"],"completionCriteria":["Visible fact inventory exists","Blocked schema facts are named","Schema and source-traceability surfaces align"]}]}