adopt 的冪等改靠「先讀 /dependencies」:真 Gitea 對重複相依回 500 不是 409(inkstone/ISEP#133)
真 Gitea 實跑(hub=InkStoneCo#44、子票=ISEP#133):第一次 POST 成功、/blocks 回 #44、 清空快取後 has 靠 /blocks 判「在」;第二次 POST 回 500——假伺服器原本猜 409,adopt 第二次會炸。 add_dependency() 改成先讀 parent 的 /dependencies,邊在就不 POST(判準是 Gitea 的事實,不是回應碼); 假伺服器改照真的回 500;A41 56→57 條。測完 DELETE 復原(201,/blocks 空)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178ef1fGw3XeZtpN7LaZrm4
This commit is contained in:
+5
-4
@@ -1019,12 +1019,12 @@ bash scripts/test-worktree.sh
|
||||
- (31)(32) 紅 ⇒ 把「離線」當成「沒推」——拿雜訊懲罰謹慎。
|
||||
|
||||
|
||||
### A41 — 主線成員由相依邊決定,不靠同名里程碑:56 條
|
||||
### A41 — 主線成員由相依邊決定,不靠同名里程碑:57 條
|
||||
```
|
||||
bash hooks/tests/mainline-members-by-dependency.test.sh
|
||||
```
|
||||
**該看到**:`通過 56 條,失敗 0 條`。**全程離線**:Gitea 是本機一個假伺服器(`TICKET_HOST` 指過去,
|
||||
照真 Gitea 回:相依 POST 201、已存在 409、issue 列表用 `milestones=` 名字查),狀態走
|
||||
**該看到**:`通過 57 條,失敗 0 條`。**全程離線**:Gitea 是本機一個假伺服器(`TICKET_HOST` 指過去,
|
||||
照真 Gitea 回:相依 POST 201、**已存在回 500**(2026-09-07 實測,不是想像中的 409)、issue 列表用 `milestones=` 名字查),狀態走
|
||||
`ISEP_COUNTDOWN_STATE_DIR`、repo 那份走 TMP 底下的假薄殼、`HOME` 也指到 TMP。
|
||||
**不碰真家目錄、不碰真 Gitea、不碰真 InkStoneCo。**
|
||||
|
||||
@@ -1048,7 +1048,7 @@ adopt 同 repo ⇒ 掛進 hub 里程碑;別 repo ⇒ POST 相依到 hub 票
|
||||
- A 群 ⑥⑦ 紅 ⇒ **同名里程碑裡的票又被當成成員**——被推翻的判準回來了
|
||||
- ⑪ 紅 ⇒ `set` 又去別的 repo 找同名的了
|
||||
- ⑮⑯⑰ 任一紅 ⇒ `adopt` 別 repo 的票不是加相依:要嘛改了那張票的 milestone、要嘛建了里程碑
|
||||
- ⑳ 紅 ⇒ 重複 adopt 炸了(Gitea 409 沒被當成「邊本來就在」)
|
||||
- ⑳⑳′ 紅 ⇒ 重複 adopt 炸了或重複 POST 了(冪等要靠「先讀 /dependencies」,真 Gitea 對重複 POST 回 500)
|
||||
- ㉔–㉙ 任一紅 ⇒ 沒 hub 票時沒擋、沒給路、或給的路**貼上去跑不動**(㉙ 把訊息裡那行原樣執行)
|
||||
- ㉛–㉞ 任一紅 ⇒ **票上驗法第 1 條破了**:同名里程碑關掉後成員掉出主線,或 `pick` 抓不到靠邊進來的票
|
||||
- ㊱㊴㊵ 任一紅 ⇒ `has`/focus guard 沒去問 `/blocks`,只看 milestone 就下結論(那是「只知一半」)
|
||||
@@ -1061,6 +1061,7 @@ adopt 同 repo ⇒ 掛進 hub 里程碑;別 repo ⇒ POST 相依到 hub 票
|
||||
(里程碑裡 4 + 相依收到 20),其中 `mira#6`、`ISEP#130`、`ISEP#140`、`arcrun-rag#104` 都在
|
||||
——**不必新增任何邊**,現有的相依圖已經連得到;`has` 四張都回「在」;
|
||||
`ticket pick --all` 主線組回 `Arcrun#197`、`mira#5`(後者靠 `Arcrun#86` 的邊,沒掛任何 hub 里程碑)。
|
||||
**寫入那半也真跑過一次**:`adopt inkstone/ISEP#133`(hub=InkStoneCo#44)POST 成功、`/blocks` 回 `InkStoneCo#44`、清空快取後 `has` 靠 `/blocks` 判「在」;重複 POST 真 Gitea 回 **500**(假伺服器原本猜 409——這就是「離線全綠之後一定要真跑一次」),修成先讀 `/dependencies`;測完 DELETE 復原(回 201,`/blocks` 空)。
|
||||
這一走 19 秒(約 30 次序列 GET)⇒ SessionStart 的 `refresh` **不帶** `--members`(成本不變),
|
||||
`set`/`adopt`/`refresh --members` 才重收;`pick`/`has`/閘每次現問 Gitea,快取只餵 `show`。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user