Repository navigation
fix: make plain confirmation accept the visible reading - #18
helloiamnotth3devnicetomeetyou merged 1 commit into
Conversation
Signed-off-by: snowykr <snowykr22@gmail.com>
helloiamnotth3devnicetomeetyou
left a comment
There was a problem hiding this comment.
Reviewed the exact change from ce7bd93 to 8b00148. No blocking findings in the standards or issue #17 contract review.
Independently verified on Windows:
- cargo test --workspace --all-features
- cargo fmt --all -- --check
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- The focused unfinished-reading and Japanese confirmation regressions fail on the exact upstream baseline and pass on this patch.
- 9,000 additional deterministic synthetic sequences preserve the visible reading on confirmation, except the permitted pending Japanese n -> ん completion.
- Both session snapshots retain all 2,023 final texts; the 522/597 changed event rows are preview changes.
The first-key continuation lifecycle, explicit-correction provenance, shared Japanese rendering, and visible-candidate learning are consistent with the proposed contract. The disclosed first-key Korean preview tradeoff and explicit correction for a mistaken Japanese preview are understood.
Issue #16 remains a separate classifier regression and is not resolved by this PR. Physical-keyboard timing, installed IME behavior, and the submitted accuracy/performance measurements were not independently revalidated.
Thanks for the careful reproductions and for documenting the tradeoffs and evidence limits.
9c02a6d
into
iamallyouneed:main
Summary
Closes #17. Builds on #15's completed-reading protection; does not change the Shift-overlap classifier or address #16.
Plain confirmation accepts the reading already displayed, including unfinished input. It no longer means “run language selection again with final context.”
n→ん, not an English segment's finaln. Learn the visible candidate with its original reading/context metadata.Tom'sdoes not rely on confirmation to repairTom'ㄴ. Retain a separate, one-use partial-language seed for the next letter's original hysteresis transition. Force, pin, reset and conversion transitions invalidate it.Regressions and intentional behavior
Observed baseline failures:
ㄴ→son confirmation;わたしはg→わたしhag; and a deterministic live-converter fixture replacing今日はいい天気でswithきょうはいいtenkides. Added tests fail against exact upstreamce7bd934and pass on this patch.The matrix covers Enter, Other, failed Tab, direct commit/new-context commit, non-converting punctuation/Space, pending consonants and
n, English segments endingn, live conversion off/on, candidate-learning metadata, explicit conversion, Return consumption, forced/pinned edits, first-letter continuation lifecycle and numeric context. FFI coverage also asserts UTF-16 caret positions, surrounding text, consumed boundaries and unavailable surrounding-text access.The existing
ozzytest now explicitly corrects its visible Japanese guess with Esc before Space, rather than depending on a hidden final English decision. That is intentional: a mistaken preview needs explicit correction, not an unseen language switch on confirmation.The two session golden snapshots are intentionally updated for preview events: 522/674 enko rows and 597/1,349 enkoja rows change events; all 2,023 final texts remain identical. Decision golden snapshots are unchanged. The repository treats these snapshots as binary;
git diff --textexposes their event changes.Local verification completed before opening this PR
On Apple Silicon macOS:
cargo test --workspace --exclude tacit-tip: 332 passed, one existing ignored subprocess helper.cargo test --workspace --exclude tacit-tip --all-features: 472 passed, two existing ignored subprocess helpers (their parent concurrency tests pass).cargo fmt --all -- --check; default and all-feature workspace/all-target Clippy with-D warnings;git diff --check.Windows-only
tacit-tipis excluded on macOS as in Unix CI. Windows/Linux/Android runtime, physical keyboard timing and a newly installed IME were not tested. Universal Swift linking is not claimed: the previously established local x86_64 Swift compatibility-library limitation remains; no packaging workaround was added. Platform source/ABI is unchanged, and the existing native controller tests were rerun. Installed app, personal settings/learning and rollback files were not changed.Accuracy and performance scope
Compared exact upstream baseline with the final candidate, using the existing evaluators and the same datasets:
--profile enko/enkoja --corpus 3000: 127/156 non-timing model metrics unchanged. This is classifier-level evidence, not proof of session confirmation behavior.InputSession + FakeTextFieldswitching replay,--corpus 3000 --fold 0/3, covers 7,050 lines across English/Korean sentences, Korean comments and three scenario sets. No previously correct complete sentence became incorrect; all six bucket final-accuracy values are unchanged. One already-incorrect mixed comment changes output (rlac→김ㅊ, intended김c); it remains incorrect. This is not a claim of zero per-character changes or representative accuracy.An initial implementation contaminated growing-word hysteresis with the standalone first-key guess. The wider replay caught
10년/소재regressions despite the focused suites passing. The separate continuation seed and focused lifecycle regressions address that cause; the final case-level comparison above was rerun afterward.No release or app installation is included.