Skip to content

fix(data): backfill 37 confirmed GSMArena URLs via verify tool - #339

Merged
Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/gsmarena-backfill-retry
Sep 29, 2026
Merged

Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/gsmarena-backfill-retry

Conversation

@Seungpyo1007

@Seungpyo1007 Seungpyo1007 commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

What

Retry of the GSMArena backfill (the 2026-09-23 rate limit had long expired).
Upgrades kaggle-only smartphone records (Tier 3, variant.source_category == "gsmarena-kaggle") to a confirmed GSMArena Tier-2 spec-page URL, using the
existing app.verify.gsmarena_backfill tool in TechEngine. The tool's strict
multi-signal gate (sitemap identity + heading match + liveness + spec agreement
on battery/RAM/display/weight) decides every write; AMBIGUOUS / NOTFOUND /
CONTRADICT are reported, never written. Matches were not hand-authored and the
gate was not loosened.

37 records received a confirmed source_urls upgrade before the run was
stopped by a fresh rate limit (see below). Commits:

  1. fix(data): backfill 37 confirmed GSMArena URLs via verify tool — the
    data/smartphone/** source_urls edits.
  2. chore(dump): refresh smartphone dump pages for GSMArena URL backfill — the
    mandatory dump refresh (python -m app.dump from a TechEngine checkout, fresh
    scratch DATABASE_URL, TECHAPI_DATA_DIR pointed at this worktree). Only the
    37 affected site/public/v1/smartphones/<slug>/index.json detail pages
    changed; unrelated score-percentile/schema churn from a fresh full dump was
    excluded so this PR carries only the backfill's effect.

Rate limit (run stopped early, not retried)

The apply run made real progress (the 37 confirmed writes above) and then hit a
GSMArena 429 with Retry-After: 36000s (10 hours). The tool stopped cleanly
before sending any further requests — no retry spinning — and left the remaining
kaggle-only records eligible for a later invocation. A dry-run of 20 immediately
beforehand was clean (19 CONFIRM / 1 NOTFOUND, no 429), so the limit was tripped
during this apply run rather than being a pre-existing block.

Unresolved this run (correctly not written): Caterpillar B15 (NOTFOUND,
no-index-hit), Lenovo A60+ (AMBIGUOUS, ambiguous-index), Sharp Aquos Crystal 2 (NOTFOUND, not-live).

Tool summary

# GSMArena backfill

- records: 57 across 57 brands
- index phones: 13849
- http requests this process: 37
- sleep between requests: 1.5s
- resumed from cache: 20
- dry-run: False

## Decisions

| decision   | count | ratio |
| ---------- | ----: | ----: |
| CONFIRM    |    54 | 94.7% |
| AMBIGUOUS  |     1 |  1.8% |
| NOTFOUND   |     2 |  3.5% |
| CONTRADICT |     0 |  0.0% |

(54 CONFIRM proposed across this run's window; 37 resulted in a new working-tree
write — the remainder already carried the confirmed URL from a prior session's
cache, so the idempotent write guard left them untouched.)

Verification

  • python -m app.validate (bundled validator) — ✅ Data validation passed.
  • Dump regenerated with python -m app.dump; the 37 committed detail pages are
    clean source_urls appends matching the data edits.

Closes #296

Upgrades 37 kaggle-only smartphone records (Tier 3, source_category gsmarena-kaggle) to a confirmed GSMArena Tier-2 spec-page URL. Each URL was confirmed by app.verify.gsmarena_backfill's strict multi-signal gate (sitemap identity + heading match + liveness + spec agreement); AMBIGUOUS/NOTFOUND/CONTRADICT results were reported, not written.

Refs #296
Regenerates the published static dump (site/public/v1/smartphones) for the 37 records upgraded in the previous commit, via python -m app.dump from a TechEngine checkout against this worktree's data. Only the source_urls of the affected detail pages changed; unrelated dump churn was excluded.

Refs #296
@github-actions github-actions Bot added bug Something isn't working data Dataset changes enhancement New feature or request labels Sep 29, 2026
@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,819 records ? diff base develop@761729a

Changed records in this PR

37 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" : 35
    "Yellow" : 2
    "Red" : 0
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
smartphone 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨 37 35 2 0 94.6%
All 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨 37 35 2 0 94.6%

Full-dataset baseline

191819 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" : 32807
    "Yellow" : 157957
    "Red" : 1055
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 207 122 85 0 58.9%
soc 🟩🟩🟨🟨🟨🟨🟨🟥🟥🟥🟥🟥 2117 284 837 996 13.4%
smartphone 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 93407 18038 75315 54 19.3%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3459 292 3166 1 8.4%
watch 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟥 447 94 350 3 21.0%
pda 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 140 83 57 0 59.3%
gpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 2076 1529 547 0 73.7%
cpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟥 4512 4219 292 1 93.5%
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 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 191819 32807 157957 1055 17.1%

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.

@Seungpyo1007
Seungpyo1007 merged commit 2b4639b into develop Sep 29, 2026
5 checks passed
@Seungpyo1007
Seungpyo1007 deleted the Seungpyo1007/gsmarena-backfill-retry branch September 29, 2026 14:48
@Seungpyo1007 Seungpyo1007 removed the enhancement New feature or request label Sep 29, 2026
@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine change review: PASS

12/12 categories ? 191,819 records ? diff base develop@761729a

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 37 0 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/2009/betouch-e100/acer-betouch-e100.json - Acer beTouch E100
  • smartphone/alcatel/2011/ot-918/alcatel-ot-918.json - Alcatel OT-918
  • smartphone/apple/2010/iphone-4/apple-iphone-4.json - Apple iPhone 4
  • smartphone/archos/2013/40-titanium/archos-40-titanium.json - Archos 40 Titanium
  • smartphone/asus/2008/p320/asus-p320.json - Asus P320
  • smartphone/blackberry/2007/8830-world-edition/blackberry-8830-world-edition.json - Blackberry 8830 World Edition
  • smartphone/blu/2010/tango/blu-tango.json - Blu Tango
  • smartphone/energizer/2015/energy-400/energizer-energy-400.json - Energizer Energy 400
  • smartphone/gigabyte/2010/gsmart-g1305-boston/gigabyte-gsmart-g1305-boston.json - Gigabyte GSmart G1305 Boston
  • smartphone/hp/2004/ipaq-h6310/hp-ipaq-h6310.json - Hp iPAQ h6310
  • smartphone/htc/2006/p3300/htc-p3300.json - Htc P3300
  • smartphone/huawei/2010/u8150-ideos/huawei-u8150-ideos.json - Huawei U8150 IDEOS
  • smartphone/i-mate/2004/smartphone2/i-mate-smartphone2.json - I-Mate Smartphone2
  • smartphone/icemobile/2012/prime-plus/icemobile-prime-plus.json - Icemobile Prime Plus
  • smartphone/intex/2014/aqua-4-5e/intex-aqua-4-5e.json - Intex Aqua 4.5E
  • ... 22 more

Heuristic review

  • Heuristic warnings: none found.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine validation stats: PASS

12/12 categories ? 191,819 records ? diff base develop@761729a

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 93407 17581 75826 0 93407 18.8%
tablet 3459 288 3171 0 3459 8.3%
watch 447 94 353 0 447 21.0%
pda 140 74 66 0 140 52.9%
gpu 2076 1496 580 0 2076 72.1%
cpu 4512 4219 293 0 4512 93.5%
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 191819 32257 159562 0 191819 16.8%

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.3% (288/3459), soc 13.4% (284/2117), all 16.8% (32257/191819), smartphone 18.8% (17581/93407), 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=4512 GPU=2076
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) 53
GPU cross-source ratio outliers + sanity 51

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