120 lines
6.5 KiB
Markdown
120 lines
6.5 KiB
Markdown
# 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.
|