StrategyComparisonReading time: 9 minutes

Why Even Claude Fable 5 Can’t Reliably Build ServiceNow From a User Story

This is not a knock on the model. Fable 5 is genuinely capable, which is exactly what makes it the right test case. If the best frontier model still cannot do this reliably, the problem was never the model.

Hand Claude Fable 5 a self-contained coding problem, like parsing a file, refactoring a function, or writing a set of tests, and it is excellent. That is not in dispute, and this article does not pretend otherwise. So it is worth being precise about the claim: the issue is not that Fable 5 writes bad code. It is that a ServiceNow user story is not a self-contained coding problem, and no amount of raw model capability changes that.

When you drop a story like "As an agent, I want to escalate incidents so that critical issues reach the right team faster" into a capable model and ask it to build, you get back exactly what you asked for: a table change, some UI, a business rule, maybe a flow. It runs. It demos. And a week later a senior developer is quietly unpicking it, because the story never contained the half of the job that actually mattered on your instance.

And to be fair to Fable 5: none of the frontier models are perfect. If any of them were, we would already have AGI. Perfect would mean handing a system a compressed, assumption-laden paragraph and getting back exactly the intent its author held in their head, and no model can do that. So the honest question is not "which model is flawless?" but "what has to sit around the model to make it reliable on ServiceNow?"

Here is why that gap is structural, not a bug that the next model release closes.

A user story describes the feature, not the operation

A story describes what the feature should do. It rarely describes how the change should be delivered, versioned, or unwound. A generic story only implies the functional work: tables, UI, scripts. The concerns that keep an instance healthy live somewhere else entirely: your update set strategy, how recently sub-prods were cloned, the rollback plan, upgrade safety.

Those are operational concerns, and they live in your team's process, not in the story text. Unless something in the prompt signals that you care about them, the model optimises for answering what was literally asked. It is not being lazy. It is being accurate to the request.

Story:  "As an agent, I want to escalate incidents so
         that critical issues reach the right team faster."

What a capable model builds:
  - A "priority escalation" business rule on incident
  - A new choice field / state, plus a UI action
  - A notification to the assignment group

What the story never said, but your team assumes:
  - Which earlier user stories must already be in place
  - Which business rules, flows and jobs it touches or breaks
  - Which plugins it needs, and whether they are installed
  - Whether real data exists, or you must seed test data
  - The update set / scoped app strategy: scope, migration path

None of the second list is exotic. It is just invisible to anyone, human or model, who only has the story.

The model has no knowledge of your environment

Half of that guardrail list is instance-specific. Which plugins are activated. Whether you run MID Servers and where. What your scope strategy is. How stale your sub-production instances are. A model cannot verify any of it, because none of it is in the story and none of it is in its training data. It is a property of your instance on the day you deploy.

This produces a subtle and important failure mode: the model tends not to raise the questions it cannot ground. It will not ask "is this scoped app or global?" if it has no way to check, even though for you that question is the single most valuable thing the exercise could have surfaced. The unanswerable question is exactly the one worth asking, and it is the one an ungrounded model stays quiet on.

It learned from tutorials, and tutorials skip the caution

Almost everything written about ServiceNow online is a tutorial. Tutorials show you how to build something, then stop. They rarely cover the checks that stop that something from causing trouble later: will it slow the system down, will it clash with the features ServiceNow ships as standard, will it survive the next platform upgrade.

A model writes what it was taught, and it was taught mostly from those tutorials. So by default it builds the thing and skips the checks. Fable 5 knows more and reasons better than earlier models, but it learned from the same lopsided material. Being smarter does not put back what the material left out.

Generic in, generic out

With no context, a model aims for the most broadly applicable answer: the response that would be reasonable across the largest number of instances. That is a sensible strategy when you know nothing about the target, and it is precisely why it trims the edge concerns that only matter to a mature team running a real, opinionated instance. Genericity is the correct behaviour under uncertainty, and it is also the behaviour that produces code your platform team will not accept.

"It runs" is not "it does what you meant"

This is the failure mode that costs the most, because it is the hardest to see. A model, together with the automated checks around it, can confirm that the code exists and functions. It cannot, on its own, confirm that the code actually executes the function the story described.

Those are different claims. "The escalation business rule fires without error" is a fact about execution. "The escalation business rule routes the right incidents to the right team under your real assignment logic" is a fact about intent, and intent was never fully written down. A green result against the first claim reads, to everyone glancing at the demo, like the second claim is true too. It is not. The two only coincide when the story was complete, and ServiceNow stories almost never are.

A model verifies that the code exists and functions. It does not verify that it is executing the functions the story actually described. On a mature instance those are two different things, and the gap between them is where the rework lives.

The assumption gap no model can close alone

Underneath all four points is one root cause. When a person writes a user story, they compress a large amount of unstated strategic intent into a short paragraph, trusting that a colleague on the same team will decompress it correctly, because that colleague shares the context, the conventions, and the scar tissue. A model does not share any of that. It cannot fill assumptions it was never given, so it cannot recover the strategic intention that the author left implicit.

That is why "just use a better model" does not solve it. Capability closes the gap between a complete specification and correct code. It does nothing for the gap between an incomplete story and the intent behind it, because that missing information was never in the model's reach. It was in your process. This is also the reason a generic LLM lands well below a grounded one on ServiceNow-specific work: the difference is context, not raw intelligence.

What actually closes the gap

If the problem is missing operational context, the fix is not a bigger model. It is a system that supplies that context and refuses to let intent stay implicit. That is the design SnowCoder is built around, and it uses capable frontier models like Fable 5 as the engine, not as the whole answer.

  • Ground the model in your instance. Yeti Drive feeds real dictionary exports, scope strategy, and conventions into the conversation, so the model can answer questions it otherwise could not ground, and raise the ones it should.
  • Force intent to the surface before code exists. The four-pass shape (BA, Architect, Sr Dev, Security) is explicitly built to challenge gaps rather than fill them silently, turning a lossy story into structured acceptance criteria that carry the operational concerns as first-class requirements.
  • Separate "it runs" from "it does the job." A frozen-AC benchmark and per-story acceptance criteria test against described intent, not just successful execution, the exact gap a bare model cannot see.
  • Put the guardrails on rails. The two-lane model and Build Agent route update sets, rollback, and destructive-change approval through gates by default, so the operational concerns a story omits are handled by the system instead of by luck.

The takeaway is not that Fable 5 is weak. It is that ServiceNow delivery is a context problem wearing a coding problem's clothes. Give the best model in the world an incomplete story and no environment, and it will faithfully build the incomplete story. Give it your instance, your conventions, and a process that refuses to let intent stay unwritten, and the same model becomes genuinely useful. The intelligence was never the bottleneck. The context was.

Related reading

Give the model your context, not just your story

SnowCoder runs capable frontier models on top of your instance context and a process that refuses to let intent stay implicit. That is the difference between code that runs and code that does the job.