playerthree/results
playerthree/results: canonical series results (SPEC §20.10, §20.11) — export projections that drop private
references, bounded-memory canonical JSON/CSV exports and live summaries — plus the re-exported arena schemas,
ratings and commander-log verification.
Interfaces
RatedLineup
Defined in: packages/playerthree/src/ratings.ts:114
One side of a rated match: its members (one TrueSkill team), its placement and optional partial-play weights.
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
ids | readonly string[] | - | packages/playerthree/src/ratings.ts:115 |
rank | number | - | packages/playerthree/src/ratings.ts:116 |
weights? | readonly number[] | Per member, in (0, 1]: the share of the side it played (e.g. plane share); default 1. | packages/playerthree/src/ratings.ts:118 |
ScoreBlock
Defined in: packages/playerthree/src/ratings.ts:46
One seed block of an entrant's games: wins, score (win 1, draw 0.5) and game count.
Properties
| Property | Type | Defined in |
|---|---|---|
games | number | packages/playerthree/src/ratings.ts:50 |
key | string | packages/playerthree/src/ratings.ts:47 |
score | number | packages/playerthree/src/ratings.ts:49 |
wins | number | packages/playerthree/src/ratings.ts:48 |
SkillRating
Defined in: packages/playerthree/src/ratings.ts:108
Properties
| Property | Type | Defined in |
|---|---|---|
mu | number | packages/playerthree/src/ratings.ts:109 |
sigma | number | packages/playerthree/src/ratings.ts:110 |
TrueSkillParameters
Defined in: packages/playerthree/src/ratings.ts:100
TrueSkill parameters (ts-trueskill 5.1.0).
Properties
| Property | Type | Defined in |
|---|---|---|
beta | number | packages/playerthree/src/ratings.ts:103 |
drawProbability | number | packages/playerthree/src/ratings.ts:105 |
mu | number | packages/playerthree/src/ratings.ts:101 |
sigma | number | packages/playerthree/src/ratings.ts:102 |
tau | number | packages/playerthree/src/ratings.ts:104 |
Variables
ACTIVE_MATCH_SCHEMA
const ACTIVE_MATCH_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:112
ARENA_HOST_EVENT_DEFINITIONS
const ARENA_HOST_EVENT_DEFINITIONS: readonly EventDefinition[];Defined in: packages/playerthree/src/arena-schema.ts:73
EXPORT_MATCH_SPEC_SCHEMA
const EXPORT_MATCH_SPEC_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:68
EXPORT_SERIES_SPEC_SCHEMA
const EXPORT_SERIES_SPEC_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:88
MATCH_SPEC_SCHEMA
const MATCH_SPEC_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:67
RESULT_COLUMNS
const RESULT_COLUMNS: object;Defined in: packages/playerthree/src/results.ts:23
Column order is part of the version-1 CSV contract; JSON uses canonical sorted object keys.
Type Declaration
| Name | Type | Defined in |
|---|---|---|
artifacts | readonly ["id", "matchId", "kind", "format", "version", "sha256", "bytes", "availability", "releaseAt", "expiresAt"] | packages/playerthree/src/results.ts:35 |
causes | readonly ["matchId", "sequence", "tick", "victimTeam", "victimRole", "victimKind", "attackerTeam", "attackerRole", "attackerKind", "cause", "count", "alloyValue", "energyValue"] | packages/playerthree/src/results.ts:29 |
decisions | readonly ["matchId", "team", "role", "decisionId", "startedAt", "finishedAt", "latencyMs", "source", "status"] | packages/playerthree/src/results.ts:31 |
entrants | readonly ["entrantId", "kind", "label", "aiPlayer", "provider", "model", "selfReported", "harness", "harnessVerified", "scaffoldVersion", "artifactHash", "botVersion", "botLevel", "botOptions", "stateResetSource"] | packages/playerthree/src/results.ts:24 |
events | readonly ["matchId", "sequence", "tick", "atMs", "kind", "team", "role", "data"] | packages/playerthree/src/results.ts:33 |
intents | readonly ["matchId", "team", "role", "source", "code", "submitted", "accepted", "rejected"] | packages/playerthree/src/results.ts:30 |
matches | readonly ["matchId", "trialId", "attemptId", "attemptNumber", "revision", "status", "acceptedAttempt", "startedAt", "endedAt", "ticks", "simulatedMs", "wallMs", "terminalReason", "outcomes", "spec", "releaseAt"] | packages/playerthree/src/results.ts:26 |
metrics | readonly ["matchId", "tick", "sequence", "scope", "team", "role", "metric", "value", "unit"] | packages/playerthree/src/results.ts:28 |
schedule | readonly ["trialId", "scenarioId", "permutationId", "repetition", "scheduleIndex", "seed", "mapId", "mapIdentity", "mapSeed", "layoutId", "rulesHash", "surfaceHash", "resolvedOptions", "sideBindings"] | packages/playerthree/src/results.ts:25 |
seats | readonly ["matchId", "team", "role", "entrantId", "executionKind", "fallbackKind", "artifactVersion", "artifactHash", "readyState", "activeTicks", "submittedIntents", "acceptedIntents", "rejectedIntents", "commandApm", "policyErrors"] | packages/playerthree/src/results.ts:27 |
standings | readonly ["entrantId", "wins", "losses", "draws", "games", "winRate", "scoreRate", "rating", "mu", "sigma", "conservativeRating", "ratingParameters", "ratingImplementation", "provisional", "averageSimulatedMs", "averageWallMs", "confidence"] | packages/playerthree/src/results.ts:34 |
usage | readonly ["matchId", "phase", "team", "role", "entrantId", "executionId", "decisionId", "reporter", "inputTokens", "outputTokens", "cacheReadTokens", "cacheWriteTokens", "costAmount", "currency", "pricingVersion", "coverage"] | packages/playerthree/src/results.ts:32 |
RESULT_ROW_SCHEMAS
const RESULT_ROW_SCHEMAS: object;Defined in: packages/playerthree/src/arena-schema.ts:96
Type Declaration
RESULTS_ENVELOPE_SCHEMA
const RESULTS_ENVELOPE_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:123
RESULTS_SUMMARY_SCHEMA
const RESULTS_SUMMARY_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:125
SERIES_SPEC_SCHEMA
const SERIES_SPEC_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:86
SERIES_UPDATE_SCHEMA
const SERIES_UPDATE_SCHEMA: ArenaJsonSchema;Defined in: packages/playerthree/src/arena-schema.ts:113
Functions
blockBootstrap()
function blockBootstrap(blocks): object;Defined in: packages/playerthree/src/ratings.ts:58
Deterministic percentile bootstrap (32-bit LCG seed BOOTSTRAP_SEED, 2000 replicates, 95%) over whole blocks, never
individual games: win-rate and score-rate intervals, or null for fewer than two blocks (a single seed cannot identify
between-seed uncertainty). Blocks are resampled in key order, so the result is independent of input order.
Parameters
| Parameter | Type |
|---|---|
blocks | readonly ScoreBlock[] |
Returns
object
| Name | Type | Defined in |
|---|---|---|
scoreRate | [number, number] | null | packages/playerthree/src/ratings.ts:58 |
winRate | [number, number] | null | packages/playerthree/src/ratings.ts:58 |
buildResultsSummary()
function buildResultsSummary(
record,
iterate,
revision?,
policy?,
now?
): Promise<ResultsSummary>;Defined in: packages/playerthree/src/results.ts:571
Bounded live view of a committed (and, when shared, released) revision. Bounded metadata tables are complete;
each raw table keeps at most 2000 rows — metrics evenly strided per (match, scope, side, seat, metric) series,
other tables as their canonical prefix — and sampling labels every table. Accounting, latency quantiles, usage
totals, completeness and retention are exact over all rows. The shared projection is the export's.
Parameters
| Parameter | Type |
|---|---|
record | StoredSeries |
iterate | () => AsyncIterable<StoredResultChunk> |
revision? | number |
policy? | SharePolicy |
now? | number |
Returns
Promise<ResultsSummary>
commanderPublicId()
function commanderPublicId(game, commanderId): string;Defined in: packages/playerthree/src/commander-log-integrity.ts:12
Public, non-reversible id of a commander (its private id is a random UUID).
Parameters
| Parameter | Type |
|---|---|
game | string |
commanderId | string |
Returns
string
csvCell()
function csvCell(value): string;Defined in: packages/playerthree/src/results.ts:666
RFC 4180; null is \N, literal leading backslash is doubled, formula/apostrophe strings gain one apostrophe.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
Returns
string
effectiveVerdict()
function effectiveVerdict(entry, rows): CommanderLogVerdict;Defined in: packages/playerthree/src/commander-log-integrity.ts:114
The entry's effective verdict: its own, or the newest later verdict row for it.
Parameters
| Parameter | Type |
|---|---|
entry | CommanderLogEntry |
rows | readonly CommanderLogVerdictRow[] |
Returns
entryDigest()
function entryDigest(entry): string;Defined in: packages/playerthree/src/commander-log-integrity.ts:32
SHA-256 hex of the canonical entry without digest and sig (it covers prevDigest: the chain).
Parameters
| Parameter | Type |
|---|---|
entry | Omit<CommanderLogEntry, "digest" | "sig"> & Partial<Pick<CommanderLogEntry, "digest" | "sig">> |
Returns
string
exportMatchSpec()
function exportMatchSpec(spec): ExportMatchSpec;Defined in: packages/playerthree/src/results.ts:141
Never copy owner/member/commander references into even the owner's downloadable raw dataset.
Parameters
| Parameter | Type |
|---|---|
spec | | MatchSpec | ExportMatchSpec |
Returns
exportSeriesSpec()
function exportSeriesSpec(spec): ExportSeriesSpec;Defined in: packages/playerthree/src/results.ts:158
The public projection of a SeriesSpec: private occupant, owner and commander references removed (as in exportMatchSpec).
Parameters
| Parameter | Type |
|---|---|
spec | SeriesSpec |
Returns
exportStoredResults()
function exportStoredResults(
record,
iterate,
format,
revision?,
policy?,
now?
): AsyncIterable<Uint8Array<ArrayBufferLike>>;Defined in: packages/playerthree/src/results.ts:634
Streams the complete playerthree.results v1 download of a committed revision with bounded memory: the canonical
JSON envelope (identical bytes to canonicalJson(envelope)), or the CSV ZIP of one RFC-4180 table per file plus
schema.json, spec.json and manifest.json. Rows are ordered by an external merge sort whose temporary run files
live in a private os.tmpdir() directory that is removed when the stream ends, fails or is abandoned.
Parameters
| Parameter | Type |
|---|---|
record | StoredSeries |
iterate | () => AsyncIterable<StoredResultChunk> |
format | "json" | "csv" |
revision? | number |
policy? | SharePolicy |
now? | number |
Returns
AsyncIterable<Uint8Array<ArrayBufferLike>>
parseResultsSigner()
function parseResultsSigner(text): ResultsSigner;Defined in: packages/playerthree/src/commander-log-integrity.ts:46
An Ed25519 private key as PKCS#8 PEM, or base64/base64url PKCS#8 DER (single-line secrets).
Parameters
| Parameter | Type |
|---|---|
text | string |
Returns
rateMatch()
function rateMatch(
env,
lineups,
ratings,
weight?
): Map<string, SkillRating>;Defined in: packages/playerthree/src/ratings.ts:129
One TrueSkill update (the factor graph of ts-trueskill 5.1.0, convergence delta 0.0001). Each lineup is a team
(allies together), ranked by rank; weights are partial-play weights. Unknown ids start at env.mu/env.sigma.
The match weight weight ∈ [0, 1] blends each member's update: μ' = μ + w(μ_new − μ), σ'² = σ² + w(σ_new² − σ²);
1 is the plain update (exactly), 0 changes nothing. Returns the members' new ratings.
Parameters
| Parameter | Type | Default value |
|---|---|---|
env | TrueSkillParameters | undefined |
lineups | readonly RatedLineup[] | undefined |
ratings | ReadonlyMap<string, SkillRating> | undefined |
weight? | number | 1 |
Returns
Map<string, SkillRating>
resultsDigest()
function resultsDigest(envelope): string;Defined in: packages/playerthree/src/results.ts:659
SHA-256 over the exact canonical UTF-8 JSON download, including format/version/revision.
Parameters
| Parameter | Type |
|---|---|
envelope | ResultsEnvelope |
Returns
string
resultsKeyId()
function resultsKeyId(publicKey): string;Defined in: packages/playerthree/src/commander-log-integrity.ts:41
k_ + the first 16 hex of SHA-256 over the SPKI DER public key.
Parameters
| Parameter | Type |
|---|---|
publicKey | KeyObject |
Returns
string
resultsPublicKey()
function resultsPublicKey(
signer,
from,
until?
): ResultsKey;Defined in: packages/playerthree/src/commander-log-integrity.ts:61
The published form of a signer's public key.
Parameters
| Parameter | Type | Default value |
|---|---|---|
signer | ResultsSigner | undefined |
from | number | undefined |
until? | number | null | null |
Returns
sealedDigest()
function sealedDigest(sealed): string;Defined in: packages/playerthree/src/commander-log-integrity.ts:21
SHA-256 hex of the canonical sealed part: the commitment an entry carries as sealed.
Parameters
| Parameter | Type |
|---|---|
sealed | CommanderLogSealed |
Returns
string
serializeResultsCsv()
function serializeResultsCsv(envelope): ReadonlyMap<string, string>;Defined in: packages/playerthree/src/results.ts:701
CSV files of an already materialised (small) envelope for CLI report writers; same serializer as the streamed ZIP.
Parameters
| Parameter | Type |
|---|---|
envelope | ResultsEnvelope |
Returns
ReadonlyMap<string, string>
standings()
function standings(
spec,
trials,
attempts
): StandingRow[];Defined in: packages/playerthree/src/ratings.ts:159
Recompute after each committed match in canonical schedule order, not worker completion order.
Parameters
| Parameter | Type |
|---|---|
spec | SeriesSpec |
trials | readonly TrialRow[] |
attempts | readonly MatchRow[] |
Returns
validateMatchSpec()
function validateMatchSpec(value): MatchSpec;Defined in: packages/playerthree/src/arena-schema.ts:192
Throws with a schema path (never the input) unless value is a valid MatchSpec.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
Returns
validateResultRows()
function validateResultRows(value): asserts value is Partial<ResultRows>;Defined in: packages/playerthree/src/arena-schema.ts:198
Validate recorder table columns before persistence; metadata payload semantics are additionally game-schema validated.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
Returns
asserts value is Partial<ResultRows>
validateResultsEnvelope()
function validateResultsEnvelope(value): ResultsEnvelope;Defined in: packages/playerthree/src/arena-schema.ts:194
Throws with a schema path (never the input) unless value is a valid playerthree.results envelope.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
Returns
validateResultsSummary()
function validateResultsSummary(value): ResultsSummary;Defined in: packages/playerthree/src/arena-schema.ts:196
Throws with a schema path (never the input) unless value is a valid playerthree.results.summary.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
Returns
validateSeriesSpec()
function validateSeriesSpec(value): SeriesSpec;Defined in: packages/playerthree/src/arena-schema.ts:185
Throws (schema path only) unless value is a valid SeriesSpec with bounded, self-contained event schemas.
Parameters
| Parameter | Type |
|---|---|
value | unknown |
Returns
validateTelemetryRows()
function validateTelemetryRows(rows, telemetry): void;Defined in: packages/playerthree/src/arena-schema.ts:225
Checks recorder rows against the series' declared metric identities/scopes and event kinds and data schemas.
Parameters
| Parameter | Type |
|---|---|
rows | Partial<ResultRows> |
telemetry | { commentaryConsents?: readonly object[]; eventDefinitions?: readonly EventDefinition[]; includeCommentary: boolean; metricDefinitions?: readonly MetricDefinition[]; sampleEveryTicks: number; } |
telemetry.commentaryConsents? | readonly object[] |
telemetry.eventDefinitions? | readonly EventDefinition[] |
telemetry.includeCommentary | boolean |
telemetry.metricDefinitions? | readonly MetricDefinition[] |
telemetry.sampleEveryTicks | number |
Returns
void
verifyCommanderLog()
function verifyCommanderLog(
entries,
keys,
sealed?
): CommanderLogCheck;Defined in: packages/playerthree/src/commander-log-integrity.ts:89
Verify one commander's entries, given in seq order (a contiguous segment of its chain; a full log starts at seq 1
with a null prevDigest): format, digest, chain links, and the Ed25519 signature under a key valid at the entry's
endedAt. sealed (optional, same order): owner copies whose commitments must match; null = tombstoned.
Parameters
| Parameter | Type |
|---|---|
entries | readonly CommanderLogEntry[] |
keys | readonly ResultsKey[] |
sealed? | readonly (CommanderLogSealed | null)[] |
Returns
CommanderLogCheck
verifyVerdictRow()
function verifyVerdictRow(row, keys): boolean;Defined in: packages/playerthree/src/commander-log-integrity.ts:108
A verdict row's signature under a key valid at its at.
Parameters
| Parameter | Type |
|---|---|
row | CommanderLogVerdictRow |
keys | readonly ResultsKey[] |
Returns
boolean
References
COMMANDER_LOG_FORMAT
Re-exports COMMANDER_LOG_FORMAT
COMMANDER_LOG_VERSION
Re-exports COMMANDER_LOG_VERSION
CommanderLogAssist
Re-exports CommanderLogAssist
CommanderLogDisposition
Re-exports CommanderLogDisposition
CommanderLogEntry
Re-exports CommanderLogEntry
CommanderLogHead
Re-exports CommanderLogHead
CommanderLogOutcome
Re-exports CommanderLogOutcome
CommanderLogSealed
Re-exports CommanderLogSealed
CommanderLogSeatRef
Re-exports CommanderLogSeatRef
CommanderLogStore
Re-exports CommanderLogStore
CommanderLogUsage
Re-exports CommanderLogUsage
CommanderLogVerdict
Re-exports CommanderLogVerdict
CommanderLogVerdictRow
Re-exports CommanderLogVerdictRow
compareLogEntries
Re-exports compareLogEntries
ExportMatchSpec
Re-exports ExportMatchSpec
ExportSeriesSpec
Re-exports ExportSeriesSpec
ResultsEnvelope
Re-exports ResultsEnvelope
ResultsKey
Re-exports ResultsKey
ResultsSigner
Re-exports ResultsSigner
ResultsSummary
Re-exports ResultsSummary
StandingRow
Re-exports StandingRow
StoredCommanderLogEntry
Re-exports StoredCommanderLogEntry
StoredResultChunk
Re-exports StoredResultChunk
UNRATED
Re-exports UNRATED
