{% extends "base.html" %} {% block title %}Sample — FreeWeight{% endblock %} {% block content %}
One request, exactly as it was recorded. Nothing on this page is aggregated: if a number here disagrees with one on the dashboard, the dashboard is wrong.
Run {{ inspection.run.id[:8] }} · test {{ inspection.run_test_key or inspection.run_test_id[:8] }}
| Sample | {{ sample.id }} |
|---|---|
| Case | {{ sample.case_id }} |
| Ordinal / repetition | {{ sample.ordinal }} / {{ sample.repetition }} |
| Status | {{ sample.status }} |
| Recorded | {{ sample.created_at | timestamp }} |
| Finish reason | {{ sample.finish_reason or '—' }} |
| Error | {{ sample.error_code }} {{ sample.error_text }} |
| Prompt ID | {{ sample.prompt_id or '—' }} |
|---|---|
| Prompt version | {{ sample.prompt_version or '—' }} |
| Prompt hash | {{ sample.prompt_hash or '—' }} |
| Rendered prompt hash | {{ sample.rendered_prompt_hash or '—' }} |
The prompt is identified by version and hash rather than stored inline unless the run was
configured to store it, so a database of measurements does not become a copy of the prompt pack.
Rebuild the exact text with freeweight prompts show {{ sample.prompt_id or '<id>' }}.
{{ sample.response_text }}
{% else %}
This run did not store response text
(execution.store_responses is off for this suite). Its hash is
{{ sample.response_hash or '—' }}, which is enough to tell two responses apart
but not to read one.
| Score | {% if sample.score is none %}—{% else %}{{ '%.6g' % sample.score }}{% endif %} |
|---|---|
| Method | {{ sample.score_method or '—' }} |
| Input tokens | {{ sample.input_tokens if sample.input_tokens is not none else '—' }} |
| Output tokens | {{ sample.output_tokens if sample.output_tokens is not none else '—' }} |
| Wall time | {% if sample.client_wall_ms is none %}—{% else %}{{ '%.1f' % sample.client_wall_ms }} ms{% endif %} |
| Time to first token | {% if sample.client_ttft_ms is none %}—{% else %}{{ '%.1f' % sample.client_ttft_ms }} ms{% endif %} |
{{ sample.result_json }}
| Criterion | Rung | Raw score | Weight | Status | Skip reason | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ score.criterion_key }} | {{ score.rung }} | {% if score.raw_score is none %}—{% else %}{{ '%.4g' % score.raw_score }}{% endif %} | {{ '%.3g' % score.weight }} | {{ score.status }} | {{ score.skip_reason or '—' }} | ||||||||
{{ inspection.judge_verdicts[score.criterion_key] | length }} juror verdicts
|
|||||||||||||
| Turn | Call | Tool | Expected | Schema valid | Correct tool | Correct arguments | Status | Latency | Arguments |
|---|---|---|---|---|---|---|---|---|---|
| {{ call.turn_index }} | {{ call.call_index }} | {{ call.tool_name }} | {{ call.expected_tool or '—' }} | {{ 'yes' if call.schema_valid else 'no' }} | {% if call.correct_tool is none %}—{% else %}{{ 'yes' if call.correct_tool else 'no' }}{% endif %} | {% if call.correct_arguments is none %}—{% else %}{{ 'yes' if call.correct_arguments else 'no' }}{% endif %} | {{ call.status }} | {% if call.latency_ms is none %}—{% else %}{{ '%.1f' % call.latency_ms }} ms{% endif %} | show{{ call.arguments_json }} |
This sample made no tool calls.
| GPU | Utilization | VRAM used | Power | Temperature |
|---|---|---|---|---|
| {{ observation.gpu_index }} | {% if observation.gpu_utilization_percent is none %}—{% else %}{{ '%.0f' % observation.gpu_utilization_percent }} %{% endif %} | {{ observation.vram_used_bytes | bytes }} | {% if observation.gpu_power_watts is none %}—{% else %}{{ '%.1f' % observation.gpu_power_watts }} W{% endif %} | {% if observation.gpu_temperature_c is none %}—{% else %}{{ '%.0f' % observation.gpu_temperature_c }} °C{% endif %} |
No telemetry observation fell inside this request's window — either the machine has no readable GPU, sampling was off for this run, or the request was shorter than the sampling interval. Not zero usage: no reading.