Files
genshin-assistant/docs/NATIVE_SCANNER_LIVE_ACCEPTANCE_2026-07-10.md

14 KiB
Raw Permalink Blame History

Native Scanner Live Acceptance - 2026-07-10

Ergebnis

Die Artifact-first Scanner-Kette ist fuer den validierten Zustand 1920x1080, 16:9, englische Artifact-Inventaransicht mit sichtbarer Detailkarte live abgenommen. Dev- und Packaged-Runtime nutzten denselben Runtime-Vertrag 2026-07-10-packaged-runtime-acceptance. Alle Scans blieben read-only und liefen mit persist=false.

Die Abnahme umfasst inzwischen auch das komplette OCR-bestaetigte Inventar: Run 20260710-223233 erfasste exakt 2.211 Artifacts ueber 70 Seiten. Der erste Parserstand verfehlte den Review-Grenzwert ehrlich; nach einer strukturell belegten +0-Korrektur reprozessierte das aktuelle Paket denselben vollstaendigen Corpus mit 136 Review (6,15%), 0 Fehlern und 0 Store-Writes. Der gespeicherte Run-Validator meldet 0 Issues.

Der Scanner-Core darf damit in die naechste Produktphase uebergehen. Der strikte End-to-End-Zielwert von drei Artifacts pro Sekunde ist dagegen nicht erreicht und wird nicht behauptet.

Live-Matrix

Runtime Run Ziel Seiten Reset Capture Capture/s Processing Processing/s Review Fehler Store
Dev 20260710-102344 5 1 1.701 ms 1.123 ms 4,45 1.806 ms 2,77 0 0 0
Dev 20260710-102421 20 1 1.704 ms 4.443 ms 4,50 6.430 ms 3,11 0 0 0
Dev 20260710-102450 50 2 1.744 ms 11.328 ms 4,41 15.579 ms 3,21 0 0 0
Dev 20260710-102547 100 4 1.718 ms 22.877 ms 4,37 31.731 ms 3,15 0 0 0
Packaged 20260710-103736 5 1 1.702 ms 1.162 ms 4,30 1.801 ms 2,78 0 0 0
Packaged streaming UI 20260710-201614 20 1 1.701 ms 4.486 ms 4,46 8.032 ms 2,49 0 0 0
Packaged full inventory 20260710-223233 2.211 70 1.739 ms 522.005 ms 4,24 722.164 ms 3,06 490* 0 0

* Der Vollinventar-Runner lehnte diesen ersten Endstand wegen 22,16% Review korrekt ab. Die anschliessende Reprozessierung mit dem reparierten aktuellen Parser verarbeitete 2.211/2.211 in 689.049 ms (3,21/s) und endete bei 136 Review (6,15%), 0 Fehlern, 0 Writes und 2.211 Results. Capture/Streaming und aktuelle Parserqualitaet sind damit als zwei explizite, gespeicherte Evidenzschritte akzeptiert; ein nachtraeglich behaupteter Ein-Pass-Lauf wird nicht erfunden.

Die fruehere 1,77/s-Aussage beschreibt ausschliesslich den historischen, seriellen Dev-100-Smoke: 100 / (24.623 ms Reset/Capture + 31.731 ms Batch-Processing). native-live-smoke.ps1 wartete dort bewusst auf das Capture-Ende und startete erst danach den Processor. Die Zahl ist rechnerisch korrekt, aber keine aktuelle End-to-End-Messung der Streaming-Pipeline.

Der erneute erhoehte Streaming-Livetest am 2026-07-11 (20260711-090019) lief dry mit 20/20 Capture, Parse und Resultaten, 0 Review, 0 Fehlern und 0 Writes. Das erste Resultat war sichtbar, bevor Capture endete. Die gemessenen Teilwerte waren 4,43 Capture/s (4.517 ms active) und 7.668 ms Processor-Laufzeit; die beobachtete Zeit vom Startrequest bis zur finalen Result-Reconciliation betrug 8.370 ms (2,39/s). Diese kleine, clientseitige Beobachtung ist kein allgemeiner Durchsatzclaim, weil der gemeinsame Clock-Contract noch nicht als dauerhafter Run-Wert gespeichert wird.

Bei ueberlappenden Phasen duerfen Capture- und Processing-Dauer nie addiert werden. Kuenftige End-to-End-Claims muessen Start, Capture-Start/-Ende, Processing-Start/-Ende und finale Result-Reconciliation auf einer gemeinsamen Wall-Clock belegen; Capture- und Processing-Raten bleiben getrennte Werte. Das 3/s-Gesamtziel ist weiterhin nicht bewiesen.

Qualitaets- und Dateivertraege

  • Alle neuen 5/20/50/100-Runs hatten exakt so viele Jobs, PNGs, Klicks, verarbeitete Zeilen und geladene Results wie angefordert.
  • Jeder Job war an genau eine nichtleere artifact-NNNN.png, eine eindeutige Sequenz, den erwarteten absoluten Pfad und genau zwei Click-Events gebunden.
  • Der 100er verteilte sich auf 32/32/32/4 Captures ueber vier Seiten.
  • Der Validator fand im 100er keine PNG-Hash-Duplikatgruppen, keine komplett wiederholten Seiten und keine identischen Seiten-Grenzpaare.
  • Der Vollinventar-Run enthielt exakt 2.211 Jobs, PNGs und Results. Der letzte Job war Sequenz 2.211 auf Seite 70, Zeile 0, Spalte 2, passend zur partiellen Schlussseite nach 69 vollen 32er-Seiten.
  • Der gespeicherte Vollinventar-Validator fand zwar vier Gruppen identischer Einzel-Crops, aber keine wiederholten Seitenpaare und keine identischen Seiten-Grenzpaare; sein gesamter Run-Vertrag bestand mit 0 Issues. Identische Einzelkarten werden daher nicht mit einem haengenden Scroll verwechselt.
  • Der aktuelle Vollinventar-Replay ist ueber fuenf Wiederholungen deterministisch: 2.075 Results sind evaluated, 136 bleiben review, 0 sind unknown. 1.952 unterlevelte Results haben eine Projektion, 123 sind bereits komplett.
  • Fuenf Offline-Replays des neuen 100ers waren hashidentisch. Alle 100 Results waren parsed und evaluated; Scorebereich 76.1-92.5, 0 Review, 0 unknown.
  • Die neuen 100 Artifacts waren alle +20, daher korrekt 0 offene Projektionen. Die Projektionslogik bleibt durch die vorhandene Offline-Evidenz fuer unterlevelte Artifacts abgedeckt.
  • Artifact-Store und review-samples.jsonl waren innerhalb jedes Dry-Runs vor und nach dem Scan bytegleich. Die Review-Datei blieb bei 83A222F49E7246054B16363C0CA7083168F7CE0AB595916313B44CB279BF9B8C.

Safety-Nachweise

  • Probe-Klick: Genshin-Fenster, erkanntes 4x8-Grid, sichtbare Detailkarte und geaenderter Detail-Fingerprint wurden vor dem breiten Lauf bewiesen.
  • Fokusverlust-Run 20260710-101820: blocked, 0 Klicks, 0 Captures; der Helper refokussierte nicht automatisch.
  • Stop-Run 20260710-102735: Stop waehrend des Initial-Resets nach 87 ms, Status stopped, 0 Klicks, 0 Captures.
  • Foreground-HWND wird vor jedem Reset-/Scroll-Event, Klick und Crop-Capture geprueft. ESC, Enter, F9 und expliziter Stop bleiben auch im Reset aktiv.
  • Der vollstaendige Top-Reset bleibt auf 3.200 Events begrenzt, pausiert aber nur noch nach jeweils 39 Events. Live sank er dadurch von 50.698 ms auf stabil rund 1.7 s, ohne Guard oder Reichweite zu lockern.
  • Native Helper und PowerShell-Fallback erkennen nur die exakten Prozessnamen GenshinImpact oder YuanShen und validieren gecachte HWNDs erneut. Nachdem das Spiel waehrend der Reprozessierung extern geschlossen war, konnte die App sich dadurch nicht mehr selbst als Genshin-Ziel erfassen. Der finale No-Genshin-Smoke meldete genshinFound=false, HWND 0, leeren Zielprozess, keine Capture-Quelle und 0 Renderer-/Konsolenfehler.

Packaged-Runtime

  • Start aus %TEMP%, isDev=false, Runtime und Helper-Guard beide isElevated=true.
  • Renderer wurde aus resources/app.asar geladen; relative Vite-Assets waren vorhanden.
  • Helper lief aus resources/input-helper/InputHelper.exe.
  • IK 6.7.0 wurde aus resources/ik-inventorylists geladen: 61 Sets, 289 Pieces.
  • Die Preload-Bridge stellte 36 erwartete Methoden bereit.
  • Vor dem neuen Scan wurde automatisch der neueste vollstaendige 100er geladen; neuere gestoppte oder unprozessierte Runs wurden korrekt ignoriert.
  • Der paketierte 5er lief ueber Renderer -> Preload -> IPC -> C# Helper und bestand Capture, Processing, Result-Load und Non-Persistence.
  • Finale Inventory-Ansicht: 5/5 geparst, 0 Review, 5 bewertet, 0 speicherbar - 5 im Store - 0 Review - 0 blockiert.
  • Der aktuelle paketierte Renderer bestand zusaetzlich den echten Settings-UI-Pfad Eigenes Limit -> Reihen -> 1: das erkannte 8-Spalten-Raster ergab Ziel 8; Run 20260710-180851 endete mit 8/8 Captures, 8/8 Processing, 8/8 Parsing, 0 Review, 0 Fehlern und persist=false. Der Top-Reset brauchte 1.715 ms. Zwei vorherige Vordergrundverluste blockierten sicher mit 0 Klicks.
  • Der echte Settings-UI-Streamingpfad mit Artifact-Limit 20 bewies die Phasenueberlappung: waehrend der Helper noch running meldete, waren bereits 11 Ergebnisse komplett geparst, bewertet und in der Rail sichtbar. Neue Karten verwendeten die konfigurierte Slide-in-Mountanimation. Final standen 20 eindeutige Sequenzen 1-20, 20 evaluierte Results, 0 Review, 0 Fehler und 0 Persistenzwrites. Der Dokument-Viewport blieb 1304x821 ohne Overflow; die Ergebnis-Rail scrollte intern.
  • Der Vollinventar-Settings-Pfad las als Ziel ausschliesslich den aktuellen OCR-Besitzwert 2.211, nie die Kapazitaet. Capture erreichte 2.211/2.211 auf 70 Seiten, waehrend der laufenden Erfassung waren bereits bis zu 1.656 Result- Rows und 1.659 Auswertungen sichtbar, alle 2.211 Zeilen standen am Ende in der Rail, die Slide-in-Mountanimation wurde beobachtet und der 1304x821-Dokument- Viewport blieb ohne Overflow.
  • Das paketierte reprocess-run-Gate reprozessierte denselben Corpus mit dem aktuellen Parser vollstaendig und non-persistent: 2.211 processed/parsed, 136 Review, 0 Fehler, 0 gespeichert, 2.211 Result-Eintraege.

Lokale Evidenz zum Abnahmezeitpunkt:

Die folgenden Pfade bezeichneten temporaere lokale Testartefakte. Sie wurden bei der angeforderten Workspace-Bereinigung am 2026-07-11 entfernt; die oben dokumentierten Run-IDs, Messwerte und Vertragspruefungen bleiben der dauerhafte Nachweis.

  • outputs/offline-acceptance/offline-acceptance-report.json
  • outputs/packaging/offline-package-report.json
  • outputs/native-live-smoke/20260710-102341/
  • outputs/native-live-smoke/20260710-102418/
  • outputs/native-live-smoke/20260710-102447/
  • outputs/native-live-smoke/20260710-102544/
  • outputs/native-replay/saved-native-validation-report.json
  • outputs/packaged-live/packaged-final-scan5.json
  • outputs/packaged-live/packaged-final-inventory-fixed.json
  • outputs/packaged-live/packaged-final-inventory-fixed.png
  • outputs/packaged-live/final-artifact-probe.json
  • outputs/packaged-live/final-ui-row1-pass.json
  • outputs/packaged-live/final-ui-row1-pass.png
  • outputs/packaged-live/streaming-ui-20.json
  • outputs/packaged-live/streaming-ui-20.png
  • outputs/packaged-live/streaming-ui-20-results-view.json
  • outputs/packaged-live/streaming-ui-20-results-view.png
  • outputs/full-inventory-phase/packaged-preflight-restored.json
  • outputs/full-inventory-phase/packaged-ui-full-inventory.json
  • outputs/full-inventory-phase/packaged-ui-full-inventory.png
  • outputs/native-review-analysis/20260710-223233/native-review-analysis.json
  • outputs/full-inventory-phase/packaged-reprocess-2211.json
  • outputs/full-inventory-phase/packaged-reprocess-2211.png
  • outputs/full-inventory-phase/packaged-no-genshin-safety.json
  • outputs/full-inventory-phase/packaged-no-genshin-safety.png

Waehrend der Abnahme behobene Fehler

  1. Eigene App-Titel mit Genshin konnten als Capture-Quelle erscheinen.
  2. Dev-Cleanup konnte den Codex-CUA-Node allein wegen seines Working Directory als alte App-Instanz klassifizieren.
  3. Native Runs starteten nicht garantiert am Inventaranfang und prueften den Foreground nicht waehrend jedes Input-Schritts.
  4. Der sichere Initial-Reset dauerte wegen Windows-Timer-Rundung etwa 50 s.
  5. Smoke-Gates akzeptierten zu schwache Summen-/Cleanup-Vertraege.
  6. Run-Aufloesung konnte ohne explizites runDir unvollstaendige Runs waehlen.
  7. Packaged Runtime-Pfade und absolute Vite-Assets konnten durch das Repo-CWD kaschiert werden.
  8. Helper-Guard verlor das echte Elevation-Signal.
  9. Inventory-Metriken lagen wegen einer impliziten dritten Grid-Zeile ueber der View; ein Store-Duplikat mit unsicherem optionalem Feld erschien irrefuehrend als Promotion-Review.
  10. Capture und Auswertung liefen seriell; die Result-Rail blieb bis zum Ende leer. Der Processor tailt jetzt JSONL, ist pro Run single-flight, liefert Sequenz-Deltas und reconciled vor dem Abschluss den Vollbestand.
  11. Vier-Substat-+0-Fuenfsterne wurden wegen OCR-unsicherem Main Value uebermaessig in Review geschickt. Nur die strukturell eindeutige Kombination level === 0 plus vier Substats erhaelt jetzt den kanonischen Fuenfsterne- Startwert; Drei-Substat-Faelle bleiben absichtlich unsicher.
  12. Eine breite Prozessnamensuche konnte die eigene App als Genshin erkennen. Exakte Allowlist und gecachte-HWND-Revalidierung schliessen dieses Ziel aus.
  13. Die Scan-Zusammenfassung addierte Capture- und Processing-Zeit trotz echter Ueberlappung. Sie verwendet jetzt die groessere Wall-Clock-Zeit.

Offene Grenzen und naechste Phase

  • Aktiv bleibt nur Artifact-Scanning. Weapons, Materials und Character Details sind weiterhin Katalogdaten, keine Scannerfeatures.
  • Nicht-16:9, andere Sprachen und ungewoehnliche UI-Zustaende bleiben bewusst blockiert, bis eigene Profile live validiert sind.
  • Der Renderer-Chunk von rund 586 kB und das Default-Electron-Icon sind nicht-blockierende technische/cosmetische Arbeit.
  • Eine echte Review-Korrektur oder Promotion wurde nicht absichtlich in den Store geschrieben. Die statischen und Main-Process-Gates bestehen; der Mutation-Pfad bleibt ein separater, explizit bestaetigter QA-Fall.
  • Die damals verbliebenen 136 Review-Faelle des kompletten Corpus waren der naechste Scanner-Qualitaetsbestand. Sie wurden am 2026-07-11 visuell gegen die gespeicherten Crops auditiert: 128 sind explizite 14★-Ausschluesse, sechs belegen die exakte doppelte Dezimalpunkt-Korrektur, ein Fall erhielt eine slot-sichere Namensaufloesung und ein unvollstaendiger Crop bleibt bewusst Review. Details stehen in LOCALIZATION_LOCAL_DELETION_TIMING_CHECKPOINT_2026-07-11.md; neue Fälle werden weiterhin nicht automatisch als sauber umetikettiert.

Die score-freie Grundlage von build-fit-contract-v1 ist inzwischen implementiert: gesourcte Eingaben, OCR-/Review-Gates, Set-/Mainstat-/Substat- Regeln, Gesamtziele und Konflikte sind versioniert, waehrend echte lokale Snapshots keine Legacy-Demo-Empfehlungen mehr erzeugen. Der deterministische Fuenfer-Verifier prueft inzwischen Slot-/Set-Form, verschachtelte Gates, gesourcte Gesamtwerte und Konflikte, bleibt aber score-frei. Ein erster enger Furina-Luna II-Candidate ist samt IK-Key- und Kontext-Fixtures versioniert. Vor sichtbaren charakterbezogenen Empfehlungen fehlen weiterhin breitere Profile, eine validierte Rangfolge und weitere Golden Fixtures fuer sichere sowie adversarielle Eingaben. Das ist jetzt die aktive Produktphase.