The link points at a route that does not exist
codingDeepLink (workers/api/src/workflows/coding-session.ts:790) emits:
/console/instances/:id/coding/repos/:repoId/summary
The console routes instances/:id/* to InstanceDetail, which parses the splat positionally:
const { id, "*": splat } = useParams<{ id: string; "*": string }>();
const splatParts = splat?.split("/") || [];
So coding/repos/<repoId>/summary is read as tab coding with an initialSessionId of the literal string "repos". The repo id and summary are ignored entirely.
That link is on the Coder's "🙋 Coder needs you" notification — the one raised precisely when a run is blocked waiting for a human. So the notification that most needs to land somewhere useful lands on a session id that cannot exist.
Same class as #338, different producer
#338 (1e4c7f1) fixed the deploy notification by linking a stable parent — /console/instances/:id/coding?builds=<repoId> — rather than a per-run page the product does not have. The same reasoning applies here: link the thing that exists before, during and after the event.
While fixing #338 it also found the notification url column has been stored since migration 0026, returned by SELECT *, and never read by the in-app list — so clicking a notification did nothing at all. That is fixed, which means this broken URL is now reachable where before it was inert. Fixing the producer matters more than it did last week.
Worth checking while you are there
Every other deepLink-style producer in workers/api. Two have now been found wrong by inspection rather than by report, which suggests nothing validates them:
- a link is a string built in a Worker,
- the routes are declared in a React app,
- nothing checks the two agree.
A guard is plausible: the console's route table is enumerable, and the set of link-producing helpers is small. That would make this class fail at build time instead of on a user's phone at the moment they are being asked for help. Judge whether it is worth it — a targeted fix plus a test may be enough.
Acceptance
Found by the agent that fixed #338, in a file outside its lane.
The link points at a route that does not exist
codingDeepLink(workers/api/src/workflows/coding-session.ts:790) emits:The console routes
instances/:id/*toInstanceDetail, which parses the splat positionally:So
coding/repos/<repoId>/summaryis read as tabcodingwith aninitialSessionIdof the literal string"repos". The repo id andsummaryare ignored entirely.That link is on the Coder's "🙋 Coder needs you" notification — the one raised precisely when a run is blocked waiting for a human. So the notification that most needs to land somewhere useful lands on a session id that cannot exist.
Same class as #338, different producer
#338 (
1e4c7f1) fixed the deploy notification by linking a stable parent —/console/instances/:id/coding?builds=<repoId>— rather than a per-run page the product does not have. The same reasoning applies here: link the thing that exists before, during and after the event.While fixing #338 it also found the notification
urlcolumn has been stored since migration 0026, returned bySELECT *, and never read by the in-app list — so clicking a notification did nothing at all. That is fixed, which means this broken URL is now reachable where before it was inert. Fixing the producer matters more than it did last week.Worth checking while you are there
Every other
deepLink-style producer inworkers/api. Two have now been found wrong by inspection rather than by report, which suggests nothing validates them:A guard is plausible: the console's route table is enumerable, and the set of link-producing helpers is small. That would make this class fail at build time instead of on a user's phone at the moment they are being asked for help. Judge whether it is worth it — a targeted fix plus a test may be enough.
Acceptance
Found by the agent that fixed #338, in a file outside its lane.