docs: record decision to keep gateguard fact-forcing gate disabled (#282)#285
Merged
Conversation
…cing gate disabled (#282) - Add a design-rationale section documenting that the pre:edit-write:gateguard-fact-force gate stays disabled by default (env.ECC_DISABLED_HOOKS, #280) and that the long-session frictions catalogued in #282 are not escalated upstream (closed as moot) - Note the upstream fixes that landed after the v2.0.0 pin (condensed denials in affaan-m/ECC#2227, GATEGUARD_EXEMPT_GLOBS in affaan-m/ECC#2432) and the knobs to re-evaluate on a future pin bump - Cross-link the decision from the PreToolUse hook table in docs/agents/claude-code.md - Mirror all changes in the Japanese docs
kryota-dev
commented
Jul 8, 2026
kryota-dev
left a comment
Owner
Author
There was a problem hiding this comment.
Multi-Review 統合レビュー結果(PR #285)
3 ツール(cc-code-review / cc-security-review / codex CLI)の並列レビューを統合。docs-only 変更(4 ファイル、+30/−2)。
総合評価
| カテゴリ | cc-code-review | cc-security-review | codex |
|---|---|---|---|
| MUST | 0 | 0 | 0 |
| SHOULD | 0 | 1 | 0 |
| NITS | 3 | 1 | 0 |
| GOOD | 4 | 3 | 3 |
セキュリティ
- 総合リスクレベル: Low
- 検出された脆弱性数: 0 件(Critical/High/Medium/Low すべて 0、Info のみ)
- 公開 repo への機密情報・固有名の混入なし。無効化を文書化した gate(
pre:edit-write:gateguard-fact-force)は LLM 品質ガードレールであり、セキュリティ上重要な destructive Bash gate(pre:bash:dispatcher)とは別物で有効のまま — 誤読を招く書き方になっていないことを両ツールが確認。
[MUST] 修正必須
なし。
[NITS] 軽微な提案(インラインコメント 3 件)
docs/explanation/design-rationale.md:57— upstream 現状の主張に調査時点(as of 2026-07)を添えると decision record として自己完結するdocs/explanation/design-rationale.md:55— deny==arm というバイパス挙動の記述は upstream gate の挙動公開にあたる(実害はほぼなし: OSS でソース公開済み・品質ガードレールでありアクセス制御ではない。認識の記録として指摘)docs/explanation/design-rationale.md:61— 直前の ECC セクションと「See claude-code.md」ポインタが連続する(実害なし、任意)
対応不要と判定した指摘(棄却ログ)
- [SHOULD] upstream issue 番号・env 変数名の実在が未確認(cc-security-review、確信度 low): 親セッションで一次ソース検証済みのため既充足。
affaan-m/ECC#2227(merged 2026-06-11、condensed denials)・#2432(merged 2026-07-04、GATEGUARD_EXEMPT_GLOBS)はgh pr viewで、GATEGUARD_FACT_FORCE_FULL_DENIALS/GATEGUARD_EXEMPT_GLOBSは upstreammainのgateguard-fact-force.js実体 grep で確認。cc-code-review も独立に同結論。指摘の但し書き(「確認済みなら対応不要」)の条件を満たす。 - codex の「(未確認)」注記(
#2227/#2432の内容、moot クローズの事実): sandbox の外部接続不可によるもので、上記のとおり親側で裏取り済み。
[GOOD] 良い実装(統合)
- upstream への技術的主張(PR 番号、env ノブ名、修正内容、v2.0.0 ピンとの時系列)がすべて一次ソースと一致(cc-code-review が gh api / gh search code で独立検証)
- ローカル配線の記述(
ECC_DISABLED_HOOKSデフォルト無効、再有効化はclaude --settingsオーバーレイ、#280/#281)がsettings.json実体と一致 - 英日ミラーが同一位置・同一構成で挿入され、双方向の相対リンクと GitHub アンカー slug が正しい(
bats tests/docs_facts.bats全 8 テスト pass) - design-rationale の既存フォーマット(Decision/Why/参照リンク)に準拠し、ECC 採用セクションの直後という配置も文脈上自然
既存レビュー指摘との重複チェック
既存レビュー・コメントは 0 件のため重複なし(全指摘が新規)。
スコープ外の follow-up 候補
docs/explanation/design-rationale.ja.md:43— EN 側の「The tradeoff is a Node version floor, guarded by the mise pin …」に対応する文が ja ミラーに欠落(本 PR 以前からの既存ドリフト。別途修正候補)
- Add "(status as of 2026-07)" to the upstream-fixes paragraph of the fact-forcing-gate decision record so its freshness is traceable on a future ECC pin bump (review follow-up on #285) - Restore the missing Node-version-floor tradeoff sentence in the ja mirror of the ECC-external section (pre-existing drift)
Owner
Author
|
統合レビューへの対応が完了しました( 70479d2 )
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Records the decision that the
pre:edit-write:gateguard-fact-forcegate stays disabled and that the long-session frictions catalogued in #282 are not escalated upstream — the "documented decision / moot" branch of that issue's acceptance criteria. No behavior changes; docs only.Closes #282 (refs #280, #281)
Background
#282 catalogued four frictions with the fact-forcing gate from a long-lived (~2 day) session and asked for either an upstream issue/PR or a documented decision that the gate stays disabled locally. Investigation against upstream
affaan-m/ECC(currentmain, 2026-07-08) found:SESSION_TIMEOUT_MS = 30 * 60 * 1000onmain)GATEGUARD_EXEMPT_GLOBS(affaan-m/ECC#2432, merged 2026-07-04, after the v2.0.0 pin)main; affaan-m/ECC#2227 only condenses repeats)The gate is disabled by default via
env.ECC_DISABLED_HOOKS(#280) and re-enabling requires aclaude --settingsoverlay rather than env (#281). Nothing currently re-enables it, so the remaining frictions have no local impact; filing an upstream issue would create a tracking obligation with no local benefit. Decision: keep the gate disabled, close #282 as moot, and re-evaluate against the post-2.0.0 upstream knobs (GATEGUARD_EXEMPT_GLOBS,GATEGUARD_FACT_FORCE_FULL_DENIALS) if a future ECC pin bump re-opens the question.Changes
docs/explanation/design-rationale.md/.ja.md— new section "The fact-forcing gate stays disabled": the decision, the four observed frictions, the upstream fixes that postdate the v2.0.0 pin, and the re-evaluation trigger.docs/agents/claude-code.md/.ja.md— the PreToolUse hook-table row forpre:edit-write:gateguard-fact-forcenow cross-links the decision.Verification
make test— 155 tests pass (docs-only change;tests/docs_facts.batsunaffected — no FACT markers added, upstream-churn values are described as "as of the v2.0.0 pin" narrative per docs conventions).Process note
pr-workflow classified this as small tier (docs-only). The small-tier subagent delegation was skipped because the change is a content-authored decision record whose substance came from the upstream verification above; an intent gate (AskUserQuestion) selected the "document as moot" path over filing an upstream issue.