<?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: Subramanya L</title>
    <description>The latest articles on DEV Community by Subramanya L (@subramanya_28).</description>
    <link>https://dev.to/subramanya_28</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%2F4048202%2F8b62d18e-7f80-4dc9-bcb8-d93f79f4a022.png</url>
      <title>DEV Community: Subramanya L</title>
      <link>https://dev.to/subramanya_28</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/subramanya_28"/>
    <language>en</language>
    <item>
      <title>I Got Tired of Writing the Same PromQL Queries, So I Built PromDex</title>
      <dc:creator>Subramanya L</dc:creator>
      <pubDate>Mon, 27 Jul 2026 07:43:07 +0000</pubDate>
      <link>https://dev.to/subramanya_28/i-got-tired-of-writing-the-same-promql-queries-so-i-built-promdex-24hd</link>
      <guid>https://dev.to/subramanya_28/i-got-tired-of-writing-the-same-promql-queries-so-i-built-promdex-24hd</guid>
      <description>&lt;p&gt;Every Spring Boot service already exposes a goldmine of metrics through Actuator and Micrometer.&lt;br&gt;
The problem isn't collecting metrics. The problem is turning those metrics into something useful.&lt;br&gt;
Every new service usually means repeating the same workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing the same &lt;code&gt;sum(rate(...))&lt;/code&gt; PromQL queries again&lt;/li&gt;
&lt;li&gt;Looking up whether a metric is a counter, gauge, histogram, or summary&lt;/li&gt;
&lt;li&gt;Creating Grafana dashboards panel by panel&lt;/li&gt;
&lt;li&gt;Copying dashboards between projects and tweaking them for the latest service
None of this is particularly difficult. It's just repetitive. And repetitive work is exactly the kind of work that gets postponed — or copied incorrectly.
So I built &lt;strong&gt;PromDex&lt;/strong&gt;.
## What is PromDex?
PromDex is a drop-in Spring Boot starter that automatically exposes REST endpoints for:&lt;/li&gt;
&lt;li&gt;Building PromQL queries&lt;/li&gt;
&lt;li&gt;Discovering Prometheus metrics&lt;/li&gt;
&lt;li&gt;Generating Grafana dashboards
Add the dependency, start your Spring Boot application, and the &lt;code&gt;/promql/*&lt;/code&gt; endpoints are available immediately — no &lt;code&gt;@Configuration&lt;/code&gt;, no manual bean wiring.
## What does it do?&lt;/li&gt;
&lt;li&gt;Build PromQL queries from structured requests&lt;/li&gt;
&lt;li&gt;Discover metrics directly from &lt;code&gt;/actuator/prometheus&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Detect counters, gauges, histograms, and summaries automatically&lt;/li&gt;
&lt;li&gt;Generate Grafana import-ready dashboards&lt;/li&gt;
&lt;li&gt;Support JVM, HTTP, Kafka, Database, Cache, Kubernetes, and custom application metrics
## Zero-configuration demo
With nothing more than the dependency added, this endpoint:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8080/appmetrics &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; dashboard.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;returns a complete Grafana dashboard JSON. Import it into Grafana and you get panels for JVM, HTTP, pod status, and discovered application metrics immediately — no dashboard building required.&lt;/p&gt;
&lt;h2&gt;
  
  
  How PromDex works
&lt;/h2&gt;

&lt;p&gt;PromDex combines two sources of metrics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Static catalog&lt;/strong&gt; — common metrics Spring Boot and Micrometer already expose (JVM memory, CPU usage, HTTP request metrics, pod metrics), each with correct PromQL already prepared.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime discovery&lt;/strong&gt; — PromDex scrapes your application's own &lt;code&gt;/actuator/prometheus&lt;/code&gt; endpoint and reads the Prometheus &lt;code&gt;# TYPE&lt;/code&gt; declarations to determine whether each metric is a counter, gauge, histogram, or summary, then generates sensible default PromQL for each:
| Metric type | Generated query |
|---|---|
| Counter | &lt;code&gt;sum(rate(metric[5m]))&lt;/code&gt; |
| Gauge | &lt;code&gt;metric&lt;/code&gt; |
| Histogram | &lt;code&gt;histogram_quantile(0.9, sum(rate(metric_bucket[5m])) by (le))&lt;/code&gt; |
| Summary | &lt;code&gt;sum(rate(metric_sum[5m])) / sum(rate(metric_count[5m]))&lt;/code&gt; |
## Installation
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;io.github.subramanya-dev&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;promdex&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.0.0&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. No configuration classes, no extra beans — just add the dependency and start your application.&lt;br&gt;
Make sure Prometheus Actuator is exposed if you want live discovery:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;management&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;endpoints&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;web&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;exposure&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;include&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prometheus&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build PromQL automatically
&lt;/h2&gt;

&lt;p&gt;Instead of manually writing queries like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sum(rate(http_requests_total{job="api", status="5.."}[5m])) by (status)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;send a request to &lt;code&gt;/promql/build&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:8080/promql/build &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "metricName": "http_requests_total",
    "metricType": "COUNTER",
    "function": "rate",
    "range": "5m",
    "labels": { "job": "api", "status": "5.." },
    "aggregation": "sum",
    "groupByLabel": "status"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PromDex returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sum(rate(http_requests_total{job=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;api&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;, status=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;5..&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}[5m])) by (status)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Query built for metric 'http_requests_total' using rate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"warning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No string concatenation, no manual PromQL building.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discover metrics automatically
&lt;/h2&gt;

&lt;p&gt;Want to know which metrics your application exposes?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8080/promql/discovered
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PromDex scrapes the metrics endpoint and returns every discovered metric with its type, description, suggested PromQL, and unit — including custom application metrics you've registered yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automatic method metrics
&lt;/h2&gt;

&lt;p&gt;PromDex can instrument Spring beans with a single annotation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Service&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PaymentService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;@MethodMetrics&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"payment_charge"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Receipt&lt;/span&gt; &lt;span class="nf"&gt;charge&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Charge&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;gateway&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;charge&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This automatically publishes invocation count, execution time, and exception metrics — tagged by method and outcome, and immediately discoverable and dashboard-ready.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; an exception that's caught and fully handled inside the method won't cross the AOP boundary automatically — record it explicitly with &lt;code&gt;methodMetricsRecorder.recordHandledException(...)&lt;/code&gt; if you need it captured.&lt;/p&gt;
&lt;h2&gt;
  
  
  Production notes
&lt;/h2&gt;

&lt;p&gt;PromDex generates PromQL heuristically. It's designed to remove repetitive work — not replace engineering judgement.&lt;br&gt;
Before using generated dashboards or alerts in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review the generated queries against real Prometheus data&lt;/li&gt;
&lt;li&gt;Keep metric labels bounded — don't derive names or labels from request IDs, user IDs, order IDs, or raw error messages. That's a fast path to Prometheus cardinality explosions
## Project links&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/subramanya-dev/promdex" rel="noopener noreferrer"&gt;github.com/subramanya-dev/promdex&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Maven Central coordinates:
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;io.github.subramanya-dev&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;promdex&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.0.0&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmsj3b2dwji2tvz5p27a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmsj3b2dwji2tvz5p27a.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;PromDex is still in its early days, and there are plenty of ideas for future improvements. If you're building Spring Boot applications with Prometheus and Grafana, I'd love for you to give it a try.&lt;br&gt;
Feedback, issues, feature requests, and pull requests are all welcome. If PromDex saves you from writing even one more &lt;code&gt;sum(rate(...))&lt;/code&gt; query by hand, it's already done its job.&lt;/p&gt;

</description>
      <category>java</category>
      <category>springboot</category>
      <category>prometheus</category>
      <category>grafana</category>
    </item>
    <item>
      <title>Stop Validating AI Agents Only at the Start: Introducing Mid-Chain Governance</title>
      <dc:creator>Subramanya L</dc:creator>
      <pubDate>Sun, 26 Jul 2026 17:15:52 +0000</pubDate>
      <link>https://dev.to/subramanya_28/stop-validating-ai-agents-only-at-the-start-introducing-mid-chain-governance-2f37</link>
      <guid>https://dev.to/subramanya_28/stop-validating-ai-agents-only-at-the-start-introducing-mid-chain-governance-2f37</guid>
      <description>&lt;p&gt;Modern AI agents rarely complete a task in a single model invocation. Instead, they execute multi-step workflows:&lt;/p&gt;

&lt;p&gt;Retrieve documents&lt;br&gt;
Call APIs&lt;br&gt;
Query databases&lt;br&gt;
Generate intermediate plans&lt;br&gt;
Invoke external tools&lt;br&gt;
Produce a final response&lt;/p&gt;

&lt;p&gt;Most AI safety mechanisms, however, only validate the initial prompt or final output.&lt;/p&gt;

&lt;p&gt;This leaves an important gap.&lt;/p&gt;

&lt;p&gt;The Hidden Risk in Multi-Step AI Workflows&lt;/p&gt;

&lt;p&gt;Imagine an AI assistant receives a perfectly safe request:&lt;/p&gt;

&lt;p&gt;"Generate a quarterly sales report."&lt;/p&gt;

&lt;p&gt;The initial prompt is harmless, so it passes validation.&lt;/p&gt;

&lt;p&gt;The agent then:&lt;/p&gt;

&lt;p&gt;Searches internal documentation.&lt;br&gt;
Retrieves customer data.&lt;br&gt;
Generates SQL queries.&lt;br&gt;
Calls external services.&lt;br&gt;
Produces the report.&lt;/p&gt;

&lt;p&gt;What if, during step 3, the generated SQL unexpectedly references sensitive tables in its output? Or what if an intermediate reasoning step produces text describing a policy-violating action?&lt;/p&gt;

&lt;p&gt;Neither issue would be detected if validation only occurs at the beginning — the output of a mid-workflow step is exactly what an entry-only check can never see.&lt;/p&gt;

&lt;p&gt;The danger isn't always in the user's prompt — it can emerge in what the agent produces along the way.&lt;/p&gt;

&lt;p&gt;Why Entry-Point Guardrails Aren't Enough&lt;/p&gt;

&lt;p&gt;Today's guardrails typically focus on:&lt;/p&gt;

&lt;p&gt;Prompt filtering&lt;br&gt;
Content moderation&lt;br&gt;
Final response validation&lt;/p&gt;

&lt;p&gt;These are valuable, but they assume the workflow remains safe after the initial check.&lt;/p&gt;

&lt;p&gt;In reality, AI agents continuously generate new text and outputs at each step. Each of those outputs can contain fresh risks — sensitive data surfacing in a query, an unsafe instruction appearing in an intermediate plan, policy-violating content in a drafted response — before the final answer is ever assembled.&lt;/p&gt;

&lt;p&gt;These risks don't necessarily exist in the original prompt. They emerge in what gets produced while the agent is working.&lt;/p&gt;

&lt;p&gt;A Different Approach: Mid-Chain Governance&lt;/p&gt;

&lt;p&gt;Mid-Chain Governance re-checks a step's output text at intervals during execution, rather than relying solely on entry-point validation.&lt;/p&gt;

&lt;p&gt;To be precise about what this means: it doesn't intercept or block an action before it happens (a tool call, a database query, an API request) — it checks the text a step produces before that text is passed along to the next step or delivered to the user. That's a meaningful distinction. If step 3 generates SQL referencing a sensitive table, this checks the generated SQL text, catching it before it's used downstream — not by intercepting the database connection itself.&lt;/p&gt;

&lt;p&gt;Instead of checking every single step — which adds latency — it supports checking at intervals, always guaranteeing the response actually delivered to the user gets checked, regardless of which step produced it.&lt;/p&gt;

&lt;p&gt;This balances safety coverage with performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdricgr7i0czwqnf1q883.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdricgr7i0czwqnf1q883.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Governance is applied to the outputs that matter most, not to every intermediate token.&lt;/p&gt;

&lt;p&gt;Why Selective Re-Verification?&lt;/p&gt;

&lt;p&gt;Checking every single step's output is safer but costs latency. Checking only at entry is fast but blind to anything produced afterward. Selective re-verification — checking at intervals plus always before delivery — is a middle ground: in an accompanying simulation, it recovered most of the catch-rate benefit of checking-every-step at roughly half the latency cost. (That's a simulation result, not a production measurement — more on that below.)&lt;/p&gt;

&lt;p&gt;Potential Use Cases&lt;/p&gt;

&lt;p&gt;This kind of mid-chain output checking could be relevant to:&lt;/p&gt;

&lt;p&gt;Enterprise AI assistants&lt;br&gt;
Customer support agents&lt;br&gt;
Autonomous software engineering agents&lt;br&gt;
Multi-agent orchestration platforms&lt;/p&gt;

&lt;p&gt;Any system where an agent produces meaningful output at multiple steps — not just a single final response — is a candidate. That said, this is a young, small project (see below), not something with production track record in these domains yet.&lt;/p&gt;

&lt;p&gt;An Open-Source Experiment — and What It Actually Is&lt;/p&gt;

&lt;p&gt;To explore this idea, I built midchain-governance, a small open-source library implementing selective output re-verification for multi-step AI pipelines.&lt;/p&gt;

&lt;p&gt;Worth being direct about scope: re-checking constraints across multi-step AI processes isn't a new idea — it's an active area, with published work on compliance gating and on constraint drift across agent delegation (linked in the repo's docs/CITATIONS.md). This project doesn't claim to invent that concept. What it is: a specific, tested implementation — the interval logic, the guarantee that the delivered output is always checked regardless of chain length, and a simulation exploring the catch-rate/latency tradeoff, with the code and tests to back it up. It's also brand new, with no production track record yet — the simulation numbers are honestly documented as simulation, not a forecast.&lt;/p&gt;

&lt;p&gt;The goal isn't to replace existing guardrails, but to complement them with a specific, narrow mechanism: checking outputs as they move through a chain, not just at the door.&lt;/p&gt;

&lt;p&gt;If you're building AI agents or agentic workflows, I'd love your feedback, ideas, and contributions.&lt;/p&gt;

&lt;p&gt;GitHub Repository: &lt;a href="https://github.com/subramanya-dev/midchain-governance" rel="noopener noreferrer"&gt;https://github.com/subramanya-dev/midchain-governance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;As AI systems become increasingly autonomous, the security model needs to evolve beyond "validate once and trust forever."&lt;/p&gt;

&lt;p&gt;Safety checks shouldn't stop after the first prompt. Checking what an agent actually produces as it works — not just what the user asked for, and not just the final answer — is one piece of that.&lt;/p&gt;

&lt;p&gt;What are your thoughts? Are intermediate output checks something you've encountered in your own AI applications? I'd love to hear your perspective in the comments.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>security</category>
    </item>
  </channel>
</rss>
