From e99672f1e732942ca9796248266368b9d2867112 Mon Sep 17 00:00:00 2001 From: Yoshihiro Misawa Date: Tue, 22 Sep 2026 01:03:09 +0900 Subject: [PATCH] Integrate non-default fixed-block pilot and Japanese results --- docs/v3-adoption-gates.md | 6 ++-- docs/v3-decision-log.md | 12 +++++++- docs/v3-execution-plan.md | 5 ++++ docs/v3-fixed-block-pilot.md | 57 ++++++++++++++++++++++++++++++++++++ src/ext/uchardet | 2 +- 5 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 docs/v3-fixed-block-pilot.md diff --git a/docs/v3-adoption-gates.md b/docs/v3-adoption-gates.md index e575fe9..3429934 100644 --- a/docs/v3-adoption-gates.md +++ b/docs/v3-adoption-gates.md @@ -77,8 +77,10 @@ generator基盤と非デフォルト観測targetは維持し、内部選抜の [分析から決定した開発順位](v3-improvement-priorities.md)では、SBCS filterの incremental証拠の一貫性を先行候補とした。これは採用決定ではない。 -現在の2試作枠との関係、状態保持・EOF・メモリ上限、候補/done変更の扱いを -#125で決めてから実装する。保留したBOM試作を無断で置換・破棄しない。 +2026-09-22、maintainerの再開指示に基づき、第3の非デフォルト試作として +[固定block native adapter](v3-fixed-block-pilot.md)を追加した。 +EOF/reset/evidence上限と候補/doneの実験契約を固定し、小規模tuningで比較済み。 +block長・公開APIへの採用は未決定。保留したBOM試作は置換・破棄しない。 v3では必要な破壊的変更を許容する方針だが、現段階で具体的な公開API変更を決めたわけではない。 現在の変更は両repositoryの`dev`内の基盤整備であり、v2系・`master`・releaseには反映しない。 diff --git a/docs/v3-decision-log.md b/docs/v3-decision-log.md index 2d2a716..5f73cc8 100644 --- a/docs/v3-decision-log.md +++ b/docs/v3-decision-log.md @@ -8,7 +8,7 @@ | --- | --- | --- | --- | | D01 | 最低OS/runtime/Python条件の変更 | 配布matrixの失敗と代替案 | 既存条件を維持。非互換機能の採用のみ保留 | | D02 | 公開API・既定値・候補順位/confidence変更 | corpus別差分、性能、移行案 | 現行semanticsを維持し非デフォルト試作で比較 | -| D03 | 試作modelと新規encodingの3.0採用 | 未使用data評価、coverage gap、性能 | 最大2件の試作。標準modelを置換しない | +| D03 | 試作modelと新規encodingの3.0採用 | 未使用data評価、coverage gap、性能 | 元の2件に固定block adapterを個別追加(下記)。標準modelを置換しない | | D04 | 生成model等の権利条件 | source/generator/tableのprovenance | 未確認assetの取り込み・公開を保留 | | D05 | 予算拡大 | 取得/保存の使用量と追加dataの価値 | 取得10 GiB・保存20 GiB・追加課金なし | | D06 | masterへの反映とrelease | 受け入れ基準、CI、移行文書 | devまで。tag/public releaseを作らない | @@ -16,6 +16,16 @@ 新しい判断はID、発生条件、根拠、選択肢、推奨案、影響するIssue、暫定措置を追記する。 通常の実装選択は担当が検証して進める。未解決の権利や権限を推測して実行しない。 +## D02/D03補足: 第3の非デフォルト試作(2026-09-22) + +[Issue #125の提案](https://github.com/PyYoshi/cChardet/issues/125#issuecomment-5757938459) +に対する許可確認の後、maintainerから「再開して」と指示を受けた。 +固定block native adapterを第3試作として追加する。既定動作・公開APIへの採用は別判断。 +入力を同じ内部block列へ正規化するため、旧whole-inputの候補・confidenceが変わり得る。 +同一内部blockでの外部chunk一貫性と、旧結果との差・精度・性能を別々に評価する。 +P01保留・独立holdout未開封・既存2試作保存は維持する。 +[初期結果と再開点](v3-fixed-block-pilot.md)。 + ## P01: 安全性検証の一部を保留(2026-09-20) maintainer指示: 製品側の制限が繰り返される作業はpendingとしてskipし、独立作業を続行する。 diff --git a/docs/v3-execution-plan.md b/docs/v3-execution-plan.md index 1f8f0cd..4492118 100644 --- a/docs/v3-execution-plan.md +++ b/docs/v3-execution-plan.md @@ -22,6 +22,11 @@ | 3 | #123・#124 | 新規generator、再現性と品質の独立検証、失敗分類と優先順位 | | 4 | #125・#126の一部 | 最大2件の非デフォルト改善試作、3.0採用案、判断一覧 | +2026-09-22追記: 第3試作の許可確認に対するmaintainerの「再開して」に基づき、 +固定block native adapterを追加する。元のBOM/model generator試作は保持する。 +これは試作枠の個別追加であり、無制限の試作追加・P01再開・既定API採用の承認ではない。 +契約・結果・残条件は[固定block試作](v3-fixed-block-pilot.md)に記録する。 + 依存する成果物の検証完了から着手できる。Phase全体の終了を待たない。 規格更新、安全性refactor、候補結果変更は別PRにする。C++20は既存配布環境で 成立してから採用し、platform切り捨ての判断中もRAII等の改善は続ける。 diff --git a/docs/v3-fixed-block-pilot.md b/docs/v3-fixed-block-pilot.md new file mode 100644 index 0000000..b904e95 --- /dev/null +++ b/docs/v3-fixed-block-pilot.md @@ -0,0 +1,57 @@ + +# 第3試作: 固定block native adapter + +2026-09-22。対象は非デフォルトの検証基盤であり、Python APIや標準modelの変更ではない。 +[native PR #46](https://github.com/PyYoshi/uchardet/pull/46)を全11 CI成功後devへ統合した。 +固定点: `058aec784a0891103584a79c7c52b217340db67d`。 + +## 目的と契約 + +外部feedのchunk境界によらず、同じ入力prefixを同じ固定block列でnative coreへ渡す。 +block長・evidence上限は明示指定、初期pilotは最大4096 bytes・processあたり10秒。 +空feedではflushしない。finishで端数を一度flushし、resetでpending/core状態を破棄する。 +adapter保持bufferはblock長分。native内部のmemory上限を保証するものではない。 +coreのdone観測位置と、呼出し側がdoneを受け取るfeed境界は区別する。 + +既定targetではbuildせず、installもしない。one-shot/streamingの公開契約には未導入。 +旧whole-inputとの候補・confidence一致を約束せず、差分を評価対象とする。 + +## 検証結果 + +- 通常小入力1000比較で、直接C APIへ同じ固定blockを渡した候補・confidence bit列・done・処理位置と一致。 +- metadata/CLI等の追加7 unittest成功。native benchmark suiteは31成功・5 skip。 +- 固定tuning 16入力×4内部block×5外部chunkの320観測で、同じ内部block長なら候補・最終done・core処理位置が一致。 +- 同じbuildのlegacy whole-inputは保存済み観測と全件一致。report再実行で全byte一致。 +- native最終head `676dde447a3b3a6c777901ca8244e714fc770a72` の11 CI成功 + (run `35622532551`)。新pilot実行はLinux diagnosticsであり、全OS実行とは扱わない。 +- cChardet統合のローカルpytest: 355 passed / 15 skipped / 88 subtests。 + fixed-block/trace/filter/static-libraryの既存検証用binaryを環境指定して実行した。 + 前固定点からnative `src/`に差分なし。Python既定処理へadapterは導入していない。 + +| 内部block | cp1252 exact / 8 | cp1252 decode-equivalent / 8 | UTF-8 exact / 8 | 旧wholeと候補全体が異なる入力 / 16 | +| --- | --- | --- | --- | --- | +| 1 | 0 | 0 | 8 | 16 | +| 7 | 2 | 6 | 8 | 16 | +| 64 | 4 | 8 | 8 | 16 | +| 1024 | 4 | 8 | 8 | 4 | + +旧wholeはcp1252 exact 4/8・decode-equivalent 8/8。境界一貫性と品質向上は別である。 +この小さなtuning結果だけでblock長を選ばない。compatible/superset指標は未評価。 +標準modelだけを使用し、生成modelを混ぜていない。独立holdoutは未開封。 + +## 再現とprovenance + +実行手順は[native日本語文書](../src/ext/uchardet/benchmark/fixed-block.ja.md)。 +private report: `archives/v3-corpus/fixed-block-tuning-v3.json`。 +content hash: `d198e153f5167a561d5809f011717def074fb3ab3991d84fa0f438bad816c63d`。 +固定元report hash: `5d28f112f1ed472e1a438df9790f9e2f50c9aa0e216943059e2bb51621d0c8c1`。 +入力・binary・driver hashと全観測をreportへ保持する。raw corpus/modelをGitへ追加しない。 + +## 残作業・採用境界 + +- 追加platformでのpilot実行、性能・memory/allocation計測。 +- 別の既存validationでの旧新比較。独立holdoutは採用判断まで温存する。 +- block長・evidence上限・done・EOF・resetの公開契約とPython APIへの採用判断。 +- 選定後のwheel/API・性能・精度の回帰、移行手順。 + +#125/#126はこの基盤統合だけでcloseしない。P01の大入力・追加安全性検証は保留のまま。 diff --git a/src/ext/uchardet b/src/ext/uchardet index 086a6b6..058aec7 160000 --- a/src/ext/uchardet +++ b/src/ext/uchardet @@ -1 +1 @@ -Subproject commit 086a6b652e73f7716eac68e83f98a05a3fb99d82 +Subproject commit 058aec784a0891103584a79c7c52b217340db67d