X_UI_SHOT_ROUTE_UNBUDGETED
Means
a ui.* tool (ui.shot, ui.inspect, ui.interact) refused a route that declares no budget.js
Typical cause
a picture of a route nobody has finished declaring is a picture of a draft — the gate refuses the same route as X_BUDGET_UNMEASURED, and an agent judging the picture would judge the wrong thing
Fix
declare budget: { js: '<n>kb' } in the route file, then x build --target static --json && x verify --only budgets --json