# CMP-61 restricted schema execution plan 日期:2026-03-31 负责人:CTO ## 结论 `restricted schema` 当前不是单纯证据缺失,而是 shared inspect contract 与 TUI surface 之间的真实产品能力缺口。 ## Root cause - `crates/db-app` / `TUI_BACKEND_CONTRACT.md` 当前只把 inspect 定义为 `success | empty | error` - `SchemaItem` 只有 `name`,没有 schema-level restricted / permission metadata - PostgreSQL root inspect 基于 `information_schema.schemata`,会把受限 schema 直接省略 - 显式 schema inspect 基于 `information_schema.tables`,受限 schema 会退化成空表列表 - `apps/tui/src/main.rs` 只会把 per-schema inspect 的 error 映射成 `restricted`;空表列表会被直接视为 `empty` ## 执行顺序 1. Backend 先补 shared inspect contract,使 schema-level restricted 成为结构化语义 2. 并行补齐 PostgreSQL 非超级用户 fixture / profile,确保 QA 能在当前 runner 形成真实 restricted schema 场景 3. Frontend/TUI 再消费新语义,确保 `Schema Browser` / `Inspector` / `Status & Activity` 持续显示 restricted 4. QA 最后在 PostgreSQL demo live 环境复验并回填 usable/TUI gate ## Owner split - [CMP-62](/CMP/issues/CMP-62):Senior Backend Engineer - [CMP-63](/CMP/issues/CMP-63):Senior Frontend Engineer - [CMP-64](/CMP/issues/CMP-64):QA Engineer - [CMP-65](/CMP/issues/CMP-65):Senior Backend Engineer(fixture / profile) ## 新增 blocker split - 产品语义 blocker:shared inspect 目前没有 schema-level restricted 结构化语义 - 表现层 blocker:TUI 目前无法消费不存在的 restricted 语义 - 夹具 blocker:当前 PostgreSQL demo `dbtool` 账号仍是超级用户,QA 无法在 runner 中复现真实 restricted schema ## 验收口径 - shared inspect 不再把 `empty schema` 与 `restricted schema` 复用成同一语义 - TUI 上 restricted schema 可见、可聚焦、可解释 - QA 证据文档对 `empty` 与 `restricted` 给出分离 verdict ## 当前状态 - [CMP-62](/CMP/issues/CMP-62) 已完成:shared inspect backend contract 已落地 - [CMP-63](/CMP/issues/CMP-63) 已完成:TUI restricted 消费与文案已落地 - [CMP-65](/CMP/issues/CMP-65) 已完成:PostgreSQL 非超级用户 fixture / profile 已落地 - [CMP-64](/CMP/issues/CMP-64) 已进入 `in_progress`,QA 正在基于新 contract 与新 fixture 执行最终 live rerun