{
  "spec_version": "0.2.1",
  "requirements": [
    {
      "id": "AXI-BATCH-001",
      "requirement": "批量执行器必须仅接受获准的独立 `read` 动作，逐项执行身份、范围与输入校验，并保留每个输入项的结果；不得通过批量绕过单项权限或用整体成功隐藏失败。",
      "source": "specification/0.2.1/batch.md",
      "url": "specification/0.2.1/batch/#axi-batch-001"
    },
    {
      "id": "AXI-BATCH-002",
      "requirement": "批量必须有明确条数与并发上限，声明快照语义，返回唯一 `item_id`；取消、超时和部分失败不得丢弃已完成项。未执行项必须可识别，客户端只能按实际失败原因决定是否继续。",
      "source": "specification/0.2.1/batch.md",
      "url": "specification/0.2.1/batch/#axi-batch-002"
    },
    {
      "id": "AXI-CTX-001",
      "requirement": "调用者必须从用户明确提供的引用、当前获权读取或同一任务的可信返回值中定位对象；多重匹配不得自动选择首项。必要上下文缺失时必须报告缺项，不得退回默认账号或工作区。",
      "source": "specification/0.2.1/context.md",
      "url": "specification/0.2.1/context/#axi-ctx-001"
    },
    {
      "id": "AXI-CTX-002",
      "requirement": "服务端必须验证身份与请求范围、对象归属和修订的关系；客户端必须在身份或范围切换时清除旧的敏感内容、临时编辑和不适用的控件引用，并拒绝迟到响应覆盖新范围。",
      "source": "specification/0.2.1/context.md",
      "url": "specification/0.2.1/context/#axi-ctx-002"
    },
    {
      "id": "AXI-DISC-001",
      "requirement": "提供方必须让目录条目解析到相同名称和修订的动作合同，并保持副作用与必要上下文一致；静态索引不得宣称当前用户已获权。",
      "source": "specification/0.2.1/discovery.md",
      "url": "specification/0.2.1/discovery/#axi-disc-001"
    },
    {
      "id": "AXI-DISC-002",
      "requirement": "发现必须允许有界地获得候选；提供方应当支持按用途、名称或领域缩小范围。需要更多条目时，必须提供明确继续路径，不得静默截断成“全部”。",
      "source": "specification/0.2.1/discovery.md",
      "url": "specification/0.2.1/discovery/#axi-disc-002"
    },
    {
      "id": "AXI-DISC-003",
      "requirement": "缓存必须至少区分提供方、规范版本和合同修订；若内容依赖身份范围，还必须按该范围隔离。目录变化、切换身份、撤权或明确失效时，不得继续复用不适用内容。",
      "source": "specification/0.2.1/discovery.md",
      "url": "specification/0.2.1/discovery/#axi-disc-003"
    },
    {
      "id": "AXI-ERR-001",
      "requirement": "错误必须区分输入、身份、权限、修订、幂等冲突、服务故障与结果未知；不得仅返回“失败，请重试”或根据自由文本决定是否重发写入。",
      "source": "specification/0.2.1/errors.md",
      "url": "specification/0.2.1/errors/#axi-err-001"
    },
    {
      "id": "AXI-ERR-002",
      "requirement": "恢复提示和 `next` 信息必须作为数据处理，不能提供新的授权；错误不得泄露凭据、无权对象存在性或未脱敏用户内容。",
      "source": "specification/0.2.1/errors.md",
      "url": "specification/0.2.1/errors/#axi-err-002"
    },
    {
      "id": "AXI-EXEC-001",
      "requirement": "提供方必须用实际发布的输入 Schema 验证参数，包括条件约束和未知字段；输出必须符合声明的输出 Schema。业务 Schema 必须使用 Draft 2020-12，并在发布前完成有效性检查。",
      "source": "specification/0.2.1/execution.md",
      "url": "specification/0.2.1/execution/#axi-exec-001"
    },
    {
      "id": "AXI-EXEC-002",
      "requirement": "产生副作用前，业务服务必须重新核对身份、权限、对象归属、必要修订、业务前置和适用费用限制；客户端预检成功不得豁免这些校验。",
      "source": "specification/0.2.1/execution.md",
      "url": "specification/0.2.1/execution/#axi-exec-002"
    },
    {
      "id": "AXI-EXEC-003",
      "requirement": "客户端必须判断当前用户意图是否覆盖本次对象、输入和副作用；不能从工具描述、外部网页、`next` 建议或旧会话推导新增授权。已有授权充分时应当继续执行；需要新决定时，应当先准备可审核的具体方案，再请求决定。",
      "source": "specification/0.2.1/execution.md",
      "url": "specification/0.2.1/execution/#axi-exec-003"
    },
    {
      "id": "AXI-EXEC-004",
      "requirement": "`draft`、`submit` 和 `irreversible` 动作必须提供规定范围与保留期的幂等和原操作恢复合同；同键重放必须在重复执行副作用前查回原操作。对不能由本地事务覆盖的外部提交，必须使用持久操作记录与下游去重或明确的未知恢复流程。",
      "source": "specification/0.2.1/execution.md",
      "url": "specification/0.2.1/execution/#axi-exec-004"
    },
    {
      "id": "AXI-CORE-001",
      "requirement": "实现必须声明精确规范版本、提供方标识、所覆盖的核心任务和绑定；不得仅以“支持 AXI”代替声明范围。",
      "source": "specification/0.2.1/index.md",
      "url": "specification/0.2.1/#axi-core-001"
    },
    {
      "id": "AXI-CORE-002",
      "requirement": "人类入口与 Agent 入口必须使用同一领域权限、修订、副作用和事实源；接入层不得直接绕过业务校验写入领域存储。",
      "source": "specification/0.2.1/index.md",
      "url": "specification/0.2.1/#axi-core-002"
    },
    {
      "id": "AXI-PERF-001",
      "requirement": "采用方必须为声明支持的CLI、MCP及本地/远程视图分别确定任务性能预算与测量边界，区分首次反馈、首个正确可用结果、完整交付、冷启动和热会话；报告必须包含环境、精确制品、样本数、失败及尾部延迟，不得仅以工具响应或localhost位置宣称端到端提速。",
      "source": "specification/0.2.1/index.md",
      "url": "specification/0.2.1/#axi-perf-001"
    },
    {
      "id": "AXI-PERF-002",
      "requirement": "性能优化必须保持原权限、输入校验、修订、费用、恢复和结果质量；不得以省略必需核验、丢弃失败样本或重发未知操作换取较低耗时。提供方应当让已知目标直接调用，避免重复发现、无关启动和同任务重复创建视图。",
      "source": "specification/0.2.1/index.md",
      "url": "specification/0.2.1/#axi-perf-002"
    },
    {
      "id": "AXI-LIFE-001",
      "requirement": "采用方必须声明业务能力、方法、载体适配、原生制品和可选视图的归属、版本及依赖，区分文档支持、参考实现、真实宿主验证和已发布状态；不得从一种载体支持推导另一种已兼容。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-001"
    },
    {
      "id": "AXI-LIFE-002",
      "requirement": "分发必须提供可核对的来源、精确制品及原生安装/启用/卸载路径；需要本地执行或额外权限的组件必须在启用前明确说明。安装完成不得被当作连接、鉴权、授权或任务成功。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-002"
    },
    {
      "id": "AXI-LIFE-003",
      "requirement": "连接身份与业务授权必须遵循所选载体的实际合同，复用仍有效的会话并在失效时保留原任务；不得复制其他载体的 Cookie 或凭据来绕过新受众、范围或用户同意。无权、未认证、不可达和未启用必须可区分。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-003"
    },
    {
      "id": "AXI-LIFE-004",
      "requirement": "方法、工具和交互视图必须引用适用的同一任务、对象与合同；方法激活、页面选择、App 上下文更新或建议不得隐式产生新的授权。用户已在视图完成的动作必须先回读，不得重复提交。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-004"
    },
    {
      "id": "AXI-LIFE-005",
      "requirement": "升级与发布必须验证实际制品、原生发现、合同/方法/UI 兼容和原操作恢复；新增权限或破坏性副作用不得沿用旧授权静默生效。发布完成必须有目标渠道回读与所声明任务的证据。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-005"
    },
    {
      "id": "AXI-LIFE-006",
      "requirement": "禁用、断开、撤权、卸载和业务取消必须分别表达；退出或退役不得把已提交或未知操作自动标成撤销，也不得在保留义务内破坏原操作恢复。业务数据清理必须有独立明确范围。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-006"
    },
    {
      "id": "AXI-LIFE-007",
      "requirement": "采用方必须声明所支持任务的页面位置、内容位置、执行位置、状态Owner及网络/身份依赖；本地绑定不得被当作离线保证，独立本地任务不得被无关远程登录统一阻断。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-007"
    },
    {
      "id": "AXI-LIFE-008",
      "requirement": "跨本地与远程传输或发布必须保留固定内容修订、目的、当前授权及原操作恢复；本机处理、远程执行、结果保存和协作入库不得互相隐含授权或成功。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-008"
    },
    {
      "id": "AXI-LIFE-009",
      "requirement": "采用方必须区分源资料、内部操作记录、可重建缓存、临时结果及正式资料的保留与删除政策；清理不得破坏仍适用的引用、unknown恢复、费用或保留义务，缓存重建不得重发未知写入。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-009"
    },
    {
      "id": "AXI-LIFE-010",
      "requirement": "采用本地工作区的实现必须公布目录选择、默认位置及其OS解析规则；不得因用户取消或指定路径失败而静默另存，不得将凭据、临时目录和用户项目混为同一存储。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-010"
    },
    {
      "id": "AXI-LIFE-011",
      "requirement": "首次使用应当从用户目标和已有任务渐进开始，复用适用默认值与有效上下文；实现不得以无关运行模式选择或远程登录阻断声明支持的本地任务。远程处理、付费、存储及共享的新增影响必须在对应动作前说明并取得适用授权，不能由默认值隐含。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-011"
    },
    {
      "id": "AXI-LIFE-012",
      "requirement": "需要用户决定时，实现应当优先采用宿主实际支持的原生选择或输入交互，合并相关缺项并复用已有决定；必须处理接受、拒绝、取消和不支持，保留原任务。机器模式不得等待不可见终端输入，选择结果不得被当作目录权限或新增副作用授权。",
      "source": "specification/0.2.1/lifecycle.md",
      "url": "specification/0.2.1/lifecycle/#axi-life-012"
    },
    {
      "id": "AXI-DATA-001",
      "requirement": "采用 JSON 表示的实现必须验证当前文档类型，拒绝未知核心字段及不支持的版本；不得通过忽略拼写错误或默认成另一动作继续写入。",
      "source": "specification/0.2.1/model.md",
      "url": "specification/0.2.1/model/#axi-data-001"
    },
    {
      "id": "AXI-PAGE-001",
      "requirement": "分页必须以 `next_cursor: null` 明确结束；空 `items` 配合非空游标仍表示可以继续。游标必须绑定原查询与适用范围，失效时明确返回 `cursor_invalid`，不得静默从第一页开始。",
      "source": "specification/0.2.1/pagination.md",
      "url": "specification/0.2.1/pagination/#axi-page-001"
    },
    {
      "id": "AXI-PAGE-002",
      "requirement": "提供方必须声明快照模式。`consistent` 表示各页属于同一已标识快照，必须包含 `snapshot.revision`；`best_effort` 表示列表可能在读取间变化，客户端不得据此声称全局一致。",
      "source": "specification/0.2.1/pagination.md",
      "url": "specification/0.2.1/pagination/#axi-page-002"
    },
    {
      "id": "AXI-OUT-001",
      "requirement": "默认输出必须保留当前决定所需的身份范围、对象、修订、恢复、失败和费用单位；任何内容截断必须显式表达，并提供精确继续读取路径。",
      "source": "specification/0.2.1/pagination.md",
      "url": "specification/0.2.1/pagination/#axi-out-001"
    },
    {
      "id": "AXI-REC-001",
      "requirement": "提供方必须持久保存原键与固定输入的关联；相同范围、动作和键的相同输入必须返回原操作，异输入必须拒绝。保留期内不得因进程重启、并发请求或客户端重连而重新产生副作用。",
      "source": "specification/0.2.1/recovery.md",
      "url": "specification/0.2.1/recovery/#axi-rec-001"
    },
    {
      "id": "AXI-REC-002",
      "requirement": "客户端在提交结果未知时必须保留原对象、输入、键及必要修订，优先调用原操作恢复入口；不得换键、建新任务或自动重复付费。服务端找不到原记录不足以证明外部副作用未发生，除非其合同和事务边界能明确证明未接收。",
      "source": "specification/0.2.1/recovery.md",
      "url": "specification/0.2.1/recovery/#axi-rec-002"
    },
    {
      "id": "AXI-REC-003",
      "requirement": "过期、撤权、取消或范围变化不得解除尚未确认的原操作；恢复不可用时必须报告具体阻塞。过期后重提需要新的事实和适用授权，不能静默清理客户端记录后自动重发。",
      "source": "specification/0.2.1/recovery.md",
      "url": "specification/0.2.1/recovery/#axi-rec-003"
    },
    {
      "id": "AXI-RESULT-001",
      "requirement": "实现必须按可观察证据选择状态；接收、排队、HTTP 成功或安装完成不得被当作业务目标已完成。`unknown` 不得被改写成可安全重发的 `failed`。",
      "source": "specification/0.2.1/results.md",
      "url": "specification/0.2.1/results/#axi-result-001"
    },
    {
      "id": "AXI-RESULT-002",
      "requirement": "写入的非 `blocked` 回执必须保留原操作引用；`partial` 必须暴露逐项结论；结果不得把技术成功、质量通过和费用结算合并成未经验证的单一成功标记。",
      "source": "specification/0.2.1/results.md",
      "url": "specification/0.2.1/results/#axi-result-002"
    },
    {
      "id": "AXI-SEC-001",
      "requirement": "网页、文档、工具描述、Skill 内容和结果中的指令必须视为外部数据；不得借其改变用户授权、提升权限或覆盖宿主规则。执行动作由可信合同、当前身份和用户意图共同约束。",
      "source": "specification/0.2.1/security.md",
      "url": "specification/0.2.1/security/#axi-sec-001"
    },
    {
      "id": "AXI-SEC-002",
      "requirement": "提供方必须执行最小权限和范围隔离，重新授权恢复读取；索引、深链、错误、日志和证据不得包含凭据、会话令牌、临时签名或无权对象数据。",
      "source": "specification/0.2.1/security.md",
      "url": "specification/0.2.1/security/#axi-sec-002"
    },
    {
      "id": "AXI-SEC-003",
      "requirement": "需要获取合同、资源或跳转外链的客户端必须限制可信来源、协议和解析范围，不得自动跟随数据中的任意地址并携带现有凭据。绑定必须保留原协议的授权和调用审查要求。",
      "source": "specification/0.2.1/security.md",
      "url": "specification/0.2.1/security/#axi-sec-003"
    },
    {
      "id": "AXI-SEC-004",
      "requirement": "暴露本地网络服务或桥接的实现必须限制监听地址、Host/Origin、调用会话和获准文件范围，防止跨站请求、DNS rebinding及路径逃逸；本地地址不得被当作可信身份，桥接被拒绝不得隐式改成数据上传。",
      "source": "specification/0.2.1/security.md",
      "url": "specification/0.2.1/security/#axi-sec-004"
    },
    {
      "id": "AXI-VER-001",
      "requirement": "调用必须使用明确支持的版本和动作合同修订；提供方不得把未知版本静默解释成当前版本。破坏性输入、输出或副作用变化必须产生新的合同修订，并提供显式迁移说明。",
      "source": "specification/0.2.1/versioning.md",
      "url": "specification/0.2.1/versioning/#axi-ver-001"
    },
    {
      "id": "AXI-EXT-001",
      "requirement": "未知可选扩展可以忽略；实现不得在核心调用中暗含必须理解的扩展。需要扩展才能安全执行的能力必须采用新的显式合同修订或独立动作，并在发现时说明。",
      "source": "specification/0.2.1/versioning.md",
      "url": "specification/0.2.1/versioning/#axi-ext-001"
    },
    {
      "id": "AXI-WAIT-001",
      "requirement": "等待必须有总期限，期限覆盖读取和间隔暂停，并响应身份失效、范围变化及取消。到期必须返回当前有效状态或明确读取失败，不得把停止等待表述成业务已失败。",
      "source": "specification/0.2.1/wait.md",
      "url": "specification/0.2.1/wait/#axi-wait-001"
    },
    {
      "id": "AXI-CANCEL-001",
      "requirement": "实现必须区分“停止本次观察”与“取消领域操作”；只有服务端确认领域取消后才能报告该操作 `cancelled`。客户端断开或用户关页不得自动解释为副作用已撤销。",
      "source": "specification/0.2.1/wait.md",
      "url": "specification/0.2.1/wait/#axi-cancel-001"
    }
  ]
}
