SQA Agenthon
Development is Open!
Registration closes October 12th, 23:59 AoE

Agenthon 2026 / Submission format

Submission format

What You Submit

Prepare a container image, describe it in submission.json, and package the descriptor with your team-verification proof. This guide explains that workflow and the validated format. See your logged-in agenthon.net account for submission availability.

The two parts of a submission

A submission has two parts: a container image that implements the one command for your track, and a small descriptor file, submission.json, that names the image by digest. You upload a ZIP containing submission.json and the toolkit-generated team-claim.json; the organizers pull the image separately. The ZIP contains neither container layers nor your Team Key. Do not put registry passwords or other credentials in it.

The image

Build a Linux/amd64 image with its dependencies and permitted artifacts already included. Each track has one stable command verb. Your image must either expose it as an executable on PATH, or accept it as the leading positional argument of its entrypoint.

TrackVerbDescriptor track
T1 Codingsolvecoding
T2 Time-Series Forecastingforecastforecasting
T3 Simulationsimulatesimulation
T4 Explainabilityanalyzeanalysis

Pin the image by digest. A floating tag is rejected before your image is pulled, and the digest also lets organizers rerun the exact bytes during the joint Final + Verification phase. For the public image route, check that the image is anonymously pullable: a successful pull using your own registry login does not establish access for the evaluator.

All four tracks run without general internet access. Supported Coding, Forecasting and Explainability submissions can call the provided House Nemotron model through a restricted connection. Simulation has no network access. Downloads and external API calls are unavailable during evaluation.

Public image contents can be downloaded by others. If your image must remain confidential, contact the organizers privately before submitting and obtain confirmation of the handoff and the exact usable image reference. Selecting organizer_mirror alone does not arrange access. The Privacy Notice and Licensing Policy govern submission handling.

Prepare and upload

  1. Follow the installation instructions in the shared toolkit repository and update your track's public starter package. Use the released versions specified there, then run your track's local checks.
  2. Start with your track's Development descriptor and set its image, track, phase, category and actual model disclosures. Use the supported mode and the model metadata published in your track's README. Do not invent a training cutoff or copy the fictional models in the conformance examples below.
Track guideDevelopment descriptor
Codingtrack: coding, category: api; declare the House model when used.
Forecastingtrack: forecasting, category: api; follow the published model or model-free disclosure policy.
Simulationtrack: simulation, category: simulator, models: [] for a model-free simulator.
Explainabilitytrack: analysis, category: api; declare the House model when used.
  1. Choose one CodaBench account for your team across all tracks. Get your Team Number and Team Key from your agenthon.net account, then derive the descriptor's team ID: qfbench2 submission alias --team-number YOUR_TEAM_NUMBER Enter your Team Key at the hidden prompt. Put the resulting team ID into submission.json, replacing the example team ID. The numeric Team Number and the derived team ID are different.
  2. Package the descriptor after local checks: qfbench2 submission pack --descriptor submission.json --team-number YOUR_TEAM_NUMBER --out submission.zip The toolkit prompts for the Team Key, seals the descriptor and creates the proof. Repack after changing the descriptor or image digest. Keep the Team Key and the packaged verification proof private. A matching email alone does not verify a team.
  3. When submissions are available, use the competition links in your logged-in agenthon.net account. Request entry on CodaBench, accept the terms, follow any approval instructions shown, and upload submission.zip under My Submissions → Development. The first successfully verified submission links your designated account to the team; use it across all tracks.

When Development submissions open, the daily upload limit per team is 1 for Track 1 (Coding) and 5 for each of Tracks 2–4. The total limit is 20 uploads per team per track. Held or cancelled uploads still count, even without a score. Local checking and packing do not consume a submission attempt.

Development runs through 12 October 2026. The joint Final + Verification phase runs from 13 to 25 October 2026. Registration and Development close on 12 October at 23:59 Anywhere on Earth (AoE, UTC−12). Final + Verification closes on 25 October at 23:59 AoE. Each team makes one final submission per entered track; organizers handle verification within that same phase without a second participant upload.

The descriptor

Every field is required, the descriptor is validated in full before your image is pulled, and unknown fields are rejected rather than ignored. The table is generated from the canonical schema. Nested fields are shown with dotted names; requirements on models[] apply to each model entry. An empty model array is permitted by the format and does not grant additional model or data permissions.

FieldConstraint the validator applies
schema_version required; one of 1.0.0, 1.1.0
interface_version required; exactly "2.0"
competition_id required; non-empty string
team_id required; non-empty string
track required; one of coding, forecasting, simulation, analysis
phase required; one of dev, final, verification
category required; one of api, byo-large, byo-small, simulator
image required; object with digest, registry, repository
image.registry required; matches ^[a-z0-9]([a-z0-9._-]*[a-z0-9])?(:[0-9]{1,5})?$
image.repository required; matches ^[a-z0-9]+([._-][a-z0-9]+)*(/[a-z0-9]+([._-][a-z0-9]+)*)*$
image.digest required; matches ^sha256:[0-9a-f]{64}$
image_access required; one of public, organizer_mirror
models required; array, each with access, name, revision, training_cutoff, version
models[].name required; non-empty string
models[].version required; non-empty string
models[].training_cutoff required; non-empty string
models[].access required; one of api, local
models[].revision required; non-empty string
license required; non-empty string
descriptor_digest required; matches ^sha256:[0-9a-f]{64}$

category is required on every track. Track 3 uses simulator. Use the supported Development categories in the guide above. The complete schema also lists other category values; format acceptance alone does not mean a serving mode is available. An absent or unrecognised category is an error, never a default.

models is a required array listing every model your submission uses, with its name, version, training cutoff, access of api or local, and revision. A genuinely model-free submission declares models: []; omitting the field is invalid. Follow the published disclosure guidance when a training cutoff is unpublished; do not substitute the model's release date. license is a required SPDX identifier.

image_access declares how the organizers obtain your image: public for a public registry, organizer_mirror if it is mirrored into an organizer-operated registry instead. The confidential route requires prior organizer confirmation; declaring it does not configure credentials or arrange a mirror.

descriptor_digest covers every other field. Use the toolkit to repack after any edit, rather than calculating or editing this digest by hand.

Conformance examples for the descriptor formats

These canonical fixtures demonstrate the validated format. Their image references, team IDs and model names are examples, not runnable submission images or approved model choices. Use your track's current starter descriptor for an actual submission. The final and verification examples preserve the canonical schema formats. They do not create separate calendar phases or a second participant submission. Final submission and organizer verification both belong to the joint Final + Verification phase; these examples do not indicate that it is open.

T1 Coding solve

Development format example

Development format — competition_id agenthon2026-coding-dev, category api

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-coding-dev", "team_id": "team-example-0001", "track": "coding", "phase": "dev", "category": "api", "image": { "registry": "docker.io", "repository": "team-example/qfb2-solver", "digest": "sha256:9586b834b7ab2ce09dbb93d4cc00fff8da6a408f226beb1e1ffb8870165de488" }, "image_access": "public", "models": [ { "name": "example-api-model", "version": "example-model-20260401", "training_cutoff": "2026-01", "access": "api", "revision": "r1" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:e7e35488525592b766699477a2dcef48e3b87b48bb5de330a71a63e6aa2c210f" }
Final submission format example

Final submission format — competition_id agenthon2026-coding-final, category api

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-coding-final", "team_id": "team-example-0001", "track": "coding", "phase": "final", "category": "api", "image": { "registry": "docker.io", "repository": "team-example/qfb2-solver", "digest": "sha256:a17eb95d89902977aaf45034f7749935a7b4b03755b162116dd726a39c3af0ae" }, "image_access": "public", "models": [ { "name": "example-api-model", "version": "example-model-20260401", "training_cutoff": "2026-01", "access": "api", "revision": "r1" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:90d7b2cab950491c053a9ca702026d142b914dcbbb54b27df689e4aca509283b" }
Organizer verification format example

Organizer verification format — competition_id agenthon2026-coding-verification, category api

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-coding-verification", "team_id": "team-example-0001", "track": "coding", "phase": "verification", "category": "api", "image": { "registry": "docker.io", "repository": "team-example/qfb2-solver", "digest": "sha256:daa511690c1d41a1273c0811161bb5e1a3851f07a08cec07fb0f58fd33ac4a44" }, "image_access": "public", "models": [ { "name": "example-api-model", "version": "example-model-20260401", "training_cutoff": "2026-01", "access": "api", "revision": "r1" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:b815e50df42bcb51367c241ab6e1a4253b166c97a5cd16d1d186c2f0d1a3bd45" }

T2 Time-Series Forecasting forecast

Development format example

Development format — competition_id agenthon2026-forecasting-dev, category byo-small

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-forecasting-dev", "team_id": "team-example-0001", "track": "forecasting", "phase": "dev", "category": "byo-small", "image": { "registry": "docker.io", "repository": "team-example/qfb2-forecaster", "digest": "sha256:fe9dfedf678ebc67564c47c61478cff47e3c2ea96304efd5609a6fdbcd71b26a" }, "image_access": "public", "models": [ { "name": "example-local-small", "version": "example-small-20260315", "training_cutoff": "2025-12", "access": "local", "revision": "8f2c1d0e4b6a" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:62b810ebed5e0a9ad741b38ed71c85ab16464350a589a82eea020855e48d0cce" }
Final submission format example

Final submission format — competition_id agenthon2026-forecasting-final, category byo-small

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-forecasting-final", "team_id": "team-example-0001", "track": "forecasting", "phase": "final", "category": "byo-small", "image": { "registry": "docker.io", "repository": "team-example/qfb2-forecaster", "digest": "sha256:4bd33729d44f4dc44d2fabbfcf928d28503bc62fed86f68f3a5c354317f0ca02" }, "image_access": "public", "models": [ { "name": "example-local-small", "version": "example-small-20260315", "training_cutoff": "2025-12", "access": "local", "revision": "8f2c1d0e4b6a" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:46efb460377c8b8d2cc08c132e9b7ff48ad552aeff81ee54ca71eeeb4e3cd296" }
Organizer verification format example

Organizer verification format — competition_id agenthon2026-forecasting-verification, category byo-small

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-forecasting-verification", "team_id": "team-example-0001", "track": "forecasting", "phase": "verification", "category": "byo-small", "image": { "registry": "docker.io", "repository": "team-example/qfb2-forecaster", "digest": "sha256:91e49d602a005f49d244ead74602bc8bc913ba23f85142d8e96309f501d57c2e" }, "image_access": "public", "models": [ { "name": "example-local-small", "version": "example-small-20260315", "training_cutoff": "2025-12", "access": "local", "revision": "8f2c1d0e4b6a" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:8ac32ac3ce65b51c54fdba0df7f63bebd7b2bfc4061f1f407564115908b5a91b" }

T3 Simulation simulate

Development format example

Development format — competition_id agenthon2026-simulation-dev, category simulator

{ "schema_version": "1.1.0", "interface_version": "2.0", "competition_id": "agenthon2026-simulation-dev", "team_id": "team-example-0001", "track": "simulation", "phase": "dev", "category": "simulator", "image": { "registry": "docker.io", "repository": "team-example/qfb2-simulator", "digest": "sha256:f96e02c06479309df6a9ccc673e18af77a1c0ce486c055753e0d7200c667dd83" }, "image_access": "public", "models": [], "license": "Apache-2.0", "descriptor_digest": "sha256:ecfc19dddbef85bf27d67ae4c3e579b066968579806967c42a3db8655f5dcddd" }
Final submission format example

Final submission format — competition_id agenthon2026-simulation-final, category simulator

{ "schema_version": "1.1.0", "interface_version": "2.0", "competition_id": "agenthon2026-simulation-final", "team_id": "team-example-0001", "track": "simulation", "phase": "final", "category": "simulator", "image": { "registry": "docker.io", "repository": "team-example/qfb2-simulator", "digest": "sha256:2ec1a827946c2895a795e1df5fde8e1731b2041f9582048d90502b1d579ed164" }, "image_access": "public", "models": [], "license": "Apache-2.0", "descriptor_digest": "sha256:78e7debee9ddbd2da802a95c01da51cf16d551a42cb281d8fb9b3ad756a88753" }
Organizer verification format example

Organizer verification format — competition_id agenthon2026-simulation-verification, category simulator

{ "schema_version": "1.1.0", "interface_version": "2.0", "competition_id": "agenthon2026-simulation-verification", "team_id": "team-example-0001", "track": "simulation", "phase": "verification", "category": "simulator", "image": { "registry": "docker.io", "repository": "team-example/qfb2-simulator", "digest": "sha256:92ec2b0c277c740faaecf86993f574ef67a59d23af276bf28364d12765516499" }, "image_access": "public", "models": [], "license": "Apache-2.0", "descriptor_digest": "sha256:aedd58742fd0561a6c9b7a1af27cc18f8599e7e662a9437849a83673fd0f0aaa" }

T4 Explainability analyze

Development format example

Development format — competition_id agenthon2026-analysis-dev, category byo-large

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-analysis-dev", "team_id": "team-example-0001", "track": "analysis", "phase": "dev", "category": "byo-large", "image": { "registry": "docker.io", "repository": "team-example/qfb2-analyst", "digest": "sha256:c385d45d6f0db86e82c9e5b1494736f033131ba8ee491c90205d00d1a0d98fa4" }, "image_access": "public", "models": [ { "name": "example-local-large", "version": "example-large-20260220", "training_cutoff": "2025-11", "access": "local", "revision": "a1b2c3d4e5f6" }, { "name": "example-api-model", "version": "example-model-20260401", "training_cutoff": "2026-01", "access": "api", "revision": "r1" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:0dadc06734ccc808042d8e24d46338272f89168fa98559298035389216eb4103" }
Final submission format example

Final submission format — competition_id agenthon2026-analysis-final, category byo-large

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-analysis-final", "team_id": "team-example-0001", "track": "analysis", "phase": "final", "category": "byo-large", "image": { "registry": "docker.io", "repository": "team-example/qfb2-analyst", "digest": "sha256:fe3387ade0eb599e0b5a9ebc7d15d5f31cc6a92143e102d9c7d535ff95e0aeab" }, "image_access": "public", "models": [ { "name": "example-local-large", "version": "example-large-20260220", "training_cutoff": "2025-11", "access": "local", "revision": "a1b2c3d4e5f6" }, { "name": "example-api-model", "version": "example-model-20260401", "training_cutoff": "2026-01", "access": "api", "revision": "r1" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:19d743c6c95fbd38fc66415ac020248fcf8fb9f17c4a63ae8a45a9cd720c5602" }
Organizer verification format example

Organizer verification format — competition_id agenthon2026-analysis-verification, category byo-large

{ "schema_version": "1.0.0", "interface_version": "2.0", "competition_id": "agenthon2026-analysis-verification", "team_id": "team-example-0001", "track": "analysis", "phase": "verification", "category": "byo-large", "image": { "registry": "docker.io", "repository": "team-example/qfb2-analyst", "digest": "sha256:d85d77e637e873a98ab6934aa422b08d343573b949eb4c7b1365fa062eee173c" }, "image_access": "public", "models": [ { "name": "example-local-large", "version": "example-large-20260220", "training_cutoff": "2025-11", "access": "local", "revision": "a1b2c3d4e5f6" }, { "name": "example-api-model", "version": "example-model-20260401", "training_cutoff": "2026-01", "access": "api", "revision": "r1" } ], "license": "Apache-2.0", "descriptor_digest": "sha256:331fe10b36ae422db6ea64ba3747f2614f2f5f04f9dd8caf8c66a9e2c66cc9a8" }

What a failure is reported as

These are the organizers' published failure codes, rendered from the registry itself rather than paraphrased. Participant failures remain in the evaluation denominator under the track's failure rules; missing or failed outputs are not silently dropped to improve a score. An organizer or infrastructure fault is held for review rather than recorded as a participant's zero. An absent score does not automatically mean zero.

CodeStageWhat it means
no_output scoring Your container produced no output file for this unit.
malformed_output scoring Your output file could not be parsed.
schema_invalid scoring Your output parsed but did not match the published output schema.
incomplete_output scoring Your output was missing rows or fields the unit requires.
resource_timeout execution Your container did not finish within the unit's wall-clock budget.
resource_oom execution Your container exceeded its memory limit and was stopped.
container_crashed execution Your container exited abnormally before producing output.
image_unusable ingestion Your submitted image could not be pulled or started.
network_violation execution Your container attempted network access the rules do not permit.
cutoff_violation scoring Your output used information dated after the unit's as-of date.
contamination_detected scoring Your output reproduced organizer-only material.
domain_gate_failed scoring Your output was well-formed but did not pass one of this unit's published domain checks.

Help and results

Follow processing status on CodaBench. Validated Development results appear on the public leaderboards on agenthon.net, visible to everyone. Private evaluation tasks and reference answers remain confidential. Participant-facing status does not include all internal diagnostics or private evaluation logs.

If an upload is held or appears stuck, contact the organizers with the submission ID and visible status before using another attempt. See the FAQ for team verification, limits and image privacy. Never include your Team Key, credentials or verification proof in a public GitHub issue.

Where these facts come from. The descriptor table, the examples and the failure codes on this page are generated from contract fixtures vendored from the organizers' shared contract package at commit 50f644d83b6b (2026-09-16), contract set 1.1.0. The claims are tracked in data/fact-matrix.toml, and the site's checks fail if a page and the matrix disagree.

The binding documents are the Official Competition Rules, Terms of Participation, Privacy Notice and Data & Software Licensing Policy. Where a guide and the Rules differ, the Rules govern.