Figure 1 — AOBench System Architecture

End-to-end pipeline from specification to scored output. A Task Specification (role, query, evaluation criteria, gold trajectory) and a deterministic Environment Bundle (SLURM scheduler state, RBAC policy, telemetry snapshots) are consumed by the BenchmarkRunner, which drives a pluggable Agent Adapter through a bounded tool-call loop (at most 10 rounds) against a role-filtered Tool Registry backed by five mock HPC tool families. Each round is captured by the TraceWriter; the final Trace is evaluated across six dimensions by the AggregateScorer using profile default_hpc_v01 — a Governance hard-fail zeroes the full task score. Per-task BenchmarkResult records feed the run-level CLEAR scorecard (Efficacy, Assurance, Reliability, Cost, Latency) and downstream report artifacts. Benchmark comprises 80 tasks across 10 QCATs and 5 roles in 23 deterministic environment snapshots (59 dev / 21 test).

SPECIFICATION EXECUTION EVALUATION OUTPUT Task Specification 80 tasks · 10 QCATs · 5 roles task_id, role, qcat, difficulty query_text, eval_criteria allowed_tools, hard_fail_cond. gold_trajectory, checkpoints hybrid_scoring_config schemas/task.py · TaskSpec Environment Bundle 23 deterministic snapshots slurm_state.json rbac_policy.yaml (v1.1) telemetry/*.parquet, *.csv incident_metadata.json docs/*.md · inventory.json schemas/environment.py · EnvironmentBundle Agent Adapter pluggable LLM backends direct_qa (zero-tool baseline) openai:gpt-4o / gpt-4o-mini anthropic:claude-3-5-sonnet mcp (stdio / SSE transports) ollama (via OLLAMA_BASE_URL) adapters/base.py · BaseAdapter BenchmarkRunner run(task_id, env_id) → BenchmarkResult Execution Loop (≤ 10 tool-call rounds per adapter) LLM Agent receives task prompt + tool schemas (JSON) emits tool_call(s) receives observations emits stop → final_answer run(context: ExecutionContext) → Trace tool call observation Tool Registry role-filtered dispatch rbac_policy.yaml enforcement ✕ denied → permission_denied obs. ✕ dangerous_arg → hard_fail flag hpc_tool_catalog.yaml 16 methods across 5 families tools/registry.py · ToolRegistry Mock HPC Tools slurm telemetry docs rbac facility tools/*.py HPC Tool Families slurm (4) query_jobs, job_details, list_nodes, list_partitions telemetry (4) query_timeseries, query_node_metrics, query_memory_events, list_metrics docs (2) retrieve, list_docs rbac (3) check, list_permissions, get_allowed_tools facility (4) query_node_power, query_cluster_energy, query_rack_telemetry, list_inventory 16 methods · hpc_tool_catalog.yaml TraceWriter records each step Trace ordered steps · tool_calls · observations · final_answer · token counts AggregateScorer (profile: default_hpc_v01) Outcome weight = 0.30 exact / numeric / semantic / hybrid +HybridScorer path Tool Use weight = 0.15 selection · args sequence · penalty BFCL-decomposed Grounding weight = 0.10 answer ∩ observation token overlap HPC entity matching Governance weight = 0.20 RBAC violations hard_fail → score = 0 violation_vector (6 flags) Efficiency weight = 0.05 step count ≤5→1.0, ≥20→0.0 linear interpolation Workflow weight = 0.10 DAG structure matching WorfEval scoring scorers/workflow_scorer.py BenchmarkResult dimension_scores (6 dims) aggregate_score ∈ [0, 1] hard_fail · cup_score violation_vector (6 flags) cost_usd · latency_s · tokens schemas/result.py — per task run CLEAR Scorecard E — Efficacy (mean outcome or s_partial) A — Assurance (rbac_compliant rate) R — Reliability (pass^k, k∈{1,2,4,8}) C — Cost (min-max, inverted) L — Latency (min-max, inverted) reports/clear_report.py — per run Report Artifacts JSON run summary HTML self-contained report Role × QCAT slice breakdown Langfuse trace export Leaderboard submission reports/ · exporters/ · leaderboard/