Capxul #929 — Upcoming Payroll "See all" route push

Infrastructure #1630, demand row 10.17. Production build of branch codex/1630-payroll-see-all served on http://localhost:3000 against the Railway staging backend. Driven by apps/web/tests/e2e/payroll-see-all.spec.ts (Playwright, headed Chromium, reserved-OTP identity lane). E-mail echoes are masked in every frame.

ItemValue
Staging Siteconvex-site-production-29eb.up.railway.app
Staging APIconvex-backend-production-f220.up.railway.app
Staging backend headc1b9f62b (integration/capabilities, deployed 2026-09-01, ci.yml run 33546134086)
SDK train@capxul/sdk@2.5.0, @capxul/sdk-react@2.5.0 (pinned on dev)
Organizationorg_01M1F60PTWNRQX5VKQ8MAR4TZB ("Payroll Proof 73efe4045d90")
Actororganization owner on the reserved *@e2e.capxul.test lane (masked)
Run2026-09-01 21:50Z, 1 passed; e-mail echoes masked in every frame of the recording

1. Dashboard — the widget before the click

"Upcoming Payroll · 0 Active · See all" with the frozen empty state "No Upcoming Payroll". The widget rows stay empty until STREAMS (ruling Q6). The hero's "Send Payroll" stays disabled: that gate is ACCESS #1522's.

Organization dashboard with the Upcoming Payroll widget and its See all button

2. After the click — the payroll route

The button pushed /dashboard/organization/payroll?organizationId=org_01M1F60PTWNRQX5VKQ8MAR4TZB (asserted by the spec). The page renders today's "Payroll deferred" gate; the S14 refit (Capxul #934) flips it.

Payroll route reached from the widget, showing the current deferred gate

3. Recording

WebM original