fix(data): resolve 170 more smartphone brand-prefix conflicts - #334
Merged
Seungpyo1007 merged 2 commits intoSep 29, 2026
Merged
Conversation
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.
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-800vssnapdragon-800,hisilicon-kirin-980vskirin-980), battery/weight/ram alreadymatching. Unlike the phonedb twins in #330, the twin here cites Wikipedia or a
vendor page, so its specific
release_dateis reliable and was adopted over thebare side's generic
YYYY-01-01(spot-checked: Huawei P30 Pro2019-03-26=GSMArena; LG G2 September 2013 = Wikipedia). Kept the canonical bare slug, unioned
source_urls, set
verified=trueonly 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:dimensity-9400(oppo.com launch; GSMArena)snapdragon-8s-gen-3(motorola.com; phonearena)snapdragon-8-gen-3(phonearena SM8650-AB; honor.com)(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 barerecord, adopted the specific soc when the keeper's was vague, rejected the phonedb
stamped placeholders (
weight 150.0/battery 1500), left the unreliable phonedbdates alone, unioned source_urls, deleted the twin.
Confirmed different devices — un-paired (left as separate records, no merge): 3
one-m9: holds the One M9+ (Helio X10) vs the One M9 (Snapdragon 810).razr: the 2023 Razr (SD 8+ Gen 1) vs the 2019 Razr (SD 710).xperia-z3: the Xperia Z3+ (SD 810) vs the Xperia Z3 (SD 801).Counts
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.commit (removes the 170 deleted twin slugs, reconciles score percentiles).
Closes #296