Initiative · C4

The diagram
that stays true.

IcePanel shows a beautiful C4 diagram right up until someone forgets to update it by hand. Our C4 is different: code and traces refresh it on every merge. MCP for any question. JSON for any AI agent.

"A map goes stale the second you print it. A living map grows with the knowledge."

Query 01 · full picture

Ask the graph. Watch it answer.

c4 · live
you > The full picture of a card payment — who's involved?
Payment Form FETypeScriptTrackGoPayment Form BEGoCardGate BackendKotlinTokenizerGoGeoIPGo · HTTPPSP OrchestratorGoadyen-hwGoAdyen (Provider)external
solidgate · payment flow · simplified syncasync · Kafka
Query 02 · who does CardGate call?

One hub. Three outbound patterns.

c4 · live
you > What does CardGate Backend consume?
Payment Form FETypeScriptTrackGoPayment Form BEGoCardGate BackendKotlinTokenizerGoGeoIPGo · HTTPPSP OrchestratorGoadyen-hwGoAdyen (Provider)external
solidgate · payment flow · simplified syncasync · Kafka
Query 03 · who touches card data?

PCI scope in one query.

c4 · live
you > Which services touch card data?
Payment Form FETypeScriptTrackGoPayment Form BEGoCardGate BackendKotlinTokenizerGoGeoIPGo · HTTPPSP OrchestratorGoadyen-hwGoAdyen (Provider)external
solidgate · payment flow · simplified syncasync · Kafka
Why it doesn't rot

Two feeds. Zero manual editing.

feed 1 · source code
What the service intends to call.

A parser walks the repo: gRPC/OpenAPI client imports, Kafka topics in code, DB config. Builds a declarative graph — what should talk to what. Refreshed on every merge.

feed 2 · distributed traces
What the service actually calls.

Aggregated spans from OTel. Shows real runtime patterns: which connections are live, which are dead code. Drift between code and production becomes visible, not buried in Confluence.

Code and traces rarely match perfectly. C4 doesn't hide that gap — it shows both feeds and the delta. Drift is a signal, not noise.

When you'll reach for it

Four questions C4 answers in seconds.

A new engineer joins the team.

Instead of a week on the wiki — one question to C4: “what do I break if I touch CardGate?” The answer is structured, current, precise.

You're prepping an incident review.

Blast radius comes from the graph, not from memory. Every downstream effect — a ready-made paragraph for the post-mortem.

AI agents read the architecture.

The JSON export is compact and stable. Claude, Cursor, local agents consume it as plain context. MCP — for live queries.

Security review without interviews.

“Which services touch PAN?” “Which gates does card data flow through?” — one query instead of a week of meetings.

"But wait —"

Three honest objections. Three honest answers.

Static analysis can't find dynamic calls.

answer

That's why there's a second feed — traces. Code gives you the declaration, traces give you runtime truth. C4 surfaces both and the delta between them.

We already have IcePanel.

answer

Great — IcePanel stays the UI. C4 is the MCP layer underneath. Agent-ready: JSON instead of clicks. The IcePanel diagram updates from the same graph.

Won't this just add another stale artifact?

answer

Artifacts go stale when they're updated by hand. C4 is a pipeline, not an artifact. Every merge refreshes the code feed, every hour refreshes the trace feed. Stale means a broken pipeline, not a forgotten wiki.