<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tim Poschel</title>
    <description>The latest articles on DEV Community by Tim Poschel (@tposchel).</description>
    <link>https://dev.to/tposchel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1108646%2F7cbed7e4-4d64-42d4-b0ed-b221f8913359.jpg</url>
      <title>DEV Community: Tim Poschel</title>
      <link>https://dev.to/tposchel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tposchel"/>
    <language>en</language>
    <item>
      <title>Why SREL Matters for Agent Governance</title>
      <dc:creator>Tim Poschel</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:02:20 +0000</pubDate>
      <link>https://dev.to/tposchel/why-srel-matters-for-agent-governance-l7l</link>
      <guid>https://dev.to/tposchel/why-srel-matters-for-agent-governance-l7l</guid>
      <description>&lt;p&gt;Most conversations about AI agents focus on capability: what the agent can do, which tools it calls, how it reasons. Far less attention is paid to a harder question — &lt;strong&gt;how do we make the risk of that agent machine-readable and comparable?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where SREL becomes complementary to capability languages like ACEL.&lt;/p&gt;




&lt;h3&gt;
  
  
  Capability vs Risk: Two Missing Standards
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;What we need&lt;/th&gt;
&lt;th&gt;Current state&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What the agent is allowed / designed to do&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Declarative capability contract&lt;/td&gt;
&lt;td&gt;Emerging (ACEL, Agent Spec, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;How risky that agent is in context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Structured, comparable risk output&lt;/td&gt;
&lt;td&gt;Almost entirely free-form (PDFs, slides, spreadsheets)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ACEL answers the first question cleanly: five aspects + autonomy modal + oversight rules, expressed as a versioned contract.&lt;/p&gt;

&lt;p&gt;SREL answers the second: a normative grammar so that risk assessments become data instead of documents.&lt;/p&gt;

&lt;p&gt;Without the second half, governance stays manual and non-scalable.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Gap SREL Closes
&lt;/h3&gt;

&lt;p&gt;Today a model risk or agent risk assessment usually ends up as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A long PDF&lt;/li&gt;
&lt;li&gt;A spreadsheet with colored cells&lt;/li&gt;
&lt;li&gt;A slide deck for a review committee&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ingested by a monitoring system&lt;/li&gt;
&lt;li&gt;Diffed across versions&lt;/li&gt;
&lt;li&gt;Compared across vendors&lt;/li&gt;
&lt;li&gt;Automatically escalated when a threshold is crossed&lt;/li&gt;
&lt;li&gt;Linked structurally to the controls that are supposed to mitigate them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SREL turns the assessment into a &lt;strong&gt;conformant document&lt;/strong&gt; with required sections, typed values, and semantic invariants. Downstream systems can consume it the same way they consume OpenAPI or SBOM files.&lt;/p&gt;




&lt;h3&gt;
  
  
  Geometric Structure, Not Just Another Schema
&lt;/h3&gt;

&lt;p&gt;SREL is not “yet another YAML schema for risk.”&lt;/p&gt;

&lt;p&gt;It is built on a geometric substrate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;9 dyadic groups × 6 compositional periods = &lt;strong&gt;54 named risk primitives&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Each primitive sits at a fixed coordinate&lt;/li&gt;
&lt;li&gt;Scores live on an n-simplex decomposition&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;meta-condition veto&lt;/strong&gt; (KILL, SAF, HITL, AUT, TRU, MAN) can collapse the entire composite to zero if structural prerequisites fail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives the language two useful properties:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Comparability&lt;/strong&gt; — two assessments of different systems can be placed in the same coordinate space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control linkage&lt;/strong&gt; — the Controls Exchange profile places controls at the &lt;em&gt;same&lt;/em&gt; coordinates as the risks they address. No external mapping table required.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last point is rare. Most control frameworks (OSCAL, etc.) and risk frameworks live in separate conceptual spaces. SREL deliberately co-locates them.&lt;/p&gt;




&lt;h3&gt;
  
  
  How This Complements Declarative Agents
&lt;/h3&gt;

&lt;p&gt;Imagine an agent defined in ACEL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent research_assistant {
  autonomy: SUPERVISED
  ...
  oversight high_stakes {
    trigger: UNCERTAINTY_ABOVE 0.3
    action: ASK_APPROVAL
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That contract tells us &lt;em&gt;what&lt;/em&gt; the agent is and &lt;em&gt;how&lt;/em&gt; it should be governed at runtime.&lt;/p&gt;

&lt;p&gt;A corresponding SREL document can tell us &lt;em&gt;how risky&lt;/em&gt; the current deployment of that agent is, under real conditions, with a machine-checkable composite score and a clear record of which primitives are driving the risk.&lt;/p&gt;

&lt;p&gt;The two artifacts answer different questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ACEL&lt;/strong&gt; → “What is this agent supposed to be and how is it constrained?”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SREL&lt;/strong&gt; → “Given the current context, how risky is it actually behaving / performing?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together they form a more complete governance loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Declare capability and oversight (ACEL)&lt;/li&gt;
&lt;li&gt;Assess risk in a structured, comparable form (SREL)&lt;/li&gt;
&lt;li&gt;Feed the risk output back into monitoring, policy, or human review&lt;/li&gt;
&lt;li&gt;Update the capability contract or the runtime thresholds when needed&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Practical Implications
&lt;/h3&gt;

&lt;p&gt;If you are building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent platforms&lt;/strong&gt; → You can emit SREL documents as part of continuous evaluation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model risk management&lt;/strong&gt; → You finally have an interchange format instead of proprietary report formats&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring / observability&lt;/strong&gt; → You can alert on structured bands (WATCH → DRIFT → ELEVATED → CRITICAL) instead of parsing prose&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controls / compliance&lt;/strong&gt; → You can place controls at the same coordinates as the risks they mitigate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The language is deliberately open (CC0 for the specification text) and designed for downstream consumption rather than for any single vendor’s scoring engine.&lt;/p&gt;




&lt;h3&gt;
  
  
  Closing Thought
&lt;/h3&gt;

&lt;p&gt;Capability languages make agents &lt;em&gt;describable&lt;/em&gt;.&lt;br&gt;&lt;br&gt;
Risk languages make agents &lt;em&gt;governable at scale&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;SREL is an attempt to give the industry the second half of that equation in a form that machines can actually use.&lt;/p&gt;

&lt;p&gt;If ACEL (or similar contracts) becomes the way we declare what an agent is, SREL is a strong candidate for how we exchange what its residual risk looks like.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Further reading&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SREL specification &amp;amp; grammar: &lt;a href="https://github.com/srel-spec/srel" rel="noopener noreferrer"&gt;github.com/srel-spec/srel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website: &lt;a href="https://srel.net" rel="noopener noreferrer"&gt;srel.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Related capability language: &lt;a href="https://github.com/srel-spec/acel" rel="noopener noreferrer"&gt;github.com/srel-spec/acel&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>governance</category>
      <category>standards</category>
      <category>declarative</category>
    </item>
    <item>
      <title>Declarative AI Agents: Spec Once, Generate Everywhere with ACEL</title>
      <dc:creator>Tim Poschel</dc:creator>
      <pubDate>Mon, 10 Aug 2026 13:32:00 +0000</pubDate>
      <link>https://dev.to/tposchel/declarative-ai-agents-spec-once-generate-everywhere-with-acel-88k</link>
      <guid>https://dev.to/tposchel/declarative-ai-agents-spec-once-generate-everywhere-with-acel-88k</guid>
      <description>&lt;p&gt;Most agent frameworks still force you to write imperative code: wire tools, manage memory, hard-code oversight logic, and re-implement the same patterns for every new runtime. The result is brittle agents that are hard to review, version, audit, or port.&lt;/p&gt;

&lt;p&gt;A cleaner path is emerging: treat the agent as a &lt;strong&gt;declarative contract&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is ACEL?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ACEL (Agent Capability Expression Language)&lt;/strong&gt; is a small, focused language for defining AI agents. It is built on the Rectified Pentachoron Framework (RPF) and models an agent as exactly five aspects plus a global autonomy modal:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Neglect pathology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;telos&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The objective pursued&lt;/td&gt;
&lt;td&gt;Aimless reactivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;world_model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Present apprehension of environment state&lt;/td&gt;
&lt;td&gt;Ungrounded action (hallucination)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;State retained across time&lt;/td&gt;
&lt;td&gt;Amnesia&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;deliberation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mapping situation → action&lt;/td&gt;
&lt;td&gt;Thrashing / myopia&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;actuation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Effecting change on the environment&lt;/td&gt;
&lt;td&gt;Paralysis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Autonomy is &lt;em&gt;not&lt;/em&gt; a sixth aspect. It is a modal that qualifies every aspect (supervised perception, supervised deliberation, etc.). Oversight rules sit alongside it as first-class triggers (uncertainty thresholds, irreversible actions, cost limits, etc.).&lt;/p&gt;

&lt;p&gt;A minimal example looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent research_assistant {
  autonomy: SUPERVISED

  telos {
    goal: ACHIEVE "comprehensive_report" AND MAINTAIN "factual_accuracy"
    priority: HIGH
  }

  world_model {
    grounding: REQUIRED
    percept web_search { type: RETRIEVE protocol: MCP freshness: 1h }
  }

  memory {
    type: HYBRID
    store short_term { capacity: 10000 ttl: 1h retrieval: RECENCY }
    store long_term  { capacity: 1000000 retrieval: RELEVANCE }
  }

  deliberation {
    mode: HYBRID
    plan   { strategy: HIERARCHICAL depth: 4 replan_on_failure: true }
    decide { strategy: MONTE_CARLO_TREE_SEARCH risk: 0.4 explore: 0.2 }
    reflect { trigger: ON_ERROR over: long_term }
  }

  actuation {
    effect document_store { type: MODIFY protocol: REST permissions: READ, WRITE }
  }

  oversight high_stakes {
    trigger: UNCERTAINTY_ABOVE 0.3
    action: ASK_APPROVAL
    escalate_to: lead
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The language enforces clean separations (raw data percepts are read-only; effects are write; reflection must bind to a declared memory store) and produces a conformance report against the five-aspect basis. The &lt;code&gt;.acel&lt;/code&gt; file becomes the single source of truth — versionable, reviewable, and enforceable in CI.&lt;/p&gt;

&lt;h3&gt;
  
  
  From Spec to Artifacts: acel-generator
&lt;/h3&gt;

&lt;p&gt;Writing the contract is only half the story. &lt;strong&gt;acel-generator&lt;/strong&gt; (OpenAPI-Generator-style tooling for ACEL) turns that contract into concrete artifacts.&lt;/p&gt;

&lt;p&gt;Pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.acel  →  parse + validate + framework conformance  →  intermediate representation (IR)  →  generators  →  artifacts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Current built-in generators include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;langgraph&lt;/strong&gt; — LangGraph / LangChain-shaped Python package (agent, memory, tools, oversight)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;markdown&lt;/strong&gt; — Agent card (&lt;code&gt;AGENT.md&lt;/code&gt;) + Mermaid architecture diagram&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ossa&lt;/strong&gt; — OSSA-style agent contract YAML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pytest&lt;/strong&gt; — Basic invariant test suite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a2a&lt;/strong&gt; — Agent2Agent Agent Card (&lt;code&gt;.well-known/agent-card.json&lt;/code&gt;) for discovery and delegation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp&lt;/strong&gt; — MCP tool manifest (&lt;code&gt;mcp.json&lt;/code&gt;) with percepts as read tools and effects as write tools (plus &lt;code&gt;destructiveHint&lt;/code&gt; annotations)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Governance details that current interoperability protocols do not express (autonomy level, oversight, grounding, retention shape) are emitted under namespaced extensions so the gap stays visible rather than being papered over.&lt;/p&gt;

&lt;p&gt;Design principles of the generator:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The spec is the contract — generators map declared aspects; they invent no semantics.&lt;/li&gt;
&lt;li&gt;Fail closed on validation.&lt;/li&gt;
&lt;li&gt;Autonomy and oversight are first-class in every runtime generator.&lt;/li&gt;
&lt;li&gt;Memory generators respect durability, resolution, and recording decisions.&lt;/li&gt;
&lt;li&gt;Extensible via plugins and Jinja templates.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Why this matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Governance as code&lt;/strong&gt; — The same file that describes the agent also drives CI gates and runtime policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interoperability without loss of intent&lt;/strong&gt; — A2A skills and MCP tools are generated from the same percept/effect split.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portability&lt;/strong&gt; — One contract, multiple scaffolds (LangGraph today; others tomorrow).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability&lt;/strong&gt; — Every generated artifact can be traced back to a versioned, validated ACEL document.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ACEL is deliberately &lt;em&gt;not&lt;/em&gt; a runtime. It is the contract that binds the layers you already run (agent loop, control plane, gateway, tools/MCP, memory). Author-time validation shifts left; runtime enforcement compiles autonomy and oversight into gateway rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting started
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Language &amp;amp; validation: &lt;a href="https://github.com/srel-spec/acel" rel="noopener noreferrer"&gt;https://github.com/srel-spec/acel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Generator: &lt;a href="https://github.com/srel-spec/acel-generator" rel="noopener noreferrer"&gt;https://github.com/srel-spec/acel-generator&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are MIT-licensed (with a narrow patent non-assertion on the language itself). The projects are early (alpha), but the conceptual clarity is already strong.&lt;/p&gt;

&lt;p&gt;If you are tired of re-implementing the same agent skeleton for every framework, try writing the contract once and generating the rest. Declarative agents are not just cleaner code — they are a practical step toward agents that are governable, auditable, and portable by design.&lt;/p&gt;

</description>
      <category>declarativeai</category>
      <category>agenticai</category>
      <category>aiagents</category>
      <category>acel</category>
    </item>
  </channel>
</rss>
