Skip to content

data(smartphone): derive os_version from os field (48,462 records)#111

Merged
Seungpyo1007 merged 2 commits into
mainfrom
data/import-staging
Jul 9, 2026
Merged

data(smartphone): derive os_version from os field (48,462 records)#111
Seungpyo1007 merged 2 commits into
mainfrom
data/import-staging

Conversation

@Seungpyo1007

@Seungpyo1007 Seungpyo1007 commented Jul 9, 2026

Copy link
Copy Markdown
Member

Summary

Normalizes the launch OS version that is already present in each smartphone's os string into the structured os_version field — a deterministic parse of existing data, no new/external data and no fabrication.

  • 48,462 smartphones filled (coverage os_version ~6% → ~58%).
  • Examples: "Android 4.0.3 (Ice Cream Sandwich)"4.0.3; "Microsoft Windows Mobile 6.5 Professional"6.5; "iOS v26"26.
  • Takes the shipped version, not "upgradeable to X" follow-ons.
  • Symbian excluded — its Series 60/S60 rel. 3.2/Symbian^3 strings mix platform/UI numbers with OS versions and can't be parsed unambiguously (would have produced wrong values like 60/90).
  • Guards reject 4-digit years and implausible majors (>100).

Records already having os_version (6,104) untouched; records whose os has no parseable version (38,830 — feature phones, "Proprietary", Symbian) left empty.

All verified: false. Validation passes. Dump regenerated — 48,462 changed smartphone detail pages.

Closes #1

Normalizes the launch OS version already present in each record's `os`
string into the structured `os_version` field (e.g. "Android 4.0.3 (Ice
Cream Sandwich)" -> "4.0.3"). Deterministic parse of existing data — no
new/external data. Takes the shipped version, not "upgradeable to" ones.
Symbian excluded (Series/UI numbers are ambiguous). os_version coverage
~6% -> ~58%.

Refs #1
@Seungpyo1007

Copy link
Copy Markdown
Member Author

🤖 TechEngine · data validation

category      changed   verified
smartphone     48,462     false
  • python -m app.validate✅ passed (0 errors), 108,575 records / 10 categories.
  • os_version coverage 6,104 → 54,566 (~6% → ~58% of smartphones).
  • Extracted value range: major 1–26 (Android 1.x … iOS 26). 0 anomalous values after Symbian exclusion.
  • Dump regenerated: 48,462 smartphone detail pages. List summaries carry no os_version, so only detail pages changed.

No schema change — normalizes a field the schema already defines.

@Seungpyo1007

Copy link
Copy Markdown
Member Author

🤖 TechEngine · verify (Tier 0)

Not a data import — a derivation from data already in the record:

  • The version string lives inside each record's os (sourced originally from GSMArena et al.); this only lifts it into the typed os_version field. Nothing invented.
  • Adversarial pass flagged two failure modes and both are handled: (1) "upgradeable to Android X" → we keep the shipped version; (2) Symbian Series 60/S60excluded so the platform/UI number is never mistaken for a version.
  • Year-like (\d{4}) and major>100 tokens rejected.

verified stays false; promotion remains the verify-network job's call. Safe to rebase-merge.

@Seungpyo1007 Seungpyo1007 moved this from Todo to In Progress in TechAPI-Project Jul 9, 2026
@Seungpyo1007 Seungpyo1007 merged commit 7998f68 into main Jul 9, 2026
5 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in TechAPI-Project Jul 9, 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.

Changed records in this PR

No records scored.

Full-dataset baseline

105742 record(s) scored.

%%{init: {"theme":"base","themeVariables":{"pie1":"#3fb950","pie2":"#d29922","pie3":"#f85149","pieStrokeWidth":"0px","pieOpacity":"1"}}}%%
pie showData
    title Verification bands — all records
    "Green" : 10971
    "Yellow" : 92443
    "Red" : 2328
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 207 24 183 0 11.6%
soc 🟩🟨🟨🟨🟨🟥🟥🟥🟥🟥🟥🟥 2104 123 680 1301 5.8%
smartphone 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 93396 9381 83032 983 10.0%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3455 174 3253 28 5.0%
watch 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 433 11 412 10 2.5%
pda 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 140 27 107 6 19.3%
gpu 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 2030 245 1785 0 12.1%
cpu 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨 3977 986 2991 0 24.8%
All 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 105742 10971 92443 2328 10.4%

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

Check Result
python -m app.validate PASS
python integrity_check.py TechAPI/data --strict 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 0 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

Changed record examples

  • No data file changes detected.

Heuristic review

  • Heuristic warnings: none found.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine validation stats: PASS

Data summary

Category Total Verified Unverified Missing verified Tracked Verified % of tracked
brand 207 10 197 0 207 4.8%
soc 2104 123 1981 0 2104 5.8%
smartphone 93396 8453 84943 0 93396 9.1%
tablet 3455 174 3281 0 3455 5.0%
watch 433 11 422 0 433 2.5%
pda 140 27 113 0 140 19.3%
gpu 2030 244 1786 0 2030 12.0%
cpu 3977 986 2991 0 3977 24.8%
all 105742 10028 95714 0 105742 9.5%

Warning

Tracked verified coverage is below 50% for watch 2.5% (11/433), brand 4.8% (10/207), tablet 5.0% (174/3455), soc 5.8% (123/2104), smartphone 9.1% (8453/93396), all 9.5% (10028/105742), gpu 12.0% (244/2030), pda 19.3% (27/140), 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

  • 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 --strict
loaded CPU=3977 GPU=2030
✅ integrity gate: no hard anomalies.
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 8
CPU cross-source ratio outliers (possible wrong-variant) 152
GPU cross-source ratio outliers + sanity 18

Seungpyo1007 added a commit that referenced this pull request Jul 9, 2026
… fields

Applies the same two derivations used for smartphones (#111, #112) to the
tablet/watch/pda catalogues: parse launch os_version from the `os` string, and
compute display.ppi = round(sqrt(w^2+h^2)/size_inch). Deterministic, no new data.
tablet +2656 os_version / +2080 ppi; watch +202 / +279; pda +16 / +54.

Refs #1
Seungpyo1007 added a commit that referenced this pull request Jul 9, 2026
… fields

Applies the same two derivations used for smartphones (#111, #112) to the
tablet/watch/pda catalogues: parse launch os_version from the `os` string, and
compute display.ppi = round(sqrt(w^2+h^2)/size_inch). Deterministic, no new data.
tablet +2656 os_version / +2080 ppi; watch +202 / +279; pda +16 / +54.

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

Labels

data Dataset changes enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Massive dataset rebuild: CPU + brand + GPU + smartphone + SoC (1989-2026)

2 participants