Completion 完成关卡
Cognition Completion 契约规定了认知输出在变成有用产物之前要过哪几道关卡。每一道关卡都是强类型的检查:通过了,输出才会被准入为正式产物。
完成关卡是什么
完成关卡的清单准入在 tables/completion-gates.yaml,每一道关卡声明这几件事:
| 字段 | 用途 |
|---|---|
| Gate id | 稳定标识 |
| Trigger | 关卡何时被触发 |
| Validator | 关卡校验什么 |
| Outcome | 通过 / 失败 / 隔离 |
| Reason codes | 强类型的结果原因 |
未通过关卡的输出不会悄无声息地变成产物。它要么按强类型关卡被准入,要么进隔离区,要么直接拒收。
为什么要在完成阶段设关卡
没有关卡时,模型输出会直接流入强类型产物。设了关卡,输出必须先经过准入的校验:
- schema 是否合法
- 来源是否可信
- 敏感度归在哪一档
- 跨引用是否对得上
- 是否符合清理资格
关卡的作用就是阻止"模型说了一句话"自动变成"一份强类型规范产物"。准入必须显式发生。
场景:一次记忆保存通过完成关卡
某个 Agent 保存一条强类型记忆。
- 保存提交。Memory 服务接收。
- 关卡评估。schema 通过;跨引用通过(没有跨作用域泄漏);准入。
- 全部通过。记忆以强类型形态被准入。
- 服务侧元数据生成。支撑信息和血缘信息计算完成。
- 审计链路。保存事件入账。
这条保存是在显式关卡下被准入的,没有"默默接受"的环节。
场景:知识页保存时引用目标缺失
某个 Agent 保存一份知识页,里面引用了一份不存在的知识页。
- 保存提交。Knowledge 服务接收。
- 关卡触发。跨引用校验启动。
- 目标缺失。被引用的页在当前作用域内不存在。
- 拒收。fail-closed,返回强类型错误。
- Agent 看到原因:"引用目标 X 不存在。"
这里没有"默默丢弃引用"这种行为。平台拒绝准入一份指向虚空的知识页。
场景:技能包步骤校验
一个技能包有若干顺序步骤,其中一步内容为空。
- 技能包保存。Skill 服务接收。
- 关卡校验。检查步骤顺序,对每一步做非空校验。
- 发现空步骤。校验失败。
- 拒收。技能包不被准入;强类型错误指出哪一步无效。
技能包不会以"半成品"的状态被准入。
独立的完成标准
Cognition 持有一条严格标准:认知必须按生产级而不是 MVP / 骨架来准入。
| 禁止行为 | 原因 |
|---|---|
| 伪实现 | 不允许假装实现 |
| 假成功 | 没干活就不能返回成功 |
| 占位清理 | 没真清掉就不能标记为已清理 |
这是 Cognition 与"差不多能跑的服务"的分界线。要么某个产物族被以生产级准入,要么这一族就维持 deferred 状态。
Completion 不做的事
| 关注点 | 不做的原因 |
|---|---|
| 改写真相(kernel) | kernel 是核心;advisory 不能压制核心 |
| 绕过校验 | 设计上 fail-closed |
| 默默部分保存 | 不存在"半准入"的产物 |
边界归属
| 关注点 | 归属 |
|---|---|
| 关卡定义 | tables/completion-gates.yaml |
| 校验执行 | 服务侧 |
| 结果 | 准入 / 隔离 / 拒收(强类型) |
| 生产级标准 | Cognition 的准入策略 |