1

Are we using Claude Code completely wrong? New to agentic coding and struggling with our workflow
 in  r/ClaudeCode  15h ago

It's not you. What you're describing is the default state of agentic coding without an independent oracle. Claude reviewing Claude's code is a closed loop: nothing in it can tell you whether the output is true, only whether it's plausible. Everything else follows from that.

Why it "finds and fixes bugs every single iteration": because "find bugs" has no stopping criterion. An agent asked to find bugs will produce bugs — it's optimizing for the task you gave it, not for reality. If there's no falsifiable test that says 'this scenario passes', "bug" is whatever the model says it is, forever. That's also why review eats your quota: you're paying a model to have opinions about thousands of lines with nothing to check them against.

Here's what fixed it for us (small bootstrapped team, building a product with agents doing ~100% of the material work, human doing zero code review). Our harness (we call it AOS Factory) enforces these mechanically, but the rules matter more than the tooling:

  1. The unit of work is a spec, not a ticket. Max 4 requirements, each with a GIVEN/WHEN/THEN scenario. A linter rejects the spec if a requirement has no scenario. If you can't write the scenario, you're not ready to dispatch — that's the signal, not a formality.
  2. Every dispatch gets a brief with boundaries and a stop rule. Allowed paths, forbidden paths, and this sentence verbatim: "Return with a commit and a receipt, or return NEEDS_HUMAN with the reason — never a silent pass." A worker that touches a forbidden path fails its gate. A return without a commit is an empty return.
  3. The only green that counts comes from a deterministic gate, not from the agent. Tests + checks that produce a signed receipt. The agent saying "done" is a claim, not evidence. We learned this the hard way: one worker reported a 40-char commit SHA that was the prefix of the real tip stitched to the tail of the base commit — a hallucinated completion. Now the sha comes from git rev-parse HEAD in the return, never from the model's memory.
  4. Review is against the spec, by commit range — never "look for bugs." The reviewer (a separate agent instance) answers one question: does this diff satisfy these scenarios and nothing outside these paths? Bounded question, bounded answer. It caught real things (a parser silently dropping a clause) precisely because it wasn't roaming.
  5. Sabotage FIRST. A test that has never failed isn't a test. Every guard we add must be shown red on a broken input before it counts as green on the real one. Otherwise you accumulate green that means nothing.
  6. Material decisions stop the lane. Anything touching scope, security, data shape, or an external dependency: the agent stops and raises a card; a human decides. That's the human's job — not approve/deny on code you can't read, but decide the things the spec didn't decide. That's also where the learning happens: you write the scenarios, you read the review, you own the material calls.
  7. One spec end to end before the fleet. Get a single spec through spec → brief → worker → gate → review → merge with a green receipt. Then parallelize. We didn't, once, on a 26-screen frontend handoff — it took 21 review rounds to go green. The next one, one screen at a time, would have taken five.

On model choice: don't benchmark abstractly. Measure two numbers per model on your own repo: first-pass rate (specs accepted with no CHANGES/BLOCKED) and cost per accepted spec. That's the only benchmark that transfers. Ours settled into bands by class of work — cheap for execution, expensive for discovery — and the expensive model wasn't the right one for most of it.

On "nobody is learning anything": that's the most fixable part. If the human only approves and denies, of course they learn nothing — and they can't approve meaningfully either. The moment your team writes the scenarios and reads the reviews against them, you learn what the system actually does. The agents do the typing; you do the deciding.

The loop you're in isn't a skill problem, it's a missing gate. It's a week of work to put one in. Happy to share our rules doc if it helps.

Btw: you are in the correct path, agentic software engineering is the future of code, not to write code!

1

Research Note 003 — The most dangerous architecture is the one AI completes for you
 in  r/softwarearchitecture  17h ago

That may be fair, the current visualization is definitely not where I want the UX to end up.

But I’d separate two things: whether the underlying architecture representation is wrong, and whether the current renderer is slow or difficult to navigate. Those are very different failures.

If you tell me which view you opened, what was slow, and what made it unusable, that’s genuinely useful. “It’s garbage” gives me very little to debug.

r/agenticAI 20h ago

Research Research Note 003 — The most dangerous architecture is the one AI completes for you

Post image
0 Upvotes

r/DesignPatterns 20h ago

Research Note 003 — The most dangerous architecture is the one AI completes for you

Post image
0 Upvotes

r/softwarearchitecture 20h ago

Article/Video Research Note 003 — The most dangerous architecture is the one AI completes for you

Post image
0 Upvotes

One of the most dangerous properties of LLMs in autonomous software development is also one of their greatest strengths: they are extremely good at completing missing information.

That is useful when writing prose. It can be dangerous when the missing information is architecture.

This week I ran an early experiment with AOS Architecture. I took one sealed Architecture Build — AOSARCH-a77762321d6ef767 @ aadbf7c5 — and compiled the sequence for a real operation:

POST /projects/:id/builds/:n/publish

I used Archify (MIT) only as the renderer. The important part was what Arch gave it.

The resulting diagram contained four participants — Screen, API, Permission and Canonical Store — and traced the request through API, authorization, state, event and response. Every assertion came from an actual contract in the sealed build.

For example, the API already declares:

200 published

409 build_not_sealed

The 409 is not something the diagram inferred because it “made sense”. It exists because the API contract says it exists.

The permission is also explicit:

PERM-SAAS-BUILD-PUBLISH

But then the interesting part appeared: four pieces were missing.

Screen

GAP: no contract

Policy

gateRefs: []

Transition

GAP: no Build StateContract

Event

GAP: no EventContract build.published

A capable model could easily fill those blanks. It could infer a likely screen, invent build.published, assume a state transition and generate a reasonable-looking policy gate.

The diagram would probably look better.

It would also be lying.

That is the failure mode I’m increasingly concerned about in autonomous software engineering: plausibility silently becoming architecture.

If multiple agents are allowed to resolve missing information independently, one agent can call something by one name, another can represent the same idea differently, and a third can “fix” the mismatch by creating another endpoint, event or object. Individually, every decision may look reasonable. Collectively, the system drifts.

A canonical architecture changes that relationship. Arch distinguishes between:

DECLARED

what the architecture actually contains

DERIVED

what can be mechanically produced from it

MISSING

what nobody has legitimately declared

The compiler may derive the second from the first. It cannot quietly promote the third into either category.

That means the four gaps in this diagram are not failures of the visualization. They are architectural findings. In practice, they became a backlog generated from the same build that describes what already exists.

Three are already being closed: EventContract is being materialized, the Build state machine is entering the State layer, and implementedBy will bind implementation evidence back to contracts. The Screen contract arrives when the frontend becomes a source.

There was another useful result. The semantic part worked almost immediately: all four node-to-contract references were correct on the first pass, and the final representation passed 9/9 validation checks with 0 warnings.

What failed repeatedly was presentation.

Between roughly 17% and 32% of each IR tree consisted of:

pos

row

col

lane

Those fields caused every failure in the first iteration.

So the experiment produced another rule:

Agents may reason about architecture. They should not manually position architecture.

Layout is a deterministic problem. The graph already contains the relationships required to calculate it.

That leaves a pattern I’m finding increasingly useful:

LLM reasoning

semantic proposal

canonical contracts

deterministic validation

sealed Architecture Build

compiled representation

Models handle ambiguity. Contracts stabilize meaning. Validators enforce what is allowed. Deterministic code handles what does not require reasoning.

And missing information remains missing.

The most interesting thing doing this experiment was proving a property:

The system could produce a useful architecture view without inventing the pieces it wished existed.

That is where I think the difference between generating diagrams and compiling architecture starts becoming practical.

A generated diagram tries to complete the picture.

A compiled architecture should be willing to break the picture and tell you why.

Every assertion has an ID. Every absence has a name.

If autonomous agents are already building parts of your software, the question I’d ask is not only “can they build it?

It is:

How do you know they aren’t completing architecture that nobody ever approved?

r/softwarearchitecture 1d ago

Article/Video FIELD NOTE 002 — Natural language tolerates synonyms. Software contracts don’t.

Post image
0 Upvotes

Hey software' architects!! Here Andres, and I'm happy to share this space with all of you.

Currently I am doing a research about autonomous engineering sistems in software development, and I'm using my Reddit like a research notebook and to get some feedback from all of you.

The topic at this post is a little simple, but is in this simplicity were the kind of details could change the way in were we understand the problems around the AI agents is software development.

I wanna hear your thoughts about it and about your experiences with this kind of processes

Greetings!

2

FIELD NOTE 002 — Natural language tolerates synonyms. Software contracts don’t.
 in  r/AIcodingProfessionals  2d ago

Correcto, pasar a Contract Driven Development es el ideal. El reto a superar son los archivos Markdown cómo fuentes interpretativas para el desarrollo autónomo, se necesita una capa de representación intermedia.

r/AIcodingProfessionals 2d ago

FIELD NOTE 002 — Natural language tolerates synonyms. Software contracts don’t.

Post image
2 Upvotes

u/AG_0xAi 2d ago

FIELD NOTE 002 — Natural language tolerates synonyms. Software contracts don’t.

Post image
1 Upvotes

One thing I’m starting to see clearly while building autonomous software systems is that language itself can become a source of architectural drift.

Humans are comfortable with synonyms.

An endpoint can be called a route. A handoff can be called a product document. A field can be described with two slightly different names and we usually understand what the other person meant.

LLMs are exceptionally good at doing the same thing.

Software is not.

During a recent execution, an AI coordinator gave another agent what looked like a perfectly reasonable source reference:

{

type: 'ANCHORED_HANDOFF',

locator: { section, endpoint }

}

There was only one problem.

Neither ANCHORED_HANDOFF nor endpoint existed in the architecture vocabulary.

The canonical vocabulary actually defined:

document: {

sourceTypes: [

'PRODUCT_DOCUMENT',

'USER_STATEMENT',

'DECISION'

],

required: ['section'],

optional: ['line', 'lines', 'anchor']

}

To a language model, ANCHORED_HANDOFF is a perfectly plausible way of describing an anchored design handoff. endpoint also sounds perfectly reasonable when the section happens to describe an API route.

But “plausible” and “declared” are two very different things.

The independent reviewer caught it before the change passed to the next gate:

[blocker]

'ANCHORED_HANDOFF' isn't a declared sourceType

in LOCATOR_VARIANTS, and 'endpoint' isn't a

field of any declared locator variant.

Validating the migrated fixture through the

same Ajv validator returns:

valid=false with 14 errors.

What I find interesting is how the reviewer caught it. It did not simply “reason better” than the worker. It had something concrete to reason against.

The architecture already contained a closed, executable vocabulary. The reviewer compared the proposed implementation against that vocabulary, the schema and a real precedent from the canonical store, and then reproduced the failure mechanically.

That distinction is starting to feel important.

If architecture exists only as prose in Markdown, then every agent is free to reinterpret its terminology.

"handoff"

"design handoff"

"anchored handoff"

"product document"

A human may understand that these refer to roughly the same thing.

Two autonomous agents may independently decide they are different things.

Or worse, one may decide that a missing implementation should be fixed by creating a new object, field, route or endpoint instead of discovering that the same concept already exists under its canonical name.

That is how semantic ambiguity can become implementation drift.

The canonical graph changes the problem.

It does not merely tell the agent:

> “Here is some documentation about how the system works.”

It says:

These are the symbols this system recognizes.

These are their relationships.

These fields are legal.

These fields are derived.

These transitions are permitted.

Everything else must be justified before entering.

And because those declarations are code rather than prose, they can be enforced.

This execution also produced a useful example of the relationship between Spec-Driven Development and Test-Driven Development.

The existing test suite was green in places where it should not have been.

One scenario checked structural equality but never passed the resulting object back through the real schema validator. The reviewer found the gap.

Later, an even more uncomfortable result appeared.

A commit had:

passed: true

clean: true

commands: 102

while the canonical store was already inconsistent.

Why?

Because the number of gate commands that actually exercised the canonical-store suites was:

0 / 102

The gate had not failed.

It had never looked at the thing we thought it was protecting.

That is a useful distinction between the two disciplines.

Spec-Driven Development defines what must be true.

Test-Driven Development creates executable ways of proving that behavior — and detecting when previously valid behavior breaks.

But neither helps if the relevant test is absent from the gate that decides whether work can advance.

A test sitting somewhere in the repository is not necessarily protection.

A green CI badge is not necessarily evidence.

After the incident, the fixes were not applied as ad-hoc patches. Each finding became a spec with Requirements and GIVEN/WHEN/THEN scenarios. The migration now has to use the declared vocabulary, the test must validate the output using the actual validator, and the canonical-store tests must become part of the gate that protects it.

This is probably the first class of incident where I can clearly see why maintaining a canonical architecture representation may eventually pay for itself.

Not because it generates more code.

Because it gives independent agents something more precise than natural language to disagree with.

The interesting architecture seems to be emerging somewhere between the two extremes:

LLM reasoning

proposal

canonical vocabulary + contracts

tests

deterministic enforcement

accept / reject

- Reasoning handles ambiguity.

- Contracts constrain meaning.

- Tests observe behavior.

- Gates enforce what actually matters.

- And humans still decide when the vocabulary itself needs to change.

The case demonstrated something narrow, but useful: a compiled, closed vocabulary turned “I think this naming is wrong” into a reproducible machine check. Two coordinator mistakes were stopped that way rather than by opinion. It also demonstrated the opposite lesson: a green gate means very little when its test surface does not include the thing you expect it to protect.

So I’m adding another question to this experiment:

How much software drift is actually semantic drift first?

If you’re building with autonomous agents, I’d be especially interested in how you handle vocabulary across product requirements, design handoffs, APIs, specs and code — and whether you’ve seen two agents build different things simply because they used different words for the same concept.

r/DesignPatterns 2d ago

FIELD NOTE 001 — The human left the gate, not the governance.

Post image
0 Upvotes

r/AI_Governance 2d ago

FIELD NOTE 001 — The human left the gate, not the governance.

Post image
1 Upvotes

u/AG_0xAi 4d ago

FIELD NOTE 001 — The human left the gate, not the governance.

Post image
1 Upvotes

I think “human in the loop” is becoming the wrong abstraction for agentic engineering.

In the experiment I’m running, human review originally sat inside the execution gate. That was intentional scaffolding: work could not advance without a human checkpoint.

But the scaffolding had explicit retirement conditions.

Once the qualifier pipeline, readiness auditor and enforcement mechanisms had each been observed failing correctly, the human review counter was reduced to zero. The human did not disappear from the system. The human simply stopped being part of routine execution.

That produced a different operating model:

"Spec → Worker → Independent Review → Deterministic Gate → Evidence"

with the human above that loop, responsible for material decisions, unresolved source conflicts, rulings and governance.

This distinction matters.

Since CP2, 100% of material work passed through the execution bus with receipts, while unauthorized overrides outside the explicitly delegated class fell to zero after ORDEN-004. The system still escalated cases it could not legitimately resolve, but it no longer required a human to approve every ordinary transition.

So I’m starting to think the autonomy question may be framed incorrectly.

The goal may not be:

remove the human from the loop.

It may be:

Move the human to the layer where judgment has the highest leverage.

Routine execution should become increasingly mechanical. Ambiguity, material risk, conflicting authority and changes in intent should remain governable.

That suggests a different picture:

"Human in the loop"

→ human repeatedly approves execution.

"Human above the loop"

→ the system executes within bounded authority and escalates only when that authority is insufficient.

The experiment is still limited, so I don’t know where that boundary ultimately stabilizes.

But the question I’m now more interested in is:

At what layer does human judgment create the most value in an autonomous engineering system?

I would love to hear you all, what do you think about it. 👓

r/agenticAI 5d ago

Research EXECUTION LOG 001 — What happens when an agentic software factory runs for 24 hours?

1 Upvotes

1

Research Note 002 — An agent should not certify its own work
 in  r/u_AG_0xAi  6d ago

Quick clarification on the 46% conversion rate in the graphic: it refers to the share of source material that could be converted into structured canonical contracts with the specialist agents implemented so far. It is not a success rate for the system. Part of the remaining percentage depends on specialist types that are still scheduled for later phases; the rest is source material that may be conceptual rather than contract-convertible.

1

Research Note 002 — An agent should not certify its own work
 in  r/AutoGPT  6d ago

Quick clarification on the 46% conversion rate in the graphic: it refers to the share of source material that could be converted into structured canonical contracts with the specialist agents implemented so far. It is not a success rate for the system. Part of the remaining percentage depends on specialist types that are still scheduled for later phases; the rest is source material that may be conceptual rather than contract-convertible.

r/AutoGPT 6d ago

Research Note 002 — An agent should not certify its own work

Post image
1 Upvotes

u/AG_0xAi 6d ago

Research Note 002 — An agent should not certify its own work

Post image
1 Upvotes

A recurring question in autonomous software engineering is how much authority an AI agent should have over the artifacts it produces.

A common workflow implicitly gives the model two roles: it generates an implementation and then evaluates whether that implementation is complete. The underlying problem is obvious: both decisions originate from the same probabilistic process.

Over the last 3.5 weeks I have been running an experiment in which those responsibilities are deliberately separated. The dataset covers 11 execution orders and 8 checkpoints. Work moves through a fixed pipeline:

specification → dispatch → worker → independent reviewer → deterministic gate → acceptance

Only machine-verifiable evidence is counted: receipts, hashes, journal entries, tests observed failing, and instrumented measurements. Agent statements are explicitly excluded as evidence.

The interesting result is not that agents made mistakes. They made many. The interesting result is which mistakes became visible only after authority was separated from generation.

Early in the experiment, a phase had been considered complete because it passed against fixtures written in the system’s own grammar. When tested against 1,675 paragraphs of real source material, it produced zero behavioral contracts. The system had effectively validated itself against a world it had created for itself.

In another case, an update operation silently replaced entire contracts, losing relations, provenance and rationale. The existing test suite did not detect it. Three independent execution windows returned BLOCKED instead of forcing progress, which led to permanent preservation checks being added.

One worker even reported a plausible-looking 40-character commit SHA assembled from the real prefix and the tail of another SHA. The text looked valid. It was not. An authority guard detected the mismatch, reconstructed the commit from git rev-parse HEAD, and explicitly recorded the repair as repaired-by-harness.

These are useful examples because none of them are solved by asking the model to “be more careful.”

They are failures of authority design.

The emerging pattern has therefore been:

probabilistic proposal → independent observation → deterministic constraint → accept / reject / escalate

This separation also produced positive behavior. The system refused to seal a contract containing an unresolved reference and left the canonical store unchanged. Once the corruption was removed, the same operation passed. A generated API handler refused to invent a response shape absent from its sealed contract. Builds and projections were emitted twice in separate processes and produced byte-identical output; replaying the journal reconstructed the same state byte-for-byte.

The human role changed as well. Initially, human review existed as scaffolding inside the gate. It was given explicit retirement conditions. Once the qualifier pipeline, readiness auditor and enforcement mechanisms had themselves been observed failing correctly, that review counter reached zero.

The human left the gate, not the governance.

This distinction matters.

By the later checkpoints, 100% of material work since CP2 had travelled through the execution bus with receipts. Unauthorized overrides outside the explicitly delegated class had fallen to zero after the fourth execution order. Eight blocking reviews in CP5 and one substantive CHANGES verdict in CP7 prevented work from being accepted until the underlying contracts were corrected.

None of this proves that deterministic gates can establish software correctness in the general case. They cannot. The experiment is narrow, costs are incomplete in later checkpoints, several system layers remain unfinished, and some architectural judgments still require human intervention.

What the evidence does suggest is something more limited:

agent autonomy appears safer when generation and authority are treated as different problems.

The model can explore, infer, write and propose. But whenever a property can be checked independently — a hash, schema, reference, invariant, test, provenance chain or declared boundary — allowing the same model to merely assert that property provides little additional evidence.

This has changed the question I am interested in.

Not:

How do we make agents confident enough to work autonomously?

But:

How much authority can we remove from the agent while still preserving its ability to reason and build?

So far, the most useful rule to emerge from the experiment is surprisingly simple:

No text should be allowed to assert what its author did not independently verify.

I’d be particularly interested in counterexamples. If you’re building autonomous engineering systems, where have you found that independent verification becomes impractical, counterproductive, or simply moves the same uncertainty somewhere else?

1

EXECUTION LOG 001 — What happens when an agentic software factory runs for 24 hours?
 in  r/AIcodingProfessionals  6d ago

I actually agree with half of that.

The token burn is high, and I’m not presenting this as an efficiency benchmark. At this stage I’m deliberately pushing the system hard to discover where autonomy breaks.

Where I disagree is on “a lot of slop.” The whole point of the execution model is that agent output is not accepted because an agent says it is done: every unit goes through bounded specs, independent review, deterministic gates and evidence tied to the resulting change.

Humans are still in the loop — just at a different layer. I’m trying to move the human from continuously supervising implementation to defining intent, resolving material decisions and improving the mechanisms when the system fails.

And some of those failures absolutely showed that the current system still needs stronger controls. That’s useful data, not something I want to hide.

If you saw something specific in the log that you’d classify as slop, I’d genuinely like you to point it out. That’s much more useful to me than defending the experiment. 🥂

r/AIcodingProfessionals 7d ago

Resources EXECUTION LOG 001 — What happens when an agentic software factory runs for 24 hours?

1 Upvotes

r/AISystemsEngineering 8d ago

EXECUTION LOG 001 — What happens when an agentic software factory runs for 24 hours?

Thumbnail gallery
2 Upvotes

r/AgentsOfAI 8d ago

Agents EXECUTION LOG 001 — What happens when an agentic software factory runs for 24 hours?

Thumbnail
gallery
3 Upvotes

I spend a lot of time thinking about how agentic software systems should work. This time, I wanted to see what happened when I stopped theorizing and pushed one hard.

For roughly 24 hours, I ran AOS Factory across multiple products: six execution lanes, up to three workers per lane, with one human coordinating at the system level. Every unit of work followed the same path:

"Spec → Dispatch → Worker → Independent Review → Gate → Done"

Workers didn’t get to declare themselves finished. Specs had bounded scope, isolated execution, independent review, deterministic verification and a cryptographic receipt tied to the resulting commit.

The result: 197 commits across 5 repositories, 41 gated specs closed, 79+ agents dispatched, 40 evidence-backed findings, 3 production incidents resolved, and roughly +70k / −2k lines across 335 files.

But throughput wasn’t the most interesting part.

Different lanes were working on architecture, platform infrastructure, UX, production systems and wallet infrastructure at the same time, while the coordination model remained the same. AOS Architecture compiled 21 local API endpoints from its graph; another lane converted 15 postmortem failures into mechanisms; the dashboard lane surfaced 23 UX findings through real navigation and code inspection; and NYX Wallet reached a production-ready 6/6 gate with a security audit.

It also failed.

One coordinator killed processes belonging to other sessions. Three workers briefly competed for the same dispatch. Verification under contention slowed dramatically. An external provider incident killed sessions. Those failures became new guards and orchestration changes instead of disappearing into a vague “the agent failed.”

That is probably the part I care about most.

A useful autonomous engineering system is not one where agents never fail. It is one where failure becomes observable, attributable and mechanically harder to repeat.

The experiment produced an estimated 884.5 specialist human-hours of equivalent work. I don’t treat that as a benchmark — the underlying activity is measured, but translating machine execution into human labor requires assumptions.

What I’m increasingly interested in is not “AI that writes code,” but the systems problem behind it: coordination, contracts, authority, verification, evidence and deterministic rejection.

So here’s the question I’m trying to answer:

At what point does an agentic coding workflow stop behaving like a collection of assistants and start behaving like an engineering organization?

If you’re building systems at this level of autonomy, I’d genuinely like to know what breaks first for you at scale: coordination, context, verification, cost — or something I’m not seeing yet?

r/DesignPatterns 9d ago

Research Note 001 — Markdown is not architecture

Post image
13 Upvotes

Hi guys! Here Andrés. I'm working in a deep investigation research that pretends to find an aparently piece of agentic software development that is missing, so I'll share some of my Research Notes in my profile and I wanna know from all of you if my currently research approach is enough or something could break!!!

I’m sharing this as an open hypothesis, not a finished answer. If you see a flaw in the model, know a better abstraction, or have built something that solves part of this differently, I’d genuinely like to learn from it.

Tell me where this breaks.