6.5 KiB
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. An elevated packaged executable remains a separate package-runtime boundary and is not claimed here.
Delivered Scope
English-default renderer with German Settings option
enis 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.
requestToResultsDurableMsandrequestToResultsReconciledMsare 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/50with zero validation issues. - The final current-build offline gate passed after all localization, deletion,
timing, corpus, and acceptance-runner changes:
npm run acceptance:offlinecompleted 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
-
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.
-
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 measured28,022 msrequest-to-reconciliation, so it does not claim the separate 3/s performance target. -
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.