Created
Jun 22, 19:13
Started
Jun 22, 19:13
Completed
Jun 22, 20:42
DevOps handoff
Type
Feature
Shape
ui+db
Worktree Slug
turf-l-unify
Repositories
turf-monster
Release Train
—
Branch
feat/turf-l-unify
Pull Request
https://github.com/amcritchie/turf-monster/pull/161Acceptance Criteria
Expected Test Plan
Checks Run
Agent Context
Avi QA PASS 2026-06-22. Verified all 4 risk tags. auth: /l GET=inert scanner-safe confirm, POST→turf's GATED MagicLinksController#consume via super (age-gate intact, atomic Studio::Link.consume! burn). referral: referral_link_url→link_url→/l auto-updated; GET sets :reference cookie + redirect, reusable, never burned; POST-to-consume rejected. routing: token=urlsafe_base64 [A-Za-z0-9_-] so %r{[^/]+} + no format:false is sound (no MessageVerifier-slash bug); draw_link_routes=false suppresses engine gateless /l; landing→/lp keeps as: :landing_page. back-compat: /magic_link still consumes, /i→301→/l, old /l/:slug→301→/lp — all tested. Merges clean: origin/main==origin/release (0/0), branch is clean FF. Nits (non-blocking): stale /i comments in app/helpers/application_helper.rb:4-5 and config/routes.rb:393.
Stage Timeline
Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. — means the agent didn't report that metric.
Conversation
QA review feedback, agent handoffs, and follow-up notes for this task.
PR #161 (turf-monster). Removes the /i exception: landing pages -> /lp, /l/<token> is the unified Studio::Link entry (magic + referral) served by turf's OWN gated Studio::LinksController (age-gate preserved; NOT engine's gateless consume). Back-compat: /magic_link still consumes, /i 301->/l, old /l/:slug 301->/lp. 1354 minitest + 10 e2e + live-smoked all paths. Engine 0.8.0 already published, so Gemfile is on ~> 0.8 (no publish gate this time) — straight to QA review.
Sealed-bid sizing
Edit →Alex (PM)
—
Avi (PO)
—
Dev
—
Actual
—
We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.