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
6 changes: 4 additions & 2 deletions docs/v3-adoption-gates.md
Original file line number Diff line number Diff line change
Expand Up @@ -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には反映しない。
Expand Down
12 changes: 11 additions & 1 deletion docs/v3-decision-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,24 @@
| --- | --- | --- | --- |
| 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を作らない |

新しい判断は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し、独立作業を続行する。
Expand Down
5 changes: 5 additions & 0 deletions docs/v3-execution-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -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等の改善は続ける。
Expand Down
57 changes: 57 additions & 0 deletions docs/v3-fixed-block-pilot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!-- SPDX-License-Identifier: MIT -->
# 第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の大入力・追加安全性検証は保留のまま。
Loading