Issue #97。2026-08-21承認済みの
隣接耕基本経路パターン1 圃場幾何パイプライン実装契約
に対応する利用者可視化gate。
自動テストがgreenでも、WorkArea、列順、transfer、外周狭窄、coverageが利用者の想定する耕し方と一致するとは
限らない。各実装境界でPC可視化を更新し、利用者確認を通過してから次Trackへ進む。
確認手順は内部Stageフォームからではなく、実際の農作業の開始点である筆選択、入口確認、Profile選択、中央方向選択
から始める。fixture値をHTTPへ直接注入した表示はgeometry確認には使えてもoperational E2Eの受領証拠にしない。
- field、TILL、DEADHEAD、coverage、残存領域を色だけで区別せず、線種、太さ、番号、矢印、文言を併用する。
- production、fallback、fixture/test producerをsource文言で区別する。
- complete、diagnostic partial、out-of-scope、not-implemented、invalid、geometry failureを区別する。
- 内部候補・WorkArea・接続候補を、Tabletへ渡せる完成計画と明確に区別する。
- 同一入力の再実行でID、順序、geometry、数値が変わらないことを確認する。
- 差異が見つかった場合は後段で吸収せず、その値のproducerを所有するTrack・契約へ戻す。
開始前移動、入口から中央耕開始anchorまでの線、追い詰め対象・経路、入口境界外の退出線は計画経路として表示しない。
補助表示する場合も、plan actionやcoverageではないことを明記する。
表示:
- 選択筆polygonとnormalize結果
- 入口候補の位置、進入方向、source、確認前/確定状態
- 選択Profileの作業機幅・基準重ね幅
- 利用者が選択した中央方向
- 対象外・入力不正・幾何失敗の分類理由。筆分類は共有処理(
classifyFieldForPattern1)の結果で、
Tablet計画開始前判定とplanner Stage 1で同一。壊れた筆(穴・複数面・自己交差・線・点・頂点不足・退化・
非有限)は初期方向選択前に停止し、独立した「初期方向算出不可」状態を持たない
禁止:
- safety margin、corner-till角、parity、side、fallback actionをplan requestとして表示する。
- 凹形状を対象外理由にする。
表示:
- field boundary
- lap 1/2/3の中心線と各作業幅coverage
- 標準pitch区間と、等間隔へ局所調整した狭窄区間
- 狭窄区間の利用可能幅と3本の間隔
- 1列幅未満のout-of-scope理由
- 圃場全体を1〜2周で覆う狭小圃場のnot-implemented理由
確認:
- 局所調整前後で各lapが連続する。
- 狭いことを理由に3周を重ねた狭小圃場をcompleteにしない。
表示:
- 入口境界点、進入方向、仕上げcirculation
- lap 3→1→2の順序、接続点、走行方向
- finishing lap 3 start anchor
- 進入入口と同じ境界点にあるexit anchor
- exit方向が進入方向の逆であること
入口から中央開始までの導入外周、入口境界外の退出線は表示しない。
表示:
- perimeter TILL coverage
- 外周後の基礎未耕範囲をProfile指定の重ね幅分だけ外周側へ拡張した
centerWorkRemainingRegion
- 外周3列と中央耕の重なり帯、およびProfile指定値
- 利用者選択方向のcandidate lane
- polygon clip後のsegment
- 0/1/複数laneの分類
中央candidate laneがProfileの固定pitchで並び、対象幅への均等配分で間隔が変わっていないことを確認する。
中央candidate coverageだけでcenterWorkRemainingRegionを覆うことを示し、全TILL unionで代替しない。
safeCenterlineRegion、margin、required parity、finishing sideを表示しない。基礎未耕範囲が空の場合の0 laneと
1 laneを失敗表示しない。
表示:
- segmentのWorkArea色分けとgrouping理由
- 各WorkAreaの連続往復候補(4構成)と、各構成の終端隅
- 採用した終端WorkArea/構成、および中央耕終了→finishing lap 3 start の空走(仕上げcirculation方向)geometry
- 各WorkArea内の隣接pass順と方向(単一の連続往復、wing分割なし)
- 正方向へ戻したcenter traversal
- center tillage start anchor
- 未接続WorkAreaと理由
複数候補を厳密最適化して比較することは初回gateにしない。順位規則は「空走経路長最短 + 決定的tie-break」だけ
であることと、採用した候補が必須条件を満たす根拠を示す。
表示:
- 同一WorkArea内の隣接pass接続
- WorkArea間transfer
- 各transferのfield内geometry
- TILL/DEADHEAD分類前の各transfer geometryと中央pass順
入口からcenter startまでの開始前移動をtransferとして表示しない。中央耕は各WorkArea内で単一の連続往復で
表示し、真ん中の列で終わる分割・wing切替が無いことを確認する。中央耕終了地点(連続往復の終端隅)と
finishing lap 3 start を別のmarkerとして表示し、両者をロータリーを上げた空走(DEADHEAD、仕上げcirculationと
同じ回転方向、finishing lap 3 start にその走行方向と揃った向きで到着) がつなぎ、その空走跡が後続の外周耕で
覆われることを確認する。両者は同一点である必要がない。逆走やその場でのUターンが描かれていないことも確認する。
Tabletでは中央耕開始・中央耕終了・finishing lap 3 startを形の異なるmarkerと名称付き凡例で表示し、工程別
TILL線と「中央耕 → 空走 → 外周3→1→2 → 入口から退出」の順序を同じ凡例から確認できること。
表示:
- center startからexit anchorまでのTILL/DEADHEAD全action順
- actionごとの作業幅coverage
- 中央列間・WorkArea間接続(
CenterTillageLaneChange)のうち後続TILLで覆われる区間(DEADHEAD)と、接続時に
耕す区間(TILL)の分割位置・分類理由。中央耕終了→lap 3の空走は常にDEADHEAD(この分類対象外)
- 中央TILL coverageと、Profile指定の重ね幅を含む
centerWorkRemainingRegionの被覆差分
- 各DEADHEADを覆う後続TILL
- field boundaryに接するperimeter residual
- boundaryに接しないcentral uncovered
- completeまたは失敗理由
perimeter residualは凸角、凹角、くびれ、角度、大きさで失敗にしない。central uncoveredは面積値だけでなくgeometryを
表示する。最終uncovered/central uncoveredは全TILL coverageから求め、Profileの重ね幅で拡張しない。
分類前後で中央列間・WorkArea間接続のgeometry、中央passの列順・始終端、anchorが変わっていないことも比較表示する。
表示:
- 完成
TillagePlanの順序再生
- center start、最後のcenter pass終点(中央耕終了地点)、finishing lap 3 start、exit anchor(それぞれ別marker)
- 3→1→2と同一入口・逆方向exit
- invariant検証結果
composerで新しい探索、再順序化、fallbackが発生していないことを確認する。最後のcenter passの直後が
「任意で1本の中央耕終了→lap 3空走(ロータリー上げDEADHEAD)、その直後に finishing lap 3 start から始まる
lap 3本体」で、その間に他のactionが無いことを確認する(中央耕終了地点と finishing lap 3 start の座標一致は
要求しないが、center pass終点→空走→lap 3始点 の各境界は座標連続)。空走がFinishingLapApproach(3)
(耕したまま接続するTILL)でないこと、その全区間が後続外周耕で覆われることを確認する。
lap 3→1、lap 1→2の既存TILL接続は表示する。
markerの意味を色だけに依存させず、名称と形を併記する。中央耕・lap 3・lap 1・lap 2のTILL線は工程別に
識別でき、実行順を凡例の文言で確認できること。
PCでは上記layerを同じ計画上で確認する。TabletへはPC gateを通った同一TillagePlanだけを渡し、Tablet側で
plannerを再実装しない。
Tablet利用者画面には完成計画、開始anchor、方向、接続移動、外周残存領域を表示する。内部Stage・WorkArea候補・
診断partialを実行可能経路として表示しない。操作は段階別パネルへ置き、地図上の常設ボタンを増やさない。
- 固定画面骨格が段階遷移で不必要に動かず、各段階で強調する主操作が1つ以下である。通常作業ドックと
段階別計画編集パネルが同じ固定104dpで、全計画状態で下部領域の高さと主操作の位置が変わらない。
長い状態文言・長い失敗詳細で高さが変わらない(長い失敗詳細はダイアログへ表示する)。
- 確認済み入口の進入方向に最も近い既存辺候補による初期仮計画が地図に表示される。初期仮方向を辺選択・
自由回転済みと表示しない。
- 「辺方向へ回転」で既存の代表辺候補を初期仮方向候補の次から既存順に巡回し、重複候補もそのまま扱う。
- 「自由回転」で方向線・ハンドルをドラッグでき、通常の地図移動と誤操作しない。指離しで1回だけ再計算する。
- 方向変更後の再計算中は、古い経路と新しい方向ガイドの両方が地図から消える。
- 短時間計算で待機表示がちらつかず、一定時間を超えた場合だけ進捗率なし待機表示とキャンセルが出る。
完了率、残り時間、偽の段階を表示しない。
- 地図、完成仮計画、コンパクトな段階別計画編集パネルが同時に見える。大きなbottom sheetで地図を覆わない。
- TILLとDEADHEAD、進行方向、確認済み入口、現在位置、既存軌跡を識別できる。
- 中央耕終了地点markerと仕上げlap 3開始地点markerが別々に表示され、農作業上の意味(どこで中央耕を終え、
どこから外周仕上げを始めるか)が色分けで分かる。両marker間はロータリーを上げた空走(DEADHEADの破線、
仕上げ周回と同じ向き)でつながり、逆走・その場でのUターン・耕耘線が無い。空走跡は後続の外周耕で覆われる。
※進行順の強化表示、外周3列と中央耕の重ね幅帯、perimeter residual / central uncovered layerはIssue #118が所有する。
- Profile不正の理由と「作業機設定を変更する」が画面内に収まり、長い失敗詳細でも主操作が画面外へ出ない。
- 失敗は「条件を変更して再作成できる」「この経路計画を使用できない」の2分類で、対象外と未実装を
詳細で区別する。内部の生の診断detailを表示しない。
- 計算中・完成仮計画表示中・再計算中も位置・軌跡・走行記録が更新され、主操作が走行記録へ戻らない。
- ボタン、警告、パネルに欠け、重なり、画面外押出しがない。
通常長方形、複雑な実在形状、凹形状、停止理由付きケースで、初回計算、各辺方向への再計算、自由回転後の
再計算時間を実機計測する。計測結果は待機表示開始時間の調整だけに使い、タイムアウト、探索制限、候補上限、
契約外fallbackの根拠にしない。
- production筆一覧から筆を選択する。
- 登録入口、外→内の位置履歴、方向指定の順で入口候補を得る。
- 利用者確認後に入口を確定する。
- Profileと中央方向を選択する。
- Stage 0〜9を実行し、PCで完成計画または分類済み停止理由を表示する。
- Issue #111では、Tabletの実操作・正式な状態管理で、初期仮方向による初回計算、完成仮計画の地図表示、
辺方向回転、自由回転、方向変更ごとの再計算、失敗2分類、条件変更、計画終了、「この計画を使う」の
後続工程への受け渡しまで確認する。
- 短時間/長時間計算、キャンセル、連続変更時の最新結果採用、再計算中の地図、一時中断/新規プロセス、
計画中の位置取得・軌跡・走行記録継続も同じ製品経路で確認する。
登録入口の保存や位置履歴producerが未配線ならfixtureで代用して完了にしない。geometry fixtureがgreenでも、
production producerから最終consumerまで届かなければTrackは未完了である。完成済みの筆・入口・Profile・
方向をまとめて直接注入する手順や、PCの完成requestはTablet operational E2Eの代替証拠にしない。
- 対象Stageまでのgeometry contract fixtureがgreen。
- production開始点からのoperational E2Eがgreen。
- machine contract ratchetと対象module test、release buildがgreen。
- 本書の対象Stage layerをPCで利用者が確認済み。
- 契約差分が0件、または事前承認された契約変更への参照がある。
- 変更で落ちる既存テストを同Track内で反転済み。
利用者確認前はbaselineまたはadoptedとして完了せず、後続Trackへ進まない。