Skip to content

plugin-update: #18 R10 遺留 — Step 5 unresolved 語意、commit fence pathspec / 退出碼、Phase 2.5 信號 4 與 SKIPPED 消毒 #24

Description

@kiki830621

Problem

#18 verify Round 10 通過(0 HIGH),但留下 7 條 MEDIUM 與數條可直接動手的 LOW,其中幾條是 #18 R10 自己帶進來的:它們都落在 #18 的核心判準上(偵測落空 ≠ 檢查過沒問題;git 動作只在對的 repo 內跑),不該只留在 verify 報告裡。

MEDIUM(R10 #1#7

  1. Phase 0.5 Step 5 的 UNRESOLVED 語意錯(logic / regression):plugin_names_for_pathsmarketplace 內每一個宣告名稱都會解析一次,任何一個壞掉 / 未物化的 entry(本機實例:che-claude-config 的 manifest 仍宣告 doc-guardian → ./che-local-plugins/plugins/doc-guardian,目錄已不存在 → rc 2)都讓 UNRESOLVED>0,於是 happy path 永遠到不了、還印出「N plugin name(s) touched by these commits could NOT be resolved」這句假話並列出 target 自己。修法:UNRESOLVED 拆成獨立分支(happy path 仍靜默、另印一行「manifest 裡有 N 個 entry 解析不到,無法判定它們有沒有被動到」),措辭不得說「touched by these commits」;smoke test 加一個解析不到的 entry 覆蓋這條路。
  2. Phase 0.5 commit fence 的 git add -A -- "$MP_ROOT" 在巢狀案例上無效(DA):che-local-plugins 現在解析到外層 che-claude-config,而它就是 git toplevel,pathspec 等於恆等式——實測會 stage 35 個與 marketplace 無關的檔案。改為 git --literal-pathspecs add -A -- "$PLUGIN_DIR" "$MP_ROOT/.claude-plugin/marketplace.json";同時補 --literal-pathspecs(全檔唯一漏掉的 pathspec)。
  3. commit fence 結尾 rm -f "$MSGF" 洗掉 git add / git commit 的退出碼(codex):pre-commit hook / index lock 失敗後 fence 仍 exit 0,後續 push fence 推的是舊 commit。改用 trap 'rm -f "$MSGF"' EXIT 並保留原退出碼;Phase 2.5 README fence 同。
  4. Phase 2.5 信號 4 在「plugin 沒有任何 component」時未記入 SKIPPED(requirements):三個清單皆空時應 SKIPPED="$SKIPPED 4(無 skills/agents/commands 可比)"
  5. Phase 2.5 的 SKIPPED 把檔案系統名稱未消毒地丟進 echo(DA):目錄名含字面 \n 在 zsh 下會把結論行斷成兩行。套 clean()(或結論行改 printf '%s\n')。
  6. resolver 註解過度宣稱(requirements):「兩支公開查詢套同一條規則」只對巢狀同名成立;真正兩份非巢狀 checkout 時 marketplace_candidates 仍套 plugins/ tie-break、find_plugin_marketplace 取首列,兩者可能給不同 root(本機七個多持有者目前無此形狀)。把 resolve-marketplace.sh L204–214 與 CHANGELOG 的敘述限縮。
  7. signal-4 回報的是 regex 跳脫後的名字(DA,LOW#22 但與 meta-skill 落腳處:放 .claude/skills/ 而非 devtools plugin #4 同段):s=$(re_esc "$s") 覆寫了顯示用的變數,使用者看到 skill:a\.b。跳脫另存變數只進 grep。

LOW(可與上面同一輪處理)

Type

bug

Expected

上列 MEDIUM 全部修掉、LOW 至少處理 #12/#23/#17/#13/#24 的檔頭;scripts/test-plugin-update-fences.sh 對 Step 5 的 unresolved 分支與 commit/push fence 有覆蓋;resolver 註解與 CHANGELOG 的宣稱與程式一致。

Actual

R10 出貨的 SKILL.md:Step 5 對 che-local-plugins 每次都走警告分支並指控未被動到的 plugin;Phase 0.5「stage all + commit」對 che-local-plugins 會 stage 整個 che-claude-config;commit 失敗看起來像成功。

Impact

plugin-update 的 git 寫入面。Conflict Class C(與 #19 / #22 同一份 skills/plugin-update/SKILL.md),建議序列在 #18 之後、#19 之前或之後由使用者決定。

Refs #18(verify R10 findings;PASS 判準 0 HIGH 已達,本 issue 收 MEDIUM/LOW)、#23(plugin-upgrade 半段)。

Source: surfaced during /idd-verify #18 round 10(codex / requirements / logic / regression / devils-advocate lenses)

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