=== Report 1: Monthly volume of stock_adjustments table entries, 2025 (written by Bea) === Engineer's note: Grouped by created_at (no occurred_at on stock_adjustments), as specified in the request. REPORT: Monthly volume of stock_adjustments table entries, 2025 QUESTION: Does the stock_adjustments table show a steady, roughly even pattern across 2025 (like the cycle_count movement stream it appears to feed), or does it also cluster at year-end like the stock_movements kind='adjustment' ledger? month | adjustment_count | total_abs_quantity_delta | net_quantity_delta | distinct_variants_affected | avg_abs_quantity_delta --------+------------------+--------------------------+--------------------+----------------------------+----------------------- 2025-01 | 764 | 764 | -256 | 760 | 1.0 2025-02 | 760 | 760 | -270 | 755 | 1.0 2025-03 | 822 | 822 | -336 | 818 | 1.0 2025-04 | 783 | 783 | -259 | 780 | 1.0 2025-05 | 854 | 854 | -358 | 850 | 1.0 2025-06 | 818 | 818 | -266 | 812 | 1.0 2025-07 | 849 | 849 | -311 | 842 | 1.0 2025-08 | 865 | 865 | -311 | 857 | 1.0 2025-09 | 875 | 875 | -341 | 867 | 1.0 2025-10 | 941 | 941 | -393 | 933 | 1.0 2025-11 | 917 | 917 | -383 | 909 | 1.0 2025-12 | 946 | 946 | -396 | 938 | 1.0 (12 rows) === Report 2: Which merchants drove the December 31 bulk stock correction (written by Felix) === Engineer's note: Grain is one row per tenant with any 2025 kind='adjustment' stock_movements event (expected well under 50 rows, so no row cap applied). Estimated value costs each event's absolute units at the variant's preferred supplier unit_cost, converted to EUR via the exchange_rates row for that exact occurred_at date (weekend dates already carry forward the prior business-day rate per the catalog); events for variants with no preferred-supplier cost on record contribute 0 to estimated_value_eur but still count toward adjustment_events/units. I didn't have the exact prior-report costing/FX logic to match against, so please confirm this approximation is consistent with it. REPORT: Which merchants drove the December 31 bulk stock correction QUESTION: The 407 stock_movements kind='adjustment' events (nearly all on 2025-12-31) appeared, in the top-30 detail, to be entirely B2B wholesale merchants (office equipment / industrial supplies) — is that concentration total, or do other merchants/verticals also appear further down the list? tenant_name | industry | adjustment_events | abs_units_variance | net_units_variance | estimated_value_eur | share_of_total_value_pct ------------------------------+---------------------------+-------------------+--------------------+--------------------+---------------------+------------------------- Deskline Supplies | Office Supplies (B2B) | 17 | 288 | 288 | 30530.59 | 35.62 OfficeHub Nordic | Office Supplies (B2B) | 29 | 429 | 429 | 21346.34 | 24.9 Castell Fasteners | Industrial Supplies (B2B) | 28 | 704 | 704 | 11650.17 | 13.59 Hanse Industriebedarf | Industrial Supplies (B2B) | 20 | 458 | 458 | 10935.72 | 12.76 Midland Safety Wear | Industrial Supplies (B2B) | 16 | 440 | 440 | 6398.18 | 7.46 Ballycorran Industrial Supply | Industrial Supplies (B2B) | 58 | 1058 | 1058 | 2099.86 | 2.45 Polder Packaging | Industrial Supplies (B2B) | 8 | 134 | 134 | 580.01 | 0.68 Marrowby & Vane | Apparel & Footwear | 20 | 30 | 30 | 427.23 | 0.5 Cragsley Outfitters | Apparel & Footwear | 34 | 45 | 45 | 408.69 | 0.48 Fennel & Flint | Home & Living | 9 | 12 | 10 | 293.09 | 0.34 Kontor24 Bürobedarf | Office Supplies (B2B) | 25 | 285 | 285 | 191.03 | 0.22 Basecamp Nord | Sports & Outdoor | 2 | 2 | 2 | 106.64 | 0.12 Willow & Wren | Home & Living | 3 | 6 | 6 | 84.27 | 0.1 Grind Collective | Food & Coffee | 5 | 8 | 8 | 74.27 | 0.09 Sourdough Club | Food & Coffee | 5 | 8 | 8 | 68.56 | 0.08 Kibblewick | Pet Supplies | 3 | 5 | 5 | 48.77 | 0.06 Honeycomb Larder | Food & Coffee | 3 | 6 | 6 | 40.79 | 0.05 Maison Clair | Apparel & Footwear | 1 | 1 | 1 | 38.5 | 0.04 Purrfect Pantry | Pet Supplies | 3 | 4 | 4 | 34.02 | 0.04 Buchstabe | Books & Stationery | 3 | 4 | 4 | 31.47 | 0.04 Linden & Loom | Home & Living | 6 | 8 | 8 | 29.59 | 0.03 Saffron & Sage | Beauty | 2 | 2 | 2 | 26.01 | 0.03 Cinder Peak Sports Co. | Sports & Outdoor | 2 | 3 | 3 | 25.67 | 0.03 Brennquell Kaffee | Food & Coffee | 27 | 34 | 34 | 23.52 | 0.03 Oakhurst Tailoring | Apparel & Footwear | 2 | 2 | 2 | 22.72 | 0.03 Hus & Hem | Home & Living | 1 | 1 | 1 | 21.9 | 0.03 Rue Lafayette Studio | Apparel & Footwear | 3 | 3 | 3 | 20.37 | 0.02 Studio Vrij | Apparel & Footwear | 9 | 11 | 11 | 19.74 | 0.02 Nordic Bloom Cosmetics | Beauty | 3 | 3 | 3 | 15.35 | 0.02 Kaffeekontor Nord | Food & Coffee | 1 | 2 | 2 | 15.32 | 0.02 Wohnglück | Home & Living | 3 | 3 | 3 | 15.1 | 0.02 Juniper Apothecary | Beauty | 4 | 4 | 4 | 15.05 | 0.02 The Balm Room | Beauty | 2 | 2 | 2 | 12.38 | 0.01 Petalcourt Beauty | Beauty | 3 | 3 | 3 | 12.0 | 0.01 Kayak Corner | Sports & Outdoor | 2 | 2 | 2 | 11.76 | 0.01 Gratlinie Outdoor | Sports & Outdoor | 3 | 5 | 5 | 11.4 | 0.01 Coastline Interiors | Home & Living | 1 | 1 | 1 | 10.33 | 0.01 Feather & Fin | Pet Supplies | 1 | 1 | 1 | 6.1 | 0.01 Rosehip Lab | Beauty | 1 | 1 | 1 | 4.26 | 0.0 Velvet Ash | Apparel & Footwear | 3 | 4 | 4 | 4.15 | 0.0 Tail Wag Supply | Pet Supplies | 1 | 1 | 1 | 3.81 | 0.0 Folio & Fern | Books & Stationery | 2 | 3 | 3 | 3.37 | 0.0 Ostwind Mode | Apparel & Footwear | 2 | 2 | 2 | 3.03 | 0.0 Ampere & Co. | Consumer Electronics | 1 | 1 | 1 | 0.0 | 0.0 Ampfeld Elektronik | Consumer Electronics | 5 | 8 | 8 | 0.0 | 0.0 Atelier Nouveau | Apparel & Footwear | 1 | 1 | 1 | 0.0 | 0.0 Bijoux Lune | Jewelry & Accessories | 2 | 2 | 2 | 0.0 | 0.0 Chocolaterie Mireille | Food & Coffee | 1 | 2 | 2 | 0.0 | 0.0 Hautnah | Beauty | 1 | 1 | 1 | 0.0 | 0.0 Hound Hamper | Pet Supplies | 2 | 2 | 2 | 0.0 | 0.0 (59 rows, first 50 printed) === Report 3: Reasons behind routine stock_adjustments entries, 2025 (written by Felix) === Engineer's note: "Routine, single-unit, year-round" entries were interpreted as rows where ABS(quantity_delta)=1 (the one-unit-at-a-time stream that would feed cycle_count movements); other adjustment sizes (bulk corrections, etc.) are excluded. Grouped by the exact reason string with no bucketing, as requested; if the result hits the 50-row cap the true distinct-reason count is higher and worth a follow-up. REPORT: Reasons behind routine stock_adjustments entries, 2025 QUESTION: What reasons are recorded against the routine, year-round, single-unit stock_adjustments entries (the stream that appears to feed the cycle_count movements) — is it mostly shrinkage/loss language, or a mix of loss and found-stock reasons, and does the mix matter for sizing a shrinkage provision? reason | event_count | pct_of_total_events | net_quantity_delta | total_abs_quantity_delta | avg_abs_quantity_delta -----------------------------------------+-------------+---------------------+--------------------+--------------------------+----------------------- Cycle count variance | 4940 | 48.5 | 1374 | 4940 | 1.0 Missing - suspected theft | 1781 | 17.5 | -1781 | 1781 | 1.0 Damaged in warehouse | 1755 | 17.2 | -1755 | 1755 | 1.0 Expired | 1717 | 16.8 | -1717 | 1717 | 1.0 Recall: defective lot returned to suppli | 1 | 0.0 | -1 | 1 | 1.0 (5 rows)