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

120 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 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. 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.