Commit History
-
refactor(judge): simplify prompt to a direct similarity instructionβ
Replace the few-shot "<sentence> is the same as" -> "<label>" framing with a single system instruction: name the targets and ask for the one most similar to the player's message, sent the bare sentence as the user turn. Drops the per-board few-shot examples and the Level.examples field along with all the "is the same as" suffix plumbing. The Modal endpoint is prompt-agnostic (it scores whatever messages arrive), so no redeploy is needed for this to take effect in the app. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>491911f
-
feat(judge): self-host emotion judge on Modal GPU with exact logprobs (#24)β
Ben BlakerUnverified signatureReplace the HF Inference Providers call (top-20 logprob cap + missing-label floor) with a self-hosted MiniCPM3-4B on a Modal GPU that reads exact full-vocab probabilities. judge.py builds the prompt and POSTs {messages, labels} to a scale-to-zero Modal endpoint that scores each label's whole token sequence in one batched forward pass. Reconciled with the modular levels/ architecture on main.9f36d31 -
feat(judge): enrich prompt with targets and per-level few-shot examples (#17)β
Ben Blaker +1: Claude Opus 4.8 (1M context)Unverified signatureReshape the judge prompt that scores a board sentence against the level's candidate labels: - Add a system message listing the still-needed `targets`, threaded through judge() -> score_labels(). - Replace the bare "=" in the user message with "is the same as", reading as an equivalence while still ending right where the answer token is predicted (constrained-decoding logprob mechanism unchanged). - New optional `Level.examples` field: per-level (sentence, label) pairs expanded into few-shot user/assistant turns to calibrate the judge. Kept server-side only (not in client_value) so they don't spoil the puzzle. emotion and animal boards each get four board-vocabulary examples. Update the check_logprobs diagnostic to mirror the new prompt shape, and the live eval test to pass all labels as unbiased targets. All non-slow tests pass. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>d39c87a -
refactor(judge): simplify to a "<sentence> =" prompt; rename β tile to =β
The judge prompt is now just the assembled sentence followed by " =", and the board's candidate labels alone constrain the answer (emotions on one board, animals on another). The submit tile changes from β to = so the tile you hop onto is literally the prompt's operator. - levels: Level drops category/few_shot/question, keeping grid + labels. Grids use "=" for submit tiles. - judge: score_labels(sentence, labels) sends one message, no examples. - engine / tests / README / logprobs probe: β -> =. 23 fast tests pass; verified both boards submit onto "=" in-browser (fake judge). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>edcc51c
-
feat(judge): load HF_TOKEN from .env for local devβ
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>cef2d5c -
feat(judge): emotion judge via API logprob filteringβ
One chat-completion call with max_tokens=1 + top_logprobs; label logprobs are extracted from the top-k, masked to the allowed emotions, and softmax- renormalized (client-side constrained decoding). Live eval marked slow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>0e55462