From ac83daa8d1fd6777453c70195641ca439c7db291 Mon Sep 17 00:00:00 2001 From: "xiaohan.yuan" Date: Wed, 21 Oct 2026 13:25:19 +0800 Subject: [PATCH] docs(B03): distinguish initial observations from live approval snapshot --- docs/协作/B03-需求.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/协作/B03-需求.md b/docs/协作/B03-需求.md index 389a862..e4338b4 100644 --- a/docs/协作/B03-需求.md +++ b/docs/协作/B03-需求.md @@ -8,8 +8,8 @@ - 会话保存权限为 `full-access`,对话模式为 `craft`。 - 同一真实 SDK 会话记录的权限模式只有 **`acceptEdits`**。 -- 已出现 **4 次 Bash 授权**,均已回答。涉及查找项目目录、读取 memory/配置等命令。 -- 四条持久化请求均为 `requestKind: permission`,没有 `rule`,并不是界面明确显示的规则命中记录。 +- 初次检查已出现 **4 次 Bash 授权**;检查期间会话继续运行,最终脱敏快照保留 **7 条审批:6 条 Bash、1 条 PowerShell**,均已回答。初次分析涉及查找项目目录、读取 memory/配置等命令;不是冻结会话后统计全部生命周期。 +- 快照中的七条持久化请求均为 `requestKind: permission`,没有 `rule`,并不是界面明确显示的规则命中记录。 - 普通的部分命令已执行成功;不能把本例描述成“完全访问字段完全没传”或“所有命令都无法执行”。 - 原始 callback 的 classifier、decisionReasonType/Code 等字段未持久化,现有记录不足以唯一证明每次具体命中了哪项分支。描述性的 reason 不能代替权限判定来源。 @@ -27,7 +27,7 @@ 4. `mustAskInFullAccess` 除真实 `matchedAskRule` 外,还把 classifier false、`subcommandResults`、某些 safetyCheck、requiresUserInteraction 和**任意非空 decisionReasonCode** 都视为必须询问。 5. 非 matchedAskRule 分支发出的卡片仍标成普通 `permission`;当前持久记录无法辨别具体 SDK 判定来源,导致“为何完全访问仍询问”难以复盘。 -**判断**:本例是“完全访问与 SDK/宿主命令审批策略不一致”的已证用户问题,不能再作为单纯权限保存或新任务首发字段遗漏处理。过宽的 must-ask 条件具有离线可复现证据;四次真实回调的具体字段仍未知,不能断言一定都是 subcommandResults。 +**判断**:本例是“完全访问与 SDK/宿主命令审批策略不一致”的已证用户问题,不能再作为单纯权限保存或新任务首发字段遗漏处理。过宽的 must-ask 条件具有离线可复现证据;真实回调的具体字段仍未知,不能断言一定都是 subcommandResults。 ### 独立离线反例 @@ -41,7 +41,7 @@ | 非空 `decisionReasonCode` | 1 | permission | | 明确 `matchedAskRule` | 1 | rule-intercept | -[输出](evidence/B03-01/policy-results.json)。这些元数据是合成输入,不是用户那四次 callback 的还原。脚本退出 0 表示探针执行成功,**不表示产品通过验收**。approval 夹具选择允许一次,因此最终 behavior 为 allow;问题体现在用户仍需回答一次授权。 +[输出](evidence/B03-01/policy-results.json)。这些元数据是合成输入,不是用户真实 callback 的还原。脚本退出 0 表示探针执行成功,**不表示产品通过验收**。approval 夹具选择允许一次,因此最终 behavior 为 allow;问题体现在用户仍需回答一次授权。 重跑:在包含对应产品代码和现有项目依赖的检出中,将脚本复制为 `.tmp/full-access-review/policy-repro.mjs`,先创建其目录,再执行 `node .tmp/full-access-review/policy-repro.mjs`。它只写 `.tmp` 及自己的系统临时目录,不读取真实会话。 @@ -51,7 +51,7 @@ ### 验收标准 -- **AC7.1**:新建 craft 会话,首发前选择完全访问;普通目录读取、简单命令、由读取/echo/管道组成的复合命令,在专用测试目录中执行,不再因通用审批分类重复要求授权。测试第一轮及后续轮次。 +- **AC7.1**:新建 craft 会话,首发前选择完全访问;普通目录读取、简单命令、由读取/echo/管道组成的复合命令,在专用测试目录中执行,不再因通用审批分类重复要求授权。覆盖原生 Bash、PowerShell 的第一轮及后续轮次,不能只验证一类命令工具。 - **AC7.2**:检查 SDK 模式选择与宿主自动放行整体设计。区分“SDK 未预批准/等待宿主决定”与“确有用户规则要求询问”等不同来源;不要把任意非空原因码或分类器结果一律升级为人工授权。 - **AC7.3**:有真实显式询问/拒绝规则时,按既定规则语义处理并展示真实原因;不能编造命中规则。plan/ask 模式限制继续生效,不能因保存偏好为 full-access 而绕过模式限制。 - **AC7.4**:对缺失/未知 SDK 判定字段给出明确、经测试的策略,保持本地实际 SDK 类型与真实 callback 一致。不能只拿合成字段测试变绿就宣称完整修复。