Blog

CrossSearch: A Benchmark for Agents That Cross-Reference Local Files and the Web

Sam J.

Overview

Much of modern professional work involves checking local records against sources on the web. For example, a technician may need to match thermal readings to a camera’s spec sheet, a developer may match a project’s lockfile to a security advisory, or a city planner may match an intersection’s traffic counts to a federal manual for traffic signals. Agents doing this work often operate in real workspaces, where facts are spread across documents, spreadsheets and photos. They also need the open web, because the public source the answer depends on is usually not in those files. Agents need this dual capability: reading files to know what to search for, then applying what they find on the web back to the workspace.

We introduce CrossSearch, a benchmark that measures agents’ ability to cross-reference sources in local workspaces and on the web. We release 100 tasks created by domain professionals. These cover areas such as aircraft maintenance, pharmacy, tax, and software security. For each task, the agent receives three things: (1) a real-world request, written the way a colleague would ask for it, (2) a folder with the actual files as they were provided (in any format), and (3) access to the open web. Each of the tasks also has at least one public source that is not explicitly mentioned in the request. The agent has to work out what to search for from the files. We structured the tasks so that they can’t be answered from just the web or just the local workspace.

We believe the same capability is needed to generate high-fidelity synthetic workspaces, because as a workspace grows, its files and facts have to stay coherent for synthetic post-training to scale.

Results

We report pass^3, the share of tasks where all three attempts receive full credit, and pass@1, the share of attempts that receive full credit.

CrossSearch leaderboard

  1. Gemini 4 Argon64.0%
  2. GPT-6 Astra60.0%
  3. GPT-6.1 Sol59.0%
  4. Opus 5.557.0%
  5. GPT-5.6 Sol38.0%
  6. Grok 4.635.0%
  7. Opus 534.0%
  8. Gemini 3.8 Flash29.0%
  9. Inkling 2 Small23.0%
  10. Kimi K315.0%
  11. Sonnet 57.0%
  12. Inkling0.0%

An example task

Starting workspace

patient_note.pdfApixaban 5 mg twice dailyAge 79, 59 kg, nonvalvular AF
lab_20250728.jpgPhotographed panelCreatinine 1.7 mg/dL
lab_20241112.jpgOlder panel (distractor)
User request

Is the ordered dose right for this patient? If not, what should it be, and what is the main risk?

agent
answer.md

Open web

Drug label (DailyMed)2.5 mg twice daily iftwo of: age ≥ 80,wt ≤ 60 kg, SCr ≥ 1.5
Archived copy (grader only)URL, retrieval date, hashNever in the workspace

Full credit = all seven rubric items. The score counts how many were met.

  1. C1age 79, 59 kg, creatinine 1.7
  2. C2indication is nonvalvular AF
  3. C3exactly 2 of 3 criteria met
  4. C45 mg too high, 2.5 mg correct
  5. C5main risk is serious bleeding
  6. C6cites the current label
  7. C7patient meets creatinine rule
  8. workspace factweb fact

Take the task example above. A hospital pharmacist wants to know if a new order of apixaban (a blood thinner) at 5 mg twice a day is right for this patient. The dosing rule is on DailyMed, which says the dose should drop to 2.5 mg twice a day if at least two of three conditions are met: age 80 or older, weight 60 kg or less, and serum creatinine 1.5 mg/dL or higher. We saved an archived copy of this label for grading, but the agent never sees it and has to find the current label on the web. The pharmacist’s workspace contains a PDF and photos with the patient’s details, including age 79, weight 59 kg and creatinine 1.7 mg/dL. The agent must combine the label’s rule with the patient’s details to see that two of the three conditions are met, making 2.5 mg the correct dose, and ignore distractors such as an older lab panel. The task has an atomic rubric listing every fact the answer needs and the evidence behind it. An answer gets full credit only if it meets every item. We used these rubrics to evaluate twelve models from six labs on all 100 tasks.

Model performance

Cost and speed

GPT-6.1 Sol is the most cost-efficient of the four highest-scoring models, at $0.98 per fully correct answer. The corresponding costs are $1.31 for Opus 5.5, $2.06 for Gemini 4 Argon and $5.22 for GPT-6 Astra. GPT-6.1 Sol is also the fastest of the four, with a median attempt of 7.6 minutes. Gemini 4 Argon’s median attempt takes 15.6 minutes and uses about 43,600 output tokens. Time and token figures cover all twelve models.

Full credit and cost per correct answer

0%25%50%75%100%$0$2$4$6$8$10Agent cost per fully correct answerFull credit

Cost covers all twelve models.

Median attempt time and output length vary widely. Opus 5 has the longest median attempt at 30.1 minutes and uses about 75,000 output tokens on a median attempt. Inkling has the shortest median attempt at 3.4 minutes.

Other search engines

With native search, the agent accesses the web through its own shell. In practice, this mostly means fetching pages with curl. We compared native search with Exa, Parallel and Firecrawl by rerunning Gemini 3.8 Flash, GPT-5.6 Sol and Kimi K3 on the same 50 tasks. During these runs, the agent had access to two commands from the engine: one that searched the web and one that fetched a page. There was no cap on search or fetch calls for each rollout.

Change in full credit with a different search engine

Gemini 3.8 Flashnative search 45.3%

Exa0.0
Parallel+2.7
Firecrawl+2.7

GPT-5.6 Solnative search 57.3%

Exa−3.3
Parallel+2.7
Firecrawl−2.0

Kimi K3native search 32.0%

Exa+8.0
Parallel+8.7
Firecrawl0.0

Full credit increases in five of the nine combinations. The largest gains are Kimi K3 with Parallel (+8.7 percentage points) and Kimi K3 with Exa (+8.0 points).

Failure Modes

To understand what went wrong, we grouped tasks by the main mistake shown in failed answers. GPT-5.5 suggested a group using those answers and the judge’s notes; we checked every assignment by hand. Each failed attempt was counted under its task’s group.

Failed attempts by failure mode

  • Share of 1,803 failed attempts · All models

Wrong rule or version

Share of 1,803 failed attempts · All models: 35%

Missed connection to files or web

Share of 1,803 failed attempts · All models: 23%

Incomplete answer

Share of 1,803 failed attempts · All models: 20%

Misunderstood how a system works

Share of 1,803 failed attempts · All models: 11%

Wrong threshold or calculation

Share of 1,803 failed attempts · All models: 11%

The largest group involved applying a rule to the wrong case or using the wrong version of it. Tasks in this group accounted for 35% of failed attempts. Other failures involved missing a connection between sources, leaving part of the request unanswered, misunderstanding how a system worked, or misreading a threshold or calculation.

Finding the right source was only part of the challenge. Tasks whose main failure involved finding a source or connecting it to the files accounted for 23% of failed attempts. In many other cases, the model found a relevant source but still reached the wrong conclusion or left part of the work unfinished. The examples below show the specific connection each answer missed.

Email rules shared across a company’s subdomains

Gemini 3.8 Flash judged the company’s corporate email subdomain using only its own 320 messages per day. But Gmail counts all mail from the same main domain—about 29,720 messages per day here. The model did not combine those streams, so it said the subdomain met the rules even though it lacked a required email-authentication record (DKIM).

Model
Gemini 3.8 Flash · scored 90.0%
Rubric item
The response should conclude corp.nyotaretail.example falls within Gmail's bulk-sender scope despite its own ~320 messages a day, because Gmail counts all messages from the same primary domain — nyotaretail.example's streams total about 29,720 a day — and is therefore non-compliant with the bulk requirement for both SPF and DKIM, since no DKIM selector exists for the stream.
From the answer
- corp.nyotaretail.example: COMPLIANT under current low-volume non-bulk sender rules (SPF is valid) [E1, E3, E7, E10], but presents severe operational risk due to lack of DKIM and coupling with organizational DMARC policy [E3].
Judge’s note
Contradicts the required conclusion by treating corp as non-bulk and compliant based on its individual volume. It does not apply Gmail's primary-domain aggregation, calculate the combined volume, or classify the missing DKIM as a bulk-requirement failure.
Two copies of the same JavaScript library

The project had two copies of the JavaScript library lodash. Kimi K3 did not explain which copy the application actually loaded: the older, top-level version, rather than the newer copy used by a development tool. That connection matters because a safe copy elsewhere in the project does not make the application’s own copy safe.

Model
Kimi K3 · scored 90.0%
Rubric item
The response should recognize that a second, nested lodash copy (4.17.21) exists under eslint's devDependency tree but correctly identify it as irrelevant, since src/index.js resolves the top-level lodash (4.17.11) at runtime.
Judge’s note
The answer does not identify the second lodash copy as nested under eslint's devDependency tree or explain that it is irrelevant because src/index.js resolves the top-level lodash at runtime. Those explicit requirements are unmet.
A Django app’s startup checks

The fix needed to stop database updates from running in two places whenever the app started, and run them once before deployment instead. Opus 5 discussed removing account setup from the Django startup file but did not explicitly remove the database updates there. Its proposed changes could therefore leave the startup problem in place.

Model
Opus 5 · scored 85.0%
Rubric item
The response should require database migrations to run only once in a controlled pre-deploy or release step, not from either the Render web-service startCommand or requirements_lab/wsgi.py.
Judge’s note
The clause requiring migration execution to be removed from requirements_lab/wsgi.py is not established. Removing the account-seeding block does not explicitly require removing the separate WSGI migration initialization; the rubric requires removal from both startup locations.
Pull requests in GitHub’s issue list

The task asked which changes were essential before releasing an app that used GitHub’s API. Sonnet 5 missed that GitHub’s list of issues can also include pull requests. It did not connect that behavior to the app’s results or explain that filtering out pull requests was an optional improvement, rather than a required fix before release.

Model
Sonnet 5 · scored 85.7%
Rubric item
The response should recognize that GitHub's Issues endpoint may return both issues and pull requests, and should classify any pull-request filtering recommendation as (b) a recommended improvement that can be deferred rather than (a) a required compatibility change before release.
Judge’s note
The response never recognizes that the Issues endpoint may return both issues and pull requests. It also provides no classification of pull-request filtering as a deferrable improvement. Listing separate issues and pull-request endpoints does not establish the required mixed-response behavior.
Reading a traffic-signal guideline

Sonnet 5 found the traffic-signal guideline but read its chart incorrectly. At the busiest measured hour, the side road carried 119 vehicles per hour, below the chart’s required level of roughly 125–135. The model placed the point above the curve and said the four-hour traffic-volume test was likely met, reversing the correct conclusion.

Model
Sonnet 5 · scored 90.0%
Rubric item
The response should conclude Warrant 2 (Four-Hour Vehicular Volume) is not met. The scored core is the correct conclusion plus any reasonable basis against the Figure 4C-2 (70% factor) curve for 2+ major lanes / 1 minor lane: plotting or discussing the peak point (471 major, 119 minor) below the curve, an approximate curve reading (the curve at the 471 vph peak sits at roughly 125–135 vph on the minor approach; any reading in the 120–140 band supports the conclusion, with the 119 observed below it by about 8 to 15 vph), or a qualitative statement that none of the four highest hours reaches the curve. (The 119 vph peak clears the figure’s 60 vph one-lane floor, but the curve itself governs; a reading near 180 belongs to the 100% Figure 4C-1 curve, not 4C-2.)
From the answer
| 2 - Four-Hour Volume | Figure 4C-2 (70% factor) curve, '2+ major-lanes & 1 minor-lane' (asymptote 60vph) [E9] | Minor volumes 96-119 vph plot above curve across the day (visual read) [E9] | Likely YES (visual read; caveat below) |
Judge’s note
The required conclusion that Warrant 2 is not met is contradicted. The answer instead reports likely satisfaction and incorrectly places the observations above the applicable curve.

How we built CrossSearch

Each task was written by a screened professional in the task’s field, who had to pass an assessment before submitting. Each professional was limited to at most three tasks for the benchmark. Authors reported spending five to ten hours on each one. The author prepared (1) the request, (2) the starting workspace of files, (3) an archive of the public sources, and (4) a reference answer with a rubric. Before a task was accepted, it had to pass the five checks below.

Review Process

  1. 1Authorship screenChecked the writing for AI-generated textAutomated
  2. 2Frontier model rolloutsFour task attempts by a frontier model, read by the task authorAuthor
  3. 3Rubric alignmentAuthor and judge grades must match after disagreements are resolvedAuthor and LLM judge
  4. 4Evidence auditCited facts, sources and rubric checkedAutomated
  5. 5Reviewer decisionAccept, reject or send back for revisionsReviewer
  6. Accepted

Appendix: Quality & Methods

Task design, file and rubric breakdowns, evidence checks, and evaluation details. Click to expand.

Task collection

Authors were asked to write tasks about work they already knew well. For each task, our collection portal noted whether it was from real work, a reconstruction of a real case, or invented. It also noted the kind of work involved, such as checking a claim, matching local records to a public rule, filling in records with facts from the web, or identifying something before looking it up. In each task, the files had to change what the agent searched for or concluded, and the web had to add something the files couldn’t.

The files come in the formats used in real professional work: photos, scanned pages, spreadsheets, logs and audio recordings. Workspaces contain a median of 3.5 files per task and as many as 27. In 78 tasks, at least one file is something other than plain text, code or CSV. Across all 100 tasks, PDFs appear in 66, tables or spreadsheets (CSV, XLSX) in 60, images in 25, and audio or video in 10. Each task also relies on one to five web sources, 195 across the whole benchmark. Although we archived these sources for grading, the agent never sees that archive and has to find each source on the live web. Rubrics range from 2 to 20 items per task, with a median of 6.

Files in the 100 tasks. The 100 starting workspaces contain 435 input files, excluding the standard answer-format file. Tasks can contain more than one format, so the task counts overlap.
FormatTasks out of 100Files
PDFs66138
Tables / spreadsheets (CSV, XLSX)6088
Text / structured text (TXT, MD, JSON)45144
Photos and other image files2555
Audio recordings99
Video11
Engineering
54
Public records
41
Finance
15
Law
14
Other
14
Medicine
13
Science
12
Aviation
4

Task domains: tasks out of 100 · multiple labels allowed

The chart uses all domain labels provided by the authors. A task can appear in more than one domain; 55 of the 100 tasks have multiple labels.
Rules for files and evidence provenance

To prevent the agent from cheating, file names couldn’t reveal the source or the conclusion, and we instructed experts not to replace a photo, recording or other real file with a note that gave the answer away. Distractors had to be relevant to the case while still being something a careful reader could rule out. Each file came with a record of its origin and usage license, along with the author’s confirmation that it contained no personal information. Every specific claim in the reference answer had to cite its supporting location in the task artifacts, such as a page region in a PDF, a cell range in a spreadsheet, or a time range in a recording or video. An automated check confirmed each cited location at submission, and a human reviewer checked it again before the task was accepted.

Quality gates

Each task went through the five checks above. A task that failed a check went back to its author for revision unless it was rejected outright.

The first check was an authorship screen, where we ran each submitted task through an AI-text detector. A task that scored above 30% went back to the author for rewriting, and tasks that scored 40% or higher were rejected. Afterwards, we ran rollouts on frontier models, in which the task submission portal ran four rollouts on each task, two from GPT-5.6 and two from Claude Opus 4.8 (frontier models at the time), using each provider’s default settings. The task author read through each rollout and checked whether the agent found a valid alternative answer or source, exposed an ambiguity in the question, solved the task without needing both the workspace and the web, or failed for reasons unrelated to what CrossSearch measured. Based on the rollouts, the author then revised the reference answer, the accepted alternatives, and the rubric before submitting a final version for review.

Our automated evidence audit before human review

In the evidence audit, we ran a quality check with a VLM, which inspected each cited region and confirmed that it actually supported the claim that was derived from it. It then continued by checking that each rubric item was necessary to achieve the correct final answer, was supported by the evidence it cited, and matched the prompt originally given to the agent. A second audit then scored the task on eight design dimensions, for example, whether the web source was authentic and missing from the starting workspace, and whether the agent had to work out which rule applied. It listed any defects it found, along with suggested fixes.

Reasons a task could be sent back for further revision

Tasks could be sent back for a variety of reasons, including a source that couldn’t be reached, an inappropriate request, an unsupported reference answer, or imprecise evidence locations, among others. A task could have also been sent back for problems with privacy, licensing or its software environment.

Human review

During rubric alignment, the task author graded each model rollout item by item. An independent model judge (GPT-5.6 at high reasoning effort) graded the same answers without seeing the author’s scores and also evaluated the human-written reference answer. Before submitting a task, authors were instructed to resolve every disagreement by clarifying ambiguous rubric items, fixing the reference answer, accounting for valid alternative answers, or correcting their own grades. This ensured that the rubric was applied consistently to both model and human answers, reducing noise. Both grading passes were then repeated to confirm agreement, and the reference answer had to pass the final rubric.

The final check consisted of a second human reviewer going through a checklist of 12 items that asked them to specifically cover the type of request, the files the agent saw, the reference answer, the rubric, and the frontier rollouts. These 12 items came down to six questions.

  1. Does the task look like real work, without giving away the answer?
  2. Are both the files and the web needed, with at least one rubric item that depends on both?
  3. Can every required source be retrieved (or tied to a fixed date), and is each cited fact actually where the reference says it is?
  4. Does the rubric grade what the user asked for, and give credit to other valid answers?
  5. Is the workspace free of grader-only material, and of any metadata that gives the answer away?
  6. Were the problems found in the frontier rollouts resolved?

Based on the checklist, the reviewer accepted the task, rejected it, or sent it back for revision with a specific reason.

Rubric taxonomy

Primary rubric groupItemsShareItem pass rate
Fact / rule identification21732.7%88.3%
Joined application / comparison28943.6%81.6%
Calculation / transformation8613.0%84.8%
Grounding / evidence limits7110.7%76.7%

We grouped each rubric item by what a correct answer had to do. Items that required a calculation or conversion went in “Calculation / transformation.” Items that checked citations or whether evidence supported a claim went in “Grounding / evidence limits.” We then split the remaining items by the sources they needed: “Joined application / comparison” required both the local files and the web, while “Fact / rule identification” required only one. We assigned the groups in this order so that each item was counted once.

Item pass rates pool available rubric-item judgments across all 3,600 native-search attempts.

Human–LLM agreement

We use GPT-6.1 Sol as the LLM judge to grade every leaderboard answer against the task’s rubric. To assess the LLM judge’s variance compared to human raters, we ran an ablation on 43 of the benchmark tasks. Each answer received two independent human grades, and we compared five model judges. On whole-answer pass/fail decisions, GPT-6.1 Sol matched an individual human grade 94.8% of the time. The two humans’ ratings agreed 94.2% of the time.

Agreement with human ratings

  1. Human vs human94.2%
  2. GPT-6.1 Sol94.8%
  3. GPT-5.6 Sol93.0%
  4. Opus 590.1%
  5. Gemini 3.7 Flash89.0%
  6. Kimi K384.9%

Evaluation methodology

The leaderboard covered twelve models, each run with its native search and given three scored attempts on all 100 tasks, for a total of 3,600 scored attempts. The search-engine comparison added another 1,350 attempts from three models on 50 of the tasks. Every attempt ran in a fresh Docker container built with the Harbor framework, with the workspace files mounted at /app/artifacts. All models used the Terminus-2 agent and worked through a single shell, where the model could send keystrokes, read the terminal screen, and signal when it was done with the task at hand. In the earlier evaluation’s readable native-search trajectories from every model except Gemini 4 Argon, agents fetched pages with curl in 90% of attempts and with Python HTTP libraries in 40%. Since every model worked through this same harness, our results reflected the harness as well as the model.

All twelve models accepted images and could use a view_image command to look at an image file. Each model ran at extra-high reasoning effort when the provider supported it and at high effort otherwise, with a temperature of 0.6 where the provider allowed it and the provider’s default temperature otherwise.

For grading, we used GPT-6.1 Sol at a temperature of zero, high reasoning effort and a 16,000-token response limit. The judge received the request, the rubric, the reference answer, and accepted variations and alternate evidence, but not the identity of the model being graded. For each criterion, it returned a pass or fail with a rationale and direct quotes from the answer. A validator required the expected rubric IDs and exact, verbatim evidence. Invalid responses were retained separately and were not counted as grades.

An attempt receives full credit only if it meets every rubric item. Pass@1 is the share of all attempts that receive full credit, and pass^3 is the share of tasks where all three attempts do.

Failed attempts and reruns

Some attempts did not produce a usable result, for example because of a blank answer, an infrastructure error or a failed grading call. In the earlier eleven-model evaluation, we reran or regraded these attempts until every model had three complete attempts on every task. Of the 3,300 scored attempts, 499 were reruns of this kind. We did this to evaluate models in their best light. Valid low scores, including zeros, were included, and all three attempts on each task counted, with no best-of-three selection. Inkling 2 Small added 300 trials. Three context-limit outcomes and three timeouts counted as unsuccessful, with null rubric scores.

Data and resources

The blog’s viewer features 10 selected tasks, with their original prompts, example model responses and grading notes. Our Hugging Face release includes the full 100-task benchmark, 4,650 released model runs, complete task prompts and workspace files, and the agent and judge prompt suite.

Task viewer

Opus 5Scored 40.0%

Retrieval and joining

Request

I'm reviewing the maintenance run of the instrumentation technician from the previous shift, and it looks like our main breaker feed lugs are running a bit hot. However, on my shift just yesterday I had checked the main breaker and it was okay ... I think his measurements could be off. He sent me shots of the cam he used, so can you confirm that the readings for the lugs are trustworthy given the camera he used by telling me the the minimum target size it can resolve at this distance?

Rubric item missed most often

The response should identify the thermal camera used as the base model FLIR E5

Judge’s note

Although the answer recognizes the E5 marking, it conflates the photographed instrument with the E5 Pro and treats the older non-Pro E5/E5-XT as only an alternative identification. This contradicts identification as the base E5 and triggers the rubric's exclusion of other-model identification.

From the answer

The datasheet he supplied is the FLIR Ex PRO-SERIES sheet, whose E5 Pro column gives Spatial Resolution (IFOV) = 3.7 mrad

Show full answer
## Answer **Short answer: no — the three main-breaker feed-lug readings are not trustworthy. With the camera he used (a FLIR E-series "E5", 3.7 mrad IFOV) at the 2.5 m standoff he logged, the smallest target it can actually *measure* is about 28 mm (≈ 27.8 mm). The lugs are only 15 mm, i.e. roughly half the minimum target size, so those temperatures are spot-size-limited and invalid.** ### 1. What he measured, and with what - The hot records are the main breaker incomer feed lugs: records `IR-9024`, `IR-9025`, `IR-9026`, Asset ID `SG-4160-M1`, "Main Breaker Incomer - Phase L1/L2/L3 Feed Lug", each with **Target Size (mm) = 15** and **Standoff Dist. (m) = 2.5**, ε = 0.92, measured 60 / 55 / 65 °C against a 45 °C reference, ΔT = 15 / 10 / 20 K, all annotated "Urgent. High delta T" [E1]. - The camera in his photos is a FLIR E-series handheld: the rear ID plate reads "Model: FLIR-E6390" [E2] and the bezel above the 3.5 in LCD is marked "E5" [E3]. - The datasheet he supplied is the FLIR Ex PRO-SERIES sheet, whose **E5 Pro** column gives **Spatial Resolution (IFOV) = 3.7 mrad**, IR Resolution 160 × 120 (19,200 px), FOV 33° × 25°, focus-free [E4]; Teledyne FLIR's own product page for the E5 Pro states the same "Spatial resolution (IFOV) 3.7 mrad" [E5]. ### 2. The measurement rule (why IFOV alone is not enough) A feature that covers one pixel is *visible* but not *measurable*: "A radiometrically valid reading needs roughly 3 × 3 pixels on the target. One pixel on the feature is not sufficient" and "The measurement IFOV is therefore about three times the geometric IFOV" [E6]. The same 3×-IFOV rule of thumb is used by thermography calculators, with 5× IFOV as the conservative variant [E7]. ### 3. The numbers at his standoff (2.5 m) | Quantity | Formula | Result | |---|---|---| | Geometric spot (1 pixel) | 3.7 mrad × 2.5 m = 0.0037 × 2500 mm | **9.25 mm / pixel** | | **Minimum measurable target (3 × 3 px criterion)** | 3 × 9.25 mm | **≈ 27.8 mm (≈28 mm)** | | Conservative minimum (5 × IFOV) | 5 × 9.25 mm | ≈ 46.3 mm | | Actual lug size logged | from CMMS | 15 mm | | Pixels across the lug | 15 mm ÷ 9.25 mm | ≈ 1.6 px (needs ≥ 3) | | Max standoff at which a 15 mm lug is measurable | 15 mm ÷ (3 × 3.7 mrad) | ≈ 1.35 m | So at 2.5 m this camera needs a target of **≈ 28 mm minimum** (46 mm if you apply the conservative 5× rule). A 15 mm lug fills only ~1.6 pixels in one direction, i.e. **no pixel sees the lug alone**. ### 4. What that means for his "hot" calls - The three lug readings (IR-9024/25/26) are **spot-size-limited and therefore not radiometrically valid**; they are averages of lug radiance mixed with the cooler background/enclosure, which biases the reading **toward the cooler background**: "Any feature smaller than that returns a mixed temperature averaged with its surroundings, biased toward the cooler background" [E6]. Note the direction: an undersized target usually makes a hot spot read **cooler**, not hotter — so his 15/10/20 K ΔT numbers cannot simply be dismissed as over-reads; the true lug ΔT could be equal or worse. Either way the numbers are not defensible as measurements. - The other records in the same run are fine on spot size at their logged distances, e.g. IR-9022 (45 mm target at 1.5 m → spot 5.6 mm, min ≈ 16.7 mm), IR-9023 (200 mm at 2 m → min ≈ 22.2 mm), IR-9027 (85 mm at 3.5 m → spot 12.95 mm, min ≈ 38.9 mm), IR-9029 (50 mm at 1 m → min ≈ 11.1 mm) — target sizes from [E1], IFOV from [E4]. Only the 15 mm feed-lug records fail the criterion. - Even if the body is the older non-Pro E5/E5-XT (retail listings pair the "FLIR-E6390" part number with the FLIR E5 [E8], and the E5-XT is specified at 5.2 mrad [E9]), the verdict only gets worse: 5.2 mrad × 2.5 m = 13 mm/px → minimum measurable target ≈ 39 mm at 2.5 m, and the usable standoff for a 15 mm lug drops to ≈ 0.96 m. ### 5. Recommended re-check Re-shoot the lugs from **≤ 1.35 m** (≤ 0.95 m if the camera is the legacy 5.2 mrad E5), or use a higher-resolution/optically tighter camera (e.g. E8 Pro at 1.8 mrad → 4.5 mm/px and ≈ 13.5 mm minimum target at 2.5 m [E4]), keeping ε = 0.92 and a same-phase reference. Also respect the camera's ±2 °C / ±2 % accuracy and 0.36 m minimum focus distance [E4]. Until then, treat IR-9024/25/26 as "re-measure required", not as a confirmed urgent defect — and do not close them out as "okay" either, because the spot-size error direction tends to under-read hot spots. ## Evidence [E1] Local file - Claim: The hot records are the main-breaker incomer feed lugs, logged with a 15 mm target size at a 2.5 m standoff, ε 0.92, 60/55/65 °C vs 45 °C reference, ΔT 15/10/20, flagged "Urgent. High delta T"; other records list their own target sizes/distances. - Source: /app/artifacts/CMMS_Export.pdf (work order WO-7492-IR, Tech ID 4409, dated 2026-07-27) - Locator: Page 1, IR inspection table, column headers "Component Description | Target Size (mm) | Standoff Dist. (m) | Emissivity (ε) | Ambient Temp (°C) | Measured Temp (°C) | Ref Temp (°C) | ΔT (°C) | Status / Notes"; rows Record ID IR-9024, IR-9025, IR-9026 (Asset ID SG-4160-M1) — mid-table. Same text at /tmp/cmms.txt lines 32, 37, 42 (extracted with `pdftotext -layout`). - Exact evidence: "IR-9024 SG-4160-M1 Main Breaker Incomer - Phase L1 Feed Lug 15 2.5 0.92 30 60 45 15 Urgent. High delta T"; "IR-9025 ... 15 2.5 0.92 30 55 45 10 Urgent. High delta T"; "IR-9026 ... 15 2.5 0.92 30 65 45 20 Urgent. High delta T"; other rows: "IR-9022 W20-U1-EXC ... 45 1.5", "IR-9023 ... 200 2", "IR-9027 TX-01-LV ... 85 3.5", "IR-9029 W20-U4-GEN ... 50 1". - Supports: The target size (15 mm) and standoff (2.5 m) used in the spot-size calculation, and which records are affected. [E2] Local file (image) - Claim: The camera he photographed is a FLIR E-series unit with regulatory model designation FLIR-E6390. - Source: /app/artifacts/PXL_001.jpg - Locator: Lower-center of the frame, white legend printed on the black rear/side housing beneath the battery compartment (visible enlarged in /tmp/label1.png, crop x 0.25-0.80 w, y 0.50-0.64 h); WEEE/CE/UKCA/RCM marks are printed just below it. - Exact evidence: "DESIGNED AND ENGINEERED BY FLIR" / "PO Box 7376, SE-187 15 Täby, Sweden" / "Model: FLIR-E6390. Made in Estonia". - Supports: Identification of the instrument used for the readings. [E3] Local file (image) - Claim: The instrument is an "E5" model of the FLIR E-series (3.5 in LCD handheld), not a higher-resolution model. - Source: /app/artifacts/PXL_003.jpg - Locator: Upper-center of the frame — light-blue "E5" lettering on the bezel immediately above the rectangular color LCD, with the archive/play button to the left, the joystick pad and back-arrow button below, camera held in a gloved hand (enlarged in /tmp/mark.png and /tmp/rear.png). - Exact evidence: Visible model marking "E5" in blue on the camera bezel above the display; no "XT"/other suffix printed alongside it. - Supports: Selection of the E5 column (3.7 mrad) from the supplied datasheet. [E4] Local file - Claim: The E5 Pro spatial resolution (IFOV) is 3.7 mrad; E6 Pro 2.5 mrad; E8 Pro 1.8 mrad; IR resolution 160 × 120; accuracy ±2 °C/±2 %; minimum focus 0.36 m. - Source: /app/artifacts/Ex_Datasheet.pdf ("FLIR Ex PRO-SERIES ... Pro-Series Infrared Cameras with Ignite™ Cloud", Revised 01/10/25, doc 25-0013-INS) - Locator: Page 1, left-hand "SPECIFICATIONS" table, row "Spatial Resolution (IFOV)" under the three model columns "E5 Pro | E6 Pro | E8 Pro" (mid-left of the page); also page 1 rows "IR Resolution", "Field of view (FOV)", "Minimum Focus Distance" and right-column "Accuracy". Same text at /tmp/ex.txt lines 25-35 and 58-59 (extracted with `pdftotext -layout`). - Exact evidence: "Spatial Resolution (IFOV) 3.7 mrad 2.5 mrad 1.8 mrad"; "IR Resolution 160 × 120 (19,200 pixels) / 240 × 180 (43,200 pixels) / 320 × 240 (76,800 pixels)"; "Field of view (FOV) 33° × 25°"; "Minimum Focus Distance 0.36 m (1.18 ft)"; "Accuracy ±2°C (±3.6°F) or ±2% of reading...". - Supports: The 3.7 mrad IFOV used in the calculation (and the E8 Pro alternative). [E5] Public source - Claim: Teledyne FLIR publishes the same 3.7 mrad IFOV and 160 × 120 detector for the E5 Pro. - Source: https://www.flir.com/products/e5-pro/ - Page title/publisher: "FLIR E5 Pro Pro-Series Infrared Camera with Ignite™ Cloud | Flir" — Teledyne FLIR - Locator: Specifications section, "Imaging & Optical" block, rows "IR Resolution" and "Spatial resolution (IFOV)". - Exact evidence: "IR Resolution 160 × 120 (19,200 pixels) ... Spatial resolution (IFOV) 3.7 mrad". - Supports: Independent confirmation of the camera's IFOV spec. [E6] Public source - Claim: A radiometrically valid temperature reading requires the target to cover about 3 × 3 pixels, so the measurement spot is about 3 × the geometric IFOV; smaller features return a mixed temperature biased toward the cooler background. - Source: https://www.at-sensors.com/measurement/sensor-properties/thermography-properties/ - Page title/publisher: "Thermographic Properties: Emissivity, NETD, and Accuracy" — AT Sensors - Locator: Section "Spatial Resolution: Detector Format, IFOV and Measurement Spot", sub-heading "Geometric Resolution Versus Measurement Resolution" (paragraphs 1-3); also the bullet "Measurement spot" in the page's summary list near the top, and the summary table row "IFOV / measurement spot". - Exact evidence: "The practical rule is the 3 × 3 pixel criterion: a radiometrically valid temperature reading needs the target feature to cover roughly three pixels in each direction. The measurement IFOV is therefore about three times the geometric IFOV."; "Any feature smaller than that returns a mixed temperature averaged with its surroundings, biased toward the cooler background."; "Measurement spot: A radiometrically valid reading needs roughly 3 × 3 pixels on the target. One pixel on the feature is not sufficient."; table row "IFOV / measurement spot | 0.68 mrad, spot ≈ 3 × IFOV | Smallest feature that can be measured, not just seen." - Supports: The 3× multiplier converting the 9.25 mm pixel footprint into the ≈ 27.8 mm minimum measurable target. [E7] Public source - Claim: 3 × IFOV is the common minimum spot-size approximation, with 5 × IFOV as the conservative rule when temperature measurement matters. - Source: https://thethermogram.com/tools/ifov-calculator - Page title/publisher: "Thermal camera IFOV calculator — pixel and spot size" — The Thermogram - Locator: Explanatory note "3× versus 5× IFOV" below the calculator inputs. - Exact evidence: "3× IFOV is a commonly used minimum spot-size approximation: the target covers several detector pixels. 5× IFOV is the more conservative rule used by The Thermogram selector when temperature measurement matters." - Supports: The ≈ 28 mm (3×) and ≈ 46 mm (5×) minimum target sizes quoted at 2.5 m. [E8] Public source - Claim: The part/model number "FLIR-E6390" seen on the camera label is used for FLIR E5-family bodies. - Source: https://spwindustrial.com/flir-e5-infrared-thermal-camera-no-case-e6390/ - Page title/publisher: "Flir E5 Infrared/Thermal Camera No Case E6390" — SPW Industrial - Locator: Page title and product heading (H1) at the top of the product page; identical text in the breadcrumb list. - Exact evidence: "Flir E5 Infrared/Thermal Camera No Case E6390". - Supports: Cross-check that the photographed label (FLIR-E6390) belongs to an E5-class camera, consistent with the "E5" bezel marking. [E9] Public source - Claim: The legacy (non-Pro) FLIR E5/E5-XT is specified at 5.2 mrad IFOV with 160 × 120 resolution — the worst-case alternative identification. - Source: https://www.reliabilitydirectstore.com/FLIR-E5-XT-IR-Camera-with-Extended-Temperature-p/flir-e5-xt.htm - Page title/publisher: "FLIR E5-XT IR Camera, Extended Temperature Range & WiFi" — Reliability Direct Store (retrieved via DuckDuckGo result snippet for the query FLIR E5 "5.2 mrad" IFOV 160 x 120) - Locator: Product specification list, lines "IR resolution" and "Spatial resolution (IFOV)". - Exact evidence: "IR resolution: 160 x 120 (19,200 pixels) ... Spatial resolution (IFOV): 5.2 mrad Field of view (FOV): 45° x 34°". - Supports: The sensitivity case showing the conclusion holds (minimum target ≈ 39 mm at 2.5 m) even if the camera is the older E5.

We release all 100 tasks, the grading protocol and 4,650 model runs in our Hugging Face release. The runs include trajectories, answers, scores, judge decisions and available model reasoning.

The full paper will be released soon.

Related articles