Context

The backend verified the Supabase token and then dropped the identity at the process boundary. Every row-level security policy reads auth.uid(), which nothing on that path was setting, so the only boundary between users was a where user_id in repository code. That closed today.

What the factory did

  • Carried the signed-in user onto the database connection. A caller scope opens a transaction, sets the JWT claims and the authenticated role inside it, and an interceptor refuses to open a connection that no scope was opened for.
  • Served the time-category screens and the notification-device endpoints over authenticated HTTP.
  • Made Na tento den hold only ad hoc items, and offered the day’s outstanding reservations inside the axis gaps.
  • Gave the design system a slider with a two-layer track, and a text rung for the two lanes with the contrast computed in a test.
  • Made navigation a whole - NavigationBar above the item - and took the screen’s header as an input of the shell.
  • Kept a rejected edit on screen, where the form used to lose it.
  • Took the state nothing ever wrote out of the rolling layers.
  • Filed a task from an approved candidate: the component index publishes camelCase token names wrong.

What I did

  • Reviewed the caller-scope change against the live database instead of its own claims: 26 tables owned by postgres with force RLS off, 91 policies written to authenticated, Skipped: 0 in CI. One defect stands - request.jwt.claim.sub wins the coalesce while nothing sets it.
  • Removed the experimental CRUD surface from the application.
  • Put the unreachable half of the backend on the board, and promoted the P1 drafts nothing was blocking.
  • Landed the rolling and habit decisions in the glossary.
  • Made the detached bot start leave the session job object, so a desktop update stops killing the bot with it.
  • Gave the day journal a skill of its own.
  • Mapped the Smart Diary migration into Lifalign. The target topology is settled; the open question is which database the test writes go to.

Notes

  • Twelve of the eighteen merged pull requests came off the board without me.
  • The migration has an ordering trap: every merge to main deploys the dev backend against the database that is about to hold real history, so the dev database has to exist before the first migration run.