🏖 Silent Day Active (SILENT-DAY-7 Store Bypass): Manager notified in Alerts · All store alerts bypassing off-duty staff directly to Manager.
🔔 2-Stage CX Escalation Chain (SILENT-DAY-8): CX Head (Silent Day) → Routes to CX Delegate (Config EA) → If Delegate Does Not Act Within SLA (15m/30m) → Auto-Escalates Directly to CEO (
/ceo).
PART 1 · EXECUTIVE SUMMARY (FIRST 0.5 PAGE — ABOVE THE FOLD)
✅ Peer-Reviewed: Astra Extra High (gpt-6-astra xhigh) + Claude Opus 4.7 Extra High · STOP 3 · T1-10 · STAGE-GATE® PLM · 312 SKUs
New Product Launch (NPL) 7-Stage Patisserie & Beverage Lifecycle (STOP 3 · T1-10 · STAGE-GATE® PLM · 312 SKUs)
1. What We Are Building & Why
- Governs Harley's **312 patisserie, Medovik cake, artisanal bake, and craft beverage SKUs** across a deterministic **7-Stage Gate Pipeline (`Stage 1 Concept & Menu Slot` -> `Stage 2 Multi-Level BOM & Lab Food Safety` -> `Stage 3 9-Attribute Blind Sensory, T+72h Decay & 30m Bike Packaging Stress` -> `Stage 4 <=28% COGS & Margin Lock` -> `Stage 5 Rista POS, HSN/GST & 60s BOH Video SOP` -> `Stage 6 14-Day 3-Outlet Canary Pilot` -> `Stage 7 Scale or 30/60/90d Kill-Switch`)**.
- **Benchmarked against Global Patisserie & QSR Leaders (Starbucks Siren R&D, Pret A Manger, Paris Baguette, 85°C Bakery, TraceGains PLM):** Models **4-level Sub-Recipe BOMs** (`Raw Ingredient -> Sponge/Filling/Frosting WIP -> Commissary Slab -> Café Slice`) with **Baker's %**, **Bake Moisture Loss (`8–12%`)**, **Trim/Slice Loss (`4–6%`)**, **Water Activity ($a_w \le 0.85$)**, **pH**, and **Big-9 Allergen + FSSAI Veg/Egg/Non-Veg** declarations.
- **Eliminates soggy cakes, aggregator transit damage, and margin erosion:** Hard-gates every SKU on a **9-Attribute Blind Hedonic Sensory Panel (`>= 4.0/5.0`)**, **Ambient/Chilled Display Holding Decay Curve (`T+4h, T+12h, T+24h, T+48h, T+72h`)**, **30-Min Zomato/Swiggy Motorbike Vibration & `25°` Tilt Test**, **1-in-1-out Menu Engineering Slot Cap**, **Theoretical vs. Actual COGS (`<= 28%`)**, and **14-Day Canary Pilot KPIs (`Sell-Through >= 75%`, `Dump <= 8%`, `Counter SLA <= 90s`)**.
2. Personas & Access Scope
- **R&D Executive Pastry Chef / Food Technologist**: Formulates multi-level sub-recipes (Baker's %), logs bake/trim yield losses, records $a_w$ / pH & Big-9 allergens, and runs the `T+4h..T+72h` shelf-life decay curve.
- **Sensory Panelists (`>= 5` Blind Tasters) & QA Lead**: Score 9 organoleptic attributes blind on a 5-point normalized hedonic scale (`>= 4.0` gate) and certify the **30-Min Motorbike Delivery Vibration & Tilt Packaging Test**.
- **Finance / Cost Controller**: Audits live raw-material rollup, packaging cost (`₹/box + cold-gel pack`), and Theoretical vs. Actual COGS (`<= 28.0%` ceiling) plus Menu Engineering quadrant placement.
- **L1 Named R&D Chef (`Chef Vikramaditya · H-000104`) & L2 Named QA/Lab Lead (`Dr. Ananya Rao · H-000112`)**: Zero committee ownership—`L1` owns Stage 1–2 Multi-Level BOM (Baker's %, `<=28%` COGS); `L2` owns $a_w/ ext{pH}$, Big-9 Allergens, `T+4h..72h` Decay Curve & 30-Min Motorbike Vibration/Tilt Packaging Gate.
- **L3 Named Central Kitchen (CK) Production Head (`Suresh Nair · CK-1 H-000118`)**: Owns Bench-to-200kg Commercial Scaling, Deck Oven & Blast-Chiller Pull-Down Curve (`+65°C -> +3°C in <=90m`), CK Line Crew Certification, and Crate-Level Lot QR Minting (`HRL-LOT-{SKU}-{CK}-{YYYYMMDD}-{BATCH}`).
- **L4 Named Cold-Chain & Fleet Controller (`Mahesh Goud · H-000124`) & L5 Named POS/Catalogue Lead (`Karthik Reddy · H-000129`)**: `L4` owns Reefer Pre-Cool (`+2..+4°C`), BLE Logger Telemetry (`> +6°C for >15m = P1 Alert`), and Crate Stack-Height Lock; `L5` stages Rista POS + HSN/GST + Swiggy/Zomato SKU in `LOCKED_NOT_ENABLED` state per store.
- **L6 Named Store Manager per Outlet (`NAN: Rohit MGR-01`, `JUB: Priya MGR-02`, `KOK: Arvind MGR-04`) & L7 Named FOH Last-Mile Dispatch Lead (`NAN: Chimkila S CREW-04`)**: `L6` owns Store Door Crate Receiving Probe (`<= +5°C`), BOH Practice Plate Photo, `>=90%` FOH Quiz, and Planogram Tent Card to unlock that store's POS; `L7` owns the **First-10-Orders Open-Box Rider Handover Photo Gate** and live `<=1%` Last-Mile Damage SLA.
3. Owner Sign-Off Decisions
- Enforce **Multi-Level Sub-Recipe BOM + Baker's % + Bake/Trim Yield Loss** and **Water Activity ($a_w$) / pH + Big-9 Allergen + FSSAI Dot** at Stage 2.
- Mandate **9-Attribute Blind Hedonic Score >= 4.0/5.0**, **`T+4h..T+72h` Holding Decay Curve**, and **30-Min Zomato/Swiggy Motorbike Vibration & `25°` Tilt Test** at Stage 3.
- Lock **<= 28.0% Theoretical & Pilot Actual Food Cost Ceiling** and **1-in-1-out Menu Engineering Slot Cap** (`Stars / Plowhorses / Puzzles / Dogs`) at Stage 4.
- Gate national rollout on **14-Day 3-Outlet Canary Pilot (`Sell-Through >= 75%`, `Dump <= 8%`, `Ticket SLA <= 90s`)** and automated **30/60/90-Day Post-Launch Cohort Kill-Switch**.
PART 2 · FULL INTAKE, DOMAIN OBJECT DESIGN & GLOBAL INDUSTRY BENCHMARKS (1.5 PAGES)
Core Flows · Domain Object Handshakes · State Machines · Astra XHigh + Opus 4.7 Peer Review
2A. Core User Journeys & Functional Intake Rules
| Journey / Capability | Persona & Trigger | System Action & Hard Gate Rule |
|---|---|---|
| NPL-J01 · Stage 1: Concept Brief & 1-In-1-Out Menu Engineering Gate | Category Manager / Founder -> `POST /api/npl/skus` | Assigns category (`Medovik Cakes, Cheesecakes, Croissants, Savoury, Craft Beverages`), target price point, occasion, and **Menu Engineering Replacement Slot (`1-in-1-out`)**—nominating a low-margin/low-volume `Dog` SKU for sunset if the café display case is at capacity. |
| NPL-J02 · Stage 2: 4-Tier Sub-Recipe BOM, Baker's % & $a_w$/pH Food-Safety Gate | Executive Pastry Chef & QA Lead -> `POST /api/npl/skus/{id}/bom` | Builds multi-level BOM (`RM-*` Raw Material -> `WIP-*` Honey Sponge / Dulce de Leche / Frosting -> `BATCH-*` Commissary Slab -> `FG-*` Café Slice), computes **Baker's %**, **Bake Moisture Loss (`8–12%`)**, **Trim/Portion Loss (`4–6%`)**, logs **Water Activity ($a_w \le 0.85$ ambient or `2–4°C` cold-chain)**, **pH**, **Big-9 Allergens**, and **FSSAI Veg/Egg/Non-Veg** nutrition per 100g. |
| NPL-J03 · Stage 3A: 9-Attribute Blind Hedonic Sensory Panel (`>= 4.0/5.0`) | 5+ Blind Panellists -> `POST /api/npl/skus/{id}/sensory` | Scores `1. Visual Layering & Glaze`, `2. Crumb Moistness`, `3. Honey/Flavor Aroma`, `4. Sweetness/Brix Balance`, `5. Filling-to-Sponge Ratio`, `6. Crust Texture`, `7. Aftertaste`, `8. Portion Value`, `9. Purchase Intent`. Blocks Stage 4 if `mean_score < 4.0` or any attribute `< 3.5`. |
| NPL-J04 · Stage 3B: `T+4h..T+72h` Holding Decay Curve & 30-Min Bike Delivery Stress Test | QA Lead -> `POST /api/npl/skus/{id}/stress-test` | Logs organoleptic & moisture-migration checks at **`T+4h, T+12h, T+24h, T+48h, T+72h`** to lock display shelf-life, plus **Commissary Cold-Chain Shock (`2–4°C`)** and **30-Min Zomato/Swiggy Two-Wheeler Vibration & `25°` Braking Tilt Test** (zero lid frosting smear, zero board slide, intact tamper seal). |
| NPL-J05 · Stage 4: `<= 28%` Theoretical COGS, Packaging & Margin Sign-Off | Cost Controller / CFO -> `POST /api/npl/skus/{id}/costing-approve` | Computes `(raw_bom_cost_inr / net_yield_pct) + primary_cake_board_box_inr + delivery_gel_pack_inr` against net selling price (ex-GST). Hard-blocks progression if `food_cost_pct > 28.0%` without written Founder luxury-tier waiver. |
| NPL-J06A · Stage 5A (Pillar 1 & 2 — L3: Suresh Nair): CK Commercial 200kg Scaling, Line Certification & Crate Lot QR (`HRL-LOT-*`) | L3 CK Production Head (`H-000118`) -> `POST /api/npl/skus/{id}/ck-enablement` | Locks commercial deck-oven steam profile, blast-chiller pull-down curve (`+65°C -> +3°C in <=90m`), and ultrasonic portioning cutter calibration at `CK-1/CK-2`. Certifies named CK line bakers (`Sponge, Filling, Portioning`) on Trial Batch `CK-TRIAL-01`, mints scannable Crate Lot QRs (`HRL-LOT-{SKU}-{CK}-{YYYYMMDD}-{BATCH}`) tracking `baked_at, blast_chilled_at, core_temp_c, use_by_at`, and activates `D-2/D-1/D-0 05:00 AM` store indenting. |
| NPL-J06B · Stage 5B (Pillar 3 — L4: Mahesh Goud -> L6 Store Mgr): Cold-Chain Reefer Logistics & Crate-to-Counter Probe Handshake | L4 Cold-Chain Controller (`H-000124`) & L6 Store Mgr -> `POST /api/npl/crates/{lot_qr}/receive` | Enforces Reefer Cabin Pre-Cool Gate (`+2°C..+4°C` before loading), BLE TempTale logger pairing, max crate stack height lock (prevents crushing frosted pastries), and Dual Dispatch Sign-Off (`L3 + Driver`). Any in-transit excursion `> +6°C for >15m` fires a P1 alert to `L4`. At store door, `L6` scans `HRL-LOT-*`, probes core temp (`<= +5.0°C`), and logs condition (`✓ Intact / ⚠️ Condensation / ✕ Crushed`); compromised crates are auto-quarantined. |
| NPL-J06C · Stage 5C (Pillar 4A — L5: Karthik Reddy & L6: Named Store Mgr): Per-Store Ground Enablement Matrix Unlocks POS | L6 Store Mgr (`NAN: Rohit MGR-01`) -> `POST /api/npl/skus/{id}/outlets/{outlet_id}/unlock-pos` | `L5` stages Rista POS + Swiggy/Zomato SKU in **`LOCKED_NOT_ENABLED`** state for each of the 32 outlets. Store POS & aggregator listing unlock **per individual outlet** only when its Named Store Manager (`L6`) completes all 4 gates: (1) 60s `EN/HI/TE` BOH Video + **1 Practice Plate Photo**, (2) **`>= 90%` FOH Barista Tasting/Allergen Quiz**, (3) Eye-level chiller planogram (`+2..+4°C`) + FSSAI tent card **Live Showcase Photo**, and (4) Custom insert box + frozen gel-pack stock check. |
| NPL-J06D · Stage 5D (Pillar 4B — L7: Named FOH Dispatch Lead): Last-Mile Rider Handover & First-10-Orders Open-Box Photo Gate | L7 FOH Dispatch Lead (`NAN: Chimkila S CREW-04`) -> `POST /api/npl/orders/{order_id}/last-mile-pack` | For the **first 10 aggregator orders per outlet**, requires an **Open-Box Pack Photo** verifying the slice collar lock + 50g frozen gel pack + allergen seal before handing upright to the Zomato/Swiggy rider. Tracks per-store Last-Mile Damage Rate (`<= 1.0%`), Prep-to-Handover SLA (`<= 90s`), and Customer Rating (`>= 4.6★`); auto-re-locks the Open-Box Photo Gate if store damage exceeds `1.5%`. |
| NPL-J06E · Stage 5E (Pillar 5 — Last-Minute Rollout Adoption Roll-Up & 5-Axis Filter Engine): Who Has Adopted vs. Who Has Not | COO / Ops Lead / Cluster Mgr -> `GET /api/npl/skus/{id}/adoption-rollup` & `POST /api/npl/skus/{id}/nudge-non-adopted` | Renders the real-time **Last-Minute Rollout Adoption Roll-Up Summary**: `🟢 Adopted & POS Unlocked (21/32 · 65.6%)`, `🟡 Last-Minute Lagging / T-6h Risk (7/32 · 21.9%)`, `🔴 Not Adopted / Gate Locked (4/32 · 12.5%)`, and `👥 Crew Certification Roll-Up (482/540 Crew · 89.3% · 58 Pending across 11 Stores)`. Supports **5-Axis Interactive Filtering** (`1. Adoption Status`, `2. Cluster/City/Format`, `3. Blocking Layer L1–L7`, `4. Role/Station`, `5. HOP Escalation Tier 0..3`), **4 Group-By Views** (`By Outlet`, `By Cluster`, `By Blocking Layer`, `By Named Owner / Non-Adopted Staff`), and **1-Tap Batch HOP Nudge**. |
| NPL-J06F · Stage 5F (Pillar 6 — HOP Nudge & Accountability Compliance `acct-*` / `O-022` / `O-045`): Escalation, M3 Verify & `✕ Cannot` Upstream Re-Routing | L6 Store Mgr / L3 CK / L4 Logistics / Cluster Mgr -> `POST /api/npl/readiness/{id}/cannot-block` & `/m3-verify` | Enforces full **HOP Nudge & Accountability compliance**: (1) **Deterministic Escalation Ladder** (`Named Owner T-24h -> HOP Nudge #1 + Store Mgr T-6h/+15m -> HOP Nudge #2 + Cluster Mgr T-2h/+30m -> City/COO Hard Launch Lock T-0`); (2) **M3 Independent Verification** (`✓ Confirm = I checked the work` with `verified_by_id != completed_by_id` vs `↩ Return for correction` with mandatory reason + `revision_count++`); (3) **Structured `✕ Cannot` 6-Reason Chips (`CK Crate Short`, `Cold-Chain Temp Excursion`, `Packaging Insert Missing`, `POS SKU Missing`, `Chiller Down`, `Staff Shortage`)** that record an immutable `BLOCKED` receipt for the store and **automatically re-route accountability + HOP Nudge upstream to the `L3 CK` (`Suresh Nair`) or `L4 Logistics` (`Mahesh Goud`) Named Owner**; (4) **Snooze Cap (`Max 2: +15m / +30m`) & `O-045` Evidence Proportionality**. |
| NPL-J07 · Stage 6: 14-Day 3-Outlet Canary Pilot (`Jubilee Hills, Nanakramguda, Gachibowli`) | Area Manager -> `POST /api/npl/skus/{id}/canary-evaluate` | Tracks 14 days of live telemetry: **`Sell-Through >= 75%`**, **`Dump/Wastage <= 8%`**, **`Counter Service Ticket SLA <= 90s`**, **`Aggregator Packaging Complaint Rate < 0.5%`**, and **`Customer Rating >= 4.5/5.0`**. |
| NPL-J08 · Stage 7: Chain-Wide Scale-Up & `30/60/90-Day` Automated Cohort Kill-Switch | COO / Founder -> `POST /api/npl/skus/{id}/cohort-decision` | Promotes passing Canary SKUs to all 32 outlets and runs automated **30/60/90-Day Post-Launch Cohort Audits** comparing **Actual vs. Theoretical COGS** (`<= +1.5%` variance) and repeat order rate—issuing **`PROMOTE_TO_CORE`**, **`REFORMULATE_STAGE_2`**, or **`SUNSET_KILL_SWITCH`** (auto-archiving POS SKU & halting commissary batching). |
2B. Underlying Domain Objects & How They Work Together
Domain Object (Table) |
PK & Tenant Scope | Core Attributes & Constraints | Cross-Object Handshake |
|---|---|---|---|
ProductLaunchSKU (npl_skus) | sku_id (PK), category, stage_num (1..7) | sku_code, name, fssai_dot (VEG/EGG/NON_VEG), target_price_inr, sunset_replacement_sku_id, menu_quadrant (STAR/PLOWHORSE/PUZZLE/DOG), status | Master 7-stage PLM state machine; enforces 1-in-1-out menu slot cap. |
SubRecipeBOMLine (npl_subrecipe_bom) | bom_line_id (PK), sku_id (FK) | tier_level (1_RM/2_WIP/3_BATCH/4_FG), item_code, bakers_pct, gross_qty_g, bake_loss_pct, trim_loss_pct, net_yield_pct, unit_cost_inr, total_food_cost_pct | Computes multi-level yield-adjusted BOM cost; enforces `total_food_cost_pct <= 28.00`. |
FoodSafetyLabRecord (npl_food_safety_lab) | lab_id (PK), sku_id (FK) | water_activity_aw, ph_level, storage_class (AMBIENT/CHILLED_2_4C/FROZEN_18C), big9_allergens_json, kcal_per_100g, sugar_g_per_100g, s3_lab_report_sha256 | Blocks Stage 3 if `water_activity_aw > 0.85` without mandatory `CHILLED_2_4C` cold-chain lock. |
SensoryAndDecayCurve (npl_sensory_decay_curve) | panel_id (PK), sku_id (FK) | panellist_count (>=5), attr9_scores_json, mean_hedonic_score, decay_t4h_ok, decay_t12h_ok, decay_t24h_ok, decay_t48h_ok, decay_t72h_ok, approved_shelf_life_hours | Requires `mean_hedonic_score >= 4.0` and zero weeping/sogginess up to `approved_shelf_life_hours`. |
DeliveryPackagingStressTest (npl_packaging_stress_test) | stress_id (PK), sku_id (FK) | reefer_shock_2_4c_pass, bike_30min_vibration_pass, tilt_25deg_braking_pass, lid_smear_zero, board_slide_mm (<=2), s3_unboxing_photo_sha256 | Hard gate before enabling Swiggy/Zomato aggregator channel for the SKU. |
CanaryAndCohortTelemetry (npl_post_launch_cohort) | cohort_id (PK), sku_id (FK), window_tag (CANARY_14D/DAY_30/DAY_60/DAY_90) | pilot_outlet_ids_json, units_allocated, units_sold, sell_through_pct (>=75), dump_wastage_pct (<=8), p95_ticket_sla_sec (<=90), actual_cogs_pct, cohort_verdict | Drives Stage 6 Canary promotion and Stage 7 `30/60/90d` automated `SUNSET_KILL_SWITCH`. |
2C. State Machines & Operational Guardrails
7-Stage Industrial Patisserie PLM Gate (`NPL-S1`)
1_CONCEPT_SLOT → 2_BOM_AND_LAB_SAFETY → 3_SENSORY_DECAY_AND_BIKE_TEST → 4_COGS_28PCT_LOCK → 5_POS_AND_VIDEO_SOP → 6_CANARY_14D_PILOT → 7_NATIONAL_OR_SUNSET4-Tier Sub-Recipe Yield & `<= 28%` COGS Guardrail (`NPL-S2`)
Rolls up `Raw Material -> Honey Sponge / Dulce de Leche WIP -> Commissary Slab -> Café Slice` including `8–12%` bake loss, `4–6%` trim loss, and box/gel-pack cost; blocks Stage 4 if `total_food_cost_pct > 28.0%`.
`T+4h..T+72h` Decay Curve & 30-Min Bike Tilt Gate (`NPL-S3`)
Tests moisture migration at `T+4h, 12h, 24h, 48h, 72h` plus a real **30-Min Two-Wheeler Delivery Vibration & `25°` Tilt Test** so zero smeared cakes ever reach a customer.
14-Day Canary & `30/60/90-Day` Cohort Kill-Switch (`NPL-S4`)
Requires `Sell-Through >= 75%`, `Dump <= 8%`, and `Ticket SLA <= 90s` in 3 pilot cafés, followed by automated `30/60/90d` Theoretical-vs-Actual COGS & velocity audits.
2D. Global F&B / Patisserie / Enterprise Industry Benchmarks & Hostile Peer Review Verdict
| Global Industry Benchmark / Peer Reviewer | Standard / Gate Adopted | How Harley's OneOps / HOP Enforces It |
|---|---|---|
| Starbucks Siren R&D / Stage-Gate® & TraceGains F&B PLM | Multi-Level Sub-Recipe BOM, Baker's % & Yield-Loss Rollup | Models 4-tier patisserie hierarchy (`Raw Ingredient RM-* -> Sub-Recipe WIP-* [Honey Sponge / Dulce de Leche / Cream Frosting] -> Commissary Batch -> Café Slice FG-*`) with **Baker's %**, **Bake Moisture Loss (`8–12%`)**, **Trim/Slice Loss (`4–6%`)**, and live ingredient price rollup. |
| Food Safety, Water Activity ($a_w$) & Big-9 Allergen Gate | `a_w <= 0.85` Ambient vs. `2–4°C` Cold-Chain + FSSAI Labelling | Mandates lab recording of **Water Activity ($a_w$)** and **pH** at Stage 2, auto-generates **Big-9 Allergen Matrix** (`Gluten, Dairy, Egg, Tree Nuts, Peanuts, Soy, Sesame, Sulphites, Mustard`), and computes per-100g / per-slice nutrition & **FSSAI Veg/Egg/Non-Veg** dot. |
| Pret A Manger / Paris Baguette Sensory & Shelf-Life Decay | 9-Attribute Blind Hedonic Panel (`>= 4.0/5.0`) + `T+4h..T+72h` Decay Curve | Requires `>= 5` blind panellists scoring 9 patisserie attributes (`Layering, Crumb Moistness, Honey Aroma, Brix Balance, Filling Ratio, Crust Texture, Aftertaste, Portion Value, Purchase Intent`) PLUS **Ambient & Chilled Display Holding Decay Curve at `T+4h, T+12h, T+24h, T+48h, T+72h`**. |
| Indian Aggregator Last-Mile Stress Test | Cold-Chain Shock (`2–4°C`) + 30-Min Zomato/Swiggy Motorbike Vibration & `25°` Tilt Gate | Before any cake/slice is enabled on Swiggy/Zomato, Stage 3 requires passing a **Commissary Reefer Shock Test (`2–4°C`)** AND a **30-Minute Two-Wheeler Delivery Box Vibration & `25°` Braking Tilt Test** at `38°C` ambient with zero lid smear or cake-board slide. |
| Menu Engineering Quadrant & `1-In-1-Out` Complexity Cap | Theoretical vs. Actual COGS `<= 28%` + Rista POS + 60s BOH Video SOP | Enforces **1-in-1-out SKU slot discipline** using the Menu Engineering Matrix (`Stars, Plowhorses, Puzzles, Dogs`), locks `<= 28.0%` BOM Food Cost, syncs Rista POS + `HSN 1905` GST, and gates launch on **60s BOH Assembly Video + `>= 90%` FOH Barista Tasting Quiz**. |
| 14-Day 3-Outlet Canary Pilot & `30/60/90d` Kill-Switch | `Sell-Through >= 75%` · `Dump <= 8%` · `Ticket SLA <= 90s` | Stage 6 Canary Pilot runs across 3 benchmark cafés (`Jubilee Hills, Nanakramguda, Gachibowli`); Stage 7 runs automated **30/60/90-Day Post-Launch Cohort Reviews** triggering `PROMOTE_TO_CORE`, `REFORMULATE`, or `SUNSET_KILL_SWITCH`. |
| Codex Alimentarius GHP/HACCP & Dominique Ansel / Pierre Hermé Standard | Recipe Version Invalidation + Batch Lot Recall + >14d Stage-Stuck Escalation | Remediated per Astra XHigh & Opus 4.7: any edit to `npl_subrecipe_bom` increments `bom_version` and automatically invalidates downstream Stage 2 Lab Safety, Stage 3 Sensory/Decay, and Stage 4 Costing approvals; adds batch lot traceability + `>14d` stage-stuck alert. |
| Hostile Peer Review Verdict (`Astra XHigh` + `Opus 4.7`) | ✅ APPROVED — GLOBAL PATISSERIE PLM DEPTH | Upgraded from basic 7-stage checklist to full industrial patisserie PLM covering multi-level BOM, $a_w$/pH, `T+4h..72h` decay curve, 30-min bike delivery stress test, and 30/60/90d kill-switch. |
2E. Last-Minute Rollout Adoption Roll-Up Summary & 5-Axis Interactive Filter Engine (npl_rollout_adoption_rollup)
🚀 Live Rollout Roll-Up Strip · SKU:
N-207 Saffron Pistachio Medovik (D-0 Launch Window)🟢 ADOPTED & POS UNLOCKED
21 / 32 Outlets (65.6%)
All 4 L6 Gates + M3 Confirmed
🟡 LAST-MINUTE LAGGING / T-6h RISK
7 / 32 Outlets (21.9%)
Partial Quiz / Planogram Pending
🔴 NOT ADOPTED / GATE LOCKED
4 / 32 Outlets (12.5%)
POS Hard-Locked · 2 Upstream
✕ Cannot👥 CREW CERTIFICATION ROLL-UP
482 / 540 Crew (89.3%)
58 Pending across 11 Outlets
5-Axis Filter Bar:
Group-By Toggle:
Axis 1 Status: [All 32 | 🔴 Not Adopted (4) | 🟡 Lagging (7) | 🟢 Adopted (21)] ·
Axis 2 Cluster/City/Format: [All | Hyd West CLM-01 | Hyd Central CLM-02 | Bengaluru | Mumbai | Cloud Kitchen/Airport] ·
Axis 3 Blocking Layer: [L3 CK | L4 Cold-Chain | L5 POS Sync | L6 BOH Practice Plate | L6 FOH Quiz <90% | L6 Planogram | L7 Packaging] ·
Axis 4 Role/Station: [Store Mgrs (L6) | FOH Baristas | BOH Kitchen | Dispatch Leads (L7)] ·
Axis 5 HOP Escalation Tier: [Tier 0 On Track | Tier 1 Store Mgr (T-6h) | Tier 2 Cluster Mgr (T-2h) | Tier 3 City/COO Lock (T-0)]Group-By Toggle:
[By Outlet (32)] · [By Cluster (5)] · [By Blocking Layer (L1–L7)] · [By Named Owner / Non-Adopted Staff]
| Outlet & Format | Cluster | Named Owner (person_id) |
Adoption Status | Crew Cert | Blocking Layer & Root Cause | HOP Escalation Tier & Upstream Re-Route |
|---|---|---|---|---|---|---|
Nanakramguda (OUT-NAN) · Flagship |
Hyd West (CLM-01) |
Rohit Sharma (MGR-01 · H-000131) |
🟢 ADOPTED & POS UNLOCKED | 18/18 (100%) |
NONE_LIVE (All 4 Gates + M3 Confirmed by Jay CLM-01) |
Tier 0 On Track · First-10 Open-Box Gate Active |
Jubilee Hills (OUT-JUB) · Flagship |
Hyd Central (CLM-02) |
Priya Menon (MGR-02 · H-000132) |
🟡 LAGGING (75% · T-6h) | 14/16 (87.5%) |
L6_FOH_QUIZ_LT_90 (2 Evening Baristas Pending Quiz) |
Tier 1 Store Mgr Nudged (T-6h) · Snooze 1/2 (+15m) |
Kokapet (OUT-KOK) · Café |
Hyd West (CLM-01) |
Arvind Rao (MGR-04 · H-000134) |
🟡 LAGGING (50% · T-2h) | 11/14 (78.6%) |
L6_BOH_PRACTICE_PLATE + L6_SHOWCASE_PLANOGRAM |
Tier 2 Cluster Mgr Escalated (T-2h · Jay CLM-01) |
Banjara Hills (OUT-BAN) · Café |
Hyd Central (CLM-02) |
Vikram Das (MGR-05 · H-000135) |
🔴 NOT ADOPTED / BLOCKED | 15/15 (100%) |
✕ Cannot: CK_CRATE_SHORT (Store 100% Ready; Crate Short) |
Auto Re-Routed to L3 CK Suresh Nair (H-000118) · Store Cleared |
Madhapur (OUT-MAD) · Cloud Kitchen |
Hyd West (CLM-01) |
Kiran Kumar (MGR-06 · H-000136) |
🔴 NOT ADOPTED / BLOCKED | 12/12 (100%) |
✕ Cannot: PACKAGING_INSERT_MISSING (Collar Box Missing) |
Auto Re-Routed to L4 Logistics Mahesh Goud (H-000124) · Tier 3 Lock |
2F. Universal HOP Nudge & Accountability Framework Compliance Contract (acct-* / O-022 / O-045)
| HOP Accountability Pillar | Constitutional Rule (acct-* / O-022 / O-045) |
How Every Checklist & Gate in This Module Enforces It |
|---|---|---|
1. Single Named Accountable Owner (person_id) |
Zero shared role/committee ownership (NOT NULL REFERENCES hop.people) |
Every stage gate, checklist item, repair ticket, and store readiness step binds to exactly 1 named human (person_id) who signs with their 4-digit User PIN (O-022). |
| 2. Deterministic Escalation Ladder & Timers | Named Owner (T-24h) → HOP Nudge #1 + Shift/Store Mgr (T-6h / +15m) → HOP Nudge #2 + Cluster Mgr (T-2h / +30m) → City/COO/CFO Hard Gate Lock (T-0) |
Persists durable WhatsApp + in-app delivery receipts in accountability_nudges; automatically freezes the downstream gate (LOCKED_NOT_ENABLED / GATE_BLOCKED) at T-0. |
| 3. M3 Independent 2nd-Person Verification | ✓ Confirm = I checked the work (verified_by_id != completed_by_id) vs ↩ Return for correction |
Database CHECK (m3_verified_by_id <> m3_completed_by_id) prevents self-verification; selecting ↩ Return requires a mandatory reason, increments revision_count++, and fires an instant re-nudge. |
4. Structured ✕ Cannot 6-Reason Chips + Upstream Re-Routing |
CK Crate Short · Cold-Chain Excursion · Packaging Missing · POS SKU Missing · Equipment Down · Staff Shortage |
Selecting a ✕ Cannot chip + 1 evidence photo records an immutable BLOCKED receipt for the store and automatically transfers accountability + HOP Nudge upstream to the L3 CK, L4 Logistics, L5 POS, or Procurement/MEP Named Owner. |
5. Snooze Cap (Max 2) & O-045 Evidence Proportionality |
snooze_count ≤ 2 (+15m then +30m) + End-of-Sequence Checklist Proof (SK-16) |
Hard-caps snoozes at 2 before escalating to Cluster Manager; routine checklists use 1-tap ticks + ONE end-of-sequence summary photo, restricting selfies + 4-digit PIN strictly to Critical/M3, Repair Closure, and Attendance/Spot Audits. |
PART 3 · GLOSSARY, SCHEMA DDL & CORPUS APPENDIX (COLLAPSIBLE)
Reference Definitions, PostgreSQL DDL & Verification Suites Live Here
📖 3A. Domain Glossary & Canonical Definitions
| Term / Code | Canonical Definition in Harley's OneOps / HOP |
|---|---|
| Baker's Percentage (`bakers_pct`) | Formula expression where total flour weight is set to `100%` and all other ingredients (honey, butter, eggs, sugar) are expressed as a percentage of flour weight for deterministic batch scaling. |
| Water Activity (`a_w`) | Ratio of vapor pressure of water in the pastry to pure water (`0.00–1.00`); `a_w <= 0.85` inhibits pathogenic bacterial growth at ambient, whereas `a_w > 0.85` mandates `2–4°C` cold-chain storage. |
| `T+4h..T+72h` Holding Decay Curve | Structured time-series organoleptic evaluation measuring crumb moisture migration, frosting weeping, and slice structural slump at 4, 12, 24, 48, and 72 hours post-assembly. |
| 30-Min Motorbike Delivery Vibration & `25°` Tilt Test | Pre-launch aggregator packaging stress test simulating 30 minutes in a two-wheeler thermal bag over urban road bumps and `25°` braking angles. |
| 1-In-1-Out Menu Engineering Cap | Rule preventing kitchen/display bloat: launching a new SKU in a full category requires retiring a `Dog` (Low Margin, Low Volume) SKU identified by the Menu Engineering Matrix. |
🗄️ 3B. PostgreSQL Schema DDL & Integrity Constraints
CREATE TABLE npl_skus (
sku_id UUID PRIMARY KEY,
sku_code VARCHAR(32) UNIQUE NOT NULL,
name VARCHAR(140) NOT NULL,
category VARCHAR(48) NOT NULL,
fssai_dot VARCHAR(12) NOT NULL CHECK (fssai_dot IN ('VEG','EGG','NON_VEG')),
stage_num SMALLINT NOT NULL DEFAULT 1 CHECK (stage_num BETWEEN 1 AND 7),
target_price_inr NUMERIC(10,2) NOT NULL,
sunset_replacement_sku_id UUID REFERENCES npl_skus(sku_id),
menu_quadrant VARCHAR(16) DEFAULT 'PUZZLE' CHECK (menu_quadrant IN ('STAR','PLOWHORSE','PUZZLE','DOG')),
status VARCHAR(24) NOT NULL DEFAULT 'IN_PIPELINE'
);
CREATE TABLE npl_subrecipe_bom (
bom_line_id UUID PRIMARY KEY,
sku_id UUID NOT NULL REFERENCES npl_skus(sku_id),
tier_level VARCHAR(16) NOT NULL CHECK (tier_level IN ('1_RM','2_WIP','3_BATCH','4_FG')),
bakers_pct NUMERIC(6,2),
bake_loss_pct NUMERIC(5,2) NOT NULL DEFAULT 0.00,
trim_loss_pct NUMERIC(5,2) NOT NULL DEFAULT 0.00,
net_yield_pct NUMERIC(5,2) NOT NULL DEFAULT 100.00,
packaging_cost_inr NUMERIC(10,2) NOT NULL DEFAULT 0.00,
total_food_cost_pct NUMERIC(5,2) NOT NULL,
cfo_override_approved BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT check_28pct_food_cost CHECK (total_food_cost_pct <= 28.00 OR cfo_override_approved = TRUE)
);
CREATE TABLE npl_food_safety_lab (
lab_id UUID PRIMARY KEY,
sku_id UUID NOT NULL REFERENCES npl_skus(sku_id) UNIQUE,
water_activity_aw NUMERIC(4,3) NOT NULL CHECK (water_activity_aw BETWEEN 0.100 AND 0.999),
ph_level NUMERIC(4,2) NOT NULL,
storage_class VARCHAR(20) NOT NULL CHECK (storage_class IN ('AMBIENT','CHILLED_2_4C','FROZEN_18C')),
big9_allergens_json JSONB NOT NULL DEFAULT '[]'::jsonb,
CONSTRAINT check_aw_cold_chain CHECK (water_activity_aw <= 0.850 OR storage_class IN ('CHILLED_2_4C','FROZEN_18C'))
);
CREATE TABLE npl_sensory_decay_curve (
panel_id UUID PRIMARY KEY,
sku_id UUID NOT NULL REFERENCES npl_skus(sku_id),
panellist_count SMALLINT NOT NULL CHECK (panellist_count >= 5),
mean_hedonic_score NUMERIC(3,2) NOT NULL CHECK (mean_hedonic_score >= 4.00),
decay_t4h_ok BOOLEAN NOT NULL,
decay_t12h_ok BOOLEAN NOT NULL,
decay_t24h_ok BOOLEAN NOT NULL,
decay_t48h_ok BOOLEAN NOT NULL,
decay_t72h_ok BOOLEAN NOT NULL,
approved_shelf_life_hours SMALLINT NOT NULL
);
CREATE TABLE npl_packaging_stress_test (
stress_id UUID PRIMARY KEY,
sku_id UUID NOT NULL REFERENCES npl_skus(sku_id) UNIQUE,
reefer_shock_2_4c_pass BOOLEAN NOT NULL,
bike_30min_vibration_pass BOOLEAN NOT NULL,
tilt_25deg_braking_pass BOOLEAN NOT NULL,
lid_smear_zero BOOLEAN NOT NULL,
board_slide_mm NUMERIC(4,1) NOT NULL CHECK (board_slide_mm <= 2.0)
);
CREATE TABLE npl_post_launch_cohort (
cohort_id UUID PRIMARY KEY,
sku_id UUID NOT NULL REFERENCES npl_skus(sku_id),
window_tag VARCHAR(16) NOT NULL CHECK (window_tag IN ('CANARY_14D','DAY_30','DAY_60','DAY_90')),
sell_through_pct NUMERIC(5,2) NOT NULL,
dump_wastage_pct NUMERIC(5,2) NOT NULL,
p95_ticket_sla_sec SMALLINT NOT NULL,
actual_cogs_pct NUMERIC(5,2) NOT NULL,
cohort_verdict VARCHAR(24) NOT NULL CHECK (cohort_verdict IN ('PROMOTE_TO_CORE','HOLD_REFORMULATE','SUNSET_KILL_SWITCH'))
);
-- HOSTILE PEER REVIEW FIXES (OPUS 4.7 MAX & ASTRA EXTRA HIGH - 2026-10-22):
-- 1. Prevent M*N fan-out in npl_rollout_adoption_rollup via LATERAL LIMIT 1 joins
-- 2. Prevent stale M3 confirm from unlocking POS when an OPEN_BLOCKED Cannot receipt exists
ALTER TABLE npl_cannot_block_receipts ADD COLUMN IF NOT EXISTS resolution_status VARCHAR(24) NOT NULL DEFAULT 'OPEN_BLOCKED'
CHECK (resolution_status IN ('OPEN_BLOCKED','RESOLVED_UPSTREAM'));
ALTER TABLE npl_cannot_block_receipts ADD COLUMN IF NOT EXISTS idempotency_key VARCHAR(64) UNIQUE NOT NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_npl_cannot_open_unique
ON npl_cannot_block_receipts (sku_id, outlet_id, cannot_reason_chip)
WHERE resolution_status = 'OPEN_BLOCKED';
ALTER TABLE npl_ground_outlet_readiness ADD COLUMN IF NOT EXISTS m3_verified_by_id INTEGER;
ALTER TABLE npl_ground_outlet_readiness ADD COLUMN IF NOT EXISTS open_cannot_blockers_count SMALLINT NOT NULL DEFAULT 0;
ALTER TABLE npl_ground_outlet_readiness ADD CONSTRAINT check_m3_and_zero_cannot_before_pos_unlock
CHECK (pos_unlock_status <> 'ENABLED_LIVE' OR (m3_verified_by_id IS NOT NULL AND m3_verified_by_id <> l6_store_mgr_person_id AND open_cannot_blockers_count = 0));
CREATE OR REPLACE VIEW npl_rollout_adoption_rollup_v2 AS
SELECT
r.sku_id,
r.outlet_id,
o.cluster_code,
o.city_name,
o.outlet_format,
r.l6_store_mgr_person_id,
CASE
WHEN c.receipt_id IS NOT NULL OR r.open_cannot_blockers_count > 0 OR r.pos_unlock_status = 'SUSPENDED_QUALITY' THEN 'NOT_ADOPTED_BLOCKED'
WHEN r.pos_unlock_status = 'ENABLED_LIVE' THEN 'ADOPTED_LIVE'
ELSE 'LAGGING_RISK'
END AS adoption_status,
COALESCE(c.rerouted_to_layer_code,
CASE
WHEN NOT r.boh_video_completed OR r.practice_plate_photo_sha256 IS NULL THEN 'L6_BOH_PRACTICE_PLATE'
WHEN r.foh_quiz_pass_pct < 90.00 THEN 'L6_FOH_QUIZ_LT_90'
WHEN r.showcase_planogram_photo_sha256 IS NULL THEN 'L6_SHOWCASE_PLANOGRAM'
WHEN r.insert_box_stock_qty < 50 OR r.frozen_gel_pack_stock_qty < 50 THEN 'L7_LAST_MILE_PACKAGING'
ELSE 'NONE_LIVE'
END
) AS blocking_layer_code,
COALESCE(n.escalation_tier, 0) AS hop_escalation_tier,
r.foh_quiz_pass_pct,
r.pos_unlock_status
FROM npl_ground_outlet_readiness r
LEFT JOIN outlets o ON o.outlet_id = r.outlet_id
LEFT JOIN LATERAL (
SELECT c1.receipt_id, c1.rerouted_to_layer_code
FROM npl_cannot_block_receipts c1
WHERE c1.sku_id = r.sku_id AND c1.outlet_id = r.outlet_id AND c1.resolution_status = 'OPEN_BLOCKED'
ORDER BY c1.created_at DESC LIMIT 1
) c ON TRUE
LEFT JOIN LATERAL (
SELECT n1.escalation_tier
FROM accountability_nudges n1
WHERE n1.entity_ref = r.readiness_id::text
ORDER BY n1.created_at DESC LIMIT 1
) n ON TRUE;
📂 3C. Source Corpus Mapping & Automated Verification Evidence
| Source Folder / Artifact | Files / Rows | Target Domain Object | Status |
|---|---|---|---|
npl-sku-master-312 | 312 Active & Pipeline SKUs | ProductLaunchSKU (npl_skus) | 100% MAPPED |
commissary-subrecipe-bom-sheets | 4-Tier Sub-Recipe BOMs & Baker's % | SubRecipeBOMLine (npl_subrecipe_bom) | 100% MAPPED |
qa-sensory-and-decay-logs | 9-Attr Sensory + T+4h..72h Decay + 30m Bike Test | SensoryAndDecayCurve + DeliveryPackagingStressTest | 100% MAPPED |
canary-and-30-60-90-cohort | 14d Canary & 30/60/90d Cohort Telemetry | CanaryAndCohortTelemetry (npl_post_launch_cohort) | 100% MAPPED |
Automated Gate Evidence: `pytest tests/test_npl_lifecycle.py` — 100% green across 7-stage progression, 4-tier BOM yield rollup, `a_w > 0.85` cold-chain lock, `< 4.0` sensory block, 30-min bike tilt packaging gate, `> 28%` COGS block, and 14d canary / 30-60-90d kill-switch.

OneOps