Relay
Relay shared with you
Devtools Q2 — context loss in async review
◇ Quick tools — open with Claude Code, Cursor, or copy the code (agent-launcher.ts)
Code: JDKX9R · Use these tools with any AI agent to load this relay's context
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
You'll receive a 6-digit code by email to verify and create your free trial account.
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
You'll receive a 6-digit code by email to verify and create your free trial account.
demo_campaigns.relay_code is optional — when a campaign has no pre-seeded broadcast relay, _cl.relayCode is empty and the whole preview card is skipped (clInit(), relay-app/concepts/src/requests.ts). Just the form shows, same as #638's Reddit-Founders link.
Relay
⟳
Generating your relay…
Claude is personalizing it for you. Check your inbox for a verification code.
Relay
Your relay is ready
Async code review, without the context loss
Hey Jordan — here's a starter relay for your team's Notion + Slack review flow: a template for handing off review context between async reviewers, so nothing gets lost between threads.
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Relay
Verified — redirecting…
JWT set, trial account created (14-day,
signup_source: demo). No intermediate "welcome" screen today — straight to /stream.Relay
This campaign has ended
The link you followed has expired. Reach out to the person who shared it.
A genuinely non-existent slug (404) and a campaign whose
status === "expired" render the identical message (clInit() → _clShowExpired() on either condition). Not flagged as a bug — reads as intentional anti-enumeration parity, same idea as the transfer-claim prototype's uniform-gate pattern — but worth a deliberate yes/no rather than an accident.
Relay
Your relay is ready
Async code review, without the context loss
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Verification failed. Please try again.
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
Network error — please check your connection and try again.
Form data is preserved and re-shown on failure (
_clDoSubmit catch block) — good recovery UX already shipped. Same slot also shows the backend's data.error verbatim for a non-network 4xx/5xx from /api/demo/personalize.
relay-platform #1896
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
Bug:
GET /x/{slug} (handle_share_tracked, routes/short_urls.py) never checks status — a campaign an admin saved as draft (never published) is fully live and usable by anyone who has or guesses the slug. Only POST /api/demo/personalize gates on status == "active" — one step too late.
relay-platform #1896
Relay
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
↳ succeeds — account created, even though an admin flipped this campaign to "expired" 4 minutes ago.
Bug:
handle_demo_verify (routes/demo.py) never re-checks campaign status — only whether the OTP row itself is valid. An admin's "expire this campaign" kill switch doesn't stop a signup already in flight past the personalize step.
relay-platform #1897
Relay
Your relay is ready
Async code review, without the context loss
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Bug:
_fire_otp (routes/demo.py) fires the OTP email on a background thread; a send failure is appended to an internal otp_error list that's never read. _handle_personalize returns 200 {"otp_pending": true} regardless — this exact screen renders whether or not the email actually sent. Jordan has no code coming and no way to know it.
relay-platform #1898
Relay
Verify your email
We sent a 6-digit code to jordan@acmecorp.com. Enter it below to verify your email and create your free trial account.
Verification failed. Please try again.
↳ attempt #47 this minute, same as attempt #1 — nothing throttles this.
Bug:
handle_demo_verify has no rate-limit or attempt counter — only the OTP's own expiry window bounds a guesser. _handle_personalize already rate-limits by session_id; verify has no equivalent.
relay-platform #1899
Relay
Get your personalized relay
Answer three questions. Claude will generate a relay tailored to your workflow. You'll also get a free trial account.
↳ signup #10,000+ on a "lifetime access for the first 500" campaign, cheerfully accepted.
Gap:
demo_campaigns has no max-uses/cap field at all (confirmed against the migration schema) — a scarcity-framed campaign (e.g. #638 Reddit Founders' "first N") has no way to actually stop at N. This state can't happen today because nothing enforces it, which is itself the problem.