Skip to content

feat(model-bench): record rounds and call results - #301

Open
enkerewpo wants to merge 1 commit into
devfrom
feat/bench-transcripts
Open

enkerewpo wants to merge 1 commit into
devfrom
feat/bench-transcripts

Conversation

@enkerewpo

Copy link
Copy Markdown
Member

Problem

Model bench results are about to be published on Robonix Hub with a raw-data download per row, but a result file only says which calls Pilot made and whether they passed. It does not record what the model actually replied in each planning round, what each capability call returned, which Robonix and bench commits produced it, or the logs needed to check a surprising score. Reviewers on the Hub currently see arguments with no results, and an unexplained low score cannot be traced.

Changes

  • rounds per case: every planning request in order with start/end time, the model's raw reply before Pilot parses it, token usage and HTTP/stream error. Images are kept as counts only; replies above 200 KiB per case lose their oldest text with an explicit marker.
  • output and error per call: what the capability returned (decoded from the Executor leaf result) or why it failed. Image and binary payloads are replaced by their size; outputs are capped at 16 KiB with a truncation marker.
  • meta.provenance: Robonix and bench commits with dirty flags, board id and cases hash, judge model, planner model and endpoint kind (cloud/local/robot), declared serving facts for local and robot runs, OS, Python and runtime versions, and the scrubbed command line. No endpoint URL or host is recorded.
  • --bundle out.zip: writes the result JSON plus logs/ (bench output, model requests and replies, per-case CLI event streams and every component log of the run) into one deterministic zip, the format the Hub accepts for upload.
  • Scrubbing before anything enters a bundle: credentials and authorization headers, environment variable values, private IP addresses and hostnames, and home-directory paths are redacted while the rest of each line is kept.

Scoring, checks and judge.py are unchanged (scoring version 2). Result files without the new fields still load, resume and judge as before. cases.yaml and its hash are untouched, so new runs stay on the current board.

Testing

  • python3 -m unittest discover -s testing -p 'test_model_bench*.py': 51 tests pass, covering round order, call outputs and errors, image replacement, truncation, provenance allowlisting, bundle determinism, scrubbing of planted secrets and private addresses, and loading of older result files.
  • A runtime smoke run on a work machine against a local fake model produced a bundle with two planning rounds, call outputs and component logs; rebuilding from the same inputs gave identical zip bytes.

Each case result can carry the model's raw replies per planning round,
and each capability call now records what it returned (output) or why it
failed (error); images are replaced by their size and long outputs are
truncated. With --bundle, a run is written as a zip holding the result
JSON, its provenance (source commits, board, judge, serving facts,
versions) and every log of the run, with credentials, environment
values, private addresses and home paths redacted. Scoring and older
result files are unchanged.
@github-actions github-actions Bot added type:feature New feature (feat:) comp:docs docs/ and READMEs labels Oct 26, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:docs docs/ and READMEs type:feature New feature (feat:)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant