Skip to content

cluster: gh-egress exit-code band + unified python3 scan + Phase 2 rollout#256

Merged
kiki830621 merged 3 commits into
mainfrom
idd/cluster-gh-egress
Jul 13, 2026
Merged

cluster: gh-egress exit-code band + unified python3 scan + Phase 2 rollout#256
kiki830621 merged 3 commits into
mainfrom
idd/cluster-gh-egress

Conversation

@kiki830621

@kiki830621 kiki830621 commented Jul 11, 2026

Copy link
Copy Markdown
Member

Refs #227 #225 #226

Summary(cluster-PR — 三案同碰 gh-egress.sh,依拍板順序 2026-07-11)

  1. [followup] gh-egress gate refusal 專屬 exit-code band — 與 gh 原生碼空間解耦 (follow-up finding from #117 verify) #227 exit-code bandf2187f1):wrapper-origin 碼全數遷入專屬 refusal band ≥10(10=privacy net、11=mention net、12=unscannable body-file、13=attestation、14=usage)。不變式:wrapper 自身絕不 exit <10;任何 <10 = gh 原生碼經 exec 透傳 — unattended caller 憑 $? 即可分流「gate 拒絕→改內容」vs「gh 故障→修 auth」。新 passthrough guard(stub gh exit 4 原樣浮出)。
  2. [followup] gh-egress content net 的 jq/fallback 掃描邊界分歧 — non-projects 敏感路徑 taxonomy (follow-up finding from #203) #225 python3 統一掃描f623d26):單一 python3 parser 取代 jq/no-jq 雙路徑(雙路徑對 mcpServers[].env secret path 給相反判定)。taxonomy = projects keys ∪ sensitive-key 下的 path-shaped values;公開 tool path 不誤傷([FOLLOWUP #202] Privacy-gate mechanical-net precision + wrapper hardening #203 item 2 保留);python3 缺席/parse 失敗 → fail-closed 寬網。
  3. [followup] gh-egress wider rollout — idd-comment 等 7 skill 的 comment/edit egress 接線 (follow-up finding from #117) #226 Phase 2 rolloutdfda28f):6 個 skill 的可執行 comment/edit 呼叫點全數接線 gh-egress(idd-comment headline → diagnose/implement/verify/close → update)— [bug] AI-generated comment 中的 @mention 可能繞過 tagging-collaborators 5-step protocol (sister concern from #116) #117 mention net 與 privacy nets 在 comment channel 機械生效。

Checklist

  • Diagnose ×3(focused batch drain 2026-07-11)+ 決策拍板(碼帶 ≥10 / python3 統一 / phased rollout)
  • Implement(3 commits,各 Refs 對應 issue;gh-egress suite 57/57、rollout suite 24/24、全 plugin suite 0 fail)
  • Verify
  • Verify-gated: post-verify PASS = ready to merge → after merge, run the /idd-close ritual on all three issues — numbers in the Refs header above (manual gate + per-issue closing summaries; no auto-close trailer)

Generated by /idd-implement cluster mode. Do NOT add a GitHub close trailer — IDD discipline requires manual /idd-close after merge.

Wrapper-origin codes decouple from gh's native space: 10=privacy net,
11=mention net, 12=unscannable body-file, 13=attestation missing/invalid,
14=usage/malformed args. Invariant: the wrapper never exits <10 on its own;
any rc<10 is gh's code flowing through exec — unattended callers can split
"gate refusal -> fix content" from "gh failure -> fix auth" on $? alone.
Tests re-anchored (26 assertions) + new gh-native-passthrough guard (stub gh
exit 4 surfaces as 4, not confused with the band). tagging-collaborators.md
literal synced.

Refs #227
One python3 parser replaces the jq/no-jq dual path whose results diverged
per machine (jq: projects-only; no-jq: whole-file wide — a secret path under
mcpServers[].env dispatched on one machine, refused on the other). Taxonomy:
projects keys + path-shaped string values under sensitive key names
(key|token|secret|credential|password|auth|env); public tool paths stay
un-flagged (#203 item 2 preserved). python3 absent / parse failure fails
CLOSED to the bash-only wide net (over-refuses, never under-matches).
Tests: env-secret case + no-fuzzy-match guard; de-jq'd conditionals. 57/57.

Refs #225
…226)

All executable comment/edit call sites in idd-comment (headline scenario),
idd-diagnose, idd-implement, idd-verify (master/pointer/merged-findings),
idd-close (closing summary capture) and idd-update now dispatch through
scripts/gh-egress.sh with --scrub-attested (level per
rules/privacy-scrubbing.md) and --mention-attested wiring where mentions
occur — the #117 mention net + privacy nets are mechanically enforced on
the comment channel, not just prose discipline. New drift-guard
gh-egress-rollout (24 assertions): wrapper presence + verbatim refutes of
every pre-rollout raw call line. Whitelist documented (gh issue close /
gh api PATCH comment surgery are out of wrapper scope).

Refs #226
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