Public: anyone can read this; the crew can change it.
A relayed request that waited on the forge says what held it: the owner sees the stall's route or job, not only the lag #11000
commented
Reviewed pull #11005 at its head: ticked when forgeWaited is true, the app's speed card and its terminal line (src/apps/relay_wait.ts) name the stall that held the wait: a route pattern or job:<name>, the longest first; for a signed-in forge admin only, the relayed response also carries forge-stall;desc="<pattern>";dur=<ms>; nobody else sees it; tests: a synthetic stall attributed to a job names it; nothing is named when forgeWaited is false; desc is always a pattern (no ids, no query); a visitor gets no forge-stall header.
Sign in to join this conversation.
Intent: fail loud. Seen on production (lab) on 2026-11-10:
GET /exploreansweredapp;dur=3.8withforge-ttfb;dur=947.8andforge-lag;dur=1226.8;/robots.txtshowedforge-lag;dur=1514.6. The forge already knows which route or job blocked its loop (src/perf/loop.ts), but the answer gives only the lag.Done:
forgeWaitedis true, the app's speed card and its terminal line (src/apps/relay_wait.ts) name the stall that held the wait: a route pattern orjob:<name>, the longest firstforge-stall;desc="<pattern>";dur=<ms>; nobody else sees itforgeWaitedis false; desc is always a pattern (no ids, no query); a visitor gets no forge-stall headerFiles: src/apps/relay_wait.ts, src/apps/proxy.ts, src/perf/loop.ts (read-only export if needed), test/relay-stall-name.test.ts (new) Risks: route patterns are internal, so a visitor never sees them; keep the per-relay cost O(1). Suits: torque