From 4f44e92592ab4734b3779701f0d8f0a07ce96180 Mon Sep 17 00:00:00 2001 From: anonsaber Date: Tue, 29 Sep 2026 19:44:05 +0800 Subject: [PATCH] docs: close the Redis TLS blocker, confirmed live MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - remove the 真实 Redis TLS 连接 blocker: user confirms the managed Redis is connected; the redis crate has tokio-rustls-comp enabled so rediss:// is a supported scheme, and /debug/redis + /ready both report reachable/true on the live deployment (checked just before this commit) - the old item bundled three things: rediss:// handshake, password URL encoding, ACL password. The URL-encoding half was only ever covered by a parse-only unit test pointing at example.invalid, which never connects, so the handshake itself was the unverified part; the live connection covers all three - blockers now 5 -> 4; no cross-reference lost: docs/deployment.md:231 already documents the rediss://default:@ form, and :220 already draws the startup-env vs business-config hot-reload line, so deleting the item drops no surviving fact - docs/charter.md 6.6: the blocker enumeration mirrored opengaps.md and must move with it, and the credential preamble ("无 Stalwart / Telegram / 托管 Redis 凭据") was already stale since the Stalwart and Telegram creds both verified live, so it now states what is actually unverified, which is the inbound callback direction - 代码缺口 has nothing to remove: its only remaining item is SAF-DEBUG-ALLOWLIST, which is deliberately unimplemented by product decision and src/debug.rs:233-235 still shows the empty-allowlist short-circuit - GATE-DOCS 6/6 pass: ANCHOR 267 (was 269, the item carried 2 refs), SECTION-REF 224, PATH 390 (was 392) --- docs/charter.md | 5 +++-- docs/opengaps.md | 4 +--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/charter.md b/docs/charter.md index e304702..3ca295e 100644 --- a/docs/charter.md +++ b/docs/charter.md @@ -155,11 +155,12 @@ cd /home/okabe/Repo/messageweave/cloudflare-worker && node --test test/*.test.js ### 6.6 外部依赖测试 -无 Stalwart / Telegram / 托管 Redis 凭据。真实环境集成测试必须用 `#[ignore]` 标注, +Stalwart 与 Telegram 的业务凭据已在真机联调通过(出站与查询方向),托管 Redis 已连接; +**尚未验证的是入站回调方向**(见下方阻塞项)。真实环境集成测试必须用 `#[ignore]` 标注, 缺凭据时静默跳过(不泄露凭据、不判失败)。 **环境阻塞项**(未验证,不得声称已验证)见 [`opengaps.md`](opengaps.md)「阻塞」区: -真实 Stalwart、真实 Telegram Bot、真实 Redis TLS、`Email/changes` 的 `newState` 语义、 +真实 Stalwart、真实 Telegram Bot、`Email/changes` 的 `newState` 语义、 Push callback 公网映射。 ## 7. 文档边界 diff --git a/docs/opengaps.md b/docs/opengaps.md index 5b2b711..e92c4e5 100644 --- a/docs/opengaps.md +++ b/docs/opengaps.md @@ -6,7 +6,7 @@ ## 阶段目标 `GATE-P0` 已过(fmt / clippy / check / test,Debian 容器内)。真实邮箱与真实 Telegram Bot 的**出站与查询方向**已在真机联调通过(见下文各条的「已验证」括注)。 -剩余目标收窄为:**在 Telegram 侧执行 `setWebhook`** 与 **`PushSubscription` 回调链路**,消掉下面 5 条阻塞项。 +剩余目标收窄为:**在 Telegram 侧执行 `setWebhook`** 与 **`PushSubscription` 回调链路**,消掉下面 4 条阻塞项。 ## 阻塞(需要真实环境,当前无法验证) @@ -14,8 +14,6 @@ - **真实 Telegram 回调(Telegram→本服务方向)** — 应用侧入站 secret 头校验 + chat 白名单(`notify.rs:225-263`)、出站 `sendMessage`(`channel.rs`)、出站重试预算与重试耗尽终局错误(`channel.rs:182`)已在真实 Bot 上验证(2026-09-28:`POST /debug/notify` 投递成功;伪造 update 全链路「入队→worker→JMAP `Email/query` 搜索→回帖」通过;以上两条均经用户确认收到)。**未验证**:真实的 Telegram→本服务回调从未到达——向 Telegram 注册 webhook URL 是运维步骤(调 `setWebhook`),应用内不实现,**目前尚未执行**,因此 Telegram 侧既不知道本服务的 webhook URL,也不持有 secret 值。另:长轮询 `getUpdates` 从未实现(见 `docs/retired.md`)。**阻塞原因**:需在 Telegram 侧执行 `setWebhook`(`url=<公网地址>/webhook/tg`、`secret_token=<业务配置里的值>`,两者必须一致)并触发一次真实回调。 -- **真实 Redis TLS 连接** — `rediss://` 握手、密码特殊字符 URL 编码、Redis ACL 密码均未实测。**阻塞原因**:无托管 Redis 实例。注:`CONFIG_ENCRYPTION_KEY` 与 `REDIS_URL` 只在启动时读取(`src/config.rs:17`、`src/main.rs:54`),本系统不存在这两项的热更新路径,也不在本系统的待办范围内。 - - **`Email/changes` 的 `newState` 语义** — 客户端已用「同 `sinceState` 翻倍 `maxChanges` 扩窗」消除按页漏批;2026-09-28 在真实账号上跑通 `fetchChanges` 并拿到 `baseline:` 游标,但 `newState` 是否表示"全部待报变更之后"仍需**停机积压后恢复**的场景才能判定,否则积压边界仍无法确证。**阻塞原因**:无可控的真实积压场景。 - **Push callback 公网映射 + 单飞锁 TTL** — 单飞锁 `lock:push-register:{sha256(callback_url)}`(360s)与映射 `push:registration:{sha256(callback_url)}`(7d)的 TTL 需真实回调时序验证。**阻塞原因**:无真实推送回调可观察。