Block migrates go/console from Base Web to Fluent UI without a flag day using an agentic migration system
Block's internal platform go/console had 11k tracked files mostly tied to Base Web, which was scaling back maintenance. With 40 to 60 engineers landing changes daily and no acceptable freeze window or downtime, a standard migration cutover was impossible.
Single-shot prompting produced code that was syntactically valid but semantically wrong — the model would generate React-incorrect patterns like creating makeStyles hook factories inside the component body. Attempting to fix output quality with global hint libraries consumed 25% of the 256k context window before the model even saw the target file.
The migration succeeded: more than 80 distinct targets were migrated to Fluent, Base Web was fully removed in February 2026, and the entire effort across 451 days was driven primarily by one IC, producing 1,004 commits and 14,713 file changes.
Show all 19 reported metrics
Frequently asked questions
What did this team achieve with this AI workflow?
The migration succeeded: more than 80 distinct targets were migrated to Fluent, Base Web was fully removed in February 2026, and the entire effort across 451 days was driven primarily by one IC, producing 1,004 commit…
What tools did this team use?
TypeScript language service, Goose, ANTLR, Jest.
What results were reported?
Tracked files in repo: 11k tracked files; TypeScript and TSX files: 10k; Engineers landing changes daily: 40 to 60; Context window consumed by hint library: 25% (source-reported, not independently verified).
What failed first in this deployment?
Single-shot prompting produced code that was syntactically valid but semantically wrong — the model would generate React-incorrect patterns like creating makeStyles hook factories inside the component body.
How is this back office ops AI workflow structured?
File selected for migration → AST-based selective hint injection → Model migrates file in tool-backed loop → Import rule validation → Custom linter enforcement → TypeScript language server diagnostics → Warm Jest test execution → Temporary Fluent migration lane.