Skip to main content

Registries

AlphaDiana has four class registries: benchmarks, agents, sandboxes, and scorers. Configuration selects a key; Runner.setup() imports built-in modules, resolves each key, instantiates the class, and calls setup().

Registration is import-triggered, not discovered by scanning the filesystem. A new implementation normally requires no orchestration-logic change, but its module must be imported by the runner so registration executes.

Live inventory

The tables below reflect the registrations imported by Runner.setup() in the current source tree.

Benchmarks

KeyPurpose
aimeAIME math tasks
customUser-provided task data
decodingtrustDTAP security/utility tasks
gpqa_diamondGPQA Diamond
hleHumanity's Last Exam
imo_answerbenchIMO AnswerBench
mmmu_proMMMU-Pro multimodal tasks
swe_benchSWE-bench
swebench_pro_osSWE-bench Pro open-source split
terminal_bench2TerminalBench 2

Agents

The first four are generic harness families. The remaining keys are benchmark-specific adapters and should not be conflated with additional general-purpose harness families.

KeyScope
direct_llmGeneric direct provider baseline
openclawGeneric OpenClaw harness, including the DecodingTrust runtime backend
opencodeGeneric OpenCode CLI harness
zeroclawGeneric ZeroClaw CLI harness
swebench_dockerSWE-bench task-container adapter
terminal_bench2_dockerTerminalBench 2 baseline adapter
terminal_bench2_openclawTerminalBench 2 OpenClaw adapter
terminal_bench2_opencodeTerminalBench 2 OpenCode adapter
terminal_bench2_zeroclawTerminalBench 2 ZeroClaw adapter

Sandboxes

KeyScope
localRestricted local execution; not a general substitute for shell-heavy harness commands
podmanRootless Podman session
rockRemote/container sandbox through ROCK
swebench_containerTask-bound SWE-bench container
decodingtrustTask-bound DTAP environment, MCP tools, and injections

Scorers

KeyScope
exact_matchNormalized exact comparison
numericNumeric answer comparison
math_verifyMathematical equivalence verification
llm_judgeModel-based judging
imo_verifyRequired verifier for imo_answerbench
swe_benchOfficial SWE-bench evaluation adapter
swebench_proSWE-bench Pro evaluator
terminal_bench2Verifier reward scorer
decodingtrustDTAP task/attack judge adapter

Registration forms

Agents and many benchmarks call their registry directly:

AgentRegistry.register("my_agent", MyAgent)

Sandboxes and scorers commonly use decorators:

@register_sandbox("my_sandbox")
class MySandbox(Sandbox):
...

@register_scorer("my_scorer")
class MyScorer(Scorer):
...

Both forms mutate a process-local registry. Duplicate names raise instead of silently replacing an implementation.

Adding a component

  1. Implement the appropriate base class.
  2. Register a stable, lowercase config key in that module.
  3. Add the module import to the relevant import block in Runner.setup().
  4. Add validation for any cross-component constraint.
  5. Add focused registry/setup tests and one real smoke before claiming runtime support.
  6. Document the new key in the relevant inventory and runbook.

Keeping the import list explicit makes supported built-ins reviewable, but it also means a class can exist in the repository without being selectable until the import is added.