Skip to content

[V3-06] prober・ranking・早期終了を追跡するtraceを実装する #120

Closed

Description

@PyYoshi

親トラッカー: #114

目的・成果物

任意で有効化するprober/ranking trace

実装先・順序

作業

  • 入力本文はデフォルトで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の保留は継続。

Activity

  1. added
    v3cChardet v3開発の作業・設計判断
    pinned継続して追跡する作業。既存stale設定の除外対象
    on Sep 20, 2026
  2. PyYoshi commented on Sep 20, 2026

    @PyYoshi
    OwnerAuthor

    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関連調査は再開していません。

  3. PyYoshi commented on Sep 20, 2026

    @PyYoshi
    OwnerAuthor

    追加実装: 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対象の作業は再開していません。

  4. PyYoshi commented on Sep 20, 2026

    @PyYoshi
    OwnerAuthor

    native #25は全11CI成功でdevへ統合済み(a56fd9584d11e7a1f5cbcc75df9b5c3ec4837ab4)。cChardetへの反映は #140 のDraft PRでCI中です。CC0 pilot #24と統合をまとめ、wheel matrixの重複を避けました。既定OFF・原因unknown・Issue未完了を維持します。

  5. PyYoshi commented on Sep 20, 2026

    @PyYoshi
    OwnerAuthor

    進捗: 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対象は再開していません。

  6. PyYoshi commented on Sep 20, 2026

    @PyYoshi
    OwnerAuthor

    cChardet #141/#142を全20チェック成功でdevへ統合しました。language/SBCS/coding state観測、保存値対応照合、固定sourceのranking契約、trace ON/OFFのbyte一致と限定native計測が文書化済みです。無効時比較では同一binaryでも初期時間ドリフトがあり、数値差を機能由来の性能差としません。reject/rankingの入力ごとの原因網羅は未完了のため、このIssueはopenを維持します。最新dev: 7272658。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    pinned継続して追跡する作業。既存stale設定の除外対象v3cChardet v3開発の作業・設計判断

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions