Skip to content

Add production attestation and consent-first privacy controls - #85

Merged
masarray merged 16 commits into
mainfrom
agent/p0-production-observability-privacy
Jul 20, 2026
Merged

Add production attestation and consent-first privacy controls#85
masarray merged 16 commits into
mainfrom
agent/p0-production-observability-privacy

Conversation

@masarray

@masarray masarray commented Jul 20, 2026

Copy link
Copy Markdown
Owner

What changed

  • add bilingual privacy.html and privasi.html policies as noindex,follow operational pages
  • add a compact bilingual consent banner and persistent analytics-preference control
  • keep GA4 configuration inert in HTML and dynamically load the local analytics client only after explicit consent
  • default all Google consent categories to denied, respect Do Not Track, disable advertising and personalization signals, and suppress the first-visit prompt when GA4 is not configured
  • keep privacy pages completely free of the analytics client while allowing preference management
  • stamp every deployable build with source commit, ref, commit timestamp, workflow run ID and attempt
  • verify public GitHub Pages build-info.json after deployment with cache-busting retries
  • fail when production serves a stale commit, mismatched stable release, missing privacy route or incorrect measurement state
  • make IndexNow notification depend on successful production attestation
  • validate consent, privacy, links and measurement in both Pages and scheduled measurement workflows
  • document the two-month GA4 retention requirement and activation checklist

P0 boundaries

No GA4 ID or service-account secret is added to source. When GA4_MEASUREMENT_ID is absent, analytics remains disabled and the automatic consent prompt is suppressed. Real measurement becomes active only after the repository variable is configured and a visitor explicitly grants consent.

Validation

  • product source, SEO, localization and release-trust contracts: passed
  • deterministic 46-page product build: passed
  • bilingual noindex privacy-page generation: passed
  • inert GA4 configuration and consent-first dynamic client loading: passed
  • default-denied analytics/ad consent and Do Not Track contract: passed
  • privacy pages confirmed without analytics client: passed
  • source/ref/timestamp/workflow attestation stamping: passed
  • internal links and fragment validation: passed
  • IndexNow dry run and public website boundaries: passed
  • measurement no-credential/offline reporting behavior: passed
  • ARSAS source, premium UX, GOOSE and SAS invariants: passed
  • ARIEC61850 API compatibility: passed
  • .NET restore and Windows compile: passed
  • portable x64 publish and artifact upload: passed

The public stale-deployment gate intentionally runs only after this PR is merged and GitHub Pages deploys the resulting main commit.

@masarray
masarray marked this pull request as ready for review July 20, 2026 19:52
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@masarray
masarray merged commit 5302607 into main Jul 20, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant