transceiver-db/sync/history/2026-05-09-tip-verification-truth-model-and-evidence-ledger.md
2026-05-09 23:06:21 +02:00

88 lines
2.5 KiB
Markdown

# TIP Verification Truth Model And Evidence Ledger — 2026-05-09
## Scope
- Make TIP verification explainable instead of simply green/red.
- Preserve the difference between:
- a true 1:1 competitor match
- verified absence of a valid public match
- ambiguous candidates
- unresolved research
- Start an append-only evidence ledger for source-backed verification decisions.
## Implemented
- Added migration `sql/103-verification-evidence-and-competitor-status.sql`.
- Added product-level competitor status:
- `matched`
- `no_valid_match`
- `needs_research`
- `ambiguous`
- `unknown`
- Added no-match fields:
- `no_match_verified_at`
- `no_match_reason`
- Added `transceiver_verification_evidence`.
- `price`
- `image`
- `details`
- `competitor_match`
- `competitor_no_match`
- `artifact_quarantine`
- Scraper DB helper now records evidence for newly verified price/image/details.
- Quarantine robot now records artifact evidence.
- Matcher records competitor-match evidence for auto-approved matches.
- Review API now supports protected no-valid-match marking:
- `POST /api/review/transceivers/:id/no-valid-match`
- Health API exposes active competitor-status counts.
- Review stats expose global product competitor-status counts.
## Live Deployment
- Scraper build on Erik: passed.
- API build on Erik: passed after TypeScript route param cast.
- Migration applied successfully.
- `tip-api` restarted and healthy.
- `tip-scraper-daemon` was not restarted because `scrape:pricing:naddod` and `scrape:pricing:qsfptek` were active.
## Live Backfill
- Product status after migration:
- `matched=11198`
- `needs_research=6575`
- Evidence ledger seeded:
- `price=10633`
- `image=12189`
- `details=16782`
- `competitor_match=316`
## Live API Check
- `/api/health`: healthy.
- Active-product competitor status:
- `matched=11158`
- `needs_research=6256`
- `no_valid_match=0`
- `ambiguous=0`
- Protected Review stats with Dashboard token returned:
- `matched=11198`
- `needs_research_products=6575`
- `no_valid_match=0`
- `ambiguous=0`
## Operational Next Step
- When `scrape:pricing:naddod` and `scrape:pricing:qsfptek` finish, restart `tip-scraper-daemon` to load the new scheduler matcher/reconcile logic.
- Then run:
- reconcile
- matcher
- Review no-valid-match workflow for products that truly have no valid public 1:1 competitor.
## Training Pool
- Added TIPLLM lessons for:
- competitor state machine
- evidence ledger semantics
- `training-data/tip-llm-capabilities-v1.jsonl` validated successfully.