fabPlane uses three visibility states:

  • private — accessible only to authorized project members;
  • unlisted — not included in discovery or static generation;
  • public — eligible for a sanitized, indexable public snapshot.

Publishing rule

The static generator uses a database query with a mandatory visibility = 'public' predicate. The generated snapshot also carries the literal value visibility: "public", and public routes filter on it again.

Private repository contents are never fetched speculatively for public generation.

Changing visibility

Making a project public must enqueue a new public-snapshot job and invalidate affected project, owner, topic, sitemap, and discovery pages.

Making a project private is more urgent. The application must revoke public snapshot eligibility, remove published artifacts, invalidate CDN caches and derived indexes, and ensure previously generated routes return 404. Object retention policies may preserve private durable data, but it must no longer be publicly addressable.

Cache invalidation is part of the visibility transaction—not an optional cleanup task.