Public Wiki Privacy

The public site is an allow-through view of a private repository. Relationship, career, employer-specific, interview, incident, decision, inbox, research, operational-log, and generated brain-pack content must not be exposed to locked visitors.

Enforcement Boundary

ui/src/lib/privacy-policy.json is the shared policy source for the runtime and production bundler. ui/src/lib/gating.ts applies it to page, search, graph, embed, asset-API, sitemap, and agent discovery decisions. ui/scripts/bundle-wiki.mjs uses the same manifest when compiling deployment indexes.

The policy is fail-closed:

  • private: true always gates a page.
  • private: false cannot override a protected category, slug, token, or tag.
  • People, career, interview prep, postmortems, decisions, inbox, and private research are gated as categories.
  • Generated agent packs and the operational log are gated because they can quote or summarize private source pages.
  • Career-bearing USER companion pages are gated individually.
  • The /packs atlas, pack-detail routes, and /me portfolio require the global private session.
  • Private pages are removed from locked search, navigation, graph results, sitemaps, llms.txt, and structured discovery.
  • The production bundle emits only image assets referenced by public pages. Private-only assets are absent from the static deployment rather than relying on an application redirect gate.

Verification

Run:

pnpm --dir ui test:privacy-gating
pnpm --dir ui test:gate-passwords
npm run build

The privacy regression test covers relationship pages, career pages, employer-specific slugs, generated packs, user-profile pages, and the operational log. A production build additionally proves that the bundler and runtime can consume the shared manifest.

The GitHub repository itself is private. Website gating is still required because the deployed reader intentionally serves a public subset. Source: gh repo view Kevin-Liu-01/Kevin-Wiki --json visibility,isPrivate, 2026-07-14


Timeline

  • 2026-07-14 | Consolidated runtime and bundler privacy rules into one manifest; gated generated packs, the operational log, career-bearing USER pages, and the /me portfolio; added fail-closed regression coverage. Source: User request, 2026-07-14