A fintech ops lead in London pastes the same incident report into the diagnosis tool twice, three days apart. Same file, same line, same confidence score, same proposed fix — except the schema changed on Tuesday and the fix is now wrong. Nobody lied to the system. The system did exactly what it was built to do. That is the uncomfortable part.
Corporate AI 365 caches its root-cause analysis against a hash of three things: the issue text, a snapshot of the code, and the model version. Same hash, same answer, every time — that is what makes an approval gate defensible instead of a coin flip. But a cache is only as honest as the thing that is supposed to invalidate it, and in a system that never connects to a live database, one of those invalidators is a file someone has to remember to re-export.
The cache key is smaller than it feels
When an engineer in Berlin imagines the input to a diagnosis, they picture the whole repository and the whole database. The cache key doesn't see either. It sees the source tree as committed, and a scripted schema export — a dump of tables, columns, constraints, and views that your own developer generates and checks in or uploads. No connection string, no query against production, ever. That's the non-negotiable we design around.
The consequence is that the hash is a function of two artifacts that move at different speeds. Code changes on every push; the diagnosis engine sees that immediately because it reads the repository directly through your GitHub, GitLab, Bitbucket, or Azure DevOps connector. The schema export changes only when someone runs the export again. If a migration adds a column in staging and the team forgets to regenerate the scripted schema, the code snapshot looks fresh, the hash looks fresh, and the cached diagnosis is served with full confidence — pointing at a column that no longer means what the analysis thinks it means.
This is not a bug in the caching strategy. It is the honest cost of refusing to hold a live connection. We could make the schema "always fresh" by letting the AI query production directly — and we have deliberately not built that, because the moment an AI reasoning engine can read live rows, your security review stops being a conversation and becomes a liability audit. So the trade-off stands: reproducibility and a clean trust boundary, in exchange for a manual step that has to be someone's job.
Why the manual step is the real risk in a lean team
That trade-off is tolerable when there's a senior engineer who owns schema hygiene as a matter of habit. It is a real exposure when there isn't one. Across European SMEs and mid-market firms right now, a large share of teams — on the order of six in ten by some recent industry surveys — report they simply cannot find qualified developers to fill open roles. A Dublin logistics company or an Amsterdam retailer running production support with three generalists instead of a platform team isn't being negligent when the schema export goes stale for two sprints. There's no spare capacity to own that discipline full-time.
That matters because the cost of a wrong diagnosis is not symmetric. Enterprise downtime has been estimated by industry research at a median in the region of US$9,000 per minute for large organisations — and a diagnosis that confidently points at the wrong column doesn't just fail to fix the incident, it burns the first twenty minutes of the incident on the wrong hypothesis. In a lean team without a senior engineer to sanity-check the AI's output on sight, that twenty minutes is the whole difference between a contained incident and an escalated one.
What we actually invalidate on, and what we deliberately don't
Given that, the design answer isn't to pretend the schema is always current. It's to make staleness visible instead of silent:
- The cache entry records the export timestamp alongside the hash, so a diagnosis can be shown next to "schema last scripted: 11 days ago" rather than presented as uniformly fresh.
- Any manual schema re-export forces a new hash and a new diagnosis run — it is treated exactly like a code change, not a side artifact.
- Where the AI needs to confirm a live fact — row counts, actual values, current index usage — it writes a read-only query for a developer to run by hand. The result comes back to a human, not to our cache, which keeps the live-data boundary intact even when the stakes are high.
- We deliberately don't hash at the whole-repository level for large monorepos; the key is scoped to the files and schema objects actually implicated, so an unrelated commit elsewhere in the codebase doesn't force a re-diagnosis that produces nothing new — and, just as importantly, a relevant change doesn't get buried in repository-wide noise.
None of this makes the schema export automatic. It can't be, without the live connection we won't build. What it does is turn "the diagnosis was wrong" into "the diagnosis was wrong and here is exactly which input was stale and when it was last updated" — which is the difference between a system you can audit and one you have to take on faith. For a team in London, Berlin, Amsterdam, or Dublin running production support without a bench of senior engineers, that audit trail is the thing that lets a junior developer trust the output enough to act on it, and lets a manager explain the decision afterward without hand-waving.
Start the free 14-day trial, no card required, at corp.dirayahai.com — connect your repository, script your schema once, and see exactly what the cache knows and when it last checked.
Try Corporate AI 365 — connect a repository, report one real issue, and judge it by whether the answer points at the right line. Start a free trial →
Top comments (0)