Issue #69 / Track #93の実筆レビューで判明し、2026-08-19に利用者承認された設計判断。
2026-08-30 Issue #115事前検討により、Profileの重ね幅は中央pass間だけでなく、外周3列と中央耕の
境界にも適用すると明確化した。
従来実装はcenterTillageRegionを、中央passの中心線を安全に置く範囲、中央耕だけで覆うべき面積、
lane数を求める横幅の3用途に兼用していた。このため、細長い実筆のレビューで次の不整合が順に現れた。
レビュー開始時には当該実筆を「外周3列+中央1列」で全面耕耘できると目視で仮定していたが、これは
lane数決定の目的でも完了条件でもない。production geometryによる確認では、選択方向によって中央3列で
成立するか、未被覆が残って停止する結果となり、「中央1列」という実筆固有の前提は誤りだった。
requiredParity=EVENを満たす列数がなく、Stage 5が停止した。D <= implementWidthCmなら1列とする局所実験では、外周最内周との重なりを評価できなかった。endpointResidualと偶奇は中央pass群内部の配置条件である。重ね幅は中央pass群内部に加え、外周3列と
中央耕の境界にも適用し、両者の重なりがProfileで指定された幅を下回らないようにする。
目的は中央lane数を先に決めることではなく、最後に実施する外周3列で耕耘できる範囲を先に求め、
その残りだけを中央耕の担当範囲にすることである。中央耕が担当する範囲は、中央線を配置できる領域の
幅ではなく、次で決める。
baseRemaining = 圃場の耕耘対象
- 外周3列のTILL中心線を作業機幅で面化した被覆
centerWorkRemainingRegion =
buffer(baseRemaining, overlapM)
∩ 圃場polygon
overlapM = Profile.overlapWidthCm / 100.0
baseRemainingが空なら拡張対象も空とし、中央passは0本。centerWorkRemainingRegionは、外周後に実際に未耕となる範囲と、外周側へProfileで指定された重ね幅分だけcenterWorkRemainingRegionを覆えるならsingle-lane。始終端偶奇は適用しない。0本、1本、複数本はこの被覆計算の結果であり、特定の実筆を1本にすること自体を受入条件にしない。
safeCenterlineRegionとcenterTillageRegionは、車両中心線の候補生成・安全配置・接続制約として維持する。DEADHEADは維持する。centerTillageRegionの横幅だけでlane数を確定すること。D <= implementWidthCmだけでsingle-lane成立性を判断すること。現行の製品仕様はdocs/specifications/p6-ui-spec.md、Stage契約は
docs/runbooks/navigation-field-geometry-pipeline-contract-pattern-1.mdを正本とする。