A 50-case financial QA suite — factual extraction, cited summaries, refusals, adversarial traps — run twice: once against its deterministic mock target, once against a real production deployment. The second run scores badly. That's the interesting part.
The live target is the Equity Research Copilot public demo — a keyless deployment whose corpus seeds two companies (NVDA, MSFT) with 10-K and transcript excerpts. The eval suite was authored against a six-company universe (adding AAPL, JPM, XOM) with document ids like nvda_2025_10k.
The harness surfaced two distinct problems, case by case. First, the coverage gap: questions about unseeded companies error out (error_rate 0.60–0.80 across categories), and citation rules never match because the demo's document ids differ from the suite's expected labels — hence citation precision 0.00 against 1.00 on the mock.
Second — and more damning — a real behavioral bug: on the five cases designed to be unanswerable, the demo's deterministic fallback answered anyway, synthesizing from whatever chunks it retrieved. Refusal accuracy on that category: 0.00, with all five flagged as severe hallucinations. The system refuses correctly when asked about companies it doesn't know (refusal accuracy 1.00 elsewhere), but not when asked unanswerable questions about companies it does know. That is precisely the "fluent but wrong" failure mode this harness exists to catch.
Why publish a failing report? Because a harness that only ever produces green dashboards is marketing. This one produced a precise, reproducible diagnosis of a real deployment — a coverage gap and a refusal bug — and both are now roadmap items with a regression test attached: seed the remaining companies, align document ids, gate the fallback on evidence strength, re-run.
| Category | Cases | Overall | Refusal acc. | Severe halluc. | Error rate |
|---|---|---|---|---|---|
| factual_extraction | 15 | 0.26 | 1.00 | 0 | 0.60 |
| cited_summary | 10 | 0.24 | 1.00 | 0 | 0.60 |
| multi_document_synthesis | 10 | 0.22 | 1.00 | 0 | 0.60 |
| company_comparison | 5 | 0.19 | 1.00 | 0 | 0.80 |
| refusal | 5 | 0.15 | 0.00 | 5 | 0.60 |
| adversarial | 5 | 0.14 | 0.60 | 2 | 0.60 |
Numbers above are from results.json, generated 2026-07-13 against the production endpoint. Nothing on this page was hand-adjusted.