專案

一般

配置概況

動作

Feature #383

進行中
SC

Stage C/D/E 第一批落地:自駕單日排程鏈——DayScheduler 方案 A+停車接線+負載守恆+Tier-3 or 0 阻擋級修復+devil C1-C8 裁決收口(728 測試綠)

Feature #383: Stage C/D/E 第一批落地:自駕單日排程鏈——DayScheduler 方案 A+停車接線+負載守恆+Tier-3 or 0 阻擋級修復+devil C1-C8 裁決收口(728 測試綠)

是由 Sashiba Chou5 天 前加入.

狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-28
完成日期:
完成比例:

0%

預估工時:

概述

Stage C/D/E 第一批落地:自駕單日排程鏈(728 測試綠)

背景

業主核准主線下一步=景點/餐廳排程第一版。PM 分解切片=自駕單日排程鏈(Stage C 排序核心全套+Stage D 自駕段與停車全套+Stage E 基礎負載守恆),POI 走 fixture(排程邏輯先行、真實 Places 採集另批);大眾運輸/票務/advisory 明文留後批。ARCH-1-1~1-8 全為 「架構已設計」、無 攔路。architect 施工前介面確認落 architecture.md(不開新 ADR、不新增 constraint,ADR-006 框架內細化,比照 ARCH-1-4/1-5 前例)。

三個新模組(零到一,+57 條工程測試)

  1. stage_c.py:DayScheduler Protocol(frozen dataclass 純資料零 adapter、後批加大眾運輸只加資料不改簽章)+方案 A(most-constrained-first 貪婪插入+or-opt);hard_windows/travel_matrix 預算好餵入(結構性保證零網路 I/O);幾何代理 haversine×30km/h【低信心】;D1 簇劃分+Gap-2 annotations;非自駕日顯式拒絕不靜默降級。工程實作中自行揪出並修正「只會立即銜接、不會等待硬窗開啟」的時序 bug。
  2. stage_d.py:三相切割(收集純函式→I/O 唯一區段→組裝純函式);TransitNode 插入+order 重編(旅遊節點相對序穩定);停車 P-step 1 信號+max_walking_m 依 node_type 分流+parking_batch_id Day 層統一覆寫。
  3. stage_e.py:六條落地公式(load 守恆/MEAL 不雙計/BUFFER 分段乘積/capacity 首尾日折扣+過境日 min()/C9 軟警戒線/D4 邊界緩衝 pace 連動);溢出三態不靜默刪(move_attempted=False 誠實標記);過境日長途段 C5 死結豁免。

qa 揪出阻擋級 src bug(簽核有條件通過→修復→無條件通過)

stage_e.py(estimated_minutes or 0) 把 Tier-3 降級段的 None 靜默吞成 0 分鐘——除 fixture 寫死 3 組 OD 對外幾乎所有真實點對移動時間被當 0,系統性低估、方向違 ADR-006 D4「校準前寧可高估」與 DM-P3 紅線。修復:三分支優先序(ScheduleCache 跳過→相鄰座標 haversine classify→無座標退 intercity 最保守)取 TIER3_FALLBACK_BY_CONTEXT 填補;估計值不回寫節點欄位(守 C-1 反幻覺);新增 has_tier3_uncertainty transient 旗標。qa 補 9 條永久回歸測試。

devil C1~C8 挑戰+architect 裁決(全數收口,無撤回級)

  • C2(阻擋級,機制修):規格宣稱「代理與真值落差由 D4 旗標兜底」不成立——D4 讀的是 Stage C 代理時段,真值從未回填時序。修復:Stage E 新增真值時序重算(single-pass、order 不變、不回饋 Stage C——屬 Stage E「校驗+標記」本職非違正交性),D4 與硬窗違反偵測一律改讀重算後時刻;原文兩句已撤回。
  • C5(優先級最高):長途段「位置判準」會被同批 apply_dropped_disposition() 打破→C5 死結復發。修復:StageDResult.longhaul_transit_node_ids 顯式集合廢除隱含不變式,退化路徑帶 longhaul_identified_by_position 可見標記(併結 qa 上報 (b) 收口)。
  • C3:load 扣減前值 vs overloaded 扣減後值自相矛盾(devil 數字反例 800/False)→ 雙欄位 before/after_disposition。
  • C4:硬窗等待空轉不入 load → 新增 idle_minutes 衍生量+load_after+idle>=capacity 旗標規則(打旗標不移出)。
  • C6(qa 工作):or-opt 糾正效果零覆蓋(整函式砍掉全綠)=ADR-006 D1 未驗收 → 補完整 solver 級驗收測試(5 節點/2 窄硬窗/2 簇)+or-opt before/after 嚴格下降斷言。
  • C1(本批不修,已知簡化+下一批必做):住宿↔當日首/末節點通勤不進負載——上游結構阻擋(Day 層無「已選住宿」承載,跨 ARCH-3 );過渡=ARCH-5 固定提示不捏造分鐘數;與停車步行低估同向疊加已明文。
  • C7 列下一批診斷;C8 山路係數 1.3 方向追認、數值併校準批(同值巧合已註記防誤導)。

tps 領域複核(本批無應修項;下一批優先序重排建議)

第一版最大領域風險=餐廳用餐時段硬窗缺失(午餐可被排在 15:20),tps 建議優先於大眾運輸批;另指出已訂位餐廳無溢出保護、夜市行程被 21:00 截斷(台灣高頻)、主題樂園 dwell=240 明顯偏低(可能需規則層級調整)。全數入 open-questions ARCH-1-CDE-followup-a/-b。

驗收標準(全數通過)

  • python -m pytest tests/ -q728 passed, exit code 0(基準 719 前批 → 本批鏈 646→703→710→719→728;主協調者每階段獨立複跑)
  • qa 最終簽核無條件通過(機械錨點全數實質斷言;C6 D1 驗收缺口關閉;fixture 修正經獨立數值驗證非弱化)
  • devil 8 項全裁決收口;架構「已知簡化清單」集中明文(刻意留白 vs 遺漏可辨識)
  • 治理紀律:全 封頂、ARCH-1 整體維持 、無新 ADR、無新 constraint、全程離線 fixture 零 live 請求(C-4)

遺留(已入 open-questions,不阻擋)

  • ARCH-1-CDE-followup-a(P1):下一批優先項——餐廳用餐時段硬窗(領域判定最高優先)/訂位保護/夜市 day_end/C1 住宿通勤/C7 診斷
  • ARCH-1-CDE-followup-b(P2):校準批追加 7 項(代理速度分級/樂園 dwell 規則層級/compact 多重低估合併估等,併 Q10-followup-j)
  • adr-008/adr-009 tree 節點 verification_status: pending 維持(architect 驗證回覆多次傳輸遺失,誠實停 pending 待下次啟動)

沒有任何資料可供顯示

動作

匯出至 PDF Atom