跳转至

失败证据格式与 AUD 码登记表

审计发现必须以机器可读的证据文档记录。证据文档由 runner/run-audit.mjs 输出到 stdout,格式由 schemas/audit-evidence.schema.json 冻结,并通过被消费 Contracts 的 validateDocument(2020-12 方言、strict 策略)自校验——证据文档本身不合格是机制错误(退出码 2)。

证据文档形状

{
  "schemaVersion": 1,
  "kind": "skill-family.audit.evidence",
  "auditId": "fnd-060-independent-audit",
  "generatedAt": "RFC 3339 date-time",
  "consumer": {
    "contractsVersion": "1.0.0",
    "auditSurfaceVersion": 1,
    "surfaceDigest": { "algorithm": "sha256", "value": "64 位十六进制" }
  },
  "verdict": "pass | fail",
  "classCoverage": {
    "<class>": { "fixtures": 0, "detected": 0, "required": 3, "satisfied": false }
  },
  "fixtureResults": [
    { "fixtureId": "AUD-M1-01", "mutationClass": "structure", "expectedAuditCode": "AUD-M1-STRUCT", "detected": true, "observed": {} }
  ],
  "findings": [
    {
      "findingId": "F-0001",
      "auditCode": "AUD-BASE-001",
      "severity": "mandatory",
      "mutationClass": null,
      "fixtureId": null,
      "detected": true,
      "summary": "人类可读摘要",
      "details": {}
    }
  ]
}

要点:

  • consumer版本坐标 + surface 摘要钉死被消费的 Contracts 包,证据因此可回溯到精确字节;
  • fixtureResults 是全部 fixture 的重放记录(含通过项),findings 只收违规项;
  • v1 冻结单一严重级 mandatory:任何发现都使 verdictfail
  • classCoverage 五类齐全;satisfied = fixtures ≥ 3 且 detected ≥ 1

裁决规则

  1. findings 为空 → verdict = pass,退出码 0;
  2. 任一发现存在 → verdict = fail,退出码 1;
  3. 用法或机制错误(含证据自校验失败)→ 退出码 2,不产生证据或产生作废证据;
  4. 漏报律:任一类 satisfied = false 必须产生 AUD-MISS-001 发现,整体 verdict 必为 fail。

AUD 码登记表(append-only)

审计码属于审计自有命名空间 AUD-不进入 Contracts 的 SFC 登记;审计对 SFC 码只读消费。机器可读副本见 baseline/audit-codes.json

名称 含义
AUD-M1-STRUCT STRUCTURE_MUTATION_DETECTED 结构类变异被检出(观察码等于预期稳定码)
AUD-M2-SEM SEMANTIC_MUTATION_DETECTED 语义类变异被检出
AUD-M3-DIGEST DIGEST_MISMATCH_DETECTED 摘要类变异被检出(规范化摘要与 pin 不一致)
AUD-M4-OMIT OMISSION_DETECTED 遗漏类变异被检出(缺失清单与预期一致)
AUD-M5-ENGINE ENGINE_WEAKENING_DETECTED 引擎削弱类变异被检出(被削弱字段与预期一致)
AUD-MISS-001 MUTATION_CLASS_MISSED 某类 fixture 数低于冻结下限或零检出;漏报即整体失败
AUD-BASE-001 BASELINE_DRIFT 消费的 Contracts 活跃 surface 与冻结基线 pin 不一致
AUD-FMT-001 EVIDENCE_OR_FIXTURE_FORMAT_INVALID fixture 信封或证据文档格式非法
AUD-LOCK-001 LOCK_VERIFICATION_FAILED 消费包的身份、依赖闭包或 pin 对比失败
AUD-IND-001 INDEPENDENCE_VIOLATION 审计读取或导入越出允许集合

登记纪律:码只增不改不复用;新增码必须同步更新本表与 baseline/audit-codes.json,且不得与 SFC 命名空间产生任何交叉拥有。