Skip to main content

Glossary

Quick reference for all domain terms used across Fascia.


Core Domain Model

Value

Computed or derived data defined using the restricted Value DSL. Values are pure functions with no side effects — they calculate results from existing data without modifying anything.

Examples: total_price, is_overdue, available_stock

Constraints: No arbitrary code. No external calls. Bounded computation.


Entity

A business object abstraction that encapsulates domain concepts. Each Entity includes fields, relationships, a status machine, and invariants. The database storage model (tables, columns, indexes) is automatically derived from the Entity spec.

Examples: Reservation, Payment, Order, Customer

Includes:

  • Fields — Typed data attributes (string, number, boolean, date, enum, reference)
  • Relationships — Connections to other entities (1:1, 1:N, N:M)
  • Status Machine — Allowed states and transitions (e.g., pending → confirmed → completed)
  • Invariants — Business rules that must always be true (e.g., "order total must be positive")

Learn more: Entity concept guide


Composite (Read Model)

A read-only aggregation of multiple entities, optimized for querying and display. Composites are denormalized views — they combine data from several entities into a flat structure for UI or reporting purposes. No direct writes are allowed.

Use cases: Dashboard summaries, report views, list pages with joined data


Actor

A complete definition of a service user — who they are, how they authenticate, what data they can access, and what pages they see in the Portal. Actor replaces role-based access with a richer, spec-driven user model.

Includes:

  • entity — Reference to the Entity that holds this actor's profile data
  • auth — Registration method (self, invite_only, setup) and login methods (email, phone, guest)
  • dataScope — Data access scope: all (full access) or own (only records with a direct reference)
  • pages — Portal page presets visible to this actor (dashboard, table, card, form, catalog)

Examples: Owner, Stylist, Customer, Operator


Tool

An executable server logic unit — the fundamental building block for backend operations. Equivalent to an API endpoint, webhook handler, or cron job. Each Tool is defined by a spec that includes its trigger, flow graph, input/output schemas, and policies.

Includes:

  • Trigger (how it's invoked)
  • Flow Graph (nodes + edges defining execution logic)
  • Input/Output Schema
  • Policy Metadata
  • Version

Learn more: Tool concept guide


Flow

A directed acyclic graph (DAG) of nodes that defines the execution logic of a Tool. Each node performs a specific operation, and edges define the data flow between nodes. Flows are designed visually in Flow Studio.

Learn more: Flow concept guide


Flow Node Types

CategoryNodeDescription
DataReadFetch from Entity or Composite
DataWriteCreate, update, transition, soft-delete Entity
LogicTransformData transformation using Value DSL
LogicIf/SwitchConditional branching
LogicRetryRetry on failure (count/backoff)
LogicTimeoutExecution time limit
ExternalPaymentPayment service call
ExternalEmail/SMSSend email or SMS
ExternalHTTP RequestExternal HTTP API call
SafetyTransactionExplicit transaction boundary
SafetyPolicy CheckPolicy check (row limit, budget)
SafetyAssertInvariant enforcement

Trigger Types

TriggerDescription
HTTP TriggerExternal clients call the Tool via HTTP
Webhook TriggerInvoked by an external service callback
Cron TriggerInvoked on a schedule (e.g., every hour, daily at midnight)
Queue Trigger(Future) Invoked by a message queue event

Safety & Governance

Risk Level

A classification assigned to each Tool based on its flow patterns. Risk levels determine whether a Tool can be deployed.

LevelCriteriaDeploy?
GreenEntity actions only, transaction exists, idempotent, no raw writesAllowed
YellowExternal call in state transition, missing retry, high row impactAllowed with acknowledgment
RedRaw write, unbounded update, payment without rollback, missing transactionBlocked

Learn more: Risk Rules reference


Policy

A rule enforced at design time (not runtime) to prevent unsafe operations. Policies are checked by the Risk Engine before deployment.

Examples: Row limit policies, budget check policies, required transaction policies

Learn more: Policy concept guide


Invariant

A business rule that must always be true for an Entity. Invariants are enforced at step 6 of the Execution Contract — after the flow executes but before the transaction commits.

Examples: "Order total must be positive", "Reservation end date must be after start date"


Safety Agent

An AI-powered component that operates during the build phase only. It analyzes Tool specs, detects unsafe patterns, suggests fixes, generates test cases, and assigns risk levels. Uses multi-model cross-checking for reliability.

The Safety Agent never executes runtime logic.


Execution

Execution Contract

The immutable 9-step sequence that every Tool execution follows:

  1. Validate input
  2. Authorize (JWT + RBAC + row-level policy)
  3. Policy check
  4. Start transaction
  5. Execute flow graph
  6. Enforce invariants
  7. Commit / rollback
  8. Write audit log
  9. Return normalized output

Learn more: Execution Contract


Spec Registry

The versioned storage system for all Entity, Actor, Tool, Policy, and Invariant specifications. All specs are immutable once versioned — changes create new versions.


Infrastructure

BYOC (Bring Your Own Cloud)

Fascia's deployment model where all runtime infrastructure lives in your own Google Cloud project. Fascia never stores or processes your business data — it only generates and deploys the execution artifacts.

Your GCP resources:

  • Cloud Run (Executor)
  • Cloud SQL (PostgreSQL) — one instance per workspace
  • Cloud Scheduler
  • Secret Manager

Learn more: BYOC architecture


Control Plane vs Data Plane

ComponentLocationDescription
Control PlaneFascia-hostedChat Studio, Flow Studio, Spec Registry, Safety Agent, Risk Engine. Where design happens.
Data PlaneYour GCPExecutor, Database, Scheduler, Secrets. Where execution happens.

Auth System

Built-in Auth

Fascia's integrated authentication and authorization system provided as first-class Entities and auto-generated Tools.

Supports:

  • Self-login — Email/password registration and login
  • Social login — OAuth 2.0 providers (Google, GitHub)
  • Passkey — WebAuthn/FIDO2 passwordless authentication

Components:

  • Actor spec (defines auth, data scope, and portal pages per user type)
  • User Entity (system entity, extensible)
  • Actor-based access control (dataScope: all or own, replaces legacy RBAC + row-level access)
  • JWT lifecycle (access token + refresh token)