Feature #402
進行中ARCH-1-3/ARCH-1-8 大眾運輸排程批:Stage C/D/E 全鏈路支援大眾運輸日(fixture-backed)——§C3 模式投影+ScheduleCache+轉乘鏈+守衛退場+devil C1/C2 必修收口(1141 測試綠)
0%
概述
ARCH-1-3/ARCH-1-8 大眾運輸排程批:Stage C/D/E 全鏈路支援大眾運輸日(fixture-backed)——§C3 模式投影+ScheduleCache+轉乘鏈+守衛退場+devil C1/C2 必修收口(1141 測試綠)¶
背景¶
排程鏈(Stage AE)此前僅支援自駕日,收到大眾運輸日只回 11)走 architect 前置定案 → 六棒工程序列 → qa 兩輪 → devil 挑戰 → architect 三次裁決收口的完整治理鏈,全程 fixture-backed(比照 ADR-010「先 fixture 驗編排、後續批 live」節奏),「排程邏輯支援大眾運輸日」≠「真實台/日/韓班次資料可用」(真實源接線列 ARCH-4-followup-transit-live)。UnsupportedDayModeDiagnostic 顯式拒絕;「每段用什麼交通模式」的 §C3 逐段投影從未實作(硬編 DRIVING 死路)。本批依 PM 任務分解(任務 0
架構前置(任務 0/1,system-architect,無新 ADR)¶
-
ScheduleCache 介面契約落檔
docs/interfaces/day-scheduler--schedule-cache.md(SC-1~SC-12 十四條裁定):cache key=(service_date, origin_node_id, destination_node_id)(service_date 入 key、node_id 非 stop_id——Stage C 手上只有節點,否則 D3 零 I/O 不可行);value=全天 ordered departures(minute-of-day 整數、跨夜>=1440承載 GTFS>=24:00);讀取面純 Mapping(結構性封死 lazy fetch);三態禁混同;batch_prefetch_schedules()新增不動既有簽章。Q10-followup-k 結案。 -
§C3 可程式化補完 (a)~(g):閉區間端點、destination_pair 僅匹配轉場段、「繼承前一 Day」矛盾重定義(Trip 層規格繼承)、模式衝突顯式 error 不取最後一條、
mode_source欄位+舊檔保守 migration、投影定義域改任意節點對;預取範圍明文化有序對|T|×(|T|−1)(原無序估計 ×2)。 -
Tier 3 命名/數值漂移收斂裁決:
local/regional/intercity+10/100km+30/90/180 分為唯一權威(明文「不主張新值更準確」、附 governance 邊界防「先實作規格追認」被援引為通例)。
工程落地(任務 2~7,data-integration-engineer 六棒序列)¶
-
§C3 逐段模式投影(
transport_mode_projection.py):消費Trip.transport_mode_overrides取代硬編 DRIVING;TransportModeConflictError進 Stage A;TripAcquisitionRequest.transport_segments打通原「schema 有欄位無輸入路徑」缺口。 -
Q6 裁決落地:
day_mode(名實不符的 Day 級權威值)→requires_transit_scheduling: bool衍生述詞;否決 MIXED enum;UnsupportedDayModeDiagnostic依 Q6-3 排程約束與排程鏈同批退場。 -
D-pre 批量預取(
stage_d_pre.py+schedule_cache.py):三分支範圍(純自駕不執行/純 transit 全組合/混合限縮子集)、SC-7 不變式驗證壞資料不入 cache、SC-8a 全滅訊號、逐節點 reverse_anchor 反推(跨夜 lossless:reverse_anchor_minutes整數保留,修掉datetime.timemod 1440 靜默算錯隱患)。 -
末班車 Band 1 硬窗:
latest_return_departure_minute啟用(min() 最嚴格聚合+已知取捨註記);Stage C 消費 ScheduleCache(SC-10 三態、MissDiagnostic 型別)。 -
Stage D-main 逐段分流:依投影呼叫
get_transit_segment(..., mode);Q6-5 停車觸發改逐段判定(到達段 mode,禁讀 Day 級旗標——混合日上午自駕掛停車、下午地鐵不掛);transit 段先查 ScheduleCache 未命中才退舊路徑(「大眾運輸讀 D-pre 快取」首次真正實作)。 -
ARCH-1-8 轉乘鏈:三欄串接([P]-但-regenerate-覆寫)、I-21 原子塊(整批 extend 結構性連續)、
chain_endpoint_orphaned(靜態版,動態列 followup)、MAX_TRANSFER_LEGS超限降級、gate_capacity 三層 fallback 接完;守衛正式鬆開,端到端 fixture 測試走通。
devil 挑戰 → architect 裁決 → 必修收口(任務 11/15/16)¶
devil C1C7(報告 D-C4,無 ADR):docs/research/devil-advocate/2026-08-02_transit-scheduling-batch_challenge.md),architect 逐行核對程式碼後裁決(D-C1
-
D-C1(阻擋級必修,已完成):「已查證全天無班次」與「未預取」兩態在 D-main 合併=靜默欺騙(使用者可能拿到全天沒車可搭的段且無提示)——拆兩態分流(SC-3c-a):已查證無服務段產
data_tier=3/confidence=unavailable/明標「經查證全天無班次」,不再退即時查詢偽裝正常;否決工程師「功能等價」宣稱並修正 docstring;負向斷言「兩態不得產生相同 TransitSegment」落地。 -
D-C2(低風險部分必修,已完成):min() 聚合吃全部候選(9:1 比例可讓晚間蒸發 5~6 小時)與 §C2「交通高估=誤殺不可接受」衝突——本批
LastTrainAggregationDiagnosticpost-hoc 比對(qa 補整合層測試驗證真的接進管線輸出);per-node Mapping 完整修復併 ARCH-1-3-followup-transit-feasibility(與 Stage C 接線同一設計不分做)。 -
D-C3:
chain_endpoint_orphaned修復須「時機+disposition 判準」兩件一起(規格已明文防半套修復)→ ARCH-1-8-followup-orphan-disposition。 - D-C4:步驟 0 未接線目前不可觸發,列 ARCH-6 落地前置條件 cross-reference。
- 治理警訊入規格:
DaySchedulingRequest簽章裁定第三次修改須開 ADR 重檢介面形狀。
C-4 負載估算(任務 10,fixture 級,不驅動 升級)¶
experiments/transit-load-estimate/:5 天代表性行程 114 OD 對(純過境日精確吻合 |T|×(|T|−1);轉場日因 next_destination_anchor 注入使基數+1,實測 72 > 既有上限估計 56——已補記 Q10-followup-i);【低信心】外推:若 1:1 映射真實 TDX 呼叫,114 次在 5 次/分鐘下需 ≈22.8 分鐘遠超 ADR-002 同步預算——TDX 配額單位語義釐清升為真實源接線第一優先前置(Q10-followup-b);Transitland 無既有查證數字誠實留白。
open-questions 連動¶
- 結案:Q10-followup-k(ScheduleCache 介面)、ARCH-1-CDE-followup-a (4) 殘餘(transit day 住宿通勤,qa 補「過境日+住宿錨點+長途段」組合測試 3 條——此組合先前從未同時被測)。
- 新增:ARCH-1-3-followup-transit-feasibility(P1)、ARCH-1-8-followup-orphan-disposition(P2)、ARCH-4-followup-transit-live(P1,真實源接線)。
- 補記:Q10-followup-i 有序對×2+轉場錨點觀測、Q10-followup-b 優先級訊號、Q10-followup-j Tier 3 收斂文字同步。
驗收標準(全數通過)¶
-
python -m pytest tests/ -q→ 1141 passed, exit code 0(基準 990 → +151;每棒主協調者獨立複跑,最終含 qa 覆驗新增測試) - qa 任務 8/9/16 三輪簽核通過(含 D-C1 精確重現→修復後翻轉、DC2 接線整合測試、禁假綠燈標註)
- devil 挑戰 C1~C7 全數經 architect 裁決收口(必修兩項完成、followup 三項規格明文承載)
- 零 升級(fixture 驗證誠實停 ,接地上限條款);純 transit 日與混合日不誤拒負向斷言全綠
- 混合日「driving 段掛停車/transit 段不掛」端到端可重現
後續批次入口¶
ARCH-1-3-followup-transit-feasibility(Stage C 可行性接線+per-node 末班車)→ ARCH-4-followup-transit-live(真實源,前置=TDX 配額單位釐清)→ Q10-followup-j 校準批。
沒有任何資料可供顯示