Build1 publisher3 min readPublished
On a live healthcare platform, a four-version Angular upgrade used a separate reviewer agent to grade the executor agent's fixes
An enterprise healthcare platform could not go offline for its jump from Angular 11 to 15, so its developer built a supervision chain in which each agent's work is graded by another, and read the objections himself.
The Engineer · Build desk
What happened
- An enterprise healthcare platform running billing and contract administration was taken from Angular 11 to Angular 15, four major versions, and had to stay available the whole way.
- Four agent roles split the work, with an executor that fixes the errors, a reviewer in a separate context that judges the fixes, a test agent per step, and a visual regression agent comparing renders across versions.
- The author took the rule holding it together from audit practice, the same reason the person who writes a check does not sign it and the author of a pull request does not approve it.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint A green build stops working as an acceptance signal once you count the local edits that clear an error without repairing it, so whatever grades the work has to be something other than the compiler.
- cost The speed the executor buys is spent on supervision: sixteen agent runs across the four bumps before any rework, and a human reading the reviewer's objections at each one.
- exposure A fully green suite can still hand billing and contract staff an interface wrong in a hundred places, because spacing and overlay changes are outside what functional tests assert.
- decision Teams copying this have to decide where the reviewer's context comes from, since the whole benefit claimed for it is separation: the fix comes out of one context and the grade out of another.
You can turn a red build green without repairing anything by widening the type, swallowing the exception, pinning the dependency back, or deleting the assertion that was failing. The author of the dev.to account lists all four and says none of them is a fix [5]. Each removes the condition the compiler was reporting, so the compiler then reports success. Separating a repair from a suppression means reading the diff against the code around it.
That reading is the reviewer agent's job. It runs in a context separate from the executor's and judges whether the change is sound, whether it follows the conventions of the surrounding code, and whether it addressed the cause or hid the symptom [10]. On why a second agent behaves differently from one grading itself, he wrote: "It did not spend the last several minutes convincing itself the solution was good." [13]
He raises the obvious objection himself, that a reviewer agent is a second opinion from the same kind of system [20]. Against it he offers one migration step, in which the reviewer flagged parts of the executor's changes, gave reasons he judged sound, and the changes were modified [11]. He is precise about the limit, writing that he cannot yet claim the reviewer has rejected work outright and forced a redo [12]. On the evidence given, the reviewer changed a result once.
The structure multiplies runs. Angular 11 to 15 is four upgrade steps, and four agent roles per step comes to sixteen agent runs before any rework, plus four human decisions to advance [18]. The author kept that advance decision for himself [7]. On most of those bumps the executor resolved the build errors faster than he would have [3].
The fourth role exists for a failure that slips past the other three. A component library changes its default spacing, or an overlay positions itself differently: logic is untouched, every test passes, and the interface is subtly wrong in a hundred places [14]. Checking by hand means clicking through the entire application after every version bump, "which nobody does honestly by the fourth iteration", he wrote [15]. The visual agent compares renders across versions and reports differences; the verdict on whether a difference is acceptable sits outside its job [17].
For this to transfer, the work has to break the way his did. Version-by-version framework upgrades are largely mechanical and repetitive, and the failures arrive as compilation errors from renamed APIs, adjusted imports and dependency conflicts [4]. Where breakage arrives as something other than compile errors, the error list the executor works from and the scoped diff the reviewer reads both disappear. The post does not report defect counts or elapsed time [19], so the case for the reviewer role rests on one step, self-reported. The control it copies is older than the tooling: "No participant validates its own work." [8] On a platform where billing runs on the same codebase [2], I would take sixteen runs over a green build.
What to watch
- Whether a later write-up reports the reviewer rejecting an executor change outright and forcing a redo, which the author says he cannot claim yet.
- Whether the visual agent's difference report gains an acceptance policy, since today it reports the differences and stops there.
- Defect counts or elapsed time from a second migration under the same four-role structure, which would test the reviewer beyond one step.