WebSocket refresh token 最小骨架

这页先把 refresh_token 和 token rotation 的最小动作固定下来。

当前先把 refresh_token → token rotation → 新 token 生效 串起来,让实时链在 token 过期之后至少有一条最小续命路径。

当前最小 refresh 语义

先把 refresh_token、rotation_mode 和错误语义说清楚。

GET /api/coach/token-refresh:查看 viewer_token / refresh_token 当前状态
POST /api/coach/token-refresh:用 refresh_token 换一组新的 viewer_token / refresh_token
rotation_mode:当前固定为 static-demo-rotation
AUTH_003 / AUTH_004:当前区分 refresh_token 无效和已过期
当前先做 single-hop rotation,不做完整 session family

执行边界

这层已经开始能轮转 token,但仍不是正式会话系统。

这层是最小 refresh token / token rotation 骨架,不是正式 OAuth、JWT family 或多设备会话系统。
先把 refresh_token、轮转结果和错误语义固定下来,让实时链不再卡在“token 过期后怎么办”。
后面如果继续推进,再补 session family、revocation list 和 durable token store。