{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://opentakeoff.academy/schema/run-bundle.schema.json", "title": "OpenTakeoff Academy Run Bundle", "description": "A signed, tamper-evident record of one contestant run over a task suite. This IS the object that gets scored. Model weights, parser internals, and harness source are never included — only the observable trace (tool/MCP calls) and the produced quantities.", "type": "object", "required": ["bundleVersion", "runId", "track", "suite", "contestant", "attestation", "tasks", "telemetry", "integrity"], "additionalProperties": false, "properties": { "bundleVersion": { "type": "string", "const": "1.0", "description": "Run-bundle schema version this file conforms to." }, "runId": { "type": "string", "pattern": "^run_[A-Za-z0-9._-]{6,}$", "description": "Unique id for this run. Not time-derived; generated by the SDK from a UUID." }, "track": { "type": "string", "description": "Track id, e.g. 'generalist' or a vertical like 'div9'.", "pattern": "^[a-z0-9-]{2,32}$" }, "suite": { "type": "object", "required": ["id", "version", "mode"], "additionalProperties": false, "properties": { "id": { "type": "string", "description": "Suite id, e.g. 'div9-area-v1'." }, "version": { "type": "string", "description": "Immutable suite version string." }, "mode": { "type": "string", "enum": ["practice", "ranked"], "description": "practice = keys are public (dev only). ranked = keys withheld; scored by the Academy." } } }, "contestant": { "type": "object", "required": ["name", "modelId", "adapter"], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Display name / handle of the entrant." }, "modelId": { "type": "string", "description": "Model identifier the entrant wants on the leaderboard (free text, e.g. 'chalkline-v2.3')." }, "harness": { "type": "string", "description": "Optional name/version of the entrant's own harness." }, "adapter": { "type": "string", "enum": ["openai-endpoint", "mcp", "custom-bundle"], "description": "How the runner reached the agent. 'custom-bundle' = the entrant produced this bundle with their own harness against the conformance SDK." }, "contact": { "type": "string", "description": "Optional contact/URL for the leaderboard row (e.g. HF or GitHub URL)." } } }, "attestation": { "type": "object", "required": ["mode"], "additionalProperties": false, "description": "Whether this run was self-run (self_reported) or driven by the Academy against a fresh held-out set (proctored). Only proctored runs can earn a Certified mark.", "properties": { "mode": { "type": "string", "enum": ["self_reported", "proctored"] }, "proctor": { "type": "object", "description": "Present only when mode = proctored.", "additionalProperties": true, "properties": { "proctorId": { "type": "string" }, "deliveredSuiteVersion": { "type": "string" }, "endpointFingerprint": { "type": "string", "description": "Hash of the ephemeral endpoint/MCP descriptor the Academy drove, so the run is bound to what it proctored." } } } } }, "tasks": { "type": "array", "minItems": 1, "description": "One entry per task in the suite.", "items": { "type": "object", "required": ["taskId", "answer", "trace", "telemetry"], "additionalProperties": false, "properties": { "taskId": { "type": "string" }, "answer": { "type": "object", "required": ["quantities"], "additionalProperties": false, "description": "The takeoff the agent produced for this task.", "properties": { "quantities": { "type": "array", "items": { "type": "object", "required": ["item", "value", "unit"], "additionalProperties": false, "properties": { "item": { "type": "string", "description": "What was measured, e.g. 'RM-101 LVT area'." }, "value": { "type": "number" }, "unit": { "type": "string", "description": "e.g. 'sf', 'lf', 'ea'." }, "roomId": { "type": "string" }, "confidence": { "type": "number", "minimum": 0, "maximum": 1 } } } }, "notes": { "type": "string" } } }, "trace": { "type": "array", "description": "Ordered, complete provenance of what the agent did. Missing steps or a perfect answer with no measurement steps are grounds for a gamed-run flag.", "items": { "type": "object", "required": ["seq", "type"], "additionalProperties": false, "properties": { "seq": { "type": "integer", "minimum": 0 }, "tOffsetMs": { "type": "integer", "minimum": 0, "description": "Milliseconds since task start. Relative, not wall-clock, so bundles are reproducible." }, "type": { "type": "string", "enum": ["model_message", "tool_call", "tool_result", "mcp_call", "mcp_result", "error"] }, "tool": { "type": "string", "description": "Tool or MCP method name, e.g. 'set_scale', 'measure_area', 'count', 'emit_quantity', or an entrant MCP tool like 'parse_planset'." }, "server": { "type": "string", "description": "MCP server id when type is mcp_*; blank for built-in Academy tools." }, "args": { "description": "Arguments passed. Redacted values allowed for entrant-private MCP tools (use {\"$redacted\": true})." }, "result": { "description": "Result returned. Redaction allowed as above." }, "tokens": { "type": "object", "additionalProperties": false, "properties": { "in": { "type": "integer", "minimum": 0 }, "out": { "type": "integer", "minimum": 0 } } } } } }, "telemetry": { "type": "object", "required": ["steps", "wallMs"], "additionalProperties": false, "properties": { "steps": { "type": "integer", "minimum": 0 }, "tokensIn": { "type": "integer", "minimum": 0 }, "tokensOut": { "type": "integer", "minimum": 0 }, "wallMs": { "type": "integer", "minimum": 0 }, "toolCalls": { "type": "integer", "minimum": 0 }, "mcpCalls": { "type": "integer", "minimum": 0 } } } } } }, "telemetry": { "type": "object", "required": ["sdkVersion"], "additionalProperties": false, "description": "Run-level rollups + environment.", "properties": { "sdkVersion": { "type": "string" }, "totalSteps": { "type": "integer", "minimum": 0 }, "totalTokensIn": { "type": "integer", "minimum": 0 }, "totalTokensOut": { "type": "integer", "minimum": 0 }, "totalWallMs": { "type": "integer", "minimum": 0 }, "startedAt": { "type": "string", "description": "ISO-8601 timestamp stamped by the SDK at run start (informational; not used for scoring)." } } }, "integrity": { "type": "object", "required": ["hashAlg", "bundleHash"], "additionalProperties": false, "description": "Tamper-evidence. bundleHash is the sha256 of the canonicalized bundle with this integrity block's signature fields nulled. A signature binds the bundle to the entrant's key; proctored runs are additionally co-signed by the Academy.", "properties": { "hashAlg": { "type": "string", "const": "sha256" }, "bundleHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "signature": { "type": "string", "description": "Optional detached signature (base64) of bundleHash by the entrant key." }, "publicKey": { "type": "string", "description": "Entrant public key (PEM or base64) that verifies signature." }, "academySignature": { "type": "string", "description": "Present on proctored runs: Academy co-signature of bundleHash." } } } } }