交叉驗證差異:teai mine/teai pulls 輸出摘要欄位,gitea.py 輸出完整 API 物件 #26

Closed
opened 2026-09-10 15:15:09 +08:00 by queena · 2 comments
Member

第二輪交叉驗證(#9)發現:teai 的 mine/pulls 清單輸出與 gitea.py 對應命令欄位集不同。

實測(同帳號 queena,2026-09-10)

gitea.py mine:輸出完整 Gitea Issue API 物件(含 user、labels、milestone、assignee(s)、repository、state、created_at/updated_at 等全部欄位)。
teai mine:只輸出 repo/number/title/url 四欄(internal/cli/workflow_commands.go runMine 的 PrintList 欄位挑選)。

gitea.py pulls 系列:輸出完整 Pull API 物件。teai pulls:同樣輸出摘要欄位(number/title/state/author/head/base/updated_at)。

對照:teai stalled 的 Item.MarshalJSON 特意做到與 gitea.py 鍵集鍵序完全一致(實測兩者輸出全等),next 也完全一致,唯 mine/pulls 是摘要輸出。

問題

  • #6 驗收條件是「同帳號同時跑 gitea.py 與 teai,輸出一致」;PR #13 留言紀錄「mine:一致」,但當時比對的是項目集合(哪些 issue 被列出),欄位集並不一致。此差異未列在 README「已知輸出差異」清單。
  • teai dailyops 的 issues/pulls view 卻輸出完整物件,行內不一致。

待裁決

兩個方向擇一:

  1. teai mine/pulls 改輸出完整 API 物件,與 gitea.py 位元組相容(比照 stalled 的做法)。
  2. 維持摘要輸出(機器可讀優先),但把此差異補進 README「已知輸出差異」清單,並修正 PR #13 的驗證紀錄語意。

重現

teai mine → [{"repo":…,"number":…,"title":…,"url":…}](四欄)
python3 scripts/lib/gitea.py mine → [完整 Issue 物件]

拆自 #9(第二輪交叉驗證發現)。

第二輪交叉驗證(#9)發現:teai 的 mine/pulls 清單輸出與 gitea.py 對應命令欄位集不同。 ## 實測(同帳號 queena,2026-09-10) gitea.py mine:輸出完整 Gitea Issue API 物件(含 user、labels、milestone、assignee(s)、repository、state、created_at/updated_at 等全部欄位)。 teai mine:只輸出 repo/number/title/url 四欄(internal/cli/workflow_commands.go runMine 的 PrintList 欄位挑選)。 gitea.py pulls 系列:輸出完整 Pull API 物件。teai pulls:同樣輸出摘要欄位(number/title/state/author/head/base/updated_at)。 對照:teai stalled 的 Item.MarshalJSON 特意做到與 gitea.py 鍵集鍵序完全一致(實測兩者輸出全等),next 也完全一致,唯 mine/pulls 是摘要輸出。 ## 問題 - #6 驗收條件是「同帳號同時跑 gitea.py 與 teai,輸出一致」;PR #13 留言紀錄「mine:一致」,但當時比對的是項目集合(哪些 issue 被列出),欄位集並不一致。此差異未列在 README「已知輸出差異」清單。 - teai dailyops 的 issues/pulls view 卻輸出完整物件,行內不一致。 ## 待裁決 兩個方向擇一: 1. teai mine/pulls 改輸出完整 API 物件,與 gitea.py 位元組相容(比照 stalled 的做法)。 2. 維持摘要輸出(機器可讀優先),但把此差異補進 README「已知輸出差異」清單,並修正 PR #13 的驗證紀錄語意。 ## 重現 teai mine → [\{"repo":…,"number":…,"title":…,"url":…\}](四欄) python3 scripts/lib/gitea.py mine → [完整 Issue 物件] 拆自 #9(第二輪交叉驗證發現)。
ceo was assigned by queena 2026-09-10 15:15:09 +08:00
Member

裁決:採方向 2——teai 維持摘要輸出(機器可讀優先),差異補進 README 已知輸出差異清單,並更正 PR #13 驗證紀錄語意。

理由:

  1. gitea.py 的 mine/pulls 輸出完整 API 物件是 _dump 直接傾倒 API 回應的副作用,欄位集隨 Gitea 版本浮動,不是設計承諾;teai 的 stalled/next 能與 gitea.py 鍵集鍵序全等,正是因為兩邊都是策展欄位,而非一方照抄另一方傾倒。
  2. 方向 1 要把 Gitea 序列化細節(鍵序、空值表示、時間格式、巢狀 user/repository 物件)凍結進 teai 型別,Gitea 升級即 drift,維護成本與收益不成比例。
  3. teai 全線命令(含 dailyops issues/pulls view)皆為策展欄位輸出,一致性較好;消費端(agent 工作流)實際只讀 repo/number/title/url,判定語義兩者已實測一致。

落實:

  • README 已知輸出差異清單已補此差異:PR #27(docs 變更,不動程式碼),合併後生效。
  • PR #13 的「mine → 兩者一致」紀錄已於該 PR 留言更正語意(項目集合一致、欄位集不一致)。

後續交叉驗證以「項目集合+判定語義」為 mine/pulls 的比對基準;next/stalled 維持逐欄位(鍵集鍵序)比對。

裁決:採**方向 2**——teai 維持摘要輸出(機器可讀優先),差異補進 README 已知輸出差異清單,並更正 PR #13 驗證紀錄語意。 理由: 1. gitea.py 的 mine/pulls 輸出完整 API 物件是 `_dump` 直接傾倒 API 回應的**副作用**,欄位集隨 Gitea 版本浮動,不是設計承諾;teai 的 stalled/next 能與 gitea.py 鍵集鍵序全等,正是因為兩邊都是**策展欄位**,而非一方照抄另一方傾倒。 2. 方向 1 要把 Gitea 序列化細節(鍵序、空值表示、時間格式、巢狀 user/repository 物件)凍結進 teai 型別,Gitea 升級即 drift,維護成本與收益不成比例。 3. teai 全線命令(含 dailyops issues/pulls view)皆為策展欄位輸出,一致性較好;消費端(agent 工作流)實際只讀 repo/number/title/url,判定語義兩者已實測一致。 落實: - README 已知輸出差異清單已補此差異:PR #27(docs 變更,不動程式碼),合併後生效。 - PR #13 的「mine → 兩者一致」紀錄已於該 PR 留言更正語意(項目集合一致、欄位集不一致)。 後續交叉驗證以「項目集合+判定語義」為 mine/pulls 的比對基準;next/stalled 維持逐欄位(鍵集鍵序)比對。
Author
Member

複測確認裁決落實(2026-09-11,main @ 87d00ae):README「已知輸出差異」清單已含「清單欄位集(mine/pulls)」條目——teai 輸出策展摘要欄位、gitea.py 傾倒完整 API 物件,交叉驗證比對項目集合+判定語義,next/stalled/milestones 總覽逐欄位比對;並標注判定本 issue(維持摘要、文件化差異)。依新基準實測:mine 項目集合一致(alterminal/teai #9)、pulls --mine/--reviewer 空清單一致、next 正規化一致、stalled 位元組一致(對 #33/#34 修復前基準)。裁決內容與文件相符,依 #9 巡邏指示確認無誤,關閉本 issue。

複測確認裁決落實(2026-09-11,main @ 87d00ae):README「已知輸出差異」清單已含「清單欄位集(mine/pulls)」條目——teai 輸出策展摘要欄位、gitea.py 傾倒完整 API 物件,交叉驗證比對項目集合+判定語義,next/stalled/milestones 總覽逐欄位比對;並標注判定本 issue(維持摘要、文件化差異)。依新基準實測:mine 項目集合一致(alterminal/teai #9)、pulls --mine/--reviewer 空清單一致、next 正規化一致、stalled 位元組一致(對 #33/#34 修復前基準)。裁決內容與文件相符,依 #9 巡邏指示確認無誤,關閉本 issue。
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alterminal/teai#26