Skip to content
Back to skills

Evaluation And Logs

ASecurity

"Inspect AlpaSim ASL rollouts, extract camera streams, evaluate and

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
devopspythonrustgodockerapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill evaluation-and-logs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Evaluation And Logs?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Evaluation And Logs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-evaluation-and-logs/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-evaluation-and-logs)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: evaluation-and-logs
description: "Inspect AlpaSim ASL rollouts, extract camera streams, evaluate and
  aggregate metrics, re-evaluate completed runs, render diagnostic videos, and
  analyze trajectories, maps, and geometry without producing new simulations."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Evaluation and logs

Use this sub-skill when the task starts with an existing AlpaSim run, `.asl` log,
rollout directory, metrics parquet, evaluation configuration, trajectory, map,
or diagnostic video. It is for reading, scoring, aggregating, and explaining
outputs—not for starting the simulator or fixing controller, physics, traffic,
renderer, or deployment services.

## Route first

- **Runtime production, replay service orchestration, daemon health, or timing
  failures:** route to `runtime-services`.
- **Wizard setup, scene/model acquisition, Docker/Slurm deployment, or run
  creation:** route to `simulation-wizard`.
- **Driver policy/model implementation:** route to `drivers-and-plugins`.
- **Controller, physics, or traffic implementation:** route to
  `control-physics-traffic`.
- **Proto compilation, generated stubs, or contributor tooling:** route to
  `grpc-and-developer-tools`.

Keep this sub-skill for the evidence and post-run analysis boundary.

## Choose the smallest workflow

1. Identify the run root and whether it is a single job or an array-job parent.
   A single job has `eval-config.yaml` at its root; an array parent has child
   job directories containing that file. Confirm `wizard-config.yaml` is
   present before using automatic re-evaluation.
2. Locate complete rollouts under `rollouts/<scene-or-clip-id>/<rollout-id>/`.
   Treat a rollout as complete only when its `_complete` marker exists. Expect
   `rollout.asl`, optional `metrics.parquet`, and optional `.mp4` files there.
3. For a quick log diagnosis, read the [ASL format reference](references/asl-format.md)
   and use the bundled `scripts/print_asl.py`. Start with `--just-types`, a
   narrow `--start/--end` range, and selected
   `--message-types`; payloads containing images or video-model bytes are
   redacted before printing. Use `--strict` when truncation must fail loudly.
4. For camera inspection, use `scripts/asl_to_frames.py` with a quoted recursive
   glob. Choose `--format frames` for bounded file inspection or `--format mp4`
   when ffmpeg/imageio is available. Keep `--max-files` and
   `--max-concurrency` bounded for large run trees.
5. For post-evaluation, run the documented module form in
   [evaluation workflows](references/evaluation-workflows.md). Read
   [geometry and utilities](references/geometry-and-utilities.md) before
   comparing trajectories or maps. Evaluation
   requires the resolved YAML, complete ASLs, and a matching USDZ glob when
   map-backed metrics or videos are enabled. It writes per-rollout parquet
   beside each ASL.
6. Aggregate only after all intended jobs have metrics. The aggregation step
   discovers `rollouts/**/metrics.parquet`, writes the aggregate tree, and may
   create relative video links. For a prior run, prefer `python -m eval.reeval`
   or the equivalent installed re-evaluation command; never submit scheduler
   work from this sub-skill without an explicit user request.

## Read the data correctly

- ASL is a big-endian, four-byte size-delimited protobuf stream of `LogEntry`
  messages. The first meaningful message should be `rollout_metadata`; actor
  poses are timestamped and include `EGO`. Requests/returns, camera images,
  routes, and traffic predictions are additional evidence.
- Use timestamps (`timestamp_us`) rather than list positions when correlating
  poses, plans, camera frames, and metrics. `async_read_pb_log()` is tolerant
  by default: a short final frame logs a warning and stops. Set
  `raise_on_malformed=True` for diagnosis or validation.
- Evaluation loads ASL through `load_scenario_eval_input_from_asl()`, then
  `ScenarioEvaluator(EvalConfig).evaluate(...)` returns per-timestep
  `MetricReturn` values, aggregated values, and a Polars metrics dataframe.
  Missing rollout metadata, actor definitions, ground truth, or required
  response/camera data can make a metric unavailable or the input invalid.
- Map-dependent offroad and video analysis need a discoverable USDZ artifact
  and compatible map data. Without a vector map, aggregation supplies an
  `offroad=0.0` fallback and records a warning; do not interpret that as proof
  that offroad was measured.

## Interpret outputs

Use [metrics and videos](references/metrics-and-videos.md) for the complete
metric and output contract. In short: per-rollout metrics live next to the ASL;
`aggregate/metrics_results.txt`, `metrics_results.parquet`,
`metrics_unprocessed.parquet`, `results-summary.json`, and
`metrics_results.png` summarize a run. Videos are named from clip, rollout,
camera, and layout identifiers and are organized under `aggregate/videos/`.
Inspect the raw parquet and the modifiers recorded in the text summary before
comparing runs.

## Programmatic analysis

- Use `alpasim_utils.logs.read_trajectory()` for a scene name plus the EGO
  trajectory extracted from actor-pose messages. It returns `None` when there
  are no usable actor poses or no metadata scene id.
- Use `alpasim_utils.geometry` for gRPC conversion, `Pose`, `Polyline`, and
  timestamped `Trajectory`. Internally, quaternion arrays are `(x, y, z, w)`;
  gRPC fields are addressed as `(w, x, y, z)`. Preserve the rig-to-AABB-center
  transform from rollout metadata before comparing map or vehicle geometry.
- Use `Trajectory.interpolate_pose()` only inside its time range (a one-pose
  trajectory accepts its exact timestamp); sort or validate timestamps before
  constructing trajectories. Use Shapely objects for 2-D intersections and
  distances, and state when z is intentionally ignored.
- Treat the Rust-backed `utils_rs` types as an optional native boundary: verify
  that the extension and generated protobufs import before relying on geometry
  helpers. The Python evaluation path is not a substitute for a missing map,
  renderer, ffmpeg, or model asset.

## Safe checks and failure recovery

Run `python -m ... --help`, import checks, and bounded fixture checks before a
large evaluation. Do not run the original checkout's setup, asset download,
Docker build, Slurm submission, or credentialed model acquisition from here.
Use [troubleshooting](references/troubleshooting.md) for install/import,
optional backend, data/config, CLI/API, and workflow failures. When evidence
is incomplete, report the exact missing message, asset, marker, config field,
or backend rather than filling in a metric or claiming a successful run.

## Bundled helpers

- `scripts/print_asl.py`: bounded, redacted protobuf inspection; safe and
  read-only.
- `scripts/asl_to_frames.py`: bounded extraction to images or MP4; writes only
  under the requested output directory and never downloads data.
- `scripts/check_run_metadata.py`: read-only single/array-job layout and ASL
  metadata checker; it does not load USDZ maps or rewrite configs.

The package's `print-asl` and `asl-to-frames` console launchers currently
request a `main` symbol that the installed modules do not define. Use
`python -m alpasim_utils.print_asl` and `python -m alpasim_utils.asl_to_frames`
(or these bundled helpers) until packaging is corrected. The evaluation,
aggregation, and re-evaluation module entry points expose `main` and their
`python -m` forms are the portable fallback.

Files in this skill

  • SKILL.md7.4 KB
  • references/asl-format.md3.8 KB
  • references/evaluation-workflows.md5 KB
  • references/geometry-and-utilities.md4 KB
  • references/metrics-and-videos.md5.2 KB
  • references/troubleshooting.md6.3 KB
  • scripts/asl_to_frames.py8.7 KB
  • scripts/check_run_metadata.py5.1 KB
  • scripts/print_asl.py3.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.