The Black Box Problem

AI is the first abstraction layer you can't open the hood on. Here's how to build on it anyway.

Scope & limitations — read first

Part 3 of the AI as the Next Abstraction Layer series. Based on hands-on experience building with AI tools.

My last three posts explored AI as an abstraction layer, a translator not a decision-maker, and the business case for shipping more with the same team.

But there's something I haven't addressed directly. The black box problem.

You could always open the hood

Every abstraction layer in computing let you drop down and look when things broke:

  • Python bug? Stack trace. Line 47. Fixed.
  • Slow query? EXPLAIN. Missing index. Fixed.
  • Compiler issue? Read the assembly. Found it.

You could always open the hood. AI is the first layer where you can't.

The issues aren't always reproducible. Same prompt tomorrow, completely different output. Something that worked today might fail next week. You can't reproduce the failure, which means you can't debug it the traditional way.

We've never built on a layer where the bugs are non-deterministic by design.

How to build on something you can't inspect

You don't debug the model. You debug everything around it.

Debug the inputs

80% of bad output generally comes from bad prompts. Missing context, vague instructions, wrong assumptions.

Debug the outputs

Can't trace why. Can check if it's correct. Run tests, validate schema, check types. Black-box testing.

Debug the boundaries

Permissions, deny rules, guardrails, hooks. If it did something it shouldn't, that's on your boundaries. And boundaries you can debug.

Debug the patterns

One bad output tells you nothing. But log inputs and outputs over time — patterns emerge. It might not fail the same way twice, but it might fail on the same type of task repeatedly.

Design for non-determinism

Don't assume because it worked once it'll work again. Validate every output. Every time. Not a nice-to-have — an architectural requirement.

The bottom line

The engineering discipline for AI isn't debugging. It's empirical validation. Set boundaries, validate every output, log everything, monitor for drift.

The black box is real. The non-reproducibility is real. Neither is going away.

The question isn't how to make AI deterministic. It's how to build reliably on top of something that isn't.

I think you can. If you're deliberate about it.

Open questions

How do you set up effective drift monitoring for non-deterministic systems?

At what point does empirical validation become too expensive to run on every output?

Can we build better tooling for pattern detection across AI failures?