Skip to content

fix(p4): recognize complete root families without facade reparsing - #260

Merged
opaopa6969 merged 5 commits into
masterfrom
fix/p4-root-choice
Oct 17, 2026
Merged

opaopa6969 merged 5 commits into
masterfrom
fix/p4-root-choice

Conversation

@opaopa6969

@opaopa6969 opaopa6969 commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Formulaが短いNumber prefixで確定した後、Java両engineとRustの公開parser/evaluatorが別のresult-familyを再parseしていました。Formulaのprologueを一度だけ認識し、各familyのexpression・method・EOFまでを順序付き選択にまとめます。4経路のalternate-root loopと、成功後の明示result-family再parseを撤去しました。

公開ASTのrootと明示型は、確定したASTから投影します。元のCP span・文書・callback/scope rollbackを保持し、明示subtree APIと同じrootの詳細診断再試行は既存契約のままです。nested ExpressionのPEG選択順は変えません。両generatorは同じ固定commit f54d6b9から再生成し、公開Classic AST schemaはbaselineとbyte一致しています。

型投影の原文確認にはoperation-local Unicode cursorをJava/Rust両方へ追加しました。先頭からの繰り返し走査を避け、逆向き・重複・EOFの範囲も独立に検証します。全sourceの新しい索引配列や一般span APIの変更はありません。

検証:

  • Java固定953式・12,609結果が既存goldenと一致(golden変更なし)。66入力×両engineの132行で全AST・CP span一致。
  • fraud5+complexの両engine・5反復、60回のparse/create/evalが成功し、root・値も一致。
  • 最終変更関連Java25件、failure/error/skip 0。直前の広範囲444件はfailure/error 0、既存の継承skip 8で、最終reader変更前の証拠として区別。
  • Rust workspace116件、失敗/ignored 0。実AOT/native bundle検証、Clippy全targets -D warnings、fmt成功。
  • Java/Rust両経路の固定generator完全再生成がbyte一致。Java converter86recordsも一致。
  • PR #258へrebase後、最終Java27件/Rust28件を再実行して成功。fraud共有30観測も成功・measurement_eligible=false。
  • 同じ350-input corpusは共有hostで旧11.166秒・変更後8.627秒。全Expressionへのlongest選択は著しい遅延を再現したため採用せず、prologueを一度だけ読む最小のordered-tailを選びました。これらは専用hostでの本番性能合格判定ではありません。

既存Classic大入力4行(2入力)のmapper資源拒否は隠さず、unlaxer-parser#680とtinyexpression#259で別に修正します。string型変数の連結を含む文書1件が両engineで新しく正常受理されることは移行文書に明記しました。

CIで検出した2点も同じ変更範囲で修正しました。派生文法の固定ハッシュを更新し、&&/||の1文字目が合法な単独演算子として消費された場合も、Java LSPとRust/WasmのCatalog診断を既存のTE023に揃えます。分類は失敗位置に接する2文字だけを調べ、公開parserのCP位置・期待値・表示位置を保持します。

追加検証:

  • 文法snapshotのPython6件、固定generatorのJava24生成file/Rust生成物のbyte一致、converter86records一致。
  • 共通29入力(18positive/11negative)を実Java publishDiagnosticsと実Rust/Wasm診断で検証。Unicode/CRLF、引用文字列、合法な単独演算子も含みます。
  • 新依存de53a229/version3.3.0でLSP module全59件F/E/skip 0、旧CI依存fc75fe1e/version3.3.0-SNAPSHOTで新診断と既存Catalog12件F/E/skip 0。
  • Catalog workflow相当: Wasm release build、953式/11,409行のparity、random12種類、trace307,554steps、check/build/roundtrip成功。別分類のregistered externals 1,200行は既存skip。VSIX7 testsと25filesの実package成功。
  • 旧CI依存を固定したsnapshot修正commit1087ff24の独立fresh build: workflow15 class 329件中321pass/既存8skip、failure/error 0。350式same328/both-reject22、新投影5件、Rustfraud2件、negative gate6件+provenance3件成功。Java/Rust共有30実観測のcollector成功(共有hostのためmeasurement_eligible=false)。この検証と後続診断commitの検証を区別しています。

PR #258は統合済みです。新HEADの全CI成功後に統合します。revert時は手書き文法とその固定再生成物・投影コードをこのPR単位で戻せます。

Closes #256

@opaopa6969
opaopa6969 merged commit 5645d40 into master Oct 17, 2026
9 checks passed
@opaopa6969
opaopa6969 deleted the fix/p4-root-choice branch October 17, 2026 02:58
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.

P4: resolve result families in the grammar and remove root retries

1 participant