feat(scanner): complete localized artifact quality checkpoint
This commit is contained in:
+221
-72
@@ -8,13 +8,22 @@ For the next scan-result and artifact-inventory product phase, see
|
||||
[scanner-results-inventory-roadmap.md](scanner-results-inventory-roadmap.md).
|
||||
For the 2026-07-09 scanner merge evidence, see [MERGE_READINESS.md](MERGE_READINESS.md).
|
||||
For Gitea push/authentication setup, see [GITEA_AUTH.md](GITEA_AUTH.md).
|
||||
For the completed evaluation/offline phases and executed live acceptance, see
|
||||
[ARTIFACT_EVALUATION_OFFLINE_VALIDATION_2026-07-10.md](ARTIFACT_EVALUATION_OFFLINE_VALIDATION_2026-07-10.md)
|
||||
and [NATIVE_SCANNER_LIVE_ACCEPTANCE_2026-07-10.md](NATIVE_SCANNER_LIVE_ACCEPTANCE_2026-07-10.md),
|
||||
plus the current-build [NATIVE_SCANNER_LIVE_SMOKE_2026-07-11.md](NATIVE_SCANNER_LIVE_SMOKE_2026-07-11.md).
|
||||
For the score-free Build-Fit V1 data and safety contract, see
|
||||
[BUILD_FIT_CONTRACT_V1.md](BUILD_FIT_CONTRACT_V1.md).
|
||||
For the current English-default UI, local-result removal, timing, and reviewed
|
||||
OCR-corpus checkpoint, see
|
||||
[LOCALIZATION_LOCAL_DELETION_TIMING_CHECKPOINT_2026-07-11.md](LOCALIZATION_LOCAL_DELETION_TIMING_CHECKPOINT_2026-07-11.md).
|
||||
|
||||
## Project Identity
|
||||
|
||||
| Field | Value |
|
||||
| --- | --- |
|
||||
| Project name | Genshin Artifact Assistant |
|
||||
| Status | Artifact-first scanner baseline with native IK-style 20/50/100 scale evidence, explicit selected promotion, review/edit/approve, scan result rail, and Artifact-only Inventory pipeline; value scoring and later-session repeatability are next |
|
||||
| Status | Artifact-first native scanner with historical live-accepted dev 5/20/50/100, packaged bounded/UI paths, and a complete packaged 2,211-Artifact inventory soak; scanner-first Galaxy UI, explicit review/promotion gates, deterministic roll-efficiency, an English-default/Deutsch-selectable app UI, local-only artifact removal, durable timing evidence, and an offline-tested source-bound Build-Fit evidence-ranking layer. The current-build elevated-dev 50-artifact smoke now passes its functional/safety gate; the 3/s performance target remains separate and unproven. |
|
||||
| Platform | Windows desktop |
|
||||
| Target users | Genshin Impact players who want artifact decisions without complex optimizer setup |
|
||||
| Runtime | Electron app with React UI and TypeScript |
|
||||
@@ -32,8 +41,14 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
- Parse artifact name, slot, main stat, substats, set, equipped state, and confidence deterministically against that package.
|
||||
- Save weak or failed reads automatically as review samples and turn corrections into reusable local fixes.
|
||||
- Present finished scan results as a compact artifact list instead of a debug-heavy live stats surface.
|
||||
- Make scan readiness, the primary scan action, progress, and safe next steps understandable without opening technical views.
|
||||
- Make the primary scan cover the recognized owned Artifact inventory by
|
||||
default, while allowing an explicit limit by Artifact count or grid rows.
|
||||
- Keep extraction confidence separate from artifact value so uncertain OCR becomes review, not a misleading low score.
|
||||
- Provide a browsable local artifact inventory with detail views before promoting broader recommendations.
|
||||
- Die sichtbare Sternreihe einer nativen Artefaktkarte direkt erfassen: Nur
|
||||
explizit bestätigte 5★-Artefakte erhalten eine Roll-Efficiency-Bewertung;
|
||||
bestätigte 1–4★-Artefakte bleiben als manuell prüfbare Ergebnisse erhalten.
|
||||
- Keep the app offline-first and usable without optimizer imports, Enka, HoYoLAB,
|
||||
or any external scanner as a core dependency.
|
||||
- Re-introduce recommendations only after the scanner base is trustworthy.
|
||||
@@ -41,7 +56,9 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
## Non-Goals
|
||||
|
||||
- No memory reads, process hooks, game modification, packet inspection, or anti-cheat bypassing.
|
||||
- No automatic deleting, feeding, enhancing, or spending resources.
|
||||
- Keine automatische Bergung, Quick-Select-Auswahl, Löschung, Fütterung,
|
||||
Verbesserung, Sperr-/Entsperraktionen oder Ressourcenverbrauch — auch nicht
|
||||
für erkannte 1–4★-Artefakte.
|
||||
- No advanced formula editor or full power-user optimizer in the MVP.
|
||||
- No cloud sync by default.
|
||||
|
||||
@@ -56,19 +73,24 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
| FR-005 | Run a stable automatic inventory scan: detect grid, click tile, verify detail change, parse, store, continue, scroll, resume. | Must | Implemented for visible-inventory baseline |
|
||||
| FR-006 | Save low-confidence, failed, conflicting, or stale scans automatically as review samples with reason codes. | Must | Implemented baseline |
|
||||
| FR-007 | Apply local learned fixes from review corrections before every new parse. | Must | Implemented baseline |
|
||||
| FR-008 | Keep the scan UI operator-friendly: main preview first, debug in modals or drawers, completion summary after scan. | Must | Implemented baseline |
|
||||
| FR-008 | Keep the scan UI operator-friendly: readiness and primary action first, preview plus result rail during scanning, debug in collapsed or secondary surfaces. | Must | Implemented scanner-first baseline |
|
||||
| FR-009 | Provide account-level artifact triage after scanner trust is acceptable. | Should | Pending |
|
||||
| FR-010 | Provide 1-3 simple build suggestions per character from owned artifacts after scanner trust is acceptable. | Should | Pending |
|
||||
| FR-011 | Farming overlay for reward scans. | Later | Prototype shell |
|
||||
| FR-012 | Show active scan results as a minimal right-side rail with artifact number, name or compact fallback, value score, and status pill. | Should | Partial foundation |
|
||||
| FR-013 | Provide a scanned artifact inventory view with compact score pills, filters, sorting, and click-through detail. | Should | Partial foundation |
|
||||
| FR-014 | Provide artifact detail evaluation with screenshot/crops, parsed fields, OCR confidence, value reasons, and optional upgrade projection. | Should | Planned |
|
||||
| FR-012 | Show active scan results as a minimal right-side rail with artifact number, name or compact fallback, value score, and status pill. | Should | Implemented baseline |
|
||||
| FR-013 | Provide a scanned artifact inventory view with compact score pills, filters, sorting, and click-through detail. | Should | Implemented baseline |
|
||||
| FR-014 | Provide artifact detail evaluation with screenshot/crops, parsed fields, OCR confidence, value reasons, and optional upgrade projection. | Should | Implemented; packaged visual acceptance passed, under-level projection remains corpus-backed |
|
||||
| FR-015 | Provide clear loading, success, review, blocked, and error feedback through progress, spinners, skeletons, and mutation toasts without hiding durable state. | Should | Implemented UI baseline |
|
||||
| FR-016 | Die sichtbare Sternreihe je nativer Artefaktkarte erfassen; nur explizit bestätigte 5★-Artefakte bewerten, bestätigte 1–4★-Artefakte ohne Wertung mit Bild und Details in einer separaten schreibgeschützten `Nicht 5★`-Ansicht zeigen. | Must | Implementiert; aktueller 50er-Smoke bestanden |
|
||||
| FR-017 | Provide an English-default application interface and let the user switch the renderer to German in Settings without changing the scanner contract. | Should | Implemented; built-renderer acceptance passed, elevated packaged-executable runtime remains separate |
|
||||
| FR-018 | Let the user remove an incorrectly scanned artifact from local app data only, including its local crop when safe, without any Genshin mutation. | Should | Implemented, unit tested, and confirmation paths exercised; no data-removing test was run |
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
| Category | Requirement | Measurement |
|
||||
| --- | --- | --- |
|
||||
| Safety | Never perform irreversible in-game actions. | Code review and manual test |
|
||||
| Evaluation safety | Explizit visuelle 1–4★-Evidenz wird ausgeschlossen; fehlende, widersprüchliche oder unsichere Stern-Evidenz geht in `Review`. | Result-/Replay-Tests und Detailprüfung |
|
||||
| Performance | Single artifact read should feel interactive and batch scan should not stall on false progress. | Capture latency monitored manually; auto-scan stops on blocked verification |
|
||||
| Performance | A 100-artifact visible-inventory run should finish cleanly with low review/miss rates and report timing evidence. | `npm run scan:goal:validated` or `npm run scan:goal:validated:wait` quality-gated report |
|
||||
| Privacy | Captures and parsed data stay local by default. | No remote upload in scanner path |
|
||||
@@ -76,18 +98,20 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
| Score integrity | Extraction confidence and artifact value are separate concepts. | Review state can block or qualify a value score |
|
||||
| Learning loop | Scanner mistakes should become reusable local review samples. | `review-samples.jsonl` |
|
||||
| Maintainability | Scanner heuristics must be isolated and documented. | Parser tests, scan-loop tests, data generator, review sample pipeline |
|
||||
| Usability | The default path should expose one primary next action and keep advanced controls secondary. | Scanner-first navigation and desktop visual acceptance |
|
||||
| Accessibility | Focus, status, loading, and motion must remain understandable without relying on animation or color alone. | Keyboard review, ARIA status semantics, and `prefers-reduced-motion` |
|
||||
|
||||
## Tech Stack
|
||||
|
||||
| Area | Choice | Notes |
|
||||
| --- | --- | --- |
|
||||
| Desktop shell | Electron | Windows local app and overlay windows |
|
||||
| Desktop shell | Electron 43 | Windows local app and overlay windows |
|
||||
| Frontend | React + TypeScript + Vite | UI and client state |
|
||||
| Styling | CSS with dark purple glassmorphism system | Premium fintech-inspired visual direction |
|
||||
| Styling | CSS design tokens with dark Galaxy glass surfaces | Cinematic depth with restrained violet, cyan, gold, and semantic state accents |
|
||||
| OCR | Tesseract.js prototype plus deterministic normalization/derivation | OCR alone is not trusted as the decision source |
|
||||
| Capture | Electron desktopCapturer plus Windows GDI Smart Capture | GDI path is used for Genshin Smart Capture reliability |
|
||||
| Input automation | C# sidecar with elevated dev runner when needed | Live-validated for read-only inventory selection clicks; see `docs/AUTOMATION_LIVE_SCAN.md` |
|
||||
| Tests | Vitest + TypeScript checks | Current validation baseline; regression samples must expand |
|
||||
| Tests | Vitest 4 + TypeScript checks | OCR eval, helper/cleanup safety, Build-Fit contract/combination/profile/ranking/context gates, localization/deletion/timing tests, packaged acceptance runners, and saved-run replay |
|
||||
| Packaging | electron-builder | Configured in `package.json` |
|
||||
|
||||
## Runtime
|
||||
@@ -97,6 +121,10 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
| Local dev | `npm run dev` | Starts Vite and Electron |
|
||||
| Local dev with automation | `npm run dev:admin` | Required when `GenshinImpact.exe` is elevated; Windows blocks lower-integrity cursor/click input |
|
||||
| Production build | `npm run build` | Builds React and Electron main process |
|
||||
| Complete non-live gate | `npm run acceptance:offline` | Runs tests, OCR/assessment gates, saved-run validation, fresh package build/verification, audits, and diff checks |
|
||||
| Unpacked package | `npm run package:offline-check` | Builds helper/app and verifies ASAR/resources without launching Genshin |
|
||||
| Saved-run replay | `npm run scan:native:replay` | Re-evaluates the newest existing native scan without capture or input |
|
||||
| Saved-run evidence set | `npm run scan:native:validate:saved` | Validates requested accepted targets (bounded 20/50/100 or full 2,211), files, review provenance, replay, and projection boundaries without capture or input |
|
||||
| Preview | `npm run preview` | Browser preview only; capture bridge is unavailable |
|
||||
|
||||
## Current State Review
|
||||
@@ -108,8 +136,8 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
- A local canonical data package already exists in `src/data/genshinGameData.json`, generated from `genshin-db`.
|
||||
- The parser already uses known sets, pieces, slots, stat aliases, set aliases, character aliases, and derived slot/set mapping.
|
||||
- Review samples, learned replacements, parser notes, and stored artifacts already persist locally.
|
||||
- The scan surface has an initial recent-results rail backed by the newest
|
||||
stored artifacts.
|
||||
- The scan surface has a current-session result rail that starts empty; older
|
||||
persisted Artifacts remain available in the dedicated inventory view.
|
||||
- The auto-scan loop is no longer a naive click spammer: it has preflight, verification, miss handling, page fingerprinting, and stop conditions.
|
||||
- The scanner now has a validated visible-inventory path: 32 safe artifact
|
||||
targets per page, lookup-derived fields, fast OCR crop profile, and a
|
||||
@@ -133,16 +161,56 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
- Native IK-style Artifact capture is wired through the C# helper. It writes
|
||||
card crops and run artifacts for downstream OCR/parse processing instead of
|
||||
making React do per-artifact work in the hot capture loop.
|
||||
- The native post-capture processor can write `scan-results.json` and
|
||||
`processing-report.json`, preserve parser field confidence, match Artifact
|
||||
results against IK artifact set/piece/slot data, and keep store persistence
|
||||
opt-in.
|
||||
- The native result processor tails flushed capture jobs while the helper is
|
||||
still scanning, evaluates them with four bounded workers, publishes ordered
|
||||
live deltas, and writes incremental `scan-results.json` plus
|
||||
`processing-report.json`. Parser confidence and IK set/piece/slot conflicts
|
||||
remain reviewable, and store persistence stays opt-in.
|
||||
- The Inventory view now has an Artifact-only pipeline surface for scope,
|
||||
native capture, OCR queue, review gate, promotion, and evidence. Native rows
|
||||
expose crop previews, IK/GOOD metadata, dry-run promotion state, and a
|
||||
`Naechster Schritt` card.
|
||||
- The active UI intentionally hides weapon, material, and character-detail IK
|
||||
catalog coverage until those values are actually scanned.
|
||||
- Clean Artifact results now receive deterministic `roll-efficiency-v1`
|
||||
evaluations. Inventory/detail show score reasons and legal roll breakdown;
|
||||
build fit remains explicitly deferred.
|
||||
- Under-leveled, unambiguously identified 5-star Artifacts with four known
|
||||
substats receive a detail-only Worst/Middle/Best projection. 4-star,
|
||||
rarity-ambiguous, incomplete, or review data receives none.
|
||||
- Existing 20/50/100 native results passed five-repeat offline determinism
|
||||
replay; the approved 100-result run evaluated 100/100 with zero unknown.
|
||||
- An Electron 43 unpacked app passed 27/27 static package checks and live launch
|
||||
from `%TEMP%`. ASAR renderer, preload, IPC, packaged C# helper, IK resources,
|
||||
elevation telemetry, Inventory UI, and a packaged 5-result dry run passed.
|
||||
- The renderer now uses a scanner-first information architecture: Scanner,
|
||||
Artifacts, Review, and the clearly labeled Builds preview form the workspace;
|
||||
Overlay and Diagnostics remain secondary tools.
|
||||
- The Scanner surface leads with Genshin/app readiness, one primary start/stop
|
||||
action, a three-step empty state, explicit scan phases, and one modal for
|
||||
scan scope, capture source, and manual tools. Inventory loading uses
|
||||
skeletons/spinners, and confirmed
|
||||
promotion, review, import, and export mutations report through accessible
|
||||
toasts.
|
||||
- Shared Galaxy tokens, focus-visible treatment, micro-motion, and a
|
||||
`prefers-reduced-motion` fallback now define the visual/feedback baseline.
|
||||
- The renderer now defaults to English on a fresh, missing, or invalid locale
|
||||
setting. Users can choose German from Settings; the preference is local to the
|
||||
app and updates the document language. This changes application copy only:
|
||||
Smart Capture remains validated for the English Genshin UI.
|
||||
- Artifact detail now exposes a small, confirmed local-delete action. Native
|
||||
scan results are tombstoned rather than rewritten, their crop is removed only
|
||||
when it is contained in the selected run directory, and an exact linked Store
|
||||
record is removable only through an explicit local confirmation. No delete
|
||||
path calls the input helper or changes Genshin.
|
||||
- Native runs now retain an atomic `run-timing.json` record from request start
|
||||
through durable result reconciliation. It measures capture and processing
|
||||
separately and derives end-to-end duration from one wall-clock interval
|
||||
instead of adding overlapping phases.
|
||||
- The 136 historical full-inventory Review samples were audited against their
|
||||
crops. The confirmed corpus now distinguishes 128 explicit non-five-star
|
||||
entries, six exact duplicated-decimal repairs, one slot-safe artifact-name
|
||||
correction, and one incomplete entry that intentionally remains `Review`.
|
||||
|
||||
### What is still structurally weak
|
||||
|
||||
@@ -154,20 +222,28 @@ The app is not intended to replace deep min-max tools. It prioritizes time savin
|
||||
- Learned fixes currently focus on text replacements; they do not yet update crop offsets, UI profile variants, or scanner targeting rules in a structured way.
|
||||
- The scan page now has a minimalist recent-results rail, and the Inventory view
|
||||
can inspect native Artifact results, crop previews, IK match state, promotion
|
||||
dry-runs, and pipeline risk/status. Value scoring remains incomplete;
|
||||
single-result review/edit/approve is implemented and batch review is
|
||||
intentionally unavailable.
|
||||
- The new native IK-style path has same-session 20/50/100 live scale evidence
|
||||
with complete capture/result counts and safe Review gating. Later-session
|
||||
repeatability and packaged behavior remain open.
|
||||
dry-runs, pipeline risk/status, roll-efficiency reasons, and upgrade
|
||||
projection. Single-result review/edit/approve is implemented and batch
|
||||
review is intentionally unavailable.
|
||||
- The native IK-style path has fresh later-session 5/20/50/100 scale evidence,
|
||||
deterministic replay, focus-loss and stop evidence, plus a packaged 5-result
|
||||
runtime smoke. Non-16:9 and other UI-language profiles remain open.
|
||||
- Store promotion from native `scan-results.json` now supports one selected,
|
||||
confirmed result at a time with main-process revalidation and a durable log.
|
||||
Batch promotion intentionally remains unavailable.
|
||||
- Native Review results can be corrected and approved or rejected one at a
|
||||
time. Approval revalidates IK identity, canonical main values, and legal
|
||||
substat rolls, then feeds the existing review-to-eval candidate pipeline.
|
||||
- Recommendations and build logic exist, but artifact inventory, detail review,
|
||||
and value scoring should land first so recommendations have trustworthy inputs.
|
||||
- Recommendations and build logic exist, but build-aware fit must be designed
|
||||
separately from the now-implemented context-free roll-efficiency score.
|
||||
- The Builds navigation item now reads only the newest complete native run and
|
||||
can surface up to three source-bound, read-only profile suggestions. It must
|
||||
not imply character ownership, team, weapon, rotation, DPS, or optimizer
|
||||
certainty; the built-renderer acceptance now passes, while an elevated
|
||||
packaged-executable runtime remains a separate packaging check.
|
||||
- The historical 136-item Review queue is not a source of labels by itself.
|
||||
Its audit added only visually confirmed parser/corpus cases; the one
|
||||
incomplete crop remains fail-closed in `Review`.
|
||||
- Repeatability and 3 artifacts/second are still open; speed work should not
|
||||
outrank result clarity, inventory UX, or corpus growth while the current path
|
||||
is stable.
|
||||
@@ -183,10 +259,30 @@ the helper captures Artifact card crops quickly, while OCR, parsing, review,
|
||||
promotion, and value evaluation run downstream.
|
||||
|
||||
The next product phase is not broad category expansion. Weapons, materials, and
|
||||
character details stay out of active scope. The priority is later-session
|
||||
native repeatability, value
|
||||
evaluation, and detail explanations before recommendations become the core
|
||||
product surface.
|
||||
character details stay out of active scope. Packaged/live acceptance passed on
|
||||
2026-07-10 for the bounded 5/20/50/100 scanner and packaged 5er. A later real
|
||||
Settings-UI run also accepted the revised Artifact-limit path at 5/5 through
|
||||
preflight, capture, processing, parsing, and the session result rail with no
|
||||
review, processing error, or persistence. The packaged Settings UI then
|
||||
accepted a one-row limit as an eight-Artifact target at 8/8 with the same safe
|
||||
outcome. The complete Settings-UI full-owned-inventory soak then accepted the
|
||||
OCR-owned target 2,211 with exact 2,211 captures/results across 70 pages. After
|
||||
one evidence-driven parser correction, the current packaged reprocess completed
|
||||
2,211/2,211 with 136 Review (6.15%), zero errors/writes, and zero saved-run
|
||||
validation issues. The current Build-Fit checkpoint now has four sourced
|
||||
profiles, profile-expiry gates, a deterministic non-Roll-Efficiency evidence
|
||||
ranker, explicit session-only Furina context, and a read-only Builds surface.
|
||||
The renderer now defaults to English with a German Settings option, and local
|
||||
artifact removal is deliberately confined to app-local result/store records and
|
||||
contained crops. The current scanner also writes durable shared-clock timing
|
||||
evidence and has a visually reviewed corpus correction for the audited
|
||||
136-entry Review set. These current-build changes are offline/unit validated,
|
||||
and the built-renderer Builds/UI acceptance passed, including the local-delete
|
||||
confirmation probes. That is not an elevated packaged-executable claim. The
|
||||
current elevated development 50-artifact native smoke now passes with complete
|
||||
timing evidence and zero writes; its `28,022 ms` end-to-end result does not
|
||||
prove the separate 3/s target. The remaining Review corpus continues to grow
|
||||
only from visually confirmed labels.
|
||||
|
||||
## Product Direction
|
||||
|
||||
@@ -196,11 +292,23 @@ product surface.
|
||||
- External scanners are not runtime dependencies. The app owns its scan
|
||||
choreography, OCR, and quality gates.
|
||||
- Self-learning stays deterministic and local first: review samples, aliases, crop offsets, and UI profile tuning before any ML retraining discussion.
|
||||
- The scan workspace should be an operator surface: preview, live result rail,
|
||||
Stop, status, and review access. Detailed stats and debug evidence belong in
|
||||
diagnostics, summaries, or artifact detail.
|
||||
- The scan workspace should be an operator surface: the left area shows preview
|
||||
when idle and owns capture-versus-target progress during a run; the right
|
||||
rail contains current-session results plus independent evaluation progress.
|
||||
Stop, status, and review access remain visible. Detailed debug evidence
|
||||
belongs in diagnostics, summaries, or artifact detail.
|
||||
- Primary navigation should follow the user journey: scan, inspect artifacts,
|
||||
review uncertainty, then enter future build guidance. Overlay and diagnostics
|
||||
remain tools instead of competing with that journey.
|
||||
- Feedback should match the action: progress for long-running scans, skeletons
|
||||
for content loading, inline state for durable blockers, and toasts for the
|
||||
outcome of explicit mutations.
|
||||
- Artifact value scoring must not hide OCR uncertainty. `Review` is a distinct
|
||||
outcome, not just a weak artifact score.
|
||||
- Explizit bestätigte visuelle 1–4★-Artefakte sind keine
|
||||
Bergungs-/Lösch-Empfehlung: Sie erscheinen nur in der schreibgeschützten
|
||||
`Nicht 5★`-Ansicht mit Bild und Details zur manuellen Prüfung. Eine
|
||||
fehlende oder widersprüchliche Sternreihe bleibt `Review`.
|
||||
|
||||
## Execution Plan
|
||||
|
||||
@@ -212,9 +320,15 @@ Outcome:
|
||||
- Scan completion popup summarizes scanned, stored, duplicates, review samples, blocked reason, and elapsed time.
|
||||
|
||||
Status:
|
||||
- Mostly done for the scanner baseline. The Diagnose/dev surface is separated
|
||||
and scrollable, scan summaries are compact, and the normal Auto-Scan path is
|
||||
guarded. Further UI polish remains useful but no longer blocks scanner merge.
|
||||
- Implemented as the scanner-first Galaxy baseline. Readiness and the primary
|
||||
scan action lead the page, the left surface owns capture progress, and the
|
||||
larger right surface owns ordered live results plus compact independent
|
||||
evaluation progress. The current-session result rail starts empty, advanced
|
||||
controls open in a modal without shifting the workspace, and Diagnose remains
|
||||
a separate scrollable tool. The
|
||||
Artifact-limit path and consolidated progress/result layout passed a real
|
||||
five-result Settings-UI run, the one-row path at 8/8, and the full-owned path
|
||||
at 2,211/2,211 with current-package Review below the 15% gate.
|
||||
|
||||
### Phase 1 - Canonical game data package
|
||||
|
||||
@@ -318,7 +432,11 @@ Outcome:
|
||||
Status:
|
||||
- Prepared in code for text replacements, field aliases, constrained fixes,
|
||||
crop adjustment proposals, and UI-profile adjustment proposals. Crop/profile
|
||||
changes still require live review before being auto-applied.
|
||||
changes still require live review before being auto-applied. The current
|
||||
review-corpus checkpoint adds only visually confirmed cases: exact duplicate
|
||||
decimal punctuation is repaired, and a partial artifact name is canonicalized
|
||||
only when independent, high-confidence slot evidence leaves one safe match.
|
||||
Ambiguous or incomplete crops remain `Review`.
|
||||
|
||||
### Phase 6 - Minimal scan result rail and artifact inventory
|
||||
|
||||
@@ -334,31 +452,46 @@ Outcome:
|
||||
|
||||
Status:
|
||||
- Started with a scan result rail in the scan surface and an `Inventory` view.
|
||||
The rail can show native `scan-results.json` entries after post-processing
|
||||
and falls back to recent stored artifacts. The inventory browser can filter,
|
||||
The rail shows native `scan-results.json` entries from the current app scan
|
||||
session after post-processing and does not preload older stored/native rows
|
||||
at startup. The inventory browser can filter,
|
||||
sort, inspect native/store/snapshot rows, and preview native card crops from
|
||||
the selected run directory. It also exposes the current IK inventorylist
|
||||
version, active Artifact-only scope, and pipeline status for capture,
|
||||
post-processing, review, promotion, and evidence. Native Artifact rows carry
|
||||
IK/GOOD match status from the post-capture processor and a dry-run promotion
|
||||
decision that shows whether a native result is speicherbar, already stored,
|
||||
review-only, or blocked without writing to the store. Detail review exists;
|
||||
deterministic value score and value reasons are still pending. See
|
||||
review-only, or blocked without writing to the store. Detail review,
|
||||
deterministic roll-efficiency reasons, evaluated/open filters, score sorting,
|
||||
and under-level projection are implemented. The browser prioritizes the
|
||||
collection, filters, selected detail, and explicit next actions; technical
|
||||
pipeline evidence remains available in collapsible detail. See
|
||||
[scanner-results-inventory-roadmap.md](scanner-results-inventory-roadmap.md)
|
||||
for the implementation phases and acceptance criteria.
|
||||
for the implementation phases and acceptance criteria. The separate,
|
||||
read-only `Nicht 5★` filter retains explicitly recognized 1–4★ native
|
||||
results with their crop and details, excludes them from roll evaluation, and
|
||||
exposes no in-game action. A confirmed local-delete action can remove a
|
||||
wrong native result from the visible local inventory through an append-only
|
||||
tombstone and safely contained crop cleanup; it can remove a Store-only row
|
||||
or exact linked Store record only locally and never changes Genshin.
|
||||
|
||||
### Phase 7 - Artifact detail evaluation and upgrade projection
|
||||
|
||||
Outcome:
|
||||
- Artifact detail explains parsed fields, OCR confidence, scoring reasons, and
|
||||
review needs.
|
||||
- Upgrade projection is available only when enough data is known and is labeled
|
||||
as probabilistic, with worst/middle/best projected value scores.
|
||||
- Upgrade projection is available only for unambiguously identified 5-star data
|
||||
with four known legal substats and is labeled as probabilistic, with
|
||||
worst/middle/best projected value scores.
|
||||
- Low-confidence OCR disables or qualifies value conclusions instead of showing
|
||||
false certainty.
|
||||
|
||||
Status:
|
||||
- Planned after the scan result rail and inventory data contracts.
|
||||
- Implemented as `roll-efficiency-v1` plus detail-only
|
||||
`roll-efficiency-projection-v1`. Static/build/replay, fresh dev 5/20/50/100,
|
||||
packaged runtime, and final Inventory visual acceptance pass. The new live
|
||||
100 contained only +20 Artifacts, so under-level projections remain covered
|
||||
by the confirmed saved-run corpus rather than a new live sample.
|
||||
|
||||
### Phase 8 - Recommendations come back on top of a trusted scanner
|
||||
|
||||
@@ -367,35 +500,51 @@ Outcome:
|
||||
- Recommendations explain uncertainty and surface conflicts instead of pretending perfect certainty.
|
||||
|
||||
Status:
|
||||
- Next major product area after inventory, detail evaluation, repeatability, and
|
||||
corpus work. Do not promote recommendation UX until stored artifact quality is
|
||||
backed by more confirmed review samples and repeat live scan runs.
|
||||
- `build-fit-contract-v1` continues to keep per-Artifact and five-piece
|
||||
assessments score-free. On top of it, the offline-tested
|
||||
`build-fit-evidence-ranking-v1` selects at most three non-overlapping safe
|
||||
combinations from the newest complete native run. The sourced corpus now
|
||||
covers Furina Solo-Hydro C0-C1, Neuvillette Charged Attack, Raiden off-field
|
||||
Hyperbloom, and Nahida off-field Deepwood. Profiles expire explicitly;
|
||||
Roll-Efficiency and OCR confidence are not ranking inputs. Furina's required
|
||||
whole-build ER target accepts only explicit, session-only user context and
|
||||
otherwise stays deferred. The Builds surface explains Set/Main-Stat/Substat
|
||||
coverage, sources, warnings, and uncertainty without writing data or sending
|
||||
game input. A built-renderer acceptance now covers fresh English locale,
|
||||
German switching/restoration, Builds loading/context/focus, reduced motion,
|
||||
overflow, and native plus Store local-delete confirmation probes. It is not evidence of an
|
||||
elevated packaged-executable launch; that runtime boundary remains separate.
|
||||
See
|
||||
[BUILD_FIT_CONTRACT_V1.md](BUILD_FIT_CONTRACT_V1.md).
|
||||
|
||||
## Immediate Next Implementation Order
|
||||
## Immediate Next Validation Order
|
||||
|
||||
1. Add deterministic Artifact value evaluation with explainable reasons.
|
||||
2. Keep the visible-inventory scanner path as the production baseline and avoid
|
||||
promoting `auto-entry`, `direct-inventory`, or `paimon-menu` until they pass
|
||||
their own low-limit live validations.
|
||||
3. Keep the active native scope artifact-only until weapons, materials, and
|
||||
character details are actually scanned.
|
||||
4. Finish the scan result and inventory detail contracts from
|
||||
[scanner-results-inventory-roadmap.md](scanner-results-inventory-roadmap.md),
|
||||
preserving separate extraction confidence and artifact value.
|
||||
5. Finish value reasons in the existing Artifact inventory detail view before
|
||||
expanding broad build recommendations.
|
||||
6. Keep the existing scan preview/result rail and Inventory workflow compact;
|
||||
move new diagnostics behind the dedicated diagnostics surface.
|
||||
7. Continue growing the confirmed OCR corpus from review samples exported by
|
||||
`npm run eval:review-candidates` and prepared through
|
||||
`npm run eval:prepare-confirmed`.
|
||||
8. Repeat live scanner runs in later sessions to prove repeatability across
|
||||
pages, locked/unlocked artifacts, equipped footers, and duplicate handling.
|
||||
9. Continue the optional `3 artifacts/second` work only if the next change can
|
||||
reduce OCR/capture transport time without weakening quality gates.
|
||||
10. Start recommendation/product UX work only after inventory/detail evaluation,
|
||||
repeat scan quality, and confirmed corpus coverage are strong enough to trust
|
||||
stored artifacts.
|
||||
1. The final current-build offline gate passed after the 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.
|
||||
2. Preserve the passing built-renderer acceptance as renderer evidence, but
|
||||
separately verify an elevated packaged-executable launch/UAC bridge before a
|
||||
binary release claim. It is not a substitute for scanner smoke evidence.
|
||||
3. The current elevated development 50-artifact smoke passed with full
|
||||
reconciliation, zero Review/errors/writes, and
|
||||
`requestToResultsReconciledMs=28,022`. This is a functional/safety gate;
|
||||
it does not claim 3 Artifacts/s.
|
||||
4. Clean generated workspace output, commit the coherent checkpoint, and push
|
||||
the intended branch. A package-runtime/UAC test is required only for that
|
||||
separate claim.
|
||||
5. Continue review-corpus growth only from visually confirmed crops. Keep
|
||||
explicit 1–4★ evidence excluded, ambiguous evidence in `Review`, and reject
|
||||
aliases that cannot be justified by independent field evidence.
|
||||
6. Refresh source-bound profiles before expiry and add Golden plus
|
||||
Review/low-confidence adversarial fixtures for each additional profile.
|
||||
7. Keep the bounded wheel reset as the production baseline. Benchmark a `B`
|
||||
plus Artifact-tab reopen only as a separate guarded experiment before any
|
||||
reset strategy change.
|
||||
8. Keep Build-Fit profile suggestions read-only and Artifact-only until an
|
||||
explicit product decision adds owned-character, weapon, team, and rotation
|
||||
inputs with their own sources.
|
||||
|
||||
## Open Questions
|
||||
|
||||
@@ -403,7 +552,7 @@ Status:
|
||||
| --- | --- |
|
||||
| Is the current C# helper sufficient for production packaging, or does a later Rust/C++ sidecar still materially reduce latency or packaging risk? | Open |
|
||||
| When should UI-profile learning be allowed to change crop geometry automatically versus requiring review approval? | Open |
|
||||
| What scan-quality threshold is high enough before recommendations should be considered user-facing again? | Open |
|
||||
| What exact first-pass value formula should drive the `0-100` artifact score before build-aware recommendations exist? | Open |
|
||||
| Which upgrade projection model is honest enough for early UX: deterministic roll buckets, probability-weighted outcomes, or a deliberately simple best/middle/worst estimate? | Open |
|
||||
| What scan-quality threshold is high enough before profile suggestions can be called live-accepted? | Scanner gate passed for accepted 16:9 English Artifact scope; Build-Fit unit/repository gate and built-renderer acceptance passed, while elevated packaged-executable runtime and current scanner smoke remain separate |
|
||||
| What exact first-pass value formula should drive the `0-100` artifact score before build-aware recommendations exist? | Resolved for V1: legal roll-tier efficiency only; build fit remains separate |
|
||||
| Which upgrade projection model is honest enough for early UX: deterministic roll buckets, probability-weighted outcomes, or a deliberately simple best/middle/worst estimate? | Resolved for V1: legal Worst/Middle/Best roll-efficiency bounds with explicit uncertainty |
|
||||
| Which Genshin UI languages should be supported after English once the scanner contract is stable? | Open |
|
||||
|
||||
Reference in New Issue
Block a user