DEV Community

Discussion on: I tested the 'deterministic agent loop' claims with four experiments. They all failed — including my own fix.

Collapse
 
jugeni profile image
Mike Czerwinski

The fourth cut is the part worth sitting with longest, because it's the rare piece of AI writing that applies its own ruler to itself before publishing. Most critiques of "stacked determinism" stop at "your mechanism is symbolic, not semantic" and leave their own fix unexamined. You ran the fix through the same falsification and watched it fail on the exact axis, direction, not topic, that the article's mechanisms failed on. That's the actual finding, more than any single experiment: none of exit-codes, string-match, temperature-0, or embedding-cosine have reach into "is this correct," they only have reach into "did something happen in the symbolic layer," and stacking more symbolic checks on top doesn't grow that reach, it just adds more places for the same blind spot to hide.

Which is why "ask the human" isn't a retreat, it's the only honest move once you've located where reach actually lives. The interesting followup your own framing sets up: for tasks where correctness IS objectively checkable, tests, exit codes, schema validation, the phase gate isn't lying, it's just narrow. The failure only shows up once someone extends a narrow-but-true check to a claim it was never built to answer.

Collapse
 
zxpmail profile image
zxpmail

Mike Czerwinski, thank you for that sharp breakdown – you've put your finger on the most painful (and honest) part of my entire post: the self-falsification.

Since you highlight the boundary between the symbolic layer and the semantic layer, it happens that I just published another set of experiments (Testing 3 models as AI agent quality inspectors). These new results create a subtle echo with our discussion – and in some ways, they are a second self-falsification on top of the first.

What the new experiment found:
I tested GLM‑4.6, QWEN‑MAX, and DeepSeek‑V3 on their ability to distinguish garbage outputs (ducks, periods, TODOs) from real work. The results were stark:

GLM‑4.6: 11/24 correct (45.8%) – basically guessing.

QWEN‑MAX: 14/24 correct (58.3%) – slightly better, but still unreliable.

DeepSeek‑V3: 20/24 correct (83.3%) – significantly effective.

This lands right on the crack we were discussing:

It supports your point that narrow tools aren't lies, just narrow. When the inspection target is obvious factual errors or gross formatting issues, a stronger model genuinely outperforms a weaker one. This suggests that semantic checking is not wholly impossible – it just depends heavily on the model's underlying capability.

It both reinforces and complicates my previous conclusion about phase gates. In my earlier post, I argued that a phase gate (file‑exists / exit‑code) can't inspect content quality at all. The new data shows that if you replace the weak "LLM‑as‑Judge" behind that gate with a strong one (like DeepSeek‑V3), you can indeed catch the "duck" and "period" false positives.
But – and this is the crucial part – even the strong model still misses some outputs that are logically correct but directionally wrong (e.g., antonym cases). This exactly matches your observation: we've only expanded the symbolic layer's coverage, we haven't crossed into the semantic chasm of intent and direction.

Taken together, your comment and my new experiments paint the full engineering truth:

For "format hygiene" and blatant hallucinations (Type A): using a strong model as a pre‑filter is genuinely more effective than a pure phase gate, and it's worth doing in practice.

For "directional judgment" and "absolute content correctness" (Type B): even DeepSeek‑V3's 83.3% accuracy means that for every 100 automated passes, nearly 17 are wrong. In a real production environment, that error rate is still unacceptable.

My two posts now form a logical loop:

Weak models with "temperature 0" are an illusion (Illusion 2 in the first post).
Strong models with "accurate inspection" are progress, but not the final answer (new data).
We can use stronger models to drive down the false‑positive rate on obvious garbage, but we can never replace the final human confirmation loop with any combination of phase gates, lexical thresholds, or embeddings.

Your word "honest" is exactly what I'm aiming for: downgrade the strong model from "final decision‑maker" to "high‑sensitivity filter" – catch the 80% of obvious noise, and route the remaining 20% (including directional ambiguity and edge cases) straight to a human.

No more dreams of pseudo‑determinism. That's the final sentence my two articles together are trying to say.

Again, thank you for your comment – it made the conclusion of my second post more complete. If you're interested, I'm happy to open‑source the 24 test samples from the new experiment so we can dig for more blind spots together.

Collapse
 
jugeni profile image
Mike Czerwinski

The reshaping of the residual queue is the part I'd watch closest. Once the strong model absorbs the easy 80%, the 20% that reaches a human isn't a random sample anymore, it's the subset that fooled the best filter you had, adversarially selected by construction. Per-item review cost for that residual goes up exactly as volume goes down, so the total human effort saved is smaller than the raw percentage suggests, and the remaining cases are the ones least likely to have an obvious tell.

The harder risk is the other 80%. You know its accuracy against your 24 labeled samples, you don't know it in production once inputs drift past what those samples covered, and anything the filter passes never reaches a human, so there's no signal when it's silently wrong. A high-sensitivity filter that quietly approves is a different failure mode from a phase gate that quietly approves, same shape, better odds, still zero visibility into the misses. Worth instrumenting: a small random slice of the auto-passed 80% still routed to human review, not because you distrust the filter, but because that's the only way to learn its real error rate instead of its labeled-sample error rate.

Thread Thread
 
zxpmail profile image
zxpmail

Mike, thank you for your second comment – you've put your finger on the two most painful production realities that I only hinted at.

You're absolutely right on both counts:

The residual 20% is not random – it's the subset that fooled the strongest filter, adversarially selected by construction. Per‑item review cost goes up exactly as volume goes down, so the total human effort saved is smaller than the raw 83% accuracy suggests. I hadn't spelled that out, and it's a critical correction.

The auto‑passed 80% has zero visibility – we know its accuracy against our 24 labeled samples, but in production, inputs drift. Without sampling, we're flying blind.

Your suggested fix – routing a small random slice of the auto‑passed 80% to human review – is exactly the instrumentation I should have included. It's not about distrusting the filter; it's the only way to measure real error rate instead of benchmark error rate.

These two points echo the findings in my follow‑up experiment (which I just published):
👉 dev.to/zxpmail/i-tested-3-models-a...

In that post, DeepSeek‑V3 caught the blatant garbage, but the misses were all directional ambiguities – exactly the kind that would end up in that adversarially selected residual. So your comment directly bridges the two posts.

Moving forward, I plan to implement a 5‑10% random audit of all auto‑approved outputs, with the audit results fed back into both the filter threshold and the human‑review priority queue. That seems like the only honest way to keep the system honest over time.

If you have thoughts on how to tune that sampling rate or integrate feedback loops without overwhelming reviewers, I'd love to hear them – your framing has already sharpened the engineering picture more than my own experiments did.

Thanks again for pushing the conversation past “better model” into “how we actually know what we don't know.”

Thread Thread
 
jugeni profile image
Mike Czerwinski

The sampling design that answers "what error rate should I calibrate against" depends on which risk you're trying to bound. 5-10% uniform is right if you care about SYSTEMIC drift (whole population shifting under you), because that gets caught fast on samples of a few hundred. It's wrong if you care about RARE FAILURE MODES (edge cases at <1% of inputs), because at 5% audit rate a 0.5% failure mode needs ~2000 auto-approved items per audit window to observe once. Two-tier resolves this cleanly: 5% uniform random for systemic drift, PLUS a stratified oversample of items your filter was uncertain about but ultimately approved. Filter confidence tells you where its blind spots probably are, and biasing the sample toward those regions is free information; the filter has already told you where to look.

On feedback loop integration, one strong recommendation: do NOT feed random-audit results back into the same filter's few-shot pool. That closes the loop one layer up, filter tunes on audit, audit selection depends on filter, tautology relocated not solved. Route audit results to a SEPARATE decision surface (a different model, a more expensive human-review chain, or a rules-based threshold adjuster) that decides when to recalibrate the filter's operating point. The filter never trains on its own audit. Second: treat audit results as SIGNAL, not TRAINING. Trigger threshold recalibration in step-changes when audit divergence from filter confidence exceeds some threshold, don't continuously nudge. Continuous nudging creates a drift-tracking system whose target keeps moving, which is exactly what you were escaping. Step-changes let you evaluate whether the recalibration helped, before making another.

Thread Thread
 
zxpmail profile image
zxpmail

Mike, noted on both. Will implement two‑tier sampling and isolated step‑wise threshold adjustment in v2 this week.