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

shipped production is serving it opened this has it
opened this

Intent: fail loud. Seen on production (lab) on 2026-11-10: GET /explore answered app;dur=3.8 with forge-ttfb;dur=947.8 and forge-lag;dur=1226.8; /robots.txt showed forge-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:

  • [x] 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
  • [x] for a signed-in forge admin only, the relayed response also carries forge-stall;desc="<pattern>";dur=<ms>; nobody else sees it
  • [x] 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

Files: 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

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.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs