SUPER DOLPHINHARNESS DRIVER DOCS

GOVERNANCE IN ACTION

治理与证明

提示词引导生成,仓库通过可执行规则、回归证据和失败即阻断的门禁决定接受。

自守卫仓库

Super Dolphin 把实现权与接受权分开:AI 负责实现和重构,人类负责产品意图、高影响决策、凭据与发布,仓库负责确定性的接受规则。

提示词可以引导 Agent 选择路径,但不是最终边界。真正持久的约束存在于类型化契约、生成式地图、AST/SSA 测试、聚焦回归测试与本地 Git 门禁中。

intent
  -> generated orientation
  -> LSP-scoped inspection
  -> narrow implementation
  -> AST / SSA / dependency guards
  -> focused tests and generated-state checks
  -> reviewable evidence
  -> accepted change

治理层次

层次作用失败时发生什么
仓库指令把 Agent 引导到当前地图、契约、工具和验证方式缺少必要证据仍然是 blocker
LSP 工作区范围把定义、引用、诊断和编辑限制在可信 checkoutscope 缺失或过期时在编辑前失败
类型化契约让模块依赖窄 port,而不是具体实现编译、架构或契约测试失败
AST 与 SSA 守卫检测语法、导入、值流和调用路径违规测试指出规则与位置
生成式导航让文件与能力地图跟随源码漂移检查失败
变更感知门禁把当前 diff 映射到必需检查与证据要求保持显式,warning 不算证明
Git hooks在 commit 和 push 附近执行仓库检查修复失败项,或保留为明确 blocker

后端边界注册表同时服务于规则执行器和生成式架构地图。发现绕过方式后,应添加负向 fixture,而不是把绕过记录成例外。

什么才算证据

一个可复查的结果至少需要说明:

  1. 源提交或精确 working-tree diff。
  2. 产生结果的命令或工具动作。
  3. 对应规则、测试、诊断或生成物。
  4. 退出状态与保留的失败输出。
  5. 跳过的表面和尚未解除的 blocker。

Agent 报告 done、空日志或后来一次绿色重跑,都不能抹去此前的确定性失败。证据既要足够窄,方便复现,也要足够完整,防止错误关闭任务。

五个公开案例

1. LSP 读到了错误的 Worktree

早期 LSP sidecar 在缺少调用级 CWD 时可能退回更宽的进程或 workspace 根。在多 worktree 环境中,请求会看似成功,却从相邻 checkout 返回定义、诊断甚至编辑目标。

修复后,可信 workspace scope 成为强制条件,manager pool 按 CWD 隔离,并加入多项目诊断隔离、缺失 CWD、过期根目录和 symlink escape 的回归测试。错误 scope 必须在编辑发生前失败。

公开证据位于 cmd/mcp-lsp/multilsp/multi_cwd_e2e_test.gocmd/mcp-lsp/tools/tool_grep_test.gotool_edit_support_test.go

2. Provider 身份缺失却进入共享 Server

Codex server pool 启用时,缺失或损坏的 Provider identity 曾可能落入旧共享 app-server 路径。表面可用性被保留,但调用方要求的 home、实例与 Provider 隔离已经失效。

修复将 pool routing 改为 fail-closed,要求 start 与 resume 之间持久化 canonical identity,并拒绝冲突身份。公开测试同时证明 process spawner 不持有 pool mutex,避免一次慢启动阻塞其他实例。

3. 缺少运行时真相的持久 Agent

当全局默认开启时,缺少 thread identity 或 runtime metadata 的持久 subagent 曾可能通过兼容 fallback 看似创建成功,但系统并没有恢复它所需的持久状态。

当前实现把相应错误提升为共享契约,删除私有 fallback,并用回归测试证明:即使宽松的全局默认开启,缺少身份或运行时真相仍必须失败。

4. 异步错误被 UI 静默吞掉

空的 .catch(() => {})catch {} 或只丢弃错误的 handler 会让失败的用户动作看起来成功。修复加入 TypeScript AST 守卫、覆盖多种静默形式的负向 fixture,并要求受影响路径提供可见错误处理。

规则允许有文档说明的 best-effort fallback,但没有解释的空 handler 会失败。公开入口是 frontend-app/scripts/no-silent-async-failure.mjsnpm run guard:critical-skip

5. 架构守卫本身存在 Type Alias 盲区

早期编排边界守卫只统计对宽 OrchestrationService 的直接引用,本地 type alias 可以保持相同宽依赖,却绕过 selector 计数。

该绕过方式随后成为回归 fixture;当前规则使用 Go type information 与 SSA 检查 alias、容器、函数调用和值传播。守卫并不因为“已经存在”就自动可信,它也必须通过针对自身盲区的证据。

这些案例证明什么

它们不证明 AI 生成的变更不会出错,而是支持更窄、可复现的主张:

  1. 错误 scope 的证据必须在 Agent 编辑错误 checkout 前失败。
  2. 身份或运行时所有权缺失时,不能降级成表面成功。
  3. 用户可见失败不能消失在空错误处理器中。
  4. 已发现的守卫绕过必须成为永久负向 fixture。
  5. Agent 完成运行后,仍需相关证明为绿色,变更才可被接受。

边界与限制

  • 守卫只能证明它明确编码的不变量。
  • 本仓库的架构规则不是任意项目的通用扫描器。
  • Language server 能力取决于安装和工作区配置。
  • 测试自身也可能有盲区,发现后必须补充回归 fixture。
  • 绿色本地门禁不能替代安全评审、发布评审或外部服务验证。
  • 发布前事件属于维护者记录;公开树证明的是保留下来的守卫与测试,而不是私有历史本身。

下一步

返回系统架构复核组件所有权与依赖方向,或从快速开始运行仓库提供的构建、测试和治理命令。