Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/v3-adoption-gates.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ raw byte-bigram試作、SequenceModel形式契約、training仕様の精緻化
2つのvalidation corpusでcategory 0が減少し、positive側の内部スコアが高い範囲になった。
ただしpaired分離件数は旧モデルと同じで、encoding accuracy改善・標準採用の根拠にはしない。

[候補競合を含めた評価](v3-full-engine-model-comparison.md)まで進めた結果、Paris validation
のcp1252 16入力でdecode-equivalentがlegacy 16件に対しidentity 5件、filtered 7件だった。
したがって、この固定モデルの標準採用は推奨しない。単に接続が未完了なのではなく、
限定的ながら実際の識別品質に反証が得られた状態である。
他言語・別domain・大入力・incremental全体については、この結果から推測しない。
generator基盤と非デフォルト観測targetは維持し、内部選抜の分析を次の課題にする。

## 互換性とmigration

v3では必要な破壊的変更を許容する方針だが、現段階で具体的な公開API変更を決めたわけではない。
Expand Down
5 changes: 3 additions & 2 deletions docs/v3-cxx20-distribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,9 @@ native compiler matrixでspan / bit_cast / ranges等を確認した。
上記30 wheelは追加probeを組み込んだartifactの検証ではなく、最低runtime gateも残る。

さらに[glibc 2.24での限定的な実行確認](v3-minimum-runtime.md)で、保存済みの
CPython 3.11〜3.14 / 3.14tのx86_64全5 wheelのinstalled smokeが成功した。ARM64と
最低macOS/Windowsは未確認であり、全体gateは維持する。
CPython 3.11〜3.14 / 3.14tのx86_64全5 wheelのinstalled smokeが成功した。
後続の[ARM64 runtime検証](v3-arm64-runtime.md)でもQEMU上で全5 ABIが成功している。
ARM64実機と最低macOS/Windowsは未確認であり、全体gateは維持する。

[sdist build要件と独立再build](v3-sdist-build.md)も記録した。tar.gzからC++20 wheelを
再構築し独立uv環境のsmokeが成功したが、他platformの最低runtime保証とは別である。
42 changes: 42 additions & 0 deletions docs/v3-full-engine-model-comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,45 @@ file SHA-256: `79654809fe9985af4e89eac06aeb9d54af20001dc01301b70c4ceb7a6435a4ca`
次は既存French ISO系modelとの競合過程を確認し、model coverageの問題と較正の問題を
分離する。このvalidationを調整用へ転用せず、調整する場合は別のtuning splitを用意する。
今回の結果だけからthresholdを動かしたり、他の候補を削除したりしない。

## 小規模1入力の内部観測

後続の原因調査として、既存`benchmark/uchardet-trace.cpp`をfiltered実験libraryへ
linkし、上記validationの先頭cp1252文書だけを10秒上限で観測した。
入力は2,473 bytes、SHA-256は
`272f13d8f2d9bb83f61c91b1dd698ff35182f3480e9005b5f45c5768822c4ea9`。
全失敗の原因をこの1件で代表させない。

feed後・end後ともSBCS groupは`detecting`だった。Frenchの3 modelはいずれも
306文字・246 frequent文字・193 sequenceを観測していた。

| model | category 0/1/2/3 | control文字 |
| --- | --- | ---: |
| 既存ISO-8859-1 | 0 / 0 / 6 / 187 | 5 |
| 既存ISO-8859-15 | 0 / 0 / 6 / 187 | 5 |
| 生成cp1252 (filtered) | 20 / 5 / 7 / 161 | 0 |

raw reportのISO-8859-1/frのconfidence bitsは`3f45eb28`で、保存済みC API観測の
先頭候補と一致した。ただしtraceのraw reportはC APIのsort/dedup後一覧ではない。
この照合を全候補の一致試験とは扱わない。

現行`nsSingleByteCharSetProber::GetConfidence()`のpositive approachは
`(positive + probable / 4 - negative * 4) / sequences / typical_ratio`を基礎とし、
さらにcontrol/out文字とfrequent文字の比率を掛ける。
今回の生成modelではnegative 20件の寄与がある一方、既存ISO系にはない。
encoding上のcontrol文字ペナルティだけでは、誤ったISO系候補を排除できていない。
これは次の較正分析の具体的な根拠であり、係数変更の正当化ではない。

観測source SHA-256は
`20099148d16425a079cc4bef795b50a8fdd5a0bbfa011c47122c71634ad19a84`、
観測実行file SHA-256は
`e9eb443b9cf1ea8fe5fdf8fb0aa713ca4e26499a729163de9329cb3d12f472fe`。
compileは`c++ -std=c++11 -O2 -Isrc/ext/uchardet/src`で、
`archives/v3-corpus/engine-paris-filtered-v1/build/src/liblibuchardet_experimental.a`
をlinkした。traceの引数は`0 INPUT_FILE`(one-shot)。model・入力を変更していない。

同じtraceと実験conformance実行fileを`UCHARDET_TRACE` / `UCHARDET_CONFORMANCE`に
指定し、`uv run --locked --offline --no-sync pytest -q tests/test_report_attribution.py`も
実行した(28 passed)。空入力・ASCII・既存の短い日本語fixtureを0/1/7-byte scheduleで
照合する9試験を含む。最終候補の値がraw reportに存在すること等の確認であり、内部rankingの
因果証明・全corpusの観測非干渉・精度向上の証明ではない。