14 KiB
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/4Captures 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 bleibenreview, 0 sindunknown. 1.952 unterlevelte Results haben eine Projektion, 123 sind bereits komplett. - Fuenf Offline-Replays des neuen 100ers waren hashidentisch. Alle 100 Results
waren
parsedundevaluated; Scorebereich76.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.jsonlwaren innerhalb jedes Dry-Runs vor und nach dem Scan bytegleich. Die Review-Datei blieb bei83A222F49E7246054B16363C0CA7083168F7CE0AB595916313B44CB279BF9B8C.
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 nach87 ms, Statusstopped, 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 msauf stabil rund1.7 s, ohne Guard oder Reichweite zu lockern. - Native Helper und PowerShell-Fallback erkennen nur die exakten Prozessnamen
GenshinImpactoderYuanShenund 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 meldetegenshinFound=false, HWND 0, leeren Zielprozess, keine Capture-Quelle und 0 Renderer-/Konsolenfehler.
Packaged-Runtime
- Start aus
%TEMP%,isDev=false, Runtime und Helper-Guard beideisElevated=true. - Renderer wurde aus
resources/app.asargeladen; relative Vite-Assets waren vorhanden. - Helper lief aus
resources/input-helper/InputHelper.exe. - IK 6.7.0 wurde aus
resources/ik-inventorylistsgeladen: 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; Run20260710-180851endete mit 8/8 Captures, 8/8 Processing, 8/8 Parsing, 0 Review, 0 Fehlern undpersist=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
runningmeldete, 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.jsonoutputs/packaging/offline-package-report.jsonoutputs/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.jsonoutputs/packaged-live/packaged-final-scan5.jsonoutputs/packaged-live/packaged-final-inventory-fixed.jsonoutputs/packaged-live/packaged-final-inventory-fixed.pngoutputs/packaged-live/final-artifact-probe.jsonoutputs/packaged-live/final-ui-row1-pass.jsonoutputs/packaged-live/final-ui-row1-pass.pngoutputs/packaged-live/streaming-ui-20.jsonoutputs/packaged-live/streaming-ui-20.pngoutputs/packaged-live/streaming-ui-20-results-view.jsonoutputs/packaged-live/streaming-ui-20-results-view.pngoutputs/full-inventory-phase/packaged-preflight-restored.jsonoutputs/full-inventory-phase/packaged-ui-full-inventory.jsonoutputs/full-inventory-phase/packaged-ui-full-inventory.pngoutputs/native-review-analysis/20260710-223233/native-review-analysis.jsonoutputs/full-inventory-phase/packaged-reprocess-2211.jsonoutputs/full-inventory-phase/packaged-reprocess-2211.pngoutputs/full-inventory-phase/packaged-no-genshin-safety.jsonoutputs/full-inventory-phase/packaged-no-genshin-safety.png
Waehrend der Abnahme behobene Fehler
- Eigene App-Titel mit
Genshinkonnten als Capture-Quelle erscheinen. - Dev-Cleanup konnte den Codex-CUA-Node allein wegen seines Working Directory als alte App-Instanz klassifizieren.
- Native Runs starteten nicht garantiert am Inventaranfang und prueften den Foreground nicht waehrend jedes Input-Schritts.
- Der sichere Initial-Reset dauerte wegen Windows-Timer-Rundung etwa 50 s.
- Smoke-Gates akzeptierten zu schwache Summen-/Cleanup-Vertraege.
- Run-Aufloesung konnte ohne explizites
runDirunvollstaendige Runs waehlen. - Packaged Runtime-Pfade und absolute Vite-Assets konnten durch das Repo-CWD kaschiert werden.
- Helper-Guard verlor das echte Elevation-Signal.
- Inventory-Metriken lagen wegen einer impliziten dritten Grid-Zeile ueber der View; ein Store-Duplikat mit unsicherem optionalem Feld erschien irrefuehrend als Promotion-Review.
- 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.
- Vier-Substat-+0-Fuenfsterne wurden wegen OCR-unsicherem Main Value
uebermaessig in Review geschickt. Nur die strukturell eindeutige Kombination
level === 0plus vier Substats erhaelt jetzt den kanonischen Fuenfsterne- Startwert; Drei-Substat-Faelle bleiben absichtlich unsicher. - Eine breite Prozessnamensuche konnte die eigene App als Genshin erkennen. Exakte Allowlist und gecachte-HWND-Revalidierung schliessen dieses Ziel aus.
- 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 1–4★-Ausschluesse,
sechs belegen die exakte doppelte Dezimalpunkt-Korrektur, ein Fall erhielt
eine slot-sichere Namensaufloesung und ein unvollstaendiger Crop bleibt
bewusst
Review. Details stehen inLOCALIZATION_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.