# 2026-05-09 — TIP FS.com Numeric SKU Alias Quarantine ## Problem FS.com pages expose two identifiers: - marketplace SKU, for example `FS-380881` - real optical product P/N, for example `OSFP-DR8-1.6T-FL` Older scraper passes created active duplicate rows for both. This polluted equivalence research because numeric SKU rows looked like separate transceivers. The user-reported 1.6T case confirmed the issue: - `FS-380881` is the numeric SKU alias for `OSFP-DR8-1.6T-FL` (500m) - `FS-380883` is the numeric SKU alias for `OSFP-2FR4-1.6T-FL` (2km) - both real product P/N rows must remain in TIP - the numeric aliases must not be treated as independent products ## Change Added `packages/scraper/src/utils/quarantine-fs-sku-aliases.ts`. Script: ```bash pnpm -C packages/scraper run verify:fs:sku-aliases ``` Apply mode: ```bash FS_SKU_ALIAS_APPLY=1 pnpm -C packages/scraper run verify:fs:sku-aliases ``` ## Safety Gates A row is quarantined only when: - vendor is `FS.COM` - part number matches `^FS-[0-9]+$` - the same normalized FS product URL has a canonical non-numeric product P/N row - the canonical row already has price, image, and details verified The robot sets the numeric alias row to `category='NonTransceiver'`, clears verification flags, and writes `artifact_quarantine` evidence. ## Live Result On Erik: - dry-run found `109` candidates - apply quarantined `109` - evidence ledger wrote `109` `artifact_quarantine` records - active numeric-SKU duplicates with canonical product row after run: `0` Post-run reconcile and matcher completed. Live health after cleanup: - active products: `17305` - price verified: `11414` - image verified: `12016` - details verified: `16705` - fully verified: `10448` - competitor status: - `matched=10775` - `no_valid_match=73` - `ambiguous=192` - `needs_research=6265` Fully populated products still needing competitor research: - `Flexoptix=359` - `FS.COM=4` - `ATGBICS=2` FS.com and Flexoptix no-valid-match dry-runs now both return `0`, so the remaining rows need true candidate research or normalization, not blind no-match closure.