前几篇讲的是「拦住」——边界放在哪、风险怎么分级、撤销怎么做。这一篇往回退一步只讲其中一个零件**用户点了「同意」之后系统手里到底拿到了什么。**这是整条链上最容易被做薄的一环。## 一、最容易做成的形状一个布尔值一个 AI 要写数据流程大致是它提出请求 → 用户看到一条确认 → 点同意 → 执行。如果「同意」在系统里只是一个布尔值confirmed true它有两个毛病。小的那个是**可以复用**同一次同意能不能拿去批第二次。这不是新问题加个「一次性」就解决了。大的那个更隐蔽**布尔值是一句话不是一份凭证。** 「同意」这两个字答不了下面这些问题- 同意的是**哪一次**请求- 同意的是**写什么**- 同意的是**写到哪儿**- 同意的是**改到什么程度**- 这份同意**什么时候失效**答不上来就意味着这些问题的答案是在**执行的那一刻**才被决定的——而那一刻离用户点头已经隔了一段距离。中间任何一处变了用户都不知道。我们的做法是把「同意」落成**一行记录**绑定五样东西。下面逐条说每条都说清**不绑会怎样**。## 二、绑住「是什么」精确参数一次确认绑的是**这一次调用的这一组参数**逐字。不是「参数得在某个范围内」是「就是这一组」。原来是什么样执行时就得是什么样差一个字符就拒。这比「参数值域」更严。代价也得说清**整组接受或整组拒绝。**它表达不了「这次批准里允许改 status不允许改 owner」——因为整组参数是绑死的一个包。要表达那种意思需要另一样东西也就是第四节那条。## 三、绑住「写到哪儿」目的地**这一条是我们被读者问出来才补的。**原来的做法是记下工具、记下参数。看起来够了——「写什么」已经锁死了还能出什么事出在**「写到哪」**。工具名和参数都是**我们这一侧**的东西。而这次写真正落到哪个外部系统是**另一回事**代理工具的配置可以被改指外部服务可以被重新注册。那份被批准的记录一直躺在库里参数一个没变可它要写去的目标已经换了一个。**记录里没有任何东西与它矛盾。**补法是把目的地也绑进去**签发时按当时的情况记下执行时重新解析一遍两边对不上就拒。** 不静默跟过去。这一条值得单独记住**「批准」和「批准到哪儿」是两件事。**## 四、绑住「可以改到什么程度」可写字段域有了精确参数为什么还要这个因为精确参数只能**整组**接受或拒绝而确认时真正想表达的意思常常是**按字段**的- 这次允许它改 status- 但不允许它改 owner。这两件事只有把**可写字段**单独声明出来才表达得出来。它和精确参数**并存不取代**一个答「是不是这一组值」一个答「这类字段可不可以写」。约定和别处一致**没声明就是不约束**越出声明范围一律拒**不做截断**——截断会让人以为「只改了一部分」而实际发生的是「本该拒掉的被悄悄缩小之后执行了」。## 五、绑住「什么时候有效」窗口一次同意要有时效这个大家都知道。**容易漏的是这个时效记在哪。**我们踩过的坑窗口**只在 token 上**。token 一被消费就没了。于是三个月后回头看这一行能答出「同意过」**答不出「当时的有效期是多少」**。而出问题的时刻恰是这种时候有人问「这笔为什么那时候能执行」你去查记录发现当时的窗口取决于**签发那一刻的配置**——而配置早改了。改法很直白**签发时把窗口写进行里**事后读**行上的那个值****不按当前配置重算**。## 六、绑住「谁批的、批的是哪一条」最后两样**操作者**与**决策时刻**。以及**驳回和批准走同一条绑定**。最后半句是有意的。如果「驳回」是另一条路径、另一个开关两条路径就会各自漂移——今天补在批准上的绑定明天忘了补在驳回上。让它们共用同一条记录、同一个入口就不会有这个问题。## 七、一个你可以自己做的检验不必先问「我的确认够不够严」先问一个更具体的问题**你的确认里有哪些字段是「签发时算一份、执行时又算一份」的**凡是这样的就是可能漂移的地方。三问可以直接拿去测1. 把同一份确认**指向另一个目标系统**会成功吗2. 把参数**改一个值**会成功吗3. 三个月后能答出**当时的有效期 / 策略版本**是什么吗任何一问答「会」或「答不出」那一处就是绑漏了。## 结语回到开头那个形状**「同意」如果只是一个布尔值它是一句话不是一个凭证。** 而治理链上所有的信任最后都压在这个零件上——审计记的是「谁批了什么」撤销撤的是「被批过的那次写」。这个零件做薄了后面每一环都在替它兜底。我们绑的是这五样**精确参数、目的地、可写字段域、有效窗口、操作者与决策时刻**。有两处我们还没做到照实说。**字段域只能表达「这类字段可不可以写」表达不了跨字段的约束**比如「A 改了才允许改 B」。另外**窗口这一列是后加的**在那之前的旧记录不返回这个字段——它们的有效期不可考我们不给它编一个默认值。最后一个问题我们**决定不做**写在这里是因为它是这个题目最自然的下一步**那为什么不干脆每次批准都签发一张凭据**我们算过确认本身一次性、凭据本来就短时且限定目标系统、再加上目的地绑定——三者叠起来已经覆盖了那个担心。再叠一层换来的是**重复的复杂度**不是新的保证。所以它是一条**取舍**不是我们还没做的缺口。这是任何认真想这个问题的人都会问到的一句所以先答在这里。