Skip to content

Deterministic first

Deterministic first is FDAI’s central design commitment. If a policy, rule, or checklist can decide an event, FDAI decides it that way and no language model runs on it. Model inference is reserved for the small remainder that the deterministic layer explicitly holds for review.

Tier selection answers how a decision is produced. It does not grant permission to execute. Every decision, including a T0 rule match, still goes through the safety check before an action can run.

If you send every cloud-operations event to a language model, three operating properties get harder to keep:

  • Cost: inference over the full event volume is expensive and grows with traffic, even though most events are boringly repeatable.
  • Predictability: the same event on Monday and on Wednesday can get different answers from the same model. That can help on a novel case, but it is a poor contract for a routine one.
  • Auditability: “the model chose to auto-approve” is hard to defend after an incident. “The rule matched policy X, version 1.4” is not.

Every incoming event flows through a trust router that picks the lowest tier competent to decide the case:

flowchart TB
  E[Incoming event]
  E --> R{Rule catalog<br/>hit?}
  R -->|yes| T0[T0 - deterministic<br/>rule + policy evidence]
  R -->|no| S{Similar to a<br/>past resolved<br/>incident?}
  S -->|score >= threshold| T1[T1 - lightweight reuse<br/>provenance + learned action]
  S -->|no| T2[T2 - grounded reasoning<br/>mixed-model + verifier]
  T0 --> G[Safety check]
  T1 --> G
  T2 --> Q[Quality gate]
  Q --> G
  G --> V[Auto / human approval / deny]
  • T0, deterministic (target 70-80% of events). Policy-as-code (OPA), checklists, thresholds, and allow or deny lists produce a repeatable decision. When rules conflict, catalog precedence decides. A tie that precedence cannot break goes to human approval.
  • T1, lightweight reuse (target 15-20%). Embedding similarity to past incidents, cheap classifiers, and small-model retrieval. The matched incident, the similarity score, and the reused action all stay available for audit.
  • T2, deep reasoning (target 5-10%). Only new or genuinely ambiguous cases. Different models propose structured actions, and a verifier re-checks the agreed proposal against policy-as-code and evidence sources before it can leave the quality gate.

Those percentages are design targets, not observed results. FDAI reports an actual tier share only from a named scenario set or deployment window, together with its sample size and baseline.

Each tier has a clear point where it stops and hands the case on. Falling through that boundary is a normal outcome of the control loop, not an error to hide.

TierIt can decide whenIt holds or escalates when
T0A valid rule or policy gives one unambiguous answerNo rule matches, the input is invalid, or rules of equal precedence conflict
T1Similarity clears the configured threshold and the earlier incident has a reusable actionSimilarity is too low, provenance is missing, or no reusable action exists
T2Independent models agree on the structured action and every quality check passesModels disagree, evidence does not support the action, the verifier fails, or confidence is below the threshold

A hold at T0 or T1 moves the case to the next tier that can decide it. A hold at T2 goes to human approval, and nothing runs automatically. Unexpected errors take the same safer path and are written to the audit trail.

T2 is not permission to replace a missing rule with model confidence. Before a T2 proposal reaches the safety check, the quality gate requires all of this:

  1. Independent agreement: two or more different model families produce compatible structured actions.
  2. Deterministic verification: schema, policy, what-if, and security checks all pass against the proposed action.
  3. Evidence check: the proposal cites rules or documents that support this exact action. An unsupported claim holds the case for review.
  4. Configured confidence: the result clears the deployment’s threshold. That threshold is configuration, not a number baked into the code.

Disagreement between models is useful evidence. FDAI keeps the competing proposals and sends the case to human approval instead of asking yet another model to quietly pick a winner.

Every tier leaves a different explanation, and you can rebuild any of them:

  • T0: the matched rule ID and version, the policy result, the input facts, and how a conflict was resolved.
  • T1: the earlier incident it referenced, the similarity score, the past outcome, and the reused action version.
  • T2: model identifiers, the structured proposals, the agreement result, the verifier checks, the evidence citations, and the reason it was held.
  • Safety check: the matched risk rule, the catalog version, the strictest autonomy ceiling that applied, and the final decision of auto, human approval, or deny.

This evidence tells a repeatable decision apart from a plausible explanation. It also lets you replay the judgment without running the action again.

  • The rule catalog is a first-class asset, not a nice-to-have. It decides how much of your traffic never reaches a language model.
  • Every T2 decision cites its sources. If those citations do not survive the verifier, the case goes to human review rather than to a best guess.
  • It is fork-friendly. To raise your T0 coverage you add rules. You do not retrain a model.

Use tier share as a diagnostic, not as a success claim on its own. A healthy measurement view includes:

  • event volume and latency per tier
  • T1 threshold misses and missing-provenance cases
  • how often T2 models disagree, the verifier fails, or evidence is missing
  • cost per resolved event and human touchpoints per incident
  • rollback and policy-escape guard metrics after enforcement

Compare those values against the same frozen scenario set and deployment window. A higher T0 share only means something when false negatives, rollback rate, and policy escapes do not get worse.

Open Policy Agent (OPA) is the policy evaluation engine FDAI uses for policy-as-code checks. Rego is the declarative policy language used to write the rules that OPA evaluates. In other words, Rego describes the condition and OPA runs it against the normalized resource facts.

For a T0 event, FDAI first selects candidate catalog rules by resource type and signal type. It then supplies the current resource properties and rule parameters to OPA. If the Rego policy returns deny = true, the rule is a deterministic hit and FDAI records a detected issue with the rule ID and version. deny = false means the resource passed that check. An undefined result, missing policy, timeout, or invalid output holds the rule for review instead of guessing.

Example: an object-storage rule can return deny = true when enable_https_traffic_only is not true. FDAI can then explain the result as a specific versioned policy violation rather than a model-generated judgment.

To learn aboutRead
How T0, T1, and T2 decisions become auto or human approvalrisk-tiers.md
How new actions observe first and enforce laterobservation mode-then-enforce.md
The full control-loop design../../../.github/instructions/architecture.instructions.md
The catalog schema and sources../../roadmap/rules-and-detection/rule-catalog-collection.md
Measurement definitions and evidence requirements../../roadmap/architecture/goals-and-metrics.md