Files
genshin-assistant/docs/LOCALIZATION_LOCAL_DELETION_TIMING_CHECKPOINT_2026-07-11.md
T

6.2 KiB
Raw Blame History

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

  • 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 14★ 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. Remove generated workspace outputs, commit the coherent checkpoint, and push the intended branch.

Follow-on Quality Phase

  • Extend the corpus only from visually confirmed crops and preserve ambiguity as Review.
  • 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.