# Localization, Local Deletion, Timing, and OCR Corpus Checkpoint Date: 2026-07-11 Status: implementation, offline-validation, and current-build live-smoke checkpoint. The non-persisting 50-artifact development smoke passed on 2026-07-11; its durable evidence is in [NATIVE_SCANNER_LIVE_SMOKE_2026-07-11.md](NATIVE_SCANNER_LIVE_SMOKE_2026-07-11.md). An elevated packaged executable remains a separate package-runtime boundary and is not claimed here. ## Delivered Scope ### English-default renderer with German Settings option - `en` is the default for a fresh, missing, or invalid persisted locale. - Settings exposes English and German; the selected app locale is persisted locally and keeps the document language in sync. - Visible app-shell, navigation, Scanner, Artifacts, Review, Builds, Overlay, Diagnostics, Settings, and local-delete chrome use the renderer translation catalog. Source/domain evidence remains deliberately distinct from translated UI chrome. - The setting changes application copy only. Smart Capture remains validated for the English Genshin UI; it does not claim German Genshin OCR/crop support. - The package UI runner uses stable `data-*` hooks instead of translated text for core interaction checks. ### Local artifact removal The delete control corrects app-local data only. It is not a Genshin action. | Selected row | Local effect | Preserved / prohibited behavior | | --- | --- | --- | | Native scan result | Appends a `deleted-results.jsonl` tombstone, hides the row, and removes its crop only if the resolved PNG stays inside the selected run directory. | Raw `scan-results.json` remains replay evidence. Active capture/processing blocks removal. No input helper or game action is called. | | Exact Store record linked to native row | Removed only when the user explicitly includes that exact local record in the confirmed removal. | No broad Store deletion and no inferred record matching. | | Store-only row | Removes that one explicit local Store record through main-process IPC. | No native scan evidence or Genshin state is touched. | The workflow is idempotent for an already tombstoned native row. It retains the native run's raw result array for audit/replay and limits file deletion to contained PNG paths. ### Shared-clock native run timing Each native run can now write atomic `run-timing.json` evidence with version `native-scanner-run-timing-v1`. - Markers are first-observed and immutable after a valid value is written. - The record covers request start, native scanner start, capture start/end, processing start/end, durable results, and final reconciliation. - `requestToResultsDurableMs` and `requestToResultsReconciledMs` are derived directly from their endpoints and validated against timestamp ordering. - Capture and processing remain separate metrics. They may overlap and are never added to create an end-to-end duration. ### Confirmed OCR corpus changes The historical 136-result Review population was inspected against saved crops, not treated as self-labeled training data: | Audit result | Count | Current behavior | | --- | ---: | --- | | Explicit visual 1–4★ | 128 | Remain excluded/manual-inspection entries, not value-scored parser labels. | | Confirmed `HP+4..1%` OCR punctuation defect | 6 | Exact duplicated decimal punctuation is repaired to `HP+4.1%`; the regression cases are in the confirmed corpus. | | Confirmed 5★ partial-name case with direct slot evidence | 1 | The unsafe global alias was removed. Canonicalization is now allowed only when independent high-confidence slot evidence makes one piece valid. | | Incomplete/malformed 5★ crop | 1 | Remains `Review`; no heuristic converts it into a clean artifact. | This preserves the fail-closed rule: ambiguous OCR becomes unknown or Review, not a guessed canonical artifact. ## Offline Evidence Recorded For This Checkpoint - Focused localization tests cover English fallback, persisted locale behavior, and English/German catalog-key parity. - Native deletion tests cover tombstone filtering, raw-evidence preservation, active-run blocking, contained crop cleanup, idempotency, and exact Store scope. - Native timing tests cover first-observation behavior, ordering validation, and derived durations. - Parser/corpus evaluation covers the duplicate-decimal repair and slot-safe name behavior. The latest saved 50-artifact evidence validation completed at `50/50` with zero validation issues. - The final current-build offline gate passed after all localization, deletion, timing, corpus, and acceptance-runner changes: `npm run acceptance:offline` completed TypeScript, 72 test files / 444 tests, OCR evaluation, saved-run validation, package verification (27/27), both dependency audits, and the diff check. - The built-renderer Builds/UI acceptance passed fresh English, German selection, English restoration, Builds context/focus, reduced motion, overflow, and native plus Store local-delete confirmation probes. It did not launch an elevated packaged executable, so it is not UAC/preload/helper/native-runtime evidence. ## Remaining Release Gates 1. If a package-runtime/UAC claim is needed, separately launch the elevated packaged executable and verify its bridge/helper/runtime behavior. Do not substitute the passed built-renderer UI acceptance for that evidence. 2. The required elevated development 50-artifact smoke now passes: 50/50 capture, click, queue, parse, durable-result reconciliation, zero Review, zero processing errors, zero Store writes, and a complete valid `run-timing.json`. It measured `28,022 ms` request-to-reconciliation, so it does not claim the separate 3/s performance target. 3. Completed on 2026-07-11: generated workspace outputs were removed and the coherent checkpoint was committed and pushed as `8b9f948`. The running admin runtime's locked log was intentionally preserved. ## Follow-on Quality Phase - Extend the corpus only from new visually confirmed crops and preserve ambiguity as `Review`. The historical 136-item Review population has already been audited; it is not an outstanding relabeling task. - Refresh Build-Fit source profiles before their explicit expiry and add Golden plus adversarial fixtures for each profile expansion. - Keep the bounded wheel reset as the production baseline; test any alternate inventory-entry/reset choreography as a separate guarded experiment. - Keep Builds read-only and Artifact-only until a separately sourced product decision introduces character, weapon, team, or rotation inputs.