← back to index

U18 — Small/cleanup batch (5 wins bundled)PROD

Karou's pick after U17: "lets do all small/cleanup first, then medium, then larger". U18 is the small wave — pulls 5 outstanding wins from the U15/U16/U17 punt lists into one slice. R8.2 dormant column finally dropped, backend sid mint stopped, JwtPayload.sid? removed, bulkArchive audit gap closed, R8.4 PIN-side Hyperdrive parity, and a Mode badge tooltip explaining createVariant immutability.

Summary

Status
9/9 prod (pre + post-migration) · 51/51 regression = 68/68 · shipped
Commit
nix-cafe 7a7aca1 + nix-outdoor-sales-backend 84aa235
Files
8 modified · 1 migration · ~100 LOC net
Migration
DROP COLUMN tenant_users.active_session_token — applied AFTER both deploys live to avoid 'column does not exist' 500s during the window.

What ships

9/9 prod checks

Pre-flight: seed 2 throwaway templates (is_hidden=false)
SSO login still works post-sid-cleanup (no JWT regression)
Load-bearing: nix_session cookie's JWT payload has NO sid claim — confirms backend deploy
/cafe/dashboard reachable post-login
/cafe/settings/attributes renders + Chip mode badge has title tooltip mentioning "Mode is locked after creation"
Bulk archive flow on /cafe/products → audit row products.bulk_archived with seeded UUIDs in metadata.ids
Bulk unarchive flow → audit row products.bulk_unarchived
No HTTP 5xx during the U18 flow
Cleanup: delete seeded templates + audit rows

Post-migration smoke: re-ran the full 9/9 suite AFTER applying the column-drop migration. All green — login works without the column, JWT still has no sid, audit rows still write.

Screenshots (click to enlarge)

Mid-Gate-2 finds

Regression sweep — 51/51

9/9 + 51/51 = 68/68 prod tests green on the karouna-dev branch.
test-phase1-prod.mjs11/11
test-phase2-sso-outdoor-prod.mjs6/6
test-m1-prod.mjs10/10
test-r7-prod.mjs14/14
test-r8-prod.mjs4/4
test-phase2-cafe-multishop-prod.mjs6/6
24th validation of feedback_phase2_cafe_multishop_solo_retry.