Skip to content
Accidental Architect Everything's a prototype...
Go back

Governing the Agentic SDLC: CALM, the SDLC Common Controls and ergo at OSFF New York

Open Source in Finance Forum New York 2026, November 4-5, New York, NY

Yesterday I was back on stage at the Open Source in Finance Forum in New York, presenting Governing the Agentic SDLC with Aaron Searle. It’s always good to be back at an OSFF, and it was great to see so many people in the room. Architecture and controls aren’t usually what fills a room, so I’ll take that as a sign that more people are asking the same question we are.

That question is: when AI agents are writing and reviewing the code, who decides which changes need a human?

Our answer is that the architecture should decide.

The Problem: Controls That Live in Someone’s Head

Most organisations already have SDLC controls: peer review, separation of duties, approved dependencies, evidence retention. What they rarely have is a machine-readable link between those controls and the system they’re supposed to protect. The rule “changes to anything that touches the client ledger need a second pair of eyes” usually lives in a CODEOWNERS file, a wiki page, or the memory of whoever has been there longest.

That was tolerable when humans wrote every change at human speed. It isn’t when agents can open dozens of pull requests an hour. If the controls aren’t tied to the architecture, either everything needs a human (and the agents gain you nothing) or nothing does (and you’ve built a zombie).

The Pieces

The demo brings three open source projects together:

How It Works

The example system is a small trade capture platform: a Trade API, a Position Service, a Trade Store, and a Client Ledger as the book of record. The architecture is modelled in CALM, and controls from the SDLC Common Controls catalogue are attached to it. Some apply to the whole architecture, and some to individual nodes, such as a rule on the Client Ledger that any change to a service connected to it needs a human approver.

Each control holds its rule as an ergo policy. A merge gateway reads the architecture on main, runs every pull request against those policies, and posts an Architecture controls check. Because ergo explains its decisions, the gateway can tell the author why a change merged, needs a person, or was blocked, and it records each decision back onto the architecture as a CALM decorator.

The demo then plays out live:

  1. An agent adds an endpoint to the Trade API. The Trade API doesn’t touch the ledger, so the change merges automatically.
  2. An agent adds an endpoint to the Position Service, which writes to the ledger. The change needs Aaron’s approval, and the rule comes from the architecture, not a CODEOWNERS file.
  3. An agent takes a shortcut and has the Trade API read the ledger file directly. That connection isn’t in the architecture, so the change is blocked.
  4. I add a designed connection from the Trade API to the Client Ledger, which takes the architecture to v1.1.0. Changing the architecture needs a human too, so Aaron approves it. The gateway then re-evaluates the blocked PR by itself. It no longer gets refused; it now needs a person, and it merges once Aaron approves.

That last step is the point of the talk: when the architecture changes, the controls follow. Nobody had to update a policy file, a CODEOWNERS entry or a runbook. The architecture was the policy.

Explainability Is the Feature

Auditors, risk teams and the engineers whose PRs get blocked all ask the same thing: why? A gate that returns false with no explanation gets bypassed or ignored. With ergo, each decision says which control applied, which component it was attached to, which commit was evaluated, and which check failed and why. That explanation goes into the PR comment and into the CALM decorator, so the evidence for SDLC-PREV-014 (Test Evidence Retention) is produced as a side effect of the gate doing its job.

Get the Code, the Slides and the Video

Everything from the session is in rocketstack-matt/agentic-sdlc-blueprint:

The pull requests from the live run are in rocketstack-matt/osffny-sdlc-calm, if you want to read the gateway’s explanations for yourself. It’s a teaching blueprint, not a product, so fork it, break it and tell me what you find.

ergo Is Heading to FINOS

Kosli have raised a contribution proposal to bring ergo into FINOS as a Labs project. I think it fits well. CALM describes the architecture, the SDLC Common Controls describe what good looks like, and ergo explains whether a change meets it. Having all three under the same open governance would make it much easier for banks, vendors and regulators to share one vocabulary for software delivery controls. If you have a view, add it to the issue.

And One More Thing: CALM Is on the Thoughtworks Tech Radar

To finish on some news: CALM has been added to the latest Thoughtworks Technology Radar (Volume 35) in the Assess ring of the Languages & Frameworks quadrant. The Radar describes it as providing “a machine-readable foundation for architectural compliance and programmatic governance”. That’s exactly what the demo above relies on, and it’s great to see it recognised outside the FINOS community.

If you’re at OSFF today, come and find me. If not, the repo is a good place to start.


Share this post on:

Subscribe to the newsletter

One email a month: a short essay on software architecture, what's new in FINOS CALM, and a few links worth your time. Unsubscribe anytime with one click — every issue includes the link.


Next Post
Kingston Falls: Why I'm Building an Agent Factory