FabricFabricPlatform
Platform referenceEntities

Built-in platform entities

The fixed set of cross-industry governance types the platform pre-registers — and what each one represents.

The platform itself is industry-agnostic, but it pre-registers a small set of governance object types and event types that every Fabric application reuses. These are the "what every app needs to be auditable" primitives.

Pre-registered object types

From packages/platform/objects/index.ts:

Object typePurpose
AssetEventAn immutable historical fact emitted by a handler.
ActionInvocationA row created on every invokeAction call. Carries actor, parameters, status, correlation, evidence.
PolicyEvaluationThe persisted outcome + dispatch evidence for a policy that ran during an invocation.
ApprovalRequestA parked invocation waiting for human sign-off (e.g. a waiting_for_approval action).
ConsentRecordA captured consent (e.g. credit pull authorization). Often the precondition cited by a policy.
AgentRunA persisted record of an agent session — the actions an agent took within a single conversation/session.

Pre-registered subject types

From packages/platform/events/index.ts:

  • ActionInvocation
  • PolicyEvaluation
  • AdapterInvocation

These appear as subjectType on platform-emitted events.

Pre-registered event types

The platform emits a small handful of cross-cutting events itself:

Event typeEmitted by
ComplianceBlockedPolicy stage when an invocation is blocked.
StateTransitionedSuccessful state-machine transition during action execution.
AdapterInvocationStartedEach adapter step before the call.
AdapterInvocationSucceededAfter a successful adapter call.
AdapterInvocationFailedAfter a failed call (terminal — retry exhaustion or non-retryable error).
WebhookReceivedWhen an inbound webhook is captured by the integration adapter.

Vertical code does not emit these. They are mechanical consequences of pipeline events.

Pre-registered ID prefixes

From packages/platform/ids/index.ts:

export const FABRIC_ID_PREFIXES = {
  assetEvent: "evt",
  actionInvocation: "act",
  policyEvaluation: "pol",
  adapterInvocation: "adp",
  adapterDeadLetterQueue: "dlq",
  accessEvent: "acc",
  projectionSnapshot: "psn",
  complianceEvidencePacket: "cep",
} as const;

Each prefix is a 1–8 lowercase alphanumeric string followed by _ and a Crockford-base32 ULID. The format is monotonically sortable.

What is not built in

This list is intentionally short. The platform pre-registers nothing industry-specific:

  • No User type — that lives in @repo/auth / the host app.
  • No Customer, Order, Account, or Tenant ontology types — host or vertical concerns.
  • No Party, Vehicle, Offer, Lead, Document — those are @repo/lending types.

A boundary test (packages/platform/boundary.test.ts) enforces this. Any leak of vertical vocabulary into @fabricorg/platform fails CI.

See also

On this page