Skip to content

fix(data): resolve 170 more smartphone brand-prefix conflicts - #334

Merged
Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/smartphone-prefix-conflicts-2
Sep 29, 2026
Merged

Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/smartphone-prefix-conflicts-2

Conversation

@Seungpyo1007

@Seungpyo1007 Seungpyo1007 commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Continues the smartphone brand-prefix dedup from #329 (50 pairs) and #330 (364
pairs). Those left a residual of 353 pairs. This resolves 170 of them,
each source-verified, and explicitly un-pairs 3 that turned out to be genuinely
different devices sharing a base slug.

Resolved and merged: 170

1. 37 vendor/Wikipedia-sourced same-chip pairs. Same device, same physical chip
(soc slugs differ only in spelling — qualcomm-msm8974-snapdragon-800 vs
snapdragon-800, hisilicon-kirin-980 vs kirin-980), battery/weight/ram already
matching. Unlike the phonedb twins in #330, the twin here cites Wikipedia or a
vendor page, so its specific release_date is reliable and was adopted over the
bare side's generic YYYY-01-01 (spot-checked: Huawei P30 Pro 2019-03-26 =
GSMArena; LG G2 September 2013 = Wikipedia). Kept the canonical bare slug, unioned
source_urls, set verified=true only where the twin was a vendor/Wikipedia source.

2. 7 same-model pairs whose two sides named different chips — verified which chip
is correct against a cited source, fixed the soc, merged:

  • Oppo Find X8 Pro → dimensity-9400 (oppo.com launch; GSMArena)
  • Motorola Edge 50 Ultra → snapdragon-8s-gen-3 (motorola.com; phonearena)
  • Honor Magic V3 → snapdragon-8-gen-3 (phonearena SM8650-AB; honor.com)
  • OnePlus Nord CE 2 Lite (SD 695), Nord CE 2 (Dimensity 900), Sony Xperia Z
    (APQ8064 S4 Pro), Honor Magic V2 (SD 8 Gen 2) — the bare side already held the
    correct chip; merged with GSMArena/vendor citation.

3. 126 pairs where the soc slugs are the same chip via a spelling variant, or one
side's soc was a vague descriptor (dual-core 1.0 GHz, <brand> mobile platform,
n-a) while the twin named the specific FK-valid part. Kept the GSMArena bare
record, adopted the specific soc when the keeper's was vague, rejected the phonedb
stamped placeholders (weight 150.0 / battery 1500), left the unreliable phonedb
dates alone, unioned source_urls, deleted the twin.

Confirmed different devices — un-paired (left as separate records, no merge): 3

  • HTC one-m9: holds the One M9+ (Helio X10) vs the One M9 (Snapdragon 810).
  • Motorola razr: the 2023 Razr (SD 8+ Gen 1) vs the 2019 Razr (SD 710).
  • Sony xperia-z3: the Xperia Z3+ (SD 810) vs the Xperia Z3 (SD 801).

Counts

  • resolved-and-merged: 170
  • confirmed-different-devices-not-duplicates: 3 (un-paired)
  • still-unresolved-no-source: 180 — 21 same-model pairs whose correct chip I
    couldn't source this round (includes Huawei P50 Pro, which genuinely shipped both
    Kirin 9000 and Snapdragon 888 SKUs — a real dual-chipset model), 157 pairs needing
    a per-record ram/weight/battery source, and 2 odd/other pairs. Left documented
    rather than guessed, per the "never invent a value" rule.

Validation

  • python -m app.validate → passed.
  • integrity_check.py <data> --strict → no hard anomalies.
  • 92,824 smartphone files (−170), zero duplicate slugs. Dump refreshed in the last
    commit (removes the 170 deleted twin slugs, reconciles score percentiles).

Closes #296

Continues the brand-prefix dedup from #329/#330. Those resolved 414 pairs and
carried forward a residual of 353. This resolves 170 of that residual, source-
verified, and explicitly un-pairs 3 that are genuinely different devices.

Three sub-slices resolved (Refs #296):

1. 37 vendor/Wikipedia-sourced same-chip pairs. Same device, same physical chip
   (soc slugs differ only in spelling, e.g. `qualcomm-msm8974-snapdragon-800` vs
   `snapdragon-800`, `hisilicon-kirin-980` vs `kirin-980`), with battery/weight/ram
   already matching. Unlike the phonedb twins in #330, the twin here carries a
   Wikipedia or vendor page as its source, so its specific release_date is reliable
   and was adopted over the bare side's generic YYYY-01-01 placeholder (spot-checked:
   Huawei P30 Pro 2019-03-26 = GSMArena; LG G2 September 2013 = Wikipedia). Kept the
   canonical bare slug, unioned source_urls, set verified=true only where the twin
   was a vendor/Wikipedia source.

2. 7 same-model pairs whose two sides named different chips — verified against a
   cited source which side is correct, fixed the soc, then merged:
   - Oppo Find X8 Pro -> Dimensity 9400 (oppo.com launch; GSMArena)
   - Motorola Edge 50 Ultra -> Snapdragon 8s Gen 3 (motorola.com; phonearena)
   - Honor Magic V3 -> Snapdragon 8 Gen 3 (phonearena SM8650-AB; honor.com)
   - OnePlus Nord CE 2 Lite (Snapdragon 695), Nord CE 2 (Dimensity 900),
     Sony Xperia Z (APQ8064 S4 Pro), Honor Magic V2 (Snapdragon 8 Gen 2) —
     the bare side already held the correct chip; merged and cited GSMArena/vendor.

3. 126 pairs where the soc slugs are the same physical chip via a spelling variant,
   or one side's soc was a vague descriptor (`dual-core 1.0 GHz`, `<brand> mobile
   platform`, `n-a`) and the twin named the specific FK-valid part. Kept the
   GSMArena (bare) record, adopted the specific soc when the keeper's was vague,
   rejected the phonedb stamped placeholders (weight 150.0 / battery 1500), left the
   (unreliable) phonedb dates alone, unioned source_urls, deleted the twin.

Un-paired as genuinely different devices (left as separate records, no merge):
- HTC: `one-m9` holds the One M9+ (Helio X10) vs the One M9 (Snapdragon 810).
- Motorola: `razr` holds the 2023 Razr (SD 8+ Gen 1) vs the 2019 Razr (SD 710).
- Sony: `xperia-z3` holds the Xperia Z3+ (SD 810) vs the Xperia Z3 (SD 801).

No value invented; every repaired field cites its evidence URL in source_urls.
Left unresolved for a later pass (documented on #296): 21 same-model pairs whose
correct chip I could not source this round (includes the Huawei P50 Pro, which
genuinely shipped both Kirin 9000 and Snapdragon 888 SKUs), 157 pairs needing a
per-record ram/weight/battery source, and 2 odd/other pairs.

Both gates pass: `python -m app.validate` and `integrity_check.py <data> --strict`
(0 hard anomalies).

Refs #296
…flicts

Regenerates site/public/v1 from the current data with no re-scrape
(python -m app.dump). Removes the 170 deleted twin slugs and reconciles score
percentiles. `app.validate` passes on the dumped tree.
@TechEngineBot

Copy link
Copy Markdown
Member

🔎 Data verification — Tier 0 (offline existence/trust)

Scored by app.verify; posted by TechEngineBot. Informational only — the structural gate (app.validate) is separate and authoritative for merge.

12/12 categories ? 191,176 records ? diff base develop@ea3f31e

Changed records in this PR

170 record(s) assessed.

%%{init: {"theme":"base","themeVariables":{"pie1":"#3fb950","pie2":"#d29922","pie3":"#f85149","pieStrokeWidth":"0px","pieOpacity":"1"}}}%%
pie showData
    title Verification bands — all records
    "Green" : 148
    "Yellow" : 22
    "Red" : 0
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
smartphone 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨 170 148 22 0 87.1%
All 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨 170 148 22 0 87.1%

Full-dataset baseline

191176 record(s) assessed.

%%{init: {"theme":"base","themeVariables":{"pie1":"#3fb950","pie2":"#d29922","pie3":"#f85149","pieStrokeWidth":"0px","pieOpacity":"1"}}}%%
pie showData
    title Verification bands — all records
    "Green" : 33027
    "Yellow" : 157096
    "Red" : 1053
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 207 122 85 0 58.9%
soc 🟩🟩🟨🟨🟨🟨🟨🟥🟥🟥🟥🟥 2117 284 837 996 13.4%
smartphone 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 92824 18137 74634 53 19.5%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3305 289 3015 1 8.7%
watch 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟥 418 93 323 2 22.2%
pda 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 140 83 57 0 59.3%
gpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 2083 1536 547 0 73.7%
cpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟥 4628 4337 290 1 93.7%
laptop 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 1995 107 1888 0 5.4%
monitor 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 882 0 882 0 0.0%
software 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 42493 366 42127 0 0.9%
website 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 40084 7673 32411 0 19.1%
All 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 191176 33027 157096 1053 17.3%

Hard violations (forced red):

Count Check
1 !boost_ge_base

green = authoritative source + complete + consistent · yellow = plausible, needs confirmation · red = sparse/weak source or a hard contradiction. Promotion to verified runs in the scheduled verify-network workflow.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine change review: PASS

12/12 categories ? 191,176 records ? diff base develop@ea3f31e

Check Result
python -m app.validate PASS
Changed dump JSON and manifest/index counts PASS
New hard integrity anomalies vs PR base PASS

Changed data

Category Added Modified Deleted Added verified Added unverified Added Kaggle-sourced
brand 0 0 0 0 0 0
soc 0 0 0 0 0 0
smartphone 0 170 170 0 0 0
tablet 0 0 0 0 0 0
watch 0 0 0 0 0 0
pda 0 0 0 0 0 0
gpu 0 0 0 0 0 0
cpu 0 0 0 0 0 0
laptop 0 0 0 0 0 0
monitor 0 0 0 0 0 0
software 0 0 0 0 0 0
website 0 0 0 0 0 0

Changed record examples

smartphone modified

  • smartphone/acer/2010/betouch-e110.json - Acer beTouch E110
  • smartphone/amoi/2007/e76.json - Amoi E76
  • smartphone/amoi/2007/e78.json - Amoi E78
  • smartphone/asus/2006/p525.json - Asus P525
  • smartphone/asus/2006/p535.json - Asus P535
  • smartphone/asus/2007/p735.json - Asus P735
  • smartphone/asus/2008/p552w.json - Asus P552w
  • smartphone/asus/2008/p565.json - Asus P565
  • smartphone/asus/2011/e600.json - Asus E600
  • smartphone/benq/2004/p31.json - BenQ P31
  • smartphone/dell/2009/mini-3i.json - Dell Mini 3i
  • smartphone/dell/2009/mini-3ix.json - Dell Mini 3iX
  • smartphone/dell/2010/aero.json - Dell Aero
  • smartphone/gionee/2014/gpad-g4.json - GiONEE GPAD G4
  • smartphone/honor/2019/play-3e.json - Honor Play 3e
  • ... 155 more

smartphone deleted

  • smartphone/acer/2010/acer-betouch-e110.json - Acer beTouch E110
  • smartphone/amoi/2007/amoi-e76.json - Amoi E76
  • smartphone/amoi/2007/amoi-e78.json - Amoi E78
  • smartphone/asus/2006/asus-p525.json - Asus P525
  • smartphone/asus/2007/asus-p535.json - Asus P535
  • smartphone/asus/2007/asus-p735.json - Asus P735
  • smartphone/asus/2008/asus-p552w.json - Asus P552w
  • smartphone/asus/2009/asus-p565.json - Asus P565
  • smartphone/asus/2010/asus-e600.json - Asus E600
  • smartphone/benq/2005/benq-p31.json - BenQ P31
  • smartphone/dell/2009/dell-mini-3i.json - Dell Mini 3i
  • smartphone/dell/2010/dell-aero.json - Dell Aero
  • smartphone/dell/2010/dell-mini-3ix.json - Dell Mini 3iX
  • smartphone/gionee/2014/gionee-gpad-g4.json - GiONEE GPAD G4
  • smartphone/honor/2019/honor-play-3e.json - Honor Play 3e
  • ... 155 more

Heuristic review

  • Heuristic warnings: none found.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine validation stats: PASS

12/12 categories ? 191,176 records ? diff base develop@ea3f31e

Data summary

Category Total Verified Unverified Missing verified Tracked Verified % of tracked
brand 207 123 84 0 207 59.4%
soc 2117 284 1833 0 2117 13.4%
smartphone 92824 17235 75589 0 92824 18.6%
tablet 3305 285 3020 0 3305 8.6%
watch 418 93 325 0 418 22.2%
pda 140 74 66 0 140 52.9%
gpu 2083 1496 587 0 2083 71.8%
cpu 4628 4219 409 0 4628 91.2%
laptop 1995 105 1890 0 1995 5.3%
monitor 882 0 882 0 882 0.0%
software 42493 358 42135 0 42493 0.8%
website 40084 7635 32449 0 40084 19.0%
all 191176 31907 159269 0 191176 16.7%

Warning

Tracked verified coverage is below 50% for monitor 0.0% (0/882), software 0.8% (358/42493), laptop 5.3% (105/1995), tablet 8.6% (285/3305), soc 13.4% (284/2117), all 16.7% (31907/191176), smartphone 18.6% (17235/92824), website 19.0% (7635/40084), and 1 more.
Tracked coverage excludes records missing the verified field; see the Missing verified column for those records.
This does not fail validation. Keep imported records verified: false until manual audit, but treat this as follow-up verification work before relying on the affected categories as curated data.

Validation notes

  • The integrity gate blocks only hard anomalies introduced by this PR relative to its merge base.
  • Full advisory outlier listings are suppressed on successful runs because they are dataset-wide and mostly stable between PRs.
  • Failure runs still include a detailed log excerpt for debugging.

Key output:

## app.validate
## integrity_check.py (PR head compared with PR base)
loaded CPU=4628 GPU=2083
Integrity section Flagged lines
structural 0
CPU name/tier consistency (desktop mainstream only) 0
CPU single>multi (cinebench/geekbench — should be multi>=single) 0
CPU era-vs-score outliers 0
CPU cross-source ratio outliers (possible wrong-variant) 132
GPU cross-source ratio outliers + sanity 51

@Seungpyo1007
Seungpyo1007 merged commit ee4f2fe into develop Sep 29, 2026
5 checks passed
@Seungpyo1007
Seungpyo1007 deleted the Seungpyo1007/smartphone-prefix-conflicts-2 branch September 29, 2026 12:47
@Seungpyo1007 Seungpyo1007 removed the enhancement New feature or request label Sep 29, 2026
Seungpyo1007 added a commit that referenced this pull request Sep 29, 2026
… base slug

The brand-prefix scan across #329/#330/#334 kept flagging some pairs as duplicates
that are actually two DIFFERENT products which happen to share a base name — the
mechanical slug-matching couldn't tell them apart. A focused pass for that specific
pattern (name divergence, not the "same device / data conflict" or "needs a source"
patterns already handled) found 7, each confirmed against a source as a distinct
real device. Un-paired by giving the mis-slugged variant a distinct slug/filename
/name so it is no longer a false duplicate of the base model. No merges; both
records stay as separate devices.

- HTC U11+ vs U11 — distinct fall-2017 model, smaller bezels, SD835/6GB/3930mAh vs
  the summer U11 (androidcentral). `u11` -> `u11-plus` (name "HTC U11+").
- HTC One M9+ vs One M9 — the M9+ uses a Helio X10 and QHD display, separate from
  the SD810 One M9. `one-m9` -> `one-m9-plus`.
- Huawei P40 Pro+ vs P40 Pro — distinct higher model (pocket-lint, CNET).
  `p40-pro` -> `p40-pro-plus`.
- Sony Xperia Z3+ vs Xperia Z3 — the Z3+ (a.k.a. Xperia Z4) is a distinct 2015
  Snapdragon 810 model with its own Wikipedia page, vs the 2014 Z3 (Snapdragon 801).
  `xperia-z3` -> `xperia-z3-plus`.
- Motorola Razr (2023) vs Razr (2019) — different foldable generations (SD 8+ Gen 1
  vs SD 710). `razr` -> `razr-2023`.
- Fairphone 3+ (2020) vs Fairphone 3 (2019) — successor model. The 3+ record
  -> `fairphone-3-plus-dual-sim-lte-fp3plus`.
- Gigabyte GSmart GS202+ vs GS202 — distinct + variant. The + record
  -> `gsmart-gs202-plus`.

Each renamed record keeps its own specs and sources untouched (nothing merged,
nothing invented); only slug, base_model_slug, name and filename change so the two
devices no longer collide as a false pair. New slugs are collision-free.

Both gates pass: `python -m app.validate` and `integrity_check.py <data> --strict`
(0 hard anomalies). Residual brand-prefix pairs drop from 183 to 176.

Refs #296
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working data Dataset changes

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Data accuracy: corrections, duplicates and dates (workstream)

2 participants