Skip to content

validate/doctor 把每一筆 venue 候選的歧異記錄報成懸空——跨記錄檢查的查找表沒有 .venue(#553 起 venue 是合法候選) #699

Description

@kiki830621

Problem

LibraryStore.crossRecordIssues 檢查歧異記錄的候選有沒有對應的記錄時,查找表 entityKeys 只有 person、work、organization、divergence 四種,沒有 venue(Sources/AkashicStoreIO/LibraryStore.swift 約 3035 行)。

#553 起 venue 是合法的候選形狀,所以任何含 venue 候選的歧異記錄,validate/doctor 都報成「歧異候選「venue 「k」」沒有對應的記錄」,並說 resolve-divergence 會擲找不到對應記錄。同一個 store 上 resolve-divergence --dry-run 其實成功。

這是誤報,而且恰好落在 #675 指路的流程上:使用者照 #565 的拒絕訊息走合併時,會同時看到這則互相矛盾的警告。

Type

bug

Expected

  • entityKeys 補上 .venue: Set(venues.map(\.key))。
  • 補一支測試:store 裡有兩筆 venue 與一筆以它們為候選的歧異記錄時,跨記錄檢查不報懸空候選。
  • 查一次同一張表還漏了哪些 EntityKind,以後新增形狀時要一起補(加一個 exhaustive switch 或反射測試)。

Actual

每一筆 venue 候選都被報成懸空。


Source: batch14 R1 verify(#675,devil's advocate 席,2026-09-29);在暫存 store 以真 binary 重現。既有缺陷,不在該批 diff 內。


Current Status

Phase: verified(b16v R1:沒有 HIGH;旁邊的 recordDivergence 查找表也改成窮舉 switch)
Last updated: 2026-09-30 by idd-update

Blocking

  • (none)——等你 /idd-close

Commits

  • 3270bd86
  • c6893e00(R1 修正)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions