Skip to content

[ACP-HARDEN-130] execution-result/v1を導入しstatus非変換を保証する #3658

Description

@ootakazuhiko

Parent: #3655
Depends on: ACP-HARDEN-110
Blocks: ACP-HARDEN-210, ACP-HARDEN-230, ACP-HARDEN-240
Codex lane: contracts/execution-result-v1

背景

現在のartifact群には複数の実行status語彙がある。

  • formal summary: ok, failed, skipped, missing, unknown
  • loop summary: pass, fail, warn, not-run
  • claim projection: tested, model-checked, proved, runtime-mitigated, waived, unresolved

実行結果とclaimへの評価projectionが混在すると、unsupportedtool-errorfailへ、skippassへ、testedprovedへ誤変換される危険がある。Private Matchではpass, fail, skip, unsupported, timeout, tool-errorを完全に保持することで、未実施・未対応・失敗を区別した。

目的

runner共通のexecution-result/v1を導入し、実行outcomeとclaim projectionを二層に分離する。

Codex CLI preflight

  • Assurance Model
  • Contract Catalog
  • formal-summary v1/v2
  • verify-lite/loop/conformance/security/benchmark summaries
  • claim-evidence-manifest/assurance-summary/policy input consumers
  • schema migration/dual-writeの既存方針
  • Context Pack/Boundary Map

Proposed contract

推奨Schema:

schema/execution-result-v1.schema.json

最低限:

schemaVersion: execution-result/v1
resultId
producer
subject
status:
  pass
  fail
  skip
  unsupported
  timeout
  tool-error
ran
required
reason
startedAt
completedAt
tool:
  id
  version
  source
inputDigests
outputDigest
configuration
resourceLimits
assumptions
limitations
artifactStatus:
  real
  synthetic
  test-only

不変条件

  • ran=falsepass|fail|timeout|tool-errorは禁止。
  • skipは未実行、unsupportedは能力非対応、timeoutは実行開始後期限超過、tool-errorはtool/environment failure。
  • statusの相互変換は禁止。
  • required=falseであってもstatusを変更しない。
  • synthetic/test-only resultはreal claimの充足に使用しない。
  • claim projectionは別consumerがEvidence kind/scope/assumptionを評価して生成し、execution statusを書き換えない。

実装タスク

  • 主要runner/summaryのstatus inventoryとmapping riskを作成する。
  • execution-result/v1 Schema、fixtures、validator、Contract Catalog entryを追加する。
  • 既存artifactからのadapterまたはdual-write previewを実装する。
  • formal、conformance、loop、security、benchmarkの代表producerで同contractを生成または参照する。
  • claim-evidence-manifestがexecution resultをEvidenceとして参照し、claim statusと混同しないようにする。
  • unsupported, timeout, tool-errorを既存failed|unknownへcollapseしない。
  • tool未導入、network禁止、timeout、process error、assertion failureを別fixtureで固定する。
  • status migration compatibility、dual-read/dual-write期間、major version policyをADRへ記録する。
  • PR/release summaryでexecution outcomeとclaim projectionを別列・別sectionで表示する。

Acceptance criteria

  • 6 statusすべてのpositive fixtureがある。
  • 全status変換negative matrixがあり、違法変換を検出する。
  • skip, unsupported, timeout, tool-errorpassまたはfailへ変換されない。
  • tested, model-checked, provedはexecution statusとして生成されない。
  • synthetic/test-only resultでreal gateを満たせない。
  • FormalAgent hardening後の未実行結果を正確に表現できる。
  • 既存artifact consumerの互換性境界とrollbackが文書化される。

Validation

  • Schema self-validation
  • status cross-field tests
  • producer adapter tests
  • aggregation/policy negative tests
  • deterministic fixtures
  • pnpm -s run check:schemas
  • pnpm -s run check:doc-consistency
  • pnpm -s run verify:lite

非目標

  • 既存全Schemaの一括破壊的置換
  • 新しいassurance levelの追加
  • unavailable toolの自動installation
  • policy enforcementの即時mandatory化

Stop condition

  • Draft PR
  • migration ADRとcompatibility tests
  • exact-head CI success
  • unresolved review threads 0
  • worktree clean

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:contractsSchemas and contractsassurance-control-planeAgent-neutral assurance control plane roadmapcodex-readyIssue body is structured for Codex CLI executionpriority:p0Must be done firstrisk:highHigh risk PR (approval and gate labels required)type:taskImplementation task

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions