Skip to content

fix(p4): select default ASTs without enumerating all preferred candidates - #261

Open
opaopa6969 wants to merge 7 commits into
masterfrom
fix/default-mapper-selection
Open

opaopa6969 wants to merge 7 commits into
masterfrom
fix/default-mapper-selection

Conversation

@opaopa6969

@opaopa6969 opaopa6969 commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Classicの既定AST選択でも全preferred候補を列挙していたため、正常なx64ベンチマーク入力が候補上限4,096を超えて拒否されていました。既存の単一選択APIで一度mapし、そのowned AST内に残る全文範囲のwrapperを使って、従来のimplicit候補順・mode・identity・CP位置を維持します。

明示preferredは従来のinventory経路と上限を維持します。旧generatorで必要なAPIが存在しない場合だけ互換経路を使い、実行失敗を別mappingや再parseで隠しません。Tiny #256のcanonical投影と合成し、文法・memo方針・資源上限は変更しません。

検証:

  • 同じcommitted CSTの旧inventory対新方式:既存324受理入力の全eligible候補・AST・CP・原文・最終modeが一致。独立のparse拒否12行も固定し、受理減少を成功扱いにしません。
  • 上限に達していた2入力/4行は別の手書き期待値で確認。Classic/UBNFC既存350入力は全一致(328受理、22両方拒否)。
  • 固定した上流bee36381の3.3.0 artifactを専用Maven repositoryへ実installし、最終Java49 tests・Rust共有大入力1 test/2入力成功、skip/ignored 0。実行失敗後の保持snapshotと明示inventory拒否も維持。
  • 従来CI pin fc75fe1e/3.3.0-SNAPSHOTも実生成・compileしてJava29 tests/350比較成功。旧pinにはMappingGuard/候補4,096上限がないため、新しい制限の証拠とは区別。
  • 新しい専用CI jobは上流commitを固定し、全49 Java assertionsとRust大入力を必須実行。実source SHA・artifact hash・Surefire・Rustログを保存し、欠落やskipを拒否します。記録/判定をローカルでも実行し、Rust証跡欠落・ignoredの負例も拒否確認。actionlint成功。
  • 別担当のread-onlyレビューで候補順・identity/CP・legacy API absence・#256との接続を確認。
  • 広範囲回帰時点のconsumer 0a968462 と上流統合 de53a229 を専用Maven repositoryで合成。Rust全119件・Clippy/fmt成功。Java対象473件はfail/error 0、通常実行でskip9件。layoutを明示有効化して別途1件成功したため、異なるテストでは465成功/既存ignore8(型未解決multi-method4、手動speed4)。skipを成功件数に含めません。共有fraud30観測は成功、measurement_eligible=false。この上流統合SHAは公開artifactではありません。

PR #260のCI修正を取り込んだ最終HEAD 354d02ba は、固定依存 bee36381 /3.3.0 で再検証しました。snapshot6件、bounded mapper49件、実Java LSP47件(新しい共通29入力の診断を含む)、Rust共有大入力1件がfailure/error/skip/ignored 0です。Maven artifactの実hashとLSPの実classpathを照合しました。CI workflowは0a968462からbyte不変です。JS診断・共通fixture・Rust製品は935d75a3とbyte同一で、その実Wasmの29入力検証を保持します。この追加検証を前段のde53での広範囲回帰と区別しています。

上限を緩める代わりに既定要求で不要な列挙を除く最小の変更を選びました。全体性能期限は共有hostのこの結果だけで完了にしません。

依存順:Tiny PR #260 と上流 opaopa6969/unlaxer-parser#682 のmerge後に本PRをmergeします。専用CIの候補source成功は、上流が既にmasterやCentralへ公開済みという意味ではありません。既存CIの依存pinは変更していません。

Closes #259

歴史依存と新しい上限検証の契約を分離

現HEAD 419d275fdd9fb2f96af5ec5ebd9899f67475e525。従来parserを使う通常CIで、新しいbounded inventoryの拒否を必須にしていたテスト設定を修正しました。通常互換検証は328入力のAST/位置/選択modeと固定12拒否を照合し、capを許す入力も既知の大入力2種類だけに限定します。新しい P4BoundedMappingConformance は固定bee依存の専用CIで明示実行し、324比較+4cap拒否・両大入力のE-MAPPING-LIMITを厳密に検証します。専用CIの件数・失敗・skip検査にも追加済みです。製品コード、資源上限、旧依存pin、通常CIジョブは変更していません。

fc75/3.3.0-SNAPSHOTの通常49件とbee/3.3.0の専用検証を含む51件が失敗/skip 0。厳格2件を旧依存で意図的に実行すると、期待件数とcap拒否の欠落により両方が失敗する負検証も確認しました。actionlint成功。Maven依存は別々の専用repoで固定しJAR hashを照合しています。Rust製品/fixtureは前回検証sourceと同一で、Rust再実行は今回の主張に含みません。

履歴互換と新契約をそれぞれ検証する最小のtest/CI修正を選択しました。本PR単位でrevertできます。parser #682 merge、現HEADの全CI成功、Tiny側mergeはまだ必要です。

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use single-selection mapper API for default Classic facade mapping

1 participant