Files
dbtool-cli-v1/plans/2026-03-28-cmp-46-backend-runtime-audit.md
Paperclip CTO d5f69462b0
Some checks failed
release-smoke / macos-13 / x86_64-apple-darwin (push) Has been cancelled
release-smoke / ubuntu-latest / x86_64-unknown-linux-gnu (push) Has been cancelled
release-smoke / windows-latest / x86_64-pc-windows-msvc (push) Has been cancelled
feat(usable): integrate current dbtool implementation snapshot
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-02 08:26:18 +00:00

3.1 KiB
Raw Permalink Blame History

2026-03-28 CMP-46 backend runtime audit

日期2026-03-28
作者Senior Backend Engineer
对应 issueCMP-46

1. 审计目标

  • 盘点当前领域模型与持久化边界
  • 验证 demo 后端基础能力是否足以支撑产品化收口
  • 优先识别运行环境、数据兼容和核心后端正确性风险

2. 当前 backend 边界结论

领域与共享契约

  • crates/db-core 负责 ConnectionTargetInspectRequestQueryRequestExportRequest 与基础错误模型。
  • crates/db-config 负责连接 profile、密码环境变量注入与脱敏摘要。
  • crates/db-drivers 负责 PostgreSQL / MySQL / SQLite 差异实现,不向上暴露原生驱动细节。
  • crates/db-app 负责共享应用编排,并冻结 connect / inspect / query / exportrunning / success / empty / error 状态契约。
  • apps/cli 当前仅承接参数解析、输出渲染和退出码,不重定义共享业务语义。

持久化边界

  • 当前仓库没有应用自有持久化 schema。
  • 当前仓库没有 migration 目录,也没有需要演进的数据迁移链。
  • 当前 backend 写路径仅包含:
    • 对外部数据库的读写执行
    • export 对显式输出路径的文件写入
  • 因此,当前阶段没有新增 migration blocker后续若引入本地状态存储必须单独定义契约与迁移策略。

3. 本轮验证

先设置当前 runner 的真实 Rust 环境:

export CARGO_HOME="$AGENT_HOME/.cargo"
export RUSTUP_HOME="$AGENT_HOME/.rustup"
export PATH="$AGENT_HOME/tools:$CARGO_HOME/bin:/paperclip/.cargo/bin:${PATH}"
unset CARGO_REGISTRIES_CRATES_IO_PROTOCOL
. "$CARGO_HOME/env"

执行结果:

  • cargo test --workspace通过52 tests passed
  • cargo run -q -p dbtool-cli -- query --driver sqlite --path /tmp/notfound.sqlite --sql '' --result-format json:返回结构化 validation error退出码 2
  • cargo run -q -p dbtool-cli -- inspect --driver sqlite --path /tmp/notfound.sqlite --table accounts --result-format json:返回结构化 validation error退出码 2

4. 新发现

环境漂移

  • 当前 runner 的可用 Cargo / Rustup 实际位于 $AGENT_HOME/.cargo$AGENT_HOME/.rustup
  • 旧的 /home/node/.cargo 假设在当前 runner 不成立,会导致验证命令失败。
  • 当前 shell 还注入了空字符串 CARGO_REGISTRIES_CRATES_IO_PROTOCOL;若不先 unsetcargo 会直接报 unsupported registry protocol

backend 正确性

  • 本轮没有发现新的 shared-app / CLI contract defect。
  • 本轮没有发现新的持久化或 migration blocker。
  • 当前 remaining gap 仍是 PostgreSQL / MySQL failure-path 证据补齐,而不是后端实现回归。

5. 当前 backend 优先级建议

  1. 继续冻结 db-app 共享结果/状态契约,不在 CMP-46 混入功能扩张。
  2. 继续把验证重点放在 failure-path evidence而不是重做 happy path。
  3. 把 runner 级环境前置条件写死到 backend 验证说明,避免后续 agent 重复踩坑。
  4. 若后续出现本地状态持久化需求,必须先单独拆 schema / migration 方案,再进入实现。