Skip to content

fix(data): un-pair 7 genuinely different smartphone devices - #349

Merged
Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/smartphone-different-devices
Sep 29, 2026
Merged

Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/smartphone-different-devices

Conversation

@Seungpyo1007

Copy link
Copy Markdown
Member

Summary

A focused pass for one specific pattern the earlier brand-prefix dedup (#329 / #330
/ #334) kept surfacing: pairs flagged as duplicates that are actually two
different products sharing a base name
, which the mechanical slug-matching
couldn't distinguish. This finds 7 (the 3 previously reported plus 4 new) and
un-pairs them — no merges.

Each was confirmed against a source as a genuinely distinct device, then un-paired
by giving the mis-slugged variant a distinct slug / filename / name so it no longer
collides with the base model:

base slug (was) variant → new slug why distinct (source)
u11 HTC U11+ → u11-plus separate fall-2017 model, smaller bezels (androidcentral)
one-m9 HTC One M9+ → one-m9-plus Helio X10 + QHD, separate from SD810 One M9
p40-pro Huawei P40 Pro+ → p40-pro-plus distinct higher model (pocket-lint, CNET)
xperia-z3 Sony Xperia Z3+ → xperia-z3-plus = Xperia Z4, distinct 2015 SD810 model, own Wikipedia page
razr Motorola Razr (2023) → razr-2023 different generation from the 2019 Razr
fairphone-3-dual-sim-lte-fp3 Fairphone 3+ → fairphone-3-plus-dual-sim-lte-fp3plus 2020 successor to the 2019 Fairphone 3
gigabyte-gsmart-gs202 GSmart GS202+ → gsmart-gs202-plus distinct "+" variant

In each pair the other record (the base model — htc-u11, htc-one-m9,
huawei-p40-pro, sony-xperia-z3, motorola-razr, and the base Fairphone 3 /
GS202) is left untouched. Nothing merged, nothing invented — only slug,
base_model_slug, name and filename change on the renamed side so the two devices
stop colliding as a false pair. New slugs are collision-free.

Counts

  • confirmed-different-devices, un-paired: 7
  • resolved-and-merged: 0 (this pass is only for the different-device pattern)
  • Residual brand-prefix pairs drop from 183 to 176. The rest of the residual (21
    same-model wrong-soc + 157 needing a per-record ram/weight/battery source) genuinely
    needs external sources I don't have and is deliberately left alone, per the task.

Validation

  • python -m app.validate → passed.
  • integrity_check.py <data> --strict → no hard anomalies (slug==filename holds
    for all renames; no duplicate slugs).
  • 92,824 smartphone files (unchanged — these are renames, not deletions). Dump
    refreshed in the last commit (old base-name slug pages replaced by the new variant
    slugs).

Refs #296

… 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
Regenerates site/public/v1 from the current data with no re-scrape
(python -m app.dump). Replaces the 7 old base-name slug pages with the new
distinct variant slugs (u11-plus, one-m9-plus, p40-pro-plus, xperia-z3-plus,
razr-2023, fairphone-3-plus-dual-sim-lte-fp3plus, gsmart-gs202-plus) and
reconciles score percentiles. `app.validate` passes on the dumped tree.
@Seungpyo1007
Seungpyo1007 merged commit b8dd961 into develop Sep 29, 2026
4 of 5 checks passed
@Seungpyo1007
Seungpyo1007 deleted the Seungpyo1007/smartphone-different-devices branch September 29, 2026 22:31
@Seungpyo1007 Seungpyo1007 added bug Something isn't working data Dataset changes labels Sep 29, 2026
@Seungpyo1007 Seungpyo1007 self-assigned this Sep 29, 2026
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.

1 participant