# ② 动作授权凭证

> 提案草稿 · 未提交 · 未经外部评审

## 要解决的问题

智能体要做一件有后果的事(转账、发货、批准、删数据),
**凭什么放行、谁放的行、事后怎么查**,今天没有共用的记法。

常见做法是记一行日志。日志的问题在于:它是**事后叙述**,
而且写日志的和干活的是同一方 —— 相当于让当事人自己写笔录。

## 提案:清关见证(clearance record)

### 四个字段

```json
{
  "action": "<动作实例签名>",
  "norm":   "<被清的那条规范 id>",
  "via":    "mechanical | reviewer | human",
  "reason": "<引用的条款 + 动作特征>"
}
```

`action` 是**动作实例**的签名,不是动作类型 —— 不同绑定是不同风险。
「转账」不是一个动作,「向账户 X 转 1299 元」才是。

### 三条硬约束

1. **逐条清关,不是一个开关。**一个动作可能同时受多条规范约束;
   **每条都要有自己的见证**,签了一条不代表过关;
2. **fail-closed。**拿不到见证就不执行 —— 而不是先执行再补手续。
   「没查到规范」与「查了没规范适用」必须区分开,前者一律拦;
3. **见证由系统侧记账签发,被约束者写不了。**
   这一条是整个提案的地基:**能自己开条子的闸门不是闸门**。

### `via` 三档的意义

- `mechanical` —— 机械白名单(只读、沙箱内、已判定低风险),零成本档;
- `reviewer` —— 审查放行,**只有显式的"允许"才落见证**;
  「阻止」「不确定」「审查器报错」「判词格式不对」一律保持门关;
- `human` —— 人签,当事人以外的人。

## 实现指向

已跑通的形状:见证谓词由宿主写、**绝不可由闭包派生**(否则模型能推出自己的许可);
门的输出是一条派生事实,执行侧看它决定放不放。

有一个可跑的场景演示这几条同时成立:老板当场立一条规范 → 智能体的下一笔越线操作被拦
(**意图留板、盘面零变、判词点名依据**)→ 人签一条仍拦(逐条性)→ 签完才放行。

## 诚实边界

- **它不保证规范写得对。**它保证的是「没有见证就不执行」与「见证是谁给的可查」;
  法写歪了,闸门会忠实地执行歪的法;
- **恶意宿主仍是残余风险。**见证由宿主签发,那么跑宿主的人是可信计算基的一部分 ——
  这一条必须显式披露,不能靠不提;
- **本提案不规定审查器怎么判。**判的质量是各家的事;
  标准只该定「判词长什么样、什么算放行、拿不到判词怎么办」;
- 动作实例签名的**具体构造方式**故意不规定 —— 各家系统的动作模型不同,
  只要求它对同一次绑定稳定、对不同绑定可区分。
