Repository navigation
区分の判定: 実測でコミュニティ管理者のみ到達する行も管理者向けとして扱う - #1968
Conversation
管理者向けの行を admin-role-table/admin-access/要(管理) の auth 文字列だけで 認識していたため、session+role:…Administrator や action-need:…-access で 制限される行を見落とし、コミュニティ管理者の越境の確認(P3b)に回せていなかった。 - comadmin_only_reach(c,H) を追加: 実測で一般ユーザと Contributor がともに 遮断され、コミュニティ管理者が到達する行を判定する(auth 文字列に依らない。 一般/Contributor も持ちうる権限アクションを管理者向けと誤判定しない)。 - community_related と管理者分岐のゲートに加え、該当行を P3b に振り分ける。 一般/Contributor が到達する行では発火しないため誤爆しない。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
Reviewer's GuideAPI 台帳の区分判定を実測ベースに拡張し、一般ユーザと Contributor が遮断されコミュニティ管理者のみ到達する行を、auth 文字列に依存せずコミュニティ管理者の管轄確認である P3b に振り分けるようにした。一般・Contributor も到達する権限アクションは対象外のまま維持される。 Sequence diagram for measurement-based P3b routingsequenceDiagram
participant C as API inventory row
participant R as comadmin_only_reach
participant D as dynamic_verified
participant A as comadmin_reach
participant P as classify_full
P->>R: comadmin_only_reach(c, H)
R->>D: field(c, H, dynamic_verified)
D-->>R: general and contributor results
alt both roles are blocked
R->>A: comadmin_reach(c, H)
A-->>R: reach
R-->>P: true
P->>C: community_related(c, H)
C-->>P: true
P-->>C: P3b
else either role reaches or comadmin is blocked
R-->>P: false
P-->>C: preserve existing classification
end
Flow diagram for measurement-based administrator classificationflowchart TD
A[API inventory row] --> B[comadmin_only_reach]
B --> C{general and contributor both blocked?}
C -- No --> D[Existing classification]
C -- Yes --> E{comadmin_reach equals reach?}
E -- No --> D
E -- Yes --> F[community_related]
F --> G[P3b: community administrator scope review]
D --> H[Preserve existing priority]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
🔍 Claude によるレビュー指摘 4 件 — 🔴 高 0 / 🟠 中 2 / 🟡 低 2 / 🔎 未確認 4 件 🟠 [中] comadmin_only_reach が一般/Contributor の最初のセルしか見ず、複数対象の行で到達を見落とす
ROLE_CELL[r].search は最初の一致だけを返す。dynamic_verified は ' || ' 区切りで対象ごとに general=/contributor= のセルを持てるので、1つ目の対象で遮断、2つ目の対象で到達という行でも「遮断」と判定される。その結果、一般/Contributor が実際に届く行が comadmin_only_reach=True になり、community_related と classify_full で管理者向けの越境確認(P3b)に振り分けられる。縦の権限昇格として扱うべき行が逸れるおそれがある。隣の comadmin_reach は findall で全セルを見ており、判定の厳しさがそろっていない。 提案 findall で全セルを集め、1つ以上あり、かつすべて '遮断' のときだけ True にする。例: vs = ROLE_CELL[r].findall(dyn); if not vs or any(v != '遮断' for v in vs): return False 根拠確認: prioritize.py:167-173 の field() と 255-265 の dyn_segments を読み、dynamic_verified が ' || ' 区切りの複数セグメントを持つ前提を確認した。297-313 の comadmin_reach が findall で全セルを見ていること、316-333 と 342-378 の呼び出し箇所も確認した。実データ(inventory のTSV)で複数対象の行が実在するかは未確認。 🟠 [中] comadmin_only_reach は general/contributor のセルを最初の1件しか見ず、comadmin 側は全件を見ている
ROLE_CELL[r].search は dynamic_verified の最初の一致だけを採る。comadmin_reach は findall で全対象を見て、どれかが到達なら reach とする。複数の対象やメソッドを測った行で、最初のセルだけ遮断で別の対象では一般/Contributor が到達している場合、「ともに遮断」と誤判定する。その結果、縦の権限昇格に当たる行が P3b(コミュニティ管理者・後回し)に振り分け直されうる。 提案 ROLE_CELL[r].findall(dyn) で全セルを取り、1件以上あり、かつすべてが '遮断' のときだけ遮断とみなす。 根拠確認: prioritize.py:255-313 を読んだ。dyn_segments は ' || ' 区切りの複数セグメントを前提にしており、COMADMIN_CELL_RE は findall で全件を使っている。ただし実データ(実測の列)が実際に複数セルを持つ行を、実物では確認していない。 🟡 [低] comadmin_only_reach は一般/Contributor のセルを最初の1件しか見ない
dynamic_verified は ' || ' 区切りで複数の対象・メソッドの実測を持てます。ROLE_CELL.search() は最初に一致したセルだけを見ます。最初のセルが「遮断」で、後続の対象で general/contributor が「到達」している行でも、一般・Contributor ともに遮断とみなされます。その行は P3b(コミュニティ管理者の越境確認、後回し)に振り分け直され、縦の権限昇格の疑いが埋もれる可能性があります。同じ関数が呼ぶ comadmin_reach は findall と any で全セルを見ており、扱いが非対称です。 提案 findall で全セルを集め、すべてが「遮断」のときだけ True にする。例: all(v == '遮断' for v in ROLE_CELL[r].findall(dyn)) かつ findall が空でないこと。 根拠確認: prioritize.py:255-265 の dyn_segments(複数セグメントを前提とする構造)、:271-313 の COMADMIN_CELL_RE と comadmin_reach(findall + any)、:249-252 の LOW_REACH_RE(到達のみを別に検出)、:363-366 の classify_full の分岐を読んで確認しました。実データでセルが複数並ぶ行は確認していないため、実害の頻度は不明です。 🟡 [低] 管理者行でない P2A/P2B/P2C が、実測だけで P3b に格下げされうる
classify_full の振り分け直しの条件に comadmin_only_reach を加えたため、auth 文字列が管理者向けでない行も対象になった。一般/Contributor が遮断・comadmin が到達する行は、元が確度の高い P2 でも P3b になる。影響の種類は理由文に残るが、優先度は下がる。意図した設計かもしれないが、認可まわりでは見逃しのリスクがある。 提案 意図通りか確認する。確定(★実証・指摘あり)の P2 は格下げの対象外にすることを検討する。 根拠確認: prioritize.py:342-378 の classify_full と、316-333 の community_related を読んだ。'一般ユーザ/Contributor が' を含む why と '実効せず' の指摘は除外されている。それ以外の P2 は、管理者行でなくても P3b になる。 🔎 未確認 — 裏が取れなかったもの 4 件
モデル sonnet / 3 回実行して和集合 / コスト $0.2748。同じ差分でも結果が揺れるため複数回まわし、一部のパスでしか挙がらなかったものには回数を添えています 差分のみを対象にした自動レビューです。誤りが含まれることがあります。 |
API インベントリ差分(件数のみ)
ベースラインとの差分API インベントリ差分レポート
判定: ✅ PASS (FAIL 0 / WARN 1)サマリ
[WARN] W6 依存パッケージの版が変化した — 4件
台帳との突き合わせスナップショット ↔ インベントリ 突き合わせ
判定: ✅ 一致 (0件)
|
概要
API 台帳の区分判定(
tools/api-inventory/scripts/prioritize.py)で、管理者向けの行の認識を実測ベースに広げる。従来は admin 行を
admin-role-table/admin-access/要(管理)の auth 文字列だけで認識しており、session+role:…Administratorやaction-need:…-accessで制限される行を見落として、コミュニティ管理者の管轄確認(P3b)に回せていなかった。変更
comadmin_only_reach(c, H)を追加。実測で一般ユーザと Contributor がともに遮断され、コミュニティ管理者が到達する行を判定する(auth 文字列に依らない)。community_relatedと管理者分岐のゲートに加え、該当行を P3b(管轄確認)へ振り分ける。効果
管理者向けで実測上コミュニティ管理者だけが到達する行が、確実に P3b(管轄の確認・後回し)に分類され、即対応バケツ(P2x)から分離される。
動作確認
フルチェーンを回し、対象行のみ P2x→P3b に移り、一般/Contributor が到達する行(例: item-access/author-access/index:update 系)は不変、reconcile ゲート ✅ を確認。
🤖 Generated with Claude Code
Summary by Sourcery
実測でコミュニティ管理者のみ到達する行を管理者向けとして扱い、適切にP3bへ振り分ける。
New Features:
Bug Fixes:
Enhancements: