Treating Infrastructure as Data: Building an AI-Native Control Plane

The Broken Assumptions of Infrastructure as Code

Speaker D opens by describing the familiar pain of broken state files and pipelines, framing this as the old world of IaC. He outlines the four foundational assumptions of traditional infrastructure-as-code—human authorship, human-speed changes, single writers, and drift as exception—and explains how AI inverts every one of them, with agents and humans co-authoring changes at machine speed with uncoordinated multiple writers.

Rethinking Drift as Continuous Telemetry

Speaker D argues that drift is no longer a binary alarm to be reconciled but a continuous waveform representing real system behavior. He proposes treating drift as telemetry rather than error, requiring agents to decide whether to remediate, escalate, or accept changes, setting up the four areas where the traditional IaC model strains: single-writer paradigm, human-in-the-loop plan/apply, opinionated abstractions, and the control/data plane split.

Where the Traditional IaC Model Breaks Down

Speaker D examines each strain point in detail: state files as stale caches rather than current reality, review cycles that assume human gatekeepers agents don't respect, tool-specific DSLs that create new failure surfaces for agents to learn, and the artificial split between control plane and data plane that clouds are already dissolving. He connects these points back to Boyan's earlier talk on policy engines like CEDAR and OPA as replacements for human review safety nets.

Introducing Infrastructure as Context

Speaker D introduces the core reframe of the talk: infrastructure as context, where intent no longer lives solely in code but agents query live system state as the source of truth. He clarifies that code doesn't disappear but stops being the contract, setting up a live demonstration of these ideas in practice.

Live Demo: StackQL, Agents, and Cloudflare Rate Limiting

Speaker E (Emma) demonstrates a live scenario using Cloudflare, Confluent Kafka, and StackQL, where two AI agents query live analytics and rate-limit rules, then autonomously tighten security rules based on real-time traffic patterns. The demo showcases StackQL's universal SQL interface for querying both control and data planes across providers, the 'query before mutation' pattern, and using Kafka and DuckDB logs to create a bi-temporal audit trail of agent decisions and actions.

Five Workable Patterns for the Agentic Era

After a brief clicker mishap, Speaker D synthesizes the demo into five concrete patterns for AI-native infrastructure: query before mutation (checking live reality, not cached state), declarative assertions with safe retries, a tri-temporal view separating what is, what was, and what should be, agents as event sources making audit logging inherent rather than bolted on, and universal query interfaces to avoid wasting agent tokens learning multiple SDKs. He also emphasizes replacing human review loops with policy gates, tying back to Boyan's CEDAR/OPA discussion.

Closing Takeaways and Call to Action

Speaker D wraps up with three key takeaways: static state was a product of slow infrastructure rather than a permanent design principle, agents need safe unified access to both control and data planes, and APIs should be treated as a queryable data layer rather than just a deployment target. He closes by asking the audience to photograph and star the demo's GitHub repository before thanking the audience.

And this clicks. Yeah? Yep. Okay. Cool. Alright. Excellent. So this is actually a really good segue from what Boyan just talked about. So we're gonna talk about the AI native control plane here. And we've all been this dude at one stage. Right? Your state file locks, your pipeline's failing, you find yourself handcrafting and hand rolling state files to sort of unbreak things.

And this is before AI. So this is actually you know, this is before AI. So if we look at if we talk about IAC in general terms, so it was really largely premised around four assumptions. All of these were valid ten years ago. Right? So humans authored the changes. Changes happen at human time scales, which is minutes or days.

One writer per environment, which is usually enforced by some sort of state file or review. And drift was an exception. So this is something you fixed when when and take it went back to steady state afterwards. So these assumptions were all true until AI came along. So AI changes everything.

So every one of those assumptions that we had inverts in the agentic era. So agents and humans both author changes. Changes happen at machine speed, which is dozens per minute, potentially. There are multiple writers operating on the same resource at the same time and they're not coordinating with each other. And drift is no longer the exception.

It's a default state. So we need to start rethinking around the model that we have, you know, known up until now. So we start looking at Drift. So Drift used to be a binary alarm. You know, it went off, you reconciled it, it went back to flat, and, yeah, life goes on.

Right? So in 2026, drift is a continuous waveform. So it's a signal of what the system is actually doing. Should we should be treating this as telemetry, not an error. So agents need to decide, is this a problem or not? Do we need to remediate? Do we need to escalate? Do we need to accept? So this is sort of the new paradigm that we're in.

So if we start to look at where the model strains, so there's four specific places. First is the single rider paradigm. The other is the plan and apply expecting expecting a human, which might always not be the case. Opinionated abstractions, which we'll talk about, and the control plane data plane split. So we're going to go through each one.

There is a demo I've prepared here as well, which I'll show you. So the state file is a cache of what a tool did. So it represents the application of the intent at a point in time. So this sort of, again, is a really good segue to what Boyan talked about. It's not necessarily the current reality. So if a human and an agent touch the same resource at the same time, your state file's invalid automatically.

Right? So the fix isn't to improve locking. It's to recognize that we potentially need to look at this a little bit differently. You know, the source of truth is what the cloud is telling you, what the APIs are telling you. So if we talked about the review cycle. So the review cycle before was doing all the safety work.

And and again, this is really good sort of tie into what Boyan talked about with policies. So when we start to inject humans assessing things and potentially stopping things from happening, you know, autonomous agents don't stop. They proceed. You know, they're they're wired to keep going. Right? So whatever safety we got from a review, we need to replace with something else.

And we'll talk about what the something else is and sort of really good sort of tie into what Boyan talked about. Okay. So opinionated abstractions. So every IAC tool implement you know, Terraform, Polami, CDK, you name it, they all implement their own DSL, their own resource model, their own ecosystem. You know? And that's fine for humans who can master one tool.

But when we have an agent, you know, every abstraction is essentially a new surface that that agent needs to learn. And and it's a new place that can be wrong as well too. So sometimes what helped humans doesn't always help agents. So the other thing is IAC tools are built for the control plane. You know? So they're they're built almost exclusively for the control plane. The data plane is sort of an afterthought or a bolt on in some cases.

So data plane operations, your queries, table access, data access, these all typically lived in different tools. But agents need to traverse both. They need to traverse the control plane and the data plane, you know, to make in a single decision. So the split is starting to become a constraint, and the reality is the cloud provider APIs are converging anyway.

So they're they're exposing the data plane and the control plane through effectively the same interface. Okay. So if we accept that the model is broken, what replaces it? So this is the the piece de resistance here. The new IAC is infrastructure as context.

So it's a it's a small but consequential reframe of IAC. If we start thinking about it this way, we start to to sort of adapt the model that we had. So in the infrastructure as code model, the intent lived in the code. With the infrastructure as context model, the agents query the current state of the system, and the reality is the data.

So the reality is what the API is telling you. So we're not we're not taking away code, so code doesn't disappear. It just stops becoming the contract. Okay. Right. Now I have a demo queued up. I don't know if you guys can switch the is Kieran around? Or

In this scenario, we have a Cloudflare zone sitting in front of an origin and receiving live traffic. Some legitimate, some from AI crawler user agents, some from generic bot scanners. The demo includes two agents, one that reads live analytics and the current rate limit rule, one that tightens the rule and logs the decision. A Kafka topic is used as the audit substrate everywhere an agent makes a call, the record of what, and why lands there. This demonstration will show you a live example of agents querying live reality, decisioning and acting through a universal interface, and treating every action and decision as an audit event.

StackQL is a universal protocol agnostic interface that exposes cloud control plane and data plane APIs, As data sources, you can query or update with SQL. It talks to any provider's interface without needing that provider's SDK. Every query and mutation operation is exposed to humans and agents through a single SQL interface. This includes all CRUD and lifecycle operations for the provider.

Here, we're running live queries against the control and data planes of both Confluent and Cloudflare. This includes a Cloudflare control plane query that reads the active rate limit rule from the Rulesets API, and a Cloudflare data plane query showing live analytics over the zone, so we have the rule configuration and the traffic it's governing, both retrieved through the same interface.

StackQL includes an MCP server which exposes tools to agents to read and act on cloud infrastructure as data, inspecting live state and provisioning or updating resources through a single SQL interface in the famous words of Talk is cheap. Show me the code. Here we have our agent code implemented using the Anthropic SDK, with the Stack QLMCP server.

First it queries Confluent to discover the live Kafka cluster, cluster ID, region, and endpoint. Next it queries Cloudflare for the last thirty minutes of analytics on the zone. It reads the current rate limit rule directly from the live state. This is an example of the query before mutation pattern. The agent receives the activity report and makes a live adjustment to the Cloudflare ruleset, tightening the requests per period threshold.

In other words, the agent asserts the new desired state and converges to it automatically. The agent logs a decision record for every decision and action to a Kafka topic describing what it did and why. This is an example of the agents as event sources pattern. Additionally, every tool call the agents made is written to a log by the MCP server.

We can use DuctDB here to read and analyse the logs. This is the bi temporal pattern in practice. Reality is in Cloudflare and Confluent. Intent is in the agent's prompts. History is this log as well as the Kafka sync. All three surfaces are queryable. So let me leave you with the shift. Infrastructure isn't something agents deploy.

It's something they query, reason about, and act on. The control plane and data plane are both just data sources, and once you see them that way, the answer is obvious: Interact with them with a first class data language. This is what an AI native control plane looks like.

Cool. Thank you, Emma. That's my lovely assistant, Emma. I just need to get her to to pronounce Stack U L correctly, It will be good. And Kafka as well. I don't know if you picked that up. Okay. Cool. So my clicker is not working here for some reason. Is there a reason why that's not happening? Oh, no. That's disabled.

Is that right?

You should just leave the clicker in your hands. Does that work?

Yeah. No. It's not working.

Oh, you may need to just use the slides.

Okay. Cool. That's alright. Now, it's all good. Okay. Cool. So what that demo showed is some of the things we'll talk about that are workable patterns that stand up in the engine era. So none of these ideas are new in isolation. But if we start to combine them together, this becomes the new contract.

Okay. So the first is query before mutation. So we inspect the reality before acting, not the state file. So that is the API. So every decision an agent makes is now grounded in what the actual reality is, the actual state, not what a cache file says or a state file says.

Okay. So that's the first sort of pattern here. Idimportant assertions. Sorry. Did I miss one? No. So we declare what should be, not how to get there. So that's that's not radically dissimilar to what we're doing now. But because we're dealing with live state instead of cache state, we have better guarantees and guards around the changes that we make.

And retries are safe because we're checking the state before we retry. So again, we can we can give agents the ability to retry and resume from partial failures. So bitemporal view, and it should actually be try tritemporal view here. So these are three views. We're keeping them separate.

What is, which is what is what's observed now. What was, which is the trail of observations that we've made, and then what should be, which is the declared intent. So most tools collapse all these into one state file, and we lose the history. So if we keep them separate, then Drift stops being an alarm, and we can it be can something we can drill into and get get telemetry from.

So agents as event sources, every mutation by any author becomes an event. So the audit log is not an afterthought. It's not a a bolt on. It's not a separate artifact. It's actually part of the substrate. So replay, metrics, reconciliation, all read from the same log.

So we don't necessarily need to have a special audit story if we consider the event sources the agents as event sources by default. Universal interfaces. So if we have one query shape across providers yep. So agent you know, agents forcing agents to learn different SDK for every cloud spend, essentially, you're gonna waste most of your tokens on plumbing. So if we have a single self describing interface, we can collapse that. And, you know, again, we're still dealing with the provider specific surface. We're just not making it the model's problem to to work out.

So, again, human review was the safety loop. So agents bypass this by design, so we need policy gates. And, again, you know, a good dovetail from what Boyan talked about with CEDAR and OPA. So policy gates are are the replacements or declarative rules that the agent evaluates against its own intent before acting. Okay. So let's wrap this up here because I'm getting to hurry up here. So three things to take away.

Static state was an artifact of slow infrastructure. It's not a permanent design choice. Agents need safe access to control planes and data planes because the split's going away. We're not you know, agents don't necessarily make a discern a decision of, you know, I stop here. And we treat APIs as our data layer, not our deployment target.

So we build for query, not for code. So in saying that, if I could ask one favor of everyone here in the last minute I've got, who here has GitHub on their phone? Right? I'm I'm surprised. I'm not yeah. So here, can you take a photo of that and star the repository?

It would be greatly appreciated. And with that, I thank you very much.

AI ENGINEER MELBOURNE, JUNE 2026

INFRASTRUCTURE-AS-DATA:

BUILDING THE AI-NATIVE CONTROL PLANE

Presenter: Jeffrey Aven

STACKQL

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

Image of a man sitting at a desk, appearing stressed with his head in his hands. On the desk are a laptop displaying a pie chart, a desktop monitor showing code or data, and an illuminated desk lamp.

WHAT IaC WAS BUILT FOR

  • Humans author the changes.
  • Changes at human timescales.
  • One writer per environment.
  • Drift is an exception.

IaC System Components

  • Engineer (person): Authors infrastructure changes.
  • IaC Tool (system): Terraform / Pulumi.
  • Code Review (system): GitHub / GitLab PR.
  • Cloud Infrastructure (system): AWS / GCP / Azure.

STACKQL» AI ENGINEER MELBOURNE, JUNE 2026

A block diagram illustrates the Infrastructure as Code (IaC) workflow. An Engineer (person) initiates the process by authoring changes, which are fed into an IaC Tool (system). From the IaC Tool, changes can be sent for Code Review (system) or directly planned and applied to Cloud Infrastructure (system).

AI CHANGES EVERYTHING

  • Agents AND humans can author changes.
  • Changes at machine speed.
  • Multiple writers, at the same time.
  • Drift is the default state.

<person>
Engineer
Authors infrastructure changes

<system>
Code Review
GitHub / GitLab PR

<system>
IaC Tool
Terraform / Pulumi

<system>
Cloud Infrastructure
AWS / GCP / Azure

<external_system>
Security Agent
Posture fixes

<external_system>
Cost Agent
Rightsizing

<external_system>
IDE Copilot
Inline changes

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A flow diagram illustrating how an Engineer interacts with IaC Tools (Terraform/Pulumi) and Code Review (GitHub/GitLab PR) to apply changes to Cloud Infrastructure (AWS/GCP/Azure). The Cloud Infrastructure is also affected by an external Security Agent for posture fixes, a Cost Agent for rightsizing, and an IDE Copilot for inline changes. On the right, a list of bullet points with checkboxes highlights four statements about AI and infrastructure changes.

DRIFT ISN'T AN ERROR

IT'S A SIGNAL

2015 drift

log it, page someone

2026 drift

let the agent decide

Two line graphs are presented side-by-side. The first graph, titled "2015 drift", shows a flat line with two distinct, sharp upward spikes. The second graph, titled "2026 drift", depicts a continuous, undulating waveform with multiple smaller peaks and troughs.

WHERE THE MODEL STRAINS

WHERE THE MODEL SHOWS IT'S AGE

  1. SINGLE WRITERS
  2. HUMAN CENTRIC
  3. OPINIONATED
  4. BOUNDED

01 SINGLE-WRITER STATE

  • State files cache what one tool did.
  • They represent intent, not reality.
  • Multiple actors, no shared truth.

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A diagram illustrating the single-writer state concept. An Infrastructure as Code (IaC) Tool (Terraform / Pulumi) writes to and reads from a state file, and applies intent to Cloud Infrastructure (AWS / GCP / Azure). Two external systems, Agent A and Agent B, both interact with the Cloud Infrastructure by sending updates and queries.

02 PLAN AND APPLY EXPECT A HUMAN

  • The review cycle is the safety mechanism.
  • Agents operate outside the loop.
  • Safety can't depend on humans.

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A sequence diagram illustrates a process flow between an Agent, Human, and Cloud. The Agent proposes a plan to the Human, who then goes through a "wait human approval" step before applying the plan. A note indicates that the "cadence" of this process is "limited by human throughput".

03 OPINIONATED ABSTRACTIONS

  • Multiple services, multiple ecosystems.
  • Each abstraction is a new surface.
  • What helps humans doesn't always help agents.

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A mind-map diagram titled "Cloud Infrastructure" showing connections to various cloud providers and associated tools. From "Cloud Infrastructure", branches extend to Azure (connected to ARM, Bicep, az CLI, Kustomize, Kubernetes, Helm), GCP (connected to gax-py, Pulumi GCP, gcloud), and AWS (connected to CDK, Terraform AWS, Boto3). Other branches from "Cloud Infrastructure" lead to Wrangler, Cloudflare, API, Octokit, GitHub, and gh CLI.

04 PLANE-BOUNDED

The control/data split becomes a constraint.

Agents need to traverse both.

The control plane and data plane are converging.

STACKQL >> AI ENGINEER MELBOURNE, JUNE 2026

A diagram illustrates a conceptual flow. On the left, labeled "CONTROL PLANE", a box reads "create cluster" connected by an arrow to another box reading "create topic". This section is separated by a brick wall icon from the right section, labeled "DATA PLANE", which shows a box reading "produce messages" connected by an arrow to a box reading "consume messages".

SO, WHERE TO FROM HERE?

THE MODEL FROM 2015, BREAKS IN 2026...

STACKQL | AI ENGINEER MELBOURNE, JUNE 2026

IaC IN THE AGENT ERA

infrastructure-as-code

context

The slide presents a conceptual shift. Below the main heading, the phrase "infrastructure-as-code" is displayed, with the word "code" struck through. Directly below the struck-through word, the word "context" is written in red, signifying a transition from infrastructure as code to infrastructure as context.

THE NEW CONTRACT

What agents need to query, reason about, and act on.

Infrastructure-as-Code
YOU WROTE IT 2015
Code = Intent

Infrastructure-as-Context
AGENTS QUERY IT 2026
Reality = Data

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

Two scroll-like diagrams comparing "Infrastructure-as-Code" and "Infrastructure-as-Context". The left scroll represents Infrastructure-as-Code with a code editor icon, dated 2015, and stating "Code = Intent". The right scroll represents Infrastructure-as-Context with a database icon, dated 2026, and stating "Reality = Data".

DEMO

System Workflow

  1. An event trigger starts the process.
  2. The orchestrator astudio.gather is activated.
  3. A recon agent reads zone analytics and rate limits.
  4. The recon agent generates a recon report.
  5. An action agent, receiving the recon report, updates rate limit logs to Kafka.
  6. All these interact with the StackQL MCP server stdio.
  7. The StackQL MCP server outputs to:
    • Cloudflare zone analytics
    • Cloudflare rate limits
    • Confluent Kafka edge-autopilot-decisions

Built with the Anthropic SDK and the StackQL MCP server.

A flowchart diagram illustrating a system workflow. It begins with an event trigger, proceeds through an orchestrator, a recon agent that reads analytics and rate limits, and an action agent that updates rate limits to Kafka. All components interact with a StackQL MCP server, which then feeds into Cloudflare zone analytics, Cloudflare rate limits, and Confluent Kafka for edge-autopilot decisions.

Agent Interaction with StackQL

Python code demonstrating an agent loop that creates messages, potentially interacting with tools, and processes tool usage blocks.

def agent_loop(agent, msg):
	print(f"agent: {msg}")

	while True:
		response = client.messages.create(
			model="claude-3-opus-20240229",
			max_tokens=2000,
			system=system,
			messages=messages,
			tools=tools,
		)

		tool_blocks = [b for b in response.content if b.type == "tool_use"]

		if not tool_blocks:
			log.info(f"head/trick, {b.text}")
			return msg.text

		test_results = []
		for block in tool_blocks:
			...

Terminal output showing the execution of the StackQL shell and its welcome message.

(venv) jerrygeorge@jerrys-macbook-pro stackql-agents % /Users/jerrygeorge/stackql/src/github.com/stackql/stackql/stackql/shell
(stackql) command shell v0.5.00
Copyright (c) 2023, stackql.io. All rights reserved.
Welcome to the interactive shell for running stackql commands.
stackql>
Screenshot of a Visual Studio Code IDE showing a file explorer, a Python code editor, and a terminal. The file explorer highlights `debug.py`. The code editor displays Python code for an `agent_loop` function. The terminal is running the `stackql` interactive shell.

Local MCP servers

Screenshot of an application's settings interface, showing configuration details for local MCP servers. The left navigation pane highlights 'Developer' settings, while the main content area displays an 'Edit Config' section for a 'stackql' server, including its command and arguments.

Open AI Interface

Screenshot of an Open AI conversational interface. It displays a greeting "Afternoon, Jeff" and an input box with the partially visible query "can you list the stackql providers i have instal". The interface also shows options like "Open AI Sign-in".

Listing installed StackQL providers

Screenshot of an AI chat interface displaying a query about installed StackQL providers and the system's response.

demo.py

def log(agent, msg):
    print(f"[{'TS' if agent else agent: <8}] {msg}")

ASYNC def run(name, session, tools, system, message):
    messages = [{"role": "user", "content": message}]

    while True:
        response = client.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=1024,
            system=system,
            tools=tools,
            messages=messages,
        )

        tool_blocks = [b for b in response.content if b.type == "tool_use"]

        if not tool_blocks:
            if hasattr(b, "text"):
                log(name, b.text[:400])
            return ""

        tool_results = []
        for block in tool_blocks:
            ...

Terminal command: python3 demo.py

Screenshot of a Visual Studio Code editor displaying Python code from 'demo.py' and a terminal command.

Topics

Screenshot of the Confluent Cloud web interface displaying the 'Topics' section for the 'edgepilot-dev' cluster. It shows a list of Kafka topics, including 'edge-autopilot-decisions'.

edge-autopilot-decisions

Screenshot of the Confluent Cloud web interface, displaying the overview page for the 'edge-autopilot-decisions' Kafka topic, including its metrics, a data lineage diagram, and options for schema management and data lake integration.

edge-autopilot-decisions

Screenshot of the Confluent Cloud interface showing the 'edge-autopilot-decisions' Kafka topic. The main view displays message activity over time in a graph, a table listing messages with columns for Timestamp, Partition, Offset, Key, and Value, and a detailed JSON view of a selected message on the right sidebar. A banner indicates JSON messages are detected without a schema.

demopy.py - Agent Interaction Logic

def log(agent, msg):
    print(f"{{ts()}} {agent:<8} {msg}")

async def run(name, session, tools, system, message):
    messages = [{"role": "user", "content": message}]

    while True:
        response = client.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=1024,
            system=system,
            tools=tools,
            messages=messages,
        )

        tool_blocks = [b for b in response.content if b.type == "tool_use"]

        if not tool_blocks:
            for b in response.content:
                if hasattr(b, "text"):
                    log(name, b.text[:400])
            return b.text

        tool_results = []
        for block in tool_blocks:
            ...

A terminal session shows the prompt javen@LAPTOP25:/mnt/c/LocalGitRepos/stackql/demo-repos/edgepilot$ followed by the command duckdb.

Screenshot of a Visual Studio Code IDE displaying a Python file named demopy.py in the editor panel, with an integrated terminal showing a shell prompt and the command duckdb.

System Architecture for Edge Autopilot Decisions

  • An event trigger starts the process.
  • The event is handled by the orchestrator astudio.gather.
  • The orchestrator activates a recon agent, which accesses zone analytics and rate limits.
  • The recon agent produces a recon report.
  • Based on the recon report, an action agent updates rate limit logs to Kafka.
  • Both the recon agent and action agent communicate with StackQL MCP server skills.
  • The StackQL MCP server skills integrates with external services:
    • Cloudflare zone analytics
    • Cloudflare rate limits
    • Confluent Kafka edge-autopilot decisions

Built with the Anthropic SDK and the StackQL MCP server.

A flowchart diagram illustrating a system for edge-autopilot decisions, showing components like an event trigger, orchestrator, recon agent, action agent, StackQL MCP server, Cloudflare services, and Confluent Kafka, interconnected with arrows indicating data flow.

WHAT'S WORKING

PATTERNS THAT HOLD UP IN THE AGENTIC ERA

  • 01 - QUERY BEFORE MUTATION
  • 02 - IDEMPOTENT ASSERTIONS
  • 03 - BI-TEMPORAL VIEW
  • 04 - AGENTS AS EVENT SOURCES
  • 05 - UNIVERSAL INTERFACES
  • 06 - POLICY GATES

STACKQL >> AI ENGINEER MELBOURNE, JUNE 2026

01 QUERY BEFORE MUTATION

Inspect reality, not the state file, before acting.

A state file shows what a tool wrote last run. The cloud API shows what actually exists. Autonomous agents should read live state on every decision.

A sequence diagram illustrates an interaction between an Agent and a Cloud API. The Agent sends a "SELECT current state" request to the Cloud API, which returns the "actual reality" to the Agent. The Agent then internally compares this to a desired state and decides whether to "mutate only if drift". Finally, a "result" is returned from the Cloud API to the Agent.

02 IDEMPOTENT ASSERTIONS

Idempotent assertions, not imperative scripts.

Agents retry and resume by default. If every call asserts desired state, every attempt converges on the same end state and the agent does not have to remember what it did.

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A sequence diagram illustrating the process of idempotent assertions. It shows interactions between an Agent, an Assert Engine, and a Cloud API. The Agent asserts a desired state to the Assert Engine, which then reads the current state from the Cloud API. If the current state differs from the desired state, the Assert Engine applies the diff to the Cloud API and returns 'ok' to the Agent. The diagram then shows 'Retry' blocks, indicating repeated attempts. In subsequent attempts, if the current state equals the desired state, a 'no-op' is returned to the Agent. A final section highlights 'same input, same end state' even after multiple retries.

03 BI-TEMPORAL VIEW

What is. What was. What should be.

Keep reality, history, and intent as separate queryable views, and drift becomes diagnosable instead of alarming.

Resource views:

  • What is
    • observed now
    • ground truth from API
  • What was
    • observed at t-n
    • event trail
    • drift history
  • What should be
    • declared intent
    • desired state

A mind map diagram titled "Resource" illustrates three main branches: "What is", "What was", and "What should be". "What is" further branches into "observed now" and "ground truth from API". "What was" branches into "observed at t-n", "event trail", and "drift history". "What should be" branches into "declared intent" and "desired state".

04 AGENTS AS EVENT SOURCES

Agents as event sources, feeding audit and replay

"If every mutation is published as an event, the audit log stops being a separate artefact. It becomes the substrate that audit, replay, metrics, and reconciliation all read from. Each event carries its origin: the intent, the trigger, the agent identity. What happened and why are the same record."

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A flow diagram titled "Agents as Event Sources." It shows three "Authors": Agent A, Agent B, and Human, all feeding into an "Append-only event log." This log then feeds into four "Consumers": Audit, Replay, Metrics, and Reconcile, indicating a system where all actions by agents or humans are logged as events and then consumed by various processes for different purposes.

05 UNIVERSAL INTERFACES

One query shape, every provider.

"A single query shape across providers means one thing to learn and one thing to plan against, instead of a different SDK per cloud."

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

A diagram illustrates a central 'Universal Interface' labeled as an 'Agent' connecting via arrows to a list of 'Providers'. The providers are Cloudflare, Snowflake, GitHub, Kubernetes, Databricks, Azure, GCP, and AWS.

06 POLICY GATES REPLACE REVIEW CYCLES

Bounded Execution

The review cycle bounded what humans could do by accident. In the agent era, execution bounds do the same job by design: budget ceilings, region locks, change rate limits, resource count caps. Policy is not a compliance artefact. It is the new safety loop.

STACKQL AI ENGINEER MELBOURNE, JUNE 2026

A flowchart diagram illustrating the concept of policy gates. An input labeled "Agent Intent" flows into a large box labeled "Policy Gate," which contains four sequential rectangular steps: "Budget ceiling," "Region lock," "Rate limit," and "Count cap." From the Policy Gate, two paths emerge: a "pass" path leading to a green oval labeled "Execute: decision logged," and a "fail" path leading to a red oval labeled "Blocked: event published."

KEY TAKEAWAYS

  • Static state was an artefact of slow infrastructure.
  • Agents need safe access to control planes as well as data planes.
  • Treat cloud APIs as your data layer, not your deployment target.

STACKQL++ AI ENGINEER MELBOURNE, JUNE 2026

Silhouette of a person standing on a mountain peak, looking out at a bright sunset or sunrise, with clouds in the background, holding what appears to be binoculars.

STACKQL>>

  • CLOUD
  • COMPLIANCE
  • SECURITY
  • MCP
  • AUTOMATION
  • ASSURANCE
  • THANK YOU

Agentic AI Foundation SILVER MEMBER

STACKQL>> AI ENGINEER MELBOURNE, JUNE 2026

https://github.com/stackql/stackql stackql.io

A slide for STACKQL showing its logo, a grid of services including Cloud, Compliance, Security, MCP, Automation, Assurance, and a "Thank You" button. It also displays an "Agentic AI Foundation SILVER MEMBER" badge and a QR code.

Technologies & Tools

  • Anthropic SDK
  • AWS CDK
  • CEDAR
  • DuckDB
  • Kafka
  • MCP server
  • OPA
  • Pulumi
  • Rulesets API
  • StackQL
  • Terraform

Standards & Specs

  • SQL

Concepts & Methods

  • Agents as Event Sources
  • Bitemporal Pattern
  • Control Plane
  • Data Plane
  • Idempotent Assertions
  • Infrastructure as Code
  • Infrastructure as Context
  • Policy Gates
  • Query Before Mutation
  • State File
  • Tritemporal View

Organisations & Products

  • Cloudflare
  • Confluent
  • GitHub