Files
genshin-assistant/docs/scanner-rework-status.md

203 lines
12 KiB
Markdown

# Scanner Rework Status
Updated: 2026-07-11 after the 2,211-Artifact full-inventory acceptance,
review-gate correction, strict game-process targeting, and the offline-tested
Build-Fit evidence-ranking checkpoint
Short current-state entry point: [CURRENT_STATUS.md](CURRENT_STATUS.md).
Detailed evidence:
[NATIVE_SCANNER_LIVE_ACCEPTANCE_2026-07-10.md](NATIVE_SCANNER_LIVE_ACCEPTANCE_2026-07-10.md).
## Was Es Kann
- Der native Artifact-Scanner setzt das 2.400-Slot-Inventar begrenzt an den
Anfang, erfasst ein validiertes 4x8-Grid ueber mehrere Seiten und streamt
jeden Crop direkt in vier begrenzte OCR-/Parse-/Evaluierungsworker.
- Genshin-HWND, Stop-Signale und Input-Erfolg werden vor jedem relevanten
Wheel-, Klick- und Capture-Schritt geprueft. Fokusverlust refokussiert nicht.
- Die frische Live-Kette `5/20/50/100` bestand mit 0 Review, 0 Fehlern und
0 Store-Writes. Der 100er `20260710-102547` erreichte 4,37 Captures/s und
3,15 verarbeitete Results/s.
- Gespeicherte Runs werden auf exakte Jobs/PNGs/Results, Sequenzen, Pfade,
Click-Events, Seitenwiederholung, PNG-Hashes und Replay-Determinismus geprueft.
- Inventory zeigt Native- und Store-Zeilen mit getrennten Signalen fuer
Extraktion, Review, IK, Roll-Efficiency, Promotion und spaeteren Build-Fit.
- Die unpacked App ist aus `%TEMP%` live gestartet. Renderer, Preload, IPC,
paketierter C#-Helper und IK 6.7.0 funktionierten; der paketierte 5er
`20260710-103736` bestand ohne Persistenz.
## Was Zuletzt Gemacht Wurde
- Capture-Quellenklassifizierung schliesst die eigene App trotz `Genshin` im
Titel aus.
- Dev-Cleanup beendet nur echte Repo-Vite/Electron/Helper-Prozesse und nicht
mehr den Codex-CUA-Node.
- Native Runs starten immer mit einem begrenzten Top-Reset und pruefen den
Foreground vor jedem Input/Capture. Reset-Pacing senkte die Live-Zeit von
50,7 s auf rund 1,7 s.
- Der Smoke-Gate prueft exakte Counts, Dateivertraege, Reviewrate,
Non-Persistence und bestaetigten Stop-Cleanup.
- Run-Aufloesung waehlt nur den neuesten vollstaendigen Run; gestoppte oder
unprozessierte Runs ersetzen die Inventory-Evidenz nicht.
- Packaged Pfade verwenden `resourcesPath`, Vite relative Assets und eine
verifizierte Runtime-Signatur.
- Elevation wird sowohl im Runtime- als auch im Helper-Guard korrekt angezeigt.
- Inventory-Layout und Promotion-Duplikatstatus wurden im finalen Paket visuell
korrigiert und abgenommen.
- Der aktuelle Renderer-Stand setzt den Scanumfang standardmaessig auf die
erkannte Besitzanzahl und bietet optional ein Artifact- oder Reihenlimit. Die
linke Hauptflaeche uebernimmt den Lauf-Fortschritt; die separate
Fortschrittskarte entfaellt und die Ergebnisleiste startet sitzungsleer.
- Der bestehende gebundene Wheel-Top-Reset bleibt Produktionsstandard. Ein
`B`-Reopen mit Artifact-Tab ist nur eine spaeter live zu benchmarkende
Alternative, nicht Teil des aktuellen Produktionspfads.
- Ein realer Settings-UI-Lauf mit Artifact-Limit 5 bestand Genshin-, Detail-
und Grid-Preflight. Ziel/Capture/Processing/Parsing endeten bei 5/5,
Review/Fehler bei 0, `persist=false`; die sitzungsgebundene Ergebnisleiste
zeigte alle 5 Resultate.
- Der paketierte Settings-UI-Reihenlauf `20260710-180851` loeste eine Reihe
ueber das erkannte 8-Spalten-Raster zu Ziel 8 auf. Capture, Processing und
Parsing endeten bei 8/8, Review/Fehler bei 0 und der Top-Reset bei 1.715 ms.
Zwei Fokusverlust-Versuche blockierten vorher korrekt mit 0 Klicks.
- Der paketierte Streaming-Lauf `20260710-201614` startete Processing beim
ersten verfuegbaren Run-Verzeichnis. Noch waehrend Capture `running` war,
zeigte die Session-Rail bereits 11 ausgewertete Ergebnisse. Final waren
Capture/Processing/Parsing/Evaluation 20/20, Review/Fehler/Store-Writes 0;
alle Sequenzen 1-20 waren eindeutig und chronologisch sichtbar.
- Die Scanner-Hierarchie nutzt jetzt mehr Breite fuer die sitzungsgebundenen
Ergebnisse als fuer Guide/Capture. Scanbereitschaft und Live-Auswertung sind
kompakte Statusleisten statt verschachtelter Karten.
- Scanumfang, Aufnahmequelle und manuelle Werkzeuge liegen in einem
fokusgefangenen `Scanoptionen`-Modal und verschieben den Arbeitsbereich nicht
mehr. Collection-Pipeline-Details im Inventory liegen ebenfalls in einem
Modal; Diagnose-Import/-Export ist standardmaessig eingeklappt.
- Der frisch paketierte UI-Lauf `20260710-214406` bestaetigte die neue
Hierarchie erneut live: 20/20 Capture, Processing, Parsing und Evaluation,
0 Review/Fehler/Store-Writes, bis zu 9 sichtbare Ergebniszeilen und 12 bereits
ausgewertete Resultate waehrend Capture noch lief. Der erste Startversuch
blockierte korrekt an der doppelten Detailkarten-Pruefung; nach stabiler
Detailkarte lief derselbe begrenzte Pfad durch.
- `build-fit-contract-v1` trennt gesourcte Character-/Zielregeln,
Set-Pfade, Main-Stat-Prioritaeten, Substat-Gewichte, Gesamtziele, Konflikte
und Profil-Ablaufdaten von OCR und Roll-Efficiency. Unsichere oder nicht
kanonische Scanergebnisse blockieren; V1 gibt absichtlich noch keinen
Fit-Score aus.
- Reale lokale Account-Snapshots rufen den alten Demo-Scorer nicht mehr auf.
Der getrennte `build-fit-evidence-ranking-v1` liest stattdessen nur den
neuesten vollstaendigen nativen Run und kann bis zu drei read-only
Profilvorschlaege ausgeben.
- Der score-freie Fuenfer-Verifier prueft genau einen Eintrag pro Slot,
vollstaendige Set-Formen, verschachtelte OCR-/Review-Gates, Konflikte und
optional gesourcte Gesamtwerte. Fehlender Nicht-Artifact-Kontext bleibt
`pending` und wird nicht geraten.
- Der Profil-Corpus umfasst Furina Off-field/Solo Hydro C0-C1, Neuvillette
Charged Attack, Raiden Off-field Hyperbloom und Nahida Off-field Deepwood.
Jede Regel ist quellen-/versions-/ablaufgebunden, gegen reale IK-6.7.0-Keys
geprueft und durch Golden plus adversarial Fixture abgesichert.
- Die sichtbare Regelabdeckung kombiniert nur Set-Form, Main-Stat-Prioritaet
und dokumentierte Substat-Praesenz. Roll-Efficiency, Rollhoehe und OCR-
Confidence sind keine Rankinggewichte; Charakterbesitz, Team, Waffe und
Rotation werden nicht geraten. Furinas ER-Kontext ist nur explizit und
sitzungsgebunden bestaetigbar.
- Der reale Vollinventar-Lauf `20260710-223233` nahm den OCR-Besitzwert 2.211,
erfasste exakt 2.211 Karten auf 70 Seiten mit 4,24/s und schrieb nichts in
den Store. Die aktuelle paketierte Reprozessierung erreichte 2.211/2.211,
136 Review (6,15%), 0 Fehler und 0 Writes; der Saved-Run-Validator meldet
`issues=0`.
- Der erste Parse desselben Laufs wurde bei 490 Review (22,16%) korrekt nicht
akzeptiert. 360 widerspruechliche `+0`-Main-Values werden jetzt nur dann aus
der kanonischen 5-Sterne-Tabelle repariert, wenn vier Anfangs-Substats die
Seltenheit strukturell beweisen; Drei-Substat-Faelle bleiben Review.
- Der Review-Corpus-Exporter priorisiert jetzt nur noch Kandidaten mit
abrufbarem lokalem Crop und gibt sichere Capture-/Run-Referenzen statt lokaler
Pfade aus. Der Snippet-Preparer blockiert OCR-only Kandidaten ohne visuelle
Evidenz. Ein read-only Export der aktuellen 177 Eintraege fand drei abrufbare,
bereits bestaetigte `native-review-approved` Faelle; keine neue Label-Promotion
wurde vorgenommen.
- Native Helper und PowerShell-Fallback akzeptieren nur noch die exakten
Prozessnamen `GenshinImpact` oder `YuanShen`. Bei geschlossenem Spiel bestand
der Package-Smoke mit `genshinFound=false`, HWND 0 und leerem Zielprozess.
## Was Noch Nicht
- Roll-Efficiency ist weiterhin kein Build-Fit. Die offline getestete Builds-
Oberflaeche ist keine Optimizer- oder DPS-Aussage und wurde noch nicht als
frischer paketierter Renderer-Fall live abgenommen.
- Weapons, Materials und Character Details bleiben ausserhalb des aktiven
Scanner-Scope.
- Andere Aufloesungen, Seitenverhaeltnisse und UI-Sprachen haben noch kein
live validiertes Profil.
- Batch-Review/-Promotion und automatische Store-Persistenz bleiben aus.
- Der absichtlich schreibende Review-/Promotion-Pfad wurde nicht live
ausgefuehrt; er bleibt zustimmungspflichtige separate QA.
## Wo Es Noch Probleme Macht
- Die fruehere `1,77/s`-Zahl ist nur der historische serielle 100er-Smoke:
Capture/Reset und danach Batch-Processing wurden addiert. Sie darf nicht als
aktuelle Streaming-End-to-End-Rate gelesen werden. Der dry Streaming-20er
`20260711-090019` lief 20/20 mit 0 Review/Fehlern/Writes, lieferte das erste
Ergebnis vor Capture-Ende, mass `4,43 Capture/s` und beobachtet `2,39/s`
vom Startrequest bis zur Result-Reconciliation. Der gemeinsame Clock-Contract
ist jetzt persistiert: der aktuelle 50er `20260711-154827` bestand mit
50/50 Capture/Parse/Results, 0 Review/Fehler/Writes und `28.022 ms`
Request-to-Reconciliation (`~1,78/s`). Der 3/s-Gesamtclaim bleibt offen.
- Neue OCR-Zustaende koennen weiterhin Review ausloesen; das ist ein sicherer
Fallback, kein Grund die Plausibilitaetsgates zu lockern.
- Der Renderer hat weiter einen nicht-blockierenden ~630-kB-Chunk.
- Die neuen Live-Artifacts waren alle +20, deshalb entstand kein neuer echter
Under-Level-Projektionsfall.
- Ohne plausiblen OCR-Wert fuer die aktuelle Besitzanzahl blockiert der
Full-Inventory-Lauf absichtlich; Kapazitaet darf das Ziel nicht ersetzen und
der native Helper erkennt das Listenende noch nicht verlaesslich selbst.
## Was Noch Verbesserungsfaehig Ist
1. Die Builds-Oberflaeche hat nun eine gebaute Renderer-Abnahme fuer frisches
Englisch, Deutsch-Umschaltung, Kontext, Fokus und Overflow bestanden. Ein
elevated Paket-Start bleibt nur fuer einen gesonderten Runtime/UAC-Claim
offen; der frische native 50er-Smoke bestand als Scanner-Release-Gate.
2. Profilquellen vor Ablauf erneuern und jedes weitere Profil wieder mit
Golden-/adversarial Fixtures absichern.
3. Neue Review-Faelle nur nach visueller Crop-Bestaetigung in Parser-Corpus
oder Lernregeln uebernehmen. Die historische 136er-Population ist bereits
auditiert; der eine unvollstaendige Crop bleibt bewusst `Review`.
4. Result-Klarheit und explizite Mutation-QA weiter staerken.
5. Erst nach eigenen Quellen fuer Charakterbesitz, Team, Waffe und Rotation
eine breitere Optimizer- oder Empfehlungsphase erwägen.
## Aktueller Nachweis
- `npm run acceptance:offline`: PASS
- `npm test`: 446/446 in 72 Dateien
- `npm run acceptance:offline`: final PASS nach Lokalisierung, lokaler
Loeschung, Timing, Korpus und UI-Acceptance-Runner; Package-Verifier 27/27
- Build-Fit-Ranker/Kontext/Profile: offline PASS; gebaute Renderer-UI PASS,
aber kein elevated Paket- oder neuer nativer Live-Claim
- `npm run package:verify`: 27/27
- `npm audit` und `npm audit --omit=dev`: 0 Findings
- Dev live: 5/20/50/100 PASS
- Settings UI live: Artifact-Limit 5, 5/5 Capture/Processing/Parsing,
0 Review/Fehler, `persist=false`, Ergebnisleiste 5 PASS
- Packaged Settings UI live: Reihenlimit 1 -> Ziel 8, 8/8
Capture/Processing/Parsing, 0 Review/Fehler, `persist=false` PASS
- Packaged Settings UI streaming: Artifact-Limit 20, maximal 11 Live-Resultate
waehrend Capture, final 20/20, 0 Review/Fehler/Writes PASS
- Packaged UI-Dichteabnahme `20260710-214406`: maximal 9 sichtbare Resultate
und 12 Evaluierungen waehrend Capture, final 20/20, 0 Review/Fehler/Writes;
Ergebnisflaeche 634 px bei 1304x821 ohne Dokument-Overflow PASS
- Packaged Full Inventory `20260710-223233`: OCR-Ziel/Capture/Results
2.211/2.211, 70 Seiten, 4,24 Capture/s, aktueller Package-Reprocess
2.211/2.211 mit 136 Review (6,15%), 0 Fehler/Writes; Saved-Run-Validator
2.075 evaluated, 0 unknown, `issues=0` PASS
- Packaged No-Genshin Safety: `genshinFound=false`, HWND 0, leerer
Zielprozess, keine Capture-Quelle und 0 Renderer-Fehler PASS
- Packaged live: Start/Bridge/Resources/Inventory und nativer 5er PASS
- Finale visuelle Evidenz:
`outputs/ui-qa/final-scan.png`, `outputs/ui-qa/final-scan-settings.png`,
`outputs/ui-qa/final-inventory.png` und die weiteren `final-*.png`-Ansichten
unter `outputs/ui-qa/`.
sowie `outputs/packaged-live/streaming-ui-20-results-view.png`
(temporäre lokale Dateien zum Abnahmezeitpunkt; bei der angeforderten
Workspace-Bereinigung am 2026-07-11 entfernt).