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.