There's a particular kind of modernization failure that never shows up in a demo.
The new application compiles. The screens render. The tests, the ones someone wrote, pass. The team ships it, the old system gets decommissioned, and for three weeks everything looks fine. Then a controller notices that a month-end total is off by a rounding step. Or a tax calculation that used to bank a half-cent one way now banks it the other. Or a record that should have been rejected by a validation rule quietly gets written to the database.Nothing "broke." That's what makes it dangerous. The code was translated faithfully, line for line, and the behavior still diverged. This is functional regression, and in a legacy migration it is the failure mode that actually costs you; not the compile errors, which are loud and get fixed on day one, but the silent disagreements between the old system and the new one that surface weeks later, in production, on the numbers that matter most.
If you're modernizing a PowerBuilder application, this is the risk you need to manage.
For most of the last three decades, the hard part of a legacy migration was the sheer mechanical labor of rewriting code. That's changed. AI can now translate PowerScript into C# at a speed and volume no team of contractors could match. The generation problem is largely solved.
The verification problem is not.
The industry is starting to name this out loud. Sourcegraph has described what they call the "80% problem" in agentic coding: AI agents reliably handle the visible 80% of a task, the part you can see in the diff, and miss the invisible 20% that lives outside their context window. The diff looks clean, the tests pass, you merge it, and days later something downstream you never told the agent about starts failing. At Microsoft Build this year, the entire framing around the Foundry platform was that the enterprise AI contest is now about reliability, not raw capability getting agents to hold up under real load, real data, and real compliance requirements, not just produce plausible output.
We've been calling this the 70% wall: the point where a naive AI translation gets you most of the way and then plateaus, because the remaining work isn't more code. It's correctness. And correctness in a legacy system is defined by twenty years of accumulated behavior that no one fully documented and, in many cases, no one still working there fully remembers.
Push past that wall with more generation and you don't get fidelity. You get the hallucination tax: confident, well-formatted C# that looks right, reviews clean, and is wrong.
Every legacy platform has one construct that concentrates the risk. In PowerBuilder, it's the DataWindow and it's where behavioral fidelity is hardest to preserve.
A DataWindow is way more complicated and rich than a grid. It's a dense runtime that fuses stuff that modern architectures deliberately separate:
This is why a line-by-line translation of a DataWindow-heavy application can be 100% faithful to the source code and still wrong. The source was never the specification. The behavior was. And the behavior includes edge cases the original developers never wrote down because they never had to. The system simply did the right thing, and everyone moved on.
If the source isn't the spec, what is? The running system. The only defensible target for a migration is behavioral equivalence: the modernized application, given the same inputs, produces the same outputs and the same side effects as the legacy one including the edge cases nobody documented.
That's an engineering discipline you design the migration around from the first day, and it looks like this:
None of this replaces AI. It's what makes AI safe to use at scale for something as unforgiving as a system of record. Generation gets you speed; a behavioral-equivalence harness is what turns that speed into something you can actually put your name on.
This is the core of how we built VELO, and it's why we don't treat modernization as a pure-generative problem. VELO pairs AI with deterministic analysis. The AI does what AI is good at; the deterministic layer handles the parts of a PowerBuilder application: DataWindow semantics, type behavior, event ordering where close enough is a defect, not a rounding error. The two together are what get you past the 70% wall to behavioral fidelity, instead of stopping at plausible.
It's also why every VELO engagement starts with the VELO Assessment. The Assessment analyzes your actual application and tells you what percentage of it VELO can modernize, grounded in the real code, before anyone commits to anything. From there, VELO delivers a fully modernized .NET and Blazor application on Azure at a fixed price. A working application, verified against the behavior of the one it replaces.
We come by this discipline honestly. Our lineage runs back to ArtinSoft, the team that built Microsoft's original Visual Basic Upgrade Wizard, the tooling Microsoft itself shipped to move VB6 code forward. Thirty years of migrating mission-critical, regulated systems teaches you one lesson above all others: customers don't remember how fast you moved. They remember whether the new system did the right thing on the numbers that mattered.
That lesson shows up in the work. GAPVelocity AI has modernized billions of lines of code and thousands of projects. We have a long list of customers and case studies that prove we've seen it all and been there, done that.
If you're evaluating how to modernize a PowerBuilder application in 2026, the market will offer you a lot of ways to translate code quickly. Speed is table stakes now. So the question that actually separates approaches is a different one:
How do you prove the modernized application behaves the same as the one it's replacing including the edge cases we never wrote down?
If the answer is "the code is a faithful translation," that's a 70%-wall answer, and the other 30% is going to find you in production. If the answer is a behavioral-equivalence discipline: characterization tests, differential comparison against the running system, targeted DataWindow verification, you're talking to someone who understands what they're actually being asked to preserve.
Preserve behavior, not just code. It's the only definition of a successful modernization that survives contact with month-end.
Want to see what behavioral fidelity looks like on your application? Start with a VELO Assessment. We'll analyze your PowerBuilder codebase and show you exactly what percentage VELO can modernize, grounded in your real code, at no risk.