{ "created_at_jst": "2026-06-14 13:58:15 JST", "purpose": "Practical Windows hybrid acceptance refresh after adding the generic general-phrase pre-neural rescue stage (src/general_phrase.py). Practical gates re-run with current code; strict-neural carried forward (bypasses FastConverter, unaffected; checkpoint hashed).", "claim_boundary": "Practical Windows hybrid fast path is 100% on the listed acceptance fixtures, including post-g85 large realworld uppercase/lowercase/space/hyphen noise gates. Strict neural single checkpoint is a normalized-input 98% claim; raw no-normalization separator/case noise remains below 95% and is report-only.", "practical_windows_hybrid_fast_path": { "fixed_gold_fast": { "overall": { "samples": 99, "exact": 99, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.0 }, "sources": { "lexicon": 99 } }, "typo_stress_fast": { "overall": { "samples": 1980, "exact": 1980, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.0 }, "sources": { "lexicon": 1932, "lexicon_fuzzy": 47, "cache": 1 } }, "realworld_noise_fast": { "overall": { "samples": 594, "exact": 594, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.0 }, "sources": { "lexicon": 594 } }, "expanded_realworld_case_space_hyphen_fast": { "overall": { "samples": 1188, "exact": 1188, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.0 }, "sources": { "lexicon": 1188 } }, "expanded_full_v1_case_space_hyphen_fast": { "overall": { "samples": 9432, "exact": 9432, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.07 }, "sources": { "lexicon": 5796, "choice_feedback": 1308, "lexicon_segment": 167, "cache": 2145, "lexicon_segment_fuzzy": 2, "lexicon_fuzzy": 10, "lexicon_segment_long": 2, "lexicon_anchor_fuzzy": 2 } }, "large_realworld_case_space_hyphen_seedrounds5_fast": { "overall": { "samples": 5675, "exact": 5675, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.0 }, "sources": { "lexicon": 5675 } }, "large_full_v1_case_space_hyphen_seedrounds5_fast": { "overall": { "samples": 45598, "exact": 45598, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.06 }, "sources": { "lexicon": 27633, "choice_feedback": 6510, "lexicon_segment": 167, "cache": 11272, "lexicon_segment_fuzzy": 2, "lexicon_fuzzy": 10, "lexicon_segment_long": 2, "lexicon_anchor_fuzzy": 2 } }, "long_composition_fast": { "overall": { "samples": 800, "exact": 800, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.15, "latency_ms_p95": 0.23 }, "sources": { "lexicon_segment": 800 } }, "fresh_case_space_hyphen_fast": { "overall": { "samples": 2358, "exact": 2358, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.39 }, "sources": { "lexicon": 1449, "choice_feedback": 327, "lexicon_segment": 167, "cache": 399, "lexicon_segment_fuzzy": 2, "lexicon_fuzzy": 10, "lexicon_segment_long": 2, "lexicon_anchor_fuzzy": 2 } } }, "strict_neural_single_checkpoint": { "strict_neural_full_v1_normalized": { "summary": "artifacts/neural_only/g09_g17_interp_a75_full_v1_val_norm_lenbucket_summary.json", "overall": { "samples": 786, "exact": 771, "failures": 15, "exact_pct": 98.09, "cer_pct": 0.27, "latency_ms_avg": 190.67, "latency_ms_p50": 56.16, "latency_ms_p95": 1067.02 } }, "strict_neural_fresh_case_space_hyphen_normalized": { "summary": "artifacts/neural_only/g09_g17_interp_a75_case_space_hyphen_noise_fresh3x_seed20260624_norm_lenbucket_summary.json", "overall": { "samples": 2358, "exact": 2313, "failures": 45, "exact_pct": 98.09, "cer_pct": 0.27, "latency_ms_avg": 158.38, "latency_ms_p50": 45.12, "latency_ms_p95": 774.12 } }, "strict_neural_case_space_hyphen_raw_no_normalization": { "summary": "artifacts/neural_only/g09_g17_interp_a75_case_space_hyphen_noise_raw_lenbucket_summary.json", "overall": { "samples": 744, "exact": 695, "failures": 49, "exact_pct": 93.41, "cer_pct": 2.88, "latency_ms_avg": 124.78, "latency_ms_p50": 57.47, "latency_ms_p95": 229.66 } } }, "shared_normalization_refactor_20260613": { "status": "passed", "normalization_module": "src/normalization.py", "normalization_version": "nfkc-soft-separator-v1-20260612", "changed_files": [ "src/normalization.py", "src/infer.py", "src/eval.py", "src/infer_fast.py" ], "py_compile": "passed for normalization.py, infer.py, eval.py, infer_fast.py, infer_candidates.py, check_acceptance_98.py", "normalization_contract_check": "shared normalize_input and infer_fast re-export match for mixed case, fullwidth, soft separators, and zero-width controls", "strict_neural_cli_smoke": { "command": "python src\\infer.py --model runs\\neural_only_98_g09_g17_interp_a75 \"KyOu-Ha Ii-TeNkI DeSu\"", "output": "今日はいい天気です", "latency_ms": 762 }, "fresh_case_space_hyphen_fast_path_rerun": { "overall": { "samples": 2358, "exact": 2358, "exact_pct": 100.0, "cer_pct": 0.0, "latency_ms_p50": 0.0, "latency_ms_p95": 0.39 }, "note": "Re-run on the current general-phrase code; fast path, no neural fallback." }, "acceptance_gate_after_refactor": { "command": "python src\\check_acceptance_98.py --summary artifacts\\acceptance_20260613\\summary.json --out artifacts\\acceptance_20260613\\gate_report.json", "status": "passed", "required_gates": "10/10" } }, "general_phrase_refresh_20260614": { "fast_path_version_note": "general-phrase rescue inserted after generic fallback, before neural model", "regression_proof": "all practical gates re-ran at frozen exact counts with zero general_phrase/canonical/model sources", "new_files": [ "src/general_phrase.py", "src/eval_general_phrase.py" ], "self_test": "python src/eval_general_phrase.py -> 31 passed" }, "evidence_hashes": { "algorithm": "sha256", "scope": "general-phrase acceptance refresh: sources + datasets + lexicon + model + practical records; strict-neural metrics carried forward, checkpoint hashed.", "generated_at_jst": "2026-06-14 13:58:15 JST", "files": { "artifacts/acceptance_20260614_general_phrase/expanded_full_v1_case_space_hyphen_fast/records.jsonl": { "bytes": 7339374, "sha256": "1381b8522899164dbc7ea78b5c37715723bf337cf2bc0a4da54c4e504d9fccd8" }, "artifacts/acceptance_20260614_general_phrase/expanded_full_v1_case_space_hyphen_fast/summary.json": { "bytes": 51733, "sha256": "894ed2707a49eb82cff5b01b699a514b70dadd8ba6a0037a903bb1b5dcdb6a5b" }, "artifacts/acceptance_20260614_general_phrase/expanded_realworld_case_space_hyphen_fast/records.jsonl": { "bytes": 463597, "sha256": "bf726486fab7f4fbc030b65568cb050b2c615f0cdafa9878610106ce6c44cdac" }, "artifacts/acceptance_20260614_general_phrase/expanded_realworld_case_space_hyphen_fast/summary.json": { "bytes": 5220, "sha256": "d1417c0a611544b6fde6be24e6af5eadcb371663a5d66de05829f321ea2af60b" }, "artifacts/acceptance_20260614_general_phrase/fixed_gold_fast/summary.json": { "bytes": 2917, "sha256": "036ddccbfe102c49e998836f8f741f64577b1b98901c67f5b3f3fed643c97ff9" }, "artifacts/acceptance_20260614_general_phrase/fresh_case_space_hyphen_fast/records.jsonl": { "bytes": 1277065, "sha256": "152b1cacb85a49a2b5dc4ab74a91413246330b90d4b4de52052a26d9a469bb72" }, "artifacts/acceptance_20260614_general_phrase/fresh_case_space_hyphen_fast/summary.json": { "bytes": 48738, "sha256": "37e965a6a329366747821621d32bc008531e5a14ef4c3578f79df88377d965b0" }, "artifacts/acceptance_20260614_general_phrase/large_full_v1_case_space_hyphen_seedrounds5_fast/records.jsonl": { "bytes": 35910167, "sha256": "d7a65c501eada4c79374857e0930a2e33ac7f26afc082ea1ad58a7ecf70f6b09" }, "artifacts/acceptance_20260614_general_phrase/large_full_v1_case_space_hyphen_seedrounds5_fast/summary.json": { "bytes": 51941, "sha256": "8affcb360ba61b29cdfc864a99847be4575ecdf2c943a28fcca23be14c506cdc" }, "artifacts/acceptance_20260614_general_phrase/large_realworld_case_space_hyphen_seedrounds5_fast/records.jsonl": { "bytes": 2210561, "sha256": "d3f3572555c28cb101c049c86398bd5e6355917a71e1fe0e9d940f1a9f590c85" }, "artifacts/acceptance_20260614_general_phrase/large_realworld_case_space_hyphen_seedrounds5_fast/summary.json": { "bytes": 5450, "sha256": "4250f89478d34ea6e1d703df3f6ca61af47f68a91fb6a2fddc7e9dad0f81dadd" }, "artifacts/acceptance_20260614_general_phrase/long_composition_fast/records.jsonl": { "bytes": 450476, "sha256": "840cec213d3667034bb9b8c7b2186af23f31fc72ece9003f09d01f07eb688403" }, "artifacts/acceptance_20260614_general_phrase/long_composition_fast/summary.json": { "bytes": 17562, "sha256": "50089f8655dbd73b46d037ad18a5fba1f7d84fd4371346ed739c4a524006075f" }, "artifacts/acceptance_20260614_general_phrase/realworld_noise_fast/records.jsonl": { "bytes": 235956, "sha256": "9d95e339821df321b2c89cef734d47f967fce70df8a8245bd460e01e12694e3b" }, "artifacts/acceptance_20260614_general_phrase/realworld_noise_fast/summary.json": { "bytes": 4095, "sha256": "3a3d8459fa6b6a2f3e60c8852f3d0045fc2c6b1a6e5dbcc723d51e82f272a1c1" }, "artifacts/acceptance_20260614_general_phrase/typo_stress_fast/records.jsonl": { "bytes": 576209, "sha256": "53b32cec1e587003d69270bf8a7f535fc23fa8634d05315e425879273fdb77c6" }, "artifacts/acceptance_20260614_general_phrase/typo_stress_fast/summary.json": { "bytes": 3009, "sha256": "c3b11cf890761561e35220a8e2c273cdd725e9373627545952b6c7780105060e" }, "artifacts/lexicon/adversarial_piece_aliases.json": { "bytes": 245, "sha256": "6c00247a7ff395f7383562ca7194ea7f6ace20b2c36e721c7f3f5e5f2a88a9cb" }, "artifacts/lexicon/candidate_feedback.jsonl": { "bytes": 776068, "sha256": "44993bcb5d6b317c6187f915119c80761bbe91bc02e10c5a52b4773f08d98f79" }, "artifacts/lexicon/general_reading_lexicon.json": { "bytes": 444610, "sha256": "c749ac6f9975cb65db7d6ec30c32190cb17274b1412c33ad3a3f43e280cd60d9" }, "artifacts/lexicon/romaji2ja.json": { "bytes": 4885, "sha256": "2cd138984aa3851625767e94dc22b89dd3dbce3234fd640ecfc0594b24fb95e5" }, "artifacts/lexicon/romaji2ja_feedback_95.json": { "bytes": 7938, "sha256": "77179f846fb219df770161a9ea79a05a7fa3dd23b24218d5bace17f5a19295c9" }, "artifacts/lexicon/romaji2ja_typo_95.json": { "bytes": 2467751, "sha256": "e9e801c9058da9669bcde63843019e57934280e89d81ce7694e4474fbfc4d342" }, "artifacts/neural_only/full_v1_val.jsonl": { "bytes": 282144, "sha256": "130cbf7a611a55b9802f614f98b364318a3efd61be0e0d98df8b9fcb638ff432" }, "artifacts/neural_only/full_v1_val_case_space_hyphen_noise_fresh3x_seed20260624.jsonl": { "bytes": 1137888, "sha256": "d3eb3cae512ef4bbc735b151fdf7a27282e07a28f09fd82a16e601616520086d" }, "data/eval_gold/dev_known.jsonl": { "bytes": 2289, "sha256": "5ef1602339bc1ece0d1e8ecea289480453ac2b4c5e74bea2312954e33693dad4" }, "data/eval_gold/hard_dev.jsonl": { "bytes": 2236, "sha256": "b9917819f9ab6607ceafd75b16f8d0a7e74617c2bee9510e93e50e9ef9d66337" }, "data/eval_gold/hard_holdout.jsonl": { "bytes": 2707, "sha256": "0135cfb8ac3b87069daaf133c0f50292814fad83806989ff6eca02b18b1783ad" }, "data/eval_gold/holdout_known.jsonl": { "bytes": 1936, "sha256": "32cd493c2c6f90dc4358943c80b589b19f1edf736ed6047877ad39acee6be217" }, "runs/best/final_model/config.json": { "bytes": 1169, "sha256": "9aa565befa424a94bc44a4aecad4fea90435e43472ee0e7f0cfdd0dd20610d61" }, "runs/best/final_model/generation_config.json": { "bytes": 111, "sha256": "4c9855f124d793bd4ea49077401d04dd6e4df57331e6fc1ffaaf2ae2a24e329c" }, "runs/best/final_model/model.safetensors": { "bytes": 1123490064, "sha256": "b10af746fc9dc22ea2668cd1e3f71ea9b058990da038d241a5f4d2bf5c30ad0a" }, "runs/best/final_model/tokenizer.json": { "bytes": 572889, "sha256": "2a2da5a56343c4f8288603b2172c5759ab917c238db5bcc2f8ff65d41b70e34b" }, "runs/neural_only_98_g09_g17_interp_a75/config.json": { "bytes": 1221, "sha256": "1c3d6d2f6635a73039d7f85111cc1ec5e3e941870bfbe829111b2e8becf66225" }, "runs/neural_only_98_g09_g17_interp_a75/generation_config.json": { "bytes": 117, "sha256": "dac0e96bcffb9a37372e4f5d38d36a371d2cb682a1cbe24111a3f0446e897110" }, "runs/neural_only_98_g09_g17_interp_a75/model.safetensors": { "bytes": 1156258144, "sha256": "97cd23ebb00582d461c04c0e8ed3ebd140395b298aa80f98f73cdfb5aa67b332" }, "runs/neural_only_98_g09_g17_interp_a75/tokenizer.json": { "bytes": 572889, "sha256": "2a2da5a56343c4f8288603b2172c5759ab917c238db5bcc2f8ff65d41b70e34b" }, "src/build_acceptance_refresh.py": { "bytes": 10976, "sha256": "07715a9e4ded35d7ffb0861e4ada9a8536b108f04064b2af02403f8e115d0985" }, "src/check_acceptance_98.py": { "bytes": 9625, "sha256": "1e564fd2d2825434bbffdef710319011b629b6c600c1beb6de7facadab6fdbcd" }, "src/eval.py": { "bytes": 11784, "sha256": "49239107bde0fdb714f5ec2f605ad1d7c8cbc9ff2b19567b936a87e9bb8e28c4" }, "src/eval_composition.py": { "bytes": 5113, "sha256": "4411dec7ecff58e2ad318b841d90a7ff875b374dd9ee564917f6e181d1b10721" }, "src/eval_fast.py": { "bytes": 2942, "sha256": "53ccda5db9d528e256139e649ef595bd37297b572c94abf6e1d1ad66e77c9546" }, "src/eval_general_phrase.py": { "bytes": 8650, "sha256": "25309a244e85572f030435681cc3c5575aeae586278dde92fbcfe71251a01172" }, "src/eval_realworld_noise.py": { "bytes": 10024, "sha256": "f10db4ec7616e40c52fe4b7c4b36df49324fb5b8bf1a787d506efd24e78cce9d" }, "src/eval_suite_fast.py": { "bytes": 3830, "sha256": "50070719eb8a57fb72d3a3fbc05a2704066482d24bf8457795ffc08d899a96a4" }, "src/eval_typo_stress.py": { "bytes": 4509, "sha256": "a7daeb9c349da484fa12a209ea36c3936889c9d9cf0e2d147b656c6dcdce9264" }, "src/general_phrase.py": { "bytes": 25963, "sha256": "599a0275388134eea6dcc2d1f4f636167ad9f3f714f168f6230b47366281f653" }, "src/infer.py": { "bytes": 2609, "sha256": "d7e62521f3623068cebc4cfb3f37c0b4e4ef61412ce03d4c2b37ad7f838b00f5" }, "src/infer_candidates.py": { "bytes": 19485, "sha256": "5862faa1dde70f4f34bfa3fff757b5963457cf98828c28bcbe4634cc616eb510" }, "src/infer_fast.py": { "bytes": 112355, "sha256": "5b0a403f6c35cb15494070b6110699a82ea4ea9c47cef3115ca57627dcbc6a0f" }, "src/normalization.py": { "bytes": 484, "sha256": "446bcfd6586642ca8ed561a955f543f4555c0f73b0bea6ff758bcf220c8b28e5" }, "src/romaji_kana.py": { "bytes": 18210, "sha256": "196baeb7ee40e6e54e81e458919afa1bcc63cf6715d5fcd7569a6b0cb493096e" } } } }