Fabric Schema 是 pi-fabric 提供的类型化 Schema 证据循环技能,用于在受保护工作区中对文件变更进行授权与约束,并可选启用有界的本地文件事务通道。入口为 const status = await schema.status();。
模式:off 为兼容模式,状态纪律可选,不拦截 pi.edit、pi.write、pi.bash;audit 只报告 enforce 模式会阻止的动作,不改变行为;enforce 要求受保护工作区的变更走同一 fabric_exec 内的 schema.hypothesize → schema.verify → schema.commit 序列,直接变更、agents、state/mesh 写入、compaction、MCP、扩展和外部提供者均被阻止,读取仍可用。
enforce 循环:先观察,再用字面量/SHA 证据或主机配置的可信命令提出假设,验证后仅凭返回的短期证书与观测到的 SHA 提交。证据缺失、过期、失败、超时、取消或工作区变化都会作废计划。证书随机、单次使用、与调用绑定,并关联假设、状态头/版本、工作区指纹和代次,不可留作后用;验证后停止需调用 schema.abort。
操作限于项目相对路径的普通文件:edit 需 oldText、newText、expectedSha256;write 用 expected: { absent: true } 创建或 { sha256 } 替换;delete 需 expectedSha256。路径/符号链接逃逸会被拒绝。仅 committed 视为成功;rolled_back 表示失败后已恢复声明路径;quarantined 表示回滚需人工检查。证据/后置条件形式有 file_exists、file_absent、file_contains(字面量,非正则)、file_sha256、trusted_command(静态主机可执行文件/argv),可信命令应确定、本地、只读;远程/网络/数据库效果非事务性,在 enforce 下仍被阻止。复杂度削减声明需设 complexityReduction: true 并包含行为保持后置条件,认证仅表示这些限定检查通过。
off 模式下独立标记状态层仍可记录并验证可证伪声明,使用 state.transition 与 state.verify,属工作流纪律而非强制。完成标准:enforce 下只有 status: "success" 且 outcome 为 committed 才确立声明的后置条件;audit 不改变行为也不授予授权;off 下返回明确的认证状态。更多说明见 <skill-dir>/../../docs/schema-enforcement.md 与 <skill-dir>/../../docs/state-layer.md。