🏖 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).← Back to Oven Command
INTAKE-DESIGN-T1-10-NPL-LIFECYCLE.md
# New Product Launch (NPL) 7-Stage Patisserie & Beverage Lifecycle (`STOP 3 · T1-10 · STAGE-GATE® PLM · 312 SKUs`)
> **Harley's Executive 2-Page Readout (0.5p Summary + 1.5p Full Design + Collapsible Glossary)** · **✅ Peer-Reviewed by Astra Extra High (`gpt-6-astra xhigh`) + Claude Opus 4.7 Extra High** · ✅ Peer-Reviewed (Astra XHigh + Opus 4.7) · Multi-Level Sub-Recipe BOM · a_w/pH & Big-9 Allergens · T+4h..72h Decay Curve · 30m Zomato/Swiggy Bike Stress Test · <=28% COGS · 14d Canary & 30/60/90d Kill-Switch
> **🔒 100% INTAKE & DESIGN GATES LOCKED BY OWNER (`App 0 -> App 6` · `2026-10-22 22:44 IST` — Ratified by `cfo@harleys.com`) · `G1 DESIGN GATE LOCKED & SIGNED OFF BY OWNER (2026-10-22 22:39 IST)` · STEP 2 & 3 BUILD EXECUTION ACTIVE (`App 0 ∥ App 1a -> App 1b -> App 2 -> Apps 3..6`)**
> - **`A1` (`R1` · `App 0 -> App 8` Finalization Sequence — LOCKED):** `App 0 (Shell, Sticky Filters FV-1..12, Bot O-048, CI/CD TC-1..14, Enablement EN-01..19) ∥ App 1a (Identity Spine SP0+SP1: hop.people, user_assignments, master_data_holders, 10 departments)` → `App 1b (People & HR Importer)` → `App 2 (Daily Store Ops, Kiosk & Outlet Summary OS-1..7)` → `App 3 (Legal & Compliance)` → `App 4 (Fixed Assets & Maint)` → `App 5 (Café Projects)` → `App 6 (7-Stage NPL)` → `App 7 (Cross-App UAT Gate)` → `App 8 (Post-Pilot Wave)`.
> - **`A2` (`BS-04 & BS-07` · Shift Swaps, Inter-Outlet Loans & Outlet Master Fields — LOCKED WITH OWNER REFINEMENT):** **"Outlet Manager / Cluster Manager should approve with visibility to City Head"** — Both intra-outlet shift swaps (`staff_shift_rosters`) and inter-outlet crew loans (`staff_inter_outlet_loans`) are approved by **Outlet Manager OR Cluster Manager (`approved_by_role IN ('outlet_manager', 'cluster_manager')`)**, and every approval automatically grants visibility and emits an audit-trail feed notification (`city_head_notified_at TIMESTAMPTZ`) to the **City Head (`city_head`)**. Locks all 12 core `outlets` master fields (`BS-07`).
> - **`A3` (`OV-6 & AD-1..4` · Multi-Outlet Team Rollup Scope — LOCKED):** Aggregate team follow-through counts and outlet rollups (`My Team AD-1..4`) are visible above Outlet Manager (`Cluster Manager`, `City Head`, `HOD`), with **zero individual employee stack-ranking leaderboards** (`Principle #3: Accountability without blame`).
> - **`A4` (`SK-14 / N-11 / OA-06 / OA-07` · Named Reviewers & Template Owners — LOCKED):** Seeds `hindi_reviewer`, `quality_reviewer`, `restricted_item_owner` (`OA-06`), and `fitout_template_owner` (`OA-07`) as configurable role slots inside `master_data_holders` so named individuals can be assigned/updated in the UI without blocking build.
> - **All Remaining App Pillars Combined Intake + Design Gates Locked (`22:44 IST`):** **(1) `App 0` Locked** (`FV-1..12` Sticky 5-Filter Set `Period, Cities, Type, Outlet, Brand`, Left-Rail Foot `Filters` + `280px` Docked Pane, Role-Published Views `R15`, `O-048` 7-Context Sticky Bot Chips); **(2) `App 3` (`Stop 1` Compliance) Locked** (Standalone 4-Pillar Legal App + Embedded `60s` Outlet-Only Inspector Mode hiding leases/litigation, `60/30/14/7d` Expiry Alerts `DF-4`, Masked Licence Numbers `CM-1`, ClamAV `'PENDING'`-default S3 Vault `CM-2`); **(3) `App 4 & App 5` (`Stop 2` Assets, Maintenance & Café Projects) Locked** (`1,982` QR Fixed Assets, `>40% WDV` Repair-vs-Replace CFO Gate, 6-State Maintenance with 2nd-Person Store Operator Verify, 9-Gate Café Projects NSO with `Water TDS <= 80ppm` Boiler Gate, 4-Photo Site GRN & Gate 6 Auto-Asset Minting); **(4) `App 6` (`Stop 3` 7-Stage NPL) Locked** (`L1..L7` single named owner per gate, CK `<=90m` Blast Chill & Probe `<=+5°C` Cold-Chain Gate, First-10-Orders Open-Box Rider Gate, 5-Axis Rollout Adoption Roll-Up, Stage 7 `30/60/90d` Margin Kill/Keep Gate).
---
## PART 1 · EXECUTIVE SUMMARY (0.5 PAGE)
### 1A. 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`)**.
### 1B. 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.
### 1C. Owner Sign-Off Decisions Required
- [x] 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.
- [x] 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.
- [x] 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.
- [x] 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**.
### 1D. Direct Navigation & Live Pre-Signed-In Routes
- [📋 Jump to Part 2: Full Intake, Domain Design & Industry Benchmarks](#part-2--full-intake--domain-object-design-15-pages) | [📖 Jump to Part 3: Glossary, DDL & Corpus Appendix](#part-3--glossary-schema-ddl--corpus-appendix)
- 🟢 **Local :8000 NPL 7-Stage Console**: `http://localhost:8000/admin/npl`
- 🟢 **Local :8000 NPL JSON API**: `http://localhost:8000/api/npl/summary`
- 🟢 **Staging HOP NPL Console**: `https://test.hop.harleys.com/admin/npl`
---
## PART 2 · FULL INTAKE & DOMAIN OBJECT DESIGN (1.5 PAGES)
### 2A. Core User Journeys & Functional Intake Rules
| Journey / Flow | Actor & 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
```text
[Stage 1: Concept + 1-in-1-out Slot] --> [Stage 2: 4-Tier Sub-Recipe BOM + Baker's % + a_w/pH + Big-9 Allergens]
--> [Stage 3: 9-Attr Blind Panel (>=4.0) + T+4h..72h Decay Curve + 30m Zomato/Swiggy Bike Tilt Test]
--> [Stage 4: <=28% COGS + Box/Gel-Pack Lock] --> [Stage 5: Rista POS + HSN/GST + 60s Video SOP + FOH Quiz]
--> [Stage 6: 14d 3-Outlet Canary (Sell-Through >=75%, Dump <=8%, SLA <=90s)] --> [Stage 7: 30/60/90d Cohort Gate / Kill-Switch]
```
| Domain Object (`Table`) | Primary Key & Scope | Key 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`)**: <code>1_CONCEPT_SLOT</code> → <code>2_BOM_AND_LAB_SAFETY</code> → <code>3_SENSORY_DECAY_AND_BIKE_TEST</code> → <code>4_COGS_28PCT_LOCK</code> → <code>5_POS_AND_VIDEO_SOP</code> → <code>6_CANARY_14D_PILOT</code> → <code>7_NATIONAL_OR_SUNSET</code>
- **4-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 (`Astra Extra High` + `Opus 4.7 Extra High`)
| Global 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 Filter Engine (`npl_rollout_adoption_rollup`)
- **Top Executive Roll-Up KPI Strip (`SKU: N-207 Saffron Pistachio Medovik · D-0 Rollout`):**
- `🟢 Adopted & POS Unlocked: 21 / 32 Outlets (65.6%)`
- `🟡 Last-Minute Lagging / T-6h Risk: 7 / 32 Outlets (21.9%)`
- `🔴 Not Adopted / Gate Locked: 4 / 32 Outlets (12.5%)`
- `👥 Crew Certification Roll-Up: 482 / 540 Crew Certified (89.3% · 58 Pending across 11 Stores)`
- `🔔 [1-Tap Batch HOP Nudge to All 11 Non-Adopted / Lagging Named Owners]`
- **5-Axis Interactive Filter & 4-Mode Group-By Matrix:**
1. **Axis 1 — Adoption Status:** `All (32)` | `🔴 Not Adopted / Blocked (4)` | `🟡 Lagging <100% (7)` | `🟢 Adopted & Live (21)`
2. **Axis 2 — Cluster / City / Format:** `All` | `Hyd West (CLM-01)` | `Hyd Central (CLM-02)` | `Bengaluru` | `Mumbai` | `Cloud Kitchens / Airport`
3. **Axis 3 — Blocking Layer (`L1–L7`):** `L3 CK Production` | `L4 Cold-Chain Transit` | `L5 POS/Swiggy Sync` | `L6 BOH Video+Practice Plate` | `L6 FOH Quiz (<90%)` | `L6 Showcase Planogram` | `L7 Last-Mile Packaging`
4. **Axis 4 — Role / Station:** `Store Managers (L6)` | `FOH Baristas` | `BOH Kitchen` | `Last-Mile Dispatch Leads (L7)`
5. **Axis 5 — HOP Escalation Tier:** `Tier 0 On Track` | `Tier 1 Store Mgr Nudged (T-6h)` | `Tier 2 Cluster Mgr Escalated (T-2h)` | `Tier 3 City/COO Launch Lock (T-0)`
- **Group-By Toggle:** `By Outlet (32)` | `By Cluster (5)` | `By Blocking Layer (L1–L7)` | `By Named Owner / Non-Adopted Staff`
| Outlet / Scope | Cluster & Format | Named Owner (`person_id`) | Adoption Status | Crew Cert (`FOH/BOH`) | Blocking Layer & Reason | HOP Escalation Tier & Action |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| **Nanakramguda (`OUT-NAN`)** | Hyd West (`CLM-01`) · Flagship | Rohit Sharma (`MGR-01 · H-000131`) | `🟢 ADOPTED & POS UNLOCKED` | `18/18 (100%)` | `NONE_LIVE` (All 4 Gates + M3 Confirmed) | `Tier 0 On Track` · First-10 Pack Gate Active |
| **Jubilee Hills (`OUT-JUB`)** | Hyd Central (`CLM-02`) · Flagship | Priya Menon (`MGR-02 · H-000132`) | `🟡 LAGGING (75% · T-6h Risk)` | `14/16 (87.5%)` | `L6_FOH_QUIZ_LT_90` (2 Evening Baristas Pending) | `Tier 1 Store Mgr Nudged (T-6h)` · Snooze `1/2` |
| **Kokapet (`OUT-KOK`)** | Hyd West (`CLM-01`) · Café | Arvind Rao (`MGR-04 · H-000134`) | `🟡 LAGGING (50% · T-2h Risk)` | `11/14 (78.6%)` | `L6_BOH_PRACTICE_PLATE` + `L6_SHOWCASE_PLANOGRAM` | `Tier 2 Cluster Mgr Escalated (T-2h · CLM-01)` |
| **Banjara Hills (`OUT-BAN`)** | Hyd Central (`CLM-02`) · Café | Vikram Das (`MGR-05 · H-000135`) | `🔴 NOT ADOPTED / BLOCKED` | `15/15 (100%)` | `✕ Cannot: CK_CRATE_SHORT` -> **Re-routed to `L3 CK` Suresh Nair (`H-000118`)** | `Tier 2 Upstream Escalated` · Store Cleared of Blame |
| **Madhapur (`OUT-MAD`)** | Hyd West (`CLM-01`) · Cloud Kitchen | Kiran Kumar (`MGR-06 · H-000136`) | `🔴 NOT ADOPTED / BLOCKED` | `12/12 (100%)` | `✕ Cannot: PACKAGING_INSERT_MISSING` -> **Re-routed to `L4 Logistics` Mahesh Goud (`H-000124`)** | `Tier 3 COO Launch Lock (T-0)` · Urgent Van Dispatched |
### 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 Head / 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 frontline operator 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
<details>
<summary><strong>📖 3A. Domain Glossary & Canonical Definitions (Click to Expand)</strong></summary>
| 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. |
</details>
<details>
<summary><strong>🗄️ 3B. PostgreSQL Schema DDL & Constraints (Click to Expand)</strong></summary>
```sql
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;
```
</details>
<details>
<summary><strong>📂 3C. Source Corpus Mapping & Automated Verification Suite (Click to Expand)</strong></summary>
| Source Folder / Artifact | Files / Rows | Target Domain Object | Gate 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** |
**Verification 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.
</details>

OneOps