hipfire-tester
Route-oriented bring-up, serve, and reporting skill. Pick the narrowest validation route for the claim under test; do not invent a universal matrix.
Load guide.md when running a full session or drafting a report.
Authority
| Concern | Owner |
|---|---|
| Claim → route map | docs/VALIDATION.md |
| Docs / lifecycle / ownership | docs/INDEX.md |
| Model tags, VRAM, registry files | registry/models.json, docs/MODELS.md |
| CLI surface | docs/CLI.md |
| Serve HTTP | docs/SERVE.md |
| Config / env | docs/CONFIG.md, docs/env-vars.md |
| Perf protocol | docs/methodology/perf-benchmarking.md |
| Redline certification | docs/REDLINE.md |
| Quant design | docs/QUANTIZATION.md |
Fail closed: unknown claim class → no improvised gate. Green no-GPU CI is
not GPU correctness. Registry presence is not runtime admission
(docs/admissions.yml records stay empty until
earned).
What this skill is not
- Not a universal GPU replacement gate.
- Not numerical/state parity (use an arch-owned oracle when one exists; else blocked).
- Not Redline product timed-arm proof from harness success alone.
- Not promotion authority for benches, Atlas rows, or historical checkpoints.
Quick start (bring-up only)
# Fast smoke (small model — speed only, not acceptance):
hipfire diag
hipfire pull qwen3.5:4b # tag from registry/models.json; other small tags OK if VRAM fits
hipfire run qwen3.5:4b "Explain WMMA in one paragraph."
Acceptance / validation fixture (dense claims, DFlash, promotion-shaped
reports): registry tag qwen3.8:27b-mq4-xt → on-disk
~/.hipfire/models/qwen3.8-27b.mq4-xt, with measured draft
~/qcal/ladder-v2/drafts/qwen3.8-27b-dflash.mq4v2.hfq (see
AGENTS.md §5 pin). Do not treat a small-model smoke
pass as acceptance evidence.
hipfire pull qwen3.8:27b-mq4-xt
# optional measured-draft override:
# export HIPFIRE_DFLASH_DRAFT=~/qcal/ladder-v2/drafts/qwen3.8-27b-dflash.mq4v2.hfq
hipfire config set dflash_mode auto # pull ≠ enable
hipfire run qwen3.8:27b-mq4-xt "Explain WMMA in one paragraph."
If diag or first run fails, chain to hipfire-diag / hipfire-autoheal.
Claim → harness (summary)
Full map: docs/VALIDATION.md. Branch by
claim class immediately after identity/build — do not run a fixed linear
battery. Maintained manual harnesses that exist today:
| Claim class | Route |
|---|---|
New/changed numeric .hip |
target/release/examples/test_kernels then the applicable model/path-level manual route for that arch/surface (docs/VALIDATION.md). Channel alone is not the complete route. |
| Forward / fusion / KV numerical or state | Path-specific parity/state oracle for that arch/surface; BLOCKED if none exists — never substitute serve harness or perf. |
| User-facing serve semantics | python3 scripts/serve_harness.py --model <path> … (after parity when numbers/state can change) |
| LFM2.5 chat / thinking frame | python3 scripts/serve_harness.py --model <path> --tag lfm2.5:… --sampling registry |
| Optional wrapper (Redline + serve; perf on by default) | scripts/gates.sh --model <path> --no-perf for harness-only; omit --no-perf only on a clean tree willing to let probe_commits.sh mutate checkout |
| Redline capture / shadow evidence | python3 scripts/redline_daemon_harness.py --model <path> + REDLINE.md ladder |
| Prefill/decode floor vs committed baselines | scripts/speed-gate.sh when that path’s policy applies |
| Fresh-process A/B | scripts/probe_commits.sh (default arm of gates.sh; disable with --no-perf. Mutates worktree — clean tree required) |
| Product-CLI synthetic daemon bench probe | hipfire bench <tag> / hipfire bench <tag> --matrix … — synthetic bench_prefill/bench_decode probes, not production-path authority |
| Production-path throughput report | Native serve_harness.py JSON / daemon done fields (prefill_tok_s, decode_tok_s, ttft_ms) per docs/methodology/perf-benchmarking.md and docs/methodology/bench-suite.md |
Retired batteries are not current evidence. Route claims through docs/VALIDATION.md; never require a retired battery for merge, promotion, or report pass/fail.
Report contract
Include identity, not folklore:
- GPU marketing name, gfx arch, ROCm/HIP version (
hipfire diag) - hipfire version / binary path; daemon or bench binary md5 when claiming perf
- Exact model path or registry tag + file basename; draft path if DFlash-related
- Relevant config (
kv_cache/dflash_mode/ thinking) and full command lines - Prompt identity (path or md5) for any timed or semantic fixture
- Which VALIDATION route was run and what evidence class it covers
- Pass/fail per route; separate “measured” numbers from “admitted” claims
- Notes: hangs, OOM, first-run JIT cost, dirty worktree
Template and phase checklist: guide.md.