{"id":13381,"date":"2026-04-03T12:58:19","date_gmt":"2026-04-03T12:58:19","guid":{"rendered":"https:\/\/techtrendfeed.com\/?p=13381"},"modified":"2026-04-03T12:58:20","modified_gmt":"2026-04-03T12:58:20","slug":"harness-engineering-for-coding-agent-customers","status":"publish","type":"post","link":"https:\/\/techtrendfeed.com\/?p=13381","title":{"rendered":"Harness engineering for coding agent customers"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>The time period harness has emerged as a shorthand to imply all the things in an AI agent besides the mannequin itself &#8211; <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/blog.langchain.com\/the-anatomy-of-an-agent-harness\/\">Agent = Mannequin + Harness<\/a>. That could be a very large definition, and due to this fact price narrowing down for widespread classes of brokers. I wish to take the freedom right here of defining its that means within the bounded context of utilizing a coding agent. In coding brokers, a part of the harness is already in-built (e.g. through the system immediate, or the chosen code retrieval mechanism, or perhaps a <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/www.anthropic.com\/engineering\/effective-harnesses-for-long-running-agents\">subtle orchestration system<\/a>). However coding brokers additionally present us, their customers, with many options to construct an outer harness particularly for our use case and system.\n    <\/p>\n<div class=\"figure \" id=\"harness-bounded-contexts.png\"><img decoding=\"async\" alt=\"Three concentric circles, with the model in the core (the ultimate thing being harnessed), then the coding agent's builder harness next circle out, and the coding agent's user harness as the outermost ring\" src=\"https:\/\/martinfowler.com\/articles\/harness-engineering\/harness-bounded-contexts.png\" style=\"max-width: 95vw;\" width=\"500\" \/><\/p>\n<p class=\"photoCaption\">Determine 1:<br \/>\n        The time period \u201charness\u201d means various things relying on the bounded context.\n      <\/p>\n<\/div>\n<p>A well-built outer harness serves two objectives: it will increase the chance that the agent will get it proper within the first place, and it offers a suggestions loop that self-corrects as many points as attainable earlier than they even attain human eyes. Finally it ought to cut back the overview toil and enhance the system high quality, all with the additional benefit of fewer wasted tokens alongside the best way.<\/p>\n<div class=\"figure \" id=\"harness-overview.png\"><img decoding=\"async\" alt=\"Title \" harness=\"\" engineering=\"\" for=\"\" coding=\"\" agent=\"\" users=\"\" overview=\"\" of=\"\" guides=\"\" shown=\"\" are=\"\" principles=\"\" cfrs=\"\" rules=\"\" ref=\"\" docs=\"\" how-tos=\"\" language=\"\" servers=\"\" clis=\"\" scripts=\"\" codemods=\"\" that=\"\" feedforward=\"\" into=\"\" a=\"\" and=\"\" feedback=\"\" sensors=\"\" review=\"\" agents=\"\" static=\"\" analysis=\"\" logs=\"\" browser=\"\" the=\"\" point=\"\" at=\"\" as=\"\" well=\"\" input=\"\" its=\"\" self-correcting=\"\" loop.=\"\" on=\"\" left=\"\" side=\"\" it=\"\" all=\"\" we=\"\" see=\"\" box=\"\" with=\"\" human=\"\" who=\"\" steers=\"\" both=\"\" sensors.=\"\" src=\"https:\/\/martinfowler.com\/articles\/harness-engineering\/harness-overview.png\" style=\"max-width: 95vw;\" width=\"800\" \/><\/p>\n<\/div>\n<section id=\"FeedforwardAndFeedback\">\n<h2>Feedforward and Suggestions<\/h2>\n<p>To harness a coding agent we each anticipate undesirable outputs and attempt to forestall them, and we put sensors in place to permit the agent to self-correct:<\/p>\n<ul>\n<li><b>Guides (feedforward controls)<\/b> &#8211; anticipate the agent&#8217;s behaviour and intention to steer it <i>earlier than<\/i> it acts. Guides enhance the chance that the agent creates good leads to the primary try<\/li>\n<li><b>Sensors (suggestions controls)<\/b> &#8211; observe <i>after<\/i> the agent acts and assist it self-correct. Notably highly effective after they produce indicators which might be optimised for LLM consumption, e.g. customized linter messages that embody directions for the self-correction &#8211; a optimistic type of immediate injection.<\/li>\n<\/ul>\n<p>Individually, you get both an agent that retains repeating the identical errors (feedback-only) or an agent that encodes guidelines however by no means finds out whether or not they labored (feed-forward-only).<\/p>\n<\/section>\n<section id=\"ComputationalVsInferential\">\n<h2>Computational vs Inferential<\/h2>\n<p>There are two execution forms of guides and sensors:<\/p>\n<ul>\n<li><b>Computational<\/b> &#8211; deterministic and quick, run by the CPU. Checks, linters, sort checkers, structural evaluation. Run in milliseconds to seconds; outcomes are dependable.<\/li>\n<li><b>Inferential<\/b> &#8211; Semantic evaluation, AI code overview, \u201cLLM as decide\u201d. Sometimes run by a GPU or NPU. Slower and dearer; outcomes are extra non-deterministic.<\/li>\n<\/ul>\n<p>Computational guides enhance the chance of excellent outcomes with deterministic tooling. Computational sensors are low cost and quick sufficient to run on each change, alongside the agent. Inferential controls are after all dearer and non-deterministic, however enable us to each present wealthy steering, and add further semantic judgment. Despite their non-determinism, inferential sensors can notably enhance our belief when used with a powerful mannequin, or relatively a mannequin that&#8217;s appropriate to the duty at hand.<\/p>\n<p><b>Examples<\/b><\/p>\n<table class=\"dark-head\">\n<thead>\n<tr>\n<th><\/th>\n<th>Path<\/th>\n<th>Computational \/ Inferential<\/th>\n<th>Instance implementations<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Coding conventions<\/td>\n<td>feedforward<\/td>\n<td>Inferential<\/td>\n<td>AGENTS.md, Expertise<\/td>\n<\/tr>\n<tr>\n<td>Directions  bootstrap a brand new undertaking<\/td>\n<td>feedforward<\/td>\n<td>Each<\/td>\n<td>Ability with directions and a bootstrap script<\/td>\n<\/tr>\n<tr>\n<td>Code mods<\/td>\n<td>feedforward<\/td>\n<td>Computational<\/td>\n<td>A software with entry to OpenRewrite recipes<\/td>\n<\/tr>\n<tr>\n<td>Structural checks<\/td>\n<td>suggestions<\/td>\n<td>Computational<\/td>\n<td>A pre-commit (or coding agent) hook working ArchUnit checks that test for violations of module boundaries<\/td>\n<\/tr>\n<tr>\n<td>Directions  overview<\/td>\n<td>suggestions<\/td>\n<td>Inferential<\/td>\n<td>Expertise<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/section>\n<section id=\"TheSteeringLoop\">\n<h2>The steering loop<\/h2>\n<p>The human&#8217;s job in that is to <b>steer<\/b> the agent by iterating on the harness. Every time a problem occurs a number of instances, the feedforward and suggestions controls ought to be improved to make the problem much less possible to happen sooner or later, and even forestall it.<\/p>\n<p>Within the steering loop, we are able to after all additionally use AI to enhance the harness. Coding brokers now make it less expensive to construct extra customized controls and extra customized static evaluation. Brokers might help write structural checks, generate draft guidelines from noticed patterns, scaffold customized linters, or create how-to guides from codebase archaeology.<\/p>\n<\/section>\n<section id=\"TimingKeepQualityLeft\">\n<h2>Timing: Maintain high quality left<\/h2>\n<p>Groups who&#8217;re <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\">repeatedly integrating<\/a> have all the time confronted the problem of spreading checks, checks and human critiques throughout the event timeline based on their value, velocity and criticality. Whenever you aspire to <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/martinfowler.com\/bliki\/ContinuousDelivery.html\">repeatedly ship<\/a>, you ideally even need each commit state to be deployable. You wish to have checks as far left within the path to manufacturing as attainable, because the earlier you discover points, the cheaper they&#8217;re to repair. Suggestions sensors, together with the brand new inferential ones, should be distributed throughout the lifecycle accordingly.<\/p>\n<p><b>Feedforward and suggestions within the change lifecycle<\/b><\/p>\n<ul>\n<li>What in all fairness quick and ought to be run even earlier than integration, and even earlier than a commit is even created? (e.g. linters, quick take a look at suites, primary code overview agent)<\/li>\n<li>What&#8217;s dearer and will due to this fact solely be run post-integration within the pipeline, along with a repetition of the quick controls? (e.g. mutation testing, a extra broad code overview that may keep in mind the larger image)<\/li>\n<\/ul>\n<div class=\"figure \" id=\"harness-change-lifecycle-examples.png\"><img decoding=\"async\" alt=\"Examples of feedforward and feedback in a change's lifecycle. Feedforward: LSP, architecture.md, \/how-to-test skill, AGENTS.md, MCP server that can access a team's knowledge management tool, \/xyz-api-docs skill; they feed into the agent's initial generation; feedback sensor examples for first self-correction loop are \/code-review, npx eslint, semgrep, npm run coverage, npm run dep-cruiser; then human review is an additional feedback sensor; then integration happens; after integration, examples shown in the pipeline, which reruns all the previous sensors, and additional examples for more expensive sensors are \/architecture-review skill, \/detailed-review skill, mutation testing. An arrow shows that the feedback can then lead to new commits by agents or humans.\" src=\"https:\/\/martinfowler.com\/articles\/harness-engineering\/harness-change-lifecycle-examples.png\" style=\"max-width: 95vw;\" width=\"930\" \/><\/p>\n<\/div>\n<p><b>Steady drift and well being sensors<\/b><\/p>\n<ul>\n<li>What sort of drift accumulates steadily and ought to be monitored by sensors working repeatedly towards the codebase, exterior the change lifecycle? (e.g. lifeless code detection, evaluation of the standard of the take a look at protection, dependency scanners)<\/li>\n<li>What runtime suggestions might brokers be monitoring? (e.g. having them search for degrading SLOs to make options  enhance them, or AI judges repeatedly sampling response high quality and flagging log anomalies)<\/li>\n<\/ul>\n<div class=\"figure \" id=\"harness-continuous-feedback-examples.png\"><img decoding=\"async\" alt=\"Shows examples of continuous feedback sensors after change integration. Continuous drift detection in the codebase, e.g. \/find-dead-code, \/code-coverage-quality, dependabot; or Continuous runtime feedback, e.g. latency, error rate or availability SLOs leading to coding agent suggestions, or \/response-quality-sampling, \/log-anomalies AI judges.\" src=\"https:\/\/martinfowler.com\/articles\/harness-engineering\/harness-continuous-feedback-examples.png\" style=\"max-width: 95vw;\" width=\"800\" \/><\/p>\n<\/div>\n<\/section>\n<section id=\"RegulationCategories\">\n<h2>Regulation classes<\/h2>\n<p>The agent harness acts like a <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cybernetics\">cybernetic<\/a> governor, combining feed-forward and suggestions to manage the codebase in the direction of its desired state. It is helpful to tell apart between a number of dimensions of that desired state, categorised by what the harness is meant to manage. Distinguishing between these classes helps as a result of harnessability and complexity differ throughout them, and qualifying the phrase offers us extra exact language for a time period that&#8217;s in any other case very generic.<\/p>\n<p>The next are three classes that appear helpful to me as of now:<\/p>\n<section id=\"MaintainabilityHarness\">\n<h3>Maintainability harness<\/h3>\n<p>Kind of all the examples I&#8217;m giving on this article are about regulating inner code high quality and maintainability. That is in the meanwhile the simplest sort of harness, as we&#8217;ve loads of pre-existing tooling that we are able to use for this.<\/p>\n<p>To mirror on how a lot these aforementioned maintainability harness concepts enhance my belief in brokers, I mapped <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/13-role-of-developer-skills.html\">widespread coding agent failure modes that I catalogued earlier than<\/a> towards it.<\/p>\n<p>Computational sensors catch the structural stuff reliably: duplicate code, cyclomatic complexity, lacking take a look at protection, architectural drift, fashion violations. These are low cost, confirmed, and deterministic.<\/p>\n<p>LLMs can partially tackle issues that require semantic judgment &#8211; semantically duplicate code, redundant checks, brute-force fixes, over-engineered options &#8211; however expensively and probabilistically. Not on each commit.<\/p>\n<p>Neither catches reliably a few of the higher-impact issues: Misdiagnosis of points, overengineering and pointless options, misunderstood directions. They&#8217;re going to generally catch them, however not reliably sufficient to scale back supervision. Correctness is exterior any sensor&#8217;s remit if the human did not clearly specify what they needed within the first place.<\/p>\n<\/section>\n<section id=\"ArchitectureFitnessHarness\">\n<h3>Structure health harness<\/h3>\n<p>This teams guides and sensors that outline and test the structure traits of the appliance. Principally: <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/www.thoughtworks.com\/en-de\/radar\/techniques\/architectural-fitness-function\">Health Capabilities<\/a>.<\/p>\n<p>Examples:<\/p>\n<ul>\n<li>Expertise that feed ahead our efficiency necessities, and efficiency checks that feed again to the agent if it improved or degraded them.<\/li>\n<li>Expertise that describe coding conventions for higher observability (like logging requirements), and debugging directions that ask the agent to mirror on the standard of the logs it had obtainable.<\/li>\n<\/ul>\n<\/section>\n<section id=\"BehaviourHarness\">\n<h3>Behaviour harness<\/h3>\n<p>That is the elephant within the room &#8211; how can we information and sense if the appliance functionally behaves the best way we want it to? For the time being, I see most individuals who give excessive autonomy to their coding brokers do that:<\/p>\n<ul>\n<li>Feed-forward: A practical specification (of various ranges of element, from a brief immediate to multi-file descriptions)<\/li>\n<li>Feed-back: Test if the AI-generated take a look at suite is inexperienced, has fairly excessive protection, some may even monitor its high quality with mutation testing. Then mix that with guide testing.<\/li>\n<\/ul>\n<p>This strategy places loads of religion into the AI-generated checks, that is not ok but. A few of my colleagues are seeing good outcomes with the <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/lexler.github.io\/augmented-coding-patterns\/patterns\/approved-fixtures\/\">authorized fixtures<\/a> sample, however it&#8217;s simpler to use in some areas than others. They use it selectively the place it matches, it is not a wholesale reply to the take a look at high quality downside.<\/p>\n<p>So general, we nonetheless have lots to do to determine good harnesses for practical behaviour that enhance our confidence sufficient to scale back supervision and guide testing.<\/p>\n<\/section>\n<div class=\"figure \" id=\"harness-types.png\"><img decoding=\"async\" alt=\"Simplified overview of a harness showing guides and sensors in horizontal, and then the regulation dimensions maintainability, architecture fitness, and behaviour, in vertical. Examples shown for the behaviour harness, spec as feedforward guide, test suite as feedback sensor that is a mix of inferential and computational, plus a human icon indicating human review and manual tests as main additional feedback sensor.\" src=\"https:\/\/martinfowler.com\/articles\/harness-engineering\/harness-types.png\" \/><\/p>\n<\/div>\n<\/section>\n<section id=\"Harnessability\">\n<h2>Harnessability<\/h2>\n<p>Not each codebase is equally amenable to harnessing. A codebase written in a strongly typed language naturally has type-checking as a sensor; clearly definable module boundaries afford architectural constraint guidelines; frameworks like Spring summary away particulars the agent does not even have to fret about and due to this fact implicitly enhance the agent&#8217;s probabilities of success. With out these properties, these controls aren&#8217;t obtainable to construct.<\/p>\n<p>This performs out otherwise for greenfield versus legacy. Greenfield groups can bake harnessability in from day one &#8211; expertise choices and structure selections decide how governable the codebase will probably be. Legacy groups, particularly with purposes which have accrued loads of technical debt, face the tougher downside: the harness is most wanted the place it&#8217;s hardest to construct.<\/p>\n<\/section>\n<section id=\"HarnessTemplates\">\n<h2>Harness templates<\/h2>\n<p>Most enterprises have just a few widespread topologies of providers that cowl 80% of what they want &#8211; enterprise providers that exposes information through APIs; occasion processing providers; information dashboards. In lots of mature engineering organizations these topologies are already codified in service templates. These may evolve into harness templates sooner or later: a bundle of guides and sensors that leash a coding agent to the construction, conventions and tech stack of a topology. Groups might begin selecting tech stacks and constructions partly based mostly on what harnesses are already obtainable for them.<\/p>\n<div class=\"figure \" id=\"harness-templates.png\"><img decoding=\"async\" alt=\"A stack of examples of topologies (Data dashboard in Node, CRUD business service on JVM, event processor in Golang). The top one, data dashboard, is shown in detail, as a combination of structure definition and tech stack. The graphic indicates a \" harness=\"\" template=\"\" with=\"\" guides=\"\" and=\"\" sensors=\"\" for=\"\" each=\"\" topology=\"\" which=\"\" can=\"\" be=\"\" instantiated.=\"\" src=\"https:\/\/martinfowler.com\/articles\/harness-engineering\/harness-templates.png\" \/><\/p>\n<\/div>\n<p>We&#8217;d after all face related challenges as with service templates. As quickly as groups instantiate them, they begin fall out of sync with upstream enhancements. Harness templates would face the identical versioning and contribution issues, possibly even worse with non-deterministic guides and sensors which might be tougher to check.<\/p>\n<\/section>\n<section id=\"TheRoleOfTheHuman\">\n<h2>The function of the human<\/h2>\n<p>As human builders we carry our expertise and expertise as an implicit harness to each codebase. We absorbed conventions and good practices, we&#8217;ve felt the cognitive ache of complexity, and we all know that our identify is on the commit. We additionally carry organisational alignment &#8211; consciousness of what the crew is attempting to realize, which technical debt is tolerated for enterprise causes, and what \u201cgood\u201d appears to be like like on this particular context. We go in small steps and at our human tempo, which creates the pondering area for that have to get triggered and utilized.<\/p>\n<p>A coding agent has none of this: no social accountability, no aesthetic disgust at a 300-line perform, no instinct that \u201cwe do not do it that means right here,\u201d and no organisational reminiscence. It does not know which conference is load-bearing and which is simply behavior, or whether or not the technically right answer matches what the crew is attempting to do.<\/p>\n<p>Harnesses are an try and externalise and make specific what human developer expertise brings to the desk, however it could possibly solely go thus far. Constructing a coherent system of guides and sensors and self-correction loops is pricey, so we&#8217;ve to prioritise with a transparent aim in thoughts: An excellent harness shouldn&#8217;t essentially intention to totally get rid of human enter, however to direct it to the place our enter is most necessary.<\/p>\n<\/section>\n<section id=\"AStartingPoint-AndOpenQuestions\">\n<h2>A place to begin &#8211; and open questions<\/h2>\n<p>The psychological mannequin I&#8217;ve laid out right here describes methods which might be already occurring in observe and helps body discussions about what we nonetheless want to determine. Its aim is to boost the dialog above the characteristic stage &#8211; from expertise and MCP servers to how we strategically design a system of controls that provides us real confidence in what brokers produce.<\/p>\n<p>Listed here are some harness-related examples from the present discourse:<\/p>\n<ul>\n<li><a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/openai.com\/index\/harness-engineering\/\">An OpenAI crew documented what their harness appears to be like like<\/a>: layered structure enforced by customized linters and structural checks, and recurring \u201crubbish assortment\u201d that scans for drift and has brokers counsel fixes. Their conclusion: \u201cOur most troublesome challenges now heart on designing environments, suggestions loops, and management methods.\u201d<\/li>\n<li><a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/stripe.dev\/blog\/minions-stripes-one-shot-end-to-end-coding-agents\">Stripe&#8217;s write-up about their minions<\/a> describes issues like pre-push hooks that run related linters based mostly on a heuristic, they spotlight how necessary \u201cshift suggestions left\u201d is to them, and their \u201cblueprints\u201d present how they&#8217;re integrating suggestions sensors into the agent workflows.<\/li>\n<li>Mutation and structural testing are examples of computational suggestions sensors which were underused up to now, however at the moment are having a resurgence.<\/li>\n<li>There may be elevated chatter amongst builders concerning the integration of LSPs and code intelligence in coding brokers, examples of computational feedforward guides.<\/li>\n<li>I hear tales from groups at Thoughtworks about tackling structure drift with each computational and inferential sensors, e.g. growing API high quality with a mixture of brokers and customized linters, or growing code high quality with a \u201cjanitor military\u201d.<\/li>\n<\/ul>\n<p>There&#8217;s loads nonetheless to determine, not simply the already talked about behavioural harness. How can we preserve a harness coherent because it grows, with guides and sensors in sync, not contradicting one another? How far can we belief brokers to make smart trade-offs when directions and suggestions indicators level in numerous instructions? If sensors by no means hearth, is {that a} signal of top of the range or insufficient detection mechanisms? We&#8217;d like a option to consider harness protection and high quality much like what code protection and mutation testing do for checks. Feedforward and suggestions controls are at the moment scattered throughout supply steps, there&#8217;s actual potential for tooling that helps configure, sync, and purpose about them as a system. Constructing this outer harness is rising as an ongoing engineering observe, not a one-time configuration.<\/p>\n<\/section>\n<hr class=\"bodySep\" \/>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>The time period harness has emerged as a shorthand to imply all the things in an AI agent besides the mannequin itself &#8211; Agent = Mannequin + Harness. That could be a very large definition, and due to this fact price narrowing down for widespread classes of brokers. I wish to take the freedom right [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":13383,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[56],"tags":[75,1256,2060,6877,342],"class_list":["post-13381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-agent","tag-coding","tag-engineering","tag-harness","tag-users"],"_links":{"self":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/13381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13381"}],"version-history":[{"count":1,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/13381\/revisions"}],"predecessor-version":[{"id":13382,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/13381\/revisions\/13382"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/media\/13383"}],"wp:attachment":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 69c6f7b5190636d50e9f6768. Config Timestamp: 2026-03-27 21:33:41 UTC, Cached Timestamp: 2026-04-04 05:47:01 UTC -->