Groundfloor Docs

Architecture Decisions

Summaries of key Control Plane architectural decisions — full ADRs remain in the product repository.

Groundfloor records architectural decisions in the Control Plane product repo (DECISIONS.md). This page summarizes decisions most relevant to integrators and operators.

Full decision records with rationale and lore links stay in the engineering repository. Treat this page as an index, not the source of truth.

Platform boundaries

IDDecisionSummary
D-019Control Plane separates from DataplanePlatform metadata in dedicated Postgres (gf_controlplane); customer data stays in Dataplane
D-003SpiceDB for ReBACAll authorization checks use SpiceDB with portal_* types
D-004Closed action vocabularyHandlers may only call predefined actions (read, write, administer, …)
D-007Environment modelEnterprise workspaces get dev/staging/prod; ISV sub-tenants typically do not
D-039Per-env namespace patternCoderunner deploy targets map to environment namespaces

Identity and auth

IDDecisionSummary
D-017Universal access patternDataplane access always through Control Plane proxies — no direct browser calls
Two identity planesPlatform Keycloak ≠ optional workspace site auth
Shared SpiceDB instanceportal_* prefix isolates Control Plane types from tenant schemas

Storage and secrets

IDDecisionSummary
D-040Pluggable secret backendSecretBackend protocol; Infisical default, memory fallback in dev
Object storeS3-compatible presigned URLs for files and Shell app releases
No projection for CPPermission projection is a customer-data feature, not platform metadata

Operations

IDDecisionSummary
SpiceDB DLQPostgres commit first, SpiceDB write after; DLQ + drain on failure
Audit retention30-day default on audit_events
Offboarding retention30-day freeze window before hard delete

Full ADR index

Engineers should read the complete log:

On this page