Person is not Profile
Keep durable person identity separate from profile presentation.
Additional joins and projection rules are required.
Design reasoning
Every abstraction has a cost. These records explain what each boundary buys and what it asks us to maintain.
Keep durable person identity separate from profile presentation.
Additional joins and projection rules are required.
Attach work assignments to stable production participation.
Work history needs its own identity and lifecycle.
Model work identity separately from tasks and review corrections.
People navigate between related but independent records.
Evaluate explicit scoped capabilities independently of role labels.
Authority must be configured and evaluated separately.
Resolve an intended audience and check current subject access independently.
Recipient eligibility and access require separate reasoning.
Use flexible production groups with explicit work links.
Generic groups need understandable types and contextual labels.
Represent production artifacts with context and immutable versions.
Specialized capture and preview adapters are still needed.
Use a shared workflow engine with subject-owned adapters and frozen definitions.
Adapters retain subject policy and integration coverage must be tracked.
Compose authorized source records and actionable projections into Today.
Projection lag, bounded reads and partial coverage must be visible.
Build an explicit public projection and independent publication configuration.
Projection and publication versions require their own maintenance.
Reuse presentation primitives while keeping security and lifecycle domain-specific.
Shared components need explicit context contracts.
Share identity and server contracts while implementing native interaction separately.
Incremental migration and uneven feature coverage need honest documentation.
Use Cloudflare for edge/control-plane roles and Firebase/Google Cloud for identity, data and Node-capable workloads.
A provider boundary adds integration and release coordination.