Agentic
L4 Control plane
L4, the hook plane on its own: what runs before and after each turn.
- Format.puml
- Length54 lines
- LibraryAgentic notation
The source
54 lines of PlantUML, and pulls in Agentic notation. Copy it, or open the template inside Gnomon and render it as it is.
@startuml
!include <agentic/core>
title Refund assistant — control plane
' VIEWPOINT: Control plane — where do guardrails sit, what do they do, and what
' do they cost? Nest a Control in the agent it wraps; it is lifted OUT of the
' flow, because a guardrail wraps every turn rather than being a step in one.
' Drawing guardrails as flow nodes is the commonest error in hand-made agent
' diagrams. The description carries the hook point and the mode:
' before-invocation before-model stream-delta after-model
' before-tool after-tool on-message after-invocation
' Mode is blocking (costs latency on the critical path), streaming, or shadow.
'
' Requirement is the same obligation one level down: instructed, with no
' mechanism behind it. The renderer lists them as "prompted, not enforced".
' Promote the ones that matter to a Control or a Rel_Expr guard.
' DONE WHEN: every hook point is either covered or explicitly waived, and every
' requirement is either promoted or deliberately left as instruction.
Actor(customer, "Customer")
Channel(inbound, "Inbound", "chat · carries customer_id, question")
Agent(assistant, "Assistant", "opus-5 · effort high") {
Control(gr_in, "Input classifier", "before-invocation · blocking")
Control(gr_pii, "PII redaction", "before-tool · blocking")
Control(gr_ground, "Grounding check", "after-model · shadow")
Control(gr_spend, "Spend monitor", "after-tool · streaming")
}
' Three levels of assurance for the same obligation. A Requirement is
' instructed and nothing checks it; a Control is hooked and checks every turn.
' Model the requirement first — the gap between the two lists is the finding.
Requirement(r_advice, "Never give financial advice", "instructed only — no mechanism enforces this")
Requirement(r_readback, "Read back the refund figure", "must state the amount before issuing")
Tool(cancel, "Issue refund", "IssueRefund v1.0.0")
Exit_Guardrail(blocked, "Blocked by guardrail")
Exit_Refusal(refused, "Refused")
Exit_Budget(budget, "Budget exhausted")
Exit_Complete(done, "Complete")
Rel(customer, inbound)
Rel(inbound, assistant)
Rel(assistant, r_advice)
Rel(r_advice, r_readback)
Rel_Expr(r_readback, cancel, "eligible == true")
Rel(cancel, done)
Rel_Expr(assistant, blocked, "classifier == 'unsafe'")
Rel_Expr(assistant, refused, "stop_reason == 'refusal'")
Rel_Expr(assistant, budget, "tokens_used > 200000")
@endumlRender this offline
This template ships in Gnomon and renders on your machine, with no account and nothing sent to a server. The browser editor is free and needs no install.
Others in Agentic architecture diagrams
- Agentic — L1 LandscapeL1: the whole estate. Which agents exist and who talks to whom.
- Agentic — L2 Topology (router)L2: a router topology, where one agent dispatches to specialists.
- Agentic — L2 Topology (swarm)L2: a peer mesh with handoffs and no central coordinator.
- Agentic — L2 Capability matrixL2: what each agent may call, read and load. No sequence.
- Agentic — L3 FlowL3: one journey end to end, including how it exits.
- Agentic — Trust boundaryWhere untrusted input crosses into privileged capability.
- Agentic — Exit mapEvery way the system can stop. Usually the most revealing one to draw.