Skip to content

fix(data): remove 18 fabricated placeholder values from PDA records - #344

Merged
Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/pda-placeholder-scan
Sep 29, 2026
Merged

Seungpyo1007 merged 2 commits into
developfrom
Seungpyo1007/pda-placeholder-scan

Conversation

@Seungpyo1007

@Seungpyo1007 Seungpyo1007 commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

What

Follow-up to the PDA dedup pass (#335). That pass only caught fabricated import
placeholders inside duplicate pairs (where comparing the two sides revealed the
fake one). This scans all 112 post-dedup pda records for the same
fabricated-default fingerprint — a single fake-precise value repeated across many
unrelated devices — regardless of whether a record had a twin.

Fixed 18 records; documented the rest that can't be repaired without inventing.

Both gates pass:

  • python -m app.validate → passed
  • integrity_check.py <data> --strict → 0 hard anomalies

Clusters found

Field Value Count Verdict
ram_gb 1 83 / 112 fabricated — no PDA 2000-2011 had 1 GB RAM
battery_mah 1500 33 fabricated (classic-Palm cluster) but unfixable — see below
display.ppi 114 26 real — 240x320 QVGA on 3.5" really is ~114 ppi
display 3.5" / 240x320 26 real — QVGA was the ubiquitous PDA screen
weight_g 190 9 real — iPAQ h63xx chassis family + i-mate HTC rebrands

Spot-checked against sources: Dell Axim X5 = 32/64 MB (Wikipedia, PCMag,
DigitalTrends), Palm IIIc = 8 MB (Wikipedia, TidBITS, Computing History) — all
flatly contradict the stamped ram_gb=1.

Fixed (18 records, all cited — ram_gb is required so repaired, not nulled)

  • 13 Dell Axim — Wikipedia Dell Axim specification table. X5/X3/X30 low-end
    ("Basic") = 32 MB (0.03125); X3/X3i Advanced, X30 Advanced, and the entire
    X50/X51 line = 64 MB (0.0625).
  • 5 Fujitsu-Siemens Pocket Loox N520/N560 = 64 MB (0.0625) — Fujitsu N520
    user manual + clubic N560 launch spec.

No value invented — every figure comes from an authoritative source added to
source_urls.

Left as-is, documented (not guessed, not nulled)

  • Classic Palm line (Palm IIIc/IIIxe/VIIx = 8 MB, m100 = 2 MB, m105/m125/m130/
    m500/m505 = 8 MB, m515 = 16 MB, Tungsten/Zire/Treo/Centro …): their real RAM is
    below the schema's ram_gb >= 0.016 (16 MB) floor, so it cannot be
    represented — almost certainly why they were stamped with ram=1 on import.
    Can't set the true value (fails validate), can't null a required field.
  • Other ram_gb=1 records (i-mate PDA phones, HP iPAQ Glisten, Mitac Mio 728,
    later Palm Treo/webOS) need individual per-device sourcing; left documented
    rather than risk inventing.
  • battery_mah=1500: the classic Palms ran on AAA/AA cells (m100/m105/m125 —
    no mAh rating) or small internal Li-ions; there is no clean per-device mAh to
    cite without inventing, and the field is required (can't null).
  • ppi=114, the 3.5"/240x320 combo, and weight_g=190 are genuinely shared
    real values, not fabricated defaults — left untouched.

Ownership / dump

data/pda/ only. Dump refreshed as the last commit (fresh scratch DB,
TECHAPI_DATA_DIR on this worktree): only the 18 repaired detail pages change,
no other collection touched.

Closes #296 — this removes a sourced slice of the pda fabricated-placeholder values;
the required-field-but-unrepresentable/unsourceable remainder stays open and is
documented above.

Post-dedup scan of all 112 pda records for the fabricated-default fingerprint
(one fake-precise value repeated across many unrelated devices), independent of
whether a record had a duplicate twin.

Clusters found:
- ram_gb=1 on 83 of 112 records. Definitively fabricated: no PDA from 2000-2011
  had 1 GB of RAM (Dell Axim X5 = 32/64 MB, Palm IIIc = 8 MB, etc.). This is the
  Kaggle/phonedb bulk-import placeholder.
- battery_mah=1500 on 33 records (mostly the classic Palm line), and
  weight_g=190 on 9 - see "left as-is" below.

Fixed 18 ram_gb=1 values to the real, sourced figure (ram_gb is a required field,
so these are repaired to a cited value, not nulled). No value invented - each
comes from an authoritative source added to source_urls:

- 13 Dell Axim (Wikipedia Dell Axim specification table): X5/X3/X30 low-end
  ("Basic") = 32 MB = 0.03125; every other Axim model (X3/X3i Advanced, X30
  Advanced, and the whole X50/X51 line) = 64 MB = 0.0625.
- 5 Fujitsu-Siemens Pocket Loox N520/N560 = 64 MB = 0.0625 (Fujitsu N520 user
  manual + clubic N560 launch spec).

Left as-is, documented rather than guessed or nulled:
- Classic Palm line (Palm IIIc/IIIxe/VIIx = 8 MB, m100 = 2 MB, m105/m125/m130/
  m500/m505 = 8 MB, m515 = 16 MB, Tungsten/Zire/Treo/Centro, etc.): their real
  RAM is below the schema's ram_gb>=0.016 (16 MB) floor, so it is not
  representable - almost certainly why they were stamped with the ram=1
  placeholder in the first place. Can't set the real value (fails validate),
  can't null a required field. Reported on #296.
- The remaining ram_gb=1 records (i-mate PDA phones, HP iPAQ Glisten, Mitac Mio
  728, later Palm Treo/webOS) need individual per-device sourcing; left documented.
- battery_mah=1500: the classic Palms ran on AAA/AA cells (m100/m105/m125) or
  small internal Li-ions - clearly not a uniform 1500 mAh - but there is no clean
  per-device mAh to cite without inventing, and the field is required (can't null).
  Reported on #296.
- ppi=114 (26 records) and the 3.5"/240x320 combo are NOT fabricated: 240x320
  QVGA on a 3.5" panel really is ~114 ppi, legitimately shared by that whole
  common screen class. weight_g=190 (9) is real chassis-sharing (iPAQ h63xx
  family, i-mate HTC rebrands). Left untouched.

Both gates pass: `python -m app.validate` and `integrity_check.py <data> --strict`
(0 hard anomalies).

Refs #296
Re-dumped the pdas collection from the corrected data tree (fresh scratch DB, TECHAPI_DATA_DIR on this worktree). Only the 18 Dell Axim / Fujitsu-Siemens detail pages whose ram_gb was repaired change; no other collection touched.
@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 ? 190,468 records ? diff base develop@e174584

Changed records in this PR

18 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" : 18
    "Yellow" : 0
    "Red" : 0
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
pda 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 18 18 0 0 100.0%
All 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 18 18 0 0 100.0%

Full-dataset baseline

190468 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" : 33024
    "Yellow" : 156391
    "Red" : 1053
Loading
Category Distribution Total 🟢 🟡 🔴 🟢 %
brand 🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨🟨🟨 207 122 85 0 58.9%
soc 🟩🟩🟨🟨🟨🟨🟨🟥🟥🟥🟥🟥 2117 284 837 996 13.4%
smartphone 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 92824 18137 74634 53 19.5%
tablet 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 3305 289 3015 1 8.7%
watch 🟩🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟥 418 93 323 2 22.2%
pda 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 112 80 32 0 71.4%
gpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟨🟨 2083 1536 547 0 73.7%
cpu 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟨🟥 4628 4337 290 1 93.7%
laptop 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 1966 107 1859 0 5.4%
monitor 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 231 0 231 0 0.0%
software 🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 42493 366 42127 0 0.9%
website 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 40084 7673 32411 0 19.1%
All 🟩🟩🟨🟨🟨🟨🟨🟨🟨🟨🟨🟥 190468 33024 156391 1053 17.3%

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 e9fc443 into develop Sep 29, 2026
5 checks passed
@Seungpyo1007
Seungpyo1007 deleted the Seungpyo1007/pda-placeholder-scan branch September 29, 2026 15:59
@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 ? 190,468 records ? diff base develop@e174584

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 0 0 0 0 0
tablet 0 0 0 0 0 0
watch 0 0 0 0 0 0
pda 0 18 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

pda modified

  • pda/dell/2002/dell-axim-x5-advanced/dell-axim-x5-advanced.json - Dell Axim X5 Advanced
  • pda/dell/2002/dell-axim-x5-basic/dell-axim-x5-basic.json - Dell Axim X5 Basic
  • pda/dell/2003/dell-axim-x3-advanced/dell-axim-x3-advanced.json - Dell Axim X3 Advanced
  • pda/dell/2003/dell-axim-x3-basic/dell-axim-x3-basic.json - Dell Axim X3 Basic
  • pda/dell/2003/dell-axim-x3i/dell-axim-x3i.json - Dell Axim X3i
  • pda/dell/2004/dell-axim-x30-advanced/dell-axim-x30-advanced.json - Dell Axim X30 Advanced
  • pda/dell/2004/dell-axim-x30-basic/dell-axim-x30-basic.json - Dell Axim X30 Basic
  • pda/dell/2004/dell-axim-x50-advanced/dell-axim-x50-advanced.json - Dell Axim X50 Advanced
  • pda/dell/2004/dell-axim-x50-basic/dell-axim-x50-basic.json - Dell Axim X50 Basic
  • pda/dell/2004/dell-axim-x50v/dell-axim-x50v.json - Dell Axim X50v
  • pda/dell/2005/dell-axim-x51-advanced/dell-axim-x51-advanced.json - Dell Axim X51 Advanced
  • pda/dell/2005/dell-axim-x51-basic/dell-axim-x51-basic.json - Dell Axim X51 Basic
  • pda/dell/2005/dell-axim-x51v/dell-axim-x51v.json - Dell Axim X51v
  • pda/fujitsu-siemens/2006/fujitsu-siemens-rpda-n520c/fujitsu-siemens-rpda-n520c.json - Fujitsu-Siemens RPDA N520c
  • pda/fujitsu-siemens/2006/fujitsu-siemens-rpda-n520p/fujitsu-siemens-rpda-n520p.json - Fujitsu-Siemens RPDA N520p
  • ... 3 more

Heuristic review

  • Heuristic warnings: none found.

@TechEngineBot

Copy link
Copy Markdown
Member

TechEngine validation stats: PASS

12/12 categories ? 190,468 records ? diff base develop@e174584

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 92824 17235 75589 0 92824 18.6%
tablet 3305 285 3020 0 3305 8.6%
watch 418 93 325 0 418 22.2%
pda 112 68 44 0 112 60.7%
gpu 2083 1496 587 0 2083 71.8%
cpu 4628 4219 409 0 4628 91.2%
laptop 1966 105 1861 0 1966 5.3%
monitor 231 0 231 0 231 0.0%
software 42493 358 42135 0 42493 0.8%
website 40084 7635 32449 0 40084 19.0%
all 190468 31901 158567 0 190468 16.7%

Warning

Tracked verified coverage is below 50% for monitor 0.0% (0/231), software 0.8% (358/42493), laptop 5.3% (105/1966), tablet 8.6% (285/3305), soc 13.4% (284/2117), all 16.7% (31901/190468), smartphone 18.6% (17235/92824), 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=4628 GPU=2083
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