專案

一般

配置概況

動作

Feature #382

進行中
SC

ADR-009 ARCH-1↔ARCH-2 住宿整合編排入口落地批:orchestration 組裝層+geo hydration 生產缺口修補+分層逾時預算+devil E1-E6 裁決修復(646 測試綠)

Feature #382: ADR-009 ARCH-1↔ARCH-2 住宿整合編排入口落地批:orchestration 組裝層+geo hydration 生產缺口修補+分層逾時預算+devil E1-E6 裁決修復(646 測試綠)

是由 Sashiba Chou6 天 前加入.

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

0%

預估工時:

概述

ADR-009 ARCH-1↔ARCH-2 住宿整合編排入口落地批(646 測試綠)

背景

業主拍板本批範圍(2026-07-27 白話三選一)=「先把住宿接起來」:端到端「Destination 序列+日期 → Trip(Stage A Day 骨架+已過 C-3 篩選的 accommodation_pool)」。景點/餐廳排程(Stage C/D/E,程式碼不存在)明確排除、另批處理。PM 分解時揪出關鍵現況:ARCH-1 編排流程原本完全沒有住宿接入點,且 Destination.lat/lng 從無任何程式路徑填入——ADR-008 的同名城市防護與 Stage A 地理連續性檢查在生產路徑上恆不生效。

ADR-009 七項裁定(system-architect,全 封頂)

  1. 決策 0 目的地座標補值(geo hydration):Stage A 前執行,修補上述生產缺口;只補未知/過期、不覆寫、失敗留 None+WARN 不阻擋;formatted_address 不落 Destination(C-7)。
  2. 決策 1 組裝層:新 package orchestration/(composition root),單向依賴可機械驗證(scheduler/adapters 不得反向 import);同步阻塞;循序雙管道 B 先 C 後(Playwright sync 不可跨執行緒、C-4 足跡、封鎖時業主手動記錄已入 pool)。
  3. 決策 2 逐來源降級:ChannelOutcome 七態(ok/empty/blocked/timeout/error/skipped_budget/filtered_out)transient 承載不新增 persist 欄位;blocked→該 channel 剩餘 destination 全跳過、他 channel 續行、整體不中止;目的地全滅顯性標記。
  4. 決策 3 checkin/checkout 純函式:「不再需要住這裡的那天」統一語義,同日轉場正確處理;夜覆蓋缺口 WARN 不自動併(不替業主推論)。
  5. 決策 4 C-3 兩階段:搜尋頁主篩三桶+僅 pending 詳頁補分(SOFT_CAP=9、pass 不進詳頁防全量爬)。
  6. 決策 5 跨管道不去重:並列+重複提示(兩筆都旗標不刪除)+混源不變式結構性封住 followup-d serializer 失真雷。
  7. 決策 6+7:分層逾時預算(L0 150s/L1 動態均分/L2 逐呼叫+adapter wall-clock 自我收斂,機制定死、13 常量全【低信心】待校準);整合層禁跨呼叫快取(C-7);AccommodationNode.destination_index[P] 唯一 schema 變更。

devil 6 項+qa 2 項挑戰裁決(全數採納,2 阻擋級)

  • E1(阻擋)ok 語義與 ADR 自文矛盾——search 非空但 C-3 全滅仍標 ok、全滅目的地漏標。修復:contributed_count+新態 filtered_outdestinations_without_candidates 改依 pool 實際貢獻數。
  • E2(阻擋):enrich 迴圈無聚合 wall-clock(9 筆×最壞 48s≈432s=2.8 倍全域預算,與已修復 8m44s bug 同構)。修復:補第四項硬收斂,超時停止補分、剩餘候選原樣回傳不丟棄。
  • E3:Geocoding 呼叫上限原只涵蓋 1/3 呼叫點(ADR-008 F9 形同未落地)。修復:公開 adapter-bound GeocodingCallBudget 兩態實質接線+態 2 直述 WARN。
  • E4:過期座標重解析可能靜默換城市。修復:雙訊號分級——place_id 矛盾→清 None 不猜(ADR-004「未確認≠負面值」);距離超 DESTINATION_REANCHOR_WARN_KM=50【低信心】→採用+WARN+notice。
  • E5:round-trip 行程同飯店二次到訪誤判重複。修復:比對限同 destination_index。
  • E6:子預算算術超過父預算致正常查詢必標 timeout。修復:三類常量語義區分(執行期收斂點/觀測門檻/呼叫邊界閘)+CHANNEL_SEARCH_BUDGET_S 45→65s(不放寬實際耗時)。
  • q2:「零網路呼叫」措辭精確化為「零 channel 網路呼叫」(Geocoding 在 Stage A 前屬既定順序,不耗 C-4 額度)。

驗收標準(全數通過)

  • python -m pytest tests/ -q646 passed, exit code 0(基準 604 → 646,+42 測試;主協調者每階段獨立複跑:630/640/646)
  • ADR-009 十個 qa 機械錨點全覆蓋(混源不變式/夜區間不重疊全覆蓋/預算三降級/blocked 續行/零 channel 呼叫/無跨呼叫快取/filtered_out/enrich 收斂不丟節點/reanchor 雙訊號/round-trip 不誤旗)
  • qa 簽核通過(自行補 10 測試關閉缺口;capture wall-clock 收斂補測完成)
  • devil 6 項全裁決收口,無撤回級;已知弱點 8 項誠實揭露(含 ADR-002 預算結構性張力=撤銷條件監控項)
  • 治理紀律:全 封頂無任何 升級;不新增/修改 constraint;寫入權矩陣無違規;全程離線 fixture 零 live 請求(C-4)

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

  • ARCH-2-followup-h(P2)轉「機制已裁定、數值待校準」:13 常量【低信心】待 live 校準批
  • adr-009 tree 節點 verification_status: pending 待 system-architect 下次啟動驗證(adr-008 節點同狀態——architect 驗證回覆四度傳輸遺失,誠實維持 pending)
  • ARCH-6/CLI 呼叫端串接時須採 GeocodingCallBudget 態 1(全涵蓋)用法

沒有任何資料可供顯示

動作

匯出至 PDF Atom