eval-fetch · git:20260526.b859e18 · 2026-05-26 · sha256 6f3fe1ebd3dc2bec

eval-fetch git:20260526.b859e18A

Immutable. This exact content is served forever at /api/v1/blob/6f3fe1ebd3dc2bec.

---
name: eval-fetch
description: Use when a user asks to fetch Galileo evidence, provides Galileo URLs or IDs, says "fetch this Galileo link", or needs traces, sessions, experiments, or log streams saved locally.
---

# Eval Fetch

Use this skill to turn messy Galileo console links and IDs into local evidence.
The goal is a grounded debug packet, not a diagnosis.

Do not print secret values. Report only credential variable names, whether
expected variables are present, and the exact fetch blocker.

## First Parse The Input

Use `skills/eval-engineer/scripts/parse_galileo_url.py` when the user provides a
Galileo URL. Follow `skills/eval-engineer/references/galileo-url-intake.md` for
artifact-specific behavior.

Preserve source metadata in the packet:

- `source.console_url`
- `source.console_host`
- `source.workspace_slug`
- `source.project_id`
- artifact IDs such as `log_stream_id`, `experiment_id`, `session_id`, or
  `trace_id`

## Ask Only For Missing Information

- project URL: ask for log stream, experiment, session, trace, time window, or
  failure metric.
- Experiments list URL: ask for latest experiment, specific experiment, failing
  experiment, or comparison pair.
- Log stream URL: ask for latest N traces, failed traces, time window, or
  aggregate metrics if the user did not specify.
- Log stream aggregate metrics: use
  `skills/eval-engineer/scripts/fetch_log_stream_packet.py` with `--url` or
  `--project-id` plus `--log-stream-id`. This fetches traces, spans, sessions,
  aggregates numeric scorer metrics into `.galileo/current/debug-packet.json`,
  and reports `metric_fetch_status`.
- Trace/session URL: fetch that artifact and ask whether to compare against a
  baseline only if needed.
- If the URL parser returns `fetch_ready: true`, say the Galileo artifact is
  resolved. If a slice is still needed, ask which slice to fetch; do not label
  the URL as not fetch-ready.
- If the current repo has no fetch helper, SDK method, API route, or saved
  packet capable of fetching the requested aggregate, say `fetch implementation gap`.
  Do not imply that scorer aggregates, trace lists, or
  metric distributions were fetched when the command only parsed the URL.
- If `fetch_log_stream_packet.py` writes a packet with
  `metric_fetch_status: missing_metric_results`, say the fetch worked but
  Galileo did not return scored metrics for the requested slice.

## Gotchas

- Parsing a URL is not fetching evidence. Do not imply scorer aggregates, trace
  lists, or metric distributions were fetched unless a fetch helper or saved
  packet actually produced them.
- Function experiments may produce system token and latency metrics while
  requested scorer aggregates are absent. Treat that as missing quality evidence,
  not as a passing quality result.
- If a project URL resolves but no slice is specified, ask for the smallest
  useful slice instead of marking the URL unusable.

## Validation Loop

After fetching or writing a packet:

1. Confirm `.galileo/current/debug-packet.json` exists or name the output path.
2. Check that `source` metadata and stable artifact IDs are present.
3. Run `python3 skills/eval-engineer/scripts/summarize_debug_packet.py <packet>`
   when a packet was written.
4. If validation fails, revise the fetch command, packet, or blocker statement
   before routing to `/eval-diagnose`, `/eval-measure`, or `/eval-cost`.

## Output

Write or guide writing `.galileo/current/debug-packet.json`. If fetching cannot
complete, state the blocker exactly: missing credentials, permission denied,
ambiguous URL, incomplete scorer jobs, or missing metric results.