> ## Documentation Index
> Fetch the complete documentation index at: https://automationlaboratoryprotocol.mimedal.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 安全要求

> ALL 的约束、安全围栏、并发与审计要求

## 安全边界

ALL 的安全控制分为两层：

1. FSP 根据请求分类、参数、对象状态、前置条件和系统安全围栏校验技能请求；
2. 设备本地控制器保留最终硬件保护权。

上层实验方法、能力描述或自然语言内容不得绕过任何一层。

## 分类安全规则

| 请求分类     | 执行前要求                         | 执行后要求                    |
| -------- | ----------------------------- | ------------------------ |
| `read`   | 校验技能存在、参数有效、设备在线且目标可读         | 返回观测时间和新鲜度；不得产生状态变化      |
| `write`  | 校验字段可写、参数范围、预期修订号和系统条件        | 回读目标值或取得等价确认；验证失败不得报告成功  |
| `invoke` | 校验对象状态、参数、修订号、全部前置条件、安全围栏和资源锁 | 验证实际结果和状态变化；未知结果不得提交预期状态 |

## 执行前校验顺序

`write` 和 `invoke` 请求应当依次检查：

```text theme={null}
完整技能修订号 → 请求分类 → 参数 Schema
→ 对象与设备状态新鲜度 → 前置条件 → 控制约束 → 安全围栏 → 资源锁
```

任一检查失败，服务端不得下发写入或物理动作。

## 状态与并发

* 改变状态的调用必须携带 `expected_revision`；
* 同一对象或同一互斥设备资源的冲突操作不得并发执行；
* 只有设备确认完成后才能提交成功状态；
* 任务进入 `unknown` 后不得以计划状态覆盖实际状态；
* 并行函数必须声明汇合条件和写集合，冲突写入必须在执行前被拒绝。

## 安全围栏

每项技能的系统维度必须公开调用方需要知道的安全限制，例如允许运行状态、联锁条件、可用性、禁止条件和紧急停止状态。围栏只公开执行判断所需信息，不暴露内部控制秘密。

## 取消与急停

取消任务是请求，不等同于动作已经停止。服务端必须返回真实任务状态；不能安全取消时返回 `unsafe_cancellation`。紧急停止由设备本地安全机制实施，ALL 只能读取其状态并遵守其结果。

## 最小暴露

* 设备发现只返回最小设备元数据，技能详情仅按调用方请求披露；
* 日志不记录设备密码或未脱敏样品秘密；
* 诊断不返回内部堆栈和驱动密钥；
* 研究对象扩展字段不得用于携带设备秘密。

## 审计

`write` 和 `invoke` 调用至少记录调用方名称、设备、技能、请求分类、请求标识、时间、参数摘要、输入修订号、任务标识、验证结果、最终状态和诊断编码。审计记录不能代替研究对象的实验来源与证据。
