import { SectionCard } from './SectionCard' const stdoutContract = `[START] task_1 [END] task_1 | score=0.5000 | status=fatal_no_llm [START] task_2 [END] task_2 | score=0.5000 | status=fatal_no_llm [START] task_3 [END] task_3 | score=0.5000 | status=fatal_no_llm` export function ProtocolTab() { return (

Environment variables

  • API_BASE_URL
  • MODEL_NAME
  • HF_TOKEN
  • LOCAL_IMAGE_NAME (optional)
  • ENV_URL (optional for local replay)

Scoring guardrails

  • Scores are clamped after rounding to avoid `0.0000` and `1.0000` leaks.
  • NaN, inf, and non-numeric paths collapse to `0.5`.
  • Every task emits exactly one `[START]` and one `[END]` line.
  • No stray stdout floats are allowed outside the score field.

No-key stdout example

              {stdoutContract}
            
{[ 'GET /health returns 200', 'POST /reset accepts an empty body', 'POST /step returns reward and done state', 'POST /grader emits a score strictly inside (0, 1)', ].map((item) => (
{item}
))}
) }