@playerthree/bench

@playerthree/bench: benchmark series for PlayerThree games — bench configs, the headless match host, the reference series runner, guardrails and benchmark campaigns. CLI: playerthree-bench.

Interfaces

BenchConfig

Defined in: packages/bench/src/config.ts:20

Private execution configuration. Only spec is persisted/exported; never provider endpoints or credentials.

Properties

PropertyTypeDescriptionDefined in
definition| GameDefinition<AnyManifest> | DefinitionModule-packages/bench/src/config.ts:21
guardrails?readonly Guardrail[]-packages/bench/src/config.ts:29
models?Readonly<Record<string, BenchModel>>By entrant id.packages/bench/src/config.ts:24
policies?Readonly<Record<string, Readonly<Record<string, PolicyArtifact>>>>By entrant id, then role.packages/bench/src/config.ts:26
resolve?(spec) => | MatchSpec | Promise<MatchSpec>Game hook freezes actual defaults, map identity and canonical rulesHash. Required for games with matchOptions.packages/bench/src/config.ts:28
specSeriesSpec-packages/bench/src/config.ts:22

BenchModel

Defined in: packages/bench/src/config.ts:10

An LLM entrant's provider and model. The key is read from env apiKeyEnv (default OPENAI_API_KEY / ANTHROPIC_API_KEY); scripted replays script without a provider.

Properties

PropertyTypeDescriptionDefined in
apiKeyEnv?string-packages/bench/src/config.ts:13
baseUrl?string-packages/bench/src/config.ts:14
modelstring-packages/bench/src/config.ts:12
price?PriceUSD per million tokens; defaults to the runner's price table. Required when the spec caps maxCostUsd and the model is not priced.packages/bench/src/config.ts:16
provider"openai" | "anthropic" | "scripted"-packages/bench/src/config.ts:11
script?readonly Turn[]-packages/bench/src/config.ts:17

DefinitionModule

Defined in: packages/bench/src/bots-config.ts:5

A game definition loaded by dynamic import: module is an absolute file: URL, export the export name (default default).

Properties

PropertyTypeDefined in
export?stringpackages/bench/src/bots-config.ts:5
modulestringpackages/bench/src/bots-config.ts:5

Guardrail

Defined in: packages/bench/src/bots-config.ts:10

A pass/fail check over a series: metric (ticks, truncated, outcome.win|loss|draw or a game metric) per accepted match, optionally of one scenario, at scope, aggregated and compared with threshold.

Extended by

Properties

PropertyTypeDefined in
aggregation"min" | "max" | "mean" | "median" | "sum" | "binomialTwoSided"packages/bench/src/bots-config.ts:15
comparator"<" | "<=" | ">" | ">=" | "==" | "!=" | "between"packages/bench/src/bots-config.ts:16
idstringpackages/bench/src/bots-config.ts:11
metricstringpackages/bench/src/bots-config.ts:13
scenario?stringpackages/bench/src/bots-config.ts:12
scope"match" | `entrant:${string}` | `team:${string}`packages/bench/src/bots-config.ts:14
thresholdnumber | readonly [number, number]packages/bench/src/bots-config.ts:17

GuardrailResult

Defined in: packages/bench/src/guardrails.ts:6

A guardrail's verdict. value is the aggregate (the p-value for binomialTwoSided), or null with a reason when it cannot be computed.

Extends

Properties

PropertyTypeInherited fromDefined in
aggregation"min" | "max" | "mean" | "median" | "sum" | "binomialTwoSided"Guardrail.aggregationpackages/bench/src/bots-config.ts:15
comparator"<" | "<=" | ">" | ">=" | "==" | "!=" | "between"Guardrail.comparatorpackages/bench/src/bots-config.ts:16
idstringGuardrail.idpackages/bench/src/bots-config.ts:11
metricstringGuardrail.metricpackages/bench/src/bots-config.ts:13
passedboolean-packages/bench/src/guardrails.ts:9
reason?string-packages/bench/src/guardrails.ts:10
samplesnumber-packages/bench/src/guardrails.ts:8
scenario?stringGuardrail.scenariopackages/bench/src/bots-config.ts:12
scope"match" | `entrant:${string}` | `team:${string}`Guardrail.scopepackages/bench/src/bots-config.ts:14
thresholdnumber | readonly [number, number]Guardrail.thresholdpackages/bench/src/bots-config.ts:17
valuenumber | null-packages/bench/src/guardrails.ts:7

RunBenchOptions

Defined in: packages/bench/src/run.ts:12

outDir receives the store and the exports; owner names the series owner (default benchmark_owner); aborting signal aborts the series.

Properties

PropertyTypeDefined in
onProgress?(completed, total) => voidpackages/bench/src/run.ts:12
outDirstringpackages/bench/src/run.ts:12
owner?stringpackages/bench/src/run.ts:12
signal?AbortSignalpackages/bench/src/run.ts:12

Functions

binomialTwoSided()

function binomialTwoSided(wins, total): number;

Defined in: packages/bench/src/guardrails.ts:14

Exact two-sided fair-coin tail, accumulated in log space to avoid underflow at large n.

Parameters

ParameterType
winsnumber
totalnumber

Returns

number


createGameMatchHost()

function createGameMatchHost(definition, config): object;

Defined in: packages/bench/src/bot-match.ts:189

Headless GameDefinition adapter. Scheduling, retries, storage and ratings belong exclusively to SeriesRunner.

Parameters

ParameterType
definitionGameDefinition
configBenchConfig

Returns

object

NameTypeDefined in
binderSeatBinderpackages/bench/src/bot-match.ts:189
hostGameMatchHostpackages/bench/src/bot-match.ts:189
author()(candidateId, signal?) => Promise<AuthoredPolicies>packages/bench/src/bot-match.ts:189
close()() => Promise<void>packages/bench/src/bot-match.ts:189

evaluateGuardrails()

function evaluateGuardrails(results, guardrails): GuardrailResult[];

Defined in: packages/bench/src/guardrails.ts:28

Evaluates each guardrail; a guardrail that lacks any sample fails.

Parameters

ParameterType
resultsResultsEnvelope
guardrailsreadonly Guardrail[]

Returns

GuardrailResult[]


loadBenchConfig()

function loadBenchConfig(file): Promise<BenchConfig | readonly BenchConfig[]>;

Defined in: packages/bench/src/config.ts:71

Imports the config module at file (trusted operator code; Node runs TypeScript directly) and validates its default export: one config or a nonempty list.

Parameters

ParameterType
filestring

Returns

Promise<BenchConfig | readonly BenchConfig[]>


loadDefinition()

function loadDefinition(ref): Promise<GameDefinition<AnyManifest>>;

Defined in: packages/bench/src/bots-config.ts:37

Returns an inline definition as is, or imports a DefinitionModule and checks its export is a game definition.

Parameters

Returns

Promise<GameDefinition<AnyManifest>>


runBench()

function runBench(config, options): Promise<ResultsEnvelope>;

Defined in: packages/bench/src/run.ts:15

All tracks use the same accepted schedule, lifecycle, durable store and export service; returns the full canonical download.

Parameters

ParameterType
configBenchConfig
optionsRunBenchOptions

Returns

Promise<ResultsEnvelope>


snapshotMetrics()

function snapshotMetrics(raw, teams): GameMetrics;

Defined in: packages/bench/src/bot-match.ts:27

Validates and copies a game's metrics snapshot: plain maps of bounded keys and finite numbers, known teams only, at most 1 MiB of JSON.

Parameters

ParameterType
rawGameMetrics
teamsreadonly string[]

Returns

GameMetrics


validateConfig()

function validateConfig(config, definition?): void;

Defined in: packages/bench/src/config.ts:33

Throws playerthree-bench: … on an invalid config. With definition, also checks the pinned surfaceHash and policy roles against the game.

Parameters

ParameterType
configBenchConfig
definition?GameDefinition<AnyManifest>

Returns

void

References

benchmarkSourceDigest

Re-exports benchmarkSourceDigest


BenchmarkSources

Re-exports BenchmarkSources


BenchmarkSuiteMetadata

Re-exports BenchmarkSuiteMetadata


BoundSeat

Re-exports BoundSeat


CampaignAttempt

Re-exports CampaignAttempt


CampaignConfig

Re-exports CampaignConfig


CampaignOptions

Re-exports CampaignOptions


CampaignRecord

Re-exports CampaignRecord


ClosableSeriesRunner

Re-exports ClosableSeriesRunner


createBenchmarkSuite

Re-exports createBenchmarkSuite


createSeriesRunner

Re-exports createSeriesRunner


DEFAULT_SERIES_LIMITS

Re-exports DEFAULT_SERIES_LIMITS


exportCampaignPublication

Re-exports exportCampaignPublication


GameMatchHost

Re-exports GameMatchHost


GameMatchResult

Re-exports GameMatchResult


MatchExecution

Re-exports MatchExecution


MatchSpec

Re-exports MatchSpec


recoverSeriesRunner

Re-exports recoverSeriesRunner


ResultsEnvelope

Re-exports ResultsEnvelope


runCampaign

Re-exports runCampaign


SeatBinder

Re-exports SeatBinder


SeriesRunnerOptions

Re-exports SeriesRunnerOptions


SeriesSpec

Re-exports SeriesSpec