Repository navigation
[V3-06] prober・ranking・早期終了を追跡するtraceを実装する #120
Copy link
Copy link
Closed
Labels
pinned継続して追跡する作業。既存stale設定の除外対象継続して追跡する作業。既存stale設定の除外対象v3cChardet v3開発の作業・設計判断cChardet v3開発の作業・設計判断
Milestone
Description
親トラッカー: #114
目的・成果物
任意で有効化するprober/ranking trace
実装先・順序
- 実装先: uchardet
- v3実装PRのbase: 対象repositoryの
dev。Draft PRで作成する。 - Phase: 1
- 前提となる作業: [V3-03] native候補出力・chunk境界・lifecycleの比較基盤を整える #117
- 新規実装のライセンスはV3-01で対象componentごとに決定する。
作業
- 入力本文はデフォルトでlogに残さない。
- 無効時の実行costと、代表的失敗を説明できることを確認する。
完了条件
代表的失敗を説明でき、無効時costを測定済み。V3-03
- 対象の実装PR・設計判断へのリンクを記録する。
- 再現command、検証結果、必要なartifact hashを記録する。
- 未解決事項・既知の制約と、依存先への影響を明記する。
現在の実績(2026-09-21)
- 最上位/group直下childのstate/active、language counter、MBCS coding state、SBCS model統計を観測。
- raw reportとsort/dedup後のC API候補を区別し、固定入力で照合。
- 限定GCC Release buildのON/OFFでlibrary/benchmarkがbyte一致。小fixture・affinity固定のnative計時を実施。
- 固定sourceに基づくranking契約、French validation 1入力の内部統計と出力の対応を記録。
- 代表的失敗の説明を観測とsourceで確認する。BOM初回feed条件と、Frenchモデルの内部選抜を説明。未確認の原因は断定しない。
実装: PyYoshi/uchardet#11/#16/#25/#26、cChardet #141/#142/#163。
無効時cost・hash・測定条件、ranking契約、出力照合、候補競合と1入力の内部観測。
costは当該buildで測定済みであり「未測定」ではない。全toolchain/全入力の保証を新たな必須条件にはしない。代表例の原因説明は下記の受入監査で確認した。追加confidence計算やengine動作変更は行っていない。
受入監査:完了(2026-09-21)
元の完了条件「代表的失敗を説明でき、無効時costを測定済み」を満たしたため完了とする。全入力/全platformの因果証明や診断tool実行時costを暗黙の追加必須条件にはしない。
- 無効時cost: #142で同一GCC Releaseのlibrary/benchmark byte一致と、固定affinity・小fixture・交互実行のmedian/p95を記録済み。数値差を機能の性能差と誤認しない。
- 代表例1: native introspection文書とtest_trace.pyに、BOMの初回feed・長さ条件に起因するchunk差の観測/source説明。
- 代表例2: native Incorrect detection of GB18030 as ISO-8859-16 #45 / cChardet #170でSBCS選択cacheを追加。既存2,473-byte French例の選択index18をISO-8859-1/frと対応付けた。観測counterと固定ratioの別計算ではISO系0.7731194496、生成cp1252は0.3589009047。ISO系bitsはraw reportと一致。negative20件の減点、ISO系同点時の先行優先、SBCS単一候補公開を説明した。
- 非干渉: getter追加呼出しなし。旧/新traceを同じ固定libraryへlinkし4入力×5chunkで追加field以外一致。French実験例でも旧snapshot/raw report一致。engine/header/C APIは変更なし。
- native #45全11 CI成功。#170全17通常CI成功後devへmerge。ローカル348 passed / 15 skipped / 79 subtests。
- cChardet統合点:
1cf683ddecb9609c1998c3388a7672a87bad4cfc。native:086a6b652e73f7716eac68e83f98a05a3fb99d82。
再現/入力hash/source/score式/trace hashは代表例の確認と無効時cost。
汎用traceのdetecting時selection_pathはunknownを保持。任意のsnapshotだけではconfidence照会と名前fallbackを区別できない。今回の代表例はDataEndの呼出し順と正のscore/reportを合わせて説明した。
モデル精度の修正・採用、独立corpusの全原因分析は#124/#125/#126へ残す。P01の保留は継続。
Metadata
Metadata
Assignees
Labels
pinned継続して追跡する作業。既存stale設定の除外対象継続して追跡する作業。既存stale設定の除外対象v3cChardet v3開発の作業・設計判断cChardet v3開発の作業・設計判断
Activity
PyYoshi commentedon Sep 20, 2026
uchardet #16を全11 CI成功後にdevへmergeしました(a005ac2)。group直下childのactive/state・前回snapshot・変化を観測でき、原因不明はunknownで保持します。既存小fixtureの従来trace/同一feed候補一致、同一buildで3 engine objectのbyte一致、診断OFF buildを確認。公開API/既定hot pathは不変です。内部language detectorとreject/ranking理由は未観測のため本Issueは継続します。P01関連調査は再開していません。
PyYoshi commentedon Sep 20, 2026
追加実装: PyYoshi/uchardet#25(Draft、CI中)。既定OFFのtraceへ内部language detectorのstate・文字/sequence総数・4分類counterを追加しました。engineはfriend宣言のみで、追加のGetConfidence/GetCandidates/GetLanguage呼び出しはありません。
既存の空・ASCII・135-byte日本語の同一feedで旧snapshot/raw Reportが一致し、fresh/reuseの候補比較も成功。GCC16.2.1同一Release buildの全61 object memberはbyte一致(archive metadataは差あり)。
新しい知見: 日本語fixtureを7-byte feedした後、French modelは45文字・sequence総数35に対して4分類合計0でした。model外の文字対が分母だけへ加算されるためで、単純なcategory合計を分母と同一視できません。engine修正ではなく診断です。モデル名は静的label、CJKのnullはmodel-free構造を表し、予測languageや未対応判定ではありません。
reject/ranking原因と一般的な無効時cost測定は未完了のため、Issueはopenを維持します。P01対象の作業は再開していません。
PyYoshi commentedon Sep 20, 2026
native #25は全11CI成功でdevへ統合済み(a56fd9584d11e7a1f5cbcc75df9b5c3ec4837ab4)。cChardetへの反映は #140 のDraft PRでCI中です。CC0 pilot #24と統合をまとめ、wheel matrixの重複を避けました。既定OFF・原因unknown・Issue未完了を維持します。
PyYoshi commentedon Sep 20, 2026
進捗: cChardet PR #140は全20チェック成功でdevへマージ済み(5aafb07)。さらにuchardet PR PyYoshi/uchardet#26は全11チェック成功でdevへマージ済み(e3c8526)。coding stateとSBCS model counterを読み取り専用で観測でき、既存小fixtureの旧観測・候補と全61 object memberの不変を確認しました。cChardet統合PR #141をDraftで作成しています。raw Reportと最終候補の照合toolも追加しましたが、ranking/rejectの根本原因は未解決なのでこのIssueは継続します。P01対象は再開していません。
PyYoshi commentedon Sep 20, 2026
cChardet #141/#142を全20チェック成功でdevへ統合しました。language/SBCS/coding state観測、保存値対応照合、固定sourceのranking契約、trace ON/OFFのbyte一致と限定native計測が文書化済みです。無効時比較では同一binaryでも初期時間ドリフトがあり、数値差を機能由来の性能差としません。reject/rankingの入力ごとの原因網羅は未完了のため、このIssueはopenを維持します。最新dev: 7272658。