{
  "site": "Bellwright Reference",
  "lastReviewed": "2026-10-06",
  "purpose": "Documents the repository-level boundary for Google AdSense consent handling and Auto Ads. This file confirms what the source code can verify, while explicitly separating the Google-certified CMP publication state and final Auto Ads placement that must be checked in the publisher dashboard.",
  "adsenseClient": "ca-pub-4187483789341488",
  "repositoryControls": {
    "htmlPagesReviewed": 131,
    "adEligiblePagesWithClientMarker": 96,
    "pagesWithoutAdClientMarker": 35,
    "directAdSenseScriptTagsInHtml": 0,
    "sharedLoader": "assets/site.js",
    "eligiblePageRule": "A page is ad-eligible only when it declares window.BELLWRIGHT_ADSENSE_CLIENT and loads the shared site script.",
    "excludedPageRule": "Pages without window.BELLWRIGHT_ADSENSE_CLIENT should not load the AdSense tag from the repository.",
    "runtimeStatusObject": "window.BELLWRIGHT_ADSENSE_CONSENT_STATUS",
    "htmlVerificationAttributes": [
      "data-auto-ads",
      "data-ad-consent-default",
      "data-cmp-runtime-boundary",
      "data-auto-ads-placement"
    ]
  },
  "cmpConsentBoundary": {
    "whatRepositoryCanConfirm": [
      "Google advertising consent defaults are set to denied before the shared AdSense loader runs.",
      "Ad-eligible pages expose window.BELLWRIGHT_ADSENSE_CLIENT and excluded pages do not.",
      "The shared script initializes window.googlefc.callbackQueue so Google's Privacy & messaging interface can run when the publisher account and visitor region provide it.",
      "A Privacy Choices control is added to the footer and calls googlefc.showRevocationMessage when that Google interface is available.",
      "The runtime status object reports whether the Google privacy message interface is pending, available, queued or unavailable in the current account/region state."
    ],
    "whatRepositoryCannotFullyConfirm": [
      "Whether the publisher account has published a Google-certified CMP or Google Privacy & messaging consent message for every required region.",
      "Which consent message a visitor receives after Google applies account, region, device and policy settings.",
      "Whether personalized ads are enabled or blocked by a later publisher-dashboard change outside this repository."
    ],
    "publisherDashboardRequiredChecks": [
      "Confirm a Google-certified CMP or Google Privacy & messaging message is published for EEA, UK and Swiss traffic before personalized ads are served.",
      "Use Google's Privacy & messaging preview for the target regions and devices.",
      "Retest the Privacy Choices control after changing AdSense privacy-message settings, funding choices, region rules or ad-personalization settings."
    ]
  },
  "autoAdsPlacementBoundary": {
    "whatRepositoryCanConfirm": [
      "Whether a page is eligible to load the AdSense Auto Ads tag.",
      "Whether Google advertising consent defaults are present before the shared script runs.",
      "Whether major navigation, answer, quick-jump, sidebar, footer, FAQ and policy controls are marked as protected regions in the DOM."
    ],
    "whatRepositoryCannotFullyConfirm": [
      "The exact final Auto Ads position chosen by Google at runtime.",
      "The ad format selected by AdSense for a specific visitor, viewport, region or account setting.",
      "Whether a future AdSense dashboard setting changes placement behavior without a code change."
    ],
    "publisherDashboardRequiredChecks": [
      "Use AdSense Auto Ads preview before publishing or after layout changes.",
      "Use AdSense page exclusions for policy pages, contact pages, update logs, internal directories and pages intentionally left without the client marker.",
      "Use Auto Ads excluded areas if Google preview places ads inside the main answer, quick navigation, related-link blocks, forms, page footer or policy sections.",
      "Review ad placements again after enabling new Auto Ads formats, anchor ads, vignette ads or experiments."
    ]
  },
  "protectedSelectors": [
    ".site-header",
    ".breadcrumb",
    ".page-title",
    ".answer-box",
    ".page-quick-nav",
    ".quick-nav",
    ".guide-details",
    ".sidebar",
    ".mini-list",
    ".decision-table",
    ".image-feature-grid",
    ".faq",
    ".site-footer",
    ".footer-route-band",
    ".footer-bottom",
    ".cmp-notice",
    "[aria-label='Breadcrumb']",
    "[aria-label='Page quick navigation']",
    "[data-privacy-choices]"
  ],
  "pagesWithoutAdClientMarker": [
    "about.html",
    "advertising-disclosure.html",
    "bellwright-updates.html",
    "contact.html",
    "editorial-policy.html",
    "guides/best-beginner-route-in-bellwright.html",
    "guides/do-you-need-a-dedicated-hauler-in-bellwright.html",
    "guides/how-many-villagers-should-you-recruit-early-in-bellwright.html",
    "guides/how-to-grow-village-trust-without-slowing-production-in-bellwright.html",
    "guides/how-to-stop-research-stalling-in-bellwright.html",
    "guides/how-to-stop-wasting-worker-time-in-bellwright.html",
    "guides/how-to-use-traders-to-fix-shortages-in-bellwright.html",
    "guides/should-you-fix-food-or-hauling-first-in-bellwright.html",
    "guides/should-you-get-coal-or-iron-ore-first-in-bellwright.html",
    "guides/should-you-move-your-base-or-build-an-outpost-in-bellwright.html",
    "guides/should-you-upgrade-armor-or-weapons-first-in-bellwright.html",
    "guides/what-food-should-you-carry-before-longer-fights-in-bellwright.html",
    "guides/when-should-you-add-more-builders-in-bellwright.html",
    "guides/when-should-you-expand-storage-in-bellwright.html",
    "guides/when-should-you-open-a-second-production-chain-in-bellwright.html",
    "guides/when-should-you-replace-your-starter-gear-in-bellwright.html",
    "guides/why-new-villagers-make-your-village-slower-in-bellwright.html",
    "guides/why-one-combat-trip-keeps-taking-your-whole-day-in-bellwright.html",
    "guides/why-your-builders-keep-standing-around-in-bellwright.html",
    "guides/why-your-building-queue-keeps-growing-in-bellwright.html",
    "guides/why-your-combat-upgrades-still-feel-weak-in-bellwright.html",
    "guides/why-your-crafting-chain-keeps-breaking-in-bellwright.html",
    "guides/why-your-first-real-fight-keeps-going-bad-in-bellwright.html",
    "guides/why-your-food-supply-keeps-collapsing-in-bellwright.html",
    "guides/why-your-mining-trip-keeps-feeling-not-worth-it-in-bellwright.html",
    "guides/why-your-villagers-keep-hauling-the-wrong-items-in-bellwright.html",
    "pages.html",
    "privacy-policy.html",
    "site-updates.html",
    "terms-of-service.html"
  ]
}
