The primary benchmark is derived from the user's live Torment session—not generic trivia. The durable game state contains 104 user-role turns, of which 33 are genuine manual/chat interactions after excluding automatic Recall-review prompts. Preserve original spelling and ambiguity in the test input; evaluation should measure whether retrieval and reconciliation work in real play.
Benchmark layers
Retrieval
Find the right manual/wiki/walkthrough section and exact source version.
State grounding
Combine corpus evidence with current journal, Recall and campaign records.
Spoiler control
Answer at none/hint/full without leaking later outcomes.
Reconciliation
Apply only validated, game-scoped low-risk updates; block ambiguity.
Torment live-use evaluation set v1
| ID / real prompt | Capability | Expected evidence and behavior |
|---|---|---|
| T01 · “I've just loaded in here…what can you tell me about where I am?” | Vision + location retrieval | Use screenshot OCR/caption, current game state and location sources; distinguish observation from inference. |
| T02 · “Find hints for my current main quest and how far I am through it.” | Progress-aware retrieval | Resolve active objective first; retrieve only relevant quest section; hint-level answer with progress uncertainty. |
| T03 · “I found Tantalum—are there missables on lower levels before I talk to them?” | Missables + temporal boundary | Retrieve pre-conversation missables; distinguish reversible vs one-time; avoid later plot spoilers. |
| T04 · “Add all of those to my TODOs; skull eye-pool checked, six-eyed statue started.” | Research → campaign mutation | Reconcile discovered list against existing records; complete/omit checked item; mark statue in progress; avoid duplicates. |
| T05 · “Who should I put the Pellucid Wrap on? It's permanent/one-time, right?” | Mechanics + build context | Verify permanence from hard source; use party/build state; explain trade-offs and uncertainty. |
| T06 · Phoenix note completion with number 1535 | Exact-record mutation | Complete specified TODO ID, retain provenance, update related objective/recap without broad unrelated changes. |
| T07 · “What should I do in 1535 and 2413?” | Multi-document quest sequencing | Retrieve both tomb/quest sections; separate prerequisites; respect requested spoiler level. |
| T08 · “How was I supposed to get code 2413; anything between dark crystal and tomb?” | Prerequisite diagnosis | Resolve trigger chain from guide/manual/community corroboration; identify missed step without assuming completion. |
| T09 · “Phoenix Wisdom complete…after dark crystal? Oddwald changed nothing.” | Troubleshooting stale quest state | Search trigger conditions and known sequencing; distinguish bug/workaround from intended progression. |
| T10 · “Explain what is on this screen and what matters right now.” | Visual + campaign fusion | Use raw VLM/OCR and current objective; ignore decorative/transient UI; cite only if external claims are needed. |
| T11 · “I'm well past the tombs…this is Zerian's Mere…correct everything.” | User correction | User-stated location overrides stale inference; invalidate/mark blocked old objectives, preserve evidence trail, avoid rewriting unrelated history. |
| T12 · “What happened?” | Recent-event reconstruction | Use latest Recall sequence and trace timestamps; state confidence and avoid inventing unseen transitions. |
| T13 · “How do I actually use the Twisted Metal Merecaster?” | Object interaction retrieval | Retrieve exact activation/interaction instructions; reconcile against current quest state and prior choices. |
| T14 · Lied about unlocking Merecaster; NPC fled; 40 XP; now before Miel Avest attack | Missed outcome correction | Accept explicit player report, verify if useful, mark quest outcome/missable, move current location forward. |
| T15 · “Miel Avest crisis done…in the Bloom…sync journal; Dracogen's Price; Broken Hearts; maybe no Tybir.” | Journal reconciliation | OCR exact active quests, set Dracogen current, add Broken Hearts conditionally/blocked if Tybir absent, close stale objectives. |
| T16 · “Only Dracogen's Price; other two blocked and moved elsewhere.” | Multi-record correction | Exactly one active objective; preserve main-quest semantics; blocked records remain searchable and explained. |
Evaluation protocol
- Freeze a corpus snapshot and campaign/Recall fixture for each case.
- Run FTS-only baseline, hybrid retrieval, then optional reranked mode with identical prompt/state.
- Record retrieved chunk IDs, source versions, scores, latency, context tokens and answer.
- Score retrieval before judging prose, so a fluent unsupported answer fails.
- Replay at spoiler levels none, hint and full where relevant.
- For mutation cases, compare exact applied action sets and resulting records.
Scoring
| Metric | Pass target for Torment launch |
|---|---|
| Source Recall@5 | ≥ 0.90 on cases with known answer sections |
| Exact provenance | 100% of factual evidence links to source version/page or Recall entry |
| Game isolation | 100%; no cross-game chunks or records |
| Spoiler leakage | 0 critical leaks under none/hint |
| Mutation precision | ≥ 0.95 exact actions; zero unrelated record mutation |
| Unsupported certainty | 0 answers presenting inference as observed fact |
| Offline degradation | FTS baseline remains functional with LM Studio unavailable |
Fixture sources
- Actual 33 manual/chat turns and their associated assistant outputs.
- Timestamp-aligned Recall entries/screenshots and raw VLM outputs after migration.
- Campaign records before and after each validated action.
- Verified Torment Extras manuals/strategy guide/novellas with page anchors.
- Versioned web artifacts actually consulted by GTC.
LM Studio generative-model benchmark
The live LM Studio endpoint advertises 21 generative models plus one Nomic embedding model. Do not benchmark every quantization as if it were a distinct capability. Build a representative shortlist by parameter class, architecture and quantization, then run identical Torment-derived tasks with fixed prompts and deterministic settings where supported.
| Task family | Torment-derived input | Score |
|---|---|---|
| Query rewrite | Original misspelled/ambiguous prompts such as “dark srystal,” “how was I suppose to get 2413,” and “what happened?” plus current state | Preserves entities/intent, adds no invented facts, improves Recall@k |
| Candidate reranking | FTS/vector candidates for Phoenix 1535, Severed Child 2413, Merecaster and Broken Hearts | MRR/nDCG against human relevance labels; spoiler-safe ranking |
| Raw tool-output explanation | Saved GTC search/scrape JSON, errors and crawl manifests | Field coverage, factual faithfulness, exact raw-span links, latency |
| Structured/symbolic breakdown | GTC JSON, command arguments, regex/stack traces, validated action arrays | Correct key/symbol semantics; zero hallucinated fields |
| Source/chunk classification | Manual pages, strategy-guide sections, novellas, Steam/Reddit/wiki excerpts | Source type, trust, spoiler tags and heading labels versus gold set |
| OCR cleanup | Raw Recall OCR from dialogue/journal screens | Character/word error reduction while preserving names, numbers and uncertainty |
| Evidence summary | Retrieved chunks + Recall state for T01–T16 | Claim support, citation completeness, no spoiler leakage |
| Action proposal | Journal synchronization and exact-record correction cases | Proposed action precision/recall; actions remain untrusted until bridge validation |
Representative live candidates
- Small/fast: Holo 3.1 4B/9B and Qwopus/Qwable 9B variants for explanation, OCR cleanup and classification.
- Mid-size dense: Qwen 3.6 27B variants and Darwin 28B for reranking and evidence synthesis.
- MoE: Qwen/Qwable/Ornith 35B-A3B variants for higher-quality background explanation and action proposal.
- Embedding baseline:
text-embedding-nomic-embed-text-v1.5.
Harness contract
benchmark_case = {
case_id, task, game_id, prompt_version,
input_artifact_hashes, expected_labels_or_actions,
spoiler_level, max_context, output_schema
}
result = {
model_id, quantization, params, latency_ms, tokens,
peak_vram_if_available, output, parse_valid,
automatic_scores, human_review
}
Model names exposed by LM Studio are a dynamic inventory, not proof that each model is currently loaded or supports the same context/structured-output features. Probe capabilities, record the exact model ID/quantization, and benchmark one loaded model at a time to avoid VRAM/concurrency contamination.
Selection policy
- Reject models that fail schema adherence, leak spoilers, or invent raw fields regardless of speed.
- Select the smallest model within 2–3% of the best quality score for routine background derivations.
- Permit a larger optional “deep explanation” model only when its measured gain justifies latency/VRAM.
- Never let a benchmarked local model directly mutate campaign data; it proposes, the bridge validates and records provenance.
Game expansion cohorts
1 · Torment: Tides of Numenera
Primary acceptance game. Narrative, quest-state ambiguity, visual Recall and verified local Extras. Stabilize ingestion and benchmark here first.
2A · Tyranny
Best next narrative-RPG control: branching choices, reputation, quest consequences, dense lore. Tests choice provenance and mutually exclusive state.
2B · Colony Ship
Good for builds, skill checks, alternate routes and smaller community-source footprint. Tests mechanics and sparse-source retrieval.
2C · Warhammer 40,000: Rogue Trader
Large modern corpus, patches/DLC, builds and complex quests. Use last because version/edition tagging and source volume stress the system.
Recommended progression
Do not require all four games before shipping the first retrieval implementation. Torment is the quality gate; each later game adds a distinct failure mode and expands the benchmark suite.