iop/scripts/fixtures/single-request-claude-smoke-manifest.schema.json
toki d7a150c7fe feat(agent): 단일 요청 실행 경로를 완성한다
Claude의 단일 Anthropic 요청 안에서 IOP가 Plan, Work, Review와 workspace 도구 실행을 끝내고 실제 dev smoke로 계약을 검증할 수 있어야 한다.\n\n완료 task evidence와 마일스톤 검토 상태도 같은 변경에 고정한다.
2026-08-08 23:35:13 +09:00

158 lines
5.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://iop.local/schemas/single-request-claude-smoke-manifest.schema.json",
"title": "Single-request Claude smoke manifest",
"description": "Closed, redacted S12 evidence. Every object is closed; raw prompts, outputs, paths, endpoints, headers, credentials, and provider payloads are deliberately absent.",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "source", "runtime", "ingress", "stages", "terminal", "workspace", "verification", "redaction"],
"properties": {
"schema_version": { "const": "1" },
"source": { "$ref": "#/$defs/source" },
"runtime": { "$ref": "#/$defs/runtime" },
"ingress": { "$ref": "#/$defs/ingress" },
"stages": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"prefixItems": [
{ "$ref": "#/$defs/stage", "properties": { "stage": { "const": "plan" }, "engine_family": { "const": "gemini" } } },
{ "$ref": "#/$defs/stage", "properties": { "stage": { "const": "work" }, "engine_family": { "const": "ornith-fast" } } },
{ "$ref": "#/$defs/stage", "properties": { "stage": { "const": "review" }, "engine_family": { "const": "gemini" } } }
],
"items": false
},
"terminal": { "$ref": "#/$defs/terminal" },
"workspace": { "$ref": "#/$defs/workspace" },
"verification": { "$ref": "#/$defs/verification" },
"redaction": { "$ref": "#/$defs/redaction" }
},
"$defs": {
"digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
"platform": { "type": "string", "pattern": "^[a-z0-9_+-]{1,32}$" },
"source": {
"type": "object",
"additionalProperties": false,
"required": ["head", "branch_digest", "worktree_digest"],
"properties": {
"head": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
"branch_digest": { "$ref": "#/$defs/digest" },
"worktree_digest": { "$ref": "#/$defs/digest" }
}
},
"runtime": {
"type": "object",
"additionalProperties": false,
"required": [
"runner_os",
"runner_arch",
"workspace_os",
"workspace_arch",
"workspace_root_digest",
"workspace_owner_digest",
"claude_digest",
"claude_version_digest",
"claude_help_digest",
"edge_digest",
"edge_version_digest",
"node_digest",
"node_version_digest",
"config_digest",
"config_check_digest",
"schema_digest",
"base_url_digest",
"public_model_digest",
"stage_engines",
"stage_binding_digest"
],
"properties": {
"runner_os": { "$ref": "#/$defs/platform" },
"runner_arch": { "$ref": "#/$defs/platform" },
"workspace_os": { "enum": ["darwin", "linux"] },
"workspace_arch": { "$ref": "#/$defs/platform" },
"workspace_root_digest": { "$ref": "#/$defs/digest" },
"workspace_owner_digest": { "$ref": "#/$defs/digest" },
"claude_digest": { "$ref": "#/$defs/digest" },
"claude_version_digest": { "$ref": "#/$defs/digest" },
"claude_help_digest": { "$ref": "#/$defs/digest" },
"edge_digest": { "$ref": "#/$defs/digest" },
"edge_version_digest": { "$ref": "#/$defs/digest" },
"node_digest": { "$ref": "#/$defs/digest" },
"node_version_digest": { "$ref": "#/$defs/digest" },
"config_digest": { "$ref": "#/$defs/digest" },
"config_check_digest": { "$ref": "#/$defs/digest" },
"schema_digest": { "$ref": "#/$defs/digest" },
"base_url_digest": { "$ref": "#/$defs/digest" },
"public_model_digest": { "$ref": "#/$defs/digest" },
"stage_engines": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"prefixItems": [
{ "const": "gemini" },
{ "const": "ornith-fast" },
{ "const": "gemini" }
],
"items": false
},
"stage_binding_digest": { "$ref": "#/$defs/digest" }
}
},
"ingress": {
"type": "object",
"additionalProperties": false,
"required": ["delta"],
"properties": { "delta": { "const": 1 } }
},
"stage": {
"type": "object",
"additionalProperties": false,
"required": ["stage", "engine_family", "duration_ms", "binding_digest"],
"properties": {
"stage": { "enum": ["plan", "work", "review"] },
"engine_family": { "enum": ["gemini", "ornith-fast"] },
"duration_ms": { "type": "integer", "minimum": 0 },
"binding_digest": { "$ref": "#/$defs/digest" }
}
},
"terminal": {
"type": "object",
"additionalProperties": false,
"required": ["count", "stop_reason", "duration_ms"],
"properties": {
"count": { "const": 1 },
"stop_reason": { "const": "end_turn" },
"duration_ms": { "type": "integer", "minimum": 0 }
}
},
"workspace": {
"type": "object",
"additionalProperties": false,
"required": ["before_digest", "after_digest", "changed"],
"properties": {
"before_digest": { "$ref": "#/$defs/digest" },
"after_digest": { "$ref": "#/$defs/digest" },
"changed": { "const": true }
}
},
"verification": {
"type": "object",
"additionalProperties": false,
"required": ["command_digest", "result_file_digest", "exit_code"],
"properties": {
"command_digest": { "$ref": "#/$defs/digest" },
"result_file_digest": { "$ref": "#/$defs/digest" },
"exit_code": { "const": 0 }
}
},
"redaction": {
"type": "object",
"additionalProperties": false,
"required": ["forbidden_match_count", "forbidden_key_count"],
"properties": {
"forbidden_match_count": { "const": 0 },
"forbidden_key_count": { "const": 0 }
}
}
}
}