{"id":2374,"date":"2026-08-29T12:45:11","date_gmt":"2026-08-29T12:45:11","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/all-things-azure\/?p=2374"},"modified":"2026-08-29T12:48:14","modified_gmt":"2026-08-29T12:48:14","slug":"only-believe-what-you-can-validate","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/all-things-azure\/only-believe-what-you-can-validate\/","title":{"rendered":"Only believe what you can validate: a verification framework for agentic AI"},"content":{"rendered":"<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">How to read this article<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">This article picks up where my <a class=\"rich-composer-link\" href=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/the-realities-of-application-modernization-with-agentic-ai-early-2026\/\">January piece<\/a> left off. My catch phrase is still the same: <i><em class=\"rich-composer-italic\">&#8220;only believe what you can validate&#8221;<\/em><\/i>. This article is about validation.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">If you are new to agentic AI (in modernization contexts), I would highly recommend reading <a class=\"rich-composer-link\" href=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/the-realities-of-application-modernization-with-agentic-ai-early-2026\/\">The Realities of Application Modernization with Agentic AI<\/a> first. Start there, then come back.<\/span><\/p>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">The problem with &#8220;looks good to me&#8221;<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">I have had a version of the same conversation many times over the last months. I work with a customer on an agentic application modernization. In this concrete example we are facing one of 150 COBOL modules with 10 related copybooks. The customer&#8217;s experts chose this module intentionally as it is &#8220;fairly isolated&#8221;. The agent works for five minutes and generates the reverse engineering documentation of the module for us: a markdown file with over 2500 words, longer than the draft of this article. I ask: &#8220;<i><em class=\"rich-composer-italic\">alright, is this what you would expect?<\/em><\/i>&#8221; The room goes quiet. Blank stares. Then: <i><em class=\"rich-composer-italic\">&#8220;Looks good to me on first glance&#8221;<\/em><\/i>, often followed by a <i><em class=\"rich-composer-italic\">&#8220;do you expect me now to read through everything?&#8221;<\/em><\/i><\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">And the person is right. It does look good. They quickly scanned the first 10-20 lines. The record layout is described correctly. So they conclude the rest is probably correct as well. Reasonable conclusion at first glance. But what is easy to verify is usually also easy to get right, for the model too. So it probably is correct, but it does not hold any significance for the rest of the document.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">The knowledge captured in that module took decades to develop, and the agent claims to have extracted it in five minutes. And in this moment they have no easy way to determine which of these 2500 words are correct, hallucinated, or misinterpreted, and which words are missing. They are facing this massive document and would need to read through it thoroughly, which would take hours. Just as a reminder: this module is one of the easier ones. What will happen if they feed the agentic AI larger modules with more dependencies?<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">My first impulse is to say: <i><em class=\"rich-composer-italic\">&#8220;well, of course I do. How else would we be able to determine if the agentic output is sufficient?&#8221;<\/em><\/i> But obviously it is not that easy. It will never scale. It will overload the experts and create AI fatigue. And that&#8217;s fair enough. So the question is, how do we solve this problem?<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">The problem is that agentic AI produces a lot of output in minutes, and that output looks complete, coherent, and confident. And if we are honest, this is a problem we have with every agentic AI output. But in some use cases, and app modernization is one of them, accuracy matters more and the consequences of getting it wrong are more severe, especially when we talk about core business cases of organizations.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">&#8220;Most things look right&#8221; in a mission-critical system is not the same as correct.<\/span><\/p>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">The tech can&#8217;t hold up to the expectations<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">As a model&#8217;s context window fills up, two effects kick in: Below 50% capacity, middle tokens degrade &#8211; the model retains the beginning and end but loses what is in between. Above 50%, even the beginning decays. The model continues to produce confident output.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">These effects are widely known as context rot. If you want to learn more, I recommend: <a class=\"rich-composer-link\" href=\"https:\/\/www.producttalk.org\/context-rot\/\">producttalk.org\/context-rot<\/a><\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">The other extreme is not providing enough context. Either way, the result is one of three specific failure modes.<\/span><\/p>\n<ol class=\"rich-composer-ol\">\n<li class=\"rich-composer-li\" value=\"1\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">The miss.<\/strong><\/b> The AI overlooked something that should have been included, resulting in incomplete output while nothing is technically wrong.<\/span><\/li>\n<\/ol>\n<ol class=\"rich-composer-ol\" start=\"2\">\n<li class=\"rich-composer-li\" value=\"2\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">The hallucination.<\/strong><\/b> The AI produced something plausible that does not exist or is not true. Looks good, still wrong.<\/span><\/li>\n<\/ol>\n<ol class=\"rich-composer-ol\" start=\"3\">\n<li class=\"rich-composer-li\" value=\"3\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">The misinterpretation.<\/strong><\/b> The AI tried to follow slightly vague instructions to the best of its knowledge and still produced the wrong outcome.<\/span><\/li>\n<\/ol>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Now we know the core of the problem and the answer, obviously, is verification.<\/span><\/p>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">The three actors in any verification story<\/span><\/h2>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2026\/08\/verification-venn-1.webp\"><img decoding=\"async\" class=\"alignnone size-full wp-image-2377\" src=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2026\/08\/verification-venn-1.webp\" alt=\"verification venn image\" width=\"979\" height=\"920\" srcset=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2026\/08\/verification-venn-1.webp 979w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2026\/08\/verification-venn-1-300x282.webp 300w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2026\/08\/verification-venn-1-768x722.webp 768w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2026\/08\/verification-venn-1-24x24.webp 24w\" sizes=\"(max-width: 979px) 100vw, 979px\" \/><\/a><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Verification involves three parties: <b><strong class=\"rich-composer-bold\">humans<\/strong><\/b>, <b><strong class=\"rich-composer-bold\">AI<\/strong><\/b>, and <b><strong class=\"rich-composer-bold\">deterministic tools<\/strong><\/b>. Each pair has a specific failure mode.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">&#8220;You are absolutely right.&#8221;<\/em><\/i>: When AI misses something and a human is lucky and catches it, AI just fixes the found problem unless actively prompted to find the root cause.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">&#8220;I miserably failed you.&#8221;<\/em><\/i>: When AI produces something that compiles but is factually wrong, deterministic tools are unlikely to catch the problem, which results in a green pipeline and the problem getting shipped to production.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">&#8220;I have to automate this?&#8221;<\/em><\/i>: Automation has always been hard. And there is still this wrong mental model: if a task only needs 5 seconds to be done manually, why spend the effort to automate it. This technical process debt becomes visible way too late and is another root cause why agentic AI adoption stalls.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">It became clear that none of these three actors can work alone and scale, so how do we combine them to become safe with real verification? How do we define the question mark in the middle?<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">While researching this matter, two things became clear to me: <b><strong class=\"rich-composer-bold\">agentic AI output is only as good as its verification mechanism<\/strong><\/b>, but not every verification mechanism has the same significance in every context.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">You can choose the best LLM with the best benchmarks, but its output does not matter. What matters is your ability to tell how good it is. And to determine this, I tried to create a framework\/mental model to help simplify answering the question &#8220;what good looks like&#8221;.<\/span><\/p>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">An iterative verification framework<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Verification should always be seen iteratively. If you skip the bare minimum the advanced checks lose reliability. Across all disciplines the six core questions you need to answer to verify the output of agentic AI are essentially the same:<\/span><\/p>\n<ul class=\"rich-composer-ul\">\n<li class=\"rich-composer-li\" value=\"1\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What is the check?<\/strong><\/b> The concrete thing you run, review, or measure.<\/span><\/li>\n<li class=\"rich-composer-li\" value=\"2\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What does it cost to build?<\/strong><\/b> Money, time, expertise, access to production data.<\/span><\/li>\n<li class=\"rich-composer-li\" value=\"3\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Who performs it?<\/strong><\/b> Deterministic tooling, AI, or a human. Often a combination.<\/span><\/li>\n<li class=\"rich-composer-li\" value=\"4\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What does it actually prove?<\/strong><\/b> Be honest about what you are actually learning by performing this check.<\/span><\/li>\n<li class=\"rich-composer-li\" value=\"5\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What is the result?<\/strong><\/b> A concrete, tangible and easy to act on artifact.<\/span><\/li>\n<li class=\"rich-composer-li\" value=\"6\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What tools exist to help?<\/strong><\/b><\/span><\/li>\n<\/ul>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">The output is not only the table. Most teams have never tried the exercise of actually writing down the de facto verification model that already exists implicitly in the expert&#8217;s heads. It was just never documented, and therefore probably inconsistent and invisible. At the same time, writing the verification model down names it &#8211; and naming it is the first step to improving it. That exercise is what makes it possible to identify that the value of certain bare minimum checks is &#8220;almost nothing&#8221;. The framework is just a helper.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Below, I show two examples of how I would build verification layers for reverse engineering and code generation output done by agentic AI (these are currently the most relevant in my work domain).<\/span><\/p>\n<blockquote class=\"rich-composer-quote\"><p><code><span style=\"font-family: helvetica, arial, sans-serif;\">Disclaimer: This is an opinionated POV, your criteria might be different, your domain might be different.<\/span><\/code><\/p><\/blockquote>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">Reverse engineering<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">When applying the framework to reverse engineering, the verification layers could look like the following:<\/span><\/p>\n<table class=\"rich-composer-table\">\n<colgroup>\n<col \/>\n<col \/>\n<col \/>\n<col \/>\n<col \/>\n<col \/><\/colgroup>\n<tbody>\n<tr>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Level<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Check<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Cost to build<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Check performed by<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What it actually proves \/ result<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Tool examples<\/strong><\/b><\/span><\/p>\n<\/th>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">0a<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">All referenced entities exist in the codebase; codebase is fully represented in the output<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Low<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">No hallucinations, everything captured;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: complete entity map of the code<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Custom scripts, SonarQube, AppCAT, dependency scanners;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">cobol-rekt, CAST<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">0b<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Output follows provided documentation standards; no redundancies<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Low<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">AI<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Output is structurally coherent,<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">follows agreed conventions;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: list of deviations from the standard<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Agentic AI<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">1<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Domain expert confirms or corrects the extracted business rules in one module<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Low<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Spot test, accuracy for reviewed scope;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: every business rule in that module<\/em><\/i><\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">marked confirmed or corrected<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Manual review<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">2<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Based on the use case description, tests are generated and executed against the source<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">system; 100% test coverage for described use cases<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Medium<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + AI<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Documented behavior matches source<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">system behavior for captured use cases;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: pass\/fail per use case<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">common testing frameworks, custom scripts,<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">Agentic AI for test generation<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">3<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Domain expert confirms or corrects every extracted business rule, across full scope or representative sample<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">High<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">All business rules are correctly captured;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: every extracted rule marked confirmed<\/em><\/i><\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">or corrected, plus a correction rate<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Manual review, structured interviews<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">4<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Documented behavior validated against production execution traces<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">High + operational<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Runtime check; covers edge-case behavior;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: documented behavior never observed in<\/em><\/i><\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">traces, and observed behavior not documented<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">OpenTelemetry, Datadog, Dynatrace;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">IBM OMEGAMON \/ Compuware Strobe (mainframe)<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">5<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Documentation continuously validated against live system; divergence triggers alert<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Very high + operational<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Documentation consistency becomes<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\">ongoing guarantee;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: an alert per divergence<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">OpenTelemetry + custom assertion pipeline, contract testing frameworks<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">Code generation<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Applying the framework to code generation is way less fuzzy than reverse engineering, as the quality gates for good AI-generated code are the same as for traditionally written code. So in a perfect world, in a mature software engineering culture, this should already be in place, which makes it easier to &#8220;just apply&#8221; to AI-generated output.<\/span><\/p>\n<table class=\"rich-composer-table\">\n<colgroup>\n<col \/>\n<col \/>\n<col \/>\n<col \/>\n<col \/>\n<col \/><\/colgroup>\n<tbody>\n<tr>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Level<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Check<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Cost to build<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Check performed by<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">What it actually proves \/ result<\/strong><\/b><\/span><\/p>\n<\/th>\n<th class=\"rich-composer-table-cell rich-composer-table-cell-header\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><b><strong class=\"rich-composer-bold\">Tool examples<\/strong><\/b><\/span><\/p>\n<\/th>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">0a<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Compiles and is executable<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Free*<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + AI<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">That&#8217;s the bare minimum;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: build succeeds, or a build log with errors<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">javac, dotnet build, Maven, Gradle, Agentic AI*<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">0b<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Linting does not flag serious violations of coding guidelines<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Low<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Syntax is correct, coding standards are fulfilled;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: list of violations by severity<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">ESLint, SonarQube, Checkstyle, PMD, Pylint<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">0c<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Security scan flags no high\/critical vulnerabilities; no known CVEs in dependencies<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Low<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Generated code doesn&#8217;t introduce known vulnerability patterns or vulnerable dependency versions;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: list of findings by severity, with CVE references<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Snyk, Checkmarx, Semgrep, OWASP Dependency Check, GitHub Dependabot<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">1<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Unit testing covers existing code base including edge cases<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Low<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Correct for the explicitly tested paths; reveals obvious regressions;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: pass\/fail per test, plus a coverage number<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">JUnit, NUnit, pytest, Jest<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">2<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Components interact correctly with adjacent systems (integration testing)<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Medium<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Integration seams are correct; generated code connects to infrastructure as expected;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: pass\/fail per integration test<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Testcontainers, WireMock, Spring Integration Test, pytest<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">3<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Identical results on a representative sample and production-representative data set, volume &amp; distribution<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Medium<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Correct for the input shapes of the sample and real data distribution, including edge cases;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: diff report of mismatching records<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Custom test harnesses, database diff tools, pytest fixtures, CI\/CD<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">4<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Response times, throughput, and resource usage meet or exceed source system SLAs<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Medium\u2013High<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Functionally correct code is also operationally viable; no silent performance regression;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: latency, throughput and resource numbers against the SLA thresholds<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">JMeter, k6, Gatling, Azure Load Testing<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">5<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Critical path e2e coverage<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">High<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Critical business paths produce correct end-to-end outcomes; reveals integration failures invisible to unit tests;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: pass\/fail per critical path<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Playwright, Selenium, Cypress, Postman<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">6<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Equivalent under parallel \/ shadow run against live traffic<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">High + operational<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Deterministic + Human<\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Correct against the workload you have today;<\/span>\n<span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Result: divergence rate between old and new system on mirrored traffic<\/em><\/i><\/span><\/p>\n<\/td>\n<td class=\"rich-composer-table-cell\">\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Traffic mirroring, blue\/green deployments<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">*<span style=\"font-size: 8pt;\">Tokens are usually never free<\/span><\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">The uncomfortable truth about reverse engineering is that you always have to start from scratch, because documentation cannot be executed, which makes it harder to implement good quality gates, but not impossible.<\/span><\/p>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">A check without a result is not a check<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">The difference between determinism and non-determinism is the nature of the output. Deterministic checks produce a result and they also tell you if the result is actually good. Linting gives you a list of violations. A test run gives you pass or fail. Human (and AI) checks do not work like that. &#8220;Domain expert reviews the module&#8221; produces nothing, unless somebody decided upfront what should come out of it. And if nothing comes out, we are back at &#8220;looks good to me&#8221;.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">So do not ask an expert to read 2500 words and tell you if it is correct. Give them the business rules the agent extracted and let them confirm or correct each one. The expert spends the same time, but the result is something you can act on.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">And if a check cannot be broken down like that, then the check itself is the problem.<\/span><\/p>\n<h2 class=\"rich-composer-h2\"><span style=\"font-family: helvetica, arial, sans-serif;\">Closing<\/span><\/h2>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Most teams I talk to are currently operating even below the bare minimum. If technical maturity and AI maturity are low, organizations prioritize investing resources into innovation projects. They learn the hard way what non-deterministic means, then they panic and demand people like me to fix it. Truth is I can&#8217;t. That decision needs to be made consciously. And that is work. Sometimes it is a lot of work. Balancing out risk and opportunity is always hard. Same as taking responsibility and ownership.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\">Pick your discipline. Take the conscious decisions and create your own validation layers. Apply them.<\/span><\/p>\n<p class=\"rich-composer-paragraph\"><span style=\"font-family: helvetica, arial, sans-serif;\"><i><em class=\"rich-composer-italic\">Only believe what you can validate. And validate.<\/em><\/i><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to read this article This article picks up where my January piece left off. My catch phrase is still the same: &#8220;only believe what you can validate&#8221;. This article is about validation. If you are new to agentic AI (in modernization contexts), I would highly recommend reading The Realities of Application Modernization with Agentic [&hellip;]<\/p>\n","protected":false},"author":172702,"featured_media":2383,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[35,1,38,91,92,109,89],"tags":[],"class_list":["post-2374","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agents","category-azure","category-app-development","category-migration","category-modernization","category-platform-engineering","category-thought-leadership"],"acf":[],"blog_post_summary":"<p>How to read this article This article picks up where my January piece left off. My catch phrase is still the same: &#8220;only believe what you can validate&#8221;. This article is about validation. If you are new to agentic AI (in modernization contexts), I would highly recommend reading The Realities of Application Modernization with Agentic [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts\/2374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/users\/172702"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/comments?post=2374"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts\/2374\/revisions"}],"predecessor-version":[{"id":2384,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts\/2374\/revisions\/2384"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/media\/2383"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/media?parent=2374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/categories?post=2374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/tags?post=2374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}