Typed Property System

Model Dotabase rows with 33 validated property types, stable option IDs, read-only fields, and a runtime extension registry.

Overview

Description

The Typed Property System supplies 33 built-in property types spanning text, numbers, selections, relations, system metadata, assignments, formulas, and rollups.

Typed Property System is delivered through typed package contracts rather than a surface-specific shortcut. Its primary modules separate the public input or configuration shape from validation, durable state, and the operation that produces the result. That separation lets product surfaces and integrations invoke one implementation while tenant scope and existing domain rules remain in force. Errors stay bounded to the request instead of weakening the underlying data contract.

Selling Points

  • Validates schemas and values before persistence.
  • Resolves user-facing select labels to stable option IDs.
  • Protects read-only and system-owned fields.
  • Applies one typed package contract across every supported caller and surface.
  • Keeps invalid inputs and unavailable dependencies from silently widening durable state.

User Story

As a database designer, I combine rich property types to model work without creating custom tables or validation code. In practice, I configure or invoke the capability through a supported surface, supply only the inputs its contract accepts, and receive a result governed by the same rules as every other caller. I can inspect the resulting row, setting, event, or query state and correct my input when validation fails. I walk away with a repeatable workflow rather than a one-off client implementation.

Extension Surface

Extensible: built-ins are fixed, while a guarded runtime registry lets development compositions add non-colliding property definitions.

The extensible rating is evidenced by packages/dotabases/src/properties/registry.ts, which defines the supported seam used by trusted callers or configuration. The capability can be composed wherever that contract is available, but its invariants are not replaced by tenant-authored executable code. This keeps extension honest: callers control documented inputs and policy choices while the package owns validation and safety.

Capabilities & Limits

  • Capability: Executes the scoped workflow described above through the cited live implementation paths.
  • Capability: Preserves typed validation and applicable tenant, schema, lifecycle, or service boundaries.
  • Limit: Runtime additions are process-local and must be registered at boot; there is no production marketplace loader yet. Typed Property System supports the concrete operations described here and composes them with tenant, schema, or lifecycle checks already owned by the package. It does not grant raw database access, make unsupported inputs valid, or assume that optional providers and downstream consumers exist. Callers remain responsible for permissions and meaningful configuration, and product rendering or external delivery stays outside the package unless explicitly stated.

Implementation Map

  • packages/dotabases/src/properties/registry.ts
  • propertyTypeRegistry
  • packages/dotabases/src/properties/property-value-validator.ts
  • registerPropertyType
  • packages/dotabases/src/services/dotabase-service.ts
  • validateSchemaDefinition

Properties

Property
Value
product
dots-platform
extensibility
extensible
module
Dotabases
packages
dotabases
status
shipped
surface
cross-cutting
summary
Model Dotabase rows with 33 validated property types, stable option IDs, read-only fields, and a runtime extension registry.

Connections

Typed Property System · Explore connections

  • documented bytoHow Dotabases Work
  • requirestoDotabase Workspaces
  • implemented bytopackages/dotabases/src/internal/properties/registry.ts
  • implemented bytopackages/dotabases/src/internal/properties/property-value-validator.ts
  • implementstoDS_Dotabases — Property Visibility & Ordering Design (Redline)
  • implementstoDS_Dotabases — Comprehensive Module Spec
  • implemented bytoregisterPropertyType
  • implemented bytopropertyTypeRegistry
  • requiresfromRollup Properties
  • requiresfromFormula Properties

Connected Records10

Documented by
Implemented by
packages/dotabases/src/internal/properties/property-value-validator.ts
packages/dotabases/src/internal/properties/registry.ts
propertyTypeRegistry
registerPropertyType
Implements
DS_Dotabases — Comprehensive Module Spec
DS_Dotabases — Property Visibility & Ordering Design (Redline)
Requires
10 connections.

Documents

Title
Type