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

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/S60 → excluded 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
@Seungpyo1007 Seungpyo1007 added the bug Something isn't working label 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 enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

TechAPI dataset roadmap and status: all categories (1989-2026)

2 participants