{
    "schema_version": "1.0",
    "logic_version": "workbench-audit-1",
    "evidence_source": "supplied HTML fixture",
    "intent": "index",
    "coverage": {
        "state": "limited to fetched HTML",
        "performed": 15,
        "not_performed": 4,
        "not_applicable": 0,
        "failed_to_execute": 0,
        "not_checked": [
            "browser-rendered DOM",
            "robots.txt access rules",
            "actual Google indexing",
            "Google-selected canonical"
        ]
    },
    "observed": {
        "title": "Example workshop guide for site owners",
        "metaDesc": "",
        "contentHeadingOutline": [
            {
                "level": 1,
                "text": "Example workshop"
            }
        ],
        "canonicals": [
            "https://example.com/workshop"
        ],
        "robotsContents": {
            "robots": ", noindex"
        },
        "xRobotsTag": "",
        "imageAltSummary": {
            "totalImages": 1,
            "missingAlt": 0,
            "emptyAlt": 1,
            "decorativeEmptyAlt": 1,
            "problemEmptyAlt": 0,
            "withAlt": 0,
            "examples": [],
            "evidence": "Images: 1; missing alt: 0; decorative empty alt: 1; non-decorative empty alt: 0; descriptive alt: 0"
        },
        "linkDetails": {
            "total": 1,
            "internal": 1,
            "external": 0,
            "contentInternal": 1,
            "templateInternal": 0,
            "followed": 1,
            "nofollow": 0,
            "ugc": 0,
            "sponsored": 0,
            "fragment": 0,
            "mailto": 0,
            "tel": 0,
            "other": 0,
            "evidence": "Links: 1; internal: 1; external: 0; followed: 1; nofollow: 0; sponsored: 0; UGC: 0; fragments: 0; mailto: 0; tel: 0"
        },
        "schemaSummary": {
            "blocks": [],
            "count": 0,
            "types": [],
            "parseErrors": [],
            "parseErrorCount": 0,
            "duplicateTypes": [],
            "missingOpportunities": [],
            "evidence": "JSON-LD blocks: 0; types: none; parse errors: 0; duplicate types: none; likely missing: none"
        }
    },
    "tool": "free-seo-audit-checker",
    "generated_at": null,
    "source_url": "https://example.com/workshop",
    "final_url": "https://example.com/workshop",
    "fetch": {
        "http_status": 200,
        "duration_seconds": 0,
        "redirect_count": 0,
        "redirect_chain": [],
        "cached": false,
        "truncated": false,
        "body_bytes": 530,
        "simulated": true
    },
    "score": {
        "value": 81,
        "maximum": 100,
        "label": "Good",
        "algorithm": "severity-weighted-v1",
        "meaning": "Tool heuristic, not a Google assessment; informational and not-checked observations are excluded."
    },
    "sections": [
        {
            "id": "technical",
            "name": "Technical",
            "score": {
                "value": 100,
                "maximum": 100,
                "label": "Excellent"
            },
            "check_ids": [
                "http_status",
                "redirects",
                "viewport"
            ],
            "issue_count": 0
        },
        {
            "id": "indexability",
            "name": "Indexability",
            "score": {
                "value": 41,
                "maximum": 100,
                "label": "Poor"
            },
            "check_ids": [
                "canonical",
                "robots"
            ],
            "issue_count": 1
        },
        {
            "id": "snippet-social",
            "name": "Snippet/Social",
            "score": {
                "value": 81,
                "maximum": 100,
                "label": "Good"
            },
            "check_ids": [
                "title",
                "title_width",
                "meta_description",
                "open_graph",
                "twitter_card"
            ],
            "issue_count": 3
        },
        {
            "id": "content-structure",
            "name": "Content Structure",
            "score": {
                "value": 100,
                "maximum": 100,
                "label": "Excellent"
            },
            "check_ids": [
                "h1",
                "image_alt",
                "links",
                "schema",
                "word_count"
            ],
            "issue_count": 0
        }
    ],
    "checks": [
        {
            "id": "http_status",
            "section": "Technical",
            "name": "HTTP status",
            "status": "pass",
            "severity": "Critical",
            "deduction": 0,
            "evidence": "HTTP 200; response time 0 seconds.",
            "recommended_fix": "Return a stable HTTP 200 response for the preferred page URL.",
            "evidence_location": "https://example.com/workshop \u2014 HTTP status",
            "expected_condition": "Return a stable HTTP 200 response for the preferred page URL.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "redirects",
            "section": "Technical",
            "name": "Redirect chain",
            "status": "pass",
            "severity": "High",
            "deduction": 0,
            "evidence": "Redirect hops: 0.",
            "recommended_fix": "Link directly to the final URL and remove avoidable redirect hops.",
            "evidence_location": "https://example.com/workshop \u2014 Redirect chain",
            "expected_condition": "Link directly to the final URL and remove avoidable redirect hops.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "viewport",
            "section": "Technical",
            "name": "Mobile viewport",
            "status": "pass",
            "severity": "High",
            "deduction": 0,
            "evidence": "Viewport meta: width=device-width,initial-scale=1.",
            "recommended_fix": "Add a width=device-width viewport meta tag.",
            "evidence_location": "https://example.com/workshop \u2014 Mobile viewport",
            "expected_condition": "Add a width=device-width viewport meta tag.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "canonical",
            "section": "Indexability",
            "name": "Canonical",
            "status": "pass",
            "severity": "High",
            "deduction": 0,
            "evidence": "Canonical #1: https://example.com/workshop is absolute HTTPS and matches this domain",
            "recommended_fix": "Use exactly one absolute HTTPS canonical that resolves directly to the preferred HTTP 200 URL.",
            "evidence_location": "https://example.com/workshop \u2014 Canonical",
            "expected_condition": "Use exactly one absolute HTTPS canonical that resolves directly to the preferred HTTP 200 URL.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "robots",
            "section": "Indexability",
            "name": "Robots directives",
            "status": "fail",
            "severity": "Critical",
            "deduction": 14.93,
            "evidence": "HTML robots: {\"robots\":\", noindex\"}; X-Robots-Tag: (not set); no conflicts detected",
            "recommended_fix": "Remove unintended noindex directives and resolve conflicting HTML/header instructions.",
            "evidence_location": "https://example.com/workshop \u2014 Robots directives",
            "expected_condition": "Remove unintended noindex directives and resolve conflicting HTML/header instructions.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "title",
            "section": "Snippet/Social",
            "name": "Title",
            "status": "pass",
            "severity": "High",
            "deduction": 0,
            "evidence": "Characters: 38; estimated width: 252px.",
            "recommended_fix": "Add a descriptive title with a practical search-preview width.",
            "evidence_location": "https://example.com/workshop \u2014 Title",
            "expected_condition": "Add a descriptive title with a practical search-preview width.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "title_width",
            "section": "Snippet/Social",
            "name": "Title width",
            "status": "pass",
            "severity": "Improvement",
            "deduction": 0,
            "evidence": "Estimated title width: 252px.",
            "recommended_fix": "Shorten or clarify the title when its estimated width exceeds the preview guideline.",
            "evidence_location": "https://example.com/workshop \u2014 Title width",
            "expected_condition": "Shorten or clarify the title when its estimated width exceeds the preview guideline.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "meta_description",
            "section": "Snippet/Social",
            "name": "Meta description",
            "status": "fail",
            "severity": "Informational",
            "deduction": 0,
            "evidence": "Characters: 0.",
            "recommended_fix": "Write a clear description that summarizes the page; treat length as an editorial guide, not a ranking rule.",
            "evidence_location": "https://example.com/workshop \u2014 Meta description",
            "expected_condition": "Write a clear description that summarizes the page; treat length as an editorial guide, not a ranking rule.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "h1",
            "section": "Content Structure",
            "name": "H1 headings",
            "status": "pass",
            "severity": "High",
            "deduction": 0,
            "evidence": "H1 count: 1.",
            "recommended_fix": "Use one clear H1 for the page topic.",
            "evidence_location": "https://example.com/workshop \u2014 H1 headings",
            "expected_condition": "Use one clear H1 for the page topic.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "image_alt",
            "section": "Content Structure",
            "name": "Image alt attributes",
            "status": "pass",
            "severity": "Improvement",
            "deduction": 0,
            "evidence": "Images: 1; missing alt: 0; decorative empty alt: 1; non-decorative empty alt: 0; descriptive alt: 0",
            "recommended_fix": "Describe meaningful images and reserve empty alt text for decorative images.",
            "evidence_location": "https://example.com/workshop \u2014 Image alt attributes",
            "expected_condition": "Describe meaningful images and reserve empty alt text for decorative images.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "links",
            "section": "Content Structure",
            "name": "Links",
            "status": "info",
            "severity": "Informational",
            "deduction": 0,
            "evidence": "Links: 1; internal: 1; external: 0; followed: 1; nofollow: 0; sponsored: 0; UGC: 0; fragments: 0; mailto: 0; tel: 0",
            "recommended_fix": "Review link destinations and rel values for accuracy and intent.",
            "evidence_location": "https://example.com/workshop \u2014 Links",
            "expected_condition": "Review link destinations and rel values for accuracy and intent.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "schema",
            "section": "Content Structure",
            "name": "JSON-LD schema",
            "status": "info",
            "severity": "Improvement",
            "deduction": 0,
            "evidence": "JSON-LD blocks: 0; types: none; parse errors: 0; duplicate types: none; likely missing: none",
            "recommended_fix": "Correct malformed JSON-LD and keep only schema that accurately describes visible content.",
            "evidence_location": "https://example.com/workshop \u2014 JSON-LD schema",
            "expected_condition": "Correct malformed JSON-LD and keep only schema that accurately describes visible content.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "word_count",
            "section": "Content Structure",
            "name": "Word count",
            "status": "info",
            "severity": "Informational",
            "deduction": 0,
            "evidence": "Visible body words: 18.",
            "recommended_fix": "Cover the topic thoroughly; do not optimize toward a fixed word-count guarantee.",
            "evidence_location": "https://example.com/workshop \u2014 Word count",
            "expected_condition": "Cover the topic thoroughly; do not optimize toward a fixed word-count guarantee.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "open_graph",
            "section": "Snippet/Social",
            "name": "Open Graph",
            "status": "warning",
            "severity": "Improvement",
            "deduction": 2.24,
            "evidence": "og:title missing; og:description missing; og:image missing.",
            "recommended_fix": "Add accurate Open Graph title, description, and image values for social sharing.",
            "evidence_location": "https://example.com/workshop \u2014 Open Graph",
            "expected_condition": "Add accurate Open Graph title, description, and image values for social sharing.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "twitter_card",
            "section": "Snippet/Social",
            "name": "Twitter Card",
            "status": "warning",
            "severity": "Improvement",
            "deduction": 2.24,
            "evidence": "twitter:card: (missing).",
            "recommended_fix": "Add a Twitter Card type and matching social metadata when social previews matter.",
            "evidence_location": "https://example.com/workshop \u2014 Twitter Card",
            "expected_condition": "Add a Twitter Card type and matching social metadata when social previews matter.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        }
    ],
    "issues": [
        {
            "id": "robots",
            "section": "Indexability",
            "name": "Robots directives",
            "status": "fail",
            "severity": "Critical",
            "deduction": 14.93,
            "evidence": "HTML robots: {\"robots\":\", noindex\"}; X-Robots-Tag: (not set); no conflicts detected",
            "recommended_fix": "Remove unintended noindex directives and resolve conflicting HTML/header instructions.",
            "evidence_location": "https://example.com/workshop \u2014 Robots directives",
            "expected_condition": "Remove unintended noindex directives and resolve conflicting HTML/header instructions.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "meta_description",
            "section": "Snippet/Social",
            "name": "Meta description",
            "status": "fail",
            "severity": "Informational",
            "deduction": 0,
            "evidence": "Characters: 0.",
            "recommended_fix": "Write a clear description that summarizes the page; treat length as an editorial guide, not a ranking rule.",
            "evidence_location": "https://example.com/workshop \u2014 Meta description",
            "expected_condition": "Write a clear description that summarizes the page; treat length as an editorial guide, not a ranking rule.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "open_graph",
            "section": "Snippet/Social",
            "name": "Open Graph",
            "status": "warning",
            "severity": "Improvement",
            "deduction": 2.24,
            "evidence": "og:title missing; og:description missing; og:image missing.",
            "recommended_fix": "Add accurate Open Graph title, description, and image values for social sharing.",
            "evidence_location": "https://example.com/workshop \u2014 Open Graph",
            "expected_condition": "Add accurate Open Graph title, description, and image values for social sharing.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        },
        {
            "id": "twitter_card",
            "section": "Snippet/Social",
            "name": "Twitter Card",
            "status": "warning",
            "severity": "Improvement",
            "deduction": 2.24,
            "evidence": "twitter:card: (missing).",
            "recommended_fix": "Add a Twitter Card type and matching social metadata when social previews matter.",
            "evidence_location": "https://example.com/workshop \u2014 Twitter Card",
            "expected_condition": "Add a Twitter Card type and matching social metadata when social previews matter.",
            "dependencies": "Confirm page intent and template ownership before editing.",
            "verification_method": "Inspect the affected markup/header, then deliberately rerun with fresh fetch enabled. Use Search Console for actual Google indexing.",
            "limitations": "Fetched HTML only; no browser rendering or first-party Google indexing evidence."
        }
    ],
    "ai": {
        "status": "disabled",
        "optional": true
    },
    "fixture": "audit-example-v1"
}