feat(host): 将扩展文件请求绑定到限定租约与写入防护
This commit is contained in:
@@ -447,3 +447,15 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
|
||||
- 测试验证无秘密包在初始锁定时拒绝,解锁后能准备,准备后锁定则不能创建进程;锁定期间新签发的许可也不能用于准备。真实 AppContainer 无秘密双进程实例在锁定后约 55.14 ms 清空,后续工具调用被拒绝。
|
||||
- 53 项扩展回归通过,4 项 ignored 为三个父测试实际驱动的 Job 辅助入口及单独执行的 60 秒验收;全目标 Clippy -D warnings 通过。日志 `.build/extension-locked-session-tests.log`、`.build/extension-locked-session-clippy.log`。
|
||||
- 这修复会话门禁缺口,尚未开放执行能力或完成实际桌面实例注册、broker、CPU/scratch 限额及整体验收;完整生产化目标继续进行。
|
||||
|
||||
|
||||
## 增量:实例文件 broker 策略及写入意图提交前复核
|
||||
|
||||
- 新增 Windows 桌面内部 extension_file_broker,绑定已签发 Claims、当前 Vault、平台/策略、权限及已解锁会话租约。只接受 notes.read / notes.write 严格 DTO,不接受请求自报 Vault、来源、权限或 Core 任意方法;传输层仍须在创建 broker 前完成真实实例身份认证。
|
||||
- 每实例每秒最多 32 次请求,畸形或过大请求也占用额度;JSON 帧上限 2 MiB、笔记正文上限 1 MiB、路径上限 1024 字节。权限在文件访问前检查,只允许合法 Markdown 路径并沿用 Vault 私有路径禁令。原生传输尚未接入,未来读取帧时必须先执行大小限制,不能读完无界内容后才调用此适配器。
|
||||
- 读取从持有的目录句柄逐级 nofollow 打开,文件只共享读取;核对普通文件、非重解析对象及单硬链接,并以有界读取再次约束长度。返回实际正文摘要用于 expected_hash;返回前复核租约。
|
||||
- 写入通过 Host CAS / 持久日志 / outbox 完成。操作 UUID 按执行类型、来源、命名空间、包 ID、Vault 派生隔离标识,避免不同包或 Core/renderer 直接复用同一操作 ID;响应保留调用方原 ID。同包同 Vault 重启 broker 与 Workspace 后可重放已提交回执,变更同 ID 内容返回冲突。
|
||||
- Workspace 增加内部 guarded 写入入口,进入处理及持久写入意图事务提交前检查授权。后一次拒绝会回滚 operations / journal,重启不能重放该写入;此前已刷盘的 payload 及其映射可能留下,需后续统一孤儿清理。已接受的持久意图继续沿用恢复语义,不在写入文件后因撤销跳过 outbox。
|
||||
- 新增真实临时 Workspace / Stronghold 测试,覆盖正常读写、CAS、同 ID 内容冲突、跨包隔离、重启重放、权限/伪造字段/私有路径拒绝、帧/正文/速率限制、硬链接与异 Vault 拒绝、凭据锁定撤销。另有 Workspace 故障注入测试在提交前拒绝,确认重启正文与 outbox 不变,同 ID 原内容可以重试并只增加一次 revision/outbox。
|
||||
- 当前仍是内部策略适配器,未开放第三方执行。写入底层尚使用字符串路径,需完成全程句柄约束;原子撤权与最终提交的严格排序、真实管道身份认证、Vault 根目录替换、网络 broker 及完整攻击矩阵也尚未完成,不据此判定 C-02 / C-04 或整体生产化通过。
|
||||
- 本轮完整 Rust desktop all-targets 回归 115 项通过、6 项 ignored;其中三个 Job 辅助入口和一个上传故障辅助入口由父测试实际驱动,另外两项是需显式执行的 60 秒期限验收与打包 Core 20 次冷启动,本轮未重跑。全目标 Clippy -D warnings 通过。日志 `.build/extension-file-broker-full-tests.log`、`.build/extension-file-broker-clippy.log`。未修改前端/Python 实现,本轮没有把此前测试结果冒充重新执行结果。
|
||||
|
||||
Reference in New Issue
Block a user