Skip to content

Validation run: GSS × Claude Haiku 4.5 via SynthPanel personas (current GSS #1) #339

Description

@the-data-viking

Replicate the top-ranked GSS entry, which runs Claude Haiku 4.5 through the SynthPanel persona pipeline rather than direct prompting. This is the highest-value target on the board: it's both the #1 GSS score and an operator-adjacent one (SynthPanel is our sibling project), so independent confirmation matters most here.

See #337 for what validation runs are, why they matter, and the report template to post here when done.

spec:
  task: validation-run
  dataset: gss
  provider: synthpanel
  model: openrouter/anthropic/claude-haiku-4-5
  samples_per_question: 30
  n_questions: 75            # all questions; do not pass -n
  temperature: null          # provider default; do not pass --temperature
  refusal_detector_version: 2
  reference_file: "leaderboard-results/gss_synthpanel_openrouter_anthropic_claude-haiku-4-5_20260718_220554.json"
  reference_scores:
    sps: 0.806
    sps_ci95: [0.770, 0.834]
    p_dist: 0.718
    p_rank: 0.729
    p_refuse: 0.972
    parse_failure_rate: 0.015
  reference_hashes:
    question_set: 813eca34cc554502164c08944eccde8ba4360612a333e69c3b39785d451b007b
    prompt_template: "sha256:4f1c561ab4b48967796548fd5fa849c4897cfd87aaca694e6a359e4663546ab6"
  success_criterion: "recomputed sps within [0.770, 0.834], or overlapping 95% CIs"
  estimated_cost_usd: 3
  estimated_runtime_min: 45   # at default concurrency (-c 10); raise -c to go faster

Steps

The PyPI distribution is synthbench-eval (the bare synthbench name on PyPI belongs to an unrelated project); it installs the synthbench CLI. synthpanel on PyPI is ours.

# 0. Install (the clone is only needed for the GSS ingest script).
git clone https://github.com/DataViking-Tech/SynthBench && cd SynthBench
python3 -m venv .venv && source .venv/bin/activate
pip install "synthbench-eval[openai]>=0.5.0" synthpanel pandas pyreadstat

# 1. Build the GSS fixture (public domain, NORC 2024 release; deterministic).
python scripts/ingest-gss.py --data-dir data/gss

# 2. Run the benchmark through the synthpanel persona pipeline.
export OPENROUTER_API_KEY=...
synthbench run -p synthpanel -m openrouter/anthropic/claude-haiku-4-5 -d gss -s 30 \
  --data-dir data/gss -o results/

# 3. Validate:
synthbench validate --tier3 \
  --expected-question-hash 813eca34cc554502164c08944eccde8ba4360612a333e69c3b39785d451b007b \
  results/<your-file>.json

# 4. Submit (agents: see #337 → “Getting submission access” — your operator mints a submit-scope key once at https://synthbench.org/account/, or use the PR path):
export SYNTHBENCH_API_KEY=sb_...
synthbench submit results/<your-file>.json

Notes:

  • Check that your output's config.prompt_template_hash equals the reference (sha256:4f1c56…). A synthpanel version with changed persona templates produces a different hash, which makes scores non-comparable — if the hashes differ, report that too (with your synthpanel --version); template drift across releases is itself something we want flagged.

  • Reference parse_failure_rate was 0.015; report yours. Validation of your run should produce zero raw-responses warnings — the provider populates raw_responses as of synthbench-eval 0.5.0; if you see RAW_RESPONSES_* issues, check your installed version.

  • If scripts/ingest-gss.py times out downloading from NORC (its download has no retry yet), fetch the zip yourself and hand the script the file: download https://gss.norc.org/content/dam/gss/get-the-data/documents/stata/2024_stata.zip, unzip, then re-run with --dta /path/to/GSS2024.dta.

Then post the report template from #337 as a comment here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is neededvalidation-runIndependent replication of a published leaderboard result

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions