docs: exposure is not collection — verification framing fix #19

Merged
synapse merged 1 commit from docs/exposure-framing into develop 2026-08-22 09:57:28 +00:00
Owner

Operator-caught framing error, privacy-page-grade: the book's Framing section said visitors "see what is collected" via the gateway — but the gateway's contract documents the publication surface (exposure policy), while GoatCounter collects and persists its full aggregate set regardless of which panels are enabled.

The introduction now separates the two layers explicitly: collection = GoatCounter's design (aggregate, cookie-free — its own documentation's claim, unaffected by the gateway), publication = the gateway's policy (provable via /api/v1/panels and the served contract). A disabled panel means "not published", never "not collected".

Also corrected in the apex integration issue's guidance so the future privacy/stats page makes the right claims. Project-wide grep found no further instances; the panels-era docs already used correct answer/expose language.

🤖 Generated with Claude Code

https://claude.ai/code/session_01T5j3dAJVcUjZv9k76sRTt9

Operator-caught framing error, privacy-page-grade: the book's Framing section said visitors "see what is collected" via the gateway — but the gateway's contract documents the **publication** surface (exposure policy), while GoatCounter collects and persists its full aggregate set regardless of which panels are enabled. The introduction now separates the two layers explicitly: collection = GoatCounter's design (aggregate, cookie-free — its own documentation's claim, unaffected by the gateway), publication = the gateway's policy (provable via /api/v1/panels and the served contract). A disabled panel means "not published", never "not collected". Also corrected in the apex integration issue's guidance so the future privacy/stats page makes the right claims. Project-wide grep found no further instances; the panels-era docs already used correct answer/expose language. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01T5j3dAJVcUjZv9k76sRTt9
docs: exposure is not collection — fix the verification framing
All checks were successful
ci / gate (pull_request) Successful in 22s
f7d01b1f13
The book implied the gateway's contract shows "what is collected";
wrong layer: the contract proves the PUBLICATION surface (what this
deployment exposes), while GoatCounter collects its full aggregate set
regardless of panel policy. The introduction now states both layers
explicitly — a disabled panel means not published, not never collected.
Operator-caught before it could reach a privacy page.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T5j3dAJVcUjZv9k76sRTt9
synapse merged commit 4694a03e32 into develop 2026-08-22 09:57:28 +00:00
synapse deleted branch docs/exposure-framing 2026-08-22 09:57:28 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
synapse/goatcounter-stats-gateway!19
No description provided.