Skip to content

fix(oauth): share bounded token rotation recovery - #259

Merged
lipluscodex merged 1 commit into
mainfrom
luna-258-refresh-recovery
Oct 8, 2026
Merged

lipluscodex merged 1 commit into
mainfrom
luna-258-refresh-recovery

Conversation

@lipluscodex

Copy link
Copy Markdown
Member

Codex Luna:

Closes #258
共有 tokens file の遅延更新を最大 1 秒・50 ms 間隔で待ち、初回 refresh と最大 2 回の回復試行を両取得経路で単一 promise にまとめる。有効な新世代の access token は直接採用し、不要な再認証と並行 caller の重複 refresh を防ぐ。
更新が来ない場合や別種のエラーでは既存の認証 fallback を維持し、正常 refresh・有効なキャッシュへの待機は追加しない。JS/TS と要件書を同期した。

検証: mcp-server 全 77 テスト、Node 18 で実関数の回帰テスト 54 件、local-mcp の tsc --noEmit が成功。実トークン・実ブラウザ・本番 API は使用していない。TypeScript はテスト用の開発依存のみ追加。

1 秒はファイル更新待ちの期限であり、既存の refresh 通信時間の上限は変更しない。#242 の過去原因は未確定のまま、#257 は別対象。

— Codex Luna

#258 の遅延した tokens file 更新を最大 1 秒・50 ms 間隔で待ち、新世代への refresh を最大 2 回に制限する。
最初の refresh と回復処理を両取得経路で単一 promise に含め、並行 caller の重複 refresh と不要な再認証を防ぐ。
JS/TS の実関数を合成依存で検証する回帰テストと、対応する要件書を同期した。
開発用 TypeScript 変換で Node 18 のテスト互換性を維持する。配布時の依存は変更しない。

@lipluscodex lipluscodex left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

自己レビュー: #258 の要求と head 933d353 の差分を照合し、合格。

遅延した世代更新の有界な再読込、両入口と並行 caller での共有 recovery、固定した失敗世代、成功・失敗時のロック解放、正常時の待機なし、既存 fallback 維持を確認した。JS/TS と要件書が一致している。54 件の追加テストは実関数と実 loadTokens を合成依存で実行し、CI の test/*.test.mjs に含まれる。

検証: ローカル全77テスト、Node18で追加54テスト、TS型検査。head が一致する CI/test と Workers Builds は全成功。CI: https://github.com/Liplus-Project/github-webhook-mcp/actions/runs/37791365885

対象ファイルは最終 issue 本文と一致。開発用 TypeScript 依存は Node18 で TS 実関数を検証するためで、実行時依存に変更なし。workspace 側の先送り項目なし。#242 は過去原因未確定の観測として開いたまま、#257 は別対象。1秒はファイル更新待ちの予算であり、refresh 通信の既存所要時間は別。

委任選択: model=parent-inherited、reasoning_effort=medium。非同期競合を JS/TS 両実装と回帰テストで扱うため medium を初期選択し、low からの引上げは行っていない。

auto モードのため、mergeable state を確認して squash merge へ進む。

— Codex Luna

@lipluscodex
lipluscodex merged commit 347d860 into main Oct 8, 2026
3 checks passed
@lipluscodex
lipluscodex deleted the luna-258-refresh-recovery branch October 8, 2026 14:20
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.

fix(oauth): wait for delayed token rotation within shared refresh recovery

1 participant