ArcFlow
Company
Managed Services
Markets
  • News
  • LOG IN
  • GET STARTED

OZ brings Visual Intelligence to physical venues, a managed edge layer that lets real-world environments see, understand, and act in real time.

Talk to us

ArcFlow

  • World Models
  • Sensors

Managed Services

  • OZ VI Venue 1
  • Case Studies

Markets

  • Sports
  • Broadcasting
  • Robotics

Company

  • About
  • Technology
  • Careers
  • Contact

Ready to see it live?

Talk to the OZ team about deploying at your venues, from a single pilot match to a full regional rollout.

Schedule a deployment review

© 2026 OZ. All rights reserved.

LinkedIn
ArcFlow Docs
Start
  • Quickstart
  • Installation
  • Bindings
  • Platforms
  • Get Started
  • Cookbook
Concepts
  • World Model
  • Graph Model
  • Evidence Model
  • Observations
  • Confidence & Provenance
  • Proof Artifacts & Gates
  • SQL vs GQL
  • Graph Patterns
  • Parameters
  • Query Results
  • Persistence & WAL
  • Snapshot-Pinned Reads
  • Error Handling
  • Execution Models
  • Causal Edges
  • Adapter Discipline
  • Time Decay
  • Layers
  • 1. World Store
  • 1a. World Store · Smart Reader
  • 2. Perception Lake
  • 3. World Graph
  • 4. Query Engine
  • 5. Live Surface
  • 6. Event Bus
  • 7. Behavior Engine
  • 8. Algorithm Library
  • Virtual Computed Columns
  • Threading Model
  • Typed ID Contract
  • The Information Layer
  • The Memory Engine
WorldCypher
  • Overview
  • Execution Options
  • Statements
  • MATCH
  • WHERE
  • RETURN
  • OPTIONAL MATCH
  • CREATE
  • SET
  • MERGE
  • DELETE
  • REMOVE
  • ASOF JOIN
  • CREATE NODE LABEL
  • CREATE PROGRAM
  • CREATE TRIGGER
  • CREATE LIVE VIEW
  • CREATE WINDOW
  • CREATE DECAY POLICY
  • REFINE EDGE / REPROCESS EDGES
  • Sessions & Transactions
  • Composition
  • WITH
  • UNION
  • UNWIND
  • CASE
  • FOREACH
  • Schema
  • Schema Overview
  • Indexes
  • Constraints
  • Functions
  • Built-in Functions
  • Aggregations
  • Procedures
  • Shortest Path
  • EXPLAIN
  • PROFILE
  • Temporal Queriesfacet
  • Spatial Queriesfacet
  • Algorithmsfacet
  • Triggers
Capabilities
  • Live Queries
  • Vector Search
  • Trusted RAG
  • Spatial Knowledge
  • Temporal
  • Behavior Graphs
  • Graph Algorithms
  • Skills
  • CREATE SKILL
  • PROCESS NODE
  • REPROCESS EDGES
  • Sync
  • Programs
  • GPU Acceleration
  • Agent-Native
  • MCP Server
  • Event Sourcing
  • Intent Relay
  • Event Bus
Use Cases
  • Agent Tooling
  • Trusted RAG
  • Knowledge Management
  • Behavior Graphs
  • Autonomous Systems
  • Physical AI
  • Digital Twins
  • Robotics & Perception
  • Sports Analytics
  • Grounded Neural Objects
  • Fraud Detection
Walkthroughs
    Guides
  • Agent Integration
  • Building a World Model
  • Modeling a Social Graph
  • Build a RAG Pipeline
  • Using Skills
  • Behavior Graphs
  • Swarm & Multi-Agent
  • Fleet Coordination
  • From SQL to GQL
  • Filesystem Workspace
  • Data Quality
  • Code Intelligence
  • Scale Patterns
  • Lakehouse Fast-Path
  • Python Executor SDK
  • Tutorials
  • Knowledge Graph
  • Entity Linking
  • Vector Search
  • Graph Algorithms
  • Recipes
  • CRUD
  • Multi-MATCH
  • MERGE (Upsert)
  • Full-Text Search
  • Batch Projection
  • Multi-Source Observation
  • Sports Analytics
Operations
  • CLI
  • REPL Commands
  • Snapshot & Restore
  • Filesystem Projection
  • Plugin Management
  • Agent Governance
  • Server Modes & PG Wire
  • Persistence (ops)
  • Import & Export
  • Deployment
  • Deployment Modes
  • Daemon (UDS)
  • Why not Docker
  • Architecture
  • Engine Architecture
  • Cloud Architecture
  • Sync Protocol (Deep Dive)
  • World Graph Substrate (Preview)
Reference
  • TypeScript API
  • Glossary
  • Naming & Domain Map
  • Data Types
  • Operators
  • Error Codes
  • GQL Reference
  • Known Issues
  • Versioning
  • Licensing
  • Conformance
  • GQL Conformance
  • openCypher TCK
GQL Reference
    Conformance
  • Conformance Dashboard
  • openCypher TCK Results
  • Features
  • MATCH Basic
  • CREATE Nodes Edges
  • SET REMOVE Properties
  • DELETE Detach DELETE
  • RETURN WITH WHERE
  • Order BY Limit Skip
  • Order BY Nulls First Last
  • UNWIND
  • Aggregate Functions
  • OPTIONAL MATCH
  • Variable Length Paths
  • Label OR AND NOT Expressions
  • Label Wildcard
  • Quantified Path Sugar
  • Path Modes Walk Trail Simple Acyclic
  • Shortest Path Variants
  • IS Labeled Predicate
  • Element ID Function
  • IS Type Predicate
  • Binary Literals
  • Line Comments Solidus
  • Line Comments Minus
  • GQLSTATUS Result Codes
  • GQL Error Code Mapping
  • Transaction Control Syntax
  • SET Session
  • Conditional Execution WHEN THEN ELSE
  • RETURN NEXT Pipeline
  • Primary Key Constraint
  • Unique Constraint
  • Deterministic MERGE Via PK
  • Undirected Edge MATCH
  • Cast Type Conversion
  • GQL Directories
  • Multiple Labels Per Node
  • GQL Flagger
  • NEXT Linear Composition
  • Cardinality Function
  • INT64 BIGINT Type Names
  • FLOAT64 Double Type Names
  • Log10 Log2 Functions
  • Trim Leading Trailing Both
  • FILTER Clause
  • LET Statement
  • Group BY Explicit
  • EXCEPT SET Operations
  • INTERSECT SET Operations
  • ALL Different Predicate
  • Same Predicate
  • Property Exists Function
  • Path Variable Binding
  • USE Graph Clause
  • FOR IN List
  • Typed Temporal Literals
  • Session SET Value Params
  • Typed List Annotations
  • arcflow.cosine() function
  • arcflow.embed() function
  • arcflow.similar() procedure
  • arcflow.graphrag() procedure
  • ArcFlow Extensions
  • LIVE Queries
  • Reactive Write-Back Views
  • Evidence Algebra
  • Relationship Skills
  • AI Function Namespace
  • Graph Embedding Algorithms
  • ASOF JOIN
  • Durable Workflows
  • Incremental Z-Set Engine
  • GPU GraphBLAS
  • Triggers
  • HNSW Vector Index
  • Extensions Moat

Causal Edges

When a value in the graph reflects a belief — a confidence score, an authority plane, a classification, anything an agent or a model decided rather than directly observed — it must be traceable back to the event that justified it. The mechanism is the :CAUSED_BY edge.

:CAUSED_BY is mandatory at the ingest boundary for the properties an operator has constrained. Writing a constrained property without a same-transaction :CAUSED_BY edge to an anchor node is a typed failure — the engine returns CAUSED_BY_VIOLATION and rolls back the whole transaction.

This page describes the edge as a discipline, the constraint that enforces it, and the patterns that make it usable.

The edge#

(player:Player {confidence: 0.83})-[:CAUSED_BY]->(evidence:Evidence)

Read: the value 0.83 on player.confidence was caused by evidence.

Information-theoretic view: confidence is the probability a named model assigned to a fact, so the fact's information content is −log₂ confidence — a low-confidence-but-true fact carries the most bits. That makes the evidence field literally Shannon information, callable as CALL arcflow.info.nodeSurprisal(id). See the Information Layer.

The edge has three properties that make it load-bearing:

  • It carries identity, not opinion. The edge points at the anchor node that justified the belief — a sensor reading, a classifier output, an authored fact. Not "why we think this is true" in free text; an actual graph reference an audit can follow.
  • It is same-transaction. The edge is created in the same write transaction as the property mutation it justifies. Cross-transaction binding is rejected — it would defeat the audit guarantee, since a reader could observe "belief without evidence" between the two commits.
  • It is checked at commit, not mid-stream. A transaction can write confidence before creating the edge, or vice versa. The engine evaluates the committed shape; ordering inside the transaction is the author's choice.

The constraint that enforces it#

The edge becomes mandatory when an operator declares a constraint:

CREATE CONSTRAINT FOR (n:Player)
  REQUIRE confidence CAUSED_BY (:Evidence)

After this declaration, any transaction that writes confidence on a :Player node must also commit a :CAUSED_BY edge from that node to a :Evidence node — in the same transaction.

The constraint accepts an optional name and an IF NOT EXISTS guard:

CREATE CONSTRAINT confidence_traceability_v1 IF NOT EXISTS
  FOR (n:Player)
  REQUIRE confidence CAUSED_BY (:Evidence)

It composes with the rest of the constraint family — see Constraints for the full reference.

What a violation looks like#

A write that touches a constrained property without a same-transaction :CAUSED_BY edge fails at commit:

CAUSED_BY_VIOLATION
  property: Player.confidence
  node_id:  <stable id>
  required: edge of type CAUSED_BY to a node labelled :Evidence

The error is typed — SDKs surface it as a structured value, not a string an agent has to parse. The transaction rolls back atomically; the partial write is not visible to any reader.

Authoring patterns#

Two patterns cover almost every case in practice.

Request → response#

A request arrived. A response was computed. The response's belief value is caused by the request.

CREATE (req:Request {id: 'r-001', text: 'classify image'})
CREATE (resp:Player {id: 'p-001', confidence: 0.91})
CREATE (resp)-[:CAUSED_BY]->(req)

The anchor node is the request itself — the evidence type is whatever the constraint declared (:Request, :Evidence, :Observation, etc.).

Input → derived#

A raw observation arrived. A derived fact is computed from it. The derived fact is caused by the observation.

MATCH (obs:Observation {id: $obs_id})
CREATE (claim:Player {id: 'p-002', confidence: 0.74, authority_plane: 'sensor'})
CREATE (claim)-[:CAUSED_BY]->(obs)

The pattern generalises to chains — a derived fact can be the anchor for the next derivation, producing a :CAUSED_BY chain an audit can walk back to the original observation.

What the edge is NOT for#

  • Not for relationships between entities. A :Player plays for a :Team. That is a domain relationship, not a causal one. Use a domain edge type (:PLAYS_FOR).
  • Not for general provenance metadata. Author, timestamp, source tool — those go on the anchor node's properties, not on the edge. The edge says what justified the value; the anchor's properties say who and when.
  • Not retroactive. The constraint binds writes at and after the declaration. Pre-existing rows that lack edges are not rejected on read — MATCH ignores the constraint entirely. See Constraints for declaration-time options.

Why this matters for agents#

Agents make decisions that affect downstream behaviour. The :CAUSED_BY discipline gives every decision a replayable lineage:

  • Audit. Walk back from a current belief to the events that justified it.
  • Retraction. When an evidence node is invalidated, every belief caused by it can be located through one traversal.
  • Replay. Re-derive the same belief from the same evidence chain, deterministically.
  • Multi-agent coordination. When two agents disagree on a value, the causal edges show what each is reasoning from — not just the conclusion they reached.

The constraint turns the discipline from a convention agents may follow into a contract the engine enforces.

See also#

  • Constraints — the full constraint DDL reference.
  • Confidence & Provenance — the data model that the causal edges thread through.
  • Evidence Model — how observations + inferences + predictions compose.
  • Event Sourcing — the broader pattern of treating mutations as caused-by chains.
  • Proof Artifacts & Gates — how the causal chain supports proof generation.
← PreviousExecution ModelsNext →Adapter Discipline