跳转至

English

失败与副作用矩阵

本页逐公共入口列出读写、spawn、Git、网络、残余状态与稳定错误码。它服务于调用方在接入前判断风险,并作为 capability-catalog.jsonsideEffectsfailureSemantics 字段的人类可读投影。所有事实以真实实现与负例测试为准。

符号约定:读=读取文件系统;写=写入文件系统;spawn=启动子进程;Git=读写 Git;网络=访问远端;残余=调用结束后仍留在磁盘/进程中的状态。

Contracts(纯函数层)

入口 spawn Git 网络 残余状态 稳定错误码
validateDocument 无(编译缓存仅驻留内存) SFC1001/SFC1002/SFC1006
compileSchema / detectDialect SFC1006/SFC1012
loadRegistry / findSchemaByObject / findProtocol SFC1003/SFC1004
runChecks / collectUnresolvedRefs SFC1002SFC1010
verifyAllFixtures / verifyFixture 否? 否 SFC1010
ERROR_CODES / stableError 冻结登记表,不新增

Contracts 全部为纯函数,无文件/Git/网络/进程副作用;错误对象含 stableErrordetails.kind,便于调用方分类。

Harness(机制层,受收容)

入口 spawn Git 网络 残余状态 稳定错误码
validateContractDocument 无(校验器缓存内存) SFC 校验失败
resolveContained / readFileContained 是(只读) SFC2004path-traversal/symlink-escape/realpath-escape
writeFileAtomic 是(受收容) 失败回滚临时文件 SFC2004atomic-write-failed
TemporaryWorkspace / withTemporaryWorkspace 是(临时目录) 退出时清理临时目录 SFC2004workspace-disposed
computeResourceClosure / digestBytes SFC(声明/内容违规)
parseRequest / processRequest 无(纯函数管线) SFC2004
validateReportModel / renderReportMarkdown / buildBinding / checkReport 无(纯函数) SFC3001/SFC3002/SFC3003
buildAdapterClosure / verifyAdapterBuildManifest SFC2004missing-resource
materializeAdapterBuild 是(受收容,sibling + rename) 无(原子 rename) SFC2004
probeVersionVector 默认否(需显式 --allow-host-spawn SFC2004
openStateStore / appendEvent / readEvents / writeSnapshot 是(事件/快照/锁文件) 事件日志 + 锁文件 SFC2004store-locked/链断裂)
inspectStateStoreLock / recoverStateStoreLock 是(仅恢复写锁) 锁文件(单调 fencing) SFC2004

Harness 的 HARNESS_EXCLUSIONS 明确排除 release-state、remote-network-access、business-semantics、workflow-orchestration、model-calls、git-writes。

Engineering Kit(工程命令层)

入口 spawn Git 网络 残余状态 稳定错误码 / 退出码
scaffoldTarget 是(受收容骨架,原子 + 收容) 无(失败不留半成品) SFC2004target-not-empty
planAdoption / buildProfileDraft 只读探测 无(stdout 输出) SFC 完成判定 false
runProjection 是(读 manifest) 是(受管路径,两阶段) 无(失败零写/回滚) SFC2004unauthorized-path/handwritten-overwrite/conflict-drift
runCheckscheck 只读白名单 退出码 1(发现)/ 2(机制)
renderReportAction / checkReportAction --out/--binding 默认只写 stdout SFC3001/SFC3002/SFC3003
probeGitState / probeGitFacts 只读白名单 SFC(越权参数拒绝)
describeHost / resolveHostId / probeHost / buildHostAdapter / planHost / applyHostPlan build/install/update 写(受收容;uninstall 不写) probe 默认否 仅显式 authorizationRef SFC2004;远端 apply 与删除式 uninstall 稳定拒绝
loadLicensingProfile / generateLicenseContent 否(纯函数生成) SFC(非法 Profile)
checkIdentityDrift / validateIdentityAgainstProfile findings
cliMain / runCommand 依命令 依命令 依命令 依命令 依命令 退出码 0/1/2

Kit 的 FORBIDDEN_SIDE_EFFECTS 含 git-init/commit/push/tag、publish、remote-write;REFUSED_MUTATION_FLAGS(含 --apply)在 CLI 入口即拒。

残余状态合集

  • 原子写:失败时回滚临时文件,目标目录不留半成品。
  • 临时工作区:退出(含异常路径)时清理。
  • 状态存储:事件日志是唯一权威,snapshot 为派生缓存;崩溃遗留锁需调用方在 Foundation 外确认旧写者终止后显式恢复,不自动偷锁。
  • 投影:任一校验失败整体拒绝、零写入;覆盖既有文件需声明 expect.sha256 前置状态。
  • adopt-plan / check:结构性只读,运行前后字节级零变化。

失败后调用方该做什么

  • 校验失败(SFC1001/SFC2002/SFC2003):检查输入是否满足目标 Schema 或参数合同,不重试已被冻结拒绝的登记。
  • 收容失败(SFC2004 + path-traversal 等):确认根目录与路径是否越界,不要把业务选择规则塞进 Foundation。
  • 状态锁冲突(store-locked):在 Foundation 之外确认旧写者已终止,再用精确匹配的 owner/fencing 调用恢复。
  • check 发现(退出码 1):处置发现项,Kit 不自动修复。