Skip to content

receiver: ルーティングを宣言的 route table + auth policy に置換する (#43 PR-1) - #102

Merged
kosako merged 1 commit into
mainfrom
refactor/43-route-table
Jul 5, 2026
Merged

receiver: ルーティングを宣言的 route table + auth policy に置換する (#43 PR-1)#102
kosako merged 1 commit into
mainfrom
refactor/43-route-table

Conversation

@kosako

@kosako kosako commented Jul 5, 2026

Copy link
Copy Markdown
Owner

概要

#43 完了スライスの PR-1(2 PR 構成の 1 本目)。手続き的 if 連鎖だったルーティングを宣言的なルート表 + 一元 dispatch に置き換える挙動同一の純リファクタです。設計の経緯は #43 の設計コメント(2026-07-05)を参照。

変更内容

テスト

  • 94 → 96 件、全パス(npm run check)
  • 追加: 405 + Allow(固定 path とパラメータ付き path)/ 未知 path の 404 回帰
  • 実機スモーク済み: inbox 200 / OPTIONS 204 / GET /feedback 405+Allow / token 無し import 401 / token 有り 400(認証通過)/ 未知 path 404

レビュー観点

挙動同一性(特に認証の適用対象がリファクタ前後で一致しているか)と、405 導入による副作用の見落としがないか。

Closes しない(#43 は PR-2 完了まで open 維持)

🤖 Generated with Claude Code

https://claude.ai/code/session_01TZtNiToBjzkwFc2A6Mw7n4

手続き的 if 連鎖で認証適用を 4 分岐に手で反復していたルーティングを、
{ method, pattern, auth, handler } のルート表 + 一元 dispatch に置き換える。
#43/#44 で認証種別が operation / inbox / ingest に増える前の準備で、
挙動同一の純リファクタ。

- 各ルートが auth 種別を宣言し、dispatch が一箇所で適用(宣言漏れは起動時 throw)
- 既知 path への未対応 method は 404 → 405 + Allow ヘッダー(監査指摘。唯一の意図した挙動変更)
- OPTIONS 204・rate limit の適用順・404 文言・認証対象 endpoint は不変
- テスト 94 → 96 件(405 の固定/パラメータ付き path、404 回帰)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TZtNiToBjzkwFc2A6Mw7n4
@kosako

kosako commented Jul 5, 2026

Copy link
Copy Markdown
Owner Author

🔍 レビュー依頼(→ Codex)

  • 観点: 挙動同一を意図した純リファクタ(if 連鎖 → route table + 一元 dispatch)なので behavior drift を重点的に。特に (1) 認証の適用対象がリファクタ前後で一致しているか (2) ルート pattern の一致範囲のずれ(正規表現化した prefix / 固定 path) (3) 405 導入(唯一の意図した挙動変更)の副作用 (4) OPTIONS・rate limit の適用順の維持
  • ランク: 🔴 must(merge 前必須)/ 🟡 should(推奨・対応は依頼元判断)/ ⚪ nit(任意)
  • 結果はこの PR にコメントで返します

@kosako

kosako commented Jul 5, 2026

Copy link
Copy Markdown
Owner Author

📋 レビュー結果(by Codex GPT-5.5)

判定: ✅ merge 可(must 0 件) — 🟡 should / ⚪ nit も 0 件

🔴 must

なし

🟡 should

なし

⚪ nit

なし

レビュアーのコメント(要旨): route table 化による auth 適用対象・path match 範囲・OPTIONS → rate limit → dispatch の順序・respondJson 経由の 405 応答に挙動退行なし。stateful な /g 正規表現もなし。旧 pathname === ... / startsWith(...) / パラメータ regex と一致範囲は、意図した 405 変更を除いて一致。

補足(依頼元): Codex 側 sandbox(read-only)では mkdtemp EPERM で receiver 系テストが実行できなかったため、テスト実行はローカルで代替 — npm run check 全 96 件パス済み。実機スモーク(405+Allow / 401 / 404 / OPTIONS 204 / 認証通過)も確認済み。

@kosako
kosako marked this pull request as ready for review July 5, 2026 10:19
@kosako
kosako merged commit dd1c201 into main Jul 5, 2026
1 check passed
@kosako
kosako deleted the refactor/43-route-table branch July 5, 2026 10:19
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