Data Classification
Every piece of data that flows through a Forge agent interaction falls into one of six classification levels. Five are elevated fiduciary classes; the sixth is the default.FIDUCIARY DATA CLASSES (STD-06)
Spiritual direction, pastoral conversations, confessional-grade disclosures. Highest confidentiality.
Signals of psychological distress, wellness disclosures, behavioral health markers.
Active crisis disclosures, safety concerns, urgent welfare communications.
Donor financial capacity signals, giving patterns that reveal personal circumstances.
Payment processing data, transaction records, financial account references.
No elevated classification. Standard operational data with baseline governance.
| Class | Duty of Care | Example |
|---|---|---|
pastoral_counseling | Confessional-grade confidentiality | A chaplain agent processing spiritual care requests |
mental_health_indicator | Clinical sensitivity | An intake agent flagging behavioral health signals for routing |
crisis_state_communication | Immediate welfare priority | A triage agent handling active safety disclosures |
donor_vulnerability | Financial privacy | A stewardship agent analyzing giving capacity patterns |
financial_transaction | Transactional integrity | A processing agent handling payment authorizations |
none | Standard baseline | A scheduling agent coordinating team meetings |
convex/trust_fabric/fiduciary/types.ts as the FIDUCIARY_DATA_CLASSES constant and the FiduciaryDataClass type. The type system enforces that only valid classes can be assigned.Fiduciary Agent Designation
Not every agent may handle classified data. An agent must be explicitly fiduciary-designated before it can process any data class other thannone. This designation lives on the agent definition record and consists of two fields:
| Field | Type | Purpose |
|---|---|---|
fiduciaryFlag | boolean | Whether this agent has elevated duty-of-care responsibilities |
fiduciaryDataClasses | string[] | Which specific data classes this agent is authorized to handle |
fiduciaryFlag: true without specifying fiduciaryDataClasses means the agent is fiduciary-designated but has no specific class authorizations — useful during initial onboarding before the data access scope is fully defined.
Designation Requirements
Fiduciary designation is a production-readiness requirement. When an agent is promoted frompoc or staging to production lifecycle phase, the trust fabric validates that fiduciaryFlag is explicitly set (not undefined). This prevents agents from reaching production without a conscious decision about their data handling responsibilities.
The promotion gate also requires:
riskTier— the agent’s risk classification (T1—T4)owner— the owning team responsible for the agentautonomyRung— the agent’s autonomy level (assistive, retrieval, supervised, bounded)
Access Control Model
The fiduciary classification system enforces access control at two levels: agent designation and governance traceability.Agent-Level Enforcement
An agent’sfiduciaryDataClasses array acts as an allowlist. When a workflow step involves classified data, only agents whose fiduciaryDataClasses includes the relevant class should be assigned to that step. This is enforced through role-based assignment — agents are assigned to roles that match their classification clearance.
Governance Traceability
Every governance decision records the agent’s fiduciary status in the traceability record. The 8-field traceability record (STD-03.3) includes:trustFabricEvents table stores these records, and the fiduciaryFlag field is independently recorded on each trace event for fast querying.
Scope Constraints
The Trust Fabric’s scope constraint system (ScopeConstraintsV1) provides a complementary layer of data access control that works alongside fiduciary classification. While fiduciary classes define what kind of data an agent handles, scope constraints define which data domains the agent can read and write.
ScopeConstraintsV1 and Data Access
Scope constraints are derived from the agent’s assigned worker role and propagated into everyGovernanceDecision:
| Field | Purpose | Example |
|---|---|---|
dataAccess | Readable data domains | ["crm", "billing", "pastoral"] |
writeAccess | Writable data domains | ["crm.notes"] |
environments | Eligible execution environments | ["staging", "production"] |
toolAllowList | Permitted tools | ["search", "summarize"] |
toolDenyList | Prohibited tools | ["delete", "export_bulk"] |
dataAccess or writeAccess, the governance engine resolves these from the role snapshot and attaches them to the decision’s scopeConstraints field. Downstream execution surfaces (Bridge, adapters) receive these constraints as part of the dispatch payload.
How Classification and Scope Interact
Fiduciary classification and scope constraints are complementary:Answers: “Is this agent trusted with sensitive data classes?” Controls agent eligibility. Recorded in audit trail.
Answers: “Which data domains can this agent access?” Controls runtime boundaries. Conveyed to execution surfaces.
pastoral_counseling data would typically have a role with dataAccess: ["pastoral"] and narrow writeAccess — the classification designates trust, while the scope constraints bound the actual data domains the agent can touch during execution.
ScopeConstraintsV1 type definition for the full honesty note.Context Trust and Fiduciary Agents
Fiduciary-designated agents are subject to the Context Trust gate (Gate 8 in the dispatch pipeline) which validates that the dispatch context provenance meets the role’s trust requirements. For fiduciary agents, this gate is particularly important because it ensures:- Source class acceptance — the context originates from a trusted source (e.g.,
internal_verified) - Freshness requirements — the context is not stale, preventing decisions on outdated information
- Environment eligibility — the agent is dispatched to an appropriate environment

