釋出:status 加 --verdict,把狀態與成敗兩種語意分開 #87
2 Participants
Notifications
Due Date
No due date set.
Blocks
#78 釋出:唯讀盤點那一欄補一條結束碼規則,並換掉一個用結束碼帶狀態的指令
plugins/meta
Reference: plugins/hooks#87
Reference in New Issue
Block a user
摘要
wire-cli.sh status的結束碼帶的是狀態。於是有先天限制的那一支 CLI 每一輪讓那一筆失敗一次——實測一個半小時就爬到 14 次。這一批的內容
status加--verdict旗標:輸出一字不變,只有結束碼換一套語意——該接的都接了就回 0,先天限制不算;真的缺項目照樣回非零。版號 0.4.4 到 0.4.5。
同一個通道,兩種意思
status的結束碼帶的是狀態:0 接好、1 接好但這支 CLI 做不到、5 有東西沒接。那是給人看的三分法,本身沒有錯。錯的是拿它當檢查。而那一支自己分得很清楚:
degraded是「該接的都接了,這支 CLI 做不到」,unwired才是「有東西沒接」。前者是狀態,後者是缺陷。讀的那一邊把兩者都當失敗。這個計數為什麼不能被填滿
失敗次數存在的理由是指出「有一筆壞掉的項目每輪重試而沒人知道」。
那支 CLI 擋不下技能叫用是它的架構限制——技能走的是 agent 內部請求,攔不到;16 個接線項目全部就位,沒有東西要修。實測一個半小時爬到 14 次,照這個速度一天 96 次。 真正壞掉的項目一旦出現,它的計數會混在這個數字裡,看不出誰是誰。
為什麼修在這一邊
狀態與成敗是兩種語意,混在同一個通道上才是根因。
另一條路是讓讀的那一邊認「可接受的非零碼」——那要在待辦簿加一個欄位,而且每個往後填那一欄的人都得先想「我的結束碼是哪一種語意」。修在這裡只需要知道自己的三種狀態哪一種是缺陷,而那個知識本來就在這一支裡。
測試結果
statusstatus --verdictstatus=degraded那一行照印——人還是看得到那支 CLI 有限制。相關的另一張
plugins/meta那邊把委派清單那一格換成帶旗標的寫法,並在那一欄的檔頭補一條規則:結束碼只准表示過與不過,不准用來編碼狀態。那一張掛在這一張後面。前置 Push Request