Loom / docs /USAGE.md
deploy-space action
deploy 6158a00 (c)
b972454
|
Raw
History Blame Contribute Delete
6.83 kB

Using the judge panel β€” practical guide

How to actually drive the gateway: the panel, the templates, and how to budget realistically when you feed it a whole repo. All examples assume:

URL=https://<your-space>.hf.space        # your deployed Space
TOK=<your CRITIQUE_TOKEN>                # bearer token (see SECURITY.md to create/rotate)

Every route except /health needs -H "Authorization: Bearer $TOK". Frontier judges are slow β€” prefer "async": true and poll /api/jobs/:id.


1. The panel β€” POST /api/panel

One input β†’ fanned out to a diverse panel (different model families AND providers, so the opinions are uncorrelated) β†’ merged. One judge being down never fails the request.

# async (recommended): submit, get a job_id, poll
JID=$(curl -sS -X POST "$URL/api/panel" -H "Authorization: Bearer $TOK" \
  -H 'Content-Type: application/json' -d '{
    "input": "Review this rollout plan: <paste>",
    "role": "critiquer",
    "effort": "high",
    "privacy": "strict",
    "async": true
  }' | jq -r .job_id)

# poll every ~2s until meta.complete; show each judge as it lands
curl -sS "$URL/api/jobs/$JID" -H "Authorization: Bearer $TOK" | jq '.merged, .meta'

Roles (role): critiquer (default), verifier (PASS/FAIL vote), generator (alternatives), transformer (rewrite), parser/planner (to JSON). Or pass "system" for a fully custom prompt (overrides role).

Knobs that matter:

  • effort: low=1 judge/Β½ tokens Β· med=3 Β· high=5/1.5Γ— Β· max=all/2Γ—. Controls fan-out width, per-judge token budget, and timeout.
  • privacy: strict (default β€” never routes to a training/logging host), fallback (safe first, unsafe only if needed), off. See PRIVACY.md.
  • panel: ["kimi-k2.6","glm-5.1",...] to override the default judges. Names come from GET /api/roster (logical models) or physical provider/model slots.
  • reasoning: true deep-thinks; research: true adds a web ReAct loop (needs egress).
  • merge: dedupe (consensus-tagged) Β· vote Β· concat Β· none.

Reading the result: lead with merged. In dedupe mode, bullets tagged (flagged by N judges) are the strongest signal β€” independent judges agreeing. A partial panel (some judges error/429) is by design, not a failure.


2. Whole-repo review β€” the files form

Instead of input, send the codebase and the panel reviews it in one pass. Each judge gets the pack fitted to its own context window, and reports coverage (what it actually saw).

# build {path: content} for your source files, then:
curl -sS -X POST "$URL/api/panel" -H "Authorization: Bearer $TOK" \
  -H 'Content-Type: application/json' -d @- <<JSON
{ "files": $(python3 -c "import json,glob;print(json.dumps({f:open(f).read() for f in glob.glob('**/*.py',recursive=True)}))"),
  "system": "Principal-engineer review. [SEVERITY] path:symbol - issue - evidence - fix.",
  "panel": ["kimi-k2.6","deepseek-v4-flash","glm-5.1"],
  "effort": "high", "max_tokens": 16000, "privacy": "strict", "async": true }
JSON
  • repo_url (+ repo_ref, repo_token, diff_mode) instead of files makes the server fetch a GitHub tarball itself.
  • Binaries/lockfiles/node_modules are skipped; the response includes pack (files, total_tokens) and each judge's coverage.

3. Budgeting realistically with full repo context

Token math the server uses, so you can size requests instead of guessing:

  • Estimate: ~`chars / 3tokens for code,chars / 4` for prose. A ~500KB source tree β‰ˆ 160–185k tokens.
  • Per-judge fit: a judge can hold ctx βˆ’ system_overhead(~2k) βˆ’ max_tokens(output). Context windows in this roster: 262k (kimi, deepseek-v4-flash, qwen3.5, nemotron-120b, minimax), 131k (glm, nemotron-ultra, mistral, gemma, step), and small 8k–24k (github/cloudflare llama β€” these get a reduced pack or are skipped).
  • Practical rules:
    • A ~180k-token repo fits whole only on the 262k hosts. Put those in panel (kimi-k2.6, deepseek-v4-flash, qwen3.5-397b) for full-coverage review.
    • Always set max_tokens to the output you actually want (8k–16k for a deep audit) β€” it's subtracted from the input budget. Don't leave it tiny "to be safe"; a thorough review needs room. Async + the long judge timeout make big generations free.
    • If a judge's window is too small, the files form auto-reduces its pack (drops generated/bulk files first, keeps tests+docs) and tells you in coverage.dropped. Trust judges with high files_included/files_total; treat low-coverage judges as partial.
    • For /api/run templates (below), the orchestrator now routes each stage to a host big enough for its prompt, or fails fast with the budget math β€” so a whole-repo repo_audit lands on 262k hosts automatically.
  • Rule of thumb: repo ≀ ~240k tokens β†’ single-pass on 262k judges. Bigger β†’ split by subsystem and review in parts (or use repo_audit, which maps then fans out per area).

4. Templates β€” POST /api/run

Multi-stage pipelines with an automatic judge loop. List them: GET /api/templates.

JID=$(curl -sS -X POST "$URL/api/run" -H "Authorization: Bearer $TOK" \
  -H 'Content-Type: application/json' -d '{
    "template": "design_doc",
    "prompt": "Design a rate limiter for a public free API.",
    "effort": "high", "async": true }' | jq -r .job_id)
curl -sS "$URL/api/jobs/$JID" -H "Authorization: Bearer $TOK" | jq '.result.body, .result.judge'

Built-ins:

  • repo_audit β€” maps subsystems β†’ parallel deep-review β†’ cross-validates (suppresses confident-but-wrong concurrency claims) β†’ severity-ranked audit. Pass the codebase as prompt (or a repopack blob). Routes to big-ctx hosts automatically.
  • design_doc β€” requirements β†’ 3 distinct architectures in parallel β†’ trade-off β†’ decision β†’ doc with Risks & Open Questions.
  • redteam β€” threat surfaces β†’ parallel concrete-trigger probes β†’ ranked report + mitigations checklist.
  • panel_debate β€” distinct positions β†’ argue β†’ steelman+rebut β†’ synthesis that preserves irreducible disagreement.

The run polls like any job; result.body is the final document, result.judge the verdict, result.stages shows which host ran each stage. Custom pipelines: send a "schematic" object instead of "template".


5. Quick reference

  • See live capacity + the β‰₯2-frontier guarantee: GET /api/roster, GET /health.
  • Per-profile cost/latency/throttle: GET /api/metrics?profile=<id>.
  • Privacy modes + every off-switch: PRIVACY.md. Auth/token setup: SECURITY.md.
  • The /critique Claude Code skill wraps all of this β€” see .claude/skills/critique/.