Skip to content

feat(app): The Followed — a surveillance-reckoning landing page (/why) - #292

Merged
crs48 merged 7 commits into
mainfrom
claude/0234-the-followed-a-surveillance-reckoning-landing-pa
Jun 27, 2026
Merged

feat(app): The Followed — a surveillance-reckoning landing page (/why)#292
crs48 merged 7 commits into
mainfrom
claude/0234-the-followed-a-surveillance-reckoning-landing-pa

Conversation

@crs48

@crs48 crs48 commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Implements exploration 0234 — The Followed. A standalone narrative landing page at /why that turns the everyday absurdity of online tracking into xNet's argument: you'd never allow this in the physical world — so why online?

The page (three acts + honesty)

  • Act I — an ordinary afternoon. A scroll-driven re-enactment where online tracking is made physical (a greeter clips a tag to your collar…), with a sticky "Trackers on you" counter that ticks up as you scroll.
  • The reveal. "You'd call that dystopian. You did it today — online — about 2,230 times."
  • Act II — the real mechanisms. Each beat re-annotated with the actual online mechanism and a cited source, including hopeful counter-beats (Oracle Advertising shut down; FTC 2024 location-data bans) so it's an invitation, not a doom-scroll.
  • Act III — the turn to xNet. Local-first, you hold the keys, every change signed by you, no pixel/broker/ads, tracking off by default, open & verifiable — each grounded in what the codebase actually supports.
  • Honesty box. The deliberate non-overclaims (encryption is opt-in; a hub holds only encrypted data; pseudonymous, not anonymous) in xNet's own voice — the page's credibility engine.
  • Live self-audit. "This page set 0 cookies · 0 third-party requests · 0 trackers" — backed by a runtime check that flips the copy and warns if it ever regresses.

Truth discipline (the whole point)

Facts live in a cited data module (site/src/data/surveillance.ts), enforced by a build-time validator (validate-surveillance.ts) wired into the gated site build — mirroring the compare.ts convention. Accuracy flags from research are honored: the Target "angry father" anecdote is framed as folklore; no "Google killed cookies" claim; Oracle Advertising is past-tense; the page leads with the sourced 2,230-companies stat rather than the over-repeated "Meta Pixel = 30% of the web."

Wiring

  • New /why route + 7 section components under site/src/components/followed/.
  • Linked from the footer ("Why xNet") and a subtle homepage prompt in WhatIsXNet.
  • Degrades gracefully with JS disabled (<noscript> reveals scroll content).

Verification

  • pnpm --filter site build green: validator passes (8 claims, 2 hopeful, all cited), /why emitted, llms-full regenerated.
  • Verified in-browser across desktop + mobile and light + dark; the live self-audit reads 0 cookies / 0 third-party requests.
  • Motion stays on the approved .animate-on-scroll primitive (motion-vocab gate passes).
  • Site-only + docs — no publishable package touched, no changeset required.

For the optional "regression assertion" validation item, the in-page runtime self-audit guard is used instead of adding Playwright e2e infra (the site/ package has none).

🤖 Generated with Claude Code

xNet Test and others added 7 commits June 27, 2026 09:28
… Followed)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Two-act narrative: a physicalized re-enactment of online tracking (Act I,
scroll-driven tracker counter) that collapses into the real, cited mechanisms
(Act II), then turns to xNet's local-first model (Act III), an honesty box of
deliberate non-overclaims, and a live 0-cookies/0-trackers self-audit.
Degrades gracefully with JS disabled.
@crs48
crs48 temporarily deployed to pr-292 June 27, 2026 16:56 — with GitHub Actions Inactive
github-actions Bot added a commit that referenced this pull request Jun 27, 2026
@github-actions

github-actions Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

Preview removed for PR #292.

]

export const alarmClaims = CLAIMS.filter((c) => c.tone === 'alarm')
export const hopeClaims = CLAIMS.filter((c) => c.tone === 'hope')
@crs48
crs48 merged commit 2b3c773 into main Jun 27, 2026
13 checks passed
@crs48
crs48 deleted the claude/0234-the-followed-a-surveillance-reckoning-landing-pa branch June 27, 2026 17:09
github-actions Bot added a commit that referenced this pull request Jun 27, 2026
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.

2 participants