← back to index

U20 — Larger batch (2 wins bundled) — final wavePROD

Karou's pick after U19: "start" for the larger batch. U20 is the final wave — closes the last two punt items from the V0.3 → U17 stack. Exclude For (Odoo's per-combo exclusion model) finally functional on the U17 Configure page; mixed-mode warning banner on the product detail page when Instant + Never lines coexist. With this slice the entire accumulated punt list is empty.

Summary

Status
6/6 prod · 51/51 regression = 57/57 · shipped
Commit
nix-cafe 6829b4a + nix-outdoor-sales-backend 2cc9f65
Files
8 modified · 1 migration · ~590 LOC net
Migration
CREATE TABLE cafe.product_template_attribute_excl (template_id, value_id, excluded_value_id) with composite PK + cascade FKs

Exclude For — Odoo per-combo exclusion model

Mixed-mode templates warning

6/6 prod checks

Pre-flight: seed template with 2 attributes (Color × Size) via raw SQL
Load-bearing UI: open Red's exclusion picker, tick Large, wait for auto-save → summary chip renders + DB has BOTH directions (forward + reverse); reload page → checkbox still ticked
Generator probe: Cartesian = 4 combos, allowed = 3 after exclusion (Red+Large dropped)
Add a Never attribute + line to the template via SQL → reload /cafe/products/[id]product-mixed-mode-warning visible mentioning both Instant + Never
No HTTP 5xx during the flow
Cleanup: delete seeded data

Screenshots (click to enlarge)

Mid-Gate-2 finds

Architectural notes

Regression sweep — 51/51

6/6 + 51/51 = 57/57 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
26th validation of feedback_phase2_cafe_multishop_solo_retry.