Skip to content

Leaderboard Update

Overview

The leaderboard_update node updates one or more leaderboard entries after a battle or evaluation run completes, writing score deltas, rank changes, and metadata to the configured leaderboard store. It accepts a scored result payload from upstream nodes (such as a judge or aggregator) and emits the updated entry on success or routes to an error port on write failure. Use this node at the end of a scoring pipeline to persist results before triggering downstream notifications or series progression. The node is idempotent when given the same execution_id, making it safe to retry on transient failures.

Configuration

FieldTypeRequiredDescription
leaderboard_idstringYesUUID of the target leaderboard to update. Must reference an existing leaderboard record.
score_fieldstringYesDot-path into the input payload that holds the numeric score (e.g. result.score or judge.final_score).
contender_fieldstringYesDot-path into the input payload that identifies the contender (lenser handle or UUID) being scored.
update_strategyenumYesHow to apply the incoming score: replace overwrites the current score, increment adds to it, best_of keeps the higher value.
include_metadata_fieldsstringNoComma-separated dot-paths from the input payload to copy into the leaderboard entry's metadata column (e.g. judge.reasoning,battle.id).
emit_rank_changebooleanNoWhen true, the output payload includes rank_before and rank_after fields. Defaults to false.

Inputs

PortTypeDescription
inputobjectScored result payload from an upstream judge, aggregator, or battle-completion node. Must contain the fields referenced by score_field and contender_field.
battle_contextobjectOptional supplemental context (battle ID, series ID, round number) merged into the leaderboard entry's metadata when include_metadata_fields is configured.

Outputs

PortTypeDescription
outputobjectThe updated leaderboard entry, including contender_id, score, rank, and any requested metadata fields.
errorobjectEmitted when the write fails (e.g. leaderboard not found, constraint violation, or network timeout). Contains code and message fields.

Example

json
{
  "nodeType": "leaderboard_update",
  "config": {
    "leaderboard_id": "b3f2a1d0-84c7-4e5a-9f10-cc2e7a3d55b2",
    "score_field": "judge.final_score",
    "contender_field": "battle.winner_id",
    "update_strategy": "best_of",
    "emit_rank_change": true
  }
}