Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
eadeb7e
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
b43d77f
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
74399ef
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
066307b
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
332f46f
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
3fcc062
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
d67fcb8
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
ddeb133
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
13f97c9
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
84fccf1
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
e540f27
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
46792a6
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
047d3f7
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
6924dde
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
50e01cd
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
a209b52
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
31bbf7e
feat(verify): migrate verification layer from TechAPI
Seungpyo1007 Jun 23, 2026
e1a4146
chore: omit verify CLI from coverage + register slow marker
Seungpyo1007 Jun 23, 2026
b38fc7b
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
ea45c15
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
d447c20
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
5bead10
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
91bae3d
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
f94e561
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
627ab02
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
1a35f86
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
1395890
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
fcd5e7e
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
339caf8
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
e54a516
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
8db0562
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
82c6b5a
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
c53a3e7
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
e61e4ff
style(verify): satisfy TechEngine ruff (UP/B/E501) + mypy
Seungpyo1007 Jun 23, 2026
e9e0443
style(verify): UP017 datetime.UTC (py312)
Seungpyo1007 Jun 23, 2026
9b6d63c
style(verify): UP017 datetime.UTC (py312)
Seungpyo1007 Jun 23, 2026
729604f
style(verify): UP017 datetime.UTC (py312)
Seungpyo1007 Jun 23, 2026
560f6e3
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
633f64c
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
6d4ff93
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
2f7f0b6
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
31ab2e6
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
8787ab2
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
fc17108
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
311b25a
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
dee504b
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
66f7d08
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
588fdb9
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
7494530
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
1bf56e8
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
2c7cb12
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
fb572a2
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
2a4a5c4
style(verify): strict mypy + ruff compliance for TechEngine
Seungpyo1007 Jun 23, 2026
7b3a5f5
test(mobile): don't hardcode verified=False (data-driven via verifica…
Seungpyo1007 Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions app/verify/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"""TechAPI data *verification* layer (§ existence/trust, sits above structural validation).

``app.validate`` answers "is this record well-formed?". ``app.verify`` answers
"does this record describe a real, actually-existing device/part — confidently
enough to mark it ``verified``?".

It is a separate, additive layer: the structural validator (``app/validate.py``)
stays the fast CI gate and is never rewritten. Verification is tiered:

* Tier 0 — offline deterministic plausibility score over the whole dataset
(``offline``/``signals``/``hosts``); bands records green/yellow/red.
* Tier 1 — ``source_urls`` HTTP liveness (``http_check``).
* Tier 2 — external cross-reference under an exact-heading rule (``crossref``).
* Tier 3 — hybrid escalation + safe ``verified:true`` write-back (``promote``).

Decisions are recorded append-only in ``data/_verify/ledger.jsonl`` so runs are
incremental and resumable.
"""
8 changes: 8 additions & 0 deletions app/verify/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
"""``python -m app.verify`` entry point."""

import sys

from .cli import main

if __name__ == "__main__":
sys.exit(main())
Loading
Loading