Skip to content

feat: startup banner 偵測「versioned Claude Code host + EventKit 未授權」並主動提示 (#175) - #179

Merged
kiki830621 merged 4 commits into
mainfrom
idd/175-banner-versioned-host-signal
Jul 10, 2026
Merged

feat: startup banner 偵測「versioned Claude Code host + EventKit 未授權」並主動提示 (#175)#179
kiki830621 merged 4 commits into
mainfrom
idd/175-banner-versioned-host-signal

Conversation

@kiki830621

Copy link
Copy Markdown
Member

Refs #175

Summary

#122 drift-detector 新 signal:MCP server 在 Claude Code versioned host(~/.local/share/claude/versions/<v>#170 記錄的每次更新輪替路徑)下啟動且 EventKit 未完整授權時,banner 主動解釋輪替現象並給出行動指引(System Settings toggle 最新版本號 entry / 觸發 re-prompt / troubleshoot-tcc)。授權完整者零新噪音、零新 subprocess(spy 測試釘住);capture 失敗 → 可見 skipReason。

Verification

6-AI cross-model verification PASS#175 (comment)
verify 抓到並 in-scope 修畢 2 MEDIUM(DA-1 gate 收窄雙重靜默、DA-2 與 #163 --setup 行矛盾指示 — 後者為 DA 淨新盲點,四 lens + Codex 全漏)+ Codex spy 測試建議(d3e51a8)。490 tests 0 failures。

Checklist


🤖 Generated by /idd-all. Do NOT add a GitHub close trailer(Closes/Fixes/Resolves).

…it combo (#175)

New DriftSignal.versionedClaudeHostUngranted: when the MCP server starts
under a Claude Code versioned host binary (~/.local/share/claude/versions/,
the path #170 documents as rotating on every update) AND Calendar is not
granted in this context, the banner explains the rotation and points at the
System Settings toggle / re-prompt path. ps spawn gated on the ungranted
path only; capture failure degrades to a visible skipReason.
…ory --setup line (#175)

Verify DA-1: the gate now takes eventKitAccessGranted (Calendar AND
Reminders) — a Reminders-only breakage under a versioned host was doubly
silent (neither this signal nor the #163 line fired for it). Verify DA-2
(net-new, all four lenses + Codex missed it): when the versioned-host
signal fires, the #163 --setup line is suppressed — it grants the wrong
attribution identity (CheICalMCP-as-foreground, not the rotated host
grant) and the two lines offered contradictory remediation. Codex
suggestion: SpyParentChainSource proves the granted path spawns zero
subprocesses, observably.
@kiki830621
kiki830621 merged commit a528992 into main Jul 10, 2026
4 checks passed
@kiki830621
kiki830621 deleted the idd/175-banner-versioned-host-signal branch July 10, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant