Forward-Chaining Engine
The ForwardChainEngine is the deterministic core of Quint’s scoring pipeline. It evaluates events against 90 inference rules using agenda-based forward-chaining — a Rete-style pattern matching algorithm that reaches a fixed point in under 1ms.Algorithm
Initialize working memory
Extract initial facts from the event using
extract_facts(event, policies, baseline). This produces ~50+ facts covering action type, target classification, data sensitivity, bulk operations, input patterns, and behavioral signals.Forward-chaining loop
Until fixed point or MAX_ITERATIONS (50):
- For each rule (sorted by priority, lower = first):
- Skip if already fired (single-fire per rule per evaluation)
- Check framework requirement against tenant subscriptions
- Check ALL conditions match facts in working memory
- If conditions met: fire rule
- Execute rule actions:
assert_fact,add_score,add_violation,add_mitigation - Track newly fired rules
- Exit if no new rules fired (fixed point reached)
Rule Structure
Example Rule
Rule Categories (90 Total)
| Category | Count | Scope |
|---|---|---|
| Common | 11 | Universal rules (bulk access, external targets, PII) |
| GDPR | ~15 | Consent, data minimization, cross-border transfer |
| HIPAA | ~12 | PHI exposure, encryption, minimum necessary |
| SOC2 | ~12 | Access control, change management, availability |
| PCI-DSS | ~8 | Cardholder data, encryption, network segmentation |
| PII | ~6 | Personal data access patterns |
| OWASP | ~8 | Injection, broken auth, security misconfiguration |
| ISO27001 | ~5 | Information security management |
| OWASP LLM Top 10 | ~8 | Prompt injection, training data poisoning, excessive agency |
| OWASP Agentic Top 10 | ~6 | Tool poisoning, MCP attacks, multi-turn manipulation |
| Behavioral | ~5 | Novel resources, rare actions, off-hours, volume spikes |
Fact Extraction
Theextract_facts() function transforms raw events into ~50+ initial facts:
Action Type Facts
Action Type Facts
action_is— canonical action typeaction_is_read,action_is_write,action_is_delete,action_is_execute
Target Classification Facts
Target Classification Facts
targets_external,targets_internaltargets_production,targets_public_storage,targets_non_eu
Data Sensitivity Facts
Data Sensitivity Facts
accesses_sensitive,accesses_phi,accesses_ssnaccesses_pan,accesses_contact_info,accesses_special_category- Detected from 51 predefined sensitive field names + custom policies
Bulk Operation Facts
Bulk Operation Facts
bulk_access— high row count orSELECT *patternsexcessive_fields— touching many data fields
LLM/Agent Pattern Facts
LLM/Agent Pattern Facts
prompt_injection,system_prompt_extractionagent_code_execution,excessive_autonomyrag_poisoning,mcp_tool_poisoningmulti_turn_attack,encoding_evasion
Behavioral Facts (from baseline)
Behavioral Facts (from baseline)
novel_resource— resource never accessed beforerare_action— action type < 1% of historicalunusual_field_access— touching new field typesoff_hours_activity,volume_spike
Tenant Framework Management
Frameworks are automatically inferred from customer policies:requires_framework only fire if the tenant subscribes to that framework. Framework subscriptions are cached with a 5-minute TTL per tenant.
Risk Level Mapping
| Score Range | Risk Level |
|---|---|
| 1-10 | none |
| 11-30 | low |
| 31-55 | medium |
| 56-80 | high |
| 81-100 | critical |